/* Shared 972 × 640 scene; text and safe space adapt continuously. */
:root { --hero-compact: clamp(0px,calc(700px - 100svh),100px); --site-header-height: max(76px,calc(clamp(72px,9.87vw,130px) - var(--hero-compact) * .54)); }
.orbit-header { position: fixed; inset: 0 0 auto; z-index: 10; color: #eef4fa; background: transparent; pointer-events: none; }
.orbit-header.is-scrolled { background: linear-gradient(#050b13ed,#050b13c7 70%,#050b1300); border-bottom: 0; }
.orbit-header-frame { position: relative; width: min(100%,1320px); height: var(--site-header-height); margin-inline: auto; }
.orbit-brand { position: absolute; top: max(20px,calc(min(100vw,1320px) * .03395 - var(--hero-compact) * .25)); left: 7.3%; width: max(30px,calc(min(100vw,1320px) * .03806 - var(--hero-compact) * .21)); height: max(34px,calc(min(100vw,1320px) * .036 - var(--hero-compact) * .14)); display: block; pointer-events: auto; }
.orbit-brand::before { content: ""; position: absolute; inset: -5px; }
.orbit-logo { width: max(30px,calc(min(100vw,1320px) * .039 - var(--hero-compact) * .22)); height: auto; }
.orbit-hero { position: relative; overflow: clip; background: transparent; scroll-margin-top: 0; }
.orbit-hero:focus { outline: none; border-radius: 0; }
.orbit-stage { --scene-safe-top: calc(var(--hero-compact) * .88); --scene-safe-bottom: calc(var(--hero-compact) * .20); position: relative; display: grid; place-items: center; width: min(100%,1320px); min-height: 100svh; padding-block: var(--scene-safe-top) var(--scene-safe-bottom); margin-inline: auto; }
.orbit-copy { position: relative; z-index: 2; top: calc(-1 * var(--portrait-lift,0px)); left: 0; width: 100%; display: flex; flex-direction: column; align-items: center; }
.orbit-scene { position: absolute; top: calc((100svh + var(--scene-safe-top,0px) - var(--scene-safe-bottom,0px)) / 2 - var(--portrait-lift,0px)); left: 50%; width: min(100%,calc(max(64px,100svh - var(--scene-safe-top,0px) - var(--scene-safe-bottom,0px)) * 972 / 640)); height: auto; aspect-ratio: 972 / 640; transform: translate(-50%,-50%); mask-image: linear-gradient(to bottom,transparent,#000 8%,#000 92%,transparent),linear-gradient(to right,transparent,#000 6%,#000 94%,transparent); mask-composite: intersect; pointer-events: none; }
.orbit-scene::before { content: ""; position: absolute; inset: 0; background: url("images/hero-background-v8.svg?rev=2") center / 100% 100% no-repeat; pointer-events: none; }
.orbit-name { position: relative; left: .46%; flex: none; width: min(clamp(31.79%,calc(414px - 30vw),min(64%,270px,82vw - 80px)),max(128px,calc((100svh - 150px) * 1.7))); aspect-ratio: 309 / 111; margin: 0; line-height: 1; }
.orbit-ink { position: relative; display: block; width: 100%; height: 100%; background: #9edbea; mask: url("images/ricky-alpha-v8-15.svg") center / contain no-repeat; }
.orbit-ink::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg,transparent 32%,rgb(207 242 249 / .35) 44%,rgb(255 255 255 / .85) 50%,rgb(207 242 249 / .35) 56%,transparent 68%) no-repeat; transform: translateX(-75%); opacity: 0; }
.orbit-identity { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; column-gap: .35em; width: 100%; margin: min(clamp(20px,2.5vw,36px),clamp(10px,calc(6svh - 10px),36px)) 0 0; text-align: center; color: #eaf2f8; font-size: min(clamp(21px,2.88vw,38px),clamp(16px,calc(10svh - 30px),38px)); font-weight: 600; line-height: 1.4; letter-spacing: .04em; }
.orbit-role { white-space: nowrap; }
.orbit-builder { white-space: nowrap; }
.orbit-overlay { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; pointer-events: none; fill: none; }
/* Track material, nodes and light segments move together; sky and content stay fixed. */
.orbit-geometry { transform-box: view-box; transform-origin: 50% 50%; transform: rotate(var(--orbit-angle,0deg)); }
.orbit-stream { --orbit-duration: 12s; --orbit-phase: -2s; opacity: 0; }
.orbit-stream-lower { --orbit-duration: 17s; --orbit-phase: -9s; }
.orbit-stream-companion { --orbit-duration: 19s; --orbit-phase: -11s; }
.orbit-stream-turn { --orbit-duration: 12s; --orbit-phase: -1.2s; --orbit-min-duration: 10; --orbit-max-duration: 16; }
.orbit-stream-inner { --orbit-duration: 11s; --orbit-phase: -2s; --orbit-min-duration: 10; --orbit-max-duration: 15; }
.orbit-stream-right { --orbit-duration: 10s; --orbit-phase: -1.2s; --orbit-min-duration: 8; --orbit-max-duration: 12; }
.orbit-stream-outer { --orbit-duration: 13s; --orbit-phase: -6s; --orbit-min-duration: 10; --orbit-max-duration: 16; }
/* Surface longitude changes inside a fixed sphere and fixed lighting. */
.orbit-planet { transform-box: fill-box; transform-origin: center; transform: scale(var(--planet-scale,1)); }
.orbit-planet-canvas { display: block; width: 100%; height: 100%; }
.orbit-node { --node-glow: 0; }
.node-base { fill: #e5f6ff; opacity: .72; }
.node-quiet-rays { fill: none; stroke: #9acfe4; stroke-width: .4; opacity: .24; }
.node-track-repair { fill: none; stroke: #31556b; stroke-width: .65; opacity: .65; }
.orbit-node .node-halo { fill: #87c9e2; opacity: .10; filter: blur(.9px); }
.orbit-node .node-core { fill: #f0faff; filter: drop-shadow(0 0 1.3px #83c6e3); }
.node-flare { opacity: var(--node-glow); }
.orbit-node .node-rays { stroke: #b5dfef; stroke-width: .55; opacity: .68; }
.sky-beacon { opacity: 0; }
.sky-beacon .node-halo { fill: url(#beacon-glow-v8-15); opacity: .8; filter: blur(1.2px); }
.sky-beacon .node-core { filter: drop-shadow(0 0 1.3px #9bd8e9); }
.beacon-quiet { fill: #d9f4ff; opacity: .22; }
.node-halo { fill: #69d4f6; opacity: .15; filter: blur(1px); }
.node-rays { fill: none; stroke: #b0e9fa; stroke-width: .65; opacity: .65; }
.node-core { fill: #f1fcff; filter: drop-shadow(0 0 2px #8ddaff); }
.orbit-spark { --segment: 48; --lead: 0px; stroke: #9edbea; stroke-width: 1.1; stroke-linecap: round; stroke-dasharray: var(--segment) calc(1000 - var(--segment)); stroke-dashoffset: calc(var(--lead) + var(--orbit-offset,0px)); }
.orbit-spark-haze { stroke-width: 3; opacity: .04; filter: blur(1.2px); }
.orbit-spark-tail { opacity: .16; filter: blur(.6px); }
.orbit-spark-core { --segment: 28; --lead: -20px; opacity: .24; stroke-width: 1.2; filter: blur(.3px); }
.orbit-spark-tip { --segment: 1.3; --lead: -47px; stroke: #e5fcff; stroke-width: 2.3; opacity: .8; filter: drop-shadow(0 0 3px #67d9ff); }
.motion-enabled .orbit-ink::after { animation: orbit-v8-name 3s linear infinite; animation-play-state: var(--motion-state); }
@keyframes orbit-v8-name {
  0% { transform: translateX(-75%); opacity: 0; }
  10%,90% { opacity: .75; }
  100% { transform: translateX(75%); opacity: 0; }
}
.section { scroll-margin-top: calc(clamp(76px,9.87vw,130px) + 16px); }
.sky-canvas { position: fixed; inset: 0; z-index: 1; pointer-events: none; }
.section,.site-footer { z-index: 2; }
.site-footer { position: relative; }
.static-review .sky-canvas { display: none; }
.static-review .orbit-stream,.static-review .node-flare,.static-review .sky-beacon { visibility: hidden; }
.static-review .orbit-geometry { transform: none !important; }
.static-review *,.static-review *::before,.static-review *::after { animation: none !important; transition: none !important; }
/* One continuous hero scale spans the old 600px layout boundary. */
@media (max-width:680px) {
  .orbit-identity { width: min(calc(100% - 40px),max(240px,100vw - 170px)); font-size: min(clamp(19px,5vw + 3px,21px),clamp(16px,calc(10svh - 30px),38px)); line-height: 1.5; letter-spacing: .01em; }
  .orbit-dot { display: none; }
}
@media (max-width:600px) {
  .orbit-header-frame { height: 76px; }
  .orbit-brand { top: 20px; left: 20px; width: 30px; height: 34px; }
  .orbit-logo { width: 30px; }
}
@media (max-width:360px) {
  .orbit-brand { left: 16px; }
}
@media (prefers-reduced-motion:reduce) {
  .orbit-ink::after { display: none; animation: none !important; }
  .sky-canvas { display: none; }
  .orbit-stream,.node-flare,.sky-beacon { visibility: hidden; }
  .orbit-geometry { transform: none !important; }
}

/* Full-frame fitting retains both planets and all primary tracks. */
@media (max-aspect-ratio:1/1) {
  .orbit-scene { mask-image: linear-gradient(to bottom,transparent,#000 22%,#000 78%,transparent),linear-gradient(to right,transparent,#000 6%,#000 94%,transparent); }
}
@media (max-width:680px) and (max-aspect-ratio:1/1) {
  .orbit-stage { --portrait-lift: clamp(0px,calc((100svh - 600px) * .13),32px); }
  .orbit-hero::before { opacity: .60; }
  .orbit-scene { opacity: .82; }
}
@media (max-width:680px), (max-height:500px) {
  .orbit-spark { stroke-width: calc(.8px * var(--orbit-detail-scale,1)); }
  .orbit-spark-haze { stroke-width: calc(1.8px * var(--orbit-detail-scale,1)); opacity: .035; }
  .orbit-spark-tail { opacity: .22; }
  .orbit-spark-core { stroke-width: calc(1px * var(--orbit-detail-scale,1)); opacity: .32; }
  .orbit-spark-tip { stroke-width: calc(1.5px * var(--orbit-detail-scale,1)); }
}
@media (max-width:280px) {
  .orbit-header-frame { height: 112px; }
  .section { scroll-margin-top: 128px; }
  .orbit-stage { --scene-safe-top: 124px; --scene-safe-bottom: 20px; }
  .orbit-copy { padding-inline: 16px; }
  .orbit-name { max-width: 100%; }
  .orbit-identity { width: 100%; }
}

/* Light and small planet canvases share the original SVG viewBox and scene mask. */
.orbit-raster { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }


.orbit-planet-surface { position: absolute; pointer-events: none; transform: scale(var(--planet-scale,1)); transform-origin: center; }

/* Minimal navigation: one quiet guide below the identity, outside its flow. */
.orbit-guide { position: absolute; left: 50%; top: calc(100% + clamp(16px,4svh,40px)); z-index: 3; display: grid; place-items: center; width: 48px; height: 48px; transform: translateX(-50%); color: #66cbd7; border-radius: 50%; }
.orbit-guide:hover { color: #b4edf1; }
.orbit-guide:focus-visible { outline: 2px solid #91dce5; outline-offset: 3px; }
.motion-enabled .orbit-guide svg { animation: orbit-guide-drift 2.8s ease-in-out infinite; animation-play-state: var(--motion-state,paused); }
@keyframes orbit-guide-drift { 0%,100% { transform: translateY(-2px); } 50% { transform: translateY(3px); } }
@media (max-height:360px) { .orbit-guide { top: calc(100% + 8px); } }

@media (max-width:680px) and (orientation:portrait) {
  .orbit-header { position: absolute; }
  .orbit-header.is-scrolled { background: transparent; }
  /* Stretch the whole scene together. Counter-scale the planet discs around their centers. */
  .orbit-scene {
    --orbit-stretch: 1.2;
    transform: translate(-50%,-50%) scaleY(var(--orbit-stretch));
    mask-image: linear-gradient(to bottom,transparent,#000 14%,#000 86%,transparent),linear-gradient(to right,transparent,#000 6%,#000 94%,transparent);
  }
  .orbit-planet-surface {
    transform: scale(var(--planet-scale,1)) scaleY(calc(1 / var(--orbit-stretch)));
  }
}
