The previous palette was technically correct (passed WCAG, worked in
both themes) but read like a generic Linear/Notion clone. The new
look leans into "doing things in winter with people" — warm orange
accent, beige borders, a snowflake glyph next to the wordmark, soft
shadows on cards that lift on hover.
Palette (all combos verified for ≥4.5:1 contrast in both themes):
Light: bg #f8f5ef, fg #1a1612, accent #c2410c (orange-700),
border #e5dfd3, card #ffffff
Dark: bg #14110d, fg #f0ede5, accent #fb923c (orange-400),
border #2d2820, card #1d1813
Visibility colours now live in their own variables (--vis-private,
--vis-semi, --vis-public, --vis-friends) decoupled from --accent, so
the brand hue can change without making "private" look like a
primary action.
Cards:
- radius bumped 10→12 px, padding +10%
- subtle shadow base (--shadow-sm), with --shadow-md on activity
row hover so the cards feel tactile
- article.card:hover gets a hint of accent in the border
Buttons:
- Primary button gains a 1 px lift + larger shadow on hover (only
on the primary — secondary buttons just tint to accent-soft)
- All buttons keep min-height: 44 px (WCAG 2.5.5)
Visibility badges:
- Each gains an emoji glyph via ::before (🔒/🎭/🌍/👥), so meaning
isn't conveyed by colour alone (a11y win, also faster scanning)
- Use color-mix() for backgrounds — cleaner than per-rgba tuples
Hero on the landing page:
- New .landing-hero block: bigger first paragraph (1.05 rem,
--fg colour), softer secondary line, bottom-border divider so
the section reads as a hero rather than two muted paragraphs
Decoration:
- On viewports ≥1100 px, the page background gets the icon SVG
fixed at low opacity (luminosity blend mode + a body::before
wash, so it's barely-visible — never competes with text contrast)
- Wordmark gets a small ❄ accent next to it
Theme-color meta + manifest + icon SVG fill all updated to match.
prefers-reduced-motion still disables transitions and the primary
button lift.
CSS grew from 3.65 → 6.38 KB (2.05 KB gzipped); no other bundle
changes. Typecheck clean.