/* Loaded last in <body> — fonts + sizes override Tailwind CDN */

/* ── Fonts ── */
body {
    font-family: 'Space Grotesk', sans-serif !important;
    font-weight: 700 !important;
    font-size: 16px !important;
    letter-spacing: 0.02em;
}

.font-body-md,
.font-body-lg,
.font-label-md,
.font-headline-md,
.font-headline-lg,
.font-headline-xl,
.font-headline-xl-mobile,
.text-body-md,
.text-body-lg,
.text-label-md,
.text-headline-md,
.text-headline-lg,
.text-headline-xl,
.text-headline-xl-mobile,
.font-button,
.text-button,
nav a,
#mobile-nav a,
footer a:not(.site-logo):not(.hero-display),
.legal-bar,
.legal-bar a,
#portfolio-filters button,
#portfolio-filters span,
.form-input,
textarea,
select,
.portfolio-card h3,
.portfolio-card p,
.portfolio-card span:not(.material-symbols-outlined) {
    font-family: 'Space Grotesk', sans-serif !important;
    font-weight: 700 !important;
}

.font-button,
.text-button,
nav a,
#portfolio-filters button,
#portfolio-filters span {
    letter-spacing: 0.04em;
}

/* Playfair — hero headlines + logo only */
.hero-display,
.site-logo,
h1.hero-display,
a.hero-display.site-logo,
footer .hero-display,
footer .site-logo {
    font-family: 'Playfair Display', Georgia, 'Times New Roman', serif !important;
    font-weight: 700 !important;
    font-style: normal;
    text-transform: uppercase;
    letter-spacing: -0.02em;
}

.hero-display > span,
.hero-display .neo-badge,
.hero-display .inline {
    font-family: inherit !important;
    font-weight: inherit !important;
    letter-spacing: inherit;
    font-size: inherit !important;
    line-height: inherit !important;
}

.hero-display .neo-badge {
    letter-spacing: -0.02em;
    line-height: 1.1;
    vertical-align: baseline;
    padding: 0.35em 0.65em !important;
}

/* ── Size scale ── */

/* Header logo */
header .site-logo {
    font-size: 1.375rem !important;
    line-height: 1 !important;
}

@media (min-width: 768px) {
    header .site-logo {
        font-size: 1.5rem !important;
    }
}

footer .site-logo {
    font-size: 1.75rem !important;
    line-height: 1 !important;
}

/* Hero Playfair title */
h1.hero-display {
    font-size: clamp(2.25rem, 7.5vw, 4.5rem) !important;
    line-height: 0.95 !important;
}

@media (min-width: 768px) {
    h1.hero-display {
        font-size: clamp(3.5rem, 5.5vw, 5rem) !important;
        line-height: 0.98 !important;
        letter-spacing: -0.025em;
    }
}

/* Inner page titles (Space Grotesk) */
h1.text-headline-xl-mobile,
h1.text-headline-xl,
.neo-page-title {
    font-size: clamp(2rem, 5vw, 3rem) !important;
    line-height: 1.05 !important;
}

@media (min-width: 768px) {
    h1.text-headline-xl,
    h1.md\:text-headline-xl,
    .neo-page-title {
        font-size: clamp(3rem, 4.5vw, 4.5rem) !important;
        line-height: 1.02 !important;
    }
}

/* Section headings */
h2.text-headline-xl-mobile,
h2.text-headline-lg {
    font-size: clamp(1.75rem, 4vw, 2.5rem) !important;
    line-height: 1.1 !important;
}

@media (min-width: 768px) {
    h2.md\:text-headline-lg,
    h2.text-headline-lg {
        font-size: 3rem !important;
        line-height: 1.08 !important;
    }
}

h3.font-headline-md,
h3.text-headline-md,
h4.font-headline-md {
    font-size: 1.5rem !important;
    line-height: 1.2 !important;
}

/* Body & lead */
.text-body-md,
.font-body-md {
    font-size: 1rem !important;
    line-height: 1.5 !important;
}

.text-body-lg,
.font-body-lg {
    font-size: 1.125rem !important;
    line-height: 1.55 !important;
}

.neo-lead {
    font-size: 1.125rem !important;
    line-height: 1.55 !important;
}

@media (min-width: 768px) {
    .neo-lead {
        font-size: 1.25rem !important;
        line-height: 1.5 !important;
    }
}

.text-label-md,
.font-label-md {
    font-size: 0.875rem !important;
    line-height: 1.35 !important;
}

/* Navigation */
header nav a {
    font-size: 0.9375rem !important;
}

@media (min-width: 768px) {
    header nav a {
        font-size: 1rem !important;
    }
}

#mobile-nav a {
    font-size: 1rem !important;
}

/* Buttons */
.text-button,
.font-button {
    font-size: 1rem !important;
    line-height: 1.25 !important;
}

header .btn-brutal.font-button {
    font-size: 0.875rem !important;
    padding: 0.625rem 1.25rem !important;
}

.neo-btn {
    font-size: 1rem !important;
    padding: 1rem 1.75rem !important;
}

.neo-btn-lg {
    font-size: 1rem !important;
    padding: 1.125rem 2rem !important;
}

@media (min-width: 768px) {
    .neo-btn-lg {
        font-size: 1.0625rem !important;
        padding: 1.125rem 2.25rem !important;
    }
}

/* Marquee */
.animate-marquee span {
    font-size: 1.25rem !important;
}

@media (min-width: 768px) {
    .animate-marquee span {
        font-size: 1.75rem !important;
    }
}

.legal-bar,
.legal-bar a {
    font-size: 0.875rem !important;
    line-height: 1.4 !important;
}

.step-card > div > .font-headline-xl {
    font-size: clamp(2.5rem, 4vw, 3.5rem) !important;
    line-height: 1 !important;
}

footer .font-body-md {
    font-size: 0.9375rem !important;
}

.material-symbols-outlined,
span.material-symbols-outlined,
button.material-symbols-outlined {
    font-family: 'Material Symbols Outlined' !important;
    font-weight: 400 !important;
    font-style: normal !important;
    letter-spacing: normal !important;
    text-transform: none !important;
    line-height: 1 !important;
    font-feature-settings: 'liga' !important;
    -webkit-font-feature-settings: 'liga' !important;
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24 !important;
}

.neo-arrow-icon {
    font-family: inherit !important;
    font-weight: inherit !important;
    letter-spacing: normal !important;
    text-transform: none !important;
}
