Skip to content

Commit 6b14a7f

Browse files
committed
Always-visible nav, richer hero bg with drifting blue pools
1 parent e54e0b1 commit 6b14a7f

File tree

2 files changed

+58
-31
lines changed

2 files changed

+58
-31
lines changed

src/pages/index.module.css

Lines changed: 56 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,6 @@
2525
backdrop-filter: blur(12px);
2626
-webkit-backdrop-filter: blur(12px);
2727
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;
4028
}
4129

4230
.navLogo {
@@ -94,25 +82,70 @@
9482
justify-content: center;
9583
padding: 4rem 2rem;
9684
position: relative;
97-
background: #050510;
85+
background: #060612;
9886
overflow: hidden;
9987
}
10088

101-
/* Single subtle ambient glow - no blobs, no boundaries */
102-
.blob1 { display: none; }
103-
.blob2 { display: none; }
104-
.blob3 {
89+
.blob1, .blob2, .blob3 {
10590
position: absolute;
106-
inset: -20%;
10791
pointer-events: none;
10892
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;
93+
border-radius: 50%;
94+
}
95+
96+
/* Deep blue pool - bottom left */
97+
.blob1 {
98+
width: 80vw;
99+
height: 80vw;
100+
max-width: 900px;
101+
max-height: 900px;
102+
bottom: -40%;
103+
left: -20%;
104+
background: #0a1830;
105+
filter: blur(120px);
106+
animation: drift1 25s ease-in-out infinite;
107+
}
108+
109+
/* Bright accent - top right */
110+
.blob2 {
111+
width: 50vw;
112+
height: 50vw;
113+
max-width: 600px;
114+
max-height: 600px;
115+
top: -20%;
116+
right: -15%;
117+
background: #0e2450;
118+
filter: blur(100px);
119+
animation: drift2 30s ease-in-out infinite;
120+
}
121+
122+
/* Small warm highlight */
123+
.blob3 {
124+
width: 30vw;
125+
height: 30vw;
126+
max-width: 350px;
127+
max-height: 350px;
128+
top: 30%;
129+
left: 40%;
130+
background: #162050;
131+
filter: blur(90px);
132+
animation: drift3 20s ease-in-out infinite;
133+
}
134+
135+
@keyframes drift1 {
136+
0%, 100% { transform: translate(0, 0); }
137+
50% { transform: translate(5vw, -5vh); }
138+
}
139+
140+
@keyframes drift2 {
141+
0%, 100% { transform: translate(0, 0); }
142+
50% { transform: translate(-4vw, 4vh); }
111143
}
112144

113-
@keyframes breathe {
114-
0%, 100% { opacity: 0.8; transform: scale(1); }
115-
50% { opacity: 1; transform: scale(1.05); }
145+
@keyframes drift3 {
146+
0%, 100% { transform: translate(0, 0); }
147+
33% { transform: translate(-6vw, 3vh); }
148+
66% { transform: translate(4vw, -5vh); }
116149
}
117150

118151
/* Film grain overlay */

src/pages/index.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {useState, useEffect} from 'react';
1+
import React from 'react';
22
import Link from '@docusaurus/Link';
33
import Head from '@docusaurus/Head';
44
import useBaseUrl from '@docusaurus/useBaseUrl';
@@ -19,14 +19,8 @@ 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-
}, []);
2822
return (
29-
<nav className={`${styles.nav} ${show ? styles.navVisible : styles.navHidden}`}>
23+
<nav className={styles.nav}>
3024
<Link to={useBaseUrl('/')} className={styles.navLogo}>
3125
BlueMatter
3226
</Link>

0 commit comments

Comments
 (0)