/* Shared font system. Layout, font sizes and spacing remain template-owned. */
:root {
    --vending-font-body: 'Exo 2', Arial, sans-serif;
    --vending-font-heading: 'Chakra Petch', 'Exo 2', Arial, sans-serif;
    --vending-font-code: Consolas, Monaco, monospace;
}

/* Important is intentional: legacy templates declare their own inline fonts.
   Exclude icon fonts and the WordPress admin toolbar from text overrides. */
body {
    font-family: var(--vending-font-body) !important;
}

body :where(div, section, article, header, footer, main, nav, aside,
    p, span, a, li, dt, dd, th, td, caption, label, button, input, select,
    textarea, option, summary, figcaption, blockquote, cite, small,
    strong, b, em, i, time, legend, address):not(:where(
        .fa, .fas, .far, .fab, .fal, .fad, .fat, [class*='fa-'],
        [class*='icon'], #wpadminbar, #wpadminbar *)) {
    font-family: var(--vending-font-body) !important;
}

body :is(h1, h2, h3, h4, h5, h6) {
    font-family: var(--vending-font-heading) !important;
}

body :is(h1, h2, h3, h4, h5, h6) :where(a, span, strong, b, em, small):not(:where(
    .fa, .fas, .far, .fab, .fal, .fad, .fat, [class*='fa-'], [class*='icon'])) {
    font-family: var(--vending-font-heading) !important;
}

body :is(pre, code, kbd, samp),
body :is(pre, code, kbd, samp) :where(span, a, b, strong, em, i) {
    font-family: var(--vending-font-code) !important;
}
