/* GPEX landing page, refined heatmap v2.
 * Full replacement for frontend/css/home.css. HTML and shell.css are unchanged.
 * This revision is limited to the hero field, entrance polish and fallback.
 */
html.gpex-motion-on { scroll-behavior: smooth; }
.gpex-home {
  --home-night: #0a1726;
  --home-night-soft: #11273b;
  --home-muted: #667489;
  --home-line: #dfe5ec;
  --hero-shift: 0px;
  --hero-scale: 1;
  --hero-opacity: 1;
  --field-scale: 1;
  margin: 0;
  background: var(--paper, #f5f7fa);
  color: var(--ink, #12243b);
  font-family: Manrope, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}
.gpex-home *, .gpex-home *::before, .gpex-home *::after { box-sizing: border-box; }
.gpex-home main { overflow: clip; }
.gpex-home main a { color: inherit; text-decoration: none; }
.gpex-home main button, .gpex-home .motion-toggle { font: inherit; }
.gpex-home main h1, .gpex-home main h2, .gpex-home main p { margin-top: 0; }
.gpex-home main a:focus-visible, .gpex-home .motion-toggle:focus-visible { outline: 2px solid #718ca8; outline-offset: 6px; }
.gpex-home main section[id] { scroll-margin-top: calc(var(--gpex-header-height, 76px) + 24px); }
.home-container { width: min(1280px, calc(100% - 112px)); margin-inline: auto; }
.home-section { position: relative; }
.home-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* A quiet field with definite value bands frames the type. */
.hero {
  position: relative;
  display: grid;
  place-items: center;
  min-height: max(740px, calc(100svh - var(--gpex-header-height, 76px)));
  isolation: isolate;
  color: #f7f9fc;
  background: var(--home-night);
}
.hero::after {
  content: "";
  position: absolute;
  z-index: 2;
  right: 0;
  bottom: -1px;
  left: 0;
  height: 105px;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(245, 247, 250, 0) 0%, rgba(245, 247, 250, .03) 18%, rgba(245, 247, 250, .46) 70%, #f5f7fa 100%);
}
.hero-field { position: absolute; z-index: -1; inset: -1px; overflow: hidden; pointer-events: none; transform: scale(var(--field-scale)); transform-origin: 50% 65%; }
.heatmap-fallback, .heatmap-canvas, .hero-shade { position: absolute; inset: 0; width: 100%; height: 100%; }
.heatmap-fallback { display: block; }
.heatmap-canvas { display: block; opacity: 0; transition: opacity 1.1s ease; }
.heatmap-canvas.is-ready { opacity: 1; }
.hero-shade {
  /* Keep the type clear without covering all of the field's tonal detail. */
  background:
    radial-gradient(ellipse 43% 48% at 50% 35%, rgba(5, 15, 26, .30), transparent 100%),
    linear-gradient(180deg, rgba(5, 13, 23, .16), transparent 25%, transparent 80%, rgba(8, 20, 32, .08));
}

/* Vector fallback only. The live WebGL surface manages its own layered motion. */
.heatmap-drift { transform-box: view-box; transform-origin: 50% 60%; }
.motion-enabled:not(.has-live-heatmap) .heatmap-drift--1 { animation: fallback-field-a 18s ease-in-out infinite alternate; }
.motion-enabled:not(.has-live-heatmap) .heatmap-drift--2 { animation: fallback-field-b 21s ease-in-out infinite alternate; }
.motion-enabled:not(.has-live-heatmap) .heatmap-drift--3 { animation: fallback-field-c 24s ease-in-out infinite alternate; }
.hero-is-offscreen .heatmap-drift, .hero-is-offscreen .scroll-cue i { animation-play-state: paused !important; }
@keyframes fallback-field-a {
  from { transform: translate(-.7%, .5%) rotate(-1deg) scale(1); }
  to { transform: translate(2.4%, -1.4%) rotate(2deg) scale(1.045); }
}
@keyframes fallback-field-b {
  from { transform: translate(.7%, -.4%) rotate(1deg) scale(1); }
  to { transform: translate(-2.1%, 1.8%) rotate(-2deg) scale(1.055); }
}
@keyframes fallback-field-c {
  from { transform: translate(0, .6%) scale(1); }
  to { transform: translate(-1.4%, -1.8%) scale(1.04); }
}
.hero-content {
  position: relative;
  z-index: 1;
  width: min(1200px, calc(100% - 80px));
  padding: 120px 0 218px;
  text-align: center;
  opacity: var(--hero-opacity);
  transform: translate3d(0, var(--hero-shift), 0) scale(var(--hero-scale));
  transform-origin: 50% 36%;
}
.hero-eyebrow { display: flex; align-items: center; justify-content: center; gap: 20px; margin-bottom: 34px; font-size: 11px; font-weight: 500; line-height: 1.5; letter-spacing: .21em; text-transform: uppercase; color: #c4ceda; }
.hero-brand { font-size: 16px; font-weight: 650; letter-spacing: .24em; color: #f8fafc; }
.eyebrow-divider { width: 1px; height: 18px; background: rgba(225, 234, 244, .28); }
.hero h1 { margin-bottom: 30px; font-size: clamp(76px, 7.9vw, 122px); font-weight: 350; line-height: 1.055; letter-spacing: -.065em; }
.hero-line { display: block; overflow: hidden; padding-bottom: .13em; margin-bottom: -.13em; }
.hero-line > span { display: block; }
.hero-intro { margin-bottom: 33px; color: #ccd5df; font-size: clamp(17px, 1.52vw, 21px); font-weight: 400; line-height: 1.7; letter-spacing: -.022em; }
.mobile-break { display: none; }
.hero-actions { display: flex; align-items: center; justify-content: center; gap: 34px; }
.home-button { display: inline-flex; min-height: 52px; align-items: center; justify-content: center; gap: 25px; padding: 15px 23px; border: 1px solid transparent; border-radius: 9px; font-size: 13px; font-weight: 650; line-height: 1.4; transition: background .22s ease, box-shadow .22s ease, transform .22s ease; }
.gpex-home main .home-button--light { color: #14263d; background: #f7f9fc; box-shadow: 0 2px 3px rgba(0, 0, 0, .04), inset 0 0 0 1px rgba(255, 255, 255, .55); }
.gpex-home main .home-button--light:hover { transform: translateY(-3px); background: #fff; box-shadow: 0 10px 28px rgba(0, 0, 0, .14); }
.home-button svg, .home-text-link svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.home-text-link { display: inline-flex; align-items: center; gap: 14px; width: fit-content; min-height: 44px; font-size: 13px; font-weight: 650; line-height: 1.6; }
.home-text-link svg { transition: transform .25s ease; }
.home-text-link:hover svg { transform: translateX(4px); }
.gpex-home main .home-text-link--light { color: #e6edf4; font-weight: 500; }
.home-text-link--light:hover { color: #fff; }
.home-text-link--light[href^="#"]:hover svg { transform: translateY(4px); }
.hero-bottom { position: absolute; z-index: 3; right: 56px; bottom: 100px; left: 56px; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: center; }
.hero-location, .hero-footnote { margin: 0; color: #b3c0ce; font-size: 10px; font-weight: 500; line-height: 1.5; letter-spacing: .11em; }
.hero-location { display: flex; align-items: center; gap: 10px; }
.hero-location > span { width: 5px; height: 5px; border-radius: 50%; background: #a6bccf; box-shadow: 0 0 12px rgba(177, 203, 223, .45); }
.hero-footnote { text-align: right; letter-spacing: .01em; }
.scroll-cue { display: flex; width: fit-content; min-width: 130px; min-height: 62px; flex-direction: column; align-items: center; gap: 16px; justify-self: center; padding-top: 8px; color: #d5dfe9; }
.scroll-cue > span { font-size: 8px; font-weight: 650; letter-spacing: .24em; text-transform: uppercase; }
.scroll-cue i { display: block; width: 1px; height: 30px; background: linear-gradient(180deg, #dce7f0, rgba(220, 231, 240, .1)); transform-origin: center top; }

/* The research opens into generous white space and clear facts. */
.research-section { padding: 104px 0 86px; background: #f5f7fa; }
.section-intro { display: grid; grid-template-columns: 1.2fr .8fr; gap: 90px; align-items: end; }
.section-kicker { display: flex; align-items: center; gap: 16px; margin-bottom: 26px; color: #6d7d91; font-size: 10px; font-weight: 650; line-height: 1.6; letter-spacing: .16em; text-transform: uppercase; }
.section-index { display: inline-flex; align-items: center; color: #98a3b1; letter-spacing: .03em; }
.section-index::after { content: ""; display: block; width: 26px; height: 1px; margin-left: 16px; background: #bcc6d2; }
.section-title { margin-bottom: 0; font-size: clamp(40px, 4.7vw, 70px); font-weight: 400; line-height: 1.12; letter-spacing: -.057em; }
.section-description { max-width: 410px; margin: 0 0 6px; color: var(--home-muted); font-size: 15px; line-height: 1.9; letter-spacing: -.01em; }
.research-metrics { display: grid; grid-template-columns: repeat(4, 1fr); margin: 73px 0 0; padding-top: 28px; border-top: 1px solid var(--home-line); }
.research-metrics > div { padding-left: 28px; border-left: 1px solid var(--home-line); }
.research-metrics > div:first-child { padding-left: 0; border-left: 0; }
.research-metrics dt { margin-bottom: 20px; color: #69788b; font-size: 11px; font-weight: 500; }
.research-metrics dd { display: flex; align-items: baseline; gap: 11px; margin: 0; font-size: clamp(42px, 4.5vw, 62px); font-weight: 350; line-height: 1; letter-spacing: -.06em; font-variant-numeric: tabular-nums; }
.research-metrics dd > span { color: #7b8797; font-size: 11px; font-weight: 400; letter-spacing: -.01em; }

/* Sticky illustration follows native scroll; the complete text is always in document order. */
.workflow-section { padding: 24px 0 86px; background: #f5f7fa; }
.workflow-layout { display: grid; grid-template-columns: 1.04fr 1fr; gap: min(9vw, 125px); align-items: stretch; }
.workflow-visual-column { position: relative; min-width: 0; }
.workflow-visual { position: sticky; top: calc(var(--gpex-header-height, 76px) + 40px); height: min(600px, calc(100svh - var(--gpex-header-height, 76px) - 80px)); min-height: 460px; overflow: hidden; border: 1px solid #dde4ec; border-radius: 24px; background: #edf1f6; background-image: radial-gradient(ellipse 100% 80% at 50% 36%, #fff 5%, #f5f7fa 55%, #e9eff5 100%); box-shadow: 0 18px 55px rgba(35, 54, 81, .035); }
.visual-topline { position: absolute; z-index: 4; top: 28px; right: 28px; left: 28px; display: flex; align-items: center; justify-content: space-between; }
.visual-label { font-size: 10px; font-weight: 650; letter-spacing: .1em; text-transform: uppercase; color: #6e7e91; }
.visual-number { color: #8491a2; font-size: 10px; letter-spacing: .06em; font-variant-numeric: tabular-nums; }
.field-scene { position: absolute; inset: 62px 10px 78px; perspective: 1000px; }
.field-stack { position: absolute; top: 48%; left: 50%; width: 61%; aspect-ratio: 1; transform-style: preserve-3d; transform: translate(-50%, -50%) rotateX(57deg) rotateZ(-36deg); transition: transform 1.2s cubic-bezier(.2, .7, .2, 1); }
.field-plane { position: absolute; inset: 0; border: 1px solid rgba(230, 238, 246, .6); border-radius: 19px; box-shadow: -18px 21px 30px rgba(20, 42, 64, .11); transition: transform 1.25s cubic-bezier(.2, .7, .2, 1), opacity .8s ease, box-shadow .8s ease; backface-visibility: visible; }
.field-plane--magnetic { z-index: 3; transform: translateZ(77px); background-color: #28415b; background-image: radial-gradient(ellipse 85% 60% at 30% 50%, #9dafbc 0 8%, #8099ad 8% 15%, #637f98 15% 24%, #486981 24% 33%, #35566f 33% 43%, #29465f 43% 54%, transparent 54%), radial-gradient(ellipse 60% 60% at 110% 13%, #7290a5 0 12%, #4d6b82 12% 24%, #36546e 24% 37%, #29465f 37% 51%, transparent 51%); }
.field-plane--radiometric { z-index: 2; transform: translateZ(0); background-color: #8a9daf; background-image: radial-gradient(ellipse 52% 76% at 72% 62%, #dae2e9 0 14%, #c4cfd9 14% 26%, #acbdcb 26% 41%, #95aabd 41% 57%, transparent 57%), radial-gradient(ellipse 74% 67% at 0 13%, #bccbd7 0 14%, #a7bbc9 14% 28%, #96acbc 28% 44%, transparent 44%); }
.field-plane--gravity { z-index: 1; transform: translateZ(-77px); background-color: #d2dce5; background-image: radial-gradient(ellipse 76% 95% at 12% 60%, #8399aa 0 16%, #9bafbd 16% 31%, #b1c0cc 31% 45%, #c0cdd7 45% 62%, transparent 62%); box-shadow: -20px 32px 36px rgba(26, 46, 67, .16); }
.field-orbit { position: absolute; top: 50%; left: 50%; width: 89%; height: 51%; border: 1px solid #dce4ec; border-radius: 50%; transform: translate(-50%, -50%) rotate(-20deg); transition: transform 1.2s ease, opacity 1.2s ease; }
.field-orbit--two { width: 108%; height: 63%; opacity: .55; }
.field-tag { position: absolute; z-index: 5; padding: 6px 10px; border: 1px solid #e3e9ef; border-radius: 6px; background: rgba(252, 253, 255, .94); color: #617285; font-size: 9px; letter-spacing: .01em; box-shadow: 0 3px 8px rgba(40, 60, 80, .03); transition: transform .8s ease, opacity .5s ease; }
.field-tag--magnetic { top: 16%; right: 3%; }
.field-tag--radiometric { top: 50%; left: 1%; }
.field-tag--gravity { right: 8%; bottom: 15%; }
.field-center-label { position: absolute; right: 0; bottom: 3%; left: 0; text-align: center; color: #6c7f92; font-size: 10px; letter-spacing: .04em; opacity: 0; transform: translateY(10px); transition: opacity .8s ease .2s, transform .8s ease .2s; }
.stable-region { position: absolute; top: 31%; left: 16%; width: 48%; height: 34%; opacity: 0; border: 1px solid rgba(242, 247, 250, .85); border-radius: 48% 55% 42% 50%; background: rgba(224, 237, 244, .13); box-shadow: 0 0 0 11px rgba(216, 231, 243, .13), 0 0 0 24px rgba(216, 231, 243, .06); transform: rotate(8deg); transition: opacity 1s ease .25s; }
.visual-caption { position: absolute; z-index: 4; right: 28px; bottom: 40px; left: 28px; display: flex; flex-direction: column; gap: 8px; color: #435970; font-size: 12px; font-weight: 500; line-height: 1.5; }
.visual-caption-note { color: #8d98a7; font-size: 9px; font-weight: 400; }
.workflow-progress { position: absolute; right: 28px; bottom: 24px; left: 28px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }
.workflow-progress > span { height: 2px; border-radius: 1px; background: #d5dfe8; transition: background .8s ease; }
.workflow-visual[data-stage="0"] .workflow-progress > span:nth-child(1), .workflow-visual[data-stage="1"] .workflow-progress > span:nth-child(-n+2), .workflow-visual[data-stage="2"] .workflow-progress > span { background: #71879d; }
.workflow-visual[data-stage="1"] .field-stack { transform: translate(-50%, -50%) rotateX(54deg) rotateZ(-17deg) scale(1.05); }
.workflow-visual[data-stage="1"] .field-plane--magnetic { transform: translateZ(9px); }
.workflow-visual[data-stage="1"] .field-plane--radiometric { transform: translateZ(0); }
.workflow-visual[data-stage="1"] .field-plane--gravity { transform: translateZ(-9px); }
.workflow-visual[data-stage="1"] .field-tag, .workflow-visual[data-stage="2"] .field-tag { opacity: 0; transform: translateY(16px); }
.workflow-visual[data-stage="1"] .field-orbit { transform: translate(-50%, -50%) rotate(5deg) scale(.9); }
.workflow-visual[data-stage="2"] .field-stack { transform: translate(-50%, -50%) rotateX(51deg) rotateZ(-28deg) scale(1.03); }
.workflow-visual[data-stage="2"] .field-plane--magnetic { transform: translateZ(28px); }
.workflow-visual[data-stage="2"] .field-plane--radiometric { transform: translateZ(-4px); opacity: .6; }
.workflow-visual[data-stage="2"] .field-plane--gravity { transform: translateZ(-36px); opacity: .4; }
.workflow-visual[data-stage="2"] .stable-region { opacity: 1; }
.workflow-visual[data-stage="2"] .field-center-label { opacity: 1; transform: translateY(0); }
.workflow-visual[data-stage="2"] .field-orbit { transform: translate(-50%, -50%) rotate(-8deg) scale(1.03); opacity: .45; }
.workflow-step { display: flex; align-items: center; min-height: max(580px, 73svh); padding: 75px 0; }
.step-content { max-width: 460px; }
.workflow-step .section-kicker { margin-bottom: 28px; font-size: 9px; }
.workflow-step h2 { margin-bottom: 24px; font-size: clamp(36px, 3.75vw, 53px); font-weight: 400; line-height: 1.14; letter-spacing: -.055em; }
.workflow-step p:not(.section-kicker) { max-width: 390px; margin-bottom: 22px; color: var(--home-muted); font-size: 14px; line-height: 1.95; }
.step-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 14px 26px; }
.subtle-link { display: inline-flex; align-items: center; min-height: 44px; border-bottom: 1px solid #bdc8d5; font-size: 11px; font-weight: 500; color: #60758b; }
.subtle-link:hover { border-color: #395874; }

/* Restrained editorial rows lead into the real analytical tools. */
.workspace-section { padding: 110px 0 115px; background: #fff; border-top: 1px solid #e5eaf0; }
.workspace-links { margin-top: 70px; border-top: 1px solid var(--home-line); }
.workspace-link { display: grid; grid-template-columns: 45px 1fr 1.15fr 48px; align-items: center; gap: 26px; min-height: 126px; padding: 25px 0; border-bottom: 1px solid var(--home-line); }
.workspace-link-number { font-size: 10px; color: #8d9aaa; font-variant-numeric: tabular-nums; }
.workspace-link-name { font-size: clamp(24px, 2.5vw, 36px); font-weight: 450; line-height: 1.25; letter-spacing: -.045em; transition: transform .3s ease; }
.workspace-link-description { max-width: 340px; color: #7b8899; font-size: 12px; line-height: 1.8; }
.workspace-link-arrow { display: grid; width: 43px; height: 43px; place-items: center; border: 1px solid #e2e8ef; border-radius: 50%; color: #526b84; transition: color .3s ease, background .3s ease, transform .3s ease, border-color .3s ease; }
.workspace-link-arrow svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.workspace-link:hover .workspace-link-name { transform: translateX(7px); }
.workspace-link:hover .workspace-link-arrow { color: #fff; background: #243f5a; border-color: #243f5a; transform: rotate(45deg); }

/* Closing research context and the only glass control outside the shared header. */
.about-section { isolation: isolate; overflow: hidden; padding: 115px 0 0; color: #eef3f8; background: #0c1b2c; }
.about-glow { position: absolute; z-index: -1; right: -20%; bottom: -340px; left: 5%; height: 700px; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(71, 100, 126, .24), transparent 65%); }
.about-main { display: grid; grid-template-columns: 1.3fr .8fr; gap: 84px; align-items: start; }
.section-kicker--light { color: #899caf; }
.section-kicker--light .section-index { color: #73869a; }
.section-kicker--light .section-index::after { background: #43576c; }
.about-section .section-title { font-size: clamp(38px, 4.3vw, 62px); color: #f3f6fa; }
.about-copy { padding-top: 47px; }
.about-copy p { margin-bottom: 22px; color: #a5b4c5; font-size: 14px; line-height: 1.9; }
.about-copy .home-button { margin-top: 12px; }
.research-note { display: grid; grid-template-columns: 1.3fr .8fr; gap: 84px; margin-top: 100px; padding: 26px 0; border-top: 1px solid #283b50; }
.research-note-title { color: #aab9c9; font-size: 11px; font-weight: 500; line-height: 1.9; }
.research-note p { max-width: 430px; margin: 0; color: #8194a9; font-size: 11px; line-height: 1.9; }
.home-footer { display: flex; align-items: center; gap: 24px; margin-top: 32px; padding: 27px 0 37px; border-top: 1px solid #283b50; }
.footer-brand { display: inline-flex; align-items: center; gap: 12px; font-size: 16px; font-weight: 650; letter-spacing: .16em; }
.footer-brand img { display: block; object-fit: contain; }
.home-footer > p { margin: 0; color: #8597aa; font-size: 10px; }
.footer-links { display: flex; align-items: center; gap: 26px; margin-left: auto; }
.footer-links a { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; color: #aab8c9; font-size: 10px; }
.footer-links a:hover { color: #fff; }
.motion-toggle { position: fixed; z-index: 80; right: 22px; bottom: 19px; display: inline-flex; align-items: center; justify-content: center; gap: 9px; min-height: 38px; padding: 9px 13px; border: 1px solid rgba(202, 213, 226, .72); border-radius: 50px; background: rgba(247, 250, 253, .93); color: #53697f; box-shadow: 0 3px 14px rgba(20, 39, 59, .07); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); cursor: pointer; font-size: 10px !important; font-weight: 550 !important; letter-spacing: .01em; transition: background .2s ease; }
.motion-toggle[hidden] { display: none; }
.motion-toggle:hover { color: #18314a; background: #fff; }
.motion-icon { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.motion-icon--play { display: none; stroke-width: 1.2; }
.motion-toggle[data-paused="true"] .motion-icon--pause { display: none; }
.motion-toggle[data-paused="true"] .motion-icon--play { display: block; }

/* JavaScript progressively enables motion. Default and failed-script states are fully visible. */
.motion-enabled .hero-content, .motion-enabled .hero-field { will-change: transform; }
.motion-enabled.is-introducing .hero-line > span { animation: hero-line-in 1.25s cubic-bezier(.16, 1, .3, 1) both; }
.motion-enabled.is-introducing .hero-line:nth-child(2) > span { animation-delay: .13s; }
.motion-enabled.is-introducing .hero-eyebrow { animation: hero-soft-in 1s ease .03s both; }
.motion-enabled.is-introducing .hero-intro { animation: hero-soft-in 1s ease .4s both; }
.motion-enabled.is-introducing .hero-actions { animation: hero-soft-in 1s ease .55s both; }
.motion-enabled .scroll-cue i { animation: scroll-line 2.6s ease-in-out infinite; }
.motion-enabled [data-reveal].will-reveal { opacity: 0; transform: translate3d(0, 34px, 0); transition: opacity .9s cubic-bezier(.2, .65, .3, 1), transform 1s cubic-bezier(.2, .65, .3, 1); }
.motion-enabled [data-reveal].will-reveal.is-visible, .motion-enabled [data-reveal].will-reveal:focus-within { opacity: 1; transform: translate3d(0, 0, 0); }
.motion-paused .hero-content { opacity: 1; transform: none; }
.motion-paused .hero-field { transform: scale(var(--field-scale)); }
.motion-paused main *, .motion-paused main *::before, .motion-paused main *::after { animation: none !important; transition: none !important; }
.motion-paused [data-reveal] { opacity: 1 !important; transform: none !important; }
.page-is-hidden main *, .page-is-hidden main *::before, .page-is-hidden main *::after { animation-play-state: paused !important; }
@keyframes hero-line-in { from { transform: translateY(108%); opacity: .25; filter: blur(5px); } to { transform: translateY(0); opacity: 1; filter: blur(0); } }
@keyframes hero-soft-in { from { transform: translateY(14px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes scroll-line { 0%, 100% { transform: scaleY(.6); opacity: .45; } 50% { transform: scaleY(1); opacity: 1; } }

@media (min-width: 1600px) {
  .home-container { width: min(1360px, calc(100% - 160px)); }
  .hero-content { padding-top: 145px; padding-bottom: 240px; }
  .hero-bottom { right: 80px; left: 80px; }
}
@media (max-width: 1100px) {
  .home-container { width: calc(100% - 72px); }
  .section-intro { grid-template-columns: 1.1fr .9fr; gap: 45px; }
  .workflow-layout { gap: 60px; }
  .workflow-visual { min-height: 430px; }
  .workflow-step { min-height: max(530px, 70svh); }
  .field-tag { font-size: 8px; padding: 5px 7px; }
  .field-tag--magnetic { top: 18%; right: 0; }
  .field-tag--radiometric { top: 52%; left: 0; }
  .field-tag--gravity { right: 3%; bottom: 18%; }
  .about-main, .research-note { gap: 50px; grid-template-columns: 1.1fr .9fr; }
  .hero-bottom { right: 36px; left: 36px; }
  .hero-footnote { font-size: 9px; }
  .workspace-link { grid-template-columns: 25px 1fr 1fr 43px; gap: 20px; }
}
@media (max-width: 800px) {
  .home-container { width: calc(100% - 48px); }
  .hero { min-height: max(700px, calc(100svh - var(--gpex-header-height, 68px))); }
  .hero-content { width: calc(100% - 40px); padding-top: 115px; padding-bottom: 220px; }
  .hero h1 { font-size: clamp(60px, 9.4vw, 84px); }
  .hero-intro { max-width: 480px; margin-inline: auto; font-size: 16px; }
  .hero-bottom { right: 24px; left: 24px; grid-template-columns: 1fr 1fr; }
  .hero-footnote { display: none; }
  .scroll-cue { justify-self: end; }
  .research-section { padding: 75px 0 64px; }
  .section-intro { grid-template-columns: 1fr; gap: 26px; }
  .section-description { max-width: 550px; }
  .section-title { font-size: clamp(40px, 6.2vw, 57px); }
  .research-metrics { grid-template-columns: repeat(2, 1fr); gap: 33px 0; margin-top: 45px; }
  .research-metrics > div { padding-left: 26px; }
  .research-metrics > div:nth-child(odd) { padding-left: 0; border-left: none; }
  .research-metrics dt { margin-bottom: 15px; }
  .research-metrics dd { font-size: 48px; }
  .workflow-section { padding: 14px 0 45px; }
  .workflow-layout { display: block; }
  .workflow-visual-column { margin-bottom: 15px; }
  .workflow-visual { position: relative; top: auto; height: 430px; min-height: 0; width: 100%; }
  .field-stack { width: min(56%, 275px); }
  .field-scene { inset-inline: 10%; }
  .field-tag--magnetic { right: 6%; }
  .field-tag--radiometric { left: 3%; }
  .field-tag--gravity { right: 8%; }
  .workflow-step { min-height: 0; padding: 45px 0 50px; border-bottom: 1px solid var(--home-line); }
  .workflow-step:last-child { border-bottom: 0; }
  .workflow-step .step-content { max-width: 580px; }
  .workflow-step h2 { font-size: clamp(36px, 5.5vw, 47px); }
  .workflow-step p:not(.section-kicker) { max-width: 550px; }
  .workspace-section { padding: 75px 0 80px; }
  .workspace-links { margin-top: 42px; }
  .workspace-link { grid-template-columns: 24px 1fr 43px; gap: 9px 18px; min-height: 122px; }
  .workspace-link-number { grid-row: 1 / 3; align-self: center; }
  .workspace-link-name { font-size: 28px; }
  .workspace-link-description { grid-column: 2; grid-row: 2; max-width: none; }
  .workspace-link-arrow { grid-column: 3; grid-row: 1 / 3; }
  .about-section { padding-top: 75px; }
  .about-main { grid-template-columns: 1fr; gap: 26px; }
  .about-section .section-title { font-size: clamp(40px, 6.1vw, 58px); }
  .about-copy { max-width: 570px; padding-top: 0; }
  .research-note { grid-template-columns: 1fr; gap: 12px; margin-top: 55px; }
  .research-note p { max-width: 580px; }
  .home-footer { flex-wrap: wrap; gap: 20px; padding-bottom: 78px; }
  .footer-links { margin-left: auto; }
  .home-footer > p { display: none; }
}
@media (max-width: 480px) {
  .home-container { width: calc(100% - 40px); }
  .hero { min-height: max(680px, calc(100svh - var(--gpex-header-height, 68px))); }
  .hero-content { padding-top: 92px; padding-bottom: 205px; }
  .hero-eyebrow { gap: 13px; margin-bottom: 29px; font-size: 8px; letter-spacing: .17em; }
  .hero-brand { font-size: 13px; }
  .eyebrow-divider { height: 15px; }
  .hero h1 { margin-bottom: 27px; font-size: clamp(48px, 12.7vw, 61px); line-height: 1.1; letter-spacing: -.065em; }
  .hero-intro { max-width: 310px; margin-bottom: 29px; font-size: 14px; line-height: 1.8; }
  .mobile-break { display: block; }
  .hero-actions { flex-direction: column; gap: 12px; }
  .home-button { min-height: 50px; padding: 14px 20px; font-size: 12px; }
  .home-text-link { font-size: 12px; }
  .hero-bottom { display: flex; justify-content: center; bottom: 87px; }
  .hero-location { display: none; }
  .scroll-cue { gap: 10px; min-height: 56px; }
  .scroll-cue > span { font-size: 7px; }
  .scroll-cue i { height: 24px; }
  .hero::after { height: 86px; }
  .section-kicker { margin-bottom: 23px; font-size: 9px; }
  .section-title { font-size: 37px; }
  .section-description { font-size: 13px; line-height: 1.9; }
  .research-metrics dd { gap: 8px; font-size: 42px; }
  .research-metrics dd > span { font-size: 10px; }
  .research-metrics dt { font-size: 10px; }
  .workflow-visual { height: 370px; border-radius: 18px; }
  .visual-topline { top: 21px; right: 20px; left: 20px; }
  .field-scene { inset: 51px 5px 82px; }
  .field-stack { width: 57%; }
  .field-plane { border-radius: 12px; }
  .field-plane--magnetic { transform: translateZ(58px); }
  .field-plane--gravity { transform: translateZ(-58px); }
  .field-tag--magnetic { top: 8%; right: 3%; }
  .field-tag--gravity { right: 5%; bottom: 4%; }
  .field-tag--radiometric { top: 51%; left: 1%; }
  .visual-caption { right: 20px; bottom: 38px; left: 20px; font-size: 10px; }
  .visual-caption-note { font-size: 8px; }
  .workflow-progress { right: 20px; bottom: 20px; left: 20px; }
  .workflow-step h2 { font-size: 35px; }
  .workflow-step p:not(.section-kicker) { font-size: 13px; }
  .workflow-step .section-kicker { font-size: 8px; gap: 12px; }
  .workflow-step .section-index::after { width: 18px; margin-left: 12px; }
  .workspace-link { gap: 7px 12px; grid-template-columns: 19px 1fr 35px; }
  .workspace-link-name { font-size: 24px; }
  .workspace-link-description { font-size: 11px; }
  .workspace-link-arrow { width: 35px; height: 35px; }
  .about-section .section-title { font-size: 36px; }
  .about-copy p { font-size: 13px; }
  .home-footer { align-items: flex-start; gap: 18px; }
  .footer-brand { font-size: 14px; }
  .footer-brand img { width: 28px; height: 28px; }
  .footer-links { flex-direction: column; align-items: flex-end; gap: 0; }
  .footer-links a { min-height: 32px; font-size: 9px; }
  .motion-toggle { min-height: 36px; right: 14px; bottom: 14px; font-size: 9px !important; }
}
@media (prefers-reduced-motion: reduce) {
  .gpex-home main *, .gpex-home main *::before, .gpex-home main *::after { animation: none !important; transition: none !important; }
  .gpex-home .hero-content { transform: none !important; opacity: 1 !important; }
  .gpex-home .hero-field { transform: none !important; }
  .gpex-home [data-reveal] { opacity: 1 !important; transform: none !important; }
  .gpex-home .workspace-link:hover .workspace-link-name, .gpex-home .workspace-link:hover .workspace-link-arrow, .gpex-home .home-button:hover { transform: none; }
}
@media print {
  .hero { min-height: 0; color: #12243b; background: white; }
  .hero-content { padding: 40px 0; opacity: 1; transform: none; }
  .hero h1 { font-size: 50px; }
  .hero-eyebrow, .hero-brand, .hero-intro { color: #435870; }
  .hero-field, .hero-bottom, .hero::after, .motion-toggle, .workflow-visual-column { display: none; }
  .hero-actions { display: none; }
  .home-container { width: 100%; }
  .research-section, .workspace-section, .about-section, .workflow-section { padding: 30px 0; background: white; color: #12243b; }
  .workflow-layout, .section-intro, .about-main, .research-note { display: block; }
  .workflow-step { min-height: 0; padding: 20px 0; break-inside: avoid; }
  .about-section .section-title, .about-copy p, .research-note p { color: #12243b; }
  .about-copy { padding-top: 20px; }
  .research-note { margin-top: 24px; }
  .home-footer { display: none; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}
