/* Custom CSS Variables - Brand Colors */
:root {
    /* Primary Colors */
    --color-navy: #003366;
    --color-navy-dark: #002244;
    --color-forest-green: #2E865F;
    --color-forest-green-dark: #236B4A;
    
    /* Accent Color */
    --color-teal: #33CCCC;
    --color-teal-light: #5DD9D9;
    
    /* Neutral Colors */
    --color-white: #FFFFFF;
    --color-light-gray: #F0F0F0;
    --color-gray: #E0E0E0;
    --color-dark-gray: #4F4F4F;
    --color-charcoal: #333333;
    
    /* Legacy mappings for gradual transition */
    --color-primary: #003366;
    --color-primary-dark: #002244;
    --color-secondary: #2E865F;
    --color-accent: #33CCCC;
    --color-danger: #EF4444;
    --color-warning: #F59E0B;
    --transition-base: all 0.3s ease;
}

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

/* Font Family */
body {
    font-family: 'Open Sans', sans-serif;
}

/* Headings use Inter */
h1, h2, h3, h4, h5, h6,
.font-heading {
    font-family: 'Inter', sans-serif;
}

/* Animations */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

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

/* Fade-in Animation Classes */
.fade-in {
    animation: fadeIn 0.8s ease-out forwards;
}

.fade-in-delay-1 {
    animation: fadeIn 0.8s ease-out 0.2s forwards;
    opacity: 0;
}

.fade-in-delay-2 {
    animation: fadeIn 0.8s ease-out 0.4s forwards;
    opacity: 0;
}

.slide-in-left {
    animation: slideInLeft 0.8s ease-out forwards;
}

.slide-in-right {
    animation: slideInRight 0.8s ease-out forwards;
}

/* Custom Scrollbar */
::-webkit-scrollbar {
    width: 10px;
}

::-webkit-scrollbar-track {
    background: #f1f1f1;
}

::-webkit-scrollbar-thumb {
    background: #888;
    border-radius: 5px;
}

::-webkit-scrollbar-thumb:hover {
    background: #555;
}

/* Button Hover Effects */
button, a {
    transition: var(--transition-base);
}

/* Card Hover Effects */
.hover-lift {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.hover-lift:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}

/* Gradient Text */
.gradient-text {
    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-secondary) 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}

/* Section Padding */
section {
    position: relative;
    overflow: hidden;
}

/* Background Patterns */
.pattern-dots {
    background-image: radial-gradient(circle, #e5e7eb 1px, transparent 1px);
    background-size: 20px 20px;
}

/* Feature Cards Background Gradient */
.feature-card-gradient {
    background: linear-gradient(135deg, #f3f4f6 0%, #ffffff 100%);
}

/* Mobile Menu Animation */
#mobile-menu {
    transition: max-height 0.3s ease-out;
    max-height: 0;
    overflow: hidden;
}

#mobile-menu.active {
    max-height: 500px;
}

/* Form Input Focus Effects */
input:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* Loading Animation */
.loading {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 3px solid rgba(255, 255, 255, 0.3);
    border-radius: 50%;
    border-top-color: white;
    animation: spin 1s ease-in-out infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Hero Background Pattern */
.hero-pattern {
    background-image: 
        linear-gradient(30deg, #3b82f6 12%, transparent 12.5%, transparent 87%, #3b82f6 87.5%, #3b82f6),
        linear-gradient(150deg, #3b82f6 12%, transparent 12.5%, transparent 87%, #3b82f6 87.5%, #3b82f6),
        linear-gradient(30deg, #3b82f6 12%, transparent 12.5%, transparent 87%, #3b82f6 87.5%, #3b82f6),
        linear-gradient(150deg, #3b82f6 12%, transparent 12.5%, transparent 87%, #3b82f6 87.5%, #3b82f6),
        linear-gradient(60deg, #4f46e5 25%, transparent 25.5%, transparent 75%, #4f46e5 75%, #4f46e5),
        linear-gradient(60deg, #4f46e5 25%, transparent 25.5%, transparent 75%, #4f46e5 75%, #4f46e5);
    background-size: 80px 140px;
    background-position: 0 0, 0 0, 40px 70px, 40px 70px, 0 0, 40px 70px;
    opacity: 0.05;
}

/* Responsive Typography */
@media (max-width: 640px) {
    h1 {
        line-height: 1.2;
    }
    
    h2 {
        line-height: 1.3;
    }
}

/* Print Styles */
@media print {
    nav, footer, .no-print {
        display: none;
    }
    
    body {
        font-size: 12pt;
        line-height: 1.5;
    }
}