@@ -186,38 +186,54 @@ const NowPlayingTab = memo(({ currentSong }) => {
186186 const c1 = colors ?. c1 || [ 35 , 30 , 45 ]
187187 const c2 = colors ?. c2 || [ 30 , 35 , 40 ]
188188
189- const imgShadowDesktop = `0 30px 80px rgba(0,0,0,0.5 ), 0 0 80px -20px rgba(${ c1 [ 0 ] } ,${ c1 [ 1 ] } ,${ c1 [ 2 ] } ,0.2 )`
190- const imgShadowMobile = `0 24px 60px rgba(0,0,0,0.5 ), 0 0 60px -15px rgba(${ c1 [ 0 ] } ,${ c1 [ 1 ] } ,${ c1 [ 2 ] } ,0.2 )`
189+ const imgShadowDesktop = `0 30px 80px rgba(0,0,0,0.4 ), 0 0 0 1px rgba(255,255,255,0.05), 0 0 80px -20px rgba(${ c1 [ 0 ] } ,${ c1 [ 1 ] } ,${ c1 [ 2 ] } ,0.25 )`
190+ const imgShadowMobile = `0 24px 60px rgba(0,0,0,0.4 ), 0 0 0 1px rgba(255,255,255,0.05), 0 0 60px -15px rgba(${ c1 [ 0 ] } ,${ c1 [ 1 ] } ,${ c1 [ 2 ] } ,0.25 )`
191191
192192 const orbColor = ( c , a ) => ( {
193193 background : `rgba(${ c [ 0 ] } ,${ c [ 1 ] } ,${ c [ 2 ] } ,${ a } )` ,
194194 transition : "background 2s ease-out" ,
195195 } )
196196
197197 return (
198- < div className = "w-full h-full relative overflow-hidden bg-[#050505 ]" >
199- { /* Blurred album art background */ }
198+ < div className = "w-full h-full relative overflow-hidden bg-[#050508 ]" >
199+ { /* Layer 1: Album art dissolved into pure color fields */ }
200200 { images . previous && (
201201 < div
202202 className = "absolute inset-0 bg-cover bg-center np-bg-fade-out"
203- style = { { backgroundImage : `url(${ images . previous } )` , filter : "blur(60px ) saturate(1.2 ) brightness(0.6 )" , transform : "scale(1.5 )" } }
203+ style = { { backgroundImage : `url(${ images . previous } )` , filter : "blur(160px ) saturate(1.4 ) brightness(0.65 )" , transform : "scale(2 )" } }
204204 />
205205 ) }
206206 < div
207207 className = { `absolute inset-0 bg-cover bg-center ${ images . transitioning ? "np-bg-fade-in" : "" } ` }
208- style = { { backgroundImage : `url(${ images . current } )` , filter : "blur(60px ) saturate(1.2 ) brightness(0.6 )" , transform : "scale(1.5 )" , transition : "background-image 0.5s ease" } }
208+ style = { { backgroundImage : `url(${ images . current } )` , filter : "blur(160px ) saturate(1.4 ) brightness(0.65 )" , transform : "scale(2 )" , transition : "background-image 0.6s ease" } }
209209 />
210210
211- { /* Animated orbs for subtle movement */ }
211+ { /* Layer 2: Glass noise texture */ }
212+ < div className = "absolute inset-0 np-glass-noise" />
213+
214+ { /* Layer 3: Specular highlights — top-left and bottom-right light catches */ }
215+ < div className = "absolute inset-0" style = { {
216+ background : "radial-gradient(ellipse 70% 50% at 25% 20%, rgba(255,255,255,0.08) 0%, transparent 50%)"
217+ } } />
218+ < div className = "absolute inset-0" style = { {
219+ background : "radial-gradient(ellipse 50% 35% at 75% 75%, rgba(255,255,255,0.04) 0%, transparent 40%)"
220+ } } />
221+
222+ { /* Layer 4: Animated liquid shimmer */ }
212223 < div className = "absolute inset-0 np-orb-layer" >
213- < div className = "np-orb np-o1" style = { orbColor ( c1 , 0.25 ) } />
214- < div className = "np-orb np-o2" style = { orbColor ( c2 , 0.2 ) } />
224+ < div className = "np-orb np-o1" style = { orbColor ( c1 , 0.18 ) } />
225+ < div className = "np-orb np-o2" style = { orbColor ( c2 , 0.14 ) } />
226+ < div className = "np-shimmer" />
215227 </ div >
216228
217- { /* Dark overlay + vignette */ }
218- < div className = "absolute inset-0 bg-black/40" />
229+ { /* Layer 5: Luminous depth — glass curvature effect */ }
230+ < div className = "absolute inset-0" style = { {
231+ background : "radial-gradient(ellipse 120% 80% at 50% 40%, rgba(255,255,255,0.03) 0%, transparent 50%)"
232+ } } />
233+
234+ { /* Layer 6: Vignette */ }
219235 < div className = "absolute inset-0" style = { {
220- background : "radial-gradient(ellipse at 50% 45%, transparent 30%, rgba(5,5,5 ,0.4) 65 %, rgba(5,5,5 ,0.85) 100%)"
236+ background : "radial-gradient(ellipse at 50% 45%, transparent 30%, rgba(5,5,8 ,0.3) 60 %, rgba(5,5,8 ,0.85) 100%)"
221237 } } />
222238
223239 { /* Desktop layout */ }
@@ -274,15 +290,15 @@ const NowPlayingTab = memo(({ currentSong }) => {
274290 < div className = "lg:hidden relative z-10 h-full flex flex-col items-center justify-between px-6 sm:px-8 pt-16 pb-8" >
275291 < div className = "flex-1 flex flex-col items-center justify-center gap-5 w-full max-w-sm" >
276292 < div
277- className = "shrink-0 transition-all duration-500 ease-out"
293+ className = "transition-all duration-500 ease-out"
278294 style = { {
279295 opacity : showEntrance ? 1 : 0 ,
280296 transform : showEntrance ? "scale(1)" : "scale(0.93)" ,
281297 } }
282298 >
283299 < CrossfadeAvatar
284300 images = { images }
285- size = "min(80vw , 42vh, 360px)"
301+ size = "min(90vw , 42vh, 360px)"
286302 shadow = { imgShadowMobile }
287303 name = { currentSong . name }
288304 />
@@ -331,39 +347,59 @@ const NowPlayingTab = memo(({ currentSong }) => {
331347 </ div >
332348
333349 < style > { `
350+ .np-glass-noise {
351+ background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
352+ opacity: 0.03;
353+ mix-blend-mode: overlay;
354+ }
334355 .np-orb-layer {
335- filter: blur(80px );
336- transform: scale(1.3 );
356+ filter: blur(100px );
357+ transform: scale(1.4 );
337358 mix-blend-mode: soft-light;
338- opacity: 0.8 ;
359+ opacity: 0.7 ;
339360 }
340361 .np-orb {
341362 position: absolute;
342363 border-radius: 50%;
343364 }
344365 .np-o1 {
345- width: 60 %;
346- height: 65 %;
366+ width: 55 %;
367+ height: 60 %;
347368 top: -10%;
348369 left: -10%;
349- animation: npo1 24s ease-in-out infinite;
370+ animation: npo1 26s ease-in-out infinite;
350371 }
351372 .np-o2 {
352- width: 55 %;
353- height: 55 %;
373+ width: 50 %;
374+ height: 50 %;
354375 bottom: -10%;
355376 right: -10%;
356- animation: npo2 28s ease-in-out infinite;
377+ animation: npo2 32s ease-in-out infinite;
378+ }
379+ .np-shimmer {
380+ position: absolute;
381+ width: 40%;
382+ height: 30%;
383+ top: 15%;
384+ left: 20%;
385+ border-radius: 50%;
386+ background: radial-gradient(ellipse, rgba(255,255,255,0.06) 0%, transparent 70%);
387+ animation: npShimmer 18s ease-in-out infinite;
357388 }
358389 @keyframes npo1 {
359390 0%, 100% { transform: translate(0, 0) scale(1); border-radius: 50%; }
360- 33% { transform: translate(12 %, 18 %) scale(1.06 ); border-radius: 44% 56% 52% 48%; }
361- 66% { transform: translate(6 %, 10 %) scale(0.97); border-radius: 48% 52% 46% 54%; }
391+ 33% { transform: translate(10 %, 15 %) scale(1.05 ); border-radius: 44% 56% 52% 48%; }
392+ 66% { transform: translate(5 %, 8 %) scale(0.97); border-radius: 48% 52% 46% 54%; }
362393 }
363394 @keyframes npo2 {
364395 0%, 100% { transform: translate(0, 0) scale(1); border-radius: 50%; }
365- 33% { transform: translate(-10%, -14%) scale(1.05); border-radius: 54% 46% 48% 52%; }
366- 66% { transform: translate(-16%, -6%) scale(0.96); border-radius: 47% 53% 52% 48%; }
396+ 33% { transform: translate(-8%, -12%) scale(1.04); border-radius: 54% 46% 48% 52%; }
397+ 66% { transform: translate(-14%, -5%) scale(0.96); border-radius: 47% 53% 52% 48%; }
398+ }
399+ @keyframes npShimmer {
400+ 0%, 100% { transform: translate(0, 0); opacity: 0.6; }
401+ 33% { transform: translate(30%, 10%); opacity: 1; }
402+ 66% { transform: translate(-10%, 20%); opacity: 0.4; }
367403 }
368404 .np-bg-fade-in {
369405 animation: npBgIn 0.8s ease-out both;
@@ -403,7 +439,7 @@ const NowPlayingTab = memo(({ currentSong }) => {
403439 to { opacity: 1; transform: translateY(0); }
404440 }
405441 @media (prefers-reduced-motion: reduce) {
406- .np-orb, .np-fade-in, .np-fade-out, .np-text-in, .np-bg-fade-in, .np-bg-fade-out { animation: none !important; }
442+ .np-orb, .np-fade-in, .np-fade-out, .np-text-in, .np-bg-fade-in, .np-bg-fade-out, .np-shimmer { animation: none !important; }
407443 .np-fade-in, .np-text-in, .np-bg-fade-in { opacity: 1 !important; }
408444 .np-fade-out, .np-bg-fade-out { opacity: 0 !important; }
409445 }
0 commit comments