1+ .music-player-container {
2+ position : relative;
3+ width : 100% ;
4+ height : 100vh ;
5+ display : flex;
6+ flex-direction : column;
7+ align-items : center;
8+ justify-content : center;
9+ padding : 2rem ;
10+ overflow : hidden;
11+ color : var (--foreground );
12+ }
13+
14+ .jacket-background {
15+ position : fixed;
16+ top : 0 ;
17+ left : 0 ;
18+ width : 100% ;
19+ height : 100% ;
20+ z-index : 0 ;
21+ }
22+
23+ .jacket-image {
24+ object-fit : cover;
25+ filter : blur (20px );
26+ opacity : 0.5 ;
27+ transform : scale (1.1 );
28+ }
29+
30+ .jacket-overlay {
31+ position : absolute;
32+ top : 0 ;
33+ left : 0 ;
34+ width : 100% ;
35+ height : 100% ;
36+ background : linear-gradient (to bottom,
37+ color-mix (in srgb, var (--background ), transparent 70% ) 0% ,
38+ color-mix (in srgb, var (--background ), transparent 50% ) 50% ,
39+ color-mix (in srgb, var (--background ), transparent 70% ) 100% );
40+ }
41+
42+ .music-info {
43+ text-align : center;
44+ margin-bottom : 2rem ;
45+ z-index : 1 ;
46+ text-shadow : 0 2px 4px color-mix (in srgb, var (--background ), transparent 50% );
47+ }
48+
49+ .music-info h1 {
50+ font-size : 2.5rem ;
51+ margin-bottom : 0.5rem ;
52+ font-weight : bold;
53+ color : var (--foreground );
54+ }
55+
56+ .music-info p {
57+ font-size : 1.2rem ;
58+ opacity : 0.9 ;
59+ color : var (--foreground );
60+ }
61+
62+ .player-controls {
63+ display : flex;
64+ flex-direction : column;
65+ align-items : center;
66+ gap : 1.5rem ;
67+ width : 100% ;
68+ max-width : 600px ;
69+ z-index : 1 ;
70+ background : color-mix (in srgb, var (--background ), transparent 50% );
71+ padding : 2rem ;
72+ border-radius : 1rem ;
73+ backdrop-filter : blur (10px );
74+ }
75+
76+ .time-control {
77+ display : flex;
78+ align-items : center;
79+ gap : 1rem ;
80+ width : 100% ;
81+ }
82+
83+ .time-control span {
84+ font-size : 0.9rem ;
85+ min-width : 3rem ;
86+ text-align : center;
87+ color : var (--foreground );
88+ opacity : 0.9 ;
89+ }
90+
91+ .play-button {
92+ padding : 1rem ;
93+ background-color : var (--primary );
94+ color : var (--foreground );
95+ border : none;
96+ border-radius : 50% ;
97+ cursor : pointer;
98+ transition : all 0.2s ;
99+ width : 64px ;
100+ height : 64px ;
101+ display : flex;
102+ align-items : center;
103+ justify-content : center;
104+ }
105+
106+ .play-button : hover {
107+ background-color : var (--foreground );
108+ color : var (--background );
109+ transform : scale (1.05 );
110+ box-shadow : 0 4px 12px color-mix (in srgb, var (--background ), transparent 20% );
111+ }
112+
113+ .time-slider {
114+ flex : 1 ;
115+ height : 4px ;
116+ -webkit-appearance : none;
117+ appearance : none;
118+ background : color-mix (in srgb, var (--foreground ), transparent 20% );
119+ border-radius : 2px ;
120+ outline : none;
121+ cursor : pointer;
122+ }
123+
124+ .time-slider ::-webkit-slider-thumb {
125+ -webkit-appearance : none;
126+ width : 16px ;
127+ height : 16px ;
128+ background : var (--primary );
129+ border-radius : 50% ;
130+ cursor : pointer;
131+ transition : transform 0.1s ;
132+ box-shadow : 0 2px 4px color-mix (in srgb, var (--background ), transparent 20% );
133+ }
134+
135+ .time-slider ::-webkit-slider-thumb : hover {
136+ transform : scale (1.2 );
137+ background : var (--foreground );
138+ }
139+
140+ .spectrum {
141+ position : fixed;
142+ top : 0 ;
143+ left : 0 ;
144+ width : 100% ;
145+ height : 100% ;
146+ z-index : 0 ;
147+ mix-blend-mode : screen;
148+ }
149+
150+ .control-buttons {
151+ display : flex;
152+ gap : 1rem ;
153+ margin-bottom : 1rem ;
154+ }
155+
156+ .control-button {
157+ background : color-mix (in srgb, var (--background ), transparent 10% );
158+ border : none;
159+ border-radius : 50% ;
160+ width : 48px ;
161+ height : 48px ;
162+ display : flex;
163+ align-items : center;
164+ justify-content : center;
165+ cursor : pointer;
166+ transition : all 0.3s ease;
167+ color : var (--foreground );
168+ }
169+
170+ .control-button : hover {
171+ background : var (--primary );
172+ transform : scale (1.1 );
173+ }
174+
175+ .playback-rate-control {
176+ display : flex;
177+ gap : 0.5rem ;
178+ margin-bottom : 1rem ;
179+ }
180+
181+ .rate-button {
182+ background : color-mix (in srgb, var (--background ), transparent 10% );
183+ border : none;
184+ border-radius : 4px ;
185+ padding : 0.5rem 1rem ;
186+ cursor : pointer;
187+ transition : all 0.3s ease;
188+ color : var (--foreground );
189+ font-size : 0.8rem ;
190+ }
191+
192+ .rate-button : hover {
193+ background : var (--primary );
194+ }
195+
196+ .rate-button .active {
197+ background : var (--primary );
198+ font-weight : bold;
199+ }
0 commit comments