🦄 Unicorn.Land ▸ docs/plans/2026-02-25-family-dashboard-kiosk-design.md
updated 2026-02-25

Family Dashboard Kiosk Redesign — “Living Canvas”

Date: 2026-02-25 Project: family-dashboard (Vite + React 19 + Tailwind 4 + Supabase) Scope: Kiosk mode visual redesign (portrait orientation, wall display at 6-10 feet)

Design Goals

Non-goals


1. Time-of-Day Theme Engine

5 Phases

Sunrise/sunset data already fetched via Open-Meteo API (useWeather() hook).

Phase Trigger Background Gradient Card Surface Card Border Accent
Night Sunset +90min → Sunrise -60min #1a1814#201e1a rgba(255,255,255,0.04) rgba(255,255,255,0.06) #f0a030 (rich warm gold)
Dawn Sunrise -60min → Sunrise +30min #2a2018#3d2c1e rgba(255,220,180,0.05) rgba(255,200,150,0.08) #f5883a (sunrise orange)
Day Sunrise +30min → Sunset -90min #faf8f5#f2efe8 rgba(255,255,255,0.85) rgba(0,0,0,0.06) #d96a1a (burnt orange)
Golden Hour Sunset -90min → Sunset #2d2218#3a2a1a rgba(255,200,120,0.06) rgba(255,180,80,0.10) #ffb833 (bright warm gold)
Dusk Sunset → Sunset +90min #1e1a1f#252028 rgba(200,180,230,0.04) rgba(180,160,210,0.07) #e88540 (amber-orange glow)

Text colors: - Dark phases (Night/Dawn/Golden Hour/Dusk): primary rgba(255,255,255,0.90-0.95), secondary rgba(255,255,255,0.55-0.68) - Day phase: primary rgba(28,25,23,0.95), secondary rgba(28,25,23,0.60)

Implementation


2. Portrait Kiosk Layout

Replace the current 7-column equal grid with a hierarchical layout:

┌──────────────────────────────┐
│  HEADER                      │
│  Clock (shimmer) + Weather   │
├──────────────────────────────┤
│                              │
│  TODAY — Hero Card (~30%)    │
│  Full event list, weather,   │
│  expanded details, emojis    │
│                              │
├──────────────┬───────────────┤
│  Tomorrow    │  Day After    │
│  3-4 events  │  3-4 events   │
├──────────────┴───────────────┤
│  [Day4] [Day5] [Day6] [Day7]│
│  Compact: 2-3 events each   │
├──────────────┬───────────────┤
│  Rotating    │  Groceries    │
│  (Transit/   │  ────────────│
│  Horoscope/  │  Chores       │
│  Country)    │               │
├──────────────┴───────────────┤
│  STATUS BAR                  │
└──────────────────────────────┘

Grid Definition

.kiosk-grid {
  display: grid;
  grid-template-areas:
    'header'
    'today'
    'next'
    'compact'
    'utility'
    'status';
  grid-template-columns: 1fr;
  grid-template-rows: auto minmax(0, 1.4fr) minmax(0, 0.7fr) minmax(0, 0.5fr) minmax(0, 0.8fr) auto;
}

Component Breakdown


3. Clock Shimmer

The clock is the single “jewel” element — rainbow gradient shimmer on the time text, same technique as the Unicorn.Land wordmark.

Phase-aware Palettes

Phase Gradient Colors
Night Sapphire → amethyst → deep gold
Dawn Peach → rose → gold → amber
Day Coral → gold → teal → sky
Golden Hour Amber → orange → rose → gold
Dusk Lavender → mauve → amber → indigo

CSS Technique

.clock-shimmer {
  background: linear-gradient(90deg, var(--fd-shimmer-1), var(--fd-shimmer-2), var(--fd-shimmer-3), var(--fd-shimmer-4), var(--fd-shimmer-1));
  background-size: 300% 100%;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer 8s ease-in-out infinite;
}

@keyframes shimmer {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}

Shimmer palette colors (--fd-shimmer-1 through --fd-shimmer-4) are set by the time-of-day hook alongside the other theme properties. Transition between phase palettes uses the same 120s CSS transition.


4. Typography

Font: Outfit (Google Fonts, geometric sans) — shared Unicorn.Land DNA. Replaces Inter.

Type Scale

Element Size Weight
Clock clamp(4rem, 12vw, 11rem) 300 (light)
Today title (“Today”) clamp(1.6rem, 2.5vw, 2.2rem) 700
Today event summary clamp(1rem, 1.5vw, 1.4rem) 400
Today event time clamp(0.85rem, 1.2vw, 1.1rem) 400
Tomorrow/Next day title clamp(1.2rem, 1.8vw, 1.6rem) 600
Tomorrow event summary clamp(0.85rem, 1.2vw, 1.1rem) 400
Compact day title clamp(0.9rem, 1.1vw, 1.15rem) 600
Compact event clamp(0.75rem, 0.9vw, 0.95rem) 400
Weather temperature clamp(1.1rem, 1.6vw, 1.5rem) 500
Status bar clamp(0.65rem, 0.8vw, 0.85rem) 400

All sizes bumped 20-40% from current values. Today content is dramatically larger for wall readability.


5. Card Design


6. Spacing


7. What Changes vs. What Stays

New systems

Modified

Unchanged


8. Performance Budget


9. Future Enhancement: Ambient Background (Approach C)

The architecture supports layering a generative CSS gradient mesh or canvas background behind all cards. The theme engine already provides phase-aware color tokens that a background layer can consume. This is intentionally deferred to avoid Pi GPU risk, but the door is open.