From 6bdb2204b3fbf5a5bb6d92672acf075dbc54faae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Ckirukib=E2=80=9D?= <“kirubeljkl679@gmail.com”> Date: Fri, 22 May 2026 11:14:01 +0300 Subject: [PATCH] - --- .gitignore | 2 - app/globals.css | 90 ++++++------------- components/brand/FooterTopoPattern.tsx | 6 +- .../brand/RoundedRockVoronoiBackground.tsx | 13 +-- components/brand/WavyTessellationMesh.tsx | 10 +-- 5 files changed, 42 insertions(+), 79 deletions(-) diff --git a/.gitignore b/.gitignore index 61540f6..d7506d3 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,6 @@ # misc .DS_Store -.deploy-log.txt -.cursor-git-deploy.sh *.pem .env*.local .env diff --git a/app/globals.css b/app/globals.css index 157cc1d..b224ddf 100644 --- a/app/globals.css +++ b/app/globals.css @@ -206,43 +206,6 @@ .marquee-winners { animation: marquee 55s linear infinite; } - .marquee-winners:hover { - animation-play-state: paused; - } - .marquee-winners-paused { - animation-play-state: paused !important; - } - - @keyframes winner-impact-pulse { - 0%, - 100% { - transform: scale(1); - } - 50% { - transform: scale(1.06); - } - } - - @keyframes winner-impact-glow { - 0%, - 100% { - color: #0d3d26; - text-shadow: 0 0 0 transparent; - } - 50% { - color: #1a5c38; - text-shadow: 0 0 14px rgba(74, 173, 110, 0.45); - } - } - - .winner-impact-value { - display: block; - max-width: 50%; - margin-inline: auto; - animation: - winner-impact-pulse 2.4s ease-in-out infinite, - winner-impact-glow 2.4s ease-in-out infinite; - } @keyframes marquee { from { transform: translateX(0); @@ -256,9 +219,6 @@ .marquee-winners { animation: none; } - .winner-impact-value { - animation: none; - } .backdrop-bloom-a, .backdrop-bloom-b, .valley-pan-slow, @@ -482,23 +442,23 @@ /* ─── mainwhite.svg: hero (green tint) · footer (white on green) ─── */ .topo-tone-light .topo-pattern-asset { mix-blend-mode: multiply; - filter: sepia(0.35) saturate(2.6) hue-rotate(92deg) brightness(0.92) contrast(1.2); + filter: sepia(0.35) saturate(2.2) hue-rotate(92deg) brightness(0.96) contrast(0.92); } - /* Hero — gentle fill in/out on contour lines (no pan, shake, or slide) */ + /* Hero — soft topography lines, gentle opacity breathe only */ .rift-hero-topo .topo-hero-pattern-img { - opacity: 0.42; + opacity: 0.26; mix-blend-mode: multiply; - filter: sepia(0.35) saturate(2.6) hue-rotate(92deg) brightness(0.92) contrast(1.2); + filter: sepia(0.3) saturate(1.9) hue-rotate(92deg) brightness(0.98) contrast(0.88); transform: scale(1.06); object-position: 50% 50%; animation: topo-hero-fill-breathe 9s ease-in-out infinite; } .rift-hero-topo .topo-hero-water-flow-img { - opacity: 0.2; + opacity: 0.12; mix-blend-mode: multiply; - filter: sepia(0.35) saturate(2.8) hue-rotate(92deg) brightness(1.05) contrast(1.15); + filter: sepia(0.3) saturate(1.8) hue-rotate(92deg) brightness(1.02) contrast(0.85); transform: scale(1.06); object-position: 50% 50%; animation: topo-hero-fill-pulse 9s ease-in-out infinite; @@ -520,12 +480,12 @@ .topo-hero-channel-glow { background: radial-gradient( ellipse 70% 50% at 50% 58%, - rgba(120, 200, 160, 0.2) 0%, - rgba(45, 122, 82, 0.08) 50%, + rgba(120, 200, 160, 0.1) 0%, + rgba(45, 122, 82, 0.04) 50%, transparent 75% ); mix-blend-mode: soft-light; - opacity: 0.55; + opacity: 0.34; animation: topo-hero-glow-breathe 13s ease-in-out infinite; } @@ -542,62 +502,66 @@ } .rift-hero-topo--hover .topo-hero-water-flow-img { - opacity: 0.3; + opacity: 0.18; } .rift-hero-topo--hover .topo-hero-water-shimmer { - opacity: 0.62; + opacity: 0.42; } .rift-hero-topo--hover .topo-hero-channel-glow { - opacity: 0.68; + opacity: 0.44; } .rift-hero-topo--hover .topo-hero-water-spotlight { - opacity: 0.85; + opacity: 0.5; } .rift-hero-topo--hover .topo-hero-pattern-img { - opacity: 0.5; + opacity: 0.32; + } + + [data-section-hero] .topo-curvy-extend path { + stroke-opacity: 0.18 !important; } @keyframes topo-hero-fill-breathe { 0%, 100% { - opacity: 0.36; + opacity: 0.22; } 50% { - opacity: 0.5; + opacity: 0.3; } } @keyframes topo-hero-fill-pulse { 0%, 100% { - opacity: 0.14; + opacity: 0.08; } 50% { - opacity: 0.28; + opacity: 0.16; } } @keyframes topo-hero-shimmer-breathe { 0%, 100% { - opacity: 0.38; + opacity: 0.26; } 50% { - opacity: 0.58; + opacity: 0.38; } } @keyframes topo-hero-glow-breathe { 0%, 100% { - opacity: 0.42; + opacity: 0.28; } 50% { - opacity: 0.62; + opacity: 0.4; } } @@ -1163,7 +1127,7 @@ .rift-pulse-animate, .rift-hero-topo .topo-hero-pattern-img { animation: none !important; - opacity: 0.44 !important; + opacity: 0.28 !important; } .rift-hero-topo .topo-hero-water-flow-img, diff --git a/components/brand/FooterTopoPattern.tsx b/components/brand/FooterTopoPattern.tsx index 57a52fa..17d3329 100644 --- a/components/brand/FooterTopoPattern.tsx +++ b/components/brand/FooterTopoPattern.tsx @@ -31,13 +31,13 @@ export function FooterTopoPattern({ className }: Props) { key={i} d={cell.d} fill={cell.fill} - stroke="rgba(255,255,255,0.09)" - strokeWidth={0.14} + stroke="rgba(255,255,255,0.05)" + strokeWidth={0.12} /> ))}
diff --git a/components/brand/RoundedRockVoronoiBackground.tsx b/components/brand/RoundedRockVoronoiBackground.tsx index 02832ff..1bf2164 100644 --- a/components/brand/RoundedRockVoronoiBackground.tsx +++ b/components/brand/RoundedRockVoronoiBackground.tsx @@ -6,8 +6,9 @@ import { cn } from "@/lib/utils"; const MESH_W = 140; const MESH_H = 100; -const ROCK_TONES = ["#0d3d26", "#1a5c38", "#246b45", "#2f7a52", "#3d9a66", "#52b87a"] as const; -const GROUT = "rgba(8, 38, 22, 0.42)"; +/** Narrow green range — low contrast between “stones” on section backgrounds */ +const ROCK_TONES = ["#1a5c38", "#1d5f3c", "#216342", "#246845", "#286a48", "#2b6e4b"] as const; +const GROUT = "rgba(8, 38, 22, 0.2)"; const ROCK_MESH = buildVoronoiMesh(42, MESH_W, MESH_H, 0x475256, { siteGenerator: "poisson", @@ -29,9 +30,9 @@ function rockFill(cell: VoronoiCell, index: number) { const cx = cell.points.reduce((s, p) => s + p[0], 0) / cell.points.length; const cy = cell.points.reduce((s, p) => s + p[1], 0) / cell.points.length; const yNorm = cy / MESH_H; - const gradient = mixHex("#4aad6e", "#0d3d26", Math.min(1, yNorm * 0.85 + 0.08)); + const gradient = mixHex("#2a6f4a", "#1a5c38", Math.min(1, yNorm * 0.45 + 0.25)); const tone = ROCK_TONES[(index * 11 + Math.floor(cx * 0.55)) % ROCK_TONES.length]; - return mixHex(gradient, tone, 0.54); + return mixHex(gradient, tone, 0.38); } type Props = { @@ -82,12 +83,12 @@ export function RoundedRockVoronoiBackground({
{gradient && (
)}
diff --git a/components/brand/WavyTessellationMesh.tsx b/components/brand/WavyTessellationMesh.tsx index f9dd3dc..272b126 100644 --- a/components/brand/WavyTessellationMesh.tsx +++ b/components/brand/WavyTessellationMesh.tsx @@ -1,11 +1,11 @@ /** GRV greens for wavy interlocking footer tessellation. */ export const WAVY_TESS_PALETTE = [ - "#0d3d26", "#1a5c38", - "#256b45", - "#2d7a52", - "#3d9a66", - "#5cb87a", + "#1d5f3c", + "#216342", + "#246845", + "#286a48", + "#2b6e4b", ] as const; export type WavyTessCell = { d: string; fill: string };