Cool-light theme, Google event colors, photo frame contain+lower-right clock

- Main app swapped from warm cream/sage to cool slate light theme with
  blue accent; dark-* tokens and text-white/gray overrides remapped in
  tailwind.config.js and index.css
- Calendar events now render in Google's 11-color palette (Tomato through
  Graphite), deterministically hashed from the event summary so the same
  event always gets the same color
- PhotoFrame uses object-contain (whole photo shown, letterboxed) instead
  of object-cover; clock + date moved to lower-right, same white color,
  text-shadow for readability over any photo
- EMAIL_UPLOAD.md / PHOTO_FRAME.md / iCloud sync script and systemd timer
  remain unchanged
This commit is contained in:
root
2026-04-15 02:18:43 -05:00
parent d0db8c55b3
commit 7b36551c32
5 changed files with 105 additions and 65 deletions

View File

@@ -7,44 +7,44 @@ module.exports = {
theme: {
extend: {
colors: {
// Skylight-style warm light theme.
// Cool light theme (slate-based neutrals + blue accent).
// Token names kept as "dark.*" so existing components don't need class changes.
dark: {
primary: '#faf6f0', // page bg - warm cream
primary: '#f1f5f9', // page bg - slate-100
secondary: '#ffffff', // card bg - white
tertiary: '#f5ede1', // subtle panels / compact rows
tertiary: '#e2e8f0', // subtle panels - slate-200
elevated: '#ffffff', // elevated cards
hover: '#ede2cf', // hover states
border: '#ebe0cc', // soft warm borders
'border-light': '#d9cab0',
hover: '#e2e8f0',
border: '#e2e8f0', // cool soft border
'border-light': '#cbd5e1',
},
// Sage accent (Skylight uses muted greens/peach, not blue)
// Blue accent
accent: {
DEFAULT: '#7fa894', // sage
light: '#a0c2b1',
dark: '#5e8a76',
DEFAULT: '#3b82f6', // blue-500
light: '#60a5fa',
dark: '#2563eb',
},
// Warm ink text scale
// Cool slate ink text scale
ink: {
DEFAULT: '#3a322a', // primary dark text
muted: '#6b5f51',
subtle: '#8a7d6e',
faint: '#b0a494',
DEFAULT: '#0f172a', // slate-900
muted: '#475569', // slate-600
subtle: '#64748b', // slate-500
faint: '#94a3b8', // slate-400
},
status: {
success: '#4a9d7a', // muted green
warning: '#d99a4a', // warm amber
error: '#c75b5b', // muted brick
success: '#16a34a', // green-600
warning: '#d97706', // amber-600
error: '#dc2626', // red-600
},
// Legacy imperial tokens retained so old references don't break
imperial: {
black: '#faf6f0',
dark: '#f5ede1',
medium: '#ebe0cc',
light: '#d9cab0',
red: '#c75b5b',
'red-dark': '#a84545',
'red-light': '#d97777',
black: '#f1f5f9',
dark: '#e2e8f0',
medium: '#cbd5e1',
light: '#94a3b8',
red: '#dc2626',
'red-dark': '#b91c1c',
'red-light': '#ef4444',
},
},
fontFamily: {