@@ -6,39 +6,55 @@ header.masthead {
66 overflow : hidden ;
77 @include full-viewport-section ;
88 align-items : center ;
9-
9+ // Solid fallback colour while .masthead-bg renders
10+ background : $valiente-midnight ;
11+
12+ // GPU-composited gradient layer — animates via transform, not background-position
13+ .masthead-bg {
14+ position : absolute ;
15+ top : -50% ;
16+ left : -50% ;
17+ width : 200% ;
18+ height : 200% ;
19+ background : linear-gradient (
20+ 135deg ,
21+ $valiente-midnight 0% ,
22+ $valiente-ink 16% ,
23+ darken ($valiente-violet , 5% ) 32% ,
24+ darken ($valiente-fuchsia , 5% ) 48% ,
25+ darken ($valiente-magenta , 7% ) 64% ,
26+ darken ($valiente-rose , 12% ) 82% ,
27+ darken ($valiente-ink , 6% ) 100%
28+ );
29+ animation : gradientDrift 20s ease-in-out infinite ;
30+ will-change : transform ;
31+ pointer-events : none ;
32+ z-index : 0 ;
33+ }
34+
1035 // Mesh network canvas
1136 .mesh-network-canvas {
37+ display : none ; // Hidden by default on mobile
1238 position : absolute ;
1339 top : 0 ;
1440 left : 0 ;
1541 width : 100% ;
1642 height : 100% ;
17- z-index : 1 ;
43+ z-index : 3 ;
1844 pointer-events : none ;
45+
46+ @media (min-width : 768px ) {
47+ display : block ;
48+ }
1949 }
20-
50+
2151 // Container and text should be above canvas
2252 .container {
2353 position : relative ;
24- z-index : 2 ;
54+ z-index : 4 ;
2555 width : 100% ;
2656 }
27-
28- // Animated colorful gradient background - smoother with more color stops
29- background : linear-gradient (
30- 135deg ,
31- $valiente-midnight 0% ,
32- $valiente-ink 16% ,
33- darken ($valiente-violet , 5% ) 32% ,
34- darken ($valiente-fuchsia , 5% ) 48% ,
35- darken ($valiente-magenta , 7% ) 64% ,
36- darken ($valiente-rose , 12% ) 82% ,
37- darken ($valiente-ink , 6% ) 100%
38- );
39- background-size : 300% 300% ;
40- animation : gradientShift 20s ease-in-out infinite ;
41-
57+
4258 // Logo background detail with low opacity
4359 & ::before {
4460 content : ' ' ;
@@ -53,18 +69,18 @@ header.masthead {
5369 background-repeat : no-repeat ;
5470 opacity : 0.08 ;
5571 pointer-events : none ;
56- z-index : 0 ;
72+ z-index : 1 ;
5773 }
58-
59- // Add animated overlay and particles combined
74+
75+ // Animated overlay (transform only — composited)
6076 & ::after {
6177 content : ' ' ;
6278 position : absolute ;
6379 top : 0 ;
6480 left : 0 ;
6581 right : 0 ;
6682 bottom : 0 ;
67- background :
83+ background :
6884 radial-gradient (ellipse 60% 40% at 20% 50% , rgba (255 , 255 , 255 , 0.12 ) 0% , transparent 60% ),
6985 radial-gradient (ellipse 50% 50% at 80% 80% , rgba (255 , 255 , 255 , 0.08 ) 0% , transparent 60% ),
7086 radial-gradient (ellipse 40% 60% at 50% 20% , rgba ($valiente-violet , 0.25 ) 0% , transparent 50% ),
@@ -74,22 +90,12 @@ header.masthead {
7490 radial-gradient (1px 1px at 80% 10% , rgba (255 , 255 , 255 , 0.3 ), transparent ),
7591 radial-gradient (2px 2px at 90% 60% , rgba (255 , 255 , 255 , 0.25 ), transparent ),
7692 radial-gradient (1px 1px at 33% 80% , rgba (255 , 255 , 255 , 0.35 ), transparent );
77- background-size :
78- 100% 100% ,
79- 100% 100% ,
80- 100% 100% ,
81- 200% 200% ,
82- 200% 200% ,
83- 200% 200% ,
84- 200% 200% ,
85- 200% 200% ,
86- 200% 200% ;
87- animation : overlayMove 25s ease-in-out infinite , particlesMove 25s linear infinite ;
93+ animation : overlayMove 25s ease-in-out infinite ;
8894 pointer-events : none ;
8995 opacity : 0.9 ;
90- z-index : 0 ;
96+ z-index : 2 ;
9197 }
92-
98+
9399 .intro-text {
94100 position : relative ;
95101 z-index : 1 ;
@@ -122,26 +128,16 @@ header.masthead {
122128 }
123129}
124130
125- // Gradient animation - smoother circular movement
126- @keyframes gradientShift {
127- 0% {
128- background-position : 0% 50% ;
129- }
130- 25% {
131- background-position : 100% 0% ;
132- }
133- 50% {
134- background-position : 100% 100% ;
135- }
136- 75% {
137- background-position : 0% 100% ;
138- }
139- 100% {
140- background-position : 0% 50% ;
141- }
131+ // GPU-composited gradient drift — uses transform not background-position
132+ @keyframes gradientDrift {
133+ 0% { transform : translate (0% , 0% ); }
134+ 25% { transform : translate (25% , 0% ); }
135+ 50% { transform : translate (25% , 25% ); }
136+ 75% { transform : translate (0% , 25% ); }
137+ 100% { transform : translate (0% , 0% ); }
142138}
143139
144- // Overlay movement animation - smoother transitions
140+ // Overlay movement animation — transform only (composited)
145141@keyframes overlayMove {
146142 0% {
147143 transform : translate (0 , 0 ) scale (1 ) rotate (0deg );
@@ -165,15 +161,6 @@ header.masthead {
165161 }
166162}
167163
168- // Particles movement animation
169- @keyframes particlesMove {
170- 0% {
171- background-position : 0% 0% ;
172- }
173- 100% {
174- background-position : 100% 100% ;
175- }
176- }
177164@media (min-width : 768px ) {
178165 header .masthead {
179166 .intro-text {
0 commit comments