/* ============================================
   Oak City Solar Wash — 21st.dev Effects CSS
   Smoke canvas, shimmer particles, gradient glow
   ============================================ */

/* Effects wrapper — fixed, full-viewport, behind content */
#ocsw-effects-wrap {
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
}

/* Smoke canvas — bottom layer, subtle vapor */
#ocsw-smoke-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    opacity: 0.55;
}

/* Particle / shimmer canvas — above smoke, catches light flecks */
#ocsw-particle-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    opacity: 0.7;
}

/* Gradient glow overlay — top layer, animated gradient wash */
#ocsw-glow-overlay {
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse 80% 50% at 50% 0%,
        rgba(4, 107, 210, 0.06) 0%,
        transparent 70%
    ),
    radial-gradient(
        ellipse 60% 40% at 80% 20%,
        rgba(34, 163, 84, 0.04) 0%,
        transparent 60%
    );
    animation: ocsw-glow-shift 18s ease-in-out infinite alternate;
}

@keyframes ocsw-glow-shift {
    0% {
        background-position: 0% 0%, 100% 0%;
        opacity: 0.8;
    }
    100% {
        background-position: 30% 10%, 60% 30%;
        opacity: 1;
    }
}

/* Ensure site content sits above the effects layer */
#page,
.site-header,
.site-content,
.entry-content,
.ast-container {
    position: relative;
    z-index: 1;
}

/* Subtle scroll-triggered reveal for content blocks */
.ocsw-reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.ocsw-reveal.ocsw-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Respect reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
    #ocsw-smoke-canvas,
    #ocsw-particle-canvas {
        display: none !important;
    }
    #ocsw-glow-overlay {
        animation: none !important;
    }
    .ocsw-reveal {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}

/* Mobile: lighten the load — hide particle canvas, keep smoke only */
@media (max-width: 768px) {
    #ocsw-particle-canvas {
        display: none;
    }
    #ocsw-smoke-canvas {
        opacity: 0.4;
    }
}