/* Font Family Definitions */

/* Google Fonts Integration */
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&family=Roboto:wght@300;400;500;700&family=Inter:wght@300;400;500;600;700&family=Playfair+Display:wght@400;500;600;700&family=Montserrat:wght@300;400;500;600;700&family=Open+Sans:wght@300;400;500;600;700&family=Lato:wght@300;400;700&family=Nunito:wght@300;400;500;600;700&family=Raleway:wght@300;400;500;600;700&family=Source+Sans+Pro:wght@300;400;600;700&family=Bebas+Neue&family=Oswald:wght@300;400;500;600;700&family=Anton&family=Fjalla+One&family=Ubuntu:wght@300;400;500;700&display=swap');

/* Font Class Definitions */

/* Body/Content Fonts */
.font-poppins {
    --font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-roboto {
    --font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-inter {
    --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-playfair {
    --font-family: 'Playfair Display', Georgia, 'Times New Roman', serif;
    font-family: var(--font-family);
}

.font-montserrat {
    --font-family: 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-opensans {
    --font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-lato {
    --font-family: 'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-nunito {
    --font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-raleway {
    --font-family: 'Raleway', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

.font-sourcesans {
    --font-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--font-family);
}

/* Heading Fonts */
.heading-bebas, .heading-bebas h1, .heading-bebas h2, .heading-bebas h3, .heading-bebas h4, .heading-bebas h5, .heading-bebas h6 {
    --heading-font-family: 'Bebas Neue', 'Arial Black', sans-serif;
    font-family: var(--heading-font-family);
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.heading-oswald, .heading-oswald h1, .heading-oswald h2, .heading-oswald h3, .heading-oswald h4, .heading-oswald h5, .heading-oswald h6 {
    --heading-font-family: 'Oswald', 'Arial Black', sans-serif;
    font-family: var(--heading-font-family);
    font-weight: 500;
}

.heading-anton, .heading-anton h1, .heading-anton h2, .heading-anton h3, .heading-anton h4, .heading-anton h5, .heading-anton h6 {
    --heading-font-family: 'Anton', 'Arial Black', sans-serif;
    font-family: var(--heading-font-family);
    font-weight: 400;
    text-transform: uppercase;
}

.heading-fjalla, .heading-fjalla h1, .heading-fjalla h2, .heading-fjalla h3, .heading-fjalla h4, .heading-fjalla h5, .heading-fjalla h6 {
    --heading-font-family: 'Fjalla One', 'Arial Black', sans-serif;
    font-family: var(--heading-font-family);
    font-weight: 400;
    text-transform: uppercase;
}

.heading-ubuntu, .heading-ubuntu h1, .heading-ubuntu h2, .heading-ubuntu h3, .heading-ubuntu h4, .heading-ubuntu h5, .heading-ubuntu h6 {
    --heading-font-family: 'Ubuntu', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-family: var(--heading-font-family);
    font-weight: 500;
}

/* Font Weight Utilities */
.fw-light { font-weight: 300; }
.fw-normal { font-weight: 400; }
.fw-medium { font-weight: 500; }
.fw-semibold { font-weight: 600; }
.fw-bold { font-weight: 700; }

/* Text Transform Utilities */
.text-uppercase { text-transform: uppercase; }
.text-lowercase { text-transform: lowercase; }
.text-capitalize { text-transform: capitalize; }

/* Letter Spacing Utilities */
.letter-spacing-tight { letter-spacing: -0.025em; }
.letter-spacing-normal { letter-spacing: 0; }
.letter-spacing-wide { letter-spacing: 0.025em; }
.letter-spacing-wider { letter-spacing: 0.05em; }
.letter-spacing-widest { letter-spacing: 0.1em; }

/* Line Height Utilities */
.leading-none { line-height: 1; }
.leading-tight { line-height: 1.25; }
.leading-snug { line-height: 1.375; }
.leading-normal { line-height: 1.5; }
.leading-relaxed { line-height: 1.625; }
.leading-loose { line-height: 2; }

/* Font Size Responsive Utilities */
.text-responsive {
    font-size: clamp(1rem, 2.5vw, 1.5rem);
}

.text-responsive-lg {
    font-size: clamp(1.25rem, 3vw, 2rem);
}

.text-responsive-xl {
    font-size: clamp(1.5rem, 4vw, 3rem);
}

/* Text Effects */
.text-gradient {
    background: linear-gradient(135deg, var(--primary-color), var(--accent-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    display: inline-block;
}

.text-shadow-sm {
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

.text-shadow {
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.text-shadow-lg {
    text-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
}

/* Typography Scale */
.text-xs { font-size: 0.75rem; line-height: 1rem; }
.text-sm { font-size: 0.875rem; line-height: 1.25rem; }
.text-base { font-size: 1rem; line-height: 1.5rem; }
.text-lg { font-size: 1.125rem; line-height: 1.75rem; }
.text-xl { font-size: 1.25rem; line-height: 1.75rem; }
.text-2xl { font-size: 1.5rem; line-height: 2rem; }
.text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
.text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
.text-5xl { font-size: 3rem; line-height: 1; }
.text-6xl { font-size: 3.75rem; line-height: 1; }
.text-7xl { font-size: 4.5rem; line-height: 1; }
.text-8xl { font-size: 6rem; line-height: 1; }
.text-9xl { font-size: 8rem; line-height: 1; }

/* Accessibility Enhancements */
.focus-visible:focus {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
}

/* High contrast mode support */
@media (prefers-contrast: high) {
    .text-gradient {
        background: none;
        -webkit-text-fill-color: initial;
        color: var(--primary-color);
    }
    
    .text-shadow,
    .text-shadow-sm,
    .text-shadow-lg {
        text-shadow: none;
    }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* Print styles for fonts */
@media print {
    body {
        font-family: 'Times New Roman', serif;
        font-size: 12pt;
        line-height: 1.6;
    }
    
    h1, h2, h3, h4, h5, h6 {
        font-family: 'Arial', sans-serif;
        page-break-after: avoid;
    }
    
    .text-gradient {
        background: none;
        -webkit-text-fill-color: initial;
        color: black;
    }
}

/* Variable font support */
@supports (font-variation-settings: normal) {
    .font-inter {
        font-family: 'Inter var', var(--font-family);
        font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
    }
}

/* Font loading optimization */
@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: local('Poppins Regular'), local('Poppins-Regular'), url('https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecg.woff2') format('woff2');
}

@font-face {
    font-family: 'Poppins';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: local('Poppins SemiBold'), local('Poppins-SemiBold'), url('https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2') format('woff2');
}

/* Dark mode font adjustments */
@media (prefers-color-scheme: dark) {
    body {
        font-weight: 400;
    }
    
    .font-playfair {
        font-weight: 500;
    }
}

/* Mobile font optimizations */
@media (max-width: 768px) {
    body {
        font-size: 16px; /* Prevent zoom on iOS */
    }
    
    .heading-bebas h1,
    .heading-anton h1 {
        letter-spacing: 0.5px;
    }
}