Contour · Design System v1.0.0 ← Back to drewbmeyer.com

Contour / Overview

Design with the terrain,
not against it.

Contour is the design system behind drewbmeyer.com — named for the topographic lines that open the site. It packages the portfolio's tokens, components and interaction patterns into one documented, accessible, dual-theme language. Every specimen on these pages is the real component, rendered live from the same stylesheet the site ships.

Principles#

  1. One source of truth. The production stylesheet is the system. Documentation renders components live — if the docs and the site ever disagree, one of them is broken and you'll see it immediately.
  2. Dark-first, dual-mode always. Every token ships a dark and a light value, and every component is designed in both from the start. The toggle in the top bar re-themes this entire documentation — try it.
  3. Accessible by default. WCAG 2.2 AA is the floor, not the ceiling: verified contrast on every published pairing, a visible focus style everywhere, focus-trapped dialogs, and a reduced-motion fallback for every animation.
  4. Motion with restraint. One easing curve, transform-and-opacity only, and animation that supports reading order instead of decorating it. If prefers-reduced-motion is set, the experience is calm — never empty.
  5. Craft in the details. Museum placards, contact shadows, odometer numerals, magnetic buttons — the system exists so the expressive details can be consistent instead of chaotic.

What's inside#

Getting started#

Contour is a zero-build system: one stylesheet, semantic HTML, and small vanilla-JS behaviors. Consuming it takes three steps.

1. Link the stylesheet

<link rel="stylesheet" href="/css/style.css" />

2. Set a theme before first paint

Tokens are declared on [data-theme="dark"] and [data-theme="light"]. Boot the attribute from storage (or the OS preference) in the document head so there is no flash of the wrong theme.

<script>
  (function () {
    try {
      var t = localStorage.getItem('dbm-theme');
      if (!t) t = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark';
      document.documentElement.setAttribute('data-theme', t);
    } catch (e) {}
  })();
</script>

3. Use documented markup

Each component page ships the exact HTML contract — classes, ARIA and states. Because tokens cascade from data-theme, any subtree can be re-themed independently, which is exactly how the per-specimen theme switches on these pages work.

Scope note. Contour documents the system as consumed by drewbmeyer.com. It is intentionally not published as a package — it's a working system and a design-engineering artifact, not a framework.

Status & versioning#

Contour versions with intent: breaking token or markup-contract changes bump the major, new components bump the minor.

VersionDateChanges
1.0.0 July 2026 Initial release — foundations with published contrast ratios, 15 components, 7 patterns, dual themes, WCAG 2.2 AA verification via axe-core.
© 2026 Drew B Meyer Contour v1.0.0 Built from css/style.css — the docs render the production system live