/* Mox Core — interactive modules */
.hero-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.9}
.hero-inner{z-index:1}

/* Assay panel: clickable cells + detail drawer */
.assay-cell[role=button]{cursor:pointer;position:relative}
.assay-cell[role=button]::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--copper-500);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.assay-cell.is-active{background:var(--navy-700)}
.assay-cell.is-active::after,.assay-cell[role=button]:hover::after{transform:scaleX(1)}
.assay-detail{margin-top:1px;background:var(--navy-800);border:1px solid var(--navy-700);padding:28px 32px;display:grid;grid-template-columns:auto 1fr auto;gap:32px;align-items:center}
.assay-detail .big{font-family:var(--font-display);font-size:64px;font-weight:700;color:var(--copper-400);line-height:1}
.assay-detail h3{color:#fff;font-size:22px}
.assay-detail p{color:var(--steel-200);font-size:14.5px;margin-top:8px;max-width:60ch}
.assay-detail .meta{font-family:var(--font-mono);font-size:12px;color:var(--steel-400);margin-top:10px}
.assay-detail.swap{animation:swap .3s ease}
@keyframes swap{from{opacity:.3;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(max-width:760px){.assay-detail{grid-template-columns:1fr;gap:16px}}

/* Route */
.route{background:var(--navy-950);color:#fff}
.route h2{color:#fff}
.route .section-head p{color:var(--steel-200)}
.route-svg{width:100%;height:auto;display:block}
.route-line{fill:none;stroke:var(--navy-700);stroke-width:2}
.route-flow{fill:none;stroke:var(--copper-400);stroke-width:2;stroke-dasharray:6 10;animation:flow 1.6s linear infinite}
@keyframes flow{to{stroke-dashoffset:-32}}
.route-node{fill:var(--navy-900);stroke:var(--copper-500);stroke-width:2}
.route-pulse{fill:none;stroke:var(--copper-400);stroke-width:1.5;transform-box:fill-box;transform-origin:center;animation:pulse 2.4s ease-out infinite}
@keyframes pulse{from{transform:scale(1);opacity:.8}to{transform:scale(2.6);opacity:0}}
.route-label{fill:#fff;font:600 16px var(--font-display)}
.route-sub{fill:var(--steel-400);font:12px var(--font-body)}

/* Spec builder */
.spec-builder{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
.spec-builder .form-grid{margin-top:8px}
.spec-out{background:var(--navy-900);color:var(--steel-200);padding:32px;font-family:var(--font-mono);font-size:13px;line-height:1.9;border-left:2px solid var(--copper-500)}
.spec-out b{color:var(--copper-400);font-weight:500}
.spec-out .btn{margin-top:22px;font-family:var(--font-body)}
@media(max-width:860px){.spec-builder{grid-template-columns:1fr;gap:32px}}
@media(prefers-reduced-motion:reduce){.hero-canvas{display:none}}

/* Helio partnership — compact, modern aerospace-styled callout */
.helio{position:relative;overflow:hidden;color:#fff;background:radial-gradient(130% 110% at 88% 8%,#15314f 0%,#081527 48%,#03070d 100%);padding:76px 0}
.helio-stars{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.helio-bg{position:absolute;inset:0;background-size:cover;background-position:center 38%;opacity:.5;pointer-events:none}
.helio-scrim{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(3,7,13,.96) 0%,rgba(3,7,13,.82) 38%,rgba(3,7,13,.35) 70%,rgba(3,7,13,.55) 100%),linear-gradient(180deg,rgba(3,7,13,.55) 0%,rgba(3,7,13,0) 25%,rgba(3,7,13,0) 75%,rgba(3,7,13,.7) 100%)}
.helio-stars{opacity:.6}
.helio-grid{position:relative;display:block}
.helio .eyebrow{color:var(--copper-400)}.helio .eyebrow::before{background:var(--copper-400)}
/* a single, unambiguous heading — the old sub-kicker sat right under
   the h2 at nearly the same size/weight and read as a second,
   doubled headline. It's now a small mono badge instead. */
.helio-kicker{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--copper-200);
  border:1px solid rgba(211,146,95,.32);background:rgba(211,146,95,.07);
  padding:6px 12px;border-radius:999px;
  margin:14px 0 18px;
}
.helio-kicker::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--copper-400);box-shadow:0 0 8px var(--copper-400);flex:none}
.helio h2{color:#fff;font-size:clamp(27px,3.4vw,40px);line-height:1.12;margin:0;font-weight:600}
.helio-copy p{color:var(--steel-200);max-width:54ch;font-size:14.5px;line-height:1.65;margin-top:0}
.helio-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.helio-tags span{border:1px solid rgba(211,146,95,.32);color:var(--copper-200);padding:6px 12px;font-size:11px;font-family:var(--font-mono);letter-spacing:.03em;border-radius:999px;backdrop-filter:blur(4px);background:rgba(255,255,255,.03)}
.helio-cta{margin-top:22px;font-size:13.5px;padding:11px 20px}
.helio-art{max-width:440px;margin:0 auto;position:relative;border-radius:18px;overflow:hidden;box-shadow:0 22px 60px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08)}
.helio-art svg{width:100%;height:auto;display:block}
/* orbital scene — satellite, Earth limb, layered clouds */
.helio .ob-brand{fill:#3b2a0c;font:700 9.4px var(--font-mono);letter-spacing:.1em;opacity:.88}
.helio .ob-sat{transform-box:view-box;transform-origin:0 0;animation:obDrift 16s ease-in-out infinite alternate;will-change:transform}
@keyframes obDrift{0%{transform:translate(-6px,3px) rotate(-1.6deg)}50%{transform:translate(4px,-5px) rotate(.4deg)}100%{transform:translate(10px,2px) rotate(1.8deg)}}
/* three cloud layers at different speeds; each tile is 400 units wide and repeated twice, so the -400 shift loops with no seam */
.helio .ob-clouds{will-change:transform;animation:obClouds linear infinite}
.helio .ob-clouds-far{animation-duration:110s}
.helio .ob-clouds-mid{animation-duration:64s}
.helio .ob-clouds-near{animation-duration:38s}
@keyframes obClouds{from{transform:translateX(0)}to{transform:translateX(-400px)}}
/* sunlight glint sweeping each solar wing (resting state is invisible) */
.helio .ob-glint{opacity:0;transform-box:view-box;transform-origin:0 0;animation:obGlint 6s ease-in-out infinite}
.helio .ob-glint-r{animation-delay:2.4s}
@keyframes obGlint{0%{opacity:0;transform:translateX(0) skewX(-20deg)}6%{opacity:1}46%{opacity:1;transform:translateX(156px) skewX(-20deg)}52%{opacity:0;transform:translateX(156px) skewX(-20deg)}100%{opacity:0;transform:translateX(156px) skewX(-20deg)}}
/* status lights */
.helio .ob-light{animation:obBlink 2.4s ease-in-out infinite}
.helio .ob-light-2{animation-delay:.8s}
.helio .ob-light-3{animation-delay:1.6s}
@keyframes obBlink{0%,100%{opacity:.18}45%,55%{opacity:1}}
/* respect reduced-motion: freeze the scene in a clean still frame */
@media(prefers-reduced-motion:reduce){.helio .ob-sat,.helio .ob-clouds,.helio .ob-glint,.helio .ob-light{animation:none!important}}
@media(max-width:860px){.helio-bg{opacity:.38;background-position:70% center}.helio-scrim{background:linear-gradient(180deg,rgba(3,7,13,.88),rgba(3,7,13,.7) 60%,rgba(3,7,13,.9))}}

/* Site-wide polish: interior pages */
.page-hero{background:radial-gradient(90% 140% at 100% 0%,#13304f 0%,#070f1c 60%)}
.page-hero .container{position:relative;z-index:1}
.field-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.7}
.card,.person-card,.process-step{transition:transform .25s ease,border-color .25s ease,box-shadow .25s ease}
.card:hover,.person-card:hover{transform:translateY(-4px);border-color:var(--copper-400);box-shadow:0 14px 32px rgba(11,30,54,.12)}
.process-step:hover{background:var(--paper-50)}
.gallery-item img{transition:transform .6s ease}.gallery-item:hover img{transform:scale(1.06)}
.site-header{transition:box-shadow .25s ease,padding .25s ease}
.site-header.scrolled{box-shadow:0 6px 24px rgba(7,15,28,.12)}
.site-header.scrolled .nav{padding-top:10px;padding-bottom:10px}
.progress-bar{position:fixed;top:0;left:0;height:3px;width:0;background:var(--copper-500);z-index:100}
