Style Guide.
The visual vocabulary of TodoWeekend. Tokens, typography, and UI primitives — defined once, used everywhere. If a page diverges from this guide, the page is wrong.
Colors
12 tokens, defined in globals.css under @theme inline. All text pairings are WCAG AA verified.
Typography
Three type families. Outfit at 300 weight is the default body text with 1.7 line height. Headings drop to -0.02em tracking. Instrument Serif italic is reserved for display accents. DM Mono powers caps-style labels and tags.
Spacing
No formalized scale — spacing is set contextually with px values. Common increments below. Horizontal page padding is 3vw.
Border radii
Shadows
0 1px 4px rgba(0,0,0,0.25)0 4px 12px rgba(0,0,0,0.08)0 10px 40px rgba(0,0,0,0.08)Hairlines
Subtle 0.5px borders that separate without weighing down. Use --color-border-strong for UI edges, --color-border for soft dividers.
Motion
Durations cluster around 150–200ms for hovers and 2s loops for ambient pulses. Everything respects prefers-reduced-motion.
- 150–200ms ease: hover transitions on links, tags, buttons
- 180ms ease: carousel arrows, filter chips, underlines
- 2s ease-in-out infinite:
.live-dotpulse & map marker ping
Breakpoints
No named breakpoint tokens — values are hard-coded in media queries. Tailwind's md: prefix maps to 768px.
- 700px — Card grid reflow
- 768px — Nav desktop threshold (md)
- 900px — Hero stats reflow
- 960px — Event hero grid collapse