Skip to content

Commit 1603849

Browse files
committed
Clean hero: solid white title, subtle bg glow, nav hidden until scroll
1 parent 505a07b commit 1603849

File tree

2 files changed

+37
-72
lines changed

2 files changed

+37
-72
lines changed

src/pages/index.module.css

Lines changed: 29 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,23 @@
2020
display: flex;
2121
align-items: center;
2222
justify-content: space-between;
23-
padding: 1.2rem 2.5rem;
24-
background: transparent;
23+
padding: 1rem 2.5rem;
24+
background: rgba(5, 5, 16, 0.9);
25+
backdrop-filter: blur(12px);
26+
-webkit-backdrop-filter: blur(12px);
27+
border-bottom: 1px solid rgba(255, 255, 255, 0.06);
28+
transition: transform 0.3s ease, opacity 0.3s ease;
29+
}
30+
31+
.navHidden {
32+
transform: translateY(-100%);
33+
opacity: 0;
34+
pointer-events: none;
35+
}
36+
37+
.navVisible {
38+
transform: translateY(0);
39+
opacity: 1;
2540
}
2641

2742
.navLogo {
@@ -79,60 +94,25 @@
7994
justify-content: center;
8095
padding: 4rem 2rem;
8196
position: relative;
82-
background: #040410;
97+
background: #050510;
8398
overflow: hidden;
8499
}
85100

86-
/* Full-screen gradient mesh - 5 layers */
87-
.blob1, .blob2, .blob3 {
101+
/* Single subtle ambient glow - no blobs, no boundaries */
102+
.blob1 { display: none; }
103+
.blob2 { display: none; }
104+
.blob3 {
88105
position: absolute;
89-
inset: 0;
106+
inset: -20%;
90107
pointer-events: none;
91108
z-index: 0;
109+
background: radial-gradient(ellipse 60% 50% at 50% 50%, rgba(25, 50, 140, 0.25) 0%, transparent 70%);
110+
animation: breathe 10s ease-in-out infinite;
92111
}
93112

94-
/* Layer 1: deep base wash */
95-
.blob1 {
96-
background:
97-
radial-gradient(ellipse 120% 80% at 20% 80%, #0a1628 0%, transparent 60%),
98-
radial-gradient(ellipse 100% 100% at 80% 20%, #0c1a3d 0%, transparent 55%);
99-
animation: field1 20s ease-in-out infinite;
100-
}
101-
102-
/* Layer 2: primary color fields */
103-
.blob2 {
104-
background:
105-
radial-gradient(ellipse 70% 60% at 15% 50%, rgba(20, 60, 180, 0.6) 0%, transparent 65%),
106-
radial-gradient(ellipse 50% 70% at 85% 60%, rgba(60, 120, 255, 0.35) 0%, transparent 60%),
107-
radial-gradient(ellipse 40% 50% at 50% 10%, rgba(30, 50, 120, 0.4) 0%, transparent 55%);
108-
animation: field2 16s ease-in-out infinite;
109-
}
110-
111-
/* Layer 3: highlights + accent */
112-
.blob3 {
113-
background:
114-
radial-gradient(ellipse 35% 40% at 30% 35%, rgba(80, 140, 255, 0.3) 0%, transparent 60%),
115-
radial-gradient(ellipse 25% 35% at 75% 70%, rgba(100, 160, 255, 0.2) 0%, transparent 55%),
116-
radial-gradient(ellipse 30% 25% at 55% 55%, rgba(60, 40, 150, 0.15) 0%, transparent 50%);
117-
animation: field3 12s ease-in-out infinite;
118-
}
119-
120-
@keyframes field1 {
121-
0%, 100% { opacity: 1; transform: scale(1) translate(0, 0); }
122-
50% { opacity: 0.85; transform: scale(1.05) translate(2%, -3%); }
123-
}
124-
125-
@keyframes field2 {
126-
0%, 100% { transform: translate(0, 0) scale(1); }
127-
25% { transform: translate(3%, 4%) scale(1.02); }
128-
50% { transform: translate(-2%, 2%) scale(0.98); }
129-
75% { transform: translate(1%, -3%) scale(1.03); }
130-
}
131-
132-
@keyframes field3 {
133-
0%, 100% { transform: translate(0, 0) scale(1) rotate(0deg); }
134-
33% { transform: translate(-4%, 3%) scale(1.08) rotate(1deg); }
135-
66% { transform: translate(3%, -4%) scale(0.95) rotate(-1deg); }
113+
@keyframes breathe {
114+
0%, 100% { opacity: 0.8; transform: scale(1); }
115+
50% { opacity: 1; transform: scale(1.05); }
136116
}
137117

138118
/* Film grain overlay */
@@ -168,28 +148,7 @@
168148
letter-spacing: -0.05em;
169149
line-height: 1;
170150
margin: 0 0 2rem;
171-
background: linear-gradient(
172-
120deg,
173-
#fff 0%,
174-
#a8c8ff 15%,
175-
#4d8bff 30%,
176-
#1a3a8a 45%,
177-
#4d8bff 60%,
178-
#a8c8ff 75%,
179-
#fff 90%,
180-
#4d8bff 100%
181-
);
182-
background-size: 300% 100%;
183-
-webkit-background-clip: text;
184-
background-clip: text;
185-
-webkit-text-fill-color: transparent;
186-
animation: shimmer 8s ease-in-out infinite;
187-
}
188-
189-
@keyframes shimmer {
190-
0% { background-position: 100% 50%; }
191-
50% { background-position: 0% 50%; }
192-
100% { background-position: 100% 50%; }
151+
color: #fff;
193152
}
194153

195154
.sub {

src/pages/index.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import React, {useState, useEffect} from 'react';
22
import Link from '@docusaurus/Link';
33
import Head from '@docusaurus/Head';
44
import useBaseUrl from '@docusaurus/useBaseUrl';
@@ -19,8 +19,14 @@ import styles from './index.module.css';
1919
/* ── NAV ──────────────────────────────────────────────────────── */
2020

2121
function Nav() {
22+
const [show, setShow] = useState(false);
23+
useEffect(() => {
24+
const onScroll = () => setShow(window.scrollY > window.innerHeight * 0.6);
25+
window.addEventListener('scroll', onScroll, {passive: true});
26+
return () => window.removeEventListener('scroll', onScroll);
27+
}, []);
2228
return (
23-
<nav className={styles.nav}>
29+
<nav className={`${styles.nav} ${show ? styles.navVisible : styles.navHidden}`}>
2430
<Link to={useBaseUrl('/')} className={styles.navLogo}>
2531
BlueMatter
2632
</Link>

0 commit comments

Comments
 (0)