body {
            font-family: 'lato', sans-serif;
            color: #666666; /* slate-gray */
            background-color: #FAFAF8; /* ivory-white */
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }

        h1, h2, h3, h4, h5, h6 {
            font-family: 'montserrat', sans-serif;
            color: black; /* deep-green */
        }

        .font-playfair {
            font-family: 'playfair', serif;
        }

        /* Hero Typewriter Cursor */
        .typewriter-cursor {
            display: inline-block;
            width: 3px;
            background-color: white;
            animation: blink 1s infinite;
            margin-left: 4px;
        }

        @keyframes blink {
            50% { opacity: 0; }
        }

        /* Hero Overlay */
        .hero-overlay {
            background: linear-gradient(0deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.3) 50%, rgba(0,0,0,0.1) 100%);
        }

        /* Glassmorphic Card Effect */
        .glassmorphic {
            background: rgba(255, 255, 255, 0.4);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.2);
        }

        /* Scroll-triggered Animations */
        .animate-on-scroll {
            opacity: 0;
            transition: opacity 0.7s ease-out, transform 0.7s ease-out;
        }
        .animate-fade-in { transform: translateY(20px); }
        .animate-slide-in-left { transform: translateX(-20px); }
        .animate-slide-in-right { transform: translateX(20px); }
        
        .animate-visible {
            opacity: 1;
            transform: translate(0, 0);
        }

        /* Modal Base Styles */
        .modal {
            max-height: 90vh;
            overflow-y: auto;
        }

        /* Form Submission Message */
        .form-message {
            display: none;
            padding: 1rem;
            border-radius: 0.5rem;
            margin-top: 1rem;
            font-weight: 500;
        }
        .form-message.success {
            background-color: #DFF5E0; /* soft-green */
            color: #2B5F2E; /* deep-green */
        }
        .form-message.error {
            background-color: #fde2e2;
            color: #9b2c2c;
        }
        
        /* FAQ Accordion */
        .faq-item .faq-answer {
            max-height: 0;
            overflow: hidden;
            transition: max-height 0.3s ease-out, padding 0.3s ease-out;
            padding-top: 0;
            padding-bottom: 0;
        }
        .faq-item.active .faq-answer {
            max-height: 300px; /* arbitrary large value */
            padding-top: 1rem;
            padding-bottom: 1rem;
        }
        .faq-item .faq-toggle {
            transition: transform 0.3s ease-out;
        }
        .faq-item.active .faq-toggle {
            transform: rotate(45deg);
        }
