html {
    overflow-x: clip;
    -ms-overflow-style: none;  /* IE and Edge */
    scrollbar-width: none;  /* Firefox */
    scroll-snap-type: y proximity;
    scroll-behavior: smooth;
    scroll-padding-top: 96px;
}

html::-webkit-scrollbar {
    display: none; /* Chrome, Safari and Opera */
}

body {
    overflow-x: clip;
    max-width: 100vw;
    background-color: #f8f2e0;
    font-family: 'Inter', sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

section, header {
    scroll-snap-align: start;
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
}

.glass {
    background: rgba(255, 255, 255, 0.7);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255, 255, 255, 0.5);
}

.glass-dark {
    background: rgba(28, 25, 23, 0.8);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.text-gradient {
    background: linear-gradient(135deg, #000000 0%, #44403c 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.material-symbols-outlined {
    font-size: 24px;
    font-variation-settings: 'FILL' 0, 'wght' 300, 'GRAD' 0, 'opsz' 24;
}

.material-symbols-outlined.filled {
    font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

::selection {
    background-color: #e73819;
    color: white;
}

.service-card-hover:hover {
    transform: translateY(-8px) scale(1.02);
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1), 0 0 30px rgba(231, 56, 25, 0.1);
}

.price-badge-overlap {
    z-index: 40;
}

.z-behind-subject {
    z-index: 10;
}

.z-subject {
    z-index: 20;
}

.z-front-subject {
    z-index: 30;
}

/* Hero entry animations */
@keyframes heroFadeUp {
    from {
        opacity: 0;
        transform: translateY(40px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes heroFadeRight {
    from {
        opacity: 0;
        transform: translateX(60px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes heroFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes heroScale {
    from {
        opacity: 0;
        transform: scale(0.92) translateY(20px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

/* --- Hero entry animations (Unified) --- */
.hero-anim {
    opacity: 0;
    will-change: transform, opacity;
    transition: all 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.hero-anim.is-visible {
    opacity: 1;
    transform: none;
}

.hero-anim-bigtext:not(.is-visible) {
    transform: translateX(100px);
}

/* Specific Hero Delays */
.hero-anim-1 { transition-delay: 0.2s; }
.hero-anim-2 { transition-delay: 0.4s; }
.hero-anim-3 { transition-delay: 0.6s; }
.hero-anim-4 { transition-delay: 0.8s; }
.hero-anim-img { transition-delay: 0.5s; transition-duration: 1.5s; }
.hero-anim-img:not(.is-visible) { transform: translateX(50px); }
.hero-anim-bigtext { transition-delay: 0.1s; transition-duration: 2s; }

/* Reveal-on-scroll animations */
.reveal {
    opacity: 0;
    transform: translateY(50px);
    transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
}

.reveal-left {
    transform: translateX(-60px);
    transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal-right {
    transform: translateX(60px);
    transition: opacity 1.2s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1.2s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal-scale {
    transform: scale(0.94) translateY(20px);
    transition: opacity 1.4s cubic-bezier(0.22, 1, 0.36, 1),
                transform 1.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.reveal.is-visible,
.reveal-left.is-visible,
.reveal-right.is-visible,
.reveal-scale.is-visible {
    opacity: 1;
    transform: translate(0, 0) scale(1);
    transition-delay: 0s !important;
}

.reveal-delay-1 { transition-delay: 0.15s; }
.reveal-delay-2 { transition-delay: 0.3s; }
.reveal-delay-3 { transition-delay: 0.45s; }
.reveal-delay-4 { transition-delay: 0.6s; }
.reveal-delay-5 { transition-delay: 0.75s; }

@media (prefers-reduced-motion: reduce) {
    .reveal,
    .reveal-left,
    .reveal-right,
    .reveal-scale {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}

/* Nav slide-down */
@keyframes navSlideDown {
    from {
        opacity: 0;
        transform: translateY(-100%);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.nav-anim { 
    animation: navSlideDown 1s cubic-bezier(0.16, 1, 0.3, 1) forwards; 
}

@media (prefers-reduced-motion: reduce) {
    .hero-anim,
    .nav-anim {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }
}
