/* Scale text without changing the root size used by spacing and layout.
 * Page styles use the same factor for rem/viewport sizes. Text sized in em
 * or percentages already follows its parent and must not be scaled twice.
 * Keep mobile, tablet and print typography at their original sizes.
 */
:root {
    --font-scale: 1;
}

@media screen and (min-width: 992px) {
    :root {
        --font-scale: 0.95;
    }

    h1, h2, .h1, .h2 {
        --font-scale: 0.925;
    }
}

/* Bootstrap typography defaults, before the site's own overrides. */
h1, .h1 { font-size: calc((1.375rem + 1.5vw) * var(--font-scale)); }
h2, .h2 { font-size: calc((1.325rem + 0.9vw) * var(--font-scale)); }
h3, .h3 { font-size: calc((1.3rem + 0.6vw) * var(--font-scale)); }
h4, .h4 { font-size: calc((1.275rem + 0.3vw) * var(--font-scale)); }
h5, .h5 { font-size: calc(1.25rem * var(--font-scale)); }
h6, .h6 { font-size: calc(1rem * var(--font-scale)); }
.lead { font-size: calc(1.25rem * var(--font-scale)); }

.btn { font-size: calc(var(--bs-btn-font-size) * var(--font-scale)); }
.navbar-brand { font-size: calc(var(--bs-navbar-brand-font-size) * var(--font-scale)); }
.navbar-toggler { font-size: calc(var(--bs-navbar-toggler-font-size) * var(--font-scale)); }
.dropdown-menu { font-size: calc(var(--bs-dropdown-font-size) * var(--font-scale)); }
.form-control, .form-select, .input-group-text, .accordion-button {
    font-size: calc(1rem * var(--font-scale));
}
.form-control-sm, .form-select-sm, .col-form-label-sm,
.input-group-sm > .btn, .input-group-sm > .form-control,
.input-group-sm > .form-select, .input-group-sm > .input-group-text {
    font-size: calc(0.875rem * var(--font-scale));
}
.form-control-lg, .form-select-lg, .col-form-label-lg,
.input-group-lg > .btn, .input-group-lg > .form-control,
.input-group-lg > .form-select, .input-group-lg > .input-group-text {
    font-size: calc(1.25rem * var(--font-scale));
}

.fs-1 { font-size: calc((1.375rem + 1.5vw) * var(--font-scale)) !important; }
.fs-2 { font-size: calc((1.325rem + 0.9vw) * var(--font-scale)) !important; }
.fs-3 { font-size: calc((1.3rem + 0.6vw) * var(--font-scale)) !important; }
.fs-4 { font-size: calc((1.275rem + 0.3vw) * var(--font-scale)) !important; }
.fs-5 { font-size: calc(1.25rem * var(--font-scale)) !important; }
.fs-6 { font-size: calc(1rem * var(--font-scale)) !important; }

@media (min-width: 1200px) {
    h1, .h1 { font-size: calc(2.5rem * var(--font-scale)); }
    h2, .h2 { font-size: calc(2rem * var(--font-scale)); }
    h3, .h3 { font-size: calc(1.75rem * var(--font-scale)); }
    h4, .h4 { font-size: calc(1.5rem * var(--font-scale)); }
    .fs-1 { font-size: calc(2.5rem * var(--font-scale)) !important; }
    .fs-2 { font-size: calc(2rem * var(--font-scale)) !important; }
    .fs-3 { font-size: calc(1.75rem * var(--font-scale)) !important; }
    .fs-4 { font-size: calc(1.5rem * var(--font-scale)) !important; }
}
