Skip to main content

max / makenotwork

7.0 KB · 398 lines History Blame Raw
1 /* Unified media player styles — shared by audio and video player pages. */
2
3 /* Media container */
4 .media-container {
5 max-width: 680px;
6 margin: 0 auto;
7 padding: 3rem 1.5rem 5rem;
8 }
9
10 /* Author header */
11 .author-header {
12 display: flex;
13 align-items: center;
14 gap: 1rem;
15 margin-bottom: 2rem;
16 }
17
18 .author-avatar {
19 width: 48px;
20 height: 48px;
21 background: var(--surface-muted);
22 border-radius: 50%;
23 display: flex;
24 align-items: center;
25 justify-content: center;
26 font-family: var(--font-heading);
27 font-size: 1.25rem;
28 color: var(--detail);
29 }
30
31 .author-info {
32 flex: 1;
33 }
34
35 .author-name {
36 font-family: var(--font-mono);
37 font-size: 1rem;
38 color: var(--detail);
39 }
40
41 .author-name a {
42 color: inherit;
43 text-decoration: none;
44 }
45
46 .author-name a:hover {
47 text-decoration: underline;
48 }
49
50 .media-meta {
51 font-family: var(--font-mono);
52 font-size: 0.875rem;
53 color: var(--text-muted);
54 }
55
56 /* Title */
57 .media-title {
58 font-family: var(--font-heading);
59 font-size: 2.5rem;
60 font-weight: normal;
61 line-height: 1.2;
62 margin-bottom: 1rem;
63 color: var(--detail);
64 text-align: left;
65 }
66
67 /* Series name */
68 .media-series {
69 font-family: var(--font-mono);
70 font-size: 0.9375rem;
71 color: var(--text-muted);
72 margin-bottom: 2.5rem;
73 }
74
75 .media-series a {
76 color: var(--highlight);
77 text-decoration: none;
78 }
79
80 .media-series a:hover {
81 text-decoration: underline;
82 }
83
84 /* Cover art (audio) */
85 .cover-art {
86 background: var(--surface-muted);
87 aspect-ratio: 1;
88 max-width: 400px;
89 margin: 0 auto 2rem;
90 display: flex;
91 align-items: center;
92 justify-content: center;
93 color: var(--text-muted);
94 font-family: var(--font-mono);
95 }
96
97 .cover-art img {
98 width: 100%;
99 height: 100%;
100 object-fit: cover;
101 }
102
103 /* Video display */
104 .video-display {
105 max-width: 100%;
106 margin: 0 auto 2rem;
107 background: var(--detail);
108 }
109
110 .video-display video {
111 width: 100%;
112 display: block;
113 }
114
115 /* Player controls */
116 .media-player {
117 background: var(--light-background);
118 padding: 1.5rem;
119 margin-bottom: 2.5rem;
120 }
121
122 .player-controls {
123 display: flex;
124 align-items: center;
125 gap: 1rem;
126 margin-bottom: 1rem;
127 }
128
129 .play-button {
130 width: 56px;
131 height: 56px;
132 background: var(--primary-dark);
133 color: var(--primary-light);
134 border: none;
135 border-radius: 50%;
136 cursor: pointer;
137 display: flex;
138 align-items: center;
139 justify-content: center;
140 font-size: 1.5rem;
141 transition: opacity 0.2s ease;
142 flex-shrink: 0;
143 }
144
145 .play-button:hover {
146 opacity: 0.8;
147 }
148
149 .progress-container {
150 flex: 1;
151 }
152
153 .progress-bar {
154 height: 6px;
155 background: var(--surface-muted);
156 border-radius: 3px;
157 overflow: hidden;
158 cursor: pointer;
159 margin-bottom: 0.5rem;
160 position: relative;
161 }
162
163 .progress-fill {
164 height: 100%;
165 background: var(--highlight);
166 width: 0%;
167 border-radius: 3px;
168 transition: width 0.1s linear;
169 }
170
171 .time-display {
172 display: flex;
173 justify-content: space-between;
174 font-family: var(--font-mono);
175 font-size: 0.8125rem;
176 color: var(--text-muted);
177 }
178
179 .player-secondary {
180 display: flex;
181 justify-content: space-between;
182 align-items: center;
183 padding-top: 1rem;
184 border-top: 1px solid var(--border);
185 }
186
187 .speed-control {
188 font-family: var(--font-mono);
189 font-size: 0.875rem;
190 display: flex;
191 align-items: center;
192 gap: 0.5rem;
193 }
194
195 .speed-button {
196 background: var(--surface-muted);
197 border: none;
198 padding: 0.375rem 0.75rem;
199 font-family: var(--font-mono);
200 font-size: 0.8125rem;
201 cursor: pointer;
202 color: var(--detail);
203 }
204
205 .speed-button:hover {
206 background: var(--border);
207 }
208
209 .speed-button.is-selected {
210 background: var(--primary-dark);
211 color: var(--primary-light);
212 }
213
214 .volume-control {
215 display: flex;
216 align-items: center;
217 gap: 0.5rem;
218 }
219
220 .volume-icon {
221 color: var(--text-muted);
222 }
223
224 .volume-slider {
225 width: 80px;
226 height: 4px;
227 background: var(--surface-muted);
228 border-radius: 2px;
229 appearance: none;
230 cursor: pointer;
231 }
232
233 .volume-slider::-webkit-slider-thumb {
234 appearance: none;
235 width: 12px;
236 height: 12px;
237 background: var(--detail);
238 border-radius: 50%;
239 cursor: pointer;
240 }
241
242 .volume-slider::-moz-range-thumb {
243 width: 12px;
244 height: 12px;
245 background: var(--detail);
246 border-radius: 50%;
247 cursor: pointer;
248 border: none;
249 }
250
251 /* Description */
252 .media-description {
253 font-family: var(--font-body);
254 font-size: 1.125rem;
255 line-height: 1.9;
256 margin-bottom: 2rem;
257 }
258
259 .media-description p {
260 margin-bottom: 1.5rem;
261 }
262
263 /* Chapters */
264 .chapters {
265 background: var(--light-background);
266 padding: 1.5rem;
267 margin-bottom: 2rem;
268 }
269
270 .chapters h3 {
271 font-family: var(--font-mono);
272 font-size: 1rem;
273 font-weight: normal;
274 margin-bottom: 1rem;
275 color: var(--detail);
276 }
277
278 .chapter-list {
279 list-style: none;
280 }
281
282 .chapter-item {
283 display: flex;
284 justify-content: space-between;
285 padding: 0.75rem 0;
286 border-bottom: 1px solid var(--border);
287 cursor: pointer;
288 transition: background 0.2s ease;
289 }
290
291 .chapter-item:last-child {
292 border-bottom: none;
293 }
294
295 .chapter-item:hover {
296 background: var(--surface-muted);
297 margin: 0 -1.5rem;
298 padding-left: 1.5rem;
299 padding-right: 1.5rem;
300 }
301
302 .chapter-title {
303 font-family: var(--font-body);
304 color: var(--detail);
305 }
306
307 .chapter-time {
308 font-family: var(--font-mono);
309 font-size: 0.875rem;
310 color: var(--text-muted);
311 }
312
313 /* Tags */
314 .media-tags {
315 display: flex;
316 gap: 0.5rem;
317 flex-wrap: wrap;
318 margin-top: 2rem;
319 padding-top: 2rem;
320 border-top: 1px solid var(--border);
321 }
322
323 .tag {
324 font-family: var(--font-mono);
325 background: var(--surface-muted);
326 color: var(--detail);
327 padding: 0.375rem 0.75rem;
328 font-size: 0.8125rem;
329 }
330
331 /* Footer */
332 .media-player-footer {
333 font-family: var(--font-mono);
334 text-align: center;
335 padding: 2rem;
336 font-size: 0.875rem;
337 color: var(--text-muted);
338 border-top: 1px solid var(--border);
339 }
340
341 .media-player-footer a {
342 color: var(--detail);
343 text-decoration: none;
344 }
345
346 .media-player-footer a:hover {
347 text-decoration: underline;
348 }
349
350 /* Hidden media elements */
351 audio {
352 display: none;
353 }
354
355 /* Skip button for insertion segments */
356 .skip-insertion {
357 font-family: var(--font-mono);
358 font-size: 0.8125rem;
359 background: var(--surface-muted);
360 border: 1px solid var(--border);
361 padding: 0.375rem 0.75rem;
362 cursor: pointer;
363 color: var(--detail);
364 display: none;
365 margin-top: 0.5rem;
366 }
367
368 .skip-insertion:hover {
369 background: var(--border);
370 }
371
372 /* Insertion label shown during playback */
373 .insertion-label {
374 font-family: var(--font-mono);
375 font-size: 0.8125rem;
376 color: var(--text-muted);
377 font-style: italic;
378 display: none;
379 margin-top: 0.25rem;
380 }
381
382 /* Responsive */
383 @media (max-width: 600px) {
384 .media-title {
385 font-size: 2rem;
386 }
387
388 .cover-art {
389 max-width: 100%;
390 }
391
392 .player-secondary {
393 flex-direction: column;
394 gap: 1rem;
395 align-items: flex-start;
396 }
397 }
398