fix(design-system): unblock body hearth gradient + boost intensity

CDP diagnostic on deckhearth.com/dashboard after PR #100 found that
the body gradient was being applied but completely invisible. Root
cause: Layout.js line 610's root flex container had

  style={{ backgroundColor: 'var(--bg-primary)' }}

That paints an opaque warm-white over the entire viewport, directly
on top of the body's hearth gradient. The gradient was painting and
the body element confirmed it via getComputedStyle, but no pixel of
it reached the screen because the 1118x984 Layout root sat opaquely
above it.

Fix part 1: remove the backgroundColor from Layout's root <div>. The
desktop sidebar (lines 738-744) and the mobile drawer (lines 630-640)
already have their own translucent glass backgrounds via
var(--glass-surface-mid) + backdrop-filter, so they don't depend on
the parent. The main content area (line 822) is intentionally
transparent. Removing the opaque parent lets the body gradient show
through everything except the explicit glass surfaces.

Fix part 2: boost gradient intensity. The 8%/6% alpha radials from
PR #100 are technically there but visually undetectable. Bumped to:
  - 28% ember at bottom-left (the seat of the fire)
  - 18% ember at bottom-right (keeps wide displays from feeling
    lopsided)
  - 16% gold top-right (smoke catching last light)
And added a third linear-gradient color stop so the warmth ramps
visibly from top to bottom rather than being a flat 2-step.

Together these make the "fireplace warmth" actually perceptible,
which gives every glass surface a non-uniform substrate to blur —
finally fulfilling the original "Liquid Glass over hearth" brief
that PRs #97/#98/#99/#100 each got partway toward.

Lint + vitest + build all green locally.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Randall Stillwell 2026-06-04 09:34:46 -05:00
parent 6d24db1a80
commit 70506b1f13
2 changed files with 34 additions and 16 deletions

View file

@ -607,7 +607,7 @@ export default function Layout({ children, user = null, showSearch = false }) {
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
return (
<div className="flex h-screen" style={{ backgroundColor: 'var(--bg-primary)' }}>
<div className="flex h-screen">
{/* Mobile Navigation - Bottom bar for mobile */}
<MobileNavigation
onMenuOpen={() => setIsMobileMenuOpen(true)}

View file

@ -202,21 +202,34 @@ body {
body {
background-color: var(--bg-primary-light);
background-image:
/* Bright ember pool, bottom-left — the "seat of the fire". */
radial-gradient(
ellipse 80% 60% at 15% 100%,
rgba(255, 128, 0, 0.08) 0%,
rgba(255, 128, 0, 0.02) 40%,
transparent 70%
ellipse 70% 50% at 12% 105%,
rgba(255, 100, 0, 0.28) 0%,
rgba(255, 128, 0, 0.14) 30%,
rgba(255, 171, 64, 0.04) 60%,
transparent 80%
),
/* Secondary ember, bottom-right keeps the warmth from feeling
lopsided on wide displays. */
radial-gradient(
ellipse 60% 50% at 85% 0%,
rgba(255, 171, 64, 0.06) 0%,
transparent 60%
ellipse 55% 45% at 95% 100%,
rgba(255, 140, 30, 0.18) 0%,
rgba(255, 171, 64, 0.05) 50%,
transparent 75%
),
/* Soft gold glow, top-right — the "smoke catching last light". */
radial-gradient(
ellipse 55% 45% at 90% -5%,
rgba(255, 171, 64, 0.16) 0%,
transparent 65%
),
/* Base wash: cooler at top, warmer at bottom for fireplace ambient. */
linear-gradient(
180deg,
rgba(254, 252, 248, 1) 0%,
rgba(252, 246, 235, 1) 100%
rgba(252, 244, 230, 1) 60%,
rgba(250, 238, 220, 1) 100%
);
background-attachment: fixed;
color: var(--text-primary-light);
@ -226,20 +239,25 @@ body {
background-color: var(--bg-primary-dark);
background-image:
radial-gradient(
ellipse 80% 60% at 15% 100%,
rgba(255, 128, 0, 0.16) 0%,
rgba(255, 128, 0, 0.04) 40%,
ellipse 70% 50% at 12% 105%,
rgba(255, 100, 0, 0.32) 0%,
rgba(255, 128, 0, 0.16) 30%,
transparent 70%
),
radial-gradient(
ellipse 60% 50% at 85% 0%,
rgba(124, 58, 237, 0.08) 0%,
transparent 60%
ellipse 55% 45% at 95% 100%,
rgba(255, 140, 30, 0.18) 0%,
transparent 70%
),
radial-gradient(
ellipse 55% 45% at 90% -5%,
rgba(124, 58, 237, 0.14) 0%,
transparent 65%
),
linear-gradient(
180deg,
rgba(26, 15, 10, 1) 0%,
rgba(38, 22, 14, 1) 100%
rgba(42, 24, 16, 1) 100%
);
background-attachment: fixed;
color: var(--text-primary-dark);