Colors
Dark-mode-only color system built from CSS variables — no theme switching. The surface classes are the sanctioned exception: .surface-paper / .surface-white are a light plane inside the dark site, and .surface-ink a dark island within one. They re-point these same tokens for a subtree, so components adapt without any component-specific colours. Uses the production blue accent scale.
Accent
Primary accent family — 6 tokens cover everything from primary buttons to subtle background tints and strong glows.
--accentPrimary accent color
--accent-hoverLighter on hover
--accent-deepThe dark end of the accent, and the one to reach for behind white text — 5.83:1, so it clears AA where --accent does not. Used for the service card title highlight and the hover CTA badge, plus hero and avatar gradients.
--accent-subtleSoft background tint (~10%)
--accent-softMid borders, hover wash (~20%)
--accent-strongStrong borders, glows, shadows (~40%)
Backgrounds
Page background plus the SectionFrame blend color.
--backgroundPage background
--surface-sectionThe panel a SectionFrame paints behind its content — only a whisper above the page background, so a framed section reads as a faint plane rather than a lighter slab. Translucent, so it composites onto any ground.
--surface-ink-panelThe opaque dark plane cards and panels sit on. Backs the CategoryFilters scroll fade, and — on a light ground — the card fills in .surface-paper .card-service / .card-carousel-item and the ink panel in .section-frame-bg-ink, whose washes end on transparent and would otherwise let the cream tint them. Equals --surface-section composited over --background at :root and under .surface-ink; deliberately diverges under .surface-paper.
Surfaces
Elevated surfaces for cards, inputs, popovers, and the always-dark ink surface used by the CTA button.
--surfaceCards, inputs, placeholders
--surface-elevatedElevated cards, buttons, popovers
--surface-hoverHover states
--surface-cardFlat card plane (~#0f0f0f) — testimonial and ux-audit panels. The non-gradient counterpart to --gradient-card-surface. Opaque on purpose: a translucent version let decorative page glows bleed through and tint the larger cards.
--surface-inkCTA button fill. Note: the token --surface-ink is unrelated to the .surface-ink class, which restores dark tokens inside a light section.
--surface-ink-hoverCTA hover state
Text
Text hierarchy from primary to muted.
--foregroundPrimary text
--foreground-secondaryBody copy, hero subtitles, descriptions (72%)
--text-tertiaryTertiary text, metadata (40%)
--text-mutedMuted text and placeholders (30%)
Borders
Border colors for dividers and container outlines.
--borderDefault borders
--border-subtleSubtle borders
Decorative
Status colors for success (green), errors (red), and ratings (gold).
--greenSuccess/available
--goldStars/ratings
--redErrors/danger
--orangeAttention/availability
Foreground opacity
White overlays at low opacity used for faint tints, section-frame lines, and hover highlights.
--foreground-subtleFaint overlays and illustration fills (~5%). Frame hairlines use --border-subtle, not this.
--foreground-overlayHover highlights and the .spotlight-arrow fill (~10%). Carousel arrows use a solid --background so they read on whatever they overlay.
Usage
Tailwind Classes
bg-surface, bg-surface-elevated, bg-accent, bg-accent-hovertext-foreground, text-text-tertiary, text-accentborder-border, border-border-subtle, border-accentCSS Variables
color: var(--foreground);background: var(--accent-subtle);box-shadow: 0 0 30px var(--accent-strong);