Skip to content

Base

Source: tokens/base.css.

Patterson Companies — Base element defaults & helpers Applied globally once tokens are loaded.

This stylesheet declares no custom properties or @font-face rules of its own — it sets base element styles that consume tokens from the other files. See the full source below.

Full source — `base.css`
/* ============================================================
Patterson Companies — Base element defaults & helpers
Applied globally once tokens are loaded.
============================================================ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
margin: 0;
font-family: var(--font-sans);
font-size: var(--fs-body);
line-height: var(--lh-body);
color: var(--text-body);
background: var(--surface-page);
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, h5, h6 {
margin: 0 0 0.5em;
font-family: var(--font-display);
/* Production sets EVERY heading level to navy — headings are never gray
or near-black on a Patterson surface. Verified in theme-styles.min.css. */
color: var(--text-strong);
line-height: var(--lh-heading);
font-weight: var(--fw-bold);
/* Production declares no letter-spacing anywhere. */
letter-spacing: var(--ls-normal);
text-wrap: balance;
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 { font-size: var(--fs-h4); }
h5 { font-size: var(--fs-h5); }
p { margin: 0 0 1em; text-wrap: pretty; }
a {
color: var(--text-link);
text-decoration: none;
transition: color var(--dur-fast) var(--ease-standard);
}
a:hover { color: var(--text-link-hover); }
strong, b { font-weight: var(--fw-bold); }
/* --- Eyebrow / overline -----------------------------------
PRODUCTION default: navy, 14px, weight 500, sentence case, NO tracking.
"Trusted expertise" / "Unrivaled support" are used verbatim as eyebrows
on the live sites. Use .pat-eyebrow--accent for the uppercase sky
treatment, which is this design system's own convention. */
.pat-eyebrow {
font-size: var(--pt-eyebrow-size);
line-height: var(--pt-eyebrow-lh);
font-weight: var(--pt-eyebrow-weight);
letter-spacing: var(--ls-normal);
text-transform: none;
color: var(--pat-navy);
}
.pat-eyebrow--accent {
font-size: var(--fs-xs);
font-weight: var(--fw-bold);
letter-spacing: var(--ls-caps);
text-transform: uppercase;
color: var(--pat-sky);
}
/* --- Caption (production) -------------------------------- */
.pat-caption {
font-size: var(--pt-caption-size);
line-height: var(--pt-caption-lh);
font-weight: var(--pt-caption-weight);
color: var(--pat-navy);
}
/* --- Production type scale (opt-in) ----------------------
Add class="pat-production" to a subtree to render the EXACT live
Patterson scale: 18px/24px body, 800 at h1/h2, 400 from h3 down,
with the real mobile→desktop step. Use when matching the live sites
rather than this system's fluid scale. */
.pat-production { font-size: var(--pt-body-size); line-height: var(--pt-body-lh); }
.pat-production h1 { font-size: var(--pt-h1-size); line-height: var(--pt-h1-lh); font-weight: var(--pt-h1-weight); }
.pat-production h2 { font-size: var(--pt-h2-size); line-height: var(--pt-h2-lh); font-weight: var(--pt-h2-weight); }
.pat-production h3 { font-size: var(--pt-h3-size); line-height: var(--pt-h3-lh); font-weight: var(--pt-h3-weight); }
.pat-production h4 { font-size: var(--pt-h4-size); line-height: var(--pt-h4-lh); font-weight: var(--pt-h4-weight); }
@media (min-width: 1024px) {
.pat-production h1 { font-size: var(--pt-h1-size-lg); line-height: var(--pt-h1-lh-lg); }
.pat-production h2 { font-size: var(--pt-h2-size-lg); line-height: var(--pt-h2-lh-lg); }
.pat-production h3 { font-size: var(--pt-h3-size-lg); line-height: var(--pt-h3-lh-lg); }
}
/* --- Utility: readable container ------------------------- */
.pat-container {
width: 100%;
max-width: var(--container-max);
margin-inline: auto;
padding-inline: var(--gutter);
}
:focus-visible {
outline: none;
box-shadow: var(--ring-focus);
border-radius: var(--radius-sm);
}