/* Scroll-snap support */
html.has-scroll-snap {
    scroll-snap-type: y proximity;
    scroll-behavior: smooth;
    overflow-y: scroll;
    overscroll-behavior-y: contain;
}

.has-scroll-snap section {
    scroll-snap-align: start;
    scroll-snap-stop: always;
    min-height: 65vh; /* Ensure sections are tall enough for snap to work well */
}

/* FOUC prevention */
.no-fouc {
    opacity: 0;
}

.fouc-ready {
    opacity: 1;
    transition: opacity 0.3s ease;
}

/* Hardware acceleration for fixed elements */
.navbar, .back-to-top, .sticky-cta {
    will-change: transform;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}

/* More efficient transitions for hover effects */
.card, .glass-effect, .btn, 
.service-card, .benefit-card, .feature-card,
.blog-card, .portfolio-card, .testimonial-card, .team-card {
    transition-property: transform, box-shadow, opacity;
    transition-duration: 0.3s;
    transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
}

/* Back to top button styles */
.back-to-top {
    position: fixed;
    right: 30px;
    bottom: 30px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--gradient-primary);
    color: #fff;
    transition: all 0.3s;
    z-index: 99;
    opacity: 0;
    visibility: hidden;
    box-shadow: 0 0 20px rgba(45, 130, 254, 0.3);
    display: flex;
    align-items: center;
    justify-content: center;
}

.back-to-top.active {
    opacity: 1;
    visibility: visible;
}

.back-to-top:hover {
    background: var(--gradient-primary);
    color: #fff;
    transform: translateY(-5px);
}

/* Reduce layout thrashing for animation elements */
[data-aos] {
    transform: translateZ(0);
    will-change: transform, opacity;
}

/* Optimize animation performance for scrolling */
.animate-on-scroll {
    will-change: opacity, transform;
    transition: opacity 0.6s cubic-bezier(0.165, 0.84, 0.44, 1),
                transform 0.6s cubic-bezier(0.165, 0.84, 0.44, 1);
}

/* Accessibility - respect prefers-reduced-motion setting */
@media (prefers-reduced-motion: reduce) {
    html.has-scroll-snap {
        scroll-snap-type: none !important;
        scroll-behavior: auto !important;
    }
    
    * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    
    .floating-object, .tech-icon-wrapper, .glow-circle,
    .faq-3d-object {
        animation: none !important;
        transform: none !important;
    }
} 