/* Base Styles & Utilities */
:root {
    --color-terra-50: #f9f1ee;
    --color-terra-600: #a64832;
    --color-charcoal: #2C2C2C;
}

html {
    scroll-behavior: smooth;
}

body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Custom Scrollbar */
::-webkit-scrollbar {
    width: 8px;
}
::-webkit-scrollbar-track {
    background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
    background: #d09682;
    border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
    background: #a64832;
}

/* Animations */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translate3d(0, 40px, 0);
    }
    to {
        opacity: 1;
        transform: translate3d(0, 0, 0);
    }
}

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

@keyframes marquee {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

@keyframes scrollDown {
    0% { transform: translateY(-100%); }
    100% { transform: translateY(200%); }
}

.animate-fade-in-up {
    animation: fadeInUp 0.8s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

.animate-fade-in {
    animation: fadeIn 1s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

.animate-marquee {
    animation: marquee 25s linear infinite;
}

.animate-scroll-down {
    animation: scrollDown 1.5s linear infinite;
}

/* Scroll Reveal Utility */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: all 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

.reveal.delay-100 { transition-delay: 0.1s; }
.reveal.delay-200 { transition-delay: 0.2s; }
.reveal.delay-300 { transition-delay: 0.3s; }

/* Writing Vertical for scroll indicator */
.writing-vertical-rl {
    writing-mode: vertical-rl;
}

/* Mobile Menu Transitions */
#mobile-menu {
    transition: max-height 0.3s ease-in-out, opacity 0.3s ease-in-out;
}
#mobile-menu.hidden {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
}
#mobile-menu:not(.hidden) {
    max-height: 400px;
    opacity: 1;
}

/* Image Aspect Ratio fallbacks */
.aspect-\[4\/5\] {
    aspect-ratio: 4/5;
}
