PedanticDesign System · aCo

Foundations

The tokens and rules underneath every Pedantic component. If a value is not on this page, it is not part of the system.

Color

Two brand anchors — aCo Navy and Cream — plus a raspberry accent family for actions. Buttons are never blue and links are never styled as plain blue underlines; the accent carries interactive meaning. Every text/background pairing in the system is measured against WCAG 2.2 AA (4.5:1 for text, 3:1 for large text and UI indicators) and the measured ratios are published with each token.

Navy --pds-navy · #0F2A48
Brand primary. Headings, header, footer.
Contrast — White text on Navy: 14.5:1 · Navy on white: 14.5:1
Navy Deep --pds-navy-deep · #0A1E35
Header and footer gradient end, code blocks.
Contrast — White text on Navy Deep: 16.9:1
Cream --pds-cream · #F7F3EE
Page background tint.
Contrast — Navy text on Cream: 13.2:1
Paper --pds-paper · #FFFFFF
Content surface.
Contrast — Navy text on Paper: 14.5:1
Slate --pds-slate · #45586C
Secondary text, help text.
Contrast — Slate on white: 7.3:1
Raspberry --pds-accent · #9D2C54
Primary actions and links.
Contrast — White text on Raspberry: 7.2:1
Raspberry Dark --pds-accent-dark · #7E2143
Primary action hover state.
Contrast — White text on Raspberry Dark: 9.6:1
Raspberry Pale --pds-accent-pale · #F3D9E2
Secondary action fill, selected states.
Contrast — Navy text on Raspberry Pale: 11.0:1
Success --pds-success · #1B6B4A
Success states and badges.
Contrast — White text on Success: 6.5:1
Warning --pds-warning-bg · #F6C453
Warning badges and callouts. Always paired with dark text.
Contrast — Warning Ink (#3D2E00) on Warning: 8.1:1
Danger --pds-danger · #B3261E
Destructive actions, error text, required marks.
Contrast — White text on Danger: 6.5:1 · Danger on white: 6.5:1
Border --pds-border · #C9D2DC
Decorative borders and dividers only — never text.
Contrast — Not used for text

Typography

One family, seven sizes. The stack is "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif — native on every platform, no webfont download, no layout shift. Body text is 17px with a 1.55 line height; paragraphs cap at roughly 44rem so lines stay readable. Code uses Consolas, "SF Mono", "Liberation Mono", monospace.

Type scale
RoleTokenSizeWeightSample
Display / H1--pds-text-3xl39px700Pedantic
H2--pds-text-2xl31px700Pedantic
H3--pds-text-xl25px700Pedantic
Large--pds-text-lg20px400–700Pedantic
Body--pds-text-md17px400Pedantic
Small--pds-text-sm15px400–600Pedantic
Caption--pds-text-xs13px600–700Pedantic

Spacing

A 4px base scale. Components take their padding and gaps from these tokens only — no one-off values.

Spacing scale
TokenValueTypical use
--pds-space-14pxTight gaps: label to help text
--pds-space-28pxInline gaps: icon to label, help text to field
--pds-space-312pxCompact padding: table cells, nav links
--pds-space-416pxDefault padding: cards, page gutters
--pds-space-624pxField spacing, card padding
--pds-space-832pxSection padding
--pds-space-1248pxSpace above section headings
--pds-space-1664pxPage-level separation: content to footer

Corner radius follows the same discipline: --pds-radius (12px) for cards, fields, and panels; --pds-radius-pill (999px) for buttons, nav links, search inputs, and badges.

Accessibility principles

Accessibility is aCo’s core discipline, and Pedantic encodes it as rules, not aspirations:

  1. Semantics first. Landmarks, headings in order, lists for navigation, real <button> and <a> elements. ARIA only fills gaps HTML can’t — and documented ARIA is tested ARIA.
  2. Everything is reachable by keyboard. Logical tab order, a skip link on every page, and a visible focus ring — raspberry on light surfaces, amber on navy — that is never removed.
  3. Contrast is measured, not eyeballed. Text pairings meet 4.5:1 minimum; the published ratios on this page are the contract.
  4. Labels are visible and permanent. Every field has a visible label above it and help text under the label. Placeholder text is never a label.
  5. State is never color alone. Errors, required fields, and current pages pair color with text, symbols, or aria-current.
  6. Motion respects the reader. Transitions are short, and prefers-reduced-motion turns them off.
  7. Targets are generous. Interactive elements are at least 40px tall; primary actions are larger.