From a42522dda2664be16618b08a624320dfd3408add Mon Sep 17 00:00:00 2001 From: sam Date: Thu, 21 May 2026 13:28:27 +0700 Subject: [PATCH] mid light/dark coloured gradient/shadows that thus contrast on light and dark mode --- src/components/CampaignHeroBackground.tsx | 14 +++++++++---- src/components/HeroCampaignSpotlight.tsx | 17 ++++++++------- src/components/HeroGlobe.tsx | 4 ++-- src/index.css | 25 +++++++++++++++++++++++ src/pages/CampaignsPage.tsx | 8 ++++---- 5 files changed, 49 insertions(+), 19 deletions(-) diff --git a/src/components/CampaignHeroBackground.tsx b/src/components/CampaignHeroBackground.tsx index e72d98b5..7d573c55 100644 --- a/src/components/CampaignHeroBackground.tsx +++ b/src/components/CampaignHeroBackground.tsx @@ -86,10 +86,16 @@ export function CampaignHeroBackground({ imageUrl, className }: CampaignHeroBack ); })} - {/* Warm tint + dark gradient — keeps foreground text legible without - completely washing the photo out. */} -
-
+ {/* Dark vertical scrim — strong at the bottom (spotlight card) and + lighter at the top so the photo still reads. Uses black instead of + background so the overlay is consistent across light/dark themes. */} +
+ {/* Warm primary tint — gives the hero its brand feel. */} +
+ + {/* Left wash — mobile only, where the globe arc crosses the headline. + Dark so white headline text has a reliable backdrop. */} +
{/* Film grain — same trick as Treasures' HeroGallery. Helps the composited globe + photo feel like one image. */} diff --git a/src/components/HeroCampaignSpotlight.tsx b/src/components/HeroCampaignSpotlight.tsx index be32ce0c..fd310514 100644 --- a/src/components/HeroCampaignSpotlight.tsx +++ b/src/components/HeroCampaignSpotlight.tsx @@ -63,10 +63,9 @@ export function HeroCampaignSpotlight({ return (
@@ -75,7 +74,7 @@ export function HeroCampaignSpotlight({

{campaign.summary && ( -

+

{campaign.summary}

)} @@ -101,12 +100,12 @@ export function HeroCampaignSpotlight({
)}
- + {formatCampaignAmount(raised, btcPrice)} - {!hasGoal && raised} + {!hasGoal && raised} {hasGoal && ( - + of {formatCampaignAmount(goal!, btcPrice)} goal )} @@ -115,7 +114,7 @@ export function HeroCampaignSpotlight({ ); })()} -
+
{authorPicture && } diff --git a/src/components/HeroGlobe.tsx b/src/components/HeroGlobe.tsx index 7675aec3..5ae00717 100644 --- a/src/components/HeroGlobe.tsx +++ b/src/components/HeroGlobe.tsx @@ -313,8 +313,8 @@ export function HeroGlobe({ {/* Soft highlight in the upper-left to sell the sphere shape. */} - - + + {/* Marker glow halo. Soft, warm, no pulsing. */} diff --git a/src/index.css b/src/index.css index fd1cd595..9f6f012d 100644 --- a/src/index.css +++ b/src/index.css @@ -753,3 +753,28 @@ .hero-pan-right, .hero-pan-left { animation: none; } .hero-globe-halo-breath { animation: none; opacity: 0.42; } } + +/* Dark drop-shadow for hero copy — photo backgrounds are always colorful, + so we want a dark shadow regardless of light/dark theme. */ +.hero-text-shadow { + text-shadow: + 0 2px 8px rgba(0, 0, 0, 0.8), + 0 0 20px rgba(0, 0, 0, 0.45); +} + +.hero-text-shadow-soft { + text-shadow: 0 1px 6px rgba(0, 0, 0, 0.65); +} + +/* On mobile the globe sits under the headline — soften its left edge. */ +.hero-globe-mask { + -webkit-mask-image: linear-gradient(to right, transparent 0%, black 48%, black 100%); + mask-image: linear-gradient(to right, transparent 0%, black 48%, black 100%); +} + +@media (min-width: 640px) { + .hero-globe-mask { + -webkit-mask-image: none; + mask-image: none; + } +} diff --git a/src/pages/CampaignsPage.tsx b/src/pages/CampaignsPage.tsx index 075f701b..72c0554a 100644 --- a/src/pages/CampaignsPage.tsx +++ b/src/pages/CampaignsPage.tsx @@ -271,7 +271,7 @@ export function CampaignsPage() {
-
+
+
-

+

Connecting activists to unstoppable funding.

-

+

Raise Bitcoin directly from supporters around the world. Every donation settles straight to your campaign's beneficiaries, with no middlemen, no chargebacks, and no platform holding your funds.