/* =====================================================
   NASLEDIE - MAIN STYLES
   All @import statements MUST be at the top of the file
   ===================================================== */

@import 'modules/variables.css';
@import 'modules/typography.css';
@import 'modules/utilities.css';
@import 'modules/modals-base.css';
@import 'modules/nav.css';
@import 'modules/hero.css';
@import 'modules/buttons.css';
@import 'modules/sections.css';
@import 'modules/philosophy.css';
@import 'modules/editorial.css';
@import 'modules/location.css';
@import 'modules/services.css';
@import 'modules/dashboard.css';
@import 'modules/scrollytelling.css';
@import 'modules/collection-modal.css';
@import 'modules/gallery.css';
@import 'modules/gallery-thumbs.css';
@import 'modules/product-modal.css';
@import 'modules/strategy.css';
@import 'modules/charts.css';
@import 'modules/specs.css';
@import 'modules/engineering.css';
@import 'modules/contact.css';
@import 'modules/construction.css';
@import 'modules/footer.css';

/* =====================================================
   PRELOADER - V3.0
   ===================================================== */
.preloader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: var(--c1-bg);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: opacity 0.5s ease, visibility 0.5s ease;
}

.preloader.hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.preloader-logo {
    height: auto;
    animation: preloaderPulse 1.5s ease-in-out infinite;
}

@keyframes preloaderPulse {

    0%,
    100% {
        opacity: 0.4;
    }

    50% {
        opacity: 1;
    }
}

/* =====================================================
   RESET & BASE
   ===================================================== */
html {
    scroll-behavior: smooth;
    overflow-x: clip;
    max-width: 100vw;
}

body.site-page {
    margin: 0;
    padding: 0;
    background-color: var(--c1-bg);
    color: var(--c1-text);
    font-family: var(--c1-font-sans);
    line-height: 1.5;
    overflow-x: clip;
    position: relative;
    max-width: 100vw;
}

/* Prevent any element from breaking site width */
*,
*::before,
*::after {
    max-width: 100vw;
}

/* Film Grain Texture Overlay - Fine Grain */
body.site-page::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 9999;
    opacity: 0.1;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.99' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
}