/* Typography System */

:root {
    --font-heading: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    --font-body: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

    /* Typographic scale using clamp for fluid responsiveness */
    --fs-display: clamp(2.125rem, 4vw + 1rem, 4.5rem);     /* Hero H1: 34px - 72px */
    --fs-page-title: clamp(2rem, 3vw + 1rem, 3.5rem);       /* Page H1: 32px - 56px */
    --fs-section-title: clamp(1.625rem, 2vw + 1rem, 2.5rem); /* Section H2: 26px - 40px */
    --fs-h3: clamp(1.25rem, 1vw + 0.8rem, 1.75rem);         /* H3: 20px - 28px */
    --fs-card-title: clamp(1.125rem, 0.5vw + 0.9rem, 1.375rem); /* Card title: 18px - 22px */
    --fs-body-lg: clamp(1.0625rem, 0.2vw + 0.95rem, 1.1875rem); /* Intro/large body: 17px - 19px */
    --fs-body: clamp(1rem, 0.15vw + 0.9rem, 1.0625rem);      /* Body: 16px - 17px */
    --fs-body-sm: 0.875rem;                                 /* Small body / explanations: 14px */
    --fs-meta: 0.8125rem;                                   /* Meta info / labels: 13px */
    --fs-caption: 0.75rem;                                  /* Micro-text / uppercase labels: 12px */

    /* Line Heights */
    --lh-display: 1.05;
    --lh-heading: 1.2;
    --lh-card: 1.3;
    --lh-body: 1.7;
    --lh-body-sm: 1.6;

    /* Letter Spacings */
    --ls-display: -0.03em;
    --ls-heading: -0.02em;
    --ls-card: -0.01em;
    --ls-body: 0em;
    --ls-caps: 0.12em;

    /* Reading widths */
    --reading-width-max: 780px;
}

/* Base resets & styles targeting tags on public site */
body {
    font-family: var(--font-body);
    font-size: var(--fs-body);
    line-height: var(--lh-body);
    letter-spacing: var(--ls-body);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 700;
    color: var(--color-text);
    margin-bottom: 0.5em;
}

h1 {
    font-size: var(--fs-page-title);
    line-height: var(--lh-heading);
    letter-spacing: var(--ls-display);
}

h2 {
    font-size: var(--fs-section-title);
    line-height: var(--lh-heading);
    letter-spacing: var(--ls-heading);
}

h3 {
    font-size: var(--fs-h3);
    line-height: var(--lh-heading);
    letter-spacing: var(--ls-heading);
}

h4 {
    font-size: var(--fs-card-title);
    line-height: var(--lh-card);
    letter-spacing: var(--ls-card);
}

p {
    margin-bottom: 1.25rem;
    line-height: var(--lh-body);
}

/* Helper & Semantic Typography Utility Classes */
.display-title {
    font-size: var(--fs-display) !important;
    line-height: var(--lh-display) !important;
    letter-spacing: var(--ls-display) !important;
    font-weight: 800;
    text-transform: uppercase;
}

.page-title {
    font-size: var(--fs-page-title) !important;
    line-height: var(--lh-heading) !important;
    letter-spacing: var(--ls-display) !important;
    font-weight: 800;
    text-transform: uppercase;
}

.section-title {
    font-size: var(--fs-section-title) !important;
    line-height: var(--lh-heading) !important;
    letter-spacing: var(--ls-heading) !important;
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 2rem !important;
}

.section-subtitle, .section-kicker {
    font-size: var(--fs-caption) !important;
    line-height: 1.2 !important;
    letter-spacing: var(--ls-caps) !important;
    font-weight: 600 !important;
    text-transform: uppercase !important;
    color: var(--color-primary) !important;
    margin-bottom: 0.75rem !important;
}

.card-title {
    font-size: var(--fs-card-title) !important;
    line-height: var(--lh-card) !important;
    font-weight: 700 !important;
    margin-bottom: 0.5rem !important;
    overflow-wrap: break-word;
    word-break: break-word;
}

.body-large {
    font-size: var(--fs-body-lg) !important;
    line-height: var(--lh-body) !important;
}

.body-copy, .body-normal {
    font-size: var(--fs-body) !important;
    line-height: var(--lh-body) !important;
}

.body-small {
    font-size: var(--fs-body-sm) !important;
    line-height: var(--lh-body-sm) !important;
    color: var(--color-text-muted) !important;
}

.meta-text {
    font-size: var(--fs-meta) !important;
    line-height: 1.4 !important;
    color: var(--color-text-passive) !important;
}

.caption-text {
    font-size: var(--fs-caption) !important;
    line-height: 1.4 !important;
    letter-spacing: var(--ls-caps);
    text-transform: uppercase;
}

/* Button & Link Typography */
.btn, button, .button {
    font-family: var(--font-heading);
}

.hero-buttons .btn {
    font-size: var(--fs-body-sm) !important;
    font-weight: 700 !important;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

/* Breadcrumb Typography */
.breadcrumb, .breadcrumb-item, .breadcrumbs {
    font-size: var(--fs-body-sm) !important;
    font-weight: 500;
}

/* Reading content wrapper for readability */
.reading-content {
    max-width: var(--reading-width-max) !important;
    margin-left: auto !important;
    margin-right: auto !important;
    line-height: var(--lh-body) !important;
}

.reading-content p {
    font-size: var(--fs-body) !important;
    line-height: var(--lh-body) !important;
    margin-bottom: 1.5rem !important;
    color: var(--color-text-muted) !important;
}

.reading-content h1, .reading-content h2, .reading-content h3, .reading-content h4 {
    color: var(--color-text) !important;
    margin-top: 2.25rem !important;
    margin-bottom: 1rem !important;
}

.reading-content strong, .reading-content b {
    color: #ffffff !important;
}

.reading-content ul, .reading-content ol {
    margin-bottom: 1.5rem !important;
    padding-left: 1.5rem !important;
}

.reading-content li {
    font-size: var(--fs-body) !important;
    line-height: var(--lh-body) !important;
    margin-bottom: 0.6rem !important;
    color: var(--color-text-muted) !important;
}

/* Ensure headings/cards breaks properly without overflow */
.card, .service-card, .project-card, .blog-card {
    overflow-wrap: break-word;
    word-wrap: break-word;
    hyphens: auto;
}

/* Forms styling */
label, .form-label {
    font-size: var(--fs-body-sm) !important;
    font-weight: 500 !important;
    color: var(--color-text-muted);
    margin-bottom: 0.35rem;
}

input, textarea, select, .form-control {
    font-family: var(--font-body);
    font-size: var(--fs-body) !important;
}

.invalid-feedback, .text-danger {
    font-size: var(--fs-body-sm) !important;
}

/* Card, Project, Service and Blog Specific Overrides */
.service-card .service-title,
.project-card .project-title,
.blog-card h2,
.blog-card h2 a,
.project-title,
.service-title {
    font-size: var(--fs-card-title) !important;
    line-height: var(--lh-card) !important;
}

.service-card .service-desc,
.project-card .project-desc,
.blog-card p,
.project-desc,
.service-desc {
    font-size: var(--fs-body-sm) !important;
    line-height: var(--lh-body-sm) !important;
}

/* Dense list scaling preventions */
.projects-grid--featured .project-title {
    font-size: clamp(1.05rem, 0.3vw + 0.8rem, 1.15rem) !important;
}

/* Vehicle Brand Catalog Typography system overrides */
.brand-accordion-card .brand-card-title {
    font-size: var(--fs-card-title) !important;
}

.brand-accordion-card .model-count,
.brand-accordion-card .model-item,
.brand-accordion-card .model-years,
.vehicle-catalog-page .letter-btn {
    font-size: var(--fs-body-sm) !important;
}

/* Rich content wrapper adjustments for layout compliance */
.rich-content {
    font-size: var(--fs-body) !important;
    line-height: var(--lh-body) !important;
}

.rich-content h2 {
    font-size: var(--fs-h3) !important;
}

.rich-content h3 {
    font-size: var(--fs-card-title) !important;
}

.rich-content p, .rich-content li {
    font-size: var(--fs-body) !important;
    line-height: var(--lh-body) !important;
}
