/* Homepage-only wallpaper: dimensional motion from the original supplied PNG. */
.has-alien-wallpaper #canvas-container {
    --world-x: 0px;
    --world-y: 0px;
    --water-x: 0px;
    --water-y: 0px;
    --world-rx: 0deg;
    --world-ry: 0deg;
    --wallpaper-shade: .06;
    display: block;
    overflow: hidden;
    opacity: 1 !important;
    perspective: 1400px;
    background: #001009;
    contain: layout paint;
}
.home-wallpaper #animation-canvas { display: none; }
/* The old backdrop needed a heavy mask; let the new landscape retain its color. */
.has-alien-wallpaper .cinematic-hero::before {
    background: linear-gradient(90deg, rgba(0,5,3,.32), rgba(0,5,3,.12) 38%, transparent 72%),
        linear-gradient(180deg, rgba(0,0,0,.06), transparent 65%, rgba(0,0,0,.15));
}
.has-alien-wallpaper .cinematic-hero::after {
    background: linear-gradient(180deg, transparent, rgba(0,0,0,.66));
}
.home-wallpaper-stage {
    position: absolute;
    inset: -30px;
    transform-style: preserve-3d;
    transform: rotateX(var(--world-rx)) rotateY(var(--world-ry));
}
.home-wallpaper-world,
.home-wallpaper-foreground {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 56% 50%;
    pointer-events: none;
}
.home-wallpaper-world {
    transform: translate3d(var(--world-x), var(--world-y), 0) scale(1.035);
    filter: saturate(1.04);
    will-change: transform;
}
.home-wallpaper-foreground {
    transform: translate3d(var(--water-x), var(--water-y), 12px) scale(1.035);
    mask-image: linear-gradient(transparent 57%, rgba(0,0,0,.12) 65%, #000 78%);
    -webkit-mask-image: linear-gradient(transparent 57%, rgba(0,0,0,.12) 65%, #000 78%);
    will-change: transform;
}
.home-wallpaper-haze {
    position: absolute;
    inset: 34% -12% -9%;
    background: radial-gradient(ellipse 45% 8% at 28% 45%, rgba(0,255,90,.16), transparent 80%),
        radial-gradient(ellipse 38% 9% at 74% 47%, rgba(98,255,0,.17), transparent 80%),
        radial-gradient(ellipse 24% 24% at 88% 12%, rgba(0,255,95,.07), transparent 76%);
    mix-blend-mode: screen;
    animation: alienSkyHaze 18s ease-in-out infinite alternate;
}
.home-wallpaper-shimmer {
    position: absolute;
    inset: 74% -5% -6%;
    background: repeating-linear-gradient(178deg, transparent 0 17px, rgba(120,255,201,.08) 18px, transparent 20px 35px);
    mask-image: radial-gradient(ellipse at 50% 70%, #000, transparent 72%);
    mix-blend-mode: screen;
    opacity: .45;
    animation: alienSkyWater 11s ease-in-out infinite alternate;
}
.home-wallpaper-vignette {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0,5,3,.12), transparent 32%, rgba(0,5,3,.1)),
        radial-gradient(ellipse at 52% 45%, transparent 30%, rgba(0,4,2,.32) 100%);
}
.home-wallpaper-vignette::after {
    content: '';
    position: absolute;
    inset: 0;
    background: #000803;
    opacity: var(--wallpaper-shade);
}
.home-wallpaper-dust { position: absolute; inset: 0; }
.home-wallpaper-dust span {
    position: absolute;
    top: var(--dust-top);
    left: var(--dust-left);
    width: 2px;
    height: 2px;
    border-radius: 50%;
    background: #d6ffea;
    box-shadow: 0 0 7px 2px rgba(0,255,123,.6);
    opacity: .5;
    animation: alienSkyDust var(--dust-speed, 12s) ease-in-out infinite alternate;
}
.home-wallpaper-dust span:nth-child(1) { --dust-left: 8%; --dust-top: 24%; }
.home-wallpaper-dust span:nth-child(2) { --dust-left: 31%; --dust-top: 49%; --dust-speed: 15s; }
.home-wallpaper-dust span:nth-child(3) { --dust-left: 68%; --dust-top: 30%; --dust-speed: 9s; }
.home-wallpaper-dust span:nth-child(4) { --dust-left: 86%; --dust-top: 60%; --dust-speed: 14s; }
.home-wallpaper-dust span:nth-child(5) { --dust-left: 48%; --dust-top: 82%; --dust-speed: 11s; }
.home-wallpaper-dust span:nth-child(6) { --dust-left: 95%; --dust-top: 16%; --dust-speed: 17s; }
@keyframes alienSkyHaze {
    from { transform: translate3d(-2%, 0, 24px) scale(1); opacity: .65; }
    to { transform: translate3d(3%, -1.5%, 24px) scale(1.08); opacity: 1; }
}
@keyframes alienSkyWater {
    from { transform: translate3d(-1%, 0, 30px) scaleX(1.02); }
    to { transform: translate3d(1%, 8px, 30px) scaleX(1.06); }
}
@keyframes alienSkyDust {
    from { transform: translate3d(0, 12px, 40px); opacity: .15; }
    to { transform: translate3d(18px, -32px, 40px); opacity: .7; }
}
.wallpaper-paused .home-wallpaper-stage * { animation-play-state: paused !important; }
@media (max-width: 820px) {
    .home-wallpaper-stage { inset: -14px; }
    .home-wallpaper-world, .home-wallpaper-foreground { object-position: 58% 50%; }
    .home-wallpaper-dust span:nth-child(n+4) { display: none; }
    .home-wallpaper-haze { animation-duration: 24s; }
}
@media (prefers-reduced-motion: reduce) {
    .home-wallpaper-stage, .home-wallpaper-stage * { animation: none !important; transform: none !important; will-change: auto; }
    .home-wallpaper-foreground { display: none; }
}
