something-x-dev 1.2.3.dev1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,530 @@
1
+ @define-color window_bg_color #000000;
2
+ @define-color window_fg_color #ffffff;
3
+ @define-color view_bg_color #000000;
4
+ @define-color view_fg_color #ffffff;
5
+ @define-color headerbar_bg_color #000000;
6
+ @define-color headerbar_fg_color #ffffff;
7
+ @define-color headerbar_border_color rgba(255,255,255,0.07);
8
+ @define-color headerbar_backdrop_color #000000;
9
+ @define-color card_bg_color rgba(255,255,255,0.04);
10
+ @define-color card_fg_color #ffffff;
11
+ @define-color accent_bg_color #e83535;
12
+ @define-color accent_fg_color #ffffff;
13
+ @define-color accent_color #e83535;
14
+ @define-color destructive_bg_color #e85252;
15
+ @define-color destructive_fg_color #ffffff;
16
+ @define-color success_bg_color #8fdf72;
17
+ @define-color success_fg_color #0a0a0a;
18
+
19
+ /* ── Splash ──────────────────────────────────────────────────────────────── */
20
+
21
+ .splash-window,
22
+ .splash-window > * {
23
+ background-color: #000000;
24
+ }
25
+
26
+ /* ── Base ────────────────────────────────────────────────────────────────── */
27
+
28
+ window,
29
+ .background {
30
+ background-color: #000000;
31
+ color: #ffffff;
32
+ }
33
+
34
+ scrolledwindow,
35
+ viewport {
36
+ background-color: #000000;
37
+ }
38
+
39
+ scrollbar trough {
40
+ background-color: rgba(255, 255, 255, 0.04);
41
+ border-radius: 3px;
42
+ min-width: 3px;
43
+ }
44
+ scrollbar slider {
45
+ background-color: rgba(255, 255, 255, 0.10);
46
+ border-radius: 3px;
47
+ min-width: 3px;
48
+ min-height: 48px;
49
+ }
50
+ scrollbar slider:hover { background-color: rgba(255, 255, 255, 0.18); }
51
+
52
+ /* ── Header ──────────────────────────────────────────────────────────────── */
53
+
54
+ headerbar,
55
+ .nothing-header {
56
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.025) 0%, #000000 100%);
57
+ border-bottom: 1px solid rgba(255, 255, 255, 0.06);
58
+ color: #ffffff;
59
+ min-height: 56px;
60
+ box-shadow: none;
61
+ padding: 0 10px;
62
+ }
63
+
64
+ headerbar .title {
65
+ font-family: "JetBrains Mono", monospace;
66
+ font-weight: 700;
67
+ font-size: 11px;
68
+ letter-spacing: 5px;
69
+ text-transform: uppercase;
70
+ color: #ffffff;
71
+ }
72
+
73
+ headerbar button,
74
+ headerbar button.flat {
75
+ background: none;
76
+ border: none;
77
+ box-shadow: none;
78
+ color: rgba(255, 255, 255, 0.4);
79
+ border-radius: 10px;
80
+ min-width: 36px;
81
+ min-height: 36px;
82
+ padding: 4px 8px;
83
+ transition: background 150ms ease, color 150ms ease;
84
+ }
85
+ headerbar button:hover {
86
+ background-color: rgba(255, 255, 255, 0.07);
87
+ color: rgba(255, 255, 255, 0.85);
88
+ }
89
+ headerbar button:active {
90
+ background-color: rgba(255, 255, 255, 0.11);
91
+ color: #ffffff;
92
+ }
93
+
94
+ /* ── Page ────────────────────────────────────────────────────────────────── */
95
+
96
+ .nothing-page {
97
+ background-color: #000000;
98
+ padding: 0 18px 40px;
99
+ }
100
+
101
+ /* ── Section labels ──────────────────────────────────────────────────────── */
102
+
103
+ .section-label {
104
+ font-family: "JetBrains Mono", monospace;
105
+ font-size: 9px;
106
+ font-weight: 700;
107
+ letter-spacing: 4px;
108
+ text-transform: uppercase;
109
+ color: rgba(255, 255, 255, 0.25);
110
+ padding: 0 2px;
111
+ margin-top: 36px;
112
+ margin-bottom: 14px;
113
+ }
114
+
115
+ /* ── Device list row wrapper ─────────────────────────────────────────────── */
116
+
117
+ .device-row-btn {
118
+ background: none;
119
+ border: none;
120
+ box-shadow: none;
121
+ padding: 0;
122
+ border-radius: 24px;
123
+ }
124
+ .device-row-btn:hover,
125
+ .device-row-btn:focus { background: none; box-shadow: none; }
126
+
127
+ /* ── Device list cards ───────────────────────────────────────────────────── */
128
+
129
+ .device-card {
130
+ background: rgba(255, 255, 255, 0.04);
131
+ border-radius: 24px;
132
+ border: 1px solid rgba(255, 255, 255, 0.08);
133
+ padding: 22px;
134
+ margin-bottom: 8px;
135
+ box-shadow: 0 4px 32px rgba(0, 0, 0, 0.6),
136
+ inset 0 1px 0 rgba(255, 255, 255, 0.06);
137
+ transition: background 200ms ease, border-color 200ms ease, box-shadow 200ms ease;
138
+ }
139
+ .device-card:hover {
140
+ background: rgba(255, 255, 255, 0.07);
141
+ border-color: rgba(255, 255, 255, 0.13);
142
+ box-shadow: 0 8px 40px rgba(0, 0, 0, 0.7),
143
+ inset 0 1px 0 rgba(255, 255, 255, 0.09);
144
+ }
145
+
146
+ .device-card-name {
147
+ font-family: "JetBrains Mono", monospace;
148
+ font-size: 16px;
149
+ font-weight: 700;
150
+ color: #ffffff;
151
+ letter-spacing: 0.2px;
152
+ }
153
+ .device-card-address {
154
+ font-family: "JetBrains Mono", monospace;
155
+ font-size: 10px;
156
+ color: rgba(255, 255, 255, 0.2);
157
+ letter-spacing: 1.5px;
158
+ margin-top: 4px;
159
+ }
160
+
161
+ .status-connected {
162
+ font-family: "JetBrains Mono", monospace;
163
+ font-size: 10px;
164
+ font-weight: 700;
165
+ color: #8fdf72;
166
+ letter-spacing: 1.5px;
167
+ }
168
+ .status-disconnected {
169
+ font-family: "JetBrains Mono", monospace;
170
+ font-size: 10px;
171
+ color: rgba(255, 255, 255, 0.18);
172
+ letter-spacing: 1.5px;
173
+ }
174
+
175
+ .status-nothing {
176
+ font-family: "JetBrains Mono", monospace;
177
+ font-size: 8px;
178
+ font-weight: 700;
179
+ letter-spacing: 2.5px;
180
+ text-transform: uppercase;
181
+ color: #e83535;
182
+ background: rgba(232, 53, 53, 0.1);
183
+ border: 1px solid rgba(232, 53, 53, 0.22);
184
+ border-radius: 6px;
185
+ padding: 3px 9px;
186
+ }
187
+
188
+ /* ── Battery progress ────────────────────────────────────────────────────── */
189
+
190
+ progressbar,
191
+ progressbar trough {
192
+ background-color: rgba(255, 255, 255, 0.07);
193
+ border-radius: 4px;
194
+ min-height: 4px;
195
+ border: none;
196
+ }
197
+ progressbar progress {
198
+ background-color: #e83535;
199
+ border-radius: 4px;
200
+ min-height: 4px;
201
+ }
202
+ progressbar.battery-high progress { background-color: #8fdf72; }
203
+ progressbar.battery-mid progress { background-color: #f0c040; }
204
+ progressbar.battery-low progress { background-color: #e85252; }
205
+
206
+ .battery-pct {
207
+ font-family: "JetBrains Mono", monospace;
208
+ font-size: 13px;
209
+ font-weight: 700;
210
+ color: #ffffff;
211
+ min-width: 38px;
212
+ }
213
+ .battery-label-small {
214
+ font-family: "JetBrains Mono", monospace;
215
+ font-size: 9px;
216
+ letter-spacing: 2px;
217
+ color: rgba(255, 255, 255, 0.22);
218
+ text-transform: uppercase;
219
+ }
220
+ .battery-pct-big {
221
+ font-family: "JetBrains Mono", monospace;
222
+ font-size: 52px;
223
+ font-weight: 700;
224
+ color: #ffffff;
225
+ letter-spacing: -2px;
226
+ }
227
+ .battery-unit {
228
+ font-family: "JetBrains Mono", monospace;
229
+ font-size: 18px;
230
+ color: rgba(255, 255, 255, 0.28);
231
+ margin-bottom: 8px;
232
+ }
233
+
234
+ /* ── Sound mode — segmented control ─────────────────────────────────────── */
235
+
236
+ .anc-container {
237
+ background: rgba(255, 255, 255, 0.035);
238
+ border-radius: 20px;
239
+ border: 1px solid rgba(255, 255, 255, 0.07);
240
+ padding: 4px;
241
+ box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.6),
242
+ inset 0 1px 0 rgba(255, 255, 255, 0.04);
243
+ }
244
+
245
+ .anc-button {
246
+ background: none;
247
+ border: none;
248
+ box-shadow: none;
249
+ border-radius: 16px;
250
+ color: rgba(255, 255, 255, 0.3);
251
+ font-family: "JetBrains Mono", monospace;
252
+ font-size: 12px;
253
+ font-weight: 600;
254
+ padding: 11px 14px;
255
+ transition: all 220ms ease;
256
+ letter-spacing: 0.2px;
257
+ }
258
+ .anc-button:hover {
259
+ background: rgba(255, 255, 255, 0.06);
260
+ color: rgba(255, 255, 255, 0.65);
261
+ }
262
+ .anc-button.active,
263
+ .anc-button:checked {
264
+ background: linear-gradient(160deg, #e83535 0%, #c02424 100%);
265
+ color: #ffffff;
266
+ font-weight: 700;
267
+ box-shadow: 0 2px 20px rgba(232, 53, 53, 0.55),
268
+ inset 0 1px 0 rgba(255, 255, 255, 0.22);
269
+ }
270
+ .anc-button.active label,
271
+ .anc-button:checked label { color: #ffffff; }
272
+ .anc-button.active:hover,
273
+ .anc-button:checked:hover {
274
+ background: linear-gradient(160deg, #f04040 0%, #cc2c2c 100%);
275
+ }
276
+
277
+ /* ── EQ preset pills ─────────────────────────────────────────────────────── */
278
+
279
+ .eq-button {
280
+ background: rgba(255, 255, 255, 0.04);
281
+ border: 1px solid rgba(255, 255, 255, 0.08);
282
+ box-shadow: none;
283
+ border-radius: 100px;
284
+ color: rgba(255, 255, 255, 0.38);
285
+ font-family: "JetBrains Mono", monospace;
286
+ font-size: 12px;
287
+ font-weight: 600;
288
+ padding: 10px 20px;
289
+ transition: all 220ms ease;
290
+ letter-spacing: 0.2px;
291
+ }
292
+ .eq-button:hover {
293
+ background: rgba(255, 255, 255, 0.08);
294
+ border-color: rgba(255, 255, 255, 0.13);
295
+ color: rgba(255, 255, 255, 0.72);
296
+ }
297
+ .eq-button.active,
298
+ .eq-button:checked {
299
+ background: linear-gradient(160deg, #e83535 0%, #c02424 100%);
300
+ border-color: transparent;
301
+ color: #ffffff;
302
+ font-weight: 700;
303
+ box-shadow: 0 2px 20px rgba(232, 53, 53, 0.5),
304
+ inset 0 1px 0 rgba(255, 255, 255, 0.22);
305
+ }
306
+ .eq-button.active label,
307
+ .eq-button:checked label { color: #ffffff; }
308
+ .eq-button.active:hover,
309
+ .eq-button:checked:hover {
310
+ background: linear-gradient(160deg, #f04040 0%, #cc2c2c 100%);
311
+ }
312
+
313
+ /* ── Volume slider ───────────────────────────────────────────────────────── */
314
+
315
+ scale trough {
316
+ background-color: rgba(255, 255, 255, 0.08);
317
+ border-radius: 8px;
318
+ min-height: 5px;
319
+ border: none;
320
+ }
321
+ scale trough highlight {
322
+ background: linear-gradient(90deg, #c42424 0%, #e83535 100%);
323
+ border-radius: 8px;
324
+ }
325
+ scale slider {
326
+ background-color: #ffffff;
327
+ border-radius: 50%;
328
+ min-width: 22px;
329
+ min-height: 22px;
330
+ border: none;
331
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.6);
332
+ }
333
+ scale slider:hover { background-color: #eeeeee; }
334
+ scale slider:active {
335
+ background-color: #dddddd;
336
+ box-shadow: 0 0 0 6px rgba(232, 53, 53, 0.18), 0 2px 10px rgba(0, 0, 0, 0.6);
337
+ }
338
+
339
+ .volume-label {
340
+ font-family: "JetBrains Mono", monospace;
341
+ font-size: 13px;
342
+ font-weight: 700;
343
+ color: rgba(255, 255, 255, 0.45);
344
+ min-width: 42px;
345
+ }
346
+
347
+ /* ── Settings group ──────────────────────────────────────────────────────── */
348
+
349
+ .settings-group {
350
+ background: rgba(255, 255, 255, 0.03);
351
+ border-radius: 22px;
352
+ border: 1px solid rgba(255, 255, 255, 0.07);
353
+ box-shadow: 0 4px 28px rgba(0, 0, 0, 0.5),
354
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
355
+ }
356
+
357
+ .settings-row {
358
+ background-color: transparent;
359
+ padding: 17px 22px;
360
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
361
+ }
362
+ .settings-row:last-child { border-bottom: none; }
363
+
364
+ .settings-row-title {
365
+ font-size: 15px;
366
+ font-weight: 500;
367
+ color: rgba(255, 255, 255, 0.88);
368
+ }
369
+ .settings-row-subtitle {
370
+ font-size: 12px;
371
+ color: rgba(255, 255, 255, 0.28);
372
+ margin-top: 3px;
373
+ }
374
+
375
+ switch {
376
+ background-color: rgba(255, 255, 255, 0.10);
377
+ border-radius: 20px;
378
+ min-width: 50px;
379
+ min-height: 28px;
380
+ border: none;
381
+ box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.4);
382
+ transition: background 200ms ease;
383
+ }
384
+ switch:checked {
385
+ background-color: #e83535;
386
+ box-shadow: 0 0 14px rgba(232, 53, 53, 0.45);
387
+ }
388
+ switch slider {
389
+ background-color: rgba(255, 255, 255, 0.55);
390
+ border-radius: 50%;
391
+ min-width: 22px;
392
+ min-height: 22px;
393
+ margin: 3px;
394
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
395
+ }
396
+ switch:checked slider {
397
+ background-color: #ffffff;
398
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.5);
399
+ }
400
+
401
+ /* ── Device info ─────────────────────────────────────────────────────────── */
402
+
403
+ .info-key {
404
+ font-family: "JetBrains Mono", monospace;
405
+ font-size: 10px;
406
+ letter-spacing: 2px;
407
+ text-transform: uppercase;
408
+ color: rgba(255, 255, 255, 0.18);
409
+ }
410
+ .info-value {
411
+ font-family: "JetBrains Mono", monospace;
412
+ font-size: 13px;
413
+ font-weight: 600;
414
+ color: rgba(255, 255, 255, 0.45);
415
+ letter-spacing: 0.3px;
416
+ }
417
+
418
+ /* ── Action buttons ──────────────────────────────────────────────────────── */
419
+
420
+ .scan-button {
421
+ background: linear-gradient(160deg, #e83535 0%, #c42424 100%);
422
+ border-radius: 100px;
423
+ color: #ffffff;
424
+ font-family: "JetBrains Mono", monospace;
425
+ font-weight: 700;
426
+ font-size: 12px;
427
+ padding: 17px 52px;
428
+ border: none;
429
+ box-shadow: 0 4px 28px rgba(232, 53, 53, 0.55),
430
+ inset 0 1px 0 rgba(255, 255, 255, 0.2);
431
+ letter-spacing: 2px;
432
+ transition: all 200ms ease;
433
+ }
434
+ .scan-button label { color: #ffffff; }
435
+ .scan-button:hover {
436
+ background: linear-gradient(160deg, #f04040 0%, #cc2c2c 100%);
437
+ box-shadow: 0 6px 36px rgba(232, 53, 53, 0.65),
438
+ inset 0 1px 0 rgba(255, 255, 255, 0.25);
439
+ }
440
+ .scan-button:active {
441
+ background: linear-gradient(160deg, #c42424 0%, #a81e1e 100%);
442
+ box-shadow: 0 2px 14px rgba(232, 53, 53, 0.4);
443
+ }
444
+
445
+ .disconnect-button {
446
+ background: rgba(232, 53, 53, 0.07);
447
+ border-radius: 100px;
448
+ color: rgba(232, 53, 53, 0.75);
449
+ font-family: "JetBrains Mono", monospace;
450
+ font-weight: 700;
451
+ font-size: 12px;
452
+ padding: 16px 40px;
453
+ border: 1px solid rgba(232, 53, 53, 0.18);
454
+ box-shadow: none;
455
+ letter-spacing: 2px;
456
+ transition: all 200ms ease;
457
+ }
458
+ .disconnect-button label { color: rgba(232, 53, 53, 0.75); }
459
+ .disconnect-button:hover {
460
+ background: rgba(232, 53, 53, 0.13);
461
+ border-color: rgba(232, 53, 53, 0.32);
462
+ color: #e83535;
463
+ box-shadow: 0 0 20px rgba(232, 53, 53, 0.15);
464
+ }
465
+ .disconnect-button:hover label { color: #e83535; }
466
+
467
+ .connect-button {
468
+ background: rgba(255, 255, 255, 0.04);
469
+ border-radius: 100px;
470
+ color: rgba(255, 255, 255, 0.6);
471
+ font-family: "JetBrains Mono", monospace;
472
+ font-weight: 700;
473
+ font-size: 12px;
474
+ padding: 16px 40px;
475
+ border: 1px solid rgba(255, 255, 255, 0.11);
476
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
477
+ letter-spacing: 2px;
478
+ transition: all 200ms ease;
479
+ }
480
+ .connect-button label { color: rgba(255, 255, 255, 0.6); }
481
+ .connect-button:hover {
482
+ background: rgba(255, 255, 255, 0.08);
483
+ border-color: rgba(255, 255, 255, 0.18);
484
+ color: rgba(255, 255, 255, 0.9);
485
+ }
486
+ .connect-button:hover label { color: rgba(255, 255, 255, 0.9); }
487
+
488
+ .connecting-button {
489
+ background: rgba(255, 255, 255, 0.03);
490
+ border-radius: 100px;
491
+ color: rgba(255, 255, 255, 0.22);
492
+ font-family: "JetBrains Mono", monospace;
493
+ font-weight: 700;
494
+ font-size: 12px;
495
+ padding: 16px 40px;
496
+ border: 1px solid rgba(255, 255, 255, 0.06);
497
+ box-shadow: none;
498
+ letter-spacing: 2px;
499
+ }
500
+ .connecting-button label { color: rgba(255, 255, 255, 0.22); }
501
+
502
+ /* ── Empty state ─────────────────────────────────────────────────────────── */
503
+
504
+ .empty-title {
505
+ font-family: "JetBrains Mono", monospace;
506
+ font-size: 10px;
507
+ font-weight: 700;
508
+ letter-spacing: 4px;
509
+ text-transform: uppercase;
510
+ color: rgba(255, 255, 255, 0.10);
511
+ }
512
+ .empty-subtitle {
513
+ font-size: 13px;
514
+ color: rgba(255, 255, 255, 0.18);
515
+ margin-top: 8px;
516
+ }
517
+
518
+ /* ── Nothing brand ───────────────────────────────────────────────────────── */
519
+
520
+ .nothing-dot {
521
+ background-color: #e83535;
522
+ border-radius: 50%;
523
+ min-width: 6px;
524
+ min-height: 6px;
525
+ box-shadow: 0 0 8px rgba(232, 53, 53, 0.7);
526
+ }
527
+
528
+ separator { background-color: rgba(255, 255, 255, 0.05); }
529
+
530
+ label { color: #ffffff; }
File without changes