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