Daily themes
Typography and color shift every day within safe layout bounds.
Toggle the theme control in the nav to preview adaptation.
Visual reference for theme-responsive primitives. Toggle the daily theme in the nav to see how components adapt — or explore past themes onDaily Themes. Agent contract: design.md.
Core color tokens that adapt to light/dark mode and daily themes.
Text styles that respond to theme font pairings and weights.
The quick brown fox jumps over the lazy dog. This paragraph demonstrates the body text style with proper line height and letter spacing.
Caption text for metadata and secondary information
const theme = 'dynamic';
Muted text for less prominent content
.text-xs - Extra small text
.text-sm - Small text
.text-base - Base text
.text-lg - Large text
.text-xl - Extra large text
.text-2xl - 2X large text
.text-3xl - 3X large text
Card variants respond to [data-card-style] theme attribute.
Standard card with border and background.
Card with shadow, no border.
Strong border with an opaque background.
Solid background, no border.
Hover to see lift effect.
Agent-built card using ThemeCard.astro — primitives, tokens, opaque surface.
Typography and color shift every day within safe layout bounds.
Toggle the theme control in the nav to preview adaptation.
No glass — legibility over blur.
Gap and padding use var(--spacing-*) only.
This is the card body content with proper spacing.
Background surfaces with different elevation levels.
Default surface
Elevated surface
Recessed surface
Image styles respond to [data-image-style] and [data-image-hover] attributes.
Small labels for status, categories, or counts.
Link styles respond to [data-link-style] theme attribute.
Form elements that adapt to theme colors.
Horizontal rules for separating content.
Spacing utilities using the spacing scale.
Use these when a daily theme should be able to tune rhythm; otherwise prefer --spacing-*.
Grid and flexbox utilities.
Secondary pages (Advising, Investing, Now, Works) share rhythm via .content-page* inlayout.css. Prefer these over per-page section CSS.
.content-page__intro
Lead paragraphs use prose sizing. Pair the shell with .container-narrow for reading width.
.content-page__lede — muted supporting copy.
.content-page__list--bullets.content-page__list--linkedUse var(--duration-*) and var(--ease-*) — never hardcode0.3s or raw cubic-bezier(...) in new CSS.
Hover the tracks (desktop) to compare durations with --ease-standard.
Keyboard focus uses --focus-ring* tokens. Tab through the controls below — do not hardcodeoutline: 2px solid ….
Daily themes must keep body, link, muted, and nav text at WCAG AA (4.5:1) against page, card, and nav backgrounds. Generator gate: scripts/lib/contrast.mjs · CI: npm run audit-contrast:check.
Body copy on page background
Body copy on card surface
Muted supporting text
Navigation label
Live data-* attributes from the active daily theme. Navigation is framework-controlled and is not theme-variable. Browse the archive on Daily Themes.
Checking...
—
—
—
—
—
—