/* Custom styles — progressive enhancement */
@media (prefers-reduced-motion: no-preference) {
    .scroll-reveal {
        opacity: 1;
        transform: translateY(0);
        transition: opacity 0.7s ease, transform 0.7s ease;
    }
}

/* Reduced motion: keep everything visible by default */
@media (prefers-reduced-motion: reduce) {
    .scroll-reveal {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}

/* Navigation background on scroll */
nav.scrolled {
    background: rgba(254, 253, 248, 0.95);
    backdrop-filter: blur(8px);
    box-shadow: 0 1px 0 rgba(6, 95, 70, 0.08);
}

/* Smooth scroll */
html {
    scroll-behavior: smooth;
}

/* Selection color */
::selection {
    background: rgba(6, 95, 70, 0.15);
    color: #064e3b;
}
</styles.css>
<sm-file path="script.js">
(function () {
    'use strict';

    // Mobile menu
    const menuBtn = document.getElementById('menuBtn');
    const closeMenu = document.getElementById('closeMenu');
    const mobileMenu = document.getElementById('mobileMenu');
    const mobileLinks = mobileMenu.querySelectorAll('a');

    function openMenu() {
        mobileMenu.classList.remove('translate-x-full');
        document.body.style.overflow = 'hidden';
    }
    function closeMenuFn() {
        mobileMenu.classList.add('translate-x-full');
        document.body.style.overflow = '';
    }

    menuBtn.addEventListener('click', openMenu);
    closeMenu.addEventListener('click', closeMenuFn);
    mobileLinks.forEach(function (link) {
        link.addEventListener('click', closeMenuFn);
    });

    // Navbar scroll effect
    const nav = document.getElementById('nav');
    let lastScroll = 0;

    function handleScroll() {
        const currentScroll = window.pageYOffset;
        if (currentScroll > 60) {
            nav.classList.add('scrolled');
        } else {
            nav.classList.remove('scrolled');
        }
        lastScroll = currentScroll;
    }

    window.addEventListener('scroll', handleScroll, { passive: true });

    // Scroll reveal (progressive enhancement — content visible by default via CSS)
    if (window.matchMedia('(prefers-reduced-motion: no-preference)').matches) {
        const reveals = document.querySelectorAll('.scroll-reveal');

        function checkReveal() {
            reveals.forEach(function (el) {
                const top = el.getBoundingClientRect().top;
                const trigger = window.innerHeight * 0.88;
                if (top < trigger) {
                    el.style.opacity = '1';
                    el.style.transform = 'translateY(0)';
                }
            });
        }

        // Set initial hidden state
        reveals.forEach(function (el) {
            el.style.opacity = '0';
            el.style.transform = 'translateY(24px)';
        });

        window.addEventListener('scroll', checkReveal, { passive: true });
        checkReveal();
    }

    // Contact form
    const form = document.getElementById('contactForm');
    const success = document.getElementById('formSuccess');

    if (form) {
        form.addEventListener('submit', function (e) {
            e.preventDefault();
            form.style.display = 'none';
            success.classList.remove('hidden');
        });
    }
})();
</script>
