/* GX CINEMATIC CONTINUITY — BUILD 05
   Real website compositing only. Never transforms or retouches the approved master asset.
   Ambient effects remain separate, pointer-events:none, and outside the AETHER face.
*/
:root{--gx-cinema-blue:rgba(88,199,232,.36);--gx-cinema-ice:rgba(211,236,249,.42)}
.hero-home{isolation:isolate!important;--gx-film-pointer:48%;}
.hero-home .hero-original{display:block;position:relative;z-index:0!important;transform:none!important;filter:none!important;animation:none!important}
.hero-home .gx-hero-dawn{z-index:3!important;pointer-events:none!important;opacity:0;background:radial-gradient(ellipse 65% 56% at 36% 45%,rgba(0,3,8,.72),rgba(0,2,7,.91) 70%,rgba(0,2,6,.97)),#010307;}
/* Four independent ambient planes; the image itself is never changed. */
.gx-film-atmosphere{position:absolute;z-index:2;inset:0;pointer-events:none;overflow:hidden;opacity:1;mix-blend-mode:screen}
.gx-film-atmosphere .gx-film-horizon{position:absolute;left:0;top:34%;width:68%;height:26%;opacity:.26;background:radial-gradient(ellipse 53% 8% at 42% 65%,rgba(196,237,255,.17),rgba(54,153,209,.055) 42%,transparent 84%);animation:gx-horizon-breathe 14s ease-in-out infinite;filter:blur(8px)}
.gx-film-atmosphere .gx-film-edge{position:absolute;left:-10%;top:62%;width:97%;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(147,222,255,.12) 36%,rgba(222,244,251,.52) 52%,rgba(96,177,228,.12) 68%,transparent 100%);opacity:.36;transform:rotate(-4deg);transform-origin:left center;animation:gx-edge-soften 11s ease-in-out infinite;filter:blur(.5px)}
.gx-film-atmosphere .gx-film-floor{position:absolute;bottom:3%;left:3%;width:69%;height:21%;background:radial-gradient(ellipse 55% 34% at 51% 35%,rgba(95,183,225,.048),transparent 75%);opacity:.65;animation:gx-floor-reflection 12s ease-in-out infinite}
.gx-film-atmosphere .gx-film-ambient{position:absolute;top:0;left:0;width:78%;height:100%;background:radial-gradient(ellipse at var(--gx-film-pointer) 50%,rgba(45,148,193,.038),transparent 45%);opacity:.8;transition:opacity 1s ease}
/* A handful of fixed architectural photons, not a noisy particles wallpaper. */
.gx-film-spark{position:absolute;width:2px;height:2px;background:#d1f2ff;border-radius:50%;opacity:.3;box-shadow:0 0 7px 1px rgba(126,205,242,.34);animation:gx-photon 5.8s ease-in-out infinite}
.gx-film-spark:nth-of-type(5){left:18%;top:27%;animation-delay:-2s}
.gx-film-spark:nth-of-type(6){left:39%;top:20%;animation-delay:-3.3s}
.gx-film-spark:nth-of-type(7){left:54%;top:46%;animation-delay:-1s}
.gx-film-spark:nth-of-type(8){left:7%;top:66%;animation-delay:-4.5s}
/* The image appears gradually during the INTRO -> HOME handoff. */
.gx-intro-required:not(.gx-film-bridging) .hero-home .gx-film-atmosphere{opacity:0}
.gx-intro-required:not(.gx-film-bridging) .hero-home .hero-copy,
.gx-intro-required:not(.gx-film-bridging) .hero-home .scroll-cue{opacity:0!important;visibility:hidden!important}
.gx-film-bridging .gx-entry{animation:gx-cinema-curtain 1.85s cubic-bezier(.18,.56,.24,1) both!important;pointer-events:none}
.gx-film-bridging .gx-entry-stage{animation:gx-stage-transfer 1.5s cubic-bezier(.2,.75,.2,1) both}
.gx-film-bridging .gx-entry-structure{animation:gx-portal-recede 1.75s cubic-bezier(.1,.45,.21,1) both}
.gx-film-bridging .gx-entry-progress{animation:gx-entry-progress-dim 1.25s ease-out both}
.gx-film-bridging .hero-home .gx-hero-dawn{animation:gx-cinema-dawn 3.3s cubic-bezier(.16,.5,.2,1) both!important}
.gx-film-bridging .hero-home .gx-film-atmosphere{animation:gx-cinema-atmosphere 3s .55s ease-out both}
.gx-film-bridging .hero-home .hero-copy{visibility:visible!important;animation:gx-cinema-title 1.9s 1.15s cubic-bezier(.14,.7,.23,1) both!important}
.gx-film-bridging .hero-home .hero-copy>*{animation:gx-cinema-line 1.4s cubic-bezier(.15,.72,.3,1) both}
.gx-film-bridging .hero-home .hero-copy>*:nth-child(1){animation-delay:1.15s}
.gx-film-bridging .hero-home .hero-copy>*:nth-child(2){animation-delay:1.35s}
.gx-film-bridging .hero-home .hero-copy>*:nth-child(3){animation-delay:1.55s}
.gx-film-bridging .hero-home .hero-copy>*:nth-child(4){animation-delay:1.8s}
.gx-film-bridging .site-header{animation:gx-navigation-appear 1.4s 1.05s ease-out both}
.gx-film-bridging .hero-home .scroll-cue{visibility:visible!important;animation:gx-cinema-line 1.2s 2.25s ease-out both!important}
.gx-film-bridging .experience-spine,.gx-film-bridging .world-thread,.gx-film-bridging .world-compass{animation:gx-ambient-rail-arrival 2s 1.6s ease-out both}
.gx-film-bridging .gx-film-ambient-sweep{animation:gx-ambient-sweep 2.3s .65s ease-in-out both}
.gx-film-ambient-sweep{position:absolute;z-index:2;left:-70%;top:40%;width:82%;height:48%;pointer-events:none;opacity:0;background:linear-gradient(94deg,transparent 0%,rgba(83,179,218,.01) 46%,rgba(148,218,243,.13) 52%,rgba(45,132,202,.015) 58%,transparent 78%);filter:blur(14px);mix-blend-mode:screen;transform:skewY(-4deg)}
.gx-film-settled .hero-home .gx-film-atmosphere{opacity:1}
/* Do not make the first page look like an app after entering a film. */
.gx-intro-required:not(.gx-film-bridging) .site-header{opacity:0}
.gx-intro-required:not(.gx-film-bridging) .experience-spine,
.gx-intro-required:not(.gx-film-bridging) .world-compass,
.gx-intro-required:not(.gx-film-bridging) .world-thread{opacity:0}
@keyframes gx-cinema-curtain{0%,15%{opacity:1;visibility:visible}45%{opacity:.82}75%{opacity:.18}100%{opacity:0;visibility:hidden}}
@keyframes gx-cinema-dawn{0%,7%{opacity:1}28%{opacity:.97}53%{opacity:.69}76%{opacity:.24}100%{opacity:0}}
@keyframes gx-stage-transfer{0%,25%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.11) translateY(-2%)}}
@keyframes gx-portal-recede{0%{opacity:.88;scale:1}55%{opacity:.54;scale:1.13}100%{opacity:0;scale:1.38}}
@keyframes gx-entry-progress-dim{0%{opacity:1}100%{opacity:0}}
@keyframes gx-cinema-atmosphere{0%{opacity:0}55%{opacity:.7}100%{opacity:1}}
@keyframes gx-cinema-title{0%,15%{opacity:0;filter:blur(8px)}100%{opacity:1;filter:blur(0)}}
@keyframes gx-cinema-line{0%{opacity:0;transform:translateY(14px);filter:blur(5px)}100%{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes gx-navigation-appear{0%{opacity:0;transform:translateY(-7px)}100%{opacity:1;transform:translateY(0)}}
@keyframes gx-ambient-rail-arrival{0%{opacity:0}100%{opacity:1}}
@keyframes gx-ambient-sweep{0%{opacity:0;left:-70%}15%{opacity:.22}60%{opacity:.42}100%{opacity:0;left:110%}}
@keyframes gx-horizon-breathe{0%,100%{opacity:.22;transform:scaleX(1)}55%{opacity:.4;transform:scaleX(1.06)}}
@keyframes gx-edge-soften{0%,100%{opacity:.25}55%{opacity:.48}}
@keyframes gx-floor-reflection{0%,100%{opacity:.45}50%{opacity:.8}}
@keyframes gx-photon{0%,100%{opacity:.12}50%{opacity:.42}}
@media(max-width:820px){
 .gx-film-atmosphere .gx-film-horizon{top:29%;height:31%;width:72%}
 .gx-film-atmosphere .gx-film-edge{top:60%;width:96%}
 .gx-film-atmosphere .gx-film-floor{bottom:auto;top:75%;height:18%}
 .gx-film-ambient-sweep{height:min(56vw,420px)}
 .gx-film-bridging .hero-home .hero-copy{animation:gx-mobile-cinema-copy 1.85s 1.45s both!important}
}
@keyframes gx-mobile-cinema-copy{0%{opacity:0;filter:blur(5px);transform:translateY(14px)}100%{opacity:1;filter:blur(0);transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){
 .gx-film-atmosphere,.gx-film-atmosphere *, .gx-film-ambient-sweep{animation:none!important;transition:none!important}
 .gx-film-atmosphere{opacity:.35!important}
 .gx-film-ambient-sweep,.gx-film-spark{display:none!important}
}
/* Fast but smooth opt-out; no forced 3.3s animation if the visitor chooses SKIP. */
.gx-film-skipped .gx-entry{animation:gx-cinema-curtain .45s ease-out both!important}
.gx-film-skipped .gx-hero-dawn{animation:gx-cinema-dawn .45s ease-out both!important}
.gx-film-skipped .hero-home .hero-copy,.gx-film-skipped .hero-home .hero-copy>*{animation-duration:.36s!important;animation-delay:0s!important}
.gx-film-skipped .site-header,.gx-film-skipped .hero-home .scroll-cue,.gx-film-skipped .world-compass,.gx-film-skipped .world-thread,.gx-film-skipped .experience-spine{animation-duration:.36s!important;animation-delay:0s!important}
/* Keep controls from the outgoing montage out of the cinematic film frame. */
.gx-film-bridging .gx-entry-top{animation:gx-entry-top-disappear .4s ease-out both}
@keyframes gx-entry-top-disappear{from{opacity:1}to{opacity:0}}
/* The GX atmosphere continues after the cut; restrained, infrequent travel. */
.gx-film-settled .gx-film-ambient-sweep{animation:gx-home-signal-travel 21s 4s linear infinite}
@keyframes gx-home-signal-travel{0%,16%,100%{left:-85%;opacity:0}23%{opacity:.03}35%{opacity:.16}52%{left:107%;opacity:0}}
@media(prefers-reduced-motion:reduce){.gx-film-settled .gx-film-ambient-sweep,.gx-film-bridging .gx-entry-top{animation:none!important}}
