@1337exp/taoui 1.0.0

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,1476 @@
1
+
2
+ .tao-button[data-v-0e8431c3] {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ justify-content: center;
6
+ gap: var(--tao-space-2);
7
+
8
+ border: none;
9
+ border-radius: var(--tao-radius-control);
10
+ cursor: pointer;
11
+ font-family: inherit;
12
+ font-weight: 500;
13
+ transition: var(--tao-transition-base);
14
+ position: relative;
15
+ }
16
+ .tao-button[data-v-0e8431c3]:active {
17
+ transform: translateY(1px);
18
+ }
19
+ .tao-button--small[data-v-0e8431c3] {
20
+ padding: var(--tao-space-1) var(--tao-space-3);
21
+ font-size: var(--tao-font-size-xs);
22
+ height: 28px;
23
+ }
24
+ .tao-button--medium[data-v-0e8431c3] {
25
+ padding: var(--tao-space-2) var(--tao-space-4);
26
+ font-size: var(--tao-font-size-md);
27
+ height: 36px;
28
+ }
29
+ .tao-button--large[data-v-0e8431c3] {
30
+ padding: var(--tao-space-2) var(--tao-space-6);
31
+ font-size: var(--tao-font-size-lg);
32
+ height: 44px;
33
+ }
34
+ .tao-button--primary[data-v-0e8431c3] {
35
+ background-color: var(--tao-color-accent);
36
+ color: var(--tao-color-on-accent);
37
+ }
38
+ .tao-button--primary[data-v-0e8431c3]:hover:not(.tao-button--disabled) {
39
+ background-color: var(--tao-color-accent-hover);
40
+ }
41
+ .tao-button--secondary[data-v-0e8431c3] {
42
+ background-color: var(--tao-color-surface-sunken);
43
+ color: var(--tao-color-text);
44
+ border: 1px solid var(--tao-color-border-strong);
45
+ }
46
+ .tao-button--secondary[data-v-0e8431c3]:hover:not(.tao-button--disabled) {
47
+ background-color: var(--tao-color-surface-hover);
48
+ color: var(--tao-color-text-strong);
49
+ }
50
+ .tao-button--ghost[data-v-0e8431c3] {
51
+ background-color: transparent;
52
+ color: var(--tao-color-accent);
53
+ }
54
+ .tao-button--ghost[data-v-0e8431c3]:hover:not(.tao-button--disabled) {
55
+ background-color: var(--tao-color-accent-subtle-hover);
56
+ }
57
+ .tao-button--danger[data-v-0e8431c3] {
58
+ background-color: var(--tao-color-danger);
59
+ color: var(--tao-color-text-strong);
60
+ }
61
+ .tao-button--danger[data-v-0e8431c3]:hover:not(.tao-button--disabled) {
62
+ background-color: var(--tao-color-danger-hover);
63
+ }
64
+ .tao-button--disabled[data-v-0e8431c3] {
65
+ opacity: 0.6;
66
+ cursor: not-allowed;
67
+ }
68
+ .tao-button--block[data-v-0e8431c3] {
69
+ width: 100%;
70
+ }
71
+ .tao-button--loading .tao-button__content[data-v-0e8431c3] {
72
+ opacity: 0;
73
+ }
74
+ .tao-button__loader[data-v-0e8431c3] {
75
+ position: absolute;
76
+ width: 16px;
77
+ height: 16px;
78
+ border: 2px solid color-mix(in srgb, currentColor 15%, transparent);
79
+ border-top-color: currentColor;
80
+ border-radius: var(--tao-radius-full);
81
+ animation: tao-spin-0e8431c3 0.8s linear infinite;
82
+ }
83
+ .tao-button__icon[data-v-0e8431c3] {
84
+ display: flex;
85
+ align-items: center;
86
+ justify-content: center;
87
+ }
88
+ @keyframes tao-spin-0e8431c3 {
89
+ to {
90
+ transform: rotate(360deg);
91
+ }
92
+ }
93
+
94
+ .tao-block[data-v-4d014dd0] {
95
+ background: var(--tao-color-surface);
96
+ color: var(--tao-color-text);
97
+ transition: var(--tao-transition-base);
98
+ }
99
+ .tao-block--shadow[data-v-4d014dd0] {
100
+ box-shadow: var(--tao-shadow-panel);
101
+ }
102
+ .tao-block--hover[data-v-4d014dd0] {
103
+ cursor: pointer;
104
+ }
105
+ .tao-block--hover[data-v-4d014dd0]:hover {
106
+ box-shadow: var(--tao-shadow-md);
107
+ }
108
+
109
+ .tao-input-wrapper[data-v-c742d574] {
110
+ display: flex;
111
+ flex-direction: column;
112
+ gap: var(--tao-space-1);
113
+ width: 100%;
114
+ }
115
+ .tao-input__label[data-v-c742d574] {
116
+ font-size: var(--tao-font-size-sm);
117
+ color: var(--tao-color-text);
118
+ font-weight: 500;
119
+ }
120
+ .tao-input[data-v-c742d574] {
121
+ padding: var(--tao-space-2) var(--tao-space-3);
122
+ border: 1px solid var(--tao-color-border-strong);
123
+ border-radius: var(--tao-radius-control);
124
+ background: var(--tao-color-input-bg);
125
+ color: var(--tao-color-input-text);
126
+ font-size: var(--tao-font-size-md);
127
+ font-family: inherit;
128
+ transition: var(--tao-transition-base);
129
+ }
130
+ .tao-input[data-v-c742d574]::placeholder {
131
+ color: var(--tao-color-input-placeholder);
132
+ }
133
+ .tao-input[data-v-c742d574]:focus {
134
+ outline: none;
135
+ border-color: var(--tao-color-accent);
136
+ box-shadow: 0 0 0 2px var(--tao-color-accent-subtle-hover);
137
+ }
138
+ .tao-input[data-v-c742d574]:disabled {
139
+ opacity: 0.6;
140
+ cursor: not-allowed;
141
+ color: var(--tao-color-input-disabled-text);
142
+ background: var(--tao-color-input-disabled-bg);
143
+ }
144
+ .tao-input--error[data-v-c742d574] {
145
+ border-color: var(--tao-color-danger);
146
+ }
147
+ .tao-input--error[data-v-c742d574]:focus {
148
+ box-shadow: 0 0 0 2px var(--tao-color-danger-subtle);
149
+ }
150
+ .tao-input__error[data-v-c742d574] {
151
+ font-size: var(--tao-font-size-xs);
152
+ color: var(--tao-color-danger);
153
+ }
154
+
155
+ .tao-card[data-v-b752c7cb] {
156
+ width: 100%;
157
+ background: var(--tao-color-surface-raised);
158
+ color: var(--tao-color-text);
159
+ transition: var(--tao-transition-base);
160
+ }
161
+ .tao-card--overflow[data-v-b752c7cb] {
162
+ overflow: visible;
163
+ }
164
+ .tao-card[data-v-b752c7cb]:not(.tao-card--overflow) {
165
+ overflow: hidden;
166
+ }
167
+ .tao-card--shadow[data-v-b752c7cb] {
168
+ box-shadow: var(--tao-shadow-panel);
169
+ }
170
+ .tao-card--shadow-bottom[data-v-b752c7cb] {
171
+ box-shadow: 0 1px 0 0 var(--tao-color-border-strong);
172
+ }
173
+ .tao-card--hover[data-v-b752c7cb] {
174
+ cursor: pointer;
175
+ }
176
+ .tao-card--hover[data-v-b752c7cb]:hover,
177
+ .tao-card--hover.tao-card--active[data-v-b752c7cb] {
178
+ box-shadow: 0 0 0 1px var(--tao-color-accent), var(--tao-shadow-lg);
179
+ }
180
+ .tao-card__cover[data-v-b752c7cb] {
181
+ overflow: hidden;
182
+ }
183
+ .tao-card__content[data-v-b752c7cb] {
184
+ display: flex;
185
+ flex-direction: column;
186
+ gap: var(--tao-space-3);
187
+ }
188
+ .tao-card__header-title[data-v-b752c7cb] {
189
+ margin: 0 0 var(--tao-space-5);
190
+ font-weight: 500;
191
+ text-align: center;
192
+ color: var(--tao-color-text-strong);
193
+ }
194
+ .tao-card__header[data-v-b752c7cb] {
195
+ margin-top: -6px;
196
+ padding: 2px 0 var(--tao-space-2);
197
+ font-size: var(--tao-font-size-sm);
198
+ font-weight: 700;
199
+ }
200
+ .tao-card__header--between[data-v-b752c7cb] {
201
+ display: flex;
202
+ justify-content: space-between;
203
+ }
204
+ .tao-card__title[data-v-b752c7cb] {
205
+ margin: 0 0 2px;
206
+ color: var(--tao-color-text-strong);
207
+ }
208
+ .tao-card__sub[data-v-b752c7cb] {
209
+ font-size: var(--tao-font-size-xs);
210
+ color: var(--tao-color-text-muted);
211
+ }
212
+ .tao-card__body[data-v-b752c7cb] {
213
+ font-size: var(--tao-font-size-md);
214
+ }
215
+
216
+ .tao-modal-overlay[data-v-4746b5a3] {
217
+ position: fixed;
218
+ inset: 0;
219
+ background: var(--tao-color-overlay);
220
+ display: flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ z-index: 1000;
224
+ padding: var(--tao-space-5);
225
+ }
226
+ .tao-modal[data-v-4746b5a3] {
227
+ background: var(--tao-color-surface-raised);
228
+ border-radius: var(--tao-radius-panel);
229
+ max-width: 500px;
230
+ width: 100%;
231
+ max-height: 90vh;
232
+ overflow-y: auto;
233
+ box-shadow: var(--tao-shadow-overlay);
234
+ }
235
+ .tao-modal__header[data-v-4746b5a3] {
236
+ display: flex;
237
+ align-items: center;
238
+ justify-content: space-between;
239
+ padding: var(--tao-space-4) var(--tao-space-5);
240
+ border-bottom: 1px solid var(--tao-color-border);
241
+ }
242
+ .tao-modal__title[data-v-4746b5a3] {
243
+ margin: 0;
244
+ font-size: var(--tao-font-size-xl);
245
+ font-weight: 600;
246
+ color: var(--tao-color-text-strong);
247
+ }
248
+ .tao-modal__close[data-v-4746b5a3] {
249
+ background: none;
250
+ border: none;
251
+ font-size: 24px;
252
+ color: var(--tao-color-text);
253
+ cursor: pointer;
254
+ padding: 0;
255
+ line-height: 1;
256
+ }
257
+ .tao-modal__close[data-v-4746b5a3]:hover {
258
+ color: var(--tao-color-text-strong);
259
+ }
260
+ .tao-modal__content[data-v-4746b5a3] {
261
+ padding: var(--tao-space-5);
262
+ }
263
+ .tao-modal__footer[data-v-4746b5a3] {
264
+ padding: var(--tao-space-4) var(--tao-space-5);
265
+ border-top: 1px solid var(--tao-color-border);
266
+ display: flex;
267
+ gap: var(--tao-space-3);
268
+ justify-content: flex-end;
269
+ }
270
+ .tao-modal-fade-enter-active[data-v-4746b5a3],
271
+ .tao-modal-fade-leave-active[data-v-4746b5a3] {
272
+ transition: opacity var(--tao-duration-base) var(--tao-ease-base);
273
+ }
274
+ .tao-modal-fade-enter-from[data-v-4746b5a3],
275
+ .tao-modal-fade-leave-to[data-v-4746b5a3] {
276
+ opacity: 0;
277
+ }
278
+
279
+ .tao-tabs[data-v-90a6a489] {
280
+ width: 100%;
281
+ max-width: 600px;
282
+ border-radius: var(--tao-radius-panel);
283
+ overflow: hidden;
284
+ border: 1px solid var(--tao-color-border);
285
+ border-top: 0;
286
+ box-shadow: var(--tao-shadow-sm);
287
+ }
288
+ .tao-tabs__list[data-v-90a6a489] {
289
+ list-style: none;
290
+ margin: 0;
291
+ padding: 0;
292
+ display: flex;
293
+ background: var(--tao-color-surface-sunken);
294
+ user-select: none;
295
+ }
296
+ .tao-tabs__list li[data-v-90a6a489] {
297
+ flex: 1;
298
+ text-align: center;
299
+ padding: var(--tao-space-3) 0;
300
+ cursor: pointer;
301
+ transition: background-color var(--tao-duration-base) var(--tao-ease-base);
302
+ }
303
+ .tao-tabs__list li a[data-v-90a6a489] {
304
+ color: var(--tao-color-text);
305
+ font-size: var(--tao-font-size-md);
306
+ font-weight: 500;
307
+ text-decoration: none;
308
+ display: block;
309
+ }
310
+ .tao-tabs__list li.active[data-v-90a6a489] {
311
+ background: var(--tao-color-accent);
312
+ }
313
+ .tao-tabs__list li.active a[data-v-90a6a489] {
314
+ color: var(--tao-color-on-accent);
315
+ }
316
+ .tao-tabs__list li.disabled[data-v-90a6a489] {
317
+ cursor: not-allowed;
318
+ background: var(--tao-color-surface);
319
+ }
320
+ .tao-tabs__list li.disabled a[data-v-90a6a489] {
321
+ color: var(--tao-color-text-disabled);
322
+ }
323
+ .tao-tabs__list li[data-v-90a6a489]:hover:not(.active, .disabled) {
324
+ background: var(--tao-color-surface-hover);
325
+ }
326
+ .tao-tabs__list li:hover:not(.active, .disabled) a[data-v-90a6a489] {
327
+ color: var(--tao-color-text-strong);
328
+ }
329
+ .tao-tabs__content[data-v-90a6a489] {
330
+ min-height: 200px;
331
+ max-height: 350px;
332
+ padding: var(--tao-space-5);
333
+ overflow: auto;
334
+ background: var(--tao-color-surface);
335
+ }
336
+
337
+ .tao-tooltip-wrapper[data-v-a22f010b] {
338
+ position: relative;
339
+ display: inline-block;
340
+ }
341
+ .tao-tooltip[data-v-a22f010b] {
342
+ position: absolute;
343
+ padding: var(--tao-space-2) var(--tao-space-3);
344
+ background: var(--tao-color-surface-raised);
345
+ color: var(--tao-color-text-strong);
346
+ font-size: var(--tao-font-size-xs);
347
+ border-radius: var(--tao-radius-control);
348
+ white-space: nowrap;
349
+ z-index: 1000;
350
+ box-shadow: var(--tao-shadow-lg);
351
+ /* Тултип — не интерактивный элемент: не должен перехватывать
352
+ курсор и мешать mouseleave на wrapper'е (иначе при наведении
353
+ на сам тултип он "залипает" и не скрывается). */
354
+ pointer-events: none;
355
+ }
356
+ .tao-tooltip[data-v-a22f010b]::after {
357
+ content: '';
358
+ position: absolute;
359
+ width: 8px;
360
+ height: 8px;
361
+ background: var(--tao-color-surface-raised);
362
+ transform: rotate(45deg);
363
+ }
364
+ .tao-tooltip--top[data-v-a22f010b] {
365
+ bottom: 100%;
366
+ left: 50%;
367
+ transform: translateX(-50%);
368
+ margin-bottom: var(--tao-space-2);
369
+ }
370
+ .tao-tooltip--top[data-v-a22f010b]::after {
371
+ top: 100%;
372
+ left: 50%;
373
+ margin-top: -4px;
374
+ margin-left: -4px;
375
+ }
376
+ .tao-tooltip--bottom[data-v-a22f010b] {
377
+ top: 100%;
378
+ left: 50%;
379
+ transform: translateX(-50%);
380
+ margin-top: var(--tao-space-2);
381
+ }
382
+ .tao-tooltip--bottom[data-v-a22f010b]::after {
383
+ bottom: 100%;
384
+ left: 50%;
385
+ margin-bottom: -4px;
386
+ margin-left: -4px;
387
+ }
388
+ .tao-tooltip--left[data-v-a22f010b] {
389
+ right: 100%;
390
+ top: 50%;
391
+ transform: translateY(-50%);
392
+ margin-right: var(--tao-space-2);
393
+ }
394
+ .tao-tooltip--left[data-v-a22f010b]::after {
395
+ right: 0;
396
+ top: 50%;
397
+ margin-top: -4px;
398
+ margin-right: -4px;
399
+ }
400
+ .tao-tooltip--right[data-v-a22f010b] {
401
+ left: 100%;
402
+ top: 50%;
403
+ transform: translateY(-50%);
404
+ margin-left: var(--tao-space-2);
405
+ }
406
+ .tao-tooltip--right[data-v-a22f010b]::after {
407
+ left: 0;
408
+ top: 50%;
409
+ margin-top: -4px;
410
+ margin-left: -4px;
411
+ }
412
+ .tao-tooltip-fade-enter-active[data-v-a22f010b],
413
+ .tao-tooltip-fade-leave-active[data-v-a22f010b] {
414
+ transition: opacity var(--tao-duration-base) var(--tao-ease-base),
415
+ transform var(--tao-duration-base) var(--tao-ease-base);
416
+ }
417
+
418
+ /* Анимация въезда/выезда сдвигается по нормали к своей стороне,
419
+ поверх базового центрирующего transform каждой позиции — иначе
420
+ общий translateX(-50%) конфликтует с left/right, где центрирование
421
+ идёт по вертикали (translateY(-50%)), и блок "убегает" в сторону. */
422
+ .tao-tooltip--top.tao-tooltip-fade-enter-from[data-v-a22f010b],
423
+ .tao-tooltip--top.tao-tooltip-fade-leave-to[data-v-a22f010b] {
424
+ opacity: 0;
425
+ transform: translateX(-50%) translateY(4px);
426
+ }
427
+ .tao-tooltip--bottom.tao-tooltip-fade-enter-from[data-v-a22f010b],
428
+ .tao-tooltip--bottom.tao-tooltip-fade-leave-to[data-v-a22f010b] {
429
+ opacity: 0;
430
+ transform: translateX(-50%) translateY(-4px);
431
+ }
432
+ .tao-tooltip--left.tao-tooltip-fade-enter-from[data-v-a22f010b],
433
+ .tao-tooltip--left.tao-tooltip-fade-leave-to[data-v-a22f010b] {
434
+ opacity: 0;
435
+ transform: translateY(-50%) translateX(4px);
436
+ }
437
+ .tao-tooltip--right.tao-tooltip-fade-enter-from[data-v-a22f010b],
438
+ .tao-tooltip--right.tao-tooltip-fade-leave-to[data-v-a22f010b] {
439
+ opacity: 0;
440
+ transform: translateY(-50%) translateX(-4px);
441
+ }
442
+
443
+ .tao-spoiler[data-v-061480fb] {
444
+ border: 1px solid var(--tao-color-border);
445
+ border-radius: var(--tao-radius-panel);
446
+ overflow: hidden;
447
+ }
448
+ .tao-spoiler__header[data-v-061480fb] {
449
+ display: flex;
450
+ align-items: center;
451
+ gap: var(--tao-space-2);
452
+ width: 100%;
453
+ min-height: 40px;
454
+ padding: var(--tao-space-3) var(--tao-space-4);
455
+ background: var(--tao-color-surface-sunken);
456
+ border: none;
457
+ cursor: pointer;
458
+ text-align: left;
459
+ }
460
+ .tao-spoiler__header[data-v-061480fb]:hover {
461
+ background: var(--tao-color-surface-hover);
462
+ }
463
+ .tao-spoiler__icon[data-v-061480fb] {
464
+ display: inline-flex;
465
+ align-items: center;
466
+ justify-content: center;
467
+ flex-shrink: 0;
468
+ width: 1em;
469
+ font-size: var(--tao-font-size-xs);
470
+ color: var(--tao-color-accent);
471
+ transition: transform var(--tao-duration-base) var(--tao-ease-base);
472
+ }
473
+ .tao-spoiler__icon--open[data-v-061480fb] {
474
+ transform: rotate(90deg);
475
+ }
476
+ .tao-spoiler__title[data-v-061480fb] {
477
+ font-weight: 500;
478
+ color: var(--tao-color-text);
479
+ }
480
+ .tao-spoiler__content[data-v-061480fb] {
481
+ overflow: hidden;
482
+ }
483
+ .tao-spoiler-slide-enter-active[data-v-061480fb],
484
+ .tao-spoiler-slide-leave-active[data-v-061480fb] {
485
+ transition: height var(--tao-duration-slow) var(--tao-ease-base);
486
+ overflow: hidden;
487
+ }
488
+ .tao-spoiler__content-inner[data-v-061480fb] {
489
+ padding: var(--tao-space-4);
490
+ background: var(--tao-color-surface);
491
+ }
492
+
493
+ .tao-copy[data-v-810f1bc7] {
494
+ display: inline-block;
495
+ }
496
+ .tao-copy__button[data-v-810f1bc7] {
497
+ padding: var(--tao-space-2) var(--tao-space-3);
498
+ background: var(--tao-color-surface-sunken);
499
+ border: 1px solid var(--tao-color-border-strong);
500
+ border-radius: var(--tao-radius-control);
501
+ color: var(--tao-color-text);
502
+ font-size: var(--tao-font-size-sm);
503
+ font-family: inherit;
504
+ cursor: pointer;
505
+ transition: var(--tao-transition-base);
506
+ }
507
+ .tao-copy__button[data-v-810f1bc7]:hover {
508
+ background: var(--tao-color-surface-hover);
509
+ border-color: var(--tao-color-accent);
510
+ color: var(--tao-color-accent);
511
+ }
512
+ .tao-copy__button--copied[data-v-810f1bc7] {
513
+ background: var(--tao-color-accent);
514
+ border-color: var(--tao-color-accent);
515
+ color: var(--tao-color-on-accent);
516
+ }
517
+
518
+ .tao-container[data-v-e2ebdf8f] {
519
+ width: 100%;
520
+ }
521
+ .tao-container--center[data-v-e2ebdf8f] {
522
+ margin: 0 auto;
523
+ }
524
+ .tao-container--slim[data-v-e2ebdf8f] {
525
+ max-width: 500px;
526
+ }
527
+ .tao-container--ultra-slim[data-v-e2ebdf8f] {
528
+ max-width: 400px;
529
+ }
530
+
531
+ .tao-space[data-v-4190f6ba] {
532
+ display: inline-flex;
533
+ flex-wrap: wrap;
534
+ column-gap: var(--tao-space-2);
535
+ row-gap: var(--tao-space-2);
536
+ }
537
+ .tao-space--vertical[data-v-4190f6ba] {
538
+ flex-direction: column;
539
+ }
540
+
541
+ /**
542
+ * TaoIcon рендерит класс icon-<name> и полагается на внешний icon-шрифт,
543
+ * который нужно подключить в проекте самостоятельно — библиотека Tao
544
+ * его не поставляет. Это осознанное соглашение (см. README).
545
+ */
546
+ .tao-icon[data-v-b561364f] {
547
+ display: inline-flex;
548
+ }
549
+ .tao-icon__value[data-v-b561364f] {
550
+ margin: var(--v2b130076);
551
+ }
552
+ .tao-icon__value--invert[data-v-b561364f] {
553
+ filter: invert();
554
+ }
555
+
556
+ .tao-loader[data-v-3a29f095] {
557
+ display: flex;
558
+ align-items: center;
559
+ justify-content: center;
560
+ text-align: center;
561
+ }
562
+ .tao-loader--inline[data-v-3a29f095] {
563
+ display: inline-block;
564
+ width: 30px;
565
+ }
566
+ .tao-loader__ellipsis[data-v-3a29f095] {
567
+ display: block;
568
+ position: relative;
569
+ }
570
+ .tao-loader__ellipsis div[data-v-3a29f095] {
571
+ position: absolute;
572
+ top: 0;
573
+ border-radius: var(--tao-radius-full);
574
+ animation-timing-function: cubic-bezier(0, 1, 1, 0);
575
+ }
576
+ .tao-loader__ellipsis div[data-v-3a29f095]:nth-child(1) {
577
+ left: var(--v052ed61b);
578
+ animation: tao-loader-grow-3a29f095 0.6s infinite;
579
+ }
580
+ .tao-loader__ellipsis div[data-v-3a29f095]:nth-child(2) {
581
+ left: var(--v052ed61b);
582
+ animation: tao-loader-move-3a29f095 0.6s infinite;
583
+ }
584
+ .tao-loader__ellipsis div[data-v-3a29f095]:nth-child(3) {
585
+ left: var(--v05f388d2);
586
+ animation: tao-loader-move-3a29f095 0.6s infinite;
587
+ }
588
+ .tao-loader__ellipsis div[data-v-3a29f095]:nth-child(4) {
589
+ left: var(--bdfc57e2);
590
+ animation: tao-loader-shrink-3a29f095 0.6s infinite;
591
+ }
592
+ @keyframes tao-loader-grow-3a29f095 {
593
+ 0% { transform: scale(0);
594
+ }
595
+ 100% { transform: scale(1);
596
+ }
597
+ }
598
+ @keyframes tao-loader-shrink-3a29f095 {
599
+ 0% { transform: scale(1);
600
+ }
601
+ 100% { transform: scale(0);
602
+ }
603
+ }
604
+ @keyframes tao-loader-move-3a29f095 {
605
+ 0% { transform: translate(0, 0);
606
+ }
607
+ 100% { transform: translate(var(--v50ec8284), 0);
608
+ }
609
+ }
610
+
611
+ .tao-image[data-v-8272e203] {
612
+ position: relative;
613
+ display: inline-block;
614
+ width: 100%;
615
+ height: 100%;
616
+ overflow: hidden;
617
+ user-select: none;
618
+ }
619
+ .tao-image img[data-v-8272e203] {
620
+ display: block;
621
+ width: 100%;
622
+ height: 100%;
623
+ object-fit: contain;
624
+ transition: opacity var(--tao-duration-slow) var(--tao-ease-base);
625
+ }
626
+ .tao-image__img--hidden[data-v-8272e203] {
627
+ opacity: 0;
628
+ }
629
+ .tao-image__img--pixelated[data-v-8272e203] {
630
+ image-rendering: optimizeSpeed;
631
+ image-rendering: -moz-crisp-edges;
632
+ image-rendering: -o-crisp-edges;
633
+ image-rendering: -webkit-optimize-contrast;
634
+ image-rendering: pixelated;
635
+ image-rendering: optimize-contrast;
636
+ -ms-interpolation-mode: nearest-neighbor;
637
+ }
638
+ .tao-image__placeholder[data-v-8272e203] {
639
+ font-size: var(--tao-font-size-sm);
640
+ font-family: var(--tao-font-family);
641
+ letter-spacing: 0.01rem;
642
+ text-align: center;
643
+ color: var(--tao-color-text-muted);
644
+ }
645
+
646
+ .tao-checkbox[data-v-0ece6da0] {
647
+ display: flex;
648
+ align-items: center;
649
+ gap: var(--tao-space-2);
650
+ cursor: pointer;
651
+ user-select: none;
652
+ font-size: var(--tao-font-size-lg);
653
+ color: var(--tao-color-text);
654
+ }
655
+ .tao-checkbox__input[data-v-0ece6da0] {
656
+ display: none;
657
+ }
658
+ .tao-checkbox__box[data-v-0ece6da0] {
659
+ position: relative;
660
+ display: flex;
661
+ align-items: center;
662
+ justify-content: center;
663
+ width: 18px;
664
+ height: 18px;
665
+ background-color: var(--tao-color-surface-raised);
666
+ border: 2px solid var(--tao-color-border-strong);
667
+ border-radius: var(--tao-radius-sm);
668
+ transition: var(--tao-transition-base);
669
+ }
670
+ .tao-checkbox__box[data-v-0ece6da0]::after {
671
+ content: '';
672
+ display: block;
673
+ width: 12px;
674
+ height: 12px;
675
+ background-color: transparent;
676
+ border-radius: 2px;
677
+ transform: scale(0);
678
+ transition: var(--tao-transition-base);
679
+ }
680
+ .tao-checkbox__label[data-v-0ece6da0] {
681
+ font-size: var(--tao-font-size-sm);
682
+ white-space: nowrap;
683
+ color: var(--tao-color-text-muted);
684
+ }
685
+ .tao-checkbox--disabled[data-v-0ece6da0] {
686
+ cursor: not-allowed;
687
+ opacity: 0.6;
688
+ }
689
+ .tao-checkbox__input:checked + .tao-checkbox__box[data-v-0ece6da0] {
690
+ border-color: var(--tao-color-accent);
691
+ background-color: var(--tao-color-accent);
692
+ }
693
+ .tao-checkbox__input:checked + .tao-checkbox__box[data-v-0ece6da0]::after {
694
+ background-color: var(--tao-color-on-accent);
695
+ transform: scale(1);
696
+ }
697
+ .tao-checkbox__input:focus-visible + .tao-checkbox__box[data-v-0ece6da0] {
698
+ outline: 2px solid var(--tao-color-accent);
699
+ outline-offset: 1px;
700
+ }
701
+
702
+ .tao-tag[data-v-f615cf3c] {
703
+ box-sizing: border-box;
704
+ display: inline-block;
705
+ height: auto;
706
+ margin: 0;
707
+ padding-inline: var(--tao-space-2);
708
+ white-space: nowrap;
709
+ text-align: start;
710
+ color: var(--tao-color-accent);
711
+ background: var(--tao-color-accent-subtle);
712
+ border: 1px solid var(--tao-color-border);
713
+ border-radius: var(--tao-radius-sm);
714
+ transition: var(--tao-transition-base);
715
+ }
716
+ .tao-tag--pointer[data-v-f615cf3c] {
717
+ cursor: pointer;
718
+ user-select: none;
719
+ }
720
+ .tao-tag--neutral[data-v-f615cf3c] {
721
+ color: var(--tao-color-text);
722
+ background: var(--tao-color-surface-sunken);
723
+ border-color: var(--tao-color-border-strong);
724
+ }
725
+ .tao-tag--success[data-v-f615cf3c] {
726
+ color: var(--tao-color-success);
727
+ background: color-mix(in srgb, var(--tao-color-success) 12%, transparent);
728
+ border-color: color-mix(in srgb, var(--tao-color-success) 30%, transparent);
729
+ }
730
+ .tao-tag--danger[data-v-f615cf3c] {
731
+ color: var(--tao-color-danger);
732
+ background: var(--tao-color-danger-subtle);
733
+ border-color: color-mix(in srgb, var(--tao-color-danger) 30%, transparent);
734
+ }
735
+
736
+ /* variant="gap" — пустой отступ заданной высоты, без линии */
737
+ .tao-divider-gap[data-v-9db02640] {
738
+ height: 40px;
739
+ }
740
+ .tao-divider-gap--small[data-v-9db02640] {
741
+ height: 20px;
742
+ }
743
+ .tao-divider-gap--big[data-v-9db02640] {
744
+ height: 60px;
745
+ }
746
+
747
+ /* variant="text" — линия с текстом посередине, затухающая по краям */
748
+ .tao-divider-text[data-v-9db02640] {
749
+ display: flex;
750
+ align-items: center;
751
+ margin: var(--tao-space-5) 0;
752
+ padding: 0 var(--tao-space-4);
753
+ opacity: 0.3;
754
+ }
755
+ .tao-divider-text__line[data-v-9db02640] {
756
+ flex: 1;
757
+ height: 1px;
758
+ border-top: 1px dashed var(--tao-color-border-strong);
759
+ }
760
+ .tao-divider-text__line--left[data-v-9db02640] {
761
+ mask: linear-gradient(90deg, transparent 0%, black 30%);
762
+ }
763
+ .tao-divider-text__line--right[data-v-9db02640] {
764
+ mask: linear-gradient(90deg, black 70%, transparent 100%);
765
+ }
766
+ .tao-divider-text__value[data-v-9db02640] {
767
+ padding: 0 var(--tao-space-4);
768
+ font-size: var(--tao-font-size-xs);
769
+ font-weight: 500;
770
+ white-space: nowrap;
771
+ color: var(--tao-color-text-muted);
772
+ }
773
+
774
+ /* variant="line" (по умолчанию) — тонкая линия с акцентным свечением по центру */
775
+ .tao-divider-line[data-v-9db02640] {
776
+ position: relative;
777
+ width: 100%;
778
+ height: 1px;
779
+ margin: var(--tao-space-5) auto;
780
+ }
781
+ .tao-divider-line[data-v-9db02640]::before {
782
+ content: '';
783
+ position: absolute;
784
+ top: 0;
785
+ left: 5%;
786
+ right: 5%;
787
+ width: 90%;
788
+ height: 1px;
789
+ background-image: linear-gradient(to right, transparent, var(--tao-color-accent), transparent);
790
+ }
791
+
792
+ .tao-animated-border[data-v-4ca22c09] {
793
+ background: var(--tao-color-surface-raised);
794
+ position: relative;
795
+ z-index: 0;
796
+ border-radius: var(--tao-animated-border-width);
797
+ }
798
+
799
+ /* Размытая копия рамки позади — даёт эффект свечения (glow).
800
+ Рендерится только при light: по умолчанию компонент — просто
801
+ переливающийся контур, без сияния, выходящего за его пределы. */
802
+ .tao-animated-border--light[data-v-4ca22c09]::before {
803
+ content: '';
804
+ position: absolute;
805
+ inset: calc(-1 * var(--tao-animated-border-width));
806
+ background: linear-gradient(60deg, #f79533, #f37055, #ef4e7b, #a166ab, #5073b8, #1098ad, #07b39b, #6fba82);
807
+ background-size: 300% 300%;
808
+ border-radius: calc(2 * var(--tao-animated-border-width));
809
+ filter: blur(var(--tao-animated-border-glow));
810
+ opacity: 0.65;
811
+ z-index: -2;
812
+ animation: tao-animated-border-gradient-4ca22c09 var(--tao-animated-border-speed) ease alternate infinite;
813
+ }
814
+
815
+ /* Сама рамка: заливка на всю область, но CSS mask вырезает внутреннюю
816
+ часть — остаётся только полоса шириной borderWidth по периметру,
817
+ поэтому получается контур, а не закрашенный прямоугольник. */
818
+ .tao-animated-border[data-v-4ca22c09]::after {
819
+ content: '';
820
+ position: absolute;
821
+ inset: calc(-1 * var(--tao-animated-border-width));
822
+ background: linear-gradient(60deg, #f79533, #f37055, #ef4e7b, #a166ab, #5073b8, #1098ad, #07b39b, #6fba82);
823
+ background-size: 300% 300%;
824
+ border-radius: calc(2 * var(--tao-animated-border-width));
825
+ padding: var(--tao-animated-border-width);
826
+ -webkit-mask:
827
+ linear-gradient(#000 0 0) content-box,
828
+ linear-gradient(#000 0 0);
829
+ -webkit-mask-composite: xor;
830
+ mask:
831
+ linear-gradient(#000 0 0) content-box,
832
+ linear-gradient(#000 0 0);
833
+ mask-composite: exclude;
834
+ z-index: -1;
835
+ animation: tao-animated-border-gradient-4ca22c09 var(--tao-animated-border-speed) ease alternate infinite;
836
+ }
837
+ @keyframes tao-animated-border-gradient-4ca22c09 {
838
+ 0% {
839
+ background-position: 0% 50%;
840
+ }
841
+ 50% {
842
+ background-position: 100% 50%;
843
+ }
844
+ 100% {
845
+ background-position: 0% 50%;
846
+ }
847
+ }
848
+
849
+ .tao-textarea[data-v-a56ad167] {
850
+ width: 100%;
851
+ min-height: 31px;
852
+ height: auto;
853
+ padding: var(--tao-space-2);
854
+ font-size: var(--tao-font-size-sm);
855
+ font-family: var(--tao-font-family);
856
+ letter-spacing: 0.01rem;
857
+ line-height: 1.4;
858
+ border: none;
859
+ border-left: 4px solid var(--tao-color-border-strong);
860
+ border-radius: var(--tao-radius-sm);
861
+ background-color: var(--tao-color-input-bg);
862
+ color: var(--tao-color-input-text);
863
+ outline: none;
864
+ resize: vertical;
865
+ transition: var(--tao-transition-base);
866
+ }
867
+ .tao-textarea[data-v-a56ad167]::placeholder {
868
+ color: var(--tao-color-input-placeholder);
869
+ }
870
+ .tao-textarea[data-v-a56ad167]:focus {
871
+ border-color: var(--tao-color-accent);
872
+ }
873
+ .tao-textarea--inverse[data-v-a56ad167] {
874
+ border-left: none;
875
+ border-right: 4px solid var(--tao-color-border-strong);
876
+ }
877
+ .tao-textarea--center[data-v-a56ad167] {
878
+ text-align: center;
879
+ }
880
+ .tao-textarea--no-border[data-v-a56ad167] {
881
+ border: none;
882
+ }
883
+ .tao-textarea--no-background[data-v-a56ad167] {
884
+ background-color: transparent;
885
+ }
886
+ .tao-textarea--no-resize[data-v-a56ad167] {
887
+ resize: none;
888
+ }
889
+ .tao-textarea--dummy[data-v-a56ad167] {
890
+ display: block;
891
+ min-height: 31px;
892
+ height: auto;
893
+ border-color: var(--tao-color-danger);
894
+ white-space: pre-wrap;
895
+ overflow-wrap: anywhere;
896
+ }
897
+
898
+ .tao-scroll-top[data-v-a6b96e61] {
899
+ overflow: hidden;
900
+ position: fixed;
901
+ display: flex;
902
+ align-items: center;
903
+ justify-content: center;
904
+ padding: 0;
905
+ cursor: pointer;
906
+ color: var(--tao-color-on-accent);
907
+ background-color: var(--tao-color-accent);
908
+ border: none;
909
+ border-radius: var(--tao-radius-full);
910
+ box-shadow: var(--tao-shadow-md);
911
+ user-select: none;
912
+ }
913
+ .tao-scroll-top[data-v-a6b96e61]:hover {
914
+ background-color: var(--tao-color-accent-hover);
915
+ }
916
+ .tao-scroll-top--no-outline[data-v-a6b96e61] {
917
+ outline: none;
918
+ }
919
+ .tao-scroll-top__content[data-v-a6b96e61] {
920
+ position: relative;
921
+ width: 100%;
922
+ height: 100%;
923
+ display: flex;
924
+ align-items: center;
925
+ justify-content: center;
926
+ }
927
+ .tao-scroll-top__icon[data-v-a6b96e61] {
928
+ position: relative;
929
+ z-index: 1;
930
+ }
931
+ .tao-scroll-top__ripple[data-v-a6b96e61] {
932
+ position: absolute;
933
+ border-radius: var(--tao-radius-full);
934
+ background-color: var(--tao-color-accent-subtle-hover);
935
+ transform: scale(0);
936
+ opacity: 0;
937
+ pointer-events: none;
938
+ }
939
+ .tao-scroll-top__ripple--active[data-v-a6b96e61] {
940
+ animation: tao-scroll-top-ripple-a6b96e61 0.75s ease-out;
941
+ }
942
+ .tao-scroll-top-fade-enter-active[data-v-a6b96e61],
943
+ .tao-scroll-top-fade-leave-active[data-v-a6b96e61] {
944
+ transition: opacity var(--tao-duration-base) var(--tao-ease-base),
945
+ transform var(--tao-duration-base) var(--tao-ease-base);
946
+ }
947
+ .tao-scroll-top-fade-enter-from[data-v-a6b96e61],
948
+ .tao-scroll-top-fade-leave-to[data-v-a6b96e61] {
949
+ opacity: 0;
950
+ transform: translateY(40px);
951
+ }
952
+ @keyframes tao-scroll-top-ripple-a6b96e61 {
953
+ from {
954
+ opacity: 1;
955
+ }
956
+ to {
957
+ transform: scale(2);
958
+ opacity: 0;
959
+ }
960
+ }
961
+
962
+ .tao-progress[data-v-3780642d] {
963
+ display: flex;
964
+ justify-content: center;
965
+ align-items: center;
966
+ width: 100%;
967
+ }
968
+ .tao-progress__container[data-v-3780642d] {
969
+ position: relative;
970
+ display: flex;
971
+ align-items: center;
972
+ gap: var(--tao-space-3);
973
+ width: 100%;
974
+ }
975
+ .tao-progress__track[data-v-3780642d] {
976
+ flex: 1;
977
+ border: 1px solid var(--tao-color-border);
978
+ border-radius: var(--tao-radius-sm);
979
+ background-color: var(--tao-color-surface-sunken);
980
+ overflow: hidden;
981
+ position: relative;
982
+ }
983
+ .tao-progress__fill[data-v-3780642d] {
984
+ height: 100%;
985
+ border-radius: var(--tao-radius-sm);
986
+ transition: width var(--tao-duration-slow) var(--tao-ease-base);
987
+ background: var(--tao-color-accent);
988
+ }
989
+ .tao-progress__side[data-v-3780642d] {
990
+ min-width: 40px;
991
+ font-family: 'Monaco', 'Consolas', monospace;
992
+ font-size: var(--tao-font-size-xs);
993
+ font-weight: bold;
994
+ text-align: center;
995
+ color: var(--tao-color-text);
996
+ }
997
+ .tao-progress__percentage[data-v-3780642d] {
998
+ position: absolute;
999
+ top: -12px;
1000
+ left: 50%;
1001
+ transform: translateX(-50%);
1002
+ color: var(--tao-color-text-muted);
1003
+ }
1004
+ .tao-progress__fill--animated[data-v-3780642d] {
1005
+ background: linear-gradient(
1006
+ 90deg,
1007
+ var(--tao-color-accent) 0%,
1008
+ var(--tao-color-accent-hover) 50%,
1009
+ var(--tao-color-accent) 100%
1010
+ );
1011
+ background-size: 200% 100%;
1012
+ animation: tao-progress-shimmer-3780642d 2s infinite;
1013
+ }
1014
+ @keyframes tao-progress-shimmer-3780642d {
1015
+ 0% { background-position: -200% 0;
1016
+ }
1017
+ 100% { background-position: 200% 0;
1018
+ }
1019
+ }
1020
+
1021
+ .tao-slider[data-v-9f531a81] {
1022
+ position: relative;
1023
+ width: 100%;
1024
+ height: 14px;
1025
+ cursor: pointer;
1026
+ user-select: none;
1027
+ }
1028
+ .tao-slider--show-value[data-v-9f531a81] {
1029
+ height: 20px;
1030
+ }
1031
+ .tao-slider__track[data-v-9f531a81] {
1032
+ position: absolute;
1033
+ top: 0;
1034
+ left: 0;
1035
+ width: 100%;
1036
+ height: 100%;
1037
+ border-radius: var(--tao-radius-sm);
1038
+ background-color: var(--tao-color-surface-sunken);
1039
+ }
1040
+ .tao-slider__fill[data-v-9f531a81] {
1041
+ position: absolute;
1042
+ top: 0;
1043
+ left: 0;
1044
+ height: 100%;
1045
+ background-color: var(--tao-color-accent);
1046
+ border-radius: var(--tao-radius-sm);
1047
+ }
1048
+ .tao-slider__thumb[data-v-9f531a81] {
1049
+ position: absolute;
1050
+ top: 50%;
1051
+ width: 20px;
1052
+ height: 20px;
1053
+ background-color: var(--tao-color-accent);
1054
+ border: 2px solid var(--tao-color-surface-sunken);
1055
+ border-radius: var(--tao-radius-full);
1056
+ transform: translate(-50%, -50%);
1057
+ cursor: grab;
1058
+ }
1059
+ .tao-slider__thumb[data-v-9f531a81]:active {
1060
+ cursor: grabbing;
1061
+ }
1062
+ .tao-slider__value[data-v-9f531a81],
1063
+ .tao-slider__shadow-input[data-v-9f531a81] {
1064
+ position: absolute;
1065
+ inset: 0;
1066
+ display: flex;
1067
+ align-items: center;
1068
+ justify-content: center;
1069
+ width: 100%;
1070
+ height: 100%;
1071
+ font-size: var(--tao-font-size-sm);
1072
+ font-weight: 900;
1073
+ letter-spacing: 0.05em;
1074
+ }
1075
+ .tao-slider__value[data-v-9f531a81] {
1076
+ color: var(--tao-color-text-strong);
1077
+ text-shadow: -1px -1px 0 var(--tao-color-bg), 1px -1px 0 var(--tao-color-bg),
1078
+ -1px 1px 0 var(--tao-color-bg), 1px 1px 0 var(--tao-color-bg);
1079
+ }
1080
+ .tao-slider__shadow-input[data-v-9f531a81] {
1081
+ text-align: center;
1082
+ border: none;
1083
+ background: transparent;
1084
+ color: var(--tao-color-text-strong);
1085
+ font-family: inherit;
1086
+ outline: none;
1087
+ }
1088
+
1089
+ .tao-file-drop[data-v-db5ffca4] {
1090
+ display: flex;
1091
+ gap: var(--tao-space-3);
1092
+ user-select: none;
1093
+ }
1094
+ .tao-file-drop__clear[data-v-db5ffca4] {
1095
+ display: flex;
1096
+ align-items: center;
1097
+ justify-content: center;
1098
+ width: 55px;
1099
+ text-align: center;
1100
+ border: 2px dashed var(--tao-color-danger);
1101
+ border-radius: var(--tao-radius-panel);
1102
+ color: var(--tao-color-danger);
1103
+ background-color: var(--tao-color-danger-subtle);
1104
+ cursor: pointer;
1105
+ font-family: inherit;
1106
+ transition: var(--tao-transition-base);
1107
+ }
1108
+ .tao-file-drop__clear[data-v-db5ffca4]:hover {
1109
+ background-color: color-mix(in srgb, var(--tao-color-danger) 22%, transparent);
1110
+ }
1111
+ .tao-file-drop__zone[data-v-db5ffca4] {
1112
+ flex-grow: 1;
1113
+ font-size: var(--tao-font-size-sm);
1114
+ font-family: var(--tao-font-family);
1115
+ letter-spacing: 0.01rem;
1116
+ text-align: center;
1117
+ color: var(--tao-color-text-muted);
1118
+ border: 2px dashed var(--tao-color-border-strong);
1119
+ border-radius: var(--tao-radius-panel);
1120
+ cursor: pointer;
1121
+ transition: var(--tao-transition-base);
1122
+ }
1123
+ .tao-file-drop__zone[data-v-db5ffca4]:hover {
1124
+ background-color: var(--tao-color-accent-subtle);
1125
+ border-color: var(--tao-color-accent);
1126
+ }
1127
+ .tao-file-drop__zone--dragging[data-v-db5ffca4] {
1128
+ border-color: var(--tao-color-text-strong);
1129
+ background-color: var(--tao-color-surface-sunken);
1130
+ }
1131
+ .tao-file-drop__zone--small[data-v-db5ffca4] {
1132
+ padding: var(--tao-space-5) var(--tao-space-4);
1133
+ }
1134
+ .tao-file-drop__zone--medium[data-v-db5ffca4] {
1135
+ padding: var(--tao-space-8) var(--tao-space-5);
1136
+ }
1137
+ .tao-file-drop__zone--large[data-v-db5ffca4] {
1138
+ padding: var(--tao-space-10) var(--tao-space-6);
1139
+ }
1140
+
1141
+ /* .tao-dropdown-menu__list телепортируется в body, поэтому не может
1142
+ быть scoped — стилизуем его глобально, но с уникальным неймспейсом. */
1143
+ .tao-dropdown-menu__list {
1144
+ z-index: 999999;
1145
+ position: absolute;
1146
+ top: 100%;
1147
+ min-width: 120px;
1148
+ display: flex;
1149
+ flex-direction: column;
1150
+ font-size: var(--tao-font-size-md);
1151
+ color: var(--tao-color-text);
1152
+ background-color: var(--tao-color-surface-raised);
1153
+ border: 1px solid var(--tao-color-border);
1154
+ border-radius: var(--tao-radius-control);
1155
+ box-shadow: var(--tao-shadow-md);
1156
+ }
1157
+ .tao-dropdown-menu__list .tao-dropdown-menu__item {
1158
+ padding: var(--tao-space-2) var(--tao-space-4);
1159
+ border: none;
1160
+ border-radius: var(--tao-radius-sm);
1161
+ background: none;
1162
+ white-space: nowrap;
1163
+ cursor: pointer;
1164
+ user-select: none;
1165
+ transition: var(--tao-transition-base);
1166
+ }
1167
+ .tao-dropdown-menu__list .tao-dropdown-menu__item:not(:last-child) {
1168
+ border-bottom: 1px solid var(--tao-color-border);
1169
+ }
1170
+ .tao-dropdown-menu__list .tao-dropdown-menu__item:hover {
1171
+ color: var(--tao-color-accent);
1172
+ background-color: var(--tao-color-surface-hover);
1173
+ }
1174
+
1175
+ .tao-dropdown-menu[data-v-d54be7aa] {
1176
+ position: relative;
1177
+ display: inline-block;
1178
+ }
1179
+ .tao-dropdown-menu__button[data-v-d54be7aa] {
1180
+ padding: var(--tao-space-2);
1181
+ color: var(--tao-color-text);
1182
+ border: none;
1183
+ border-radius: var(--tao-radius-control);
1184
+ background: none;
1185
+ cursor: pointer;
1186
+ user-select: none;
1187
+ transition: var(--tao-transition-base);
1188
+ }
1189
+ .tao-dropdown-menu__button[data-v-d54be7aa]:hover {
1190
+ background: var(--tao-color-surface-hover);
1191
+ }
1192
+
1193
+ .tao-pin-code[data-v-b8c7bf2c] {
1194
+ display: inline-flex;
1195
+ user-select: none;
1196
+ }
1197
+ .tao-pin-code__value[data-v-b8c7bf2c] {
1198
+ width: 50px;
1199
+ height: 56px;
1200
+ margin: 2px;
1201
+ border: 3px solid var(--tao-color-border-strong);
1202
+ border-radius: var(--tao-radius-md);
1203
+ font-size: 21px;
1204
+ font-weight: 500;
1205
+ font-family: inherit;
1206
+ text-align: center;
1207
+ letter-spacing: 0;
1208
+ color: var(--tao-color-accent);
1209
+ background: var(--tao-color-input-bg);
1210
+ transition: var(--tao-transition-base);
1211
+ cursor: text;
1212
+ outline: none;
1213
+ }
1214
+ .tao-pin-code__value--active[data-v-b8c7bf2c] {
1215
+ border-color: var(--tao-color-accent);
1216
+ }
1217
+ /**
1218
+ * Tao UI — styles entry point
1219
+ *
1220
+ * Порядок важен: primitives -> semantic (default theme) -> optional themes -> base reset.
1221
+ */
1222
+ /**
1223
+ * Tao UI — Primitive tokens
1224
+ *
1225
+ * Сырые значения без смысловой привязки. Ничего отсюда не используется
1226
+ * напрямую в компонентах — только через семантический слой (semantic.css).
1227
+ * Пользователи библиотеки обычно НЕ трогают этот файл.
1228
+ */
1229
+ :root {
1230
+ /* ---------- Color ramps ---------- */
1231
+ --tao-gray-0: #ffffff;
1232
+ --tao-gray-50: #f5f5f5;
1233
+ --tao-gray-100: #e0e0e0;
1234
+ --tao-gray-200: #bfbfbf;
1235
+ --tao-gray-300: #999999;
1236
+ --tao-gray-400: #666666;
1237
+ --tao-gray-500: #444444;
1238
+ --tao-gray-600: #333333;
1239
+ --tao-gray-700: #262626;
1240
+ --tao-gray-800: #1f1f1f;
1241
+ --tao-gray-900: #151515;
1242
+ --tao-gray-950: #0d0d0d;
1243
+
1244
+ --tao-orange-300: #ffc04a;
1245
+ --tao-orange-400: #ffb40b;
1246
+ --tao-orange-500: #ff9500;
1247
+ --tao-orange-600: #db8000;
1248
+
1249
+ --tao-red-400: #e35766;
1250
+ --tao-red-500: #dc3545;
1251
+ --tao-red-600: #c82333;
1252
+
1253
+ --tao-green-400: #3ac16e;
1254
+ --tao-green-500: #2ea85c;
1255
+ --tao-green-600: #24924e;
1256
+
1257
+ /* ---------- Spacing scale (4px base) ---------- */
1258
+ --tao-space-1: 4px;
1259
+ --tao-space-2: 8px;
1260
+ --tao-space-3: 12px;
1261
+ --tao-space-4: 16px;
1262
+ --tao-space-5: 20px;
1263
+ --tao-space-6: 24px;
1264
+ --tao-space-8: 32px;
1265
+ --tao-space-10: 40px;
1266
+
1267
+ /* ---------- Radius scale ---------- */
1268
+ --tao-radius-sm: 4px;
1269
+ --tao-radius-md: 8px;
1270
+ --tao-radius-lg: 12px;
1271
+ --tao-radius-full: 999px;
1272
+
1273
+ /* ---------- Font size scale ---------- */
1274
+ --tao-font-size-xs: 12px;
1275
+ --tao-font-size-sm: 13px;
1276
+ --tao-font-size-md: 14px;
1277
+ --tao-font-size-lg: 16px;
1278
+ --tao-font-size-xl: 18px;
1279
+
1280
+ /* ---------- Shadow scale (color-agnostic, opacity baked in) ---------- */
1281
+ --tao-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.12);
1282
+ --tao-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.15);
1283
+ --tao-shadow-lg: 0 8px 16px rgba(0, 0, 0, 0.2);
1284
+ --tao-shadow-xl: 0 20px 40px rgba(0, 0, 0, 0.3);
1285
+
1286
+ /* ---------- Motion ---------- */
1287
+ --tao-duration-fast: 0.15s;
1288
+ --tao-duration-base: 0.2s;
1289
+ --tao-duration-slow: 0.3s;
1290
+ --tao-ease-base: ease;
1291
+
1292
+ /* ---------- Font ---------- */
1293
+ --tao-font-family-base: "Roboto", sans-serif;
1294
+ }
1295
+ /**
1296
+ * Tao UI — Semantic tokens (default / dark theme)
1297
+ *
1298
+ * Это и есть публичный API темизации библиотеки. Компоненты используют
1299
+ * ТОЛЬКО эти переменные, никогда — primitives напрямую.
1300
+ *
1301
+ * Чтобы сделать свою тему — переопредели этот набор в своём CSS
1302
+ * (глобально, или через [data-tao-theme="имя"], см. themes/*.css).
1303
+ */
1304
+ :root,
1305
+ [data-tao-theme="dark"] {
1306
+ color-scheme: dark;
1307
+
1308
+ /* ---------- Brand / accent ---------- */
1309
+ --tao-color-accent: var(--tao-orange-300);
1310
+ --tao-color-accent-hover: var(--tao-orange-400);
1311
+ --tao-color-accent-active: var(--tao-orange-500);
1312
+ --tao-color-accent-subtle: color-mix(in srgb, var(--tao-color-accent) 8%, transparent);
1313
+ --tao-color-accent-subtle-hover: color-mix(in srgb, var(--tao-color-accent) 14%, transparent);
1314
+ --tao-color-on-accent: var(--tao-gray-950); /* текст поверх accent-фона */
1315
+
1316
+ /* ---------- Surfaces ---------- */
1317
+ --tao-color-bg: var(--tao-gray-900);
1318
+ --tao-color-surface: var(--tao-gray-900);
1319
+ --tao-color-surface-raised: var(--tao-gray-800);
1320
+ --tao-color-surface-sunken: color-mix(in srgb, var(--tao-gray-600) 20%, transparent);
1321
+ --tao-color-surface-hover: var(--tao-gray-700);
1322
+
1323
+ /* ---------- Borders ---------- */
1324
+ --tao-color-border: color-mix(in srgb, var(--tao-gray-600) 40%, transparent);
1325
+ --tao-color-border-strong: var(--tao-gray-500);
1326
+
1327
+ /* ---------- Text ---------- */
1328
+ --tao-color-text: var(--tao-gray-200);
1329
+ --tao-color-text-strong: var(--tao-gray-0);
1330
+ --tao-color-text-muted: var(--tao-gray-400);
1331
+ --tao-color-text-on-accent: var(--tao-gray-950);
1332
+ --tao-color-text-disabled: var(--tao-gray-300);
1333
+
1334
+ /* ---------- Links ---------- */
1335
+ --tao-color-link: var(--tao-orange-300);
1336
+ --tao-color-link-hover: var(--tao-orange-500);
1337
+ --tao-color-link-shadow: 0 0 1px color-mix(in srgb, var(--tao-orange-300) 10%, transparent),
1338
+ 0 0 6px color-mix(in srgb, var(--tao-orange-300) 60%, transparent);
1339
+
1340
+ /* ---------- Status ---------- */
1341
+ --tao-color-danger: var(--tao-red-500);
1342
+ --tao-color-danger-hover: var(--tao-red-600);
1343
+ --tao-color-danger-subtle: color-mix(in srgb, var(--tao-red-500) 15%, transparent);
1344
+ --tao-color-success: var(--tao-green-500);
1345
+ --tao-color-success-hover: var(--tao-green-600);
1346
+
1347
+ /* ---------- Form controls ---------- */
1348
+ --tao-color-input-bg: var(--tao-color-surface-sunken);
1349
+ --tao-color-input-text: var(--tao-gray-200);
1350
+ --tao-color-input-placeholder: var(--tao-gray-300);
1351
+ --tao-color-input-disabled-bg: color-mix(in srgb, var(--tao-gray-600) 10%, transparent);
1352
+ --tao-color-input-disabled-text: var(--tao-gray-300);
1353
+
1354
+ /* ---------- Overlay ---------- */
1355
+ --tao-color-overlay: rgba(0, 0, 0, 0.7);
1356
+
1357
+ /* ---------- Radii / spacing / shadows (aliasable per-theme too) ---------- */
1358
+ --tao-radius-control: var(--tao-radius-sm);
1359
+ --tao-radius-panel: var(--tao-radius-md);
1360
+ --tao-shadow-panel: var(--tao-shadow-md);
1361
+ --tao-shadow-overlay: var(--tao-shadow-xl);
1362
+
1363
+ /* ---------- Typography / motion passthrough ---------- */
1364
+ --tao-font-family: var(--tao-font-family-base);
1365
+ --tao-transition-base: all var(--tao-duration-base) var(--tao-ease-base);
1366
+ }
1367
+ /**
1368
+ * Tao UI — Light theme
1369
+ *
1370
+ * Пример того, как выглядит альтернативная тема: переопределяются
1371
+ * ТОЛЬКО семантические токены из semantic.css, ничего в компонентах
1372
+ * менять не нужно.
1373
+ *
1374
+ * Подключение: <html data-tao-theme="light">
1375
+ */
1376
+ [data-tao-theme="light"] {
1377
+ color-scheme: light;
1378
+
1379
+ --tao-color-accent: var(--tao-orange-500);
1380
+ --tao-color-accent-hover: var(--tao-orange-600);
1381
+ --tao-color-accent-active: var(--tao-orange-600);
1382
+ --tao-color-accent-subtle: color-mix(in srgb, var(--tao-color-accent) 10%, transparent);
1383
+ --tao-color-accent-subtle-hover: color-mix(in srgb, var(--tao-color-accent) 16%, transparent);
1384
+ --tao-color-on-accent: var(--tao-gray-0);
1385
+
1386
+ --tao-color-bg: var(--tao-gray-0);
1387
+ --tao-color-surface: var(--tao-gray-0);
1388
+ --tao-color-surface-raised: var(--tao-gray-50);
1389
+ --tao-color-surface-sunken: var(--tao-gray-50);
1390
+ --tao-color-surface-hover: var(--tao-gray-100);
1391
+
1392
+ --tao-color-border: var(--tao-gray-100);
1393
+ --tao-color-border-strong: var(--tao-gray-200);
1394
+
1395
+ --tao-color-text: var(--tao-gray-700);
1396
+ --tao-color-text-strong: var(--tao-gray-950);
1397
+ --tao-color-text-muted: var(--tao-gray-400);
1398
+ --tao-color-text-on-accent: var(--tao-gray-0);
1399
+ --tao-color-text-disabled: var(--tao-gray-300);
1400
+
1401
+ --tao-color-link: var(--tao-orange-600);
1402
+ --tao-color-link-hover: var(--tao-orange-500);
1403
+
1404
+ --tao-color-danger: var(--tao-red-500);
1405
+ --tao-color-danger-hover: var(--tao-red-600);
1406
+ --tao-color-danger-subtle: color-mix(in srgb, var(--tao-red-500) 10%, transparent);
1407
+ --tao-color-success: var(--tao-green-500);
1408
+ --tao-color-success-hover: var(--tao-green-600);
1409
+
1410
+ --tao-color-input-bg: var(--tao-gray-0);
1411
+ --tao-color-input-text: var(--tao-gray-950);
1412
+ --tao-color-input-placeholder: var(--tao-gray-300);
1413
+ --tao-color-input-disabled-bg: var(--tao-gray-50);
1414
+ --tao-color-input-disabled-text: var(--tao-gray-300);
1415
+
1416
+ --tao-color-overlay: rgba(0, 0, 0, 0.4);
1417
+ }
1418
+ /**
1419
+ * Tao UI — Global base styles
1420
+ *
1421
+ * Минимальный reset + глобальные штрихи (скроллбар, ссылки, инпуты).
1422
+ * Не содержит хардкод-цветов — всё через семантические токены,
1423
+ * поэтому переключение темы работает и здесь.
1424
+ */
1425
+
1426
+ *,
1427
+ *::before,
1428
+ *::after {
1429
+ box-sizing: border-box;
1430
+ }
1431
+
1432
+ html,
1433
+ body {
1434
+ padding: 0;
1435
+ margin: 0;
1436
+ font-family: var(--tao-font-family);
1437
+ background: var(--tao-color-bg);
1438
+ color: var(--tao-color-text);
1439
+ }
1440
+
1441
+ /* Scrollbar */
1442
+ ::-webkit-scrollbar {
1443
+ max-width: 5px;
1444
+ max-height: 5px;
1445
+ }
1446
+
1447
+ ::-webkit-scrollbar-track {
1448
+ background: transparent;
1449
+ }
1450
+
1451
+ ::-webkit-scrollbar-thumb {
1452
+ background: var(--tao-color-accent);
1453
+ border-radius: var(--tao-radius-full);
1454
+ }
1455
+
1456
+ /* Links */
1457
+ a {
1458
+ color: var(--tao-color-link);
1459
+ text-decoration: none;
1460
+ transition: color var(--tao-duration-base) var(--tao-ease-base);
1461
+ }
1462
+
1463
+ a:hover {
1464
+ color: var(--tao-color-link-hover);
1465
+ }
1466
+
1467
+ /* Number input spinners */
1468
+ input[type="number"]::-webkit-outer-spin-button,
1469
+ input[type="number"]::-webkit-inner-spin-button {
1470
+ -webkit-appearance: none;
1471
+ margin: 0;
1472
+ }
1473
+
1474
+ input[type="number"] {
1475
+ -moz-appearance: textfield !important;
1476
+ }