/* Self-authored sparse stars and short meteor, confined behind the globe. */
.portal-hub .earth-hero{overflow:clip}
.portal-hub .earth-hero::after{content:"";position:absolute;left:8%;top:1%;width:clamp(42px,7vw,84px);height:1px;border-radius:100%;z-index:-1;pointer-events:none;opacity:0;background:linear-gradient(90deg,transparent,rgba(223,222,204,.10) 52%,rgba(220,234,242,.55) 96%,rgba(245,244,220,.65));transform-origin:right center;--meteor-start-x:-14px;--meteor-end-x:min(360px,62vw);--meteor-angle:5deg}
.portal-hub .earth-hero[data-meteor-direction="right-to-left"]::after{left:auto;right:8%;transform-origin:left center;background:linear-gradient(270deg,transparent,rgba(223,222,204,.10) 52%,rgba(220,234,242,.55) 96%,rgba(245,244,220,.65));--meteor-start-x:14px;--meteor-end-x:max(-360px,-62vw);--meteor-angle:-5deg}
.portal-hub .earth-hero.meteor-crossing::after{animation:portal-meteor 1.35s ease-out both}
@keyframes portal-meteor{0%{opacity:0;transform:translate(var(--meteor-start-x),-4px) rotate(var(--meteor-angle))}18%{opacity:.65}65%{opacity:.46}100%{opacity:0;transform:translate(var(--meteor-end-x),min(36px,4.5vw)) rotate(var(--meteor-angle))}}
@media(prefers-reduced-motion:reduce){.portal-hub .earth-hero::after{animation:none!important;opacity:0!important}}
