1use crate::*;
2
3class! {
4 pub c_app_root {
9 display: "flex";
10 height: "100%";
11 padding-top: var!(safe-area-inset-top);
12 padding-bottom: var!(safe-area-inset-bottom);
13 font-family: "system-ui, -apple-system, sans-serif";
14 background: var!(background);
15 color: var!(foreground);
16 user-select: "none";
17 -webkit-user-select: "none";
18 -webkit-font-smoothing: "antialiased";
19 -moz-osx-font-smoothing: "grayscale";
20 text-rendering: "optimizeLegibility";
21 scrollbar-color: format!("{} {}", var!(scrollbar-thumb), var!(scrollbar-track));
22 ::-webkit-scrollbar-thumb {
23 background: var!(scrollbar-thumb);
24 border: "none";
25 border-radius: "0px";
26 }
27 ::-webkit-scrollbar-thumb:hover {
28 background: var!(scrollbar-thumb-hover);
29 }
30 ::-webkit-scrollbar-thumb:active {
31 background: var!(scrollbar-thumb-active);
32 }
33
34 *, *::before, *::after {
39 box-sizing: "border-box";
40 }
41 h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure, blockquote, pre, hr {
42 margin: "0px";
43 padding: "0px";
44 }
45 ul, ol {
46 list-style: "none";
47 padding: "0px";
48 margin: "0px";
49 }
50 a {
51 color: "inherit";
52 text-decoration: "none";
53 }
54 button {
55 appearance: "none";
56 -webkit-appearance: "none";
57 -moz-appearance: "none";
58 background: "transparent";
59 border: "none";
60 padding: "0px";
61 margin: "0px";
62 font: "inherit";
63 color: "inherit";
64 cursor: "pointer";
65 outline: "none";
66 font-family: "inherit";
67 ::-moz-focus-inner {
68 border: "0px";
69 padding: "0px";
70 }
71 }
72 input, textarea, select, button {
73 font: "inherit";
74 font-family: "inherit";
75 font-size: "inherit";
76 line-height: "normal";
77 margin: "0px";
78 padding: "0px";
79 border: "none";
80 outline: "none";
81 background: "transparent";
82 color: "inherit";
83 appearance: "none";
84 -webkit-appearance: "none";
85 -moz-appearance: "none";
86 }
87 input[type="text"], input[type="number"], input[type="email"], input[type="password"], input[type="search"], input[type="tel"], input[type="url"] {
88 appearance: "none";
89 -webkit-appearance: "none";
90 -moz-appearance: "none";
91 border-radius: "0px";
92 }
93 input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration {
94 -webkit-appearance: "none";
95 appearance: "none";
96 }
97 input[type="number"] {
98 -moz-appearance: "textfield";
99 }
100 input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button {
101 -webkit-appearance: "none";
102 appearance: "none";
103 margin: "0px";
104 }
105 textarea {
106 appearance: "none";
107 -webkit-appearance: "none";
108 -moz-appearance: "none";
109 resize: "vertical";
110 font-family: "inherit";
111 }
112 select {
113 appearance: "none";
114 -webkit-appearance: "none";
115 -moz-appearance: "none";
116 background-image: "none";
117 border-radius: "0px";
118 }
119 img, svg, video, canvas, audio, iframe, embed, object {
120 display: "block";
121 max-width: "100%";
122 }
123 table {
124 border-collapse: "collapse";
125 border-spacing: "0px";
126 }
127 hr {
128 border: "none";
129 margin: "0px";
130 }
131 :focus-visible {
132 outline: "none";
133 }
134 : focus:not(: focus-visible) {
135 outline: "none";
136 }
137 h1, h2, h3, h4, h5, h6 {
138 font-weight: "inherit";
139 font-size: "inherit";
140 }
141 strong, b {
142 font-weight: "700";
143 }
144 em, i {
145 font-style: "italic";
146 }
147 code, pre, kbd, samp {
148 font-family: "ui-monospace, monospace";
149 }
150 @media ((max-width: 767px)) {
151 input, select, textarea {
152 font-size: "16px";
153 }
154 }
155 }
156
157 pub c_mobile_app_root {
158 display: "flex";
159 flex-direction: "column";
160 width: "100%";
161 height: "100%";
162 gap: var!(space-sm);
163 font-family: "system-ui, -apple-system, sans-serif";
164 background: var!(background);
165 color: var!(foreground);
166 padding: format!("{} {} {} {}", var!(padding-shell-top), var!(safe-area-inset-right), var!(padding-shell-bottom), var!(safe-area-inset-left));
167 scrollbar-color: format!("{} {}", var!(scrollbar-thumb), var!(scrollbar-track));
168 ::-webkit-scrollbar-thumb {
169 background: var!(scrollbar-thumb);
170 border: "none";
171 border-radius: "0px";
172 }
173 ::-webkit-scrollbar-thumb:hover {
174 background: var!(scrollbar-thumb-hover);
175 }
176 ::-webkit-scrollbar-thumb:active {
177 background: var!(scrollbar-thumb-active);
178 }
179 }
180
181 pub c_app_nav {
186 width: var!(nav-width);
187 background: var!(background);
188 border-left: format!("2px solid {}", var!(border));
189 display: "flex";
190 flex-direction: "column";
191 height: "100%";
192 flex-shrink: "0";
193 @media ((max-width: 767px)) {
194 display: "none";
195 }
196 }
197
198 pub c_nav_header {
199 padding: format!("{} {}", var!(space-xl), var!(space-xl));
200 width: "100%";
201 box-sizing: "border-box";
202 font-size: var!(font-xl);
203 font-weight: "700";
204 color: var!(foreground);
205 letter-spacing: "-0.02em";
206 display: "flex";
207 align-items: "center";
208 gap: format!("{}", var!(space-md));
209 flex-shrink: "0";
210 text-decoration: "none";
211 cursor: "pointer";
212 position: "relative";
213 ::after {
214 content: "''";
215 position: "absolute";
216 bottom: "0px";
217 left: var!(space-lg);
218 right: var!(space-lg);
219 height: "1px";
220 background: format!("linear-gradient(90deg, transparent, {}, transparent)", var!(border));
221 }
222 }
223
224 pub c_nav_brand_title {
225 font-size: var!(font-xl);
226 font-weight: "700";
227 color: var!(foreground);
228 letter-spacing: "-0.02em";
229 }
230
231 pub c_euv_logo {
232 display: "flex";
233 background: var!(accent);
234 align-items: "center";
235 justify-content: "center";
236 color: var!(text-on-accent);
237 font-weight: "700";
238 border: "none";
239 cursor: "pointer";
240 padding: "0px";
241 flex-shrink: "0";
242 position: "relative";
243 }
244
245 pub c_euv_logo_nav {
246 width: "32px";
247 height: "32px";
248 font-size: var!(font-lg);
249 }
250
251 pub c_euv_logo_fab {
252 width: "36px";
253 height: "36px";
254 font-size: var!(font-xl);
255 @media ((max-width: 767px)) {
256 width: "44px";
257 height: "44px";
258 }
259 }
260
261 pub c_nav_section_label {
262 padding: format!("{} {} {} {}", var!(space-md), var!(space-xl), var!(space-xs), var!(space-xl));
263 margin: "0px";
264 font-size: var!(font-xs);
265 font-weight: "700";
266 color: var!(foreground);
267 text-transform: "uppercase";
268 letter-spacing: "0.10em";
269 flex-shrink: "0";
270 }
271
272 pub c_nav_items_scroll {
273 flex: "1";
274 overflow-y: "auto";
275 contain: "content";
276 scrollbar-color: format!("{} {}", var!(scrollbar-thumb), var!(scrollbar-track));
277 ::-webkit-scrollbar-thumb {
278 background: var!(scrollbar-thumb);
279 border: "none";
280 border-radius: "0px";
281 }
282 ::-webkit-scrollbar-thumb:hover {
283 background: var!(scrollbar-thumb-hover);
284 }
285 ::-webkit-scrollbar-thumb:active {
286 background: var!(scrollbar-thumb-active);
287 }
288 }
289
290 pub c_nav_theme_toggle {
291 padding: format!("{} {}", var!(space-md), var!(space-xl));
292 flex-shrink: "0";
293 margin-top: "auto";
294 @media ((max-width: 767px)) {
295 display: "none";
296 }
297 }
298
299 pub c_nav_theme_button {
300 width: "100%";
301 height: "36px";
302 padding: "0px";
303 cursor: "pointer";
304 outline: "none";
305 border: format!("1px dashed {}", var!(border));
306 display: "flex";
307 align-items: "center";
308 justify-content: "center";
309 :focus-visible {
310 outline: "none";
311 }
312 :active {
313 background: "transparent";
314 border-color: var!(border);
315 }
316 }
317
318 pub c_theme_icon_sun {
319 width: "20px";
320 height: "20px";
321 background-repeat: "no-repeat";
322 background-position: "center";
323 background-size: "20px 20px";
324 background-image: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='%23ffffff' stroke='%23ffffff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3Cline x1='12' y1='1' x2='12' y2='4'/%3E%3Cline x1='12' y1='20' x2='12' y2='23'/%3E%3Cline x1='4.22' y1='4.22' x2='6.34' y2='6.34'/%3E%3Cline x1='17.66' y1='17.66' x2='19.78' y2='19.78'/%3E%3Cline x1='1' y1='12' x2='4' y2='12'/%3E%3Cline x1='20' y1='12' x2='23' y2='12'/%3E%3Cline x1='4.22' y1='19.78' x2='6.34' y2='17.66'/%3E%3Cline x1='17.66' y1='6.34' x2='19.78' y2='4.22'/%3E%3C/svg%3E\")";
325 transition: format!("transform {} {}", var!(duration-normal), var!(ease-out));
326 }
327
328 pub c_theme_icon_moon {
329 width: "20px";
330 height: "20px";
331 background-repeat: "no-repeat";
332 background-position: "center";
333 background-size: "20px 20px";
334 background-image: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='%23000000' stroke='none' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 13A9 9 0 1 1 11 3a7 7 0 0 0 10 10z'/%3E%3C/svg%3E\")";
335 transition: format!("transform {} {}", var!(duration-normal), var!(ease-out));
336 }
337
338 pub c_nav_footer {
339 padding: format!("{} {}", var!(space-lg), var!(space-xl));
340 position: "relative";
341 font-size: var!(font-xs);
342 color: var!(muted-foreground);
343 flex-shrink: "0";
344 text-decoration: "none";
345 display: "flex";
346 align-items: "center";
347 gap: var!(space-xs);
348 cursor: "pointer";
349 transition: format!("opacity {} {}", var!(duration-fast), var!(ease-out));
350 opacity: "1";
351 :hover {
352 opacity: "1";
353 }
354 }
355
356 pub c_nav_footer_divider {
357 position: "absolute";
358 top: "0";
359 left: var!(space-lg);
360 right: var!(space-lg);
361 height: "1px";
362 background: format!("linear-gradient(90deg, transparent, {}, transparent)", var!(border));
363 }
364
365 pub c_nav_footer_text {
366 font-weight: "400";
367 letter-spacing: "0.02em";
368 }
369
370 pub c_nav_footer_brand {
371 font-weight: "700";
372 color: var!(accent);
373 }
374
375 pub c_nav_item_active {
376 display: "flex";
377 align-items: "center";
378 gap: var!(space-sm);
379 padding: format!("{} {}", var!(space-md), var!(space-xl));
380 text-decoration: "none";
381 font-size: var!(font-base);
382 color: var!(text-on-accent);
383 font-weight: "600";
384 background: var!(accent);
385 }
386
387 pub c_nav_item_inactive {
388 display: "flex";
389 align-items: "center";
390 gap: var!(space-sm);
391 padding: format!("{} {}", var!(space-md), var!(space-xl));
392 text-decoration: "none";
393 font-size: var!(font-base);
394 color: var!(foreground);
395 font-weight: "400";
396 :hover {
397 background: var!(accent-muted);
398 color: var!(accent);
399 box-shadow: format!("inset 4px 0 0 0 {}", var!(foreground));
400 }
401 }
402
403 pub c_nav_item_icon {
404 flex-shrink: "0";
405 width: "20px";
406 text-align: "center";
407 }
408
409 pub c_nav_item_label {
410 flex: "1";
411 overflow: "hidden";
412 text-overflow: "ellipsis";
413 white-space: "nowrap";
414 color: "inherit";
415 }
416
417 pub c_app_main {
422 flex: "1";
423 height: "100%";
424 overflow: "auto";
425 padding: format!("{} {} {} {}", var!(padding-main-top), var!(padding-main-horizontal), var!(padding-main-bottom), var!(padding-main-horizontal));
426 scrollbar-color: format!("{} {}", var!(scrollbar-thumb), var!(scrollbar-track));
427 ::-webkit-scrollbar {
428 width: "6px";
429 }
430 ::-webkit-scrollbar-thumb {
431 background: var!(scrollbar-thumb);
432 border: "none";
433 border-radius: "0px";
434 }
435 ::-webkit-scrollbar-thumb:hover {
436 background: var!(scrollbar-thumb-hover);
437 }
438 ::-webkit-scrollbar-thumb:active {
439 background: var!(scrollbar-thumb-active);
440 }
441 @media ((max-width: 767px)) {
442 padding: format!("{} {} {} {}", var!(padding-main-top), var!(padding-main-horizontal-mobile), var!(padding-main-bottom), var!(padding-main-horizontal-mobile));
443 scrollbar-width: "none";
444 ::-webkit-scrollbar {
445 width: "0px";
446 }
447 }
448 }
449
450 pub c_page_router {
451 flex: "1";
452 display: "flex";
453 flex-direction: "column";
454 }
455
456 pub c_page_container {
457 width: "100%";
458 margin: "0px auto";
459 max-width: var!(content-max-width);
460 }
461
462 pub c_page {
467 position: "relative";
468 text-align: "center";
469 box-sizing: "border-box";
470 }
471
472 pub c_page_glow {
473 position: "absolute";
474 top: "-50%";
475 left: "50%";
476 transform: "translateX(-50%)";
477 width: "400px";
478 max-width: "100%";
479 height: "400px";
480 pointer-events: "none";
481 }
482
483 pub c_page_content {
484 position: "relative";
485 z-index: "1";
486 }
487
488 pub c_page_icon {
489 font-size: "36px";
490 padding-bottom: var!(space-md);
491 @media ((max-width: 767px)) {
492 font-size: "40px";
493 }
494 }
495
496 pub c_page_title {
497 font-size: var!(font-4xl);
498 font-weight: "800";
499 letter-spacing: "-0.03em";
500 margin: "0px";
501 color: var!(foreground);
502 margin-bottom: var!(space-sm);
503 @media ((max-width: 767px)) {
504 font-size: var!(font-3xl);
505 }
506 }
507
508 pub c_page_subtitle {
509 font-size: var!(font-lg);
510 color: var!(muted-foreground);
511 margin: "0px auto";
512 margin-bottom: var!(space-sm);
513 max-width: "560px";
514 opacity: "1";
515 @media ((max-width: 767px)) {
516 font-size: var!(font-base);
517 }
518 }
519
520 pub c_card {
525 color: var!(foreground);
526 box-sizing: "border-box";
527 }
528
529 pub c_card_title {
530 margin: format!("{} 0px", var!(gap-component));
531 color: var!(foreground);
532 font-size: var!(font-lg);
533 font-weight: "600";
534 padding-bottom: var!(gap-component);
535 border-bottom: format!("1px dashed {}", var!(border));
536 letter-spacing: "-0.01em";
537 @media ((max-width: 767px)) {
538 font-size: var!(font-md);
539 }
540 }
541
542 pub c_primary_button {
547 display: "flex";
548 justify-content: "center";
549 align-items: "center";
550 gap: var!(space-sm);
551 width: "100%";
552 height: "42px";
553 background: var!(accent);
554 color: var!(text-on-accent);
555 border: "1px solid transparent";
556 padding: format!("0px {}", var!(space-2xl));
557 cursor: "pointer";
558 font-size: var!(font-base);
559 font-weight: "500";
560 letter-spacing: "0.02em";
561 text-align: "center";
562 outline: "none";
563 box-sizing: "border-box";
564 white-space: "nowrap";
565 overflow: "hidden";
566 text-overflow: "ellipsis";
567 user-select: "none";
568 -webkit-user-select: "none";
569 :focus-visible {
570 outline: "none";
571 }
572 :disabled {
573 background: var!(muted-foreground);
574 cursor: "not-allowed";
575 opacity: "1";
576 }
577 :hover {
578 background: var!(accent);
579 }
580 :active {
581 background: var!(accent);
582 color: var!(text-on-accent);
583 border-color: "transparent";
584 }
585 @media ((max-width: 767px)) {
586 max-width: "100%";
587 padding: format!("{} {}", var!(space-lg), var!(space-xl));
588 font-size: var!(font-md);
589 }
590 }
591
592 pub c_modal_close_button {
593 display: "flex";
594 justify-content: "center";
595 align-items: "center";
596 color: "inherit";
597 border: "none";
598 padding: format!("{} {}", var!(space-sm), var!(space-md));
599 cursor: "pointer";
600 font-size: "20px";
601 font-weight: "400";
602 vertical-align: "middle";
603 outline: "none";
604 opacity: "1";
605 flex-shrink: "0";
606 transition: format!("opacity {} {}", var!(duration-fast), var!(ease-out));
607 :hover {
608 opacity: "1";
609 }
610 :active {
611 opacity: "1";
612 }
613 :focus {
614 outline: "none";
615 }
616 }
617
618 pub c_button_controls {
623 display: "flex";
624 flex-wrap: "wrap";
625 gap: var!(gap-element);
626 margin-top: var!(gap-component);
627 }
628
629 pub c_euv_button_primary_md {
634 display: "flex";
635 justify-content: "center";
636 align-items: "center";
637 gap: var!(space-sm);
638 flex: "1 1 120px";
639 height: "42px";
640 padding: format!("0px {}", var!(space-xl));
641 background: var!(accent);
642 color: var!(text-on-accent);
643 cursor: "pointer";
644 font-size: var!(font-base);
645 font-weight: "500";
646 outline: "none";
647 white-space: "nowrap";
648 user-select: "none";
649 -webkit-user-select: "none";
650 box-sizing: "border-box";
651 :hover {
652 background: var!(accent);
653 }
654 :focus-visible {
655 outline: "none";
656 }
657 :disabled {
658 background: var!(muted-foreground);
659 cursor: "not-allowed";
660 opacity: "1";
661 }
662 :active {
663 background: var!(accent);
664 color: var!(text-on-accent);
665 border-color: var!(text-on-accent);
666 }
667 }
668
669 pub c_euv_button_outline_md {
670 display: "flex";
671 justify-content: "center";
672 align-items: "center";
673 gap: var!(space-sm);
674 flex: "1 1 120px";
675 height: "42px";
676 padding: format!("0px {}", var!(space-xl));
677 color: var!(foreground);
678 border: format!("1px solid {}", var!(border));
679 cursor: "pointer";
680 font-size: var!(font-base);
681 font-weight: "500";
682 outline: "none";
683 white-space: "nowrap";
684 user-select: "none";
685 -webkit-user-select: "none";
686 box-sizing: "border-box";
687 :hover {
688 background: var!(accent-muted);
689 border-color: var!(accent);
690 color: var!(accent);
691 }
692 :focus-visible {
693 outline: "none";
694 }
695 :active {
696 background: "transparent";
697 color: var!(foreground);
698 border-color: var!(border);
699 }
700 }
701
702 pub c_badge {
707 display: "inline-flex";
708 justify-content: "center";
709 align-items: "center";
710 color: var!(text-on-accent);
711 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
712 border: format!("1px solid {}", var!(accent));
713 font-size: var!(font-xs);
714 font-weight: "600";
715 cursor: "pointer";
716 text-align: "center";
717 background: var!(accent);
718 :focus-visible {
719 outline: "none";
720 }
721 @media ((max-width: 767px)) {
722 padding: format!("{} {}", var!(space-2xs), var!(space-xs));
723 font-size: var!(font-xs);
724 }
725 }
726
727 pub c_badge_outline {
728 display: "inline-flex";
729 justify-content: "center";
730 align-items: "center";
731 color: var!(foreground);
732 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
733 font-size: var!(font-xs);
734 font-weight: "600";
735 cursor: "pointer";
736 text-align: "center";
737 border: format!("1.5px solid {}", var!(border));
738 @media ((max-width: 767px)) {
739 padding: format!("{} {}", var!(space-2xs), var!(space-xs));
740 font-size: var!(font-xs);
741 }
742 }
743
744 pub c_euv_tag_solid_black {
745 display: "inline-flex";
746 align-items: "center";
747 justify-content: "center";
748 color: var!(text-on-accent);
749 padding: format!("{} {}", var!(space-xs), var!(space-md));
750 font-size: var!(font-sm);
751 font-weight: "600";
752 cursor: "pointer";
753 background: var!(accent);
754 border: format!("1px solid {}", var!(accent));
755 }
756
757 pub c_euv_tag_solid_white {
758 display: "inline-flex";
759 align-items: "center";
760 justify-content: "center";
761 color: var!(foreground);
762 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
763 font-size: var!(font-xs);
764 font-weight: "600";
765 cursor: "pointer";
766 border: format!("1.5px solid {}", var!(accent));
767 }
768
769 pub c_euv_tag_outline_black {
774 display: "inline-flex";
775 justify-content: "center";
776 align-items: "center";
777 color: var!(accent);
778 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
779 font-size: var!(font-xs);
780 font-weight: "600";
781 cursor: "pointer";
782 border: format!("1.5px solid {}", var!(accent));
783 }
784
785 pub c_euv_tag_outline_white {
786 display: "inline-flex";
787 justify-content: "center";
788 align-items: "center";
789 color: var!(foreground);
790 padding: format!("{} {}", var!(space-xs), var!(space-md));
791 font-size: var!(font-sm);
792 font-weight: "600";
793 cursor: "pointer";
794 border: format!("1.5px solid {}", var!(border));
795 }
796
797 pub c_euv_input_wrapper {
802 width: "100%";
803 margin: format!("{} 0px", var!(gap-element));
804 }
805
806 pub c_form_label {
807 display: "block";
808 margin-bottom: var!(space-sm);
809 color: "inherit";
810 font-weight: "500";
811 font-size: var!(font-base);
812 }
813
814 pub c_inline_input_row {
815 display: "flex";
816 align-items: "center";
817 gap: var!(gap-component);
818 }
819
820 pub c_euv_input {
821 width: "100%";
822 min-height: var!(min-height-base);
823 padding: format!("0px {}", var!(space-lg));
824 border: format!("1px solid {}", var!(border));
825 font-size: var!(font-base);
826 line-height: "normal";
827 box-sizing: "border-box";
828 outline: "none";
829 color: var!(foreground);
830 appearance: "none";
831 -webkit-appearance: "none";
832 -moz-appearance: "none";
833 vertical-align: "middle";
834 :hover {
835 border-color: var!(accent);
836 background: var!(accent-muted);
837 }
838 :focus {
839 outline: "none";
840 border-color: var!(accent);
841 background: var!(accent-muted);
842 }
843 }
844
845 pub c_euv_input_no_transition {
846 width: "100%";
847 min-height: var!(min-height-base);
848 padding: format!("0px {}", var!(space-lg));
849 border: format!("1px solid {}", var!(border));
850 font-size: var!(font-base);
851 line-height: "normal";
852 box-sizing: "border-box";
853 outline: "none";
854 color: var!(foreground);
855 appearance: "none";
856 -webkit-appearance: "none";
857 -moz-appearance: "none";
858 vertical-align: "middle";
859 }
860
861 pub c_euv_input_error {
862 width: "100%";
863 min-height: var!(min-height-base);
864 padding: format!("0px {}", var!(space-lg));
865 border: format!("1px solid {}", var!(foreground));
866 font-size: var!(font-base);
867 line-height: "normal";
868 box-sizing: "border-box";
869 outline: "none";
870 color: var!(foreground);
871 appearance: "none";
872 -webkit-appearance: "none";
873 -moz-appearance: "none";
874 vertical-align: "middle";
875 :focus {
876 outline: "none";
877 border-color: var!(foreground);
878 }
879 }
880
881 pub c_form_checkbox {
882 cursor: "pointer";
883 width: var!(space-lg);
884 height: var!(space-lg);
885 }
886
887 pub c_form_checkbox_label {
888 font-size: var!(font-base);
889 color: "inherit";
890 cursor: "pointer";
891 }
892
893 pub c_form_checkbox_row {
894 margin: format!("{} 0px", var!(gap-component));
895 display: "flex";
896 align-items: "center";
897 gap: var!(gap-element);
898 }
899
900 pub c_select_input {
901 width: "100%";
902 min-height: var!(min-height-base);
903 padding: format!("0px {}", var!(space-lg));
904 border: format!("1px solid {}", var!(border));
905 font-size: var!(font-base);
906 line-height: "normal";
907 box-sizing: "border-box";
908 outline: "none";
909 cursor: "pointer";
910 appearance: "none";
911 -webkit-appearance: "none";
912 -moz-appearance: "none";
913 color: var!(foreground);
914 vertical-align: "middle";
915 background-image: "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='currentColor' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")";
916 background-repeat: "no-repeat";
917 background-position: "right 14px center";
918 :focus {
919 outline: "none";
920 border-color: var!(accent);
921 background: var!(accent-muted);
922 }
923 }
924
925 pub c_textarea_input {
926 width: "100%";
927 max-width: "100%";
928 padding: format!("{} {}", var!(space-md), var!(space-lg));
929 border: format!("1px solid {}", var!(border));
930 font-size: var!(font-base);
931 line-height: "normal";
932 box-sizing: "border-box";
933 outline: "none";
934 resize: "vertical";
935 overflow-x: "hidden";
936 word-wrap: "break-word";
937 font-family: "inherit";
938 color: var!(foreground);
939 appearance: "none";
940 -webkit-appearance: "none";
941 -moz-appearance: "none";
942 :hover {
943 border-color: var!(accent);
944 background: var!(accent-muted);
945 }
946 :focus {
947 outline: "none";
948 border-color: var!(accent);
949 background: var!(accent-muted);
950 }
951 }
952
953 pub c_textarea_input_error {
954 width: "100%";
955 max-width: "100%";
956 padding: format!("{} {}", var!(space-md), var!(space-lg));
957 border: format!("1px solid {}", var!(foreground));
958 font-size: var!(font-base);
959 line-height: "normal";
960 box-sizing: "border-box";
961 outline: "none";
962 resize: "vertical";
963 overflow-x: "hidden";
964 word-wrap: "break-word";
965 font-family: "inherit";
966 color: var!(foreground);
967 appearance: "none";
968 -webkit-appearance: "none";
969 -moz-appearance: "none";
970 :focus {
971 outline: "none";
972 border-color: var!(foreground);
973 }
974 }
975
976 pub c_textarea_counter {
977 text-align: "right";
978 margin-top: var!(space-xs);
979 margin-bottom: var!(gap-component);
980 }
981
982 pub c_textarea_counter_text {
983 font-size: var!(font-sm);
984 color: "inherit";
985 opacity: "1";
986 }
987
988 pub c_field_error_text {
989 color: var!(foreground);
990 font-size: var!(font-base);
991 margin-top: var!(space-xs);
992 margin-bottom: var!(space-sm);
993 }
994
995 pub c_error_box {
1000 margin: format!("{} 0px", var!(gap-component));
1001 background: var!(accent-muted);
1002 color: var!(foreground);
1003 font-size: var!(font-base);
1004 box-sizing: "border-box";
1005 }
1006
1007 pub c_success_box {
1008 margin: format!("{} 0px", var!(gap-component));
1009 background: var!(accent-muted);
1010 color: var!(foreground);
1011 font-size: var!(font-base);
1012 box-sizing: "border-box";
1013 }
1014
1015 pub c_counter_row {
1020 display: "grid";
1021 grid-template-columns: "1fr 1fr";
1022 align-items: "center";
1023 gap: var!(gap-component);
1024 @media ((max-width: 767px)) {
1025 grid-template-columns: "1fr";
1026 }
1027 }
1028
1029 pub c_counter_text {
1030 font-size: var!(font-lg);
1031 color: "inherit";
1032 margin-bottom: var!(gap-component);
1033 }
1034
1035 pub c_counter_value {
1036 font-weight: "700";
1037 color: var!(accent);
1038 font-size: var!(font-2xl);
1039 @media ((max-width: 767px)) {
1040 font-size: var!(font-xl);
1041 }
1042 }
1043
1044 pub c_badge_row {
1045 display: "flex";
1046 gap: var!(gap-inline);
1047 flex-wrap: "wrap";
1048 align-items: "center";
1049 }
1050
1051 pub c_badge_hint {
1052 margin-bottom: var!(gap-component);
1053 color: "inherit";
1054 opacity: "1";
1055 font-size: var!(font-base);
1056 }
1057
1058 pub c_text_ellipsis {
1063 overflow: "hidden";
1064 text-overflow: "ellipsis";
1065 white-space: "nowrap";
1066 }
1067
1068 pub c_info_row {
1069 display: "flex";
1070 align-items: "center";
1071 gap: var!(space-md);
1072 padding: format!("{} 0", var!(space-sm));
1073 overflow: "hidden";
1074 }
1075
1076 pub c_info_label {
1077 font-size: var!(font-sm);
1078 font-weight: "500";
1079 color: var!(muted-foreground);
1080 min-width: "72px";
1081 flex-shrink: "0";
1082 letter-spacing: "0.02em";
1083 }
1084
1085 pub c_info_value {
1086 c_text_ellipsis();
1087 font-size: var!(font-base);
1088 font-weight: "600";
1089 color: var!(foreground);
1090 font-family: "ui-monospace, monospace";
1091 flex: "1";
1092 }
1093
1094 pub c_info_link {
1095 c_text_ellipsis();
1096 font-size: var!(font-base);
1097 font-weight: "600";
1098 color: var!(accent);
1099 font-family: "ui-monospace, monospace";
1100 flex: "1";
1101 text-decoration: "none";
1102 transition: format!("opacity {} {}", var!(duration-fast), var!(ease-out));
1103 :hover {
1104 opacity: "1";
1105 }
1106 }
1107
1108 pub c_camera_video_container {
1113 margin: format!("{} 0", var!(space-lg));
1114 }
1115
1116 pub c_camera_video_active {
1117 width: "100%";
1118 background: "#000";
1119 aspect-ratio: "16 / 9";
1120 object-fit: "cover";
1121 border: format!("2px solid {}", var!(accent));
1122 box-sizing: "border-box";
1123 }
1124
1125 pub c_camera_video_hidden {
1126 width: "100%";
1127 aspect-ratio: "16 / 9";
1128 display: "none";
1129 }
1130
1131 pub c_camera_video_placeholder {
1132 width: "100%";
1133 aspect-ratio: "16 / 9";
1134 border: format!("2px dashed {}", var!(border));
1135 display: "flex";
1136 align-items: "center";
1137 justify-content: "center";
1138 box-sizing: "border-box";
1139 }
1140
1141 pub c_camera_placeholder_content {
1142 display: "flex";
1143 flex-direction: "column";
1144 align-items: "center";
1145 gap: var!(space-md);
1146 }
1147
1148 pub c_camera_placeholder_icon {
1149 font-size: var!(font-4xl);
1150 opacity: "1";
1151 }
1152
1153 pub c_camera_placeholder_text {
1154 font-size: var!(font-base);
1155 color: "inherit";
1156 opacity: "1";
1157 }
1158
1159 pub c_camera_error_box {
1160 margin: format!("{} 0px", var!(gap-component));
1161 color: var!(foreground);
1162 font-size: var!(font-base);
1163 word-break: "break-all";
1164 overflow-wrap: "break-word";
1165 box-sizing: "border-box";
1166 }
1167
1168 pub c_camera_scan_result_box {
1169 margin-top: var!(gap-component);
1170 box-sizing: "border-box";
1171 }
1172
1173 pub c_camera_scan_result_label {
1174 font-size: var!(font-sm);
1175 font-weight: "600";
1176 color: var!(foreground);
1177 margin-bottom: var!(space-xs);
1178 }
1179
1180 pub c_camera_scan_result_value {
1181 font-size: var!(font-base);
1182 color: "inherit";
1183 word-break: "break-all";
1184 overflow-wrap: "break-word";
1185 }
1186
1187 pub c_canvas_preview_container {
1192 margin: format!("{} 0", var!(space-lg));
1193 overflow: "hidden";
1194 border: format!("2px solid {}", var!(border));
1195 background: "#ffffff";
1196 aspect-ratio: "9 / 16";
1197 display: "flex";
1198 align-items: "center";
1199 justify-content: "center";
1200 box-sizing: "border-box";
1201 }
1202
1203 pub c_canvas_placeholder {
1204 color: var!(muted-foreground);
1205 font-size: var!(font-sm);
1206 text-align: "center";
1207 padding: var!(space-lg);
1208 }
1209
1210 pub c_canvas_preview_image {
1211 width: "100%";
1212 height: "100%";
1213 object-fit: "cover";
1214 display: "block";
1215 }
1216
1217 pub c_canvas_container_fullscreen {
1218 width: "100%";
1219 height: "100%";
1220 background: var!(background);
1221 display: "flex";
1222 flex-direction: "column";
1223 position: "fixed";
1224 top: "0";
1225 left: "0";
1226 z-index: "10002";
1227 padding: format!("{} {} {} {}", var!(padding-shell-top), var!(space-lg), var!(padding-shell-bottom), var!(space-lg));
1228 box-sizing: "border-box";
1229 }
1230
1231 pub c_canvas_drawing_fullscreen_wrapper {
1232 flex: "1";
1233 display: "flex";
1234 align-items: "center";
1235 justify-content: "center";
1236 overflow: "hidden";
1237 padding: var!(space-xs);
1238 }
1239
1240 pub c_canvas_drawing_fullscreen {
1241 border: format!("2px solid {}", var!(border));
1242 display: "block";
1243 cursor: "crosshair";
1244 touch-action: "none";
1245 }
1246
1247 pub c_canvas_fullscreen_toolbar {
1248 display: "flex";
1249 flex-direction: "column";
1250 align-items: "stretch";
1251 width: "100%";
1252 padding: format!("{} {}", var!(space-xs), "0px");
1253 flex-shrink: "0";
1254 gap: var!(space-xs);
1255 }
1256
1257 pub c_canvas_fullscreen_toolbar_row_top {
1258 display: "flex";
1259 align-items: "center";
1260 height: var!(mobile-header-height);
1261 width: "100%";
1262 gap: var!(space-sm);
1263 }
1264
1265 pub c_canvas_fullscreen_toolbar_color_wrapper {
1266 display: "flex";
1267 align-items: "center";
1268 justify-content: "center";
1269 flex: "1";
1270 min-width: "0";
1271 }
1272
1273 pub c_canvas_color_input_fullscreen {
1274 width: "100%";
1275 height: "42px";
1276 border: format!("1px solid {}", var!(border));
1277 cursor: "pointer";
1278 padding: format!("{}", var!(space-xs));
1279 }
1280
1281 pub c_canvas_fullscreen_toolbar_row_bottom {
1282 display: "flex";
1283 align-items: "center";
1284 width: "100%";
1285 }
1286
1287 pub c_canvas_fullscreen_range_input {
1288 flex: "1 1 0%";
1289 min-width: "120px";
1290 cursor: "pointer";
1291 -webkit-appearance: "none";
1292 appearance: "none";
1293 border: "none";
1294 outline: "none";
1295 height: "24px";
1296 ::-webkit-slider-runnable-track {
1297 height: "6px";
1298 background: format!("linear-gradient(to right, {} 0%, {} var(--value,50%), {} var(--value,50%), {} 100%)", var!(foreground), var!(foreground), var!(border), var!(border));
1299 border-radius: "3px";
1300 border: "none";
1301 }
1302 ::-webkit-slider-thumb {
1303 width: "20px";
1304 height: "20px";
1305 background: var!(background);
1306 border: format!("2px solid {}", var!(accent));
1307 border-radius: "50%";
1308 cursor: "pointer";
1309 -webkit-appearance: "none";
1310 margin-top: "-7px";
1311 }
1312 ::-moz-range-track {
1313 height: "6px";
1314 background: format!("linear-gradient(to right, {} 0%, {} var(--value,50%), {} var(--value,50%), {} 100%)", var!(foreground), var!(foreground), var!(border), var!(border));
1315 border-radius: "3px";
1316 border: "none";
1317 }
1318 ::-moz-range-thumb {
1319 width: "20px";
1320 height: "20px";
1321 background: var!(background);
1322 border: format!("2px solid {}", var!(accent));
1323 border-radius: "50%";
1324 cursor: "pointer";
1325 }
1326 }
1327
1328 pub c_canvas_fullscreen_toolbar_button {
1329 flex: "0 0 auto";
1330 overflow: "hidden";
1331 }
1332
1333 pub c_custom_attrs_demo {
1338 color: "inherit";
1339 box-sizing: "border-box";
1340 }
1341
1342 pub c_demo_text {
1343 color: "inherit";
1344 margin-bottom: var!(gap-component);
1345 }
1346
1347 pub c_demo_text_muted {
1348 color: "inherit";
1349 opacity: "1";
1350 font-size: var!(font-base);
1351 margin-bottom: "0px";
1352 }
1353
1354 pub c_loading_container {
1359 display: "flex";
1360 align-items: "center";
1361 justify-content: "center";
1362 gap: var!(gap-component);
1363 margin: format!("{} 0px", var!(gap-component));
1364 box-sizing: "border-box";
1365 }
1366
1367 pub c_spinner {
1368 width: "28px";
1369 height: "28px";
1370 border: format!("3px solid {}", var!(accent-muted));
1371 border-top: format!("3px solid {}", var!(accent));
1372 border-radius: "50%";
1373 flex-shrink: "0";
1374 animation: "euv-spin 0.8s linear infinite";
1375 }
1376
1377 pub c_loading_text_col {
1378 display: "flex";
1379 flex-direction: "column";
1380 gap: var!(space-xs);
1381 }
1382
1383 pub c_loading_title {
1384 color: var!(foreground);
1385 font-size: var!(font-md);
1386 font-weight: "500";
1387 }
1388
1389 pub c_loading_subtitle {
1390 color: var!(muted-foreground);
1391 font-size: var!(font-base);
1392 }
1393
1394 pub c_loading_overlay(background: &str) {
1395 position: "absolute";
1396 top: "0";
1397 left: "0";
1398 width: "100%";
1399 height: "100%";
1400 display: "flex";
1401 flex-direction: "column";
1402 align-items: "center";
1403 justify-content: "center";
1404 gap: var!(gap-component);
1405 background: background;
1406 z-index: "1";
1407 box-sizing: "border-box";
1408 }
1409
1410 pub c_error_container {
1411 display: "flex";
1412 align-items: "center";
1413 gap: var!(gap-element);
1414 margin-top: var!(gap-component);
1415 box-sizing: "border-box";
1416 }
1417
1418 pub c_error_icon {
1419 width: "20px";
1420 height: "20px";
1421 display: "flex";
1422 align-items: "center";
1423 justify-content: "center";
1424 flex-shrink: "0";
1425 color: var!(foreground);
1426 font-size: var!(font-sm);
1427 font-weight: "700";
1428 }
1429
1430 pub c_error_text {
1431 color: var!(foreground);
1432 font-size: var!(font-base);
1433 }
1434
1435 pub c_data_box {
1436 margin: format!("{} 0px", var!(gap-component));
1437 box-sizing: "border-box";
1438 }
1439
1440 pub c_data_pre {
1441 color: var!(foreground);
1442 font-size: var!(font-base);
1443 margin: "0px";
1444 white-space: "pre-wrap";
1445 word-break: "break-all";
1446 font-family: "ui-monospace, monospace";
1447 }
1448
1449 pub c_fetch_hint {
1450 color: "inherit";
1451 opacity: "1";
1452 font-size: var!(font-base);
1453 margin-bottom: var!(gap-component);
1454 }
1455
1456 pub c_toggle_content {
1461 margin-top: var!(gap-component);
1462 color: "inherit";
1463 }
1464
1465 pub c_toggle_title {
1466 margin-top: "0px";
1467 color: var!(accent);
1468 font-size: var!(font-md);
1469 }
1470
1471 pub c_role_button_row {
1472 display: "flex";
1473 flex-wrap: "wrap";
1474 gap: var!(gap-element);
1475 margin-bottom: var!(gap-component);
1476 }
1477
1478 pub c_role_guest_text {
1479 color: var!(foreground);
1480 font-size: var!(font-base);
1481 }
1482
1483 pub c_role_user_text {
1484 color: var!(foreground);
1485 font-size: var!(font-base);
1486 }
1487
1488 pub c_role_admin_text {
1489 color: var!(foreground);
1490 font-size: var!(font-base);
1491 }
1492
1493 pub c_tab_bar {
1498 display: "flex";
1499 border-bottom: format!("1px dashed {}", var!(border));
1500 margin-bottom: var!(gap-component);
1501 gap: var!(gap-element);
1502 @media ((max-width: 767px)) {
1503 flex-wrap: "wrap";
1504 }
1505 }
1506
1507 pub c_tab_item_active {
1508 padding: format!("{} {}", var!(space-md), var!(space-xl));
1509 cursor: "pointer";
1510 border-bottom: format!("2px solid {}", var!(accent));
1511 color: var!(text-on-accent);
1512 background: var!(accent);
1513 font-size: var!(font-base);
1514 font-weight: "500";
1515 }
1516
1517 pub c_tab_item_inactive {
1518 padding: format!("{} {}", var!(space-md), var!(space-xl));
1519 cursor: "pointer";
1520 border-bottom: "2px solid transparent";
1521 color: "inherit";
1522 font-size: var!(font-base);
1523 font-weight: "500";
1524 :hover {
1525 background: var!(accent-muted);
1526 color: var!(accent);
1527 }
1528 }
1529
1530 pub c_tab_content {
1531 padding: format!("{} 0px", var!(gap-element));
1532 }
1533
1534 pub c_tab_text {
1535 color: "inherit";
1536 font-size: var!(font-base);
1537 margin-bottom: var!(gap-element);
1538 }
1539
1540 pub c_tab_text_muted {
1541 color: "inherit";
1542 opacity: "1";
1543 font-size: var!(font-base);
1544 }
1545
1546 pub c_tab_text_input {
1547 color: "inherit";
1548 font-size: var!(font-base);
1549 margin-bottom: var!(gap-component);
1550 }
1551
1552 pub c_list_input {
1557 width: "100%";
1558 flex: "1";
1559 height: "42px";
1560 padding: format!("0px {}", var!(space-lg));
1561 border: format!("1px solid {}", var!(border));
1562 font-size: var!(font-base);
1563 line-height: "normal";
1564 box-sizing: "border-box";
1565 outline: "none";
1566 color: var!(foreground);
1567 appearance: "none";
1568 -webkit-appearance: "none";
1569 -moz-appearance: "none";
1570 vertical-align: "middle";
1571 :hover {
1572 border-color: var!(accent);
1573 background: var!(accent-muted);
1574 }
1575 :focus {
1576 outline: "none";
1577 border-color: var!(accent);
1578 background: var!(accent-muted);
1579 }
1580 }
1581
1582 pub c_list_input_error {
1583 width: "100%";
1584 flex: "1";
1585 height: "42px";
1586 padding: format!("0px {}", var!(space-lg));
1587 border: format!("1px solid {}", var!(foreground));
1588 font-size: var!(font-base);
1589 line-height: "normal";
1590 box-sizing: "border-box";
1591 outline: "none";
1592 color: var!(foreground);
1593 appearance: "none";
1594 -webkit-appearance: "none";
1595 -moz-appearance: "none";
1596 vertical-align: "middle";
1597 :focus {
1598 outline: "none";
1599 border-color: var!(foreground);
1600 }
1601 }
1602
1603 pub c_list_error_text {
1604 color: var!(foreground);
1605 font-size: var!(font-base);
1606 margin: format!("{} 0px", var!(gap-element));
1607 }
1608
1609 pub c_inline_input_button_wrap {
1610 flex-shrink: "0";
1611 }
1612
1613 pub c_list_ul {
1614 list-style: "none";
1615 padding: "0px";
1616 margin: "0px";
1617 margin-top: var!(gap-component);
1618 }
1619
1620 pub c_list_item {
1621 display: "flex";
1622 justify-content: "space-between";
1623 align-items: "center";
1624 gap: var!(gap-component);
1625 min-height: var!(min-height-base);
1626 margin: format!("{} 0px", var!(gap-element));
1627 }
1628
1629 pub c_list_item_text {
1630 flex: "1";
1631 overflow: "hidden";
1632 text-overflow: "ellipsis";
1633 white-space: "nowrap";
1634 font-size: var!(font-base);
1635 color: "inherit";
1636 min-width: "0";
1637 }
1638
1639 pub c_list_item_button {
1640 max-width: "120px";
1641 flex-shrink: "0";
1642 }
1643
1644 pub c_log_container {
1649 font-family: "ui-monospace, monospace";
1650 font-size: var!(font-base);
1651 margin-top: "0px";
1652 color: var!(foreground);
1653 }
1654
1655 pub c_log_item {
1656 padding: format!("{} 0px", var!(space-sm));
1657 font-size: var!(font-base);
1658 color: var!(foreground);
1659 }
1660
1661 pub c_render_count_text {
1666 font-size: var!(font-lg);
1667 color: "inherit";
1668 margin-bottom: var!(gap-component);
1669 }
1670
1671 pub c_event_result {
1676 font-size: var!(font-base);
1677 color: "inherit";
1678 margin-top: var!(gap-element);
1679 }
1680
1681 pub c_event_highlight {
1682 font-weight: "600";
1683 color: var!(accent);
1684 }
1685
1686 pub c_event_info_grid {
1687 display: "grid";
1688 grid-template-columns: "1fr 1fr";
1689 gap: var!(gap-element);
1690 margin-top: var!(gap-component);
1691 @media ((max-width: 767px)) {
1692 grid-template-columns: "1fr";
1693 gap: var!(gap-element);
1694 }
1695 }
1696
1697 pub c_event_info_row {
1698 display: "flex";
1699 align-items: "center";
1700 gap: var!(space-sm);
1701 overflow: "hidden";
1702 }
1703
1704 pub c_event_info_label {
1705 font-size: var!(font-base);
1706 font-weight: "600";
1707 color: var!(foreground);
1708 flex-shrink: "0";
1709 }
1710
1711 pub c_event_info_value {
1712 c_text_ellipsis();
1713 font-size: var!(font-base);
1714 font-weight: "600";
1715 color: var!(accent);
1716 font-family: "ui-monospace, monospace";
1717 flex: "1";
1718 }
1719
1720 pub c_event_mouse_area {
1721 min-height: "120px";
1722 padding: format!("{} 0px", var!(space-xl));
1723 border: format!("2px dashed {}", var!(border));
1724 cursor: "crosshair";
1725 text-align: "center";
1726 user-select: "none";
1727 color: "inherit";
1728 }
1729
1730 pub c_event_drag_zone {
1731 min-height: "100px";
1732 padding: format!("{} 0px", var!(space-xl));
1733 border: format!("2px dashed {}", var!(border));
1734 text-align: "center";
1735 user-select: "none";
1736 color: var!(foreground);
1737 }
1738
1739 pub c_event_drag_zone_active {
1740 min-height: "100px";
1741 padding: format!("{} 0px", var!(space-xl));
1742 border: format!("2px dashed {}", var!(border));
1743 text-align: "center";
1744 user-select: "none";
1745 color: var!(foreground);
1746 }
1747
1748 pub c_event_drag_item {
1749 display: "inline-block";
1750 padding: format!("{} {}", var!(space-sm), var!(space-xl));
1751 background: var!(accent);
1752 color: var!(text-on-accent);
1753 font-size: var!(font-base);
1754 font-weight: "500";
1755 cursor: "grab";
1756 margin: var!(space-sm);
1757 }
1758
1759 pub c_event_drop_zone {
1760 border: format!("2px dashed {}", var!(border));
1761 padding: format!("{} {}", var!(space-4xl), var!(space-xl));
1762 text-align: "center";
1763 cursor: "pointer";
1764 }
1765
1766 pub c_event_drop_zone_active {
1767 border: format!("2px dashed {}", var!(accent));
1768 padding: format!("{} {}", var!(space-4xl), var!(space-xl));
1769 text-align: "center";
1770 cursor: "pointer";
1771 background: var!(accent-muted);
1772 }
1773
1774 pub c_event_drop_icon {
1775 font-size: var!(font-5xl);
1776 display: "block";
1777 padding-bottom: var!(space-md);
1778 }
1779
1780 pub c_event_drop_text {
1781 font-size: var!(font-lg);
1782 font-weight: "500";
1783 color: "inherit";
1784 padding-bottom: var!(space-md);
1785 }
1786
1787 pub c_event_drop_hint {
1788 font-size: var!(font-base);
1789 color: "inherit";
1790 opacity: "1";
1791 margin: "0px";
1792 }
1793
1794 pub c_event_wheel_zone {
1795 min-height: "120px";
1796 padding: format!("{} 0px", var!(space-xl));
1797 border: format!("2px dashed {}", var!(border));
1798 text-align: "center";
1799 overflow: "auto";
1800 color: var!(foreground);
1801 }
1802
1803 pub c_event_clipboard_area {
1804 color: var!(foreground);
1805 }
1806
1807 pub c_event_touch_zone {
1808 min-height: "120px";
1809 padding: format!("{} 0px", var!(space-xl));
1810 border: format!("2px dashed {}", var!(accent));
1811 text-align: "center";
1812 touch-action: "none";
1813 user-select: "none";
1814 color: var!(accent);
1815 }
1816
1817 pub c_event_form_area {
1818 padding: format!("{} 0px", var!(space-lg));
1819 color: var!(foreground);
1820 }
1821
1822 pub c_event_media_area {
1823 padding: format!("{} 0px", var!(space-lg));
1824 color: var!(foreground);
1825 max-width: "100%";
1826 overflow: "hidden";
1827 }
1828
1829 pub c_event_audio {
1830 width: "100%";
1831 max-width: "100%";
1832 }
1833
1834 pub c_event_video_area {
1835 color: var!(foreground);
1836 width: "100%";
1837 overflow: "hidden";
1838 }
1839
1840 pub c_event_video {
1841 width: "100%";
1842 max-width: "100%";
1843 }
1844
1845 pub c_event_image_area {
1846 padding: format!("{} 0px", var!(space-lg));
1847 color: "inherit";
1848 width: "100%";
1849 overflow: "hidden";
1850 display: "flex";
1851 flex-direction: "column";
1852 align-items: "center";
1853 gap: var!(space-md);
1854 }
1855
1856 pub c_event_image {
1857 width: "200px";
1858 max-width: "100%";
1859 object-fit: "contain";
1860 display: "block";
1861 }
1862
1863 pub c_event_url_text {
1864 text-align: "center";
1865 font-size: var!(font-sm);
1866 color: "inherit";
1867 opacity: "1";
1868 font-family: "ui-monospace, monospace";
1869 word-break: "break-all";
1870 width: "100%";
1871 }
1872
1873 pub c_timer_display {
1878 text-align: "center";
1879 padding: var!(space-xl);
1880 margin: format!("{} 0px", var!(gap-component));
1881 color: "inherit";
1882 }
1883
1884 pub c_timer_value {
1885 font-size: var!(font-5xl);
1886 font-weight: "700";
1887 color: var!(accent);
1888 letter-spacing: "0.04em";
1889 font-family: "ui-monospace, monospace";
1890 @media ((max-width: 767px)) {
1891 font-size: var!(font-4xl);
1892 }
1893 }
1894
1895 pub c_timer_controls {
1896 display: "flex";
1897 flex-wrap: "wrap";
1898 gap: var!(gap-element);
1899 }
1900
1901 pub c_timer_done {
1902 text-align: "center";
1903 margin-top: var!(gap-component);
1904 font-size: var!(font-lg);
1905 font-weight: "600";
1906 color: var!(foreground);
1907 }
1908
1909 pub c_modal_overlay {
1914 position: "fixed";
1915 top: "0px";
1916 left: "0px";
1917 width: "100%";
1918 height: "100%";
1919 background: var!(bg-overlay);
1920 contain: "layout style paint";
1921 display: "flex";
1922 align-items: "center";
1923 justify-content: "center";
1924 z-index: "1000";
1925 animation: format!("euv-fade-in {} {}", var!(duration-modal-overlay), var!(ease-out));
1926 @media ((max-width: 767px)) {
1927 align-items: "center";
1928 justify-content: "center";
1929 }
1930 }
1931
1932 pub c_modal_content {
1933 background: var!(background);
1934 padding: "0px";
1935 max-width: "480px";
1936 width: "90%";
1937 animation: format!("euv-scale-in-modal {} {}", var!(duration-modal-content), var!(ease-bounce));
1938 overflow: "hidden";
1939 color: var!(foreground);
1940 box-sizing: "border-box";
1941 @media ((max-width: 767px)) {
1942 max-width: "100%";
1943 width: "calc(100% - 32px)";
1944 max-height: "85vh";
1945 overflow-y: "auto";
1946 }
1947 }
1948
1949 pub c_modal_header {
1950 display: "flex";
1951 justify-content: "space-between";
1952 align-items: "center";
1953 padding: format!("{} {} 0px {}", var!(space-md), var!(space-xl), var!(space-xl));
1954 }
1955
1956 pub c_modal_title {
1957 margin: "0px";
1958 font-size: var!(font-xl);
1959 font-weight: "600";
1960 color: "inherit";
1961 }
1962
1963 pub c_modal_body {
1964 padding: format!("0px {} {} {}", var!(space-xl), var!(space-md), var!(space-xl));
1965 color: "inherit";
1966 }
1967
1968 pub c_modal_actions {
1969 display: "flex";
1970 flex-wrap: "wrap";
1971 gap: var!(space-md);
1972 margin: format!("{} 0px", var!(space-md));
1973 }
1974
1975 pub c_anim_fade_in {
1980 margin-top: var!(gap-component);
1981 animation: format!("euv-fade-in 0.5s {}", var!(ease-out));
1982 font-size: var!(font-base);
1983 color: "inherit";
1984 }
1985
1986 pub c_anim_spin_container {
1987 display: "flex";
1988 justify-content: "center";
1989 align-items: "center";
1990 margin: format!("{} 0px", var!(space-lg));
1991 min-height: "80px";
1992 }
1993
1994 pub c_anim_spin {
1995 font-size: var!(font-5xl);
1996 animation: "euv-spin 1.5s linear infinite";
1997 display: "inline-block";
1998 @media ((max-width: 767px)) {
1999 font-size: var!(font-4xl);
2000 }
2001 }
2002
2003 pub c_anim_spin_stopped {
2004 font-size: var!(font-5xl);
2005 display: "inline-block";
2006 opacity: "1";
2007 @media ((max-width: 767px)) {
2008 font-size: var!(font-4xl);
2009 }
2010 }
2011
2012 pub c_anim_pulse_container {
2013 display: "flex";
2014 justify-content: "center";
2015 align-items: "center";
2016 margin: format!("{} 0px", var!(space-lg));
2017 min-height: "80px";
2018 }
2019
2020 pub c_anim_pulse {
2021 font-size: var!(font-5xl);
2022 animation: "euv-pulse 1.5s ease-in-out infinite";
2023 display: "inline-block";
2024 color: var!(foreground);
2025 @media ((max-width: 767px)) {
2026 font-size: var!(font-4xl);
2027 }
2028 }
2029
2030 pub c_anim_pulse_stopped {
2031 font-size: var!(font-5xl);
2032 display: "inline-block";
2033 opacity: "1";
2034 color: var!(foreground);
2035 @media ((max-width: 767px)) {
2036 font-size: var!(font-4xl);
2037 }
2038 }
2039
2040 pub c_progress_container {
2041 width: "100%";
2042 height: "12px";
2043 margin: format!("{} 0px", var!(space-lg));
2044 overflow: "hidden";
2045 }
2046
2047 pub c_progress_bar_running {
2048 height: "100%";
2049 background: var!(accent);
2050 animation: format!("euv-progress 1.6s {} forwards", var!(ease-in-out));
2051 }
2052
2053 pub c_progress_bar_stopped {
2054 height: "100%";
2055 background: var!(accent);
2056 width: "0%";
2057 }
2058
2059 pub c_anim_scale_box {
2060 margin: format!("{} 0px", var!(gap-component));
2061 padding: var!(space-xl);
2062 background: var!(accent);
2063 cursor: "pointer";
2064 transition: format!("transform {} {}", var!(duration-normal), var!(ease-out));
2065 }
2066
2067 pub c_browser_api_row {
2072 display: "grid";
2073 grid-template-columns: "1fr 1fr";
2074 gap: var!(gap-component);
2075 margin-bottom: var!(gap-component);
2076 @media ((max-width: 767px)) {
2077 grid-template-columns: "1fr";
2078 }
2079 }
2080
2081 pub c_browser_api_actions {
2082 display: "flex";
2083 flex-wrap: "wrap";
2084 gap: var!(gap-element);
2085 margin: format!("{} 0px", var!(gap-component));
2086 }
2087
2088 pub c_browser_result_box {
2089 margin-top: var!(gap-component);
2090 font-size: var!(font-base);
2091 word-break: "break-all";
2092 color: "inherit";
2093 }
2094
2095 pub c_browser_result_label {
2096 font-weight: "600";
2097 color: var!(accent);
2098 }
2099
2100 pub c_browser_result_value {
2101 color: "inherit";
2102 }
2103
2104 pub c_browser_info_grid {
2105 display: "grid";
2106 gap: var!(gap-component);
2107 margin-top: var!(gap-component);
2108 @media ((max-width: 767px)) {
2109 grid-template-columns: "1fr";
2110 }
2111 }
2112
2113 pub c_browser_info_item {
2114 display: "flex";
2115 flex-direction: "column";
2116 gap: var!(space-xs);
2117 color: "inherit";
2118 }
2119
2120 pub c_browser_info_label {
2121 font-size: var!(font-sm);
2122 font-weight: "600";
2123 color: "inherit";
2124 opacity: "1";
2125 text-transform: "uppercase";
2126 letter-spacing: "0.05em";
2127 }
2128
2129 pub c_browser_info_value {
2130 font-size: var!(font-base);
2131 color: "inherit";
2132 word-break: "break-all";
2133 font-family: "ui-monospace, monospace";
2134 }
2135
2136 pub c_vconsole_badge {
2141 position: "absolute";
2142 top: "-6px";
2143 right: "-8px";
2144 min-width: "18px";
2145 height: "18px";
2146 background: var!(background);
2147 color: var!(foreground);
2148 font-size: "10px";
2149 font-weight: "600";
2150 display: "flex";
2151 align-items: "center";
2152 justify-content: "center";
2153 padding: format!("0px {}", var!(space-xs));
2154 border: format!("1px solid {}", var!(accent));
2155 pointer-events: "none";
2156 transition: format!("transform {} {}, opacity {} {}", var!(duration-normal), var!(ease-out), var!(duration-normal), var!(ease-out));
2157 }
2158
2159 pub c_vconsole_overlay {
2160 position: "fixed";
2161 top: "0px";
2162 left: "0px";
2163 right: "0px";
2164 bottom: "0px";
2165 z-index: "10000";
2166 background: var!(bg-overlay);
2167 contain: "layout style paint";
2168 transition: format!("opacity {} {}", var!(duration-overlay), var!(ease-out));
2169 }
2170
2171 pub c_vconsole_overlay_hidden {
2172 opacity: "0";
2173 pointer-events: "none";
2174 }
2175
2176 pub c_vconsole_panel {
2177 position: "fixed";
2178 bottom: "0px";
2179 left: "0px";
2180 right: "0px";
2181 height: format!("calc(76vh - {})", var!(safe-area-inset-bottom));
2182 background: var!(background);
2183 z-index: "10001";
2184 display: "flex";
2185 flex-direction: "column";
2186 contain: "layout style paint";
2187 will-change: "transform";
2188 transition: format!("transform {} {}", var!(duration-overlay), var!(ease-out));
2189 overflow: "hidden";
2190 padding: format!("{} {}", var!(padding-main-top), var!(padding-main-horizontal));
2191 @media ((max-width: 767px)) {
2192 padding: format!("{} {}", var!(space-md), var!(padding-main-horizontal-mobile));
2193 }
2194 }
2195
2196 pub c_vconsole_panel_closed {
2197 transform: "translateY(100%)";
2198 will-change: "auto";
2199 }
2200
2201 pub c_vconsole_fab {
2202 position: "fixed";
2203 bottom: format!("calc(20px + {})", var!(safe-area-inset-bottom));
2204 right: var!(padding-main-horizontal);
2205 z-index: "9999";
2206 @media ((max-width: 767px)) {
2207 bottom: format!("calc(16px + {})", var!(safe-area-inset-bottom));
2208 right: var!(padding-main-horizontal-mobile);
2209 }
2210 }
2211
2212 pub c_vconsole_header {
2213 display: "flex";
2214 justify-content: "space-between";
2215 align-items: "center";
2216 flex-shrink: "0";
2217 }
2218
2219 pub c_vconsole_title {
2220 color: var!(foreground);
2221 font-size: var!(font-md);
2222 font-weight: "600";
2223 margin: "0px";
2224 letter-spacing: "0.03em";
2225 display: "flex";
2226 align-items: "center";
2227 gap: var!(space-sm);
2228 }
2229
2230 pub c_vconsole_title_dot {
2231 width: "8px";
2232 height: "8px";
2233 background: var!(accent);
2234 display: "inline-block";
2235 animation: "euv-pulse 2s ease-in-out infinite";
2236 }
2237
2238 pub c_vconsole_header_actions {
2239 display: "flex";
2240 gap: var!(space-sm);
2241 align-items: "center";
2242 }
2243
2244 pub c_vconsole_clear_button {
2245 display: "inline-flex";
2246 justify-content: "center";
2247 align-items: "center";
2248 color: var!(foreground);
2249 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2250 font-size: var!(font-xs);
2251 font-weight: "600";
2252 cursor: "pointer";
2253 text-align: "center";
2254 border: format!("1.5px solid {}", var!(border));
2255 margin-left: "auto";
2256 :focus-visible {
2257 outline: "none";
2258 }
2259 }
2260
2261 pub c_vconsole_close_button {
2262 display: "inline-flex";
2263 justify-content: "center";
2264 align-items: "center";
2265 color: var!(foreground);
2266 padding: format!("{} {}", var!(space-xs), var!(space-md));
2267 cursor: "pointer";
2268 font-size: var!(font-sm);
2269 font-weight: "400";
2270 text-align: "center";
2271 white-space: "nowrap";
2272 user-select: "none";
2273 -webkit-user-select: "none";
2274 vertical-align: "middle";
2275 outline: "none";
2276 transition: format!("all {} {}", var!(duration-fast), var!(ease-out));
2277 :hover {
2278 border-color: var!(foreground);
2279 color: var!(foreground);
2280 background: var!(background);
2281 }
2282 :focus-visible {
2283 outline: "none";
2284 }
2285 :active {
2286 background: "transparent";
2287 color: var!(foreground);
2288 border-color: var!(border);
2289 }
2290 }
2291
2292 pub c_vconsole_body {
2293 flex: "1";
2294 overflow-y: "auto";
2295 contain: "content";
2296 padding-bottom: var!(space-md);
2297 font-family: "ui-monospace, monospace";
2298 font-size: var!(font-xs);
2299 }
2300
2301 pub c_vconsole_log_item {
2302 display: "flex";
2303 align-items: "center";
2304 padding: format!("{} 0px", var!(space-sm));
2305 border-bottom: format!("1px dashed {}", var!(border));
2306 color: var!(foreground);
2307 font-size: var!(font-xs);
2308 word-break: "break-all";
2309 }
2310
2311 pub c_vconsole_empty {
2312 color: var!(muted-foreground);
2313 font-size: var!(font-xs);
2314 text-align: "center";
2315 padding: format!("{} 0px", var!(space-4xl));
2316 overflow: "hidden";
2317 }
2318
2319 pub c_vconsole_empty_hidden {
2320 height: "0";
2321 overflow: "hidden";
2322 padding: "0";
2323 }
2324
2325 pub c_vconsole_log_list {
2326 overflow: "hidden";
2327 }
2328
2329 pub c_vconsole_log_list_hidden {
2330 height: "0";
2331 overflow: "hidden";
2332 }
2333
2334 pub c_vconsole_count {
2335 color: var!(muted-foreground);
2336 font-size: var!(font-sm);
2337 font-weight: "400";
2338 }
2339
2340 pub c_vconsole_filter_bar {
2341 display: "flex";
2342 gap: var!(space-sm);
2343 padding: format!("{} 0px", var!(space-sm));
2344 border-bottom: format!("1px dashed {}", var!(border));
2345 flex-shrink: "0";
2346 align-items: "center";
2347 }
2348
2349 pub c_vconsole_filter_badge {
2350 display: "inline-flex";
2351 justify-content: "center";
2352 align-items: "center";
2353 color: var!(text-on-accent);
2354 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2355 border: format!("1px solid {}", var!(accent));
2356 font-size: var!(font-xs);
2357 font-weight: "600";
2358 cursor: "pointer";
2359 text-align: "center";
2360 background: var!(accent);
2361 :focus-visible {
2362 outline: "none";
2363 }
2364 }
2365
2366 pub c_vconsole_filter_badge_outline {
2367 display: "inline-flex";
2368 justify-content: "center";
2369 align-items: "center";
2370 color: var!(foreground);
2371 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2372 font-size: var!(font-xs);
2373 font-weight: "600";
2374 cursor: "pointer";
2375 text-align: "center";
2376 border: format!("1.5px solid {}", var!(border));
2377 }
2378
2379 pub c_vconsole_level_badge {
2380 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2381 font-size: var!(font-xs);
2382 margin-right: var!(space-sm);
2383 letter-spacing: "0.05em";
2384 color: var!(foreground);
2385 border: "1px solid currentColor";
2386 wrap: "nowrap";
2387 flex-shrink: "0";
2388 }
2389
2390 pub c_mobile_header {
2395 display: "flex";
2396 align-items: "center";
2397 justify-content: "space-between";
2398 padding: format!("0px {}", var!(space-lg));
2399 height: var!(mobile-header-height);
2400 flex-shrink: "0";
2401 position: "sticky";
2402 top: "0px";
2403 z-index: "100";
2404 contain: "content";
2405 border-bottom: format!("1px solid {}", var!(border));
2406 }
2407
2408 pub c_mobile_header_left {
2409 display: "flex";
2410 align-items: "center";
2411 gap: format!("{}", var!(space-md));
2412 }
2413
2414 pub c_mobile_header_logo {
2415 display: "flex";
2416 align-items: "center";
2417 gap: format!("{}", var!(space-sm));
2418 text-decoration: "none";
2419 color: var!(foreground);
2420 }
2421
2422 pub c_mobile_menu_button {
2423 width: "40px";
2424 height: "40px";
2425 border: "none";
2426 cursor: "pointer";
2427 font-size: "22px";
2428 font-weight: "700";
2429 display: "flex";
2430 align-items: "center";
2431 justify-content: "center";
2432 color: var!(foreground);
2433 padding: "0px";
2434 :active {
2435 background: "transparent";
2436 color: var!(foreground);
2437 }
2438 }
2439
2440 pub c_mobile_theme_button {
2441 width: "40px";
2442 height: "40px";
2443 border: "none";
2444 cursor: "pointer";
2445 display: "flex";
2446 align-items: "center";
2447 justify-content: "center";
2448 padding: "0px";
2449 :active {
2450 background: "transparent";
2451 }
2452 }
2453
2454 pub c_mobile_menu_button_active {
2455 width: "40px";
2456 height: "40px";
2457 border: "none";
2458 cursor: "pointer";
2459 font-size: "22px";
2460 font-weight: "700";
2461 display: "flex";
2462 align-items: "center";
2463 justify-content: "center";
2464 color: var!(accent);
2465 padding: "0px";
2466 :active {
2467 background: var!(background);
2468 color: var!(accent);
2469 }
2470 }
2471
2472 pub c_mobile_drawer_close_button {
2473 width: "32px";
2474 height: "32px";
2475 border: "none";
2476 cursor: "pointer";
2477 font-size: "18px";
2478 font-weight: "500";
2479 display: "flex";
2480 align-items: "center";
2481 justify-content: "center";
2482 color: var!(muted-foreground);
2483 padding: "0px";
2484 transition: format!("color {} {}", var!(duration-fast), var!(ease-out));
2485 :hover {
2486 color: var!(foreground);
2487 }
2488 :active {
2489 color: var!(muted-foreground);
2490 }
2491 }
2492
2493 pub c_mobile_overlay {
2494 position: "fixed";
2495 top: "0px";
2496 left: "0px";
2497 width: "100%";
2498 height: "100%";
2499 background: var!(bg-overlay);
2500 z-index: "200";
2501 contain: "layout style paint";
2502 transition: format!("opacity {} {}", var!(duration-overlay), var!(ease-out));
2503 }
2504
2505 pub c_mobile_overlay_hidden {
2506 opacity: "0";
2507 pointer-events: "none";
2508 }
2509
2510 pub c_mobile_nav_drawer {
2511 position: "fixed";
2512 top: "0px";
2513 left: "0px";
2514 width: "240px";
2515 max-width: "100%";
2516 height: "100%";
2517 background: var!(background);
2518 z-index: "201";
2519 display: "flex";
2520 flex-direction: "column";
2521 padding-top: var!(padding-shell-top);
2522 padding-bottom: var!(padding-shell-bottom);
2523 contain: "layout style paint";
2524 will-change: "transform";
2525 transition: format!("transform {} {}", var!(duration-overlay), var!(ease-out));
2526 overflow: "hidden";
2527 }
2528
2529 pub c_mobile_nav_drawer_closed {
2530 transform: "translateX(-100%)";
2531 }
2532
2533 pub c_mobile_nav_drawer_header {
2534 display: "flex";
2535 align-items: "center";
2536 justify-content: "space-between";
2537 padding: format!("0px {}", var!(space-lg));
2538 height: var!(mobile-header-height);
2539 flex-shrink: "0";
2540 position: "relative";
2541 ::after {
2542 content: "''";
2543 position: "absolute";
2544 bottom: "0px";
2545 left: var!(space-lg);
2546 right: var!(space-lg);
2547 height: "1px";
2548 background: format!("linear-gradient(90deg, transparent, {}, transparent)", var!(border));
2549 }
2550 }
2551
2552 pub c_mobile_main {
2553 c_app_main();
2554 ::-webkit-scrollbar {
2555 width: "0px";
2556 }
2557 }
2558
2559 pub c_keep_alive_tab_bar {
2564 display: "flex";
2565 border-bottom: format!("1px dashed {}", var!(border));
2566 margin-bottom: var!(gap-component);
2567 gap: var!(gap-element);
2568 }
2569
2570 pub c_keep_alive_tab_panel {
2571 padding: format!("{} 0px", var!(gap-element));
2572 }
2573
2574 pub c_keep_alive_panel_title {
2575 margin-top: "0px";
2576 color: var!(accent);
2577 font-size: var!(font-md);
2578 margin-bottom: var!(gap-element);
2579 }
2580
2581 pub c_keep_alive_demo_text {
2582 color: "inherit";
2583 font-size: var!(font-base);
2584 margin-bottom: var!(gap-component);
2585 }
2586
2587 pub c_keep_alive_counter_display {
2588 display: "flex";
2589 justify-content: "center";
2590 align-items: "center";
2591 margin: format!("{} 0px", var!(space-xl));
2592 }
2593
2594 pub c_keep_alive_counter_value {
2595 font-size: var!(font-5xl);
2596 font-weight: "700";
2597 font-variant-numeric: "tabular-nums";
2598 color: var!(accent);
2599 min-width: "120px";
2600 text-align: "center";
2601 }
2602
2603 pub c_keep_alive_counter_controls {
2604 display: "flex";
2605 flex-wrap: "wrap";
2606 gap: format!("{}", var!(space-md));
2607 }
2608
2609 pub c_keep_alive_form_group {
2610 margin-bottom: var!(gap-component);
2611 }
2612
2613 pub c_keep_alive_form_preview {
2614 margin-top: var!(gap-component);
2615 background: var!(accent-muted);
2616 }
2617
2618 pub c_keep_alive_preview_label {
2619 font-size: var!(font-base);
2620 font-weight: "600";
2621 color: var!(accent);
2622 margin: format!("0px 0px {} 0px", var!(space-xs));
2623 }
2624
2625 pub c_file_upload_input_hidden {
2630 position: "absolute";
2631 width: "1px";
2632 height: "1px";
2633 padding: "0px";
2634 margin: "-1px";
2635 overflow: "hidden";
2636 clip: "rect(0, 0, 0, 0)";
2637 white-space: "nowrap";
2638 border: "0px";
2639 }
2640
2641 pub c_file_upload_options {
2642 margin: format!("{} 0px", var!(gap-component));
2643 }
2644
2645 pub c_file_upload_item {
2646 display: "flex";
2647 align-items: "center";
2648 gap: format!("{}", var!(space-md));
2649 margin: format!("{} 0px", var!(space-sm));
2650 font-size: var!(font-base);
2651 color: "inherit";
2652 }
2653
2654 pub c_file_upload_item_index {
2655 font-size: var!(font-sm);
2656 font-weight: "600";
2657 color: var!(accent);
2658 min-width: "24px";
2659 }
2660
2661 pub c_file_upload_item_name {
2662 color: "inherit";
2663 word-break: "break-all";
2664 }
2665
2666 pub c_binding_child_box {
2671 display: "flex";
2672 flex-direction: "column";
2673 gap: var!(gap-component);
2674 margin-top: var!(gap-component);
2675 }
2676
2677 pub c_binding_child_label {
2678 font-size: var!(font-base);
2679 font-weight: "600";
2680 color: var!(accent);
2681 text-transform: "uppercase";
2682 letter-spacing: "0.05em";
2683 }
2684
2685 pub c_binding_parent_box {
2686 display: "flex";
2687 flex-direction: "column";
2688 gap: var!(gap-component);
2689 margin-top: var!(gap-component);
2690 }
2691
2692 pub c_binding_section_title {
2693 margin-top: var!(gap-component);
2694 margin-bottom: var!(gap-element);
2695 color: var!(accent);
2696 font-size: var!(font-md);
2697 font-weight: "600";
2698 }
2699
2700 pub c_binding_temp_converter {
2701 display: "flex";
2702 align-items: "flex-end";
2703 gap: var!(gap-component);
2704 flex-wrap: "wrap";
2705 margin-top: var!(gap-component);
2706 }
2707
2708 pub c_binding_temp_field {
2709 flex: "1";
2710 min-width: "120px";
2711 }
2712
2713 pub c_binding_temp_arrow {
2714 font-size: "20px";
2715 font-weight: "700";
2716 color: var!(accent);
2717 padding-bottom: "10px";
2718 }
2719
2720 pub c_binding_color_mixer {
2721 margin-top: var!(gap-component);
2722 }
2723
2724 pub c_binding_color_preview {
2725 width: "100%";
2726 height: "80px";
2727 display: "flex";
2728 align-items: "center";
2729 justify-content: "center";
2730 margin-bottom: var!(gap-component);
2731 }
2732
2733 pub c_binding_color_hex {
2734 font-family: "ui-monospace, monospace";
2735 font-size: var!(font-xl);
2736 font-weight: "700";
2737 color: var!(text-on-accent);
2738 letter-spacing: "0.02em";
2739 }
2740
2741 pub c_binding_slider_row {
2742 display: "flex";
2743 align-items: "center";
2744 gap: format!("{}", var!(space-md));
2745 margin-bottom: var!(space-sm);
2746 }
2747
2748 pub c_binding_slider_label {
2749 font-size: var!(font-base);
2750 font-weight: "700";
2751 min-width: var!(font-sm);
2752 }
2753
2754 pub c_binding_slider {
2755 flex: "1";
2756 height: "24px";
2757 padding: "0px";
2758 cursor: "pointer";
2759 -webkit-appearance: "none";
2760 appearance: "none";
2761 border: "none";
2762 outline: "none";
2763 ::-webkit-slider-runnable-track {
2764 height: "6px";
2765 background: format!("linear-gradient(to right, {} 0%, {} var(--value,50%), {} var(--value,50%), {} 100%)", var!(foreground), var!(foreground), var!(border), var!(border));
2766 border-radius: "3px";
2767 border: "none";
2768 }
2769 ::-webkit-slider-thumb {
2770 width: "20px";
2771 height: "20px";
2772 background: var!(background);
2773 border: format!("2px solid {}", var!(accent));
2774 border-radius: "50%";
2775 cursor: "pointer";
2776 -webkit-appearance: "none";
2777 margin-top: "-7px";
2778 }
2779 : active::-webkit-slider-thumb {
2780 transform: "scale(0.92)";
2781 }
2782 ::-moz-range-track {
2783 height: "6px";
2784 background: format!("linear-gradient(to right, {} 0%, {} var(--value,50%), {} var(--value,50%), {} 100%)", var!(foreground), var!(foreground), var!(border), var!(border));
2785 border-radius: "3px";
2786 border: "none";
2787 }
2788 ::-moz-range-thumb {
2789 width: "20px";
2790 height: "20px";
2791 background: var!(background);
2792 border: format!("2px solid {}", var!(accent));
2793 border-radius: "50%";
2794 cursor: "pointer";
2795 }
2796 : active::-moz-range-thumb {
2797 transform: "scale(0.92)";
2798 }
2799 }
2800
2801 pub c_binding_slider_value {
2802 font-size: var!(font-base);
2803 font-weight: "500";
2804 color: "inherit";
2805 min-width: "32px";
2806 text-align: "right";
2807 font-family: "ui-monospace, monospace";
2808 }
2809
2810 pub c_binding_typed_prop_value {
2811 font-family: "ui-monospace, monospace";
2812 font-size: var!(font-base);
2813 font-weight: "600";
2814 color: var!(accent);
2815 padding: format!("1px {}", var!(space-sm));
2816 }
2817
2818 pub c_binding_typed_prop_group {
2819 display: "flex";
2820 align-items: "center";
2821 gap: var!(space-sm);
2822 }
2823
2824 pub c_binding_typed_warning {
2825 font-size: var!(font-base);
2826 font-weight: "500";
2827 color: var!(foreground);
2828 margin-bottom: "0px";
2829 }
2830
2831 pub c_binding_form_label {
2832 display: "block";
2833 color: "inherit";
2834 font-weight: "500";
2835 font-size: var!(font-base);
2836 }
2837
2838 pub c_binding_demo_text {
2839 color: "inherit";
2840 margin: "0px"
2841 }
2842
2843 pub c_binding_compact_button {
2844 display: "inline-flex";
2845 justify-content: "center";
2846 align-items: "center";
2847 height: "42px";
2848 padding: format!("0px {}", var!(space-md));
2849 background: var!(accent);
2850 color: var!(text-on-accent);
2851 border: format!("1px solid {}", var!(accent));
2852 cursor: "pointer";
2853 font-size: var!(font-sm);
2854 font-weight: "600";
2855 outline: "none";
2856 white-space: "nowrap";
2857 user-select: "none";
2858 -webkit-user-select: "none";
2859 box-sizing: "border-box";
2860 :hover {
2861 background: var!(accent);
2862 }
2863 :focus-visible {
2864 outline: "none";
2865 }
2866 :active {
2867 background: var!(accent);
2868 color: var!(text-on-accent);
2869 border-color: var!(accent);
2870 }
2871 }
2872
2873 pub c_attrs_dynamic_demo(prop_key: &str, prop_value: &str) {
2878 {
2879 prop_key
2880 }
2881 : prop_value;
2882 margin-top: var!(gap-component);
2883 color: "inherit";
2884 margin-top: var!(space-md);
2885 }
2886
2887 pub c_dynamic_component_tab_bar {
2892 display: "flex";
2893 flex-wrap: "wrap";
2894 gap: var!(gap-element);
2895 margin-bottom: var!(gap-component);
2896 }
2897
2898 pub c_dynamic_component_panel {
2899 display: "block";
2900 min-height: var!(min-height-sm);
2901 margin-top: var!(gap-component);
2902 }
2903
2904 pub c_virtual_list_status {
2909 display: "flex";
2910 gap: var!(gap-component);
2911 padding: format!("{} 0px", var!(gap-component));
2912 flex-wrap: "nowrap";
2913 overflow: "hidden";
2914 text-overflow: "ellipsis";
2915 white-space: "nowrap";
2916 @media ((max-width: 767px)) {
2917 gap: var!(gap-component-mobile);
2918 }
2919 }
2920
2921 pub c_virtual_list_status_item {
2922 font-size: var!(font-base);
2923 color: "inherit";
2924 overflow: "hidden";
2925 text-overflow: "ellipsis";
2926 white-space: "nowrap";
2927 }
2928
2929 pub c_virtual_list_status_value {
2930 font-weight: "700";
2931 color: var!(accent);
2932 font-family: "ui-monospace, monospace";
2933 }
2934
2935 pub c_virtual_list_container {
2936 flex: "1";
2937 height: "666px";
2938 max-height: "666px";
2939 overflow-y: "auto";
2940 }
2941
2942 pub c_virtual_list_card {
2943 flex: "1";
2944 padding: var!(space-xl);
2945 color: var!(foreground);
2946 display: "flex";
2947 flex-direction: "column";
2948 @media ((max-width: 767px)) {
2949 padding: var!(space-lg);
2950 }
2951 }
2952
2953 pub c_virtual_list_row {
2954 display: "flex";
2955 align-items: "center";
2956 gap: var!(space-lg);
2957 height: "100%";
2958 box-sizing: "border-box";
2959 }
2960
2961 pub c_virtual_list_row_index {
2962 min-width: "36px";
2963 font-size: var!(font-sm);
2964 font-weight: "600";
2965 color: var!(accent);
2966 font-family: "ui-monospace, monospace";
2967 flex-shrink: "0";
2968 display: "flex";
2969 align-items: "center";
2970 }
2971
2972 pub c_virtual_list_row_label {
2973 font-size: var!(font-base);
2974 font-weight: "500";
2975 color: "inherit";
2976 min-width: "120px";
2977 flex-shrink: "0";
2978 overflow: "hidden";
2979 text-overflow: "ellipsis";
2980 white-space: "nowrap";
2981 display: "flex";
2982 align-items: "center";
2983 }
2984
2985 pub c_virtual_list_row_description {
2986 font-size: var!(font-base);
2987 color: "inherit";
2988 opacity: "1";
2989 overflow: "hidden";
2990 text-overflow: "ellipsis";
2991 white-space: "nowrap";
2992 flex: "1";
2993 display: "flex";
2994 align-items: "center";
2995 }
2996
2997 pub c_element_stack {
3002 display: "flex";
3003 flex-direction: "column";
3004 gap: var!(gap-element);
3005 }
3006
3007 pub c_switcher {
3008 display: "flex";
3009 gap: var!(gap-component);
3010 flex-wrap: "wrap";
3011 @media ((max-width: 767px)) {
3012 flex-direction: "column";
3013 gap: var!(gap-component-mobile);
3014 }
3015 }
3016
3017 pub c_switcher_col {
3018 flex: "1";
3019 min-width: "200px";
3020 @media ((max-width: 767px)) {
3021 min-width: "100%";
3022 }
3023 }
3024
3025 pub c_hint {
3030 color: "inherit";
3031 opacity: "1";
3032 font-size: var!(font-base);
3033 margin-bottom: var!(gap-component);
3034 }
3035
3036 pub c_net_messages_empty {
3041 color: "inherit";
3042 opacity: "1";
3043 padding: var!(space-xl);
3044 text-align: "center";
3045 font-size: var!(font-base);
3046 }
3047
3048 pub c_net_messages_list {
3049 display: "flex";
3050 flex-direction: "column";
3051 gap: var!(space-xs);
3052 }
3053
3054 pub c_net_message_item {
3055 display: "flex";
3056 align-items: "baseline";
3057 gap: var!(gap-element);
3058 justify-content: "space-between";
3059 }
3060
3061 pub c_net_message_index {
3062 color: var!(accent);
3063 font-size: var!(font-sm);
3064 font-weight: "600";
3065 white-space: "nowrap";
3066 flex-shrink: "0";
3067 }
3068
3069 pub c_net_message_data {
3070 color: "inherit";
3071 font-size: var!(font-base);
3072 word-break: "break-all";
3073 overflow-wrap: "break-word";
3074 flex: "1";
3075 min-width: "0";
3076 }
3077
3078 pub c_ws_message_input {
3083 width: "100%";
3084 flex: "1";
3085 height: "42px";
3086 padding: format!("0px {}", var!(space-lg));
3087 color: var!(foreground);
3088 border: format!("1px solid {}", var!(border));
3089 font-size: var!(font-base);
3090 line-height: "normal";
3091 box-sizing: "border-box";
3092 outline: "none";
3093 appearance: "none";
3094 -webkit-appearance: "none";
3095 -moz-appearance: "none";
3096 vertical-align: "middle";
3097 :hover {
3098 border-color: var!(accent);
3099 background: var!(accent-muted);
3100 }
3101 :focus {
3102 outline: "none";
3103 border-color: var!(accent);
3104 background: var!(accent-muted);
3105 }
3106 }
3107
3108 pub c_ws_message_time {
3109 color: var!(foreground);
3110 font-size: var!(font-sm);
3111 white-space: "nowrap";
3112 flex-shrink: "0";
3113 margin-left: "auto";
3114 }
3115
3116 pub c_home {
3125 position: "relative";
3126 text-align: "center";
3127 margin-bottom: var!(space-xl);
3128 flex: "1";
3129 display: "flex";
3130 flex-direction: "column";
3131 justify-content: "center";
3132 @media ((max-width: 767px)) {
3133 margin-bottom: var!(space-lg);
3134 flex: "0 0 auto";
3135 }
3136 }
3137
3138 pub c_home_content {
3139 position: "relative";
3140 z-index: "1";
3141 }
3142
3143 pub c_home_badge_row {
3144 display: "inline-flex";
3145 align-items: "center";
3146 gap: var!(space-sm);
3147 margin-bottom: var!(space-md);
3148 }
3149
3150 pub c_home_badge {
3151 display: "inline-flex";
3152 justify-content: "center";
3153 align-items: "center";
3154 padding: format!("{} {}", var!(space-xs), var!(space-sm));
3155 color: var!(accent);
3156 font-size: var!(font-xs);
3157 font-weight: "600";
3158 letter-spacing: "0.05em";
3159 border: format!("1px solid {}", var!(accent));
3160 }
3161
3162 pub c_home_title {
3163 font-size: var!(font-5xl);
3164 font-weight: "800";
3165 letter-spacing: "-0.03em";
3166 margin: "0px";
3167 color: var!(foreground);
3168 margin-bottom: var!(space-xs);
3169 @media ((max-width: 767px)) {
3170 font-size: var!(font-4xl);
3171 }
3172 }
3173
3174 pub c_home_subtitle {
3175 font-size: var!(font-lg);
3176 color: var!(foreground);
3177 margin: "0px auto";
3178 max-width: "520px";
3179 margin-bottom: var!(space-lg);
3180 @media ((max-width: 767px)) {
3181 font-size: var!(font-base);
3182 }
3183 }
3184
3185 pub c_home_actions {
3186 display: "flex";
3187 gap: var!(space-md);
3188 justify-content: "center";
3189 flex-wrap: "wrap";
3190 }
3191
3192 pub c_home_btn_primary {
3193 display: "inline-flex";
3194 justify-content: "center";
3195 align-items: "center";
3196 gap: var!(space-sm);
3197 padding: format!("{} {}", var!(space-sm), var!(space-2xl));
3198 background: var!(accent);
3199 color: var!(text-on-accent);
3200 font-size: var!(font-base);
3201 font-weight: "600";
3202 text-decoration: "none";
3203 border: "1.5px solid transparent";
3204 cursor: "pointer";
3205 letter-spacing: "0.01em";
3206 vertical-align: "middle";
3207 min-height: var!(min-height-sm);
3208 :focus-visible {
3209 outline: "none";
3210 }
3211 :active {
3212 background: var!(accent);
3213 color: var!(text-on-accent);
3214 border-color: "1.5px solid transparent";
3215 }
3216 }
3217
3218 pub c_home_btn_secondary {
3219 display: "inline-flex";
3220 justify-content: "center";
3221 align-items: "center";
3222 gap: var!(space-sm);
3223 padding: format!("{} {}", var!(space-sm), var!(space-2xl));
3224 color: var!(accent);
3225 font-size: var!(font-base);
3226 font-weight: "600";
3227 text-decoration: "none";
3228 border: format!("1.5px solid {}", var!(accent));
3229 cursor: "pointer";
3230 letter-spacing: "0.01em";
3231 vertical-align: "middle";
3232 min-height: var!(min-height-sm);
3233 :focus-visible {
3234 outline: "none";
3235 }
3236 :active {
3237 background: "transparent";
3238 color: var!(accent);
3239 border-color: var!(accent);
3240 }
3241 }
3242
3243 pub c_home_stats {
3248 display: "grid";
3249 grid-template-columns: "repeat(4, 1fr)";
3250 gap: var!(space-md);
3251 margin-bottom: var!(space-xl);
3252 @media ((max-width: 767px)) {
3253 grid-template-columns: "repeat(2, 1fr)";
3254 gap: var!(space-sm);
3255 }
3256 }
3257
3258 pub c_home_stat_card {
3259 display: "flex";
3260 flex-direction: "column";
3261 align-items: "center";
3262 justify-content: "center";
3263 gap: var!(space-xs);
3264 }
3265
3266 pub c_home_stat_icon {
3267 font-size: var!(font-2xl);
3268 }
3269
3270 pub c_home_stat_value {
3271 font-size: var!(font-xl);
3272 font-weight: "800";
3273 color: var!(foreground);
3274 letter-spacing: "-0.01em";
3275 }
3276
3277 pub c_home_stat_label {
3278 font-size: var!(font-sm);
3279 color: var!(muted-foreground);
3280 font-weight: "500";
3281 }
3282
3283 pub c_home_section_title {
3288 font-size: var!(font-2xl);
3289 font-weight: "700";
3290 color: var!(foreground);
3291 margin: "0px";
3292 margin: format!("{} 0px", var!(gap-component));
3293 letter-spacing: "-0.02em";
3294 }
3295
3296 pub c_home_section_desc {
3297 font-size: var!(font-base);
3298 color: var!(foreground);
3299 margin: "0px";
3300 margin-bottom: var!(space-2xl);
3301 }
3302
3303 pub c_home_feature_grid {
3304 display: "grid";
3305 grid-template-columns: "repeat(2, 1fr)";
3306 gap: var!(space-md);
3307 @media ((max-width: 767px)) {
3308 grid-template-columns: "1fr";
3309 }
3310 }
3311
3312 pub c_feature_card {
3313 display: "flex";
3314 flex-direction: "column";
3315 gap: var!(space-sm);
3316 padding: "0px";
3317 overflow: "hidden";
3318 }
3319
3320 pub c_feature_header {
3321 display: "flex";
3322 align-items: "center";
3323 gap: var!(space-sm);
3324 }
3325
3326 pub c_feature_icon {
3327 font-size: var!(font-2xl);
3328 display: "flex";
3329 align-items: "center";
3330 justify-content: "center";
3331 line-height: "1";
3332 flex-shrink: "0";
3333 }
3334
3335 pub c_feature_name {
3336 font-size: var!(font-lg);
3337 font-weight: "600";
3338 color: var!(foreground);
3339 margin: "0px";
3340 overflow: "hidden";
3341 text-overflow: "ellipsis";
3342 white-space: "nowrap";
3343 }
3344
3345 pub c_feature_desc {
3346 font-size: var!(font-sm);
3347 color: var!(foreground);
3348 margin: "0px";
3349 }
3350
3351 }