sensivity 2.5.43 → 2.5.45

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.
@@ -1,28 +1,36 @@
1
1
  :root {
2
- --bg: #050508;
3
- --bg2: #0a0a12;
4
- --bg3: #11111d;
5
- --bg4: #1a1a2e;
6
- --bg5: #22223a;
7
- --border: #1c1c30;
8
- --gold: #f0b90b;
9
- --gold2: #d4a00c;
10
- --gold-glow: #f0b90b44;
11
- --text: #e8eaed;
12
- --text2: #7a7d95;
13
- --text3: #4a4d65;
14
- --danger: #e74c3c;
15
- --green: #2ecc71;
16
- --radius: 10px;
17
- --topbar-h: 44px;
2
+ --bg: #000;
3
+ --bg2: #050605;
4
+ --bg3: #0b0d0b;
5
+ --bg4: #111411;
6
+ --bg5: #171c18;
7
+ --sidebar: #080a08;
8
+ --sidebar2: #040504;
9
+ --border: #1b251f;
10
+ --border2: #223528;
11
+ --accent: #20f568;
12
+ --accent2: #0fb84c;
13
+ --accent-dim: rgba(49, 255, 122, .2);
14
+ --gold: var(--accent);
15
+ --gold-dim: rgba(49, 255, 122, .16);
16
+ --text: #f2f2f6;
17
+ --text2: #c3cdc6;
18
+ --text3: #7f8b83;
19
+ --danger: #f15d62;
20
+ --green: #52e37c;
21
+ --panel-w: min(1120px, 92vw);
22
+ --panel-h: min(720px, 78dvh);
23
+ --radius: 6px;
18
24
  --font: 'Segoe UI', system-ui, -apple-system, sans-serif;
19
25
  }
20
26
 
21
27
  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
22
28
 
29
+ html, body { min-height: 100%; }
30
+
23
31
  body {
32
+ position: relative;
24
33
  font-family: var(--font);
25
- background: var(--bg);
26
34
  color: var(--text);
27
35
  height: 100dvh;
28
36
  overflow: hidden;
@@ -31,324 +39,1052 @@ body {
31
39
  -webkit-tap-highlight-color: transparent;
32
40
  display: flex;
33
41
  flex-direction: column;
42
+ align-items: center;
43
+ justify-content: center;
44
+ padding: 18px;
45
+ background:
46
+ radial-gradient(circle at 50% 44%, rgba(32, 245, 104, .08), transparent 32%),
47
+ linear-gradient(180deg, #000, #020302 72%);
48
+ }
49
+
50
+ body::before,
51
+ body::after {
52
+ content: '';
53
+ position: fixed;
54
+ inset: 0;
55
+ pointer-events: none;
56
+ z-index: -1;
57
+ }
58
+ body::before {
59
+ background:
60
+ radial-gradient(circle at 12% 30%, rgba(32, 245, 104, .08), transparent 22%),
61
+ radial-gradient(circle at 88% 66%, rgba(32, 245, 104, .07), transparent 24%);
62
+ }
63
+ body::after {
64
+ z-index: 0;
65
+ background-image:
66
+ radial-gradient(circle, rgba(49, 255, 122, .72) 0 1px, transparent 2px),
67
+ radial-gradient(circle, rgba(49, 255, 122, .35) 0 1px, transparent 2px),
68
+ radial-gradient(circle, rgba(255,255,255,.18) 0 1px, transparent 2px);
69
+ background-size: 78px 78px, 126px 126px, 210px 210px;
70
+ background-position: 0 0, 32px 42px, 80px 120px;
71
+ opacity: .72;
72
+ animation: sensivityParticles 13s linear infinite;
73
+ mask-image: radial-gradient(ellipse at center, #000 0 58%, transparent 82%);
74
+ }
75
+
76
+ #bg-brand {
77
+ position: fixed;
78
+ inset: 0;
79
+ z-index: 0;
80
+ pointer-events: none;
81
+ overflow: hidden;
82
+ }
83
+
84
+ .brand-mark {
85
+ position: absolute;
86
+ color: rgba(32, 245, 104, .18);
87
+ font-size: clamp(22px, 3vw, 46px);
88
+ line-height: .9;
89
+ font-weight: 950;
90
+ text-shadow: 0 0 26px rgba(32, 245, 104, .22);
34
91
  }
92
+ .brand-mark.m1 { left: 5vw; top: 8vh; transform: rotate(-6deg); }
93
+ .brand-mark.m2 { right: 5vw; top: 14vh; text-align: right; transform: rotate(5deg); }
94
+ .brand-mark.m3 { left: 7vw; bottom: 9vh; transform: rotate(4deg); }
95
+ .brand-mark.m4 { right: 7vw; bottom: 12vh; text-align: right; transform: rotate(-5deg); }
35
96
 
36
- ::-webkit-scrollbar { width: 3px; }
97
+ ::-webkit-scrollbar { width: 4px; height: 4px; }
37
98
  ::-webkit-scrollbar-track { background: transparent; }
38
- ::-webkit-scrollbar-thumb { background: var(--bg4); border-radius: 2px; }
99
+ ::-webkit-scrollbar-thumb { background: #2b3c30; border-radius: 2px; }
39
100
 
40
- /* ===== APP ===== */
41
- #app { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
101
+ @keyframes sensivityParticles {
102
+ from { background-position: 0 0, 32px 42px, 80px 120px; }
103
+ to { background-position: 96px -240px, -72px -180px, 180px -120px; }
104
+ }
105
+
106
+ #app {
107
+ position: relative;
108
+ z-index: 1;
109
+ width: var(--panel-w);
110
+ height: var(--panel-h);
111
+ min-height: 520px;
112
+ display: flex;
113
+ overflow: hidden;
114
+ background: rgba(2, 3, 2, .98);
115
+ border: 1px solid rgba(32, 245, 104, .28);
116
+ border-radius: var(--radius);
117
+ box-shadow: 0 28px 90px rgba(0, 0, 0, .62);
118
+ }
42
119
 
43
- /* ===== DESKTOP SIDEBAR ===== */
44
120
  #sidebar {
45
- width: 56px; background: var(--bg2); border-right: 1px solid var(--border);
46
- display: flex; flex-direction: column; align-items: center;
47
- padding: 12px 0; flex-shrink: 0; z-index: 10; gap: 2px;
121
+ width: 210px;
122
+ flex: 0 0 210px;
123
+ background: linear-gradient(180deg, var(--sidebar), var(--sidebar2));
124
+ border-right: 1px solid #242c27;
125
+ display: flex;
126
+ flex-direction: column;
127
+ overflow: hidden;
128
+ }
129
+
130
+ .brand {
131
+ height: 70px;
132
+ display: flex;
133
+ align-items: center;
134
+ gap: 12px;
135
+ padding: 0 22px;
136
+ color: #f9f9ff;
137
+ font-size: 20px;
138
+ font-weight: 900;
139
+ letter-spacing: 0;
140
+ }
141
+ .brand img {
142
+ width: 34px;
143
+ height: 34px;
144
+ object-fit: contain;
145
+ filter: drop-shadow(0 0 12px rgba(49, 255, 122, .28));
146
+ }
147
+ .brand span {
148
+ min-width: 0;
149
+ overflow: hidden;
150
+ text-overflow: ellipsis;
48
151
  }
49
152
 
50
- #sidebar .tab-btn {
51
- width: 38px; height: 38px; border: none; background: transparent;
52
- color: var(--text3); border-radius: 10px; cursor: pointer;
53
- display: flex; align-items: center; justify-content: center;
54
- transition: all 0.2s; position: relative;
153
+ .nav-scroll {
154
+ flex: 1;
155
+ overflow-y: auto;
156
+ padding: 8px 10px 18px;
55
157
  }
56
158
 
57
- #sidebar .tab-btn svg {
58
- width: 18px; height: 18px; stroke: currentColor;
59
- fill: none; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round;
159
+ .nav-group { margin-bottom: 18px; }
160
+ .nav-heading {
161
+ padding: 0 4px 8px;
162
+ color: #55596d;
163
+ font-size: 12px;
164
+ line-height: 1;
165
+ font-weight: 900;
166
+ letter-spacing: 0;
60
167
  }
61
168
 
62
- #sidebar .tab-btn:hover { color: var(--text); background: var(--bg3); }
63
- #sidebar .tab-btn.active {
64
- color: var(--gold); background: linear-gradient(135deg, #f0b90b22, transparent);
65
- box-shadow: 0 0 14px var(--gold-glow);
169
+ .tab-btn {
170
+ width: 100%;
171
+ height: 40px;
172
+ border: 0;
173
+ border-radius: 4px;
174
+ background: transparent;
175
+ color: #6f7287;
176
+ cursor: pointer;
177
+ display: flex;
178
+ align-items: center;
179
+ gap: 14px;
180
+ padding: 0 12px;
181
+ position: relative;
182
+ font-family: var(--font);
183
+ font-size: 13px;
184
+ font-weight: 800;
185
+ transition: background .15s ease, color .15s ease;
66
186
  }
67
- #sidebar .tab-btn.active::before {
68
- content: ''; position: absolute; left: 0; top: 8px; bottom: 8px;
69
- width: 3px; background: var(--gold); border-radius: 0 3px 3px 0;
187
+
188
+ .tab-btn svg {
189
+ width: 18px;
190
+ height: 18px;
191
+ stroke: currentColor;
192
+ fill: none;
193
+ stroke-width: 1.9;
194
+ stroke-linecap: round;
195
+ stroke-linejoin: round;
70
196
  }
71
197
 
72
- /* ===== CONTENT ===== */
73
- #content { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
198
+ .tab-btn:hover { color: #c9c6d7; background: rgba(255,255,255,.025); }
199
+ .tab-btn.active {
200
+ color: #fff;
201
+ background: rgba(255,255,255,.045);
202
+ }
203
+ .tab-btn.active::after {
204
+ content: '';
205
+ position: absolute;
206
+ top: 8px;
207
+ bottom: 8px;
208
+ right: 0;
209
+ width: 4px;
210
+ border-radius: 3px 0 0 3px;
211
+ background: var(--accent);
212
+ box-shadow: 0 0 16px rgba(49, 255, 122, .72);
213
+ }
214
+
215
+ #content {
216
+ min-width: 0;
217
+ flex: 1;
218
+ display: flex;
219
+ flex-direction: column;
220
+ overflow: hidden;
221
+ background: rgba(3, 4, 3, .98);
222
+ }
74
223
 
75
- /* ===== TOPBAR ===== */
76
224
  #topbar {
77
- height: var(--topbar-h); background: var(--bg2); border-bottom: 1px solid var(--border);
78
- display: flex; align-items: center; padding: 0 16px; flex-shrink: 0; gap: 6px; overflow: hidden;
225
+ height: 70px;
226
+ flex: 0 0 70px;
227
+ display: flex;
228
+ align-items: center;
229
+ gap: 18px;
230
+ padding: 0 22px;
231
+ border-bottom: 1px solid #242b26;
232
+ background: #0d100e;
233
+ }
234
+
235
+ .top-title {
236
+ min-width: 164px;
237
+ display: flex;
238
+ align-items: center;
239
+ gap: 12px;
79
240
  }
80
- #topbar .tb-icon svg { width: 16px; height: 16px; stroke: var(--gold); fill: none; stroke-width: 1.8; flex-shrink: 0; }
81
- #topbar .title { font-size: 13px; font-weight: 700; color: var(--text); white-space: nowrap; }
82
- #topbar .sep { color: var(--text3); margin: 0 2px; }
83
- #topbar .sub { color: var(--gold); font-size: 12px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
84
- #topbar select {
85
- margin-left: auto; background: var(--bg3); border: 1px solid var(--border);
86
- color: var(--text2); padding: 4px 8px; border-radius: 6px; font-size: 11px;
87
- font-family: var(--font); cursor: pointer; outline: none; max-width: 110px; flex-shrink: 0;
241
+ .tb-icon {
242
+ color: #87918a;
243
+ display: inline-flex;
244
+ }
245
+ .tb-icon svg {
246
+ width: 18px;
247
+ height: 18px;
248
+ stroke: currentColor;
249
+ fill: none;
250
+ stroke-width: 1.9;
251
+ }
252
+ .top-primary {
253
+ display: block;
254
+ font-size: 19px;
255
+ font-weight: 800;
256
+ color: #a8b2ab;
257
+ }
258
+ .top-secondary {
259
+ display: block;
260
+ margin-top: 1px;
261
+ color: #31f474;
262
+ font-size: 11px;
263
+ font-weight: 800;
264
+ text-transform: uppercase;
265
+ letter-spacing: 0;
266
+ }
267
+
268
+ .sub-tabs {
269
+ flex: 1;
270
+ min-width: 0;
271
+ display: flex;
272
+ align-items: center;
273
+ gap: 6px;
274
+ overflow-x: auto;
275
+ padding: 6px 0;
276
+ }
277
+ .sub-tab {
278
+ min-width: max-content;
279
+ border: 1px solid transparent;
280
+ border-radius: 4px;
281
+ background: transparent;
282
+ color: #89948c;
283
+ padding: 7px 10px;
284
+ cursor: pointer;
285
+ font-family: var(--font);
286
+ font-size: 12px;
287
+ font-weight: 800;
288
+ }
289
+ .sub-tab.active {
290
+ color: #f7fff9;
291
+ border-color: rgba(49, 255, 122, .34);
292
+ background: rgba(49, 255, 122, .08);
293
+ }
294
+ .profile-dot {
295
+ width: 36px;
296
+ height: 36px;
297
+ flex: 0 0 36px;
298
+ border-radius: 50%;
299
+ display: grid;
300
+ place-items: center;
301
+ background: #050705;
302
+ border: 1px solid rgba(49, 255, 122, .28);
303
+ box-shadow: inset 0 0 0 1px rgba(255,255,255,.04), 0 0 18px rgba(49, 255, 122, .12);
304
+ }
305
+ .profile-dot img {
306
+ width: 23px;
307
+ height: 23px;
308
+ object-fit: contain;
309
+ }
310
+
311
+ #workspace {
312
+ flex: 1;
313
+ min-height: 0;
314
+ display: flex;
315
+ overflow: hidden;
88
316
  }
89
- #topbar select:focus { border-color: var(--gold); color: var(--text); }
90
317
 
91
- /* ===== PAGES ===== */
92
318
  #pages {
93
- flex: 1; overflow-y: auto; overflow-x: hidden; padding: 12px;
94
- display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
95
- gap: 10px; align-content: start;
319
+ flex: 1 1 auto;
320
+ min-width: 0;
321
+ overflow-y: auto;
322
+ overflow-x: hidden;
323
+ padding: 20px;
324
+ display: grid;
325
+ grid-template-columns: repeat(2, minmax(250px, 1fr));
326
+ grid-auto-rows: max-content;
327
+ gap: 20px;
328
+ align-content: start;
329
+ }
330
+
331
+ #esp-preview-shell {
332
+ display: none;
333
+ flex: 0 0 372px;
334
+ min-width: 0;
335
+ padding: 20px 20px 20px 0;
336
+ overflow: hidden;
337
+ }
338
+
339
+ #workspace.has-preview #pages {
340
+ flex-basis: calc(100% - 372px);
341
+ grid-template-columns: 1fr;
342
+ }
343
+
344
+ #workspace.has-preview #esp-preview-shell {
345
+ display: block;
96
346
  }
97
347
 
98
- /* ===== CARD ===== */
99
348
  .child {
100
- background: var(--bg2); border: 1px solid var(--border);
101
- border-radius: var(--radius); padding: 14px;
102
- transition: border-color 0.2s, box-shadow 0.2s;
349
+ min-width: 0;
350
+ background: rgba(10, 11, 10, .94);
351
+ border: 1px solid rgba(43, 55, 47, .78);
352
+ border-top-color: rgba(49, 255, 122, .72);
353
+ border-radius: 8px;
354
+ padding: 18px 18px 16px;
355
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .018);
103
356
  }
104
- .child:hover { border-color: var(--bg4); }
357
+ .child:hover { border-color: rgba(68, 93, 76, .9); border-top-color: rgba(49, 255, 122, .95); }
105
358
  .child h3 {
106
- font-size: 9px; text-transform: uppercase; color: var(--gold);
107
- margin-bottom: 12px; letter-spacing: 2px; font-weight: 700;
108
- display: flex; align-items: center; gap: 8px;
359
+ font-size: 12px;
360
+ color: #95a39a;
361
+ margin-bottom: 16px;
362
+ font-weight: 900;
363
+ letter-spacing: 0;
364
+ }
365
+ .split-child {
366
+ grid-column: 1 / -1;
367
+ }
368
+ .split-controls {
369
+ display: grid;
370
+ grid-template-columns: minmax(270px, 420px) minmax(300px, 420px);
371
+ justify-content: space-between;
372
+ align-items: start;
373
+ gap: clamp(28px, 8vw, 110px);
374
+ }
375
+ .split-right {
376
+ padding-left: 24px;
377
+ border-left: 1px solid rgba(49, 255, 122, .12);
378
+ }
379
+ .empty-state {
380
+ grid-column: 1 / -1;
381
+ min-height: 220px;
382
+ display: grid;
383
+ place-items: center;
384
+ color: var(--text3);
109
385
  }
110
- .child h3::after { content: ''; flex: 1; height: 1px; background: var(--border); }
111
386
 
112
- /* ===== CONTROL ===== */
113
387
  .ctrl {
114
- margin-bottom: 8px; display: flex; align-items: center;
115
- justify-content: space-between; gap: 10px; min-height: 32px;
388
+ min-height: 38px;
389
+ display: flex;
390
+ align-items: center;
391
+ justify-content: space-between;
392
+ gap: 16px;
393
+ margin-bottom: 10px;
394
+ }
395
+ .ctrl:last-child { margin-bottom: 0; }
396
+ .ctrl > label:not(.tgl) {
397
+ min-width: 0;
398
+ color: #aeb8b0;
399
+ font-size: 13px;
400
+ line-height: 1.25;
401
+ font-weight: 800;
402
+ overflow: hidden;
403
+ text-overflow: ellipsis;
404
+ white-space: nowrap;
116
405
  }
117
- .ctrl label { font-size: 12px; color: var(--text2); flex: 1; transition: color 0.15s; }
118
- .ctrl:hover label { color: var(--text); }
406
+ .ctrl:hover > label:not(.tgl) { color: #eef6f0; }
119
407
 
120
- /* ===== PREMIUM TOGGLE ===== */
121
408
  .tgl {
122
- position: relative; width: 44px; height: 24px; flex-shrink: 0;
409
+ width: 34px;
410
+ height: 20px;
411
+ flex: 0 0 34px;
412
+ position: relative;
413
+ display: inline-flex;
414
+ align-items: center;
123
415
  }
124
- .tgl input { opacity: 0; width: 0; height: 0; }
416
+ .tgl input { opacity: 0; width: 0; height: 0; position: absolute; }
125
417
  .tgl .track {
126
- position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
127
- background: var(--bg4); border-radius: 12px; transition: all 0.3s ease;
128
- border: 1px solid var(--border); overflow: hidden;
129
- }
130
- .tgl .track::before {
131
- content: ''; position: absolute; inset: 0;
132
- background: linear-gradient(135deg, var(--gold), var(--gold2));
133
- opacity: 0; transition: opacity 0.3s;
418
+ position: absolute;
419
+ inset: 0;
420
+ cursor: pointer;
421
+ border-radius: 999px;
422
+ background: #171a17;
423
+ border: 1px solid #2a322d;
424
+ transition: background .18s ease, border-color .18s ease, box-shadow .18s ease;
134
425
  }
135
426
  .tgl .knob {
136
- position: absolute; height: 18px; width: 18px; left: 2px; bottom: 2px;
137
- background: var(--text3); border-radius: 50%; transition: all 0.3s cubic-bezier(.4,0,.2,1);
138
- z-index: 1; box-shadow: 0 1px 3px rgba(0,0,0,.3);
427
+ position: absolute;
428
+ left: 3px;
429
+ top: 50%;
430
+ width: 12px;
431
+ height: 12px;
432
+ border-radius: 50%;
433
+ background: #69736b;
434
+ transform: translateY(-50%);
435
+ transition: transform .18s ease, background .18s ease;
436
+ }
437
+ .tgl input:checked + .track {
438
+ background: #102318;
439
+ border-color: rgba(49, 255, 122, .56);
440
+ box-shadow: 0 0 12px rgba(49, 255, 122, .26);
139
441
  }
140
- .tgl input:checked + .track { border-color: var(--gold); box-shadow: 0 0 10px var(--gold-glow); }
141
- .tgl input:checked + .track::before { opacity: 1; }
142
- .tgl input:checked + .track .knob,
143
- .tgl input:checked ~ .knob { transform: translateX(22px); background: #1a1a0a; }
144
- .tgl input:disabled + .track { opacity: 0.4; cursor: not-allowed; }
442
+ .tgl input:checked + .track .knob { transform: translate(14px, -50%); background: var(--accent); }
145
443
 
146
- /* ===== PREMIUM SLIDER ===== */
444
+ .range-ctrl { align-items: flex-start; flex-direction: column; gap: 8px; }
147
445
  .rng {
148
- display: flex; align-items: center; gap: 8px; flex-shrink: 0;
446
+ width: 100%;
447
+ display: grid;
448
+ grid-template-columns: 54px 1fr;
449
+ align-items: center;
450
+ gap: 14px;
451
+ padding: 2px 0 4px;
452
+ }
453
+ .rng-val {
454
+ color: #d3ded6;
455
+ font-size: 12px;
456
+ font-weight: 900;
457
+ text-align: right;
458
+ font-variant-numeric: tabular-nums;
149
459
  }
150
460
  .rng input[type=range] {
151
- -webkit-appearance: none; width: 90px; height: 6px;
152
- background: var(--bg4); border-radius: 3px; outline: none;
461
+ -webkit-appearance: none;
462
+ width: 100%;
463
+ height: 22px;
464
+ background: transparent;
465
+ border-radius: 999px;
466
+ outline: none;
467
+ cursor: pointer;
468
+ --range-percent: 0%;
469
+ }
470
+ .rng input[type=range]::-webkit-slider-runnable-track {
471
+ height: 8px;
472
+ border-radius: 999px;
473
+ border: 1px solid rgba(32, 245, 104, .2);
474
+ background:
475
+ linear-gradient(90deg, rgba(32, 245, 104, .78) 0 var(--range-percent), #1c221e var(--range-percent) 100%);
476
+ box-shadow: inset 0 0 0 1px rgba(0,0,0,.35);
153
477
  }
154
478
  .rng input[type=range]::-webkit-slider-thumb {
155
- -webkit-appearance: none; width: 18px; height: 18px;
156
- background: var(--gold); border-radius: 50%; cursor: pointer;
157
- box-shadow: 0 0 10px var(--gold-glow); transition: transform 0.15s;
158
- }
159
- .rng input[type=range]::-webkit-slider-thumb:active { transform: scale(1.3); }
160
- .rng .rng-val {
161
- font-size: 11px; color: var(--gold); font-weight: 700;
162
- min-width: 28px; text-align: right; flex-shrink: 0;
163
- font-variant-numeric: tabular-nums;
479
+ -webkit-appearance: none;
480
+ width: 18px;
481
+ height: 18px;
482
+ margin-top: -6px;
483
+ border-radius: 50%;
484
+ background: #0f1511;
485
+ border: 3px solid #5d8269;
486
+ cursor: pointer;
487
+ box-shadow: 0 0 0 3px rgba(32, 245, 104, .1), 0 0 18px rgba(32, 245, 104, .18);
164
488
  }
165
-
166
- /* ===== INPUTS ===== */
167
- .ctrl input[type=text], .ctrl input[type=number] {
168
- background: var(--bg3); border: 1px solid var(--border); color: var(--text);
169
- padding: 5px 8px; border-radius: 6px; font-size: 12px; font-family: var(--font);
170
- width: 64px; text-align: center; outline: none; transition: border-color 0.15s;
489
+ .rng input[type=range]::-moz-range-track {
490
+ height: 8px;
491
+ border-radius: 999px;
492
+ border: 1px solid rgba(32, 245, 104, .2);
493
+ background: #1c221e;
494
+ }
495
+ .rng input[type=range]::-moz-range-progress {
496
+ height: 8px;
497
+ border-radius: 999px;
498
+ background: rgba(32, 245, 104, .78);
171
499
  }
172
- .ctrl input:focus { border-color: var(--gold); }
500
+ .rng input[type=range]::-moz-range-thumb {
501
+ width: 18px;
502
+ height: 18px;
503
+ border-radius: 50%;
504
+ background: #0f1511;
505
+ border: 3px solid #5d8269;
506
+ cursor: pointer;
507
+ }
508
+ .rng input[type=range]:active::-webkit-slider-thumb { background: var(--accent); }
173
509
 
510
+ .ctrl input[type=text],
511
+ .ctrl input[type=number],
174
512
  .ctrl select {
175
- background: var(--bg3); border: 1px solid var(--border); color: var(--text2);
176
- padding: 5px 8px; border-radius: 6px; font-size: 11px; font-family: var(--font);
177
- cursor: pointer; outline: none; max-width: 120px;
513
+ min-width: 130px;
514
+ max-width: 170px;
515
+ height: 34px;
516
+ border: 1px solid #242d27;
517
+ border-radius: 4px;
518
+ background: #0d0f0d;
519
+ color: #ecf4ee;
520
+ font: 800 12px var(--font);
521
+ outline: none;
522
+ padding: 0 10px;
178
523
  }
179
- .ctrl select:focus { border-color: var(--gold); color: var(--text); }
524
+ .ctrl select { color: #c1cbc4; cursor: pointer; }
525
+ .ctrl input:focus,
526
+ .ctrl select:focus { border-color: rgba(49, 255, 122, .7); }
180
527
 
181
- /* ===== COLOR PICKER ===== */
182
- .clr-btn {
183
- width: 28px; height: 28px; border-radius: 7px; border: 2px solid var(--border);
184
- cursor: pointer; flex-shrink: 0; transition: border-color 0.15s; position: relative;
185
- overflow: hidden; display: inline-block;
186
- }
187
- .clr-btn:hover { border-color: var(--gold); }
188
- .clr-btn input[type=color] {
189
- opacity: 0; position: absolute; inset: -4px; cursor: pointer;
528
+ .color-actions {
529
+ display: flex;
530
+ align-items: center;
531
+ gap: 10px;
190
532
  }
191
- .clr-btn .swatch {
192
- width: 100%; height: 100%; border-radius: 4px;
533
+ .clr-btn {
534
+ width: 24px;
535
+ height: 24px;
536
+ flex: 0 0 24px;
537
+ border: 0;
538
+ border-radius: 4px;
539
+ cursor: pointer;
540
+ position: relative;
541
+ overflow: hidden;
542
+ display: inline-block;
543
+ box-shadow: 0 0 0 1px rgba(255,255,255,.08), 0 0 14px rgba(49, 255, 122, .14);
193
544
  }
545
+ .clr-btn input[type=color] { opacity: 0; position: absolute; inset: -4px; cursor: pointer; }
546
+ .clr-btn .swatch { width: 100%; height: 100%; display: block; }
194
547
 
195
- /* ===== KEYBIND BUTTON ===== */
196
548
  .key-btn {
197
- background: var(--bg3); border: 1px solid var(--border); color: var(--text2);
198
- padding: 5px 12px; border-radius: 6px; font-size: 11px; font-family: var(--font);
199
- cursor: pointer; min-width: 48px; text-align: center; transition: all 0.15s; flex-shrink: 0;
200
- font-weight: 600;
549
+ min-width: 62px;
550
+ height: 32px;
551
+ border: 1px solid #1c1c25;
552
+ border-radius: 4px;
553
+ background: #18181f;
554
+ color: #d8d5e3;
555
+ cursor: pointer;
556
+ font: 900 12px var(--font);
201
557
  }
202
- .key-btn:hover { color: var(--text); border-color: var(--bg5); }
203
558
  .key-btn.listening {
204
- color: var(--gold); border-color: var(--gold);
205
- box-shadow: 0 0 12px var(--gold-glow);
206
- animation: key-pulse 0.8s infinite;
559
+ color: #fff;
560
+ border-color: var(--accent);
561
+ box-shadow: 0 0 16px rgba(49, 255, 122, .32);
562
+ }
563
+ .action-btn {
564
+ min-width: 88px;
565
+ color: #07100a;
566
+ border-color: rgba(49, 255, 122, .45);
567
+ background: var(--accent);
207
568
  }
208
- @keyframes key-pulse { 0%,100%{ box-shadow: 0 0 4px var(--gold-glow); } 50%{ box-shadow: 0 0 18px var(--gold-glow); } }
209
569
 
210
- /* ===== STATUS BAR ===== */
211
570
  #statusbar {
212
- display: flex; align-items: center; gap: 8px;
213
- padding: 6px 14px; background: var(--bg2); border-top: 1px solid var(--border);
214
- font-size: 11px; color: var(--text2); flex-shrink: 0; z-index: 20;
571
+ position: relative;
572
+ z-index: 1;
573
+ width: var(--panel-w);
574
+ min-height: 42px;
575
+ display: flex;
576
+ align-items: center;
577
+ gap: 10px;
578
+ margin-top: 8px;
579
+ padding: 0 14px;
580
+ border: 1px solid rgba(32, 245, 104, .24);
581
+ border-radius: var(--radius);
582
+ background: rgba(2, 3, 2, .96);
583
+ color: #9aa69f;
584
+ font-size: 12px;
215
585
  }
216
586
  #statusbar .s-dot {
217
- width: 7px; height: 7px; border-radius: 50%; background: var(--text3); flex-shrink: 0;
587
+ width: 8px;
588
+ height: 8px;
589
+ border-radius: 50%;
590
+ background: #5b5a68;
591
+ flex: 0 0 8px;
218
592
  }
219
- #statusbar .s-dot.live {
220
- background: var(--green); box-shadow: 0 0 8px #2ecc7188;
221
- animation: dot-pulse 1.5s infinite;
222
- }
223
- @keyframes dot-pulse { 0%,100%{ opacity: 1; } 50%{ opacity: 0.3; } }
224
- #statusbar .s-text { flex: 1; font-size: 11px; }
593
+ #statusbar .s-dot.live { background: var(--green); box-shadow: 0 0 10px rgba(82, 227, 124, .6); }
594
+ #statusbar .s-text { flex: 1; font-weight: 800; }
225
595
  #statusbar .s-btn {
226
- padding: 5px 14px; border-radius: 6px; font-size: 11px; font-weight: 700;
227
- font-family: var(--font); cursor: pointer; transition: all 0.15s;
228
- background: linear-gradient(135deg, var(--gold), var(--gold2));
229
- color: #0a0a0a; border: none; letter-spacing: 0.3px;
596
+ height: 30px;
597
+ min-width: 78px;
598
+ border: 0;
599
+ border-radius: 4px;
600
+ background: var(--accent);
601
+ color: #fff;
602
+ cursor: pointer;
603
+ font: 900 12px var(--font);
604
+ box-shadow: 0 0 16px rgba(49, 255, 122, .22);
230
605
  }
231
- #statusbar .s-btn:hover { transform: translateY(-1px); box-shadow: 0 3px 12px var(--gold-glow); }
232
- #statusbar .s-btn:disabled { opacity: 0.3; cursor: not-allowed; transform: none; }
233
- #statusbar .s-btn.stop {
234
- background: linear-gradient(135deg, var(--danger), #c0392b); color: #fff;
606
+ #statusbar .s-btn:hover { filter: brightness(1.1); }
607
+ #statusbar .s-btn:disabled { opacity: .35; cursor: not-allowed; box-shadow: none; }
608
+ #statusbar .s-btn.stop { background: var(--danger); box-shadow: 0 0 16px rgba(241, 93, 98, .24); }
609
+ #statusbar .kill-btn {
610
+ background: #151916;
611
+ color: #aaa5b8;
612
+ box-shadow: none;
235
613
  }
236
614
 
237
- /* ===== LICENSE ===== */
238
- #license-overlay {
239
- position: fixed; inset: 0; background: var(--bg);
240
- display: flex; align-items: center; justify-content: center; z-index: 1000;
615
+ #debug-toast {
616
+ position: fixed;
617
+ left: 50%;
618
+ bottom: 66px;
619
+ z-index: 900;
620
+ max-width: min(520px, calc(100vw - 28px));
621
+ transform: translateX(-50%) translateY(10px);
622
+ opacity: 0;
623
+ pointer-events: none;
624
+ padding: 12px 16px;
625
+ border: 1px solid rgba(241, 93, 98, .5);
626
+ border-radius: 8px;
627
+ background: rgba(12, 3, 4, .96);
628
+ color: #ffd8da;
629
+ font: 900 12px var(--font);
630
+ box-shadow: 0 18px 48px rgba(0,0,0,.48), 0 0 24px rgba(241, 93, 98, .16);
631
+ transition: opacity .18s ease, transform .18s ease;
241
632
  }
242
- #license-overlay::before {
243
- content: ''; position: absolute; inset: 0;
244
- background: radial-gradient(ellipse at center, #f0b90b18 0%, transparent 70%);
245
- animation: bg-pulse 3s ease-in-out infinite;
633
+ #debug-toast.show {
634
+ opacity: 1;
635
+ transform: translateX(-50%) translateY(0);
246
636
  }
247
- @keyframes bg-pulse { 0%,100%{ opacity: 0.3; } 50%{ opacity: 0.7; } }
248
637
 
638
+ #license-overlay {
639
+ position: fixed;
640
+ inset: 0;
641
+ display: flex;
642
+ align-items: center;
643
+ justify-content: center;
644
+ z-index: 1000;
645
+ background: #000;
646
+ }
249
647
  #license-box {
250
- position: relative; background: var(--bg2); border: 1px solid var(--border);
251
- border-radius: 16px; padding: 34px 28px; width: 400px; max-width: 90vw;
252
- text-align: center; box-shadow: 0 0 60px rgba(0,0,0,.5);
253
- }
254
- #license-box .logo-icon { width: 48px; height: 48px; margin: 0 auto 14px; stroke: var(--gold); fill: none; stroke-width: 1.4; }
255
- #license-box h1 { font-size: 20px; font-weight: 700; margin-bottom: 2px; }
256
- #license-box h1 span { color: var(--gold); }
257
- #license-box .subtitle { color: var(--text3); font-size: 12px; margin-bottom: 20px; }
648
+ width: min(410px, calc(100vw - 34px));
649
+ padding: 34px 28px;
650
+ text-align: center;
651
+ background: #050605;
652
+ border: 1px solid rgba(32, 245, 104, .32);
653
+ border-top-color: var(--accent);
654
+ border-radius: 8px;
655
+ box-shadow: 0 24px 70px rgba(0,0,0,.88);
656
+ }
657
+ #license-box .logo-icon { width: 56px; height: 56px; margin: 0 auto 14px; object-fit: contain; filter: drop-shadow(0 0 16px rgba(49, 255, 122, .24)); }
658
+ #license-box h1 { font-size: 23px; font-weight: 900; margin-bottom: 4px; }
659
+ #license-box h1 span { color: var(--accent); }
660
+ #license-box .subtitle { color: var(--text3); font-size: 12px; margin-bottom: 20px; font-weight: 800; }
258
661
  #license-box input[type=text] {
259
- width: 100%; background: var(--bg3); border: 1px solid var(--border);
260
- color: var(--text); padding: 10px 14px; border-radius: 8px; font-size: 14px;
261
- font-family: var(--font); outline: none; margin-bottom: 12px; text-align: center;
262
- transition: all 0.2s; letter-spacing: 1px;
662
+ width: 100%;
663
+ height: 42px;
664
+ background: #0a0c0a;
665
+ border: 1px solid #26302a;
666
+ color: #fff;
667
+ padding: 0 14px;
668
+ border-radius: 4px;
669
+ font: 800 13px var(--font);
670
+ outline: none;
671
+ margin-bottom: 12px;
672
+ text-align: center;
263
673
  }
264
- #license-box input[type=text]:focus { border-color: var(--gold); box-shadow: 0 0 0 3px #f0b90b22; }
674
+ #license-box input[type=text]:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(49, 255, 122, .14); }
265
675
  #license-box button {
266
- width: 100%; background: linear-gradient(135deg, var(--gold), var(--gold2));
267
- color: #0a0a0a; border: none; padding: 10px; border-radius: 8px; font-size: 14px;
268
- font-weight: 700; font-family: var(--font); cursor: pointer; transition: all 0.2s;
676
+ width: 100%;
677
+ height: 40px;
678
+ background: var(--accent);
679
+ color: #fff;
680
+ border: 0;
681
+ border-radius: 4px;
682
+ font: 900 13px var(--font);
683
+ cursor: pointer;
269
684
  }
270
- #license-box button:hover { transform: translateY(-1px); box-shadow: 0 4px 16px var(--gold-glow); }
271
- #license-box button:disabled { opacity: 0.5; cursor: not-allowed; transform: none; box-shadow: none; }
272
- #license-box .msg { margin-top: 10px; font-size: 12px; font-weight: 500; min-height: 16px; }
273
- #license-box .msg.ok { color: var(--green); } #license-box .msg.err { color: var(--danger); }
274
-
275
- /* ===== QR OVERLAY ===== */
276
- #qr-overlay{position:fixed;inset:0;background:rgba(5,5,8,0.93);display:none;align-items:center;justify-content:center;z-index:2000}
277
- #qr-overlay.show{display:flex}
278
- #qr-box{background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:24px;text-align:center;box-shadow:0 0 40px var(--gold-dim);max-width:90vw}
279
- #qr-box canvas{display:block;margin:0 auto;max-width:240px;max-height:240px}
685
+ #license-box button:disabled { opacity: .45; cursor: not-allowed; }
686
+ #license-box .msg { margin-top: 10px; font-size: 12px; font-weight: 800; min-height: 16px; }
687
+ #license-box .msg.ok { color: var(--green); }
688
+ #license-box .msg.err { color: var(--danger); }
280
689
 
281
- /* ===== DESKTOP LAYOUT ===== */
282
- @media(min-width:769px) {
283
- #app { flex-direction: row; }
284
- #sidebar { position: sticky; top: 0; height: 100vh; }
690
+ #qr-overlay {
691
+ position: fixed;
692
+ inset: 0;
693
+ display: none;
694
+ align-items: center;
695
+ justify-content: center;
696
+ z-index: 2000;
697
+ background: rgba(0, 0, 0, .96);
285
698
  }
699
+ #qr-overlay.show { display: flex; }
700
+ #qr-box {
701
+ width: min(340px, calc(100vw - 30px));
702
+ background: #050605;
703
+ border: 1px solid rgba(49, 255, 122, .3);
704
+ border-radius: 8px;
705
+ padding: 22px;
706
+ text-align: center;
707
+ box-shadow: 0 24px 70px rgba(0,0,0,.5);
708
+ }
709
+ #qr-box img { width: min(240px, 74vw) !important; height: auto !important; border-radius: 4px !important; }
286
710
 
287
- /* ===== MOBILE ===== */
288
- @media(max-width:768px) {
289
- body { background: var(--bg); }
290
-
291
- #app { flex-direction: column; }
711
+ .esp-preview-panel {
712
+ height: 100%;
713
+ min-height: 430px;
714
+ background: rgba(8, 10, 8, .96);
715
+ border: 1px solid rgba(43, 55, 47, .78);
716
+ border-top-color: rgba(49, 255, 122, .78);
717
+ border-radius: 8px;
718
+ padding: 18px;
719
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.02), 0 18px 42px rgba(0,0,0,.18);
720
+ }
721
+ .esp-preview-panel h3 {
722
+ font-size: 12px;
723
+ color: #819086;
724
+ margin-bottom: 16px;
725
+ font-weight: 900;
726
+ letter-spacing: 0;
727
+ }
728
+ .esp-stage {
729
+ height: calc(100% - 32px);
730
+ min-height: 360px;
731
+ position: relative;
732
+ overflow: hidden;
733
+ border-radius: 6px;
734
+ background:
735
+ linear-gradient(180deg, rgba(22, 27, 24, .9) 0 54%, rgba(12, 23, 15, .94) 54%),
736
+ radial-gradient(circle at 72% 42%, rgba(49, 255, 122, .13), transparent 28%);
737
+ border: 1px solid #202922;
738
+ }
739
+ .esp-grid-bg {
740
+ position: absolute;
741
+ inset: 0;
742
+ background:
743
+ linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
744
+ linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
745
+ background-size: 30px 30px;
746
+ opacity: .35;
747
+ }
748
+ .esp-horizon {
749
+ position: absolute;
750
+ left: -20%;
751
+ right: -20%;
752
+ top: 54%;
753
+ height: 1px;
754
+ background: rgba(255,255,255,.11);
755
+ }
756
+ .esp-crosshair {
757
+ position: absolute;
758
+ left: 50%;
759
+ top: 48%;
760
+ width: 28px;
761
+ height: 28px;
762
+ transform: translate(-50%, -50%);
763
+ border: 1px solid rgba(255,255,255,.2);
764
+ border-radius: 50%;
765
+ }
766
+ .esp-crosshair::before,
767
+ .esp-crosshair::after {
768
+ content: '';
769
+ position: absolute;
770
+ background: rgba(255,255,255,.28);
771
+ }
772
+ .esp-crosshair::before { width: 1px; height: 38px; left: 50%; top: -5px; }
773
+ .esp-crosshair::after { height: 1px; width: 38px; top: 50%; left: -5px; }
774
+ .esp-target {
775
+ position: absolute;
776
+ left: 50%;
777
+ top: 52%;
778
+ width: 98px;
779
+ height: 188px;
780
+ transform: translate(-50%, -50%);
781
+ }
782
+ .esp-target.is-off { opacity: .32; filter: grayscale(.4); }
783
+ .esp-box {
784
+ position: absolute;
785
+ inset: 18px 16px 12px;
786
+ border: var(--esp-thick) dashed var(--esp-color);
787
+ filter: drop-shadow(0 0 7px var(--esp-color));
788
+ z-index: 3;
789
+ }
790
+ .esp-box.solid { border-style: solid; }
791
+ .esp-box.corner { border: 0; }
792
+ .esp-box.corner::before,
793
+ .esp-box.corner::after {
794
+ content: '';
795
+ position: absolute;
796
+ inset: 0;
797
+ background:
798
+ linear-gradient(var(--esp-color), var(--esp-color)) left top / 20px var(--esp-thick) no-repeat,
799
+ linear-gradient(var(--esp-color), var(--esp-color)) left top / var(--esp-thick) 20px no-repeat,
800
+ linear-gradient(var(--esp-color), var(--esp-color)) right top / 20px var(--esp-thick) no-repeat,
801
+ linear-gradient(var(--esp-color), var(--esp-color)) right top / var(--esp-thick) 20px no-repeat,
802
+ linear-gradient(var(--esp-color), var(--esp-color)) left bottom / 20px var(--esp-thick) no-repeat,
803
+ linear-gradient(var(--esp-color), var(--esp-color)) left bottom / var(--esp-thick) 20px no-repeat,
804
+ linear-gradient(var(--esp-color), var(--esp-color)) right bottom / 20px var(--esp-thick) no-repeat,
805
+ linear-gradient(var(--esp-color), var(--esp-color)) right bottom / var(--esp-thick) 20px no-repeat;
806
+ }
807
+ .esp-head {
808
+ position: absolute;
809
+ left: 50%;
810
+ top: 27px;
811
+ width: var(--head-size);
812
+ height: var(--head-size);
813
+ transform: translateX(-50%);
814
+ border: 2px solid var(--esp-color);
815
+ border-radius: 50%;
816
+ filter: drop-shadow(0 0 8px var(--esp-color));
817
+ z-index: 6;
818
+ }
819
+ .esp-skeleton {
820
+ position: absolute;
821
+ left: 50%;
822
+ top: 60px;
823
+ width: 58px;
824
+ height: 102px;
825
+ transform: translateX(-50%);
826
+ z-index: 5;
827
+ pointer-events: none;
828
+ }
829
+ .esp-skeleton span {
830
+ position: absolute;
831
+ background: var(--esp-color);
832
+ box-shadow: 0 0 8px var(--esp-color);
833
+ }
834
+ .esp-skeleton.dashed span { background: repeating-linear-gradient(180deg, var(--esp-color) 0 7px, transparent 7px 11px); }
835
+ .esp-skeleton .spine { left: 50%; top: 0; width: var(--esp-thick); height: 60px; transform: translateX(-50%); }
836
+ .esp-skeleton .arms { left: 12px; top: 24px; width: 34px; height: var(--esp-thick); transform: rotate(8deg); }
837
+ .esp-skeleton .leg { bottom: 0; width: var(--esp-thick); height: 46px; transform-origin: top; }
838
+ .esp-skeleton .leg.left { left: 27px; transform: rotate(17deg); }
839
+ .esp-skeleton .leg.right { left: 30px; transform: rotate(-17deg); }
840
+ .esp-bar {
841
+ position: absolute;
842
+ top: 20px;
843
+ bottom: 14px;
844
+ width: 5px;
845
+ background: rgba(0,0,0,.55);
846
+ border-radius: 999px;
847
+ overflow: hidden;
848
+ box-shadow: 0 0 0 1px rgba(255,255,255,.08);
849
+ z-index: 4;
850
+ }
851
+ .esp-bar.health { left: 5px; }
852
+ .esp-bar.armor { right: 5px; }
853
+ .esp-bar span {
854
+ position: absolute;
855
+ left: 0;
856
+ right: 0;
857
+ bottom: 0;
858
+ height: 78%;
859
+ background: var(--esp-color);
860
+ }
861
+ .esp-bar.armor span { height: 54%; }
862
+ .esp-text {
863
+ position: absolute;
864
+ color: var(--esp-color);
865
+ font-size: 11px;
866
+ line-height: 1;
867
+ font-weight: 900;
868
+ white-space: nowrap;
869
+ text-shadow: 0 1px 4px #000, 0 0 8px var(--esp-color);
870
+ z-index: 7;
871
+ }
872
+ .esp-text.top { left: 50%; top: 0; transform: translate(-50%, -100%); }
873
+ .esp-text.bottom { left: 50%; bottom: -2px; transform: translate(-50%, 100%); }
874
+ .esp-text.left-upper { left: 3px; top: 22px; transform: translateX(-100%); }
875
+ .esp-text.right-upper { right: 3px; top: 22px; transform: translateX(100%); }
876
+ .esp-text.left-lower { left: 3px; bottom: 24px; transform: translateX(-100%); }
877
+ .esp-text.right-lower { right: 3px; bottom: 24px; transform: translateX(100%); }
878
+ .esp-line {
879
+ position: absolute;
880
+ left: 50%;
881
+ width: var(--esp-thick);
882
+ height: 38%;
883
+ background: var(--esp-color);
884
+ box-shadow: 0 0 8px var(--esp-color);
885
+ transform-origin: top;
886
+ z-index: 2;
887
+ }
888
+ .esp-line.place-0 { bottom: 0; top: auto; transform: translateX(-50%) rotate(0deg); }
889
+ .esp-line.place-1 { top: 50%; transform: translate(-50%, -4px) rotate(0deg); }
890
+ .esp-line.place-2 { top: 0; transform: translateX(-50%) rotate(0deg); }
891
+ .esp-tracer {
892
+ position: absolute;
893
+ left: 18%;
894
+ top: 82%;
895
+ width: 72%;
896
+ height: var(--esp-thick);
897
+ background: var(--esp-color);
898
+ transform: rotate(-19deg);
899
+ transform-origin: left center;
900
+ box-shadow: 0 0 8px var(--esp-color);
901
+ z-index: 2;
902
+ }
903
+ .esp-offscreen {
904
+ position: absolute;
905
+ right: 26px;
906
+ top: 34px;
907
+ width: 0;
908
+ height: 0;
909
+ border-top: 10px solid transparent;
910
+ border-bottom: 10px solid transparent;
911
+ border-left: 18px solid var(--esp-color);
912
+ filter: drop-shadow(0 0 8px var(--esp-color));
913
+ }
914
+ .esp-caption {
915
+ position: absolute;
916
+ left: 12px;
917
+ bottom: 10px;
918
+ color: #777486;
919
+ font-size: 11px;
920
+ font-weight: 900;
921
+ }
292
922
 
293
- /* Bottom tab bar */
923
+ @media (max-width: 900px) {
924
+ body {
925
+ padding: 0;
926
+ justify-content: flex-start;
927
+ }
928
+ #app {
929
+ width: 100vw;
930
+ height: calc(100dvh - 48px);
931
+ min-height: 0;
932
+ border: 0;
933
+ border-radius: 0;
934
+ }
294
935
  #sidebar {
295
- width: 100%; height: 52px; flex-direction: row; justify-content: space-around;
296
- align-items: center; padding: 0 2px; border-right: none; border-top: 1px solid var(--border);
297
- order: 2; flex-shrink: 0; gap: 0; overflow-x: auto;
298
- background: var(--bg2);
936
+ width: 66px;
937
+ flex-basis: 66px;
299
938
  }
300
- #sidebar .tab-btn {
301
- width: 40px; height: 40px; min-width: 40px; border-radius: 8px; flex-shrink: 0;
939
+ .brand {
940
+ height: 58px;
941
+ padding: 0;
942
+ justify-content: center;
943
+ font-size: 0;
944
+ letter-spacing: 0;
302
945
  }
303
- #sidebar .tab-btn svg { width: 17px; height: 17px; }
304
- #sidebar .tab-btn.active::before {
305
- left: 4px; right: 4px; top: auto; bottom: -5px;
306
- width: auto; height: 3px; border-radius: 3px 3px 0 0;
946
+ .brand img { width: 34px; height: 34px; }
947
+ .brand span { display: none; }
948
+ .nav-scroll { padding: 6px; }
949
+ .nav-heading {
950
+ display: none;
951
+ }
952
+ .tab-btn {
953
+ width: 52px;
954
+ height: 48px;
955
+ padding: 0;
956
+ justify-content: center;
957
+ gap: 0;
958
+ margin-bottom: 4px;
959
+ }
960
+ .tab-label { display: none; }
961
+ #topbar {
962
+ height: auto;
963
+ min-height: 64px;
964
+ padding: 10px 14px;
965
+ flex-wrap: wrap;
966
+ gap: 8px;
967
+ }
968
+ .top-title {
969
+ min-width: 0;
970
+ flex: 1 1 auto;
971
+ }
972
+ .top-primary { font-size: 16px; }
973
+ .profile-dot { width: 32px; height: 32px; flex-basis: 32px; }
974
+ .sub-tabs {
975
+ order: 3;
976
+ flex: 0 0 100%;
977
+ gap: 4px;
978
+ }
979
+ .sub-tab {
980
+ padding: 7px 9px;
981
+ font-size: 11px;
982
+ }
983
+ #workspace {
984
+ overflow-y: auto;
985
+ flex-direction: column;
307
986
  }
308
-
309
- #content { order: 1; flex: 1; overflow: hidden; }
310
-
311
- #topbar { height: 40px; padding: 0 10px; gap: 4px; }
312
- #topbar .title { font-size: 12px; }
313
- #topbar .sub { font-size: 11px; }
314
- #topbar select { max-width: 90px; font-size: 10px; padding: 3px 6px; }
315
-
316
987
  #pages {
317
- padding: 8px; grid-template-columns: 1fr; gap: 8px;
988
+ flex: 0 0 auto;
989
+ overflow: visible;
990
+ grid-template-columns: 1fr;
991
+ gap: 14px;
992
+ padding: 14px;
318
993
  }
319
-
320
- .child { padding: 12px 10px; border-radius: 8px; }
321
- .child h3 { font-size: 8px; margin-bottom: 10px; }
322
-
323
- .ctrl { margin-bottom: 6px; min-height: 30px; gap: 6px; }
324
- .ctrl label { font-size: 11px; }
325
-
326
- .tgl { width: 48px; height: 26px; }
327
- .tgl .knob { height: 20px; width: 20px; }
328
- .tgl input:checked + .track .knob,
329
- .tgl input:checked ~ .knob { transform: translateX(24px); }
330
-
331
- .rng input[type=range] { width: 70px; height: 6px; }
332
- .rng input[type=range]::-webkit-slider-thumb { width: 22px; height: 22px; }
333
- .rng .rng-val { font-size: 12px; }
334
-
335
- .key-btn { padding: 6px 14px; min-width: 52px; font-size: 11px; }
336
-
337
- .clr-btn { width: 32px; height: 32px; }
338
-
339
- #statusbar { order: 3; padding: 5px 10px; font-size: 10px; border-top: none; border-bottom: 1px solid var(--border); }
340
- #statusbar .s-btn { padding: 6px 14px; font-size: 11px; }
341
-
342
- #license-box { padding: 28px 18px; border-radius: 14px; }
343
- #license-box h1 { font-size: 18px; }
344
- #license-box input[type=text] { padding: 12px 12px; font-size: 16px; }
345
- #license-box button { padding: 12px; font-size: 15px; }
346
-
347
- input, select, button { font-size: 16px !important; }
994
+ #workspace.has-preview #pages {
995
+ flex-basis: auto;
996
+ }
997
+ #esp-preview-shell {
998
+ order: -1;
999
+ flex: 0 0 auto;
1000
+ padding: 14px 14px 0;
1001
+ overflow: visible;
1002
+ }
1003
+ .child {
1004
+ padding: 17px 16px;
1005
+ }
1006
+ .split-controls {
1007
+ grid-template-columns: 1fr;
1008
+ gap: 8px;
1009
+ }
1010
+ .split-right {
1011
+ padding-left: 0;
1012
+ border-left: 0;
1013
+ }
1014
+ .ctrl {
1015
+ min-height: 46px;
1016
+ gap: 12px;
1017
+ }
1018
+ .ctrl > label:not(.tgl) {
1019
+ white-space: normal;
1020
+ overflow: visible;
1021
+ text-overflow: clip;
1022
+ word-break: break-word;
1023
+ font-size: 12px;
1024
+ }
1025
+ .ctrl input[type=text],
1026
+ .ctrl input[type=number],
1027
+ .ctrl select {
1028
+ min-width: 112px;
1029
+ max-width: 142px;
1030
+ font-size: 12px;
1031
+ }
1032
+ .esp-preview-panel {
1033
+ min-height: 360px;
1034
+ height: auto;
1035
+ }
1036
+ .esp-stage { height: 300px; min-height: 300px; }
1037
+ #statusbar {
1038
+ position: fixed;
1039
+ left: 0;
1040
+ right: 0;
1041
+ bottom: 0;
1042
+ width: auto;
1043
+ margin: 0;
1044
+ min-height: 48px;
1045
+ border-left: 0;
1046
+ border-right: 0;
1047
+ border-bottom: 0;
1048
+ border-radius: 0;
1049
+ gap: 7px;
1050
+ overflow: hidden;
1051
+ }
1052
+ #statusbar .s-text { flex: 0 0 auto; min-width: 0; }
1053
+ #statusbar .s-btn {
1054
+ min-width: 52px;
1055
+ flex: 0 0 52px;
1056
+ height: 32px;
1057
+ padding: 0 8px;
1058
+ font-size: 10px;
1059
+ }
1060
+ #statusbar .kill-btn { flex-basis: 46px; min-width: 46px; }
1061
+ #debug-toast {
1062
+ bottom: 58px;
1063
+ left: 66px;
1064
+ right: 10px;
1065
+ max-width: none;
1066
+ transform: translateY(10px);
1067
+ }
1068
+ #debug-toast.show { transform: translateY(0); }
348
1069
  }
349
1070
 
350
- @media(max-width:380px) {
351
- #sidebar .tab-btn { width: 34px; height: 36px; min-width: 34px; }
352
- #sidebar .tab-btn svg { width: 15px; height: 15px; }
353
- .rng input[type=range] { width: 56px; }
1071
+ @media (max-width: 600px) {
1072
+ #sidebar {
1073
+ width: 54px;
1074
+ flex-basis: 54px;
1075
+ }
1076
+ .tab-btn {
1077
+ width: 42px;
1078
+ height: 44px;
1079
+ }
1080
+ .tab-btn svg { width: 17px; height: 17px; }
1081
+ .brand { font-size: 0; }
1082
+ #topbar { padding: 9px 10px; }
1083
+ .sub-tab { font-size: 10px; padding: 6px 8px; }
1084
+ .rng { grid-template-columns: 46px 1fr; gap: 10px; }
1085
+ .color-row { align-items: flex-start; }
1086
+ .color-actions { flex-shrink: 0; }
1087
+ .esp-stage { height: 280px; min-height: 280px; }
1088
+ .esp-preview-panel { min-height: 334px; }
1089
+ #debug-toast { left: 56px; right: 8px; }
354
1090
  }