Festina UI

Color, type, spacing, and components used across madhurimaram.com.

Visit site

Color

Semantic palette and foundation ramps from colors_and_type.css — COSS-aligned tokens over grass/gray/lime/yellow/mauve scales.

Semantic tokens

BackgroundPage canvas
ForegroundPrimary text
MutedLabels
CardPanels
SecondaryMuted fills
PrimaryFooter band
AccentHighlights
BorderDividers
Modal scrimProject popup overlay
TokenMaps toUse
--background#FAFAFAPage canvas — never hardcode page bg
--foregroundvar(--gray-12)Primary text
--muted-foregroundvar(--gray-11)Labels, decks, meta
--card / --secondarywhite / var(--gray-2)Panels and muted fills
--primaryvar(--grass-11)Footer band, deep accent
--accentvar(--grass-9)Interactive highlights
--bordervar(--gray-5)Dividers, frame outlines
--ringvar(--lime-9)Focus rings
--footer-band-bg#F7F9F8Light footer band above dark band
--modal-scrim-bg#0A3C14Project popup overlay scrim (deep brand green)

Foundation ramps

Steps 1–12 per ramp. Prefer semantic tokens in components; use ramps for tints and domain accents.

Grass (brand green)

Gray (neutral UI)

Lime (bright highlight)

Rules

  • Semantic first — use var(--background), var(--foreground), var(--border) in reusable UI; ramps only when you need a specific step.
  • No page-local hex — extend colors_and_type.css and document here.
  • Project popup scrim — --modal-scrim-bg (#0A3C14); not neutral gray.
  • Detail pages — --detail-* aliases and color-mix(in oklab, …) for quiet rails; keep canvas on var(--background).
  • Masks and scrims — #000 / rgba scrims are allowed for overlays; not for surfaces or text.
  • Domain accents — skill pills, AI cluster, hire hero canvas may use named tokens; do not copy hex into slice CSS.