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 inset: "0";
1398 display: "flex";
1399 flex-direction: "column";
1400 align-items: "center";
1401 justify-content: "center";
1402 gap: var!(gap-component);
1403 border-radius: "8px";
1404 background: background;
1405 z-index: "1";
1406 box-sizing: "border-box";
1407 }
1408
1409 pub c_error_container {
1410 display: "flex";
1411 align-items: "center";
1412 gap: var!(gap-element);
1413 margin-top: var!(gap-component);
1414 box-sizing: "border-box";
1415 }
1416
1417 pub c_error_icon {
1418 width: "20px";
1419 height: "20px";
1420 display: "flex";
1421 align-items: "center";
1422 justify-content: "center";
1423 flex-shrink: "0";
1424 color: var!(foreground);
1425 font-size: var!(font-sm);
1426 font-weight: "700";
1427 }
1428
1429 pub c_error_text {
1430 color: var!(foreground);
1431 font-size: var!(font-base);
1432 }
1433
1434 pub c_data_box {
1435 margin: format!("{} 0px", var!(gap-component));
1436 box-sizing: "border-box";
1437 }
1438
1439 pub c_data_pre {
1440 color: var!(foreground);
1441 font-size: var!(font-base);
1442 margin: "0px";
1443 white-space: "pre-wrap";
1444 word-break: "break-all";
1445 font-family: "ui-monospace, monospace";
1446 }
1447
1448 pub c_fetch_hint {
1449 color: "inherit";
1450 opacity: "1";
1451 font-size: var!(font-base);
1452 margin-bottom: var!(gap-component);
1453 }
1454
1455 pub c_toggle_content {
1460 margin-top: var!(gap-component);
1461 color: "inherit";
1462 }
1463
1464 pub c_toggle_title {
1465 margin-top: "0px";
1466 color: var!(accent);
1467 font-size: var!(font-md);
1468 }
1469
1470 pub c_role_button_row {
1471 display: "flex";
1472 flex-wrap: "wrap";
1473 gap: var!(gap-element);
1474 margin-bottom: var!(gap-component);
1475 }
1476
1477 pub c_role_guest_text {
1478 color: var!(foreground);
1479 font-size: var!(font-base);
1480 }
1481
1482 pub c_role_user_text {
1483 color: var!(foreground);
1484 font-size: var!(font-base);
1485 }
1486
1487 pub c_role_admin_text {
1488 color: var!(foreground);
1489 font-size: var!(font-base);
1490 }
1491
1492 pub c_tab_bar {
1497 display: "flex";
1498 border-bottom: format!("1px dashed {}", var!(border));
1499 margin-bottom: var!(gap-component);
1500 gap: var!(gap-element);
1501 @media ((max-width: 767px)) {
1502 flex-wrap: "wrap";
1503 }
1504 }
1505
1506 pub c_tab_item_active {
1507 padding: format!("{} {}", var!(space-md), var!(space-xl));
1508 cursor: "pointer";
1509 border-bottom: format!("2px solid {}", var!(accent));
1510 color: var!(text-on-accent);
1511 background: var!(accent);
1512 font-size: var!(font-base);
1513 font-weight: "500";
1514 }
1515
1516 pub c_tab_item_inactive {
1517 padding: format!("{} {}", var!(space-md), var!(space-xl));
1518 cursor: "pointer";
1519 border-bottom: "2px solid transparent";
1520 color: "inherit";
1521 font-size: var!(font-base);
1522 font-weight: "500";
1523 :hover {
1524 background: var!(accent-muted);
1525 color: var!(accent);
1526 }
1527 }
1528
1529 pub c_tab_content {
1530 padding: format!("{} 0px", var!(gap-element));
1531 }
1532
1533 pub c_tab_text {
1534 color: "inherit";
1535 font-size: var!(font-base);
1536 margin-bottom: var!(gap-element);
1537 }
1538
1539 pub c_tab_text_muted {
1540 color: "inherit";
1541 opacity: "1";
1542 font-size: var!(font-base);
1543 }
1544
1545 pub c_tab_text_input {
1546 color: "inherit";
1547 font-size: var!(font-base);
1548 margin-bottom: var!(gap-component);
1549 }
1550
1551 pub c_list_input {
1556 width: "100%";
1557 flex: "1";
1558 height: "42px";
1559 padding: format!("0px {}", var!(space-lg));
1560 border: format!("1px solid {}", var!(border));
1561 font-size: var!(font-base);
1562 line-height: "normal";
1563 box-sizing: "border-box";
1564 outline: "none";
1565 color: var!(foreground);
1566 appearance: "none";
1567 -webkit-appearance: "none";
1568 -moz-appearance: "none";
1569 vertical-align: "middle";
1570 :hover {
1571 border-color: var!(accent);
1572 background: var!(accent-muted);
1573 }
1574 :focus {
1575 outline: "none";
1576 border-color: var!(accent);
1577 background: var!(accent-muted);
1578 }
1579 }
1580
1581 pub c_list_input_error {
1582 width: "100%";
1583 flex: "1";
1584 height: "42px";
1585 padding: format!("0px {}", var!(space-lg));
1586 border: format!("1px solid {}", var!(foreground));
1587 font-size: var!(font-base);
1588 line-height: "normal";
1589 box-sizing: "border-box";
1590 outline: "none";
1591 color: var!(foreground);
1592 appearance: "none";
1593 -webkit-appearance: "none";
1594 -moz-appearance: "none";
1595 vertical-align: "middle";
1596 :focus {
1597 outline: "none";
1598 border-color: var!(foreground);
1599 }
1600 }
1601
1602 pub c_list_error_text {
1603 color: var!(foreground);
1604 font-size: var!(font-base);
1605 margin: format!("{} 0px", var!(gap-element));
1606 }
1607
1608 pub c_inline_input_button_wrap {
1609 flex-shrink: "0";
1610 }
1611
1612 pub c_list_ul {
1613 list-style: "none";
1614 padding: "0px";
1615 margin: "0px";
1616 margin-top: var!(gap-component);
1617 }
1618
1619 pub c_list_item {
1620 display: "flex";
1621 justify-content: "space-between";
1622 align-items: "center";
1623 gap: var!(gap-component);
1624 min-height: var!(min-height-base);
1625 margin: format!("{} 0px", var!(gap-element));
1626 }
1627
1628 pub c_list_item_text {
1629 flex: "1";
1630 overflow: "hidden";
1631 text-overflow: "ellipsis";
1632 white-space: "nowrap";
1633 font-size: var!(font-base);
1634 color: "inherit";
1635 min-width: "0";
1636 }
1637
1638 pub c_list_item_button {
1639 max-width: "120px";
1640 flex-shrink: "0";
1641 }
1642
1643 pub c_log_container {
1648 font-family: "ui-monospace, monospace";
1649 font-size: var!(font-base);
1650 margin-top: "0px";
1651 color: var!(foreground);
1652 }
1653
1654 pub c_log_item {
1655 padding: format!("{} 0px", var!(space-sm));
1656 font-size: var!(font-base);
1657 color: var!(foreground);
1658 }
1659
1660 pub c_render_count_text {
1665 font-size: var!(font-lg);
1666 color: "inherit";
1667 margin-bottom: var!(gap-component);
1668 }
1669
1670 pub c_event_result {
1675 font-size: var!(font-base);
1676 color: "inherit";
1677 margin-top: var!(gap-element);
1678 }
1679
1680 pub c_event_highlight {
1681 font-weight: "600";
1682 color: var!(accent);
1683 }
1684
1685 pub c_event_info_grid {
1686 display: "grid";
1687 grid-template-columns: "1fr 1fr";
1688 gap: var!(gap-element);
1689 margin-top: var!(gap-component);
1690 @media ((max-width: 767px)) {
1691 grid-template-columns: "1fr";
1692 gap: var!(gap-element);
1693 }
1694 }
1695
1696 pub c_event_info_row {
1697 display: "flex";
1698 align-items: "center";
1699 gap: var!(space-sm);
1700 overflow: "hidden";
1701 }
1702
1703 pub c_event_info_label {
1704 font-size: var!(font-base);
1705 font-weight: "600";
1706 color: var!(foreground);
1707 flex-shrink: "0";
1708 }
1709
1710 pub c_event_info_value {
1711 c_text_ellipsis();
1712 font-size: var!(font-base);
1713 font-weight: "600";
1714 color: var!(accent);
1715 font-family: "ui-monospace, monospace";
1716 flex: "1";
1717 }
1718
1719 pub c_event_mouse_area {
1720 min-height: "120px";
1721 padding: format!("{} 0px", var!(space-xl));
1722 border: format!("2px dashed {}", var!(border));
1723 cursor: "crosshair";
1724 text-align: "center";
1725 user-select: "none";
1726 color: "inherit";
1727 }
1728
1729 pub c_event_drag_zone {
1730 min-height: "100px";
1731 padding: format!("{} 0px", var!(space-xl));
1732 border: format!("2px dashed {}", var!(border));
1733 text-align: "center";
1734 user-select: "none";
1735 color: var!(foreground);
1736 }
1737
1738 pub c_event_drag_zone_active {
1739 min-height: "100px";
1740 padding: format!("{} 0px", var!(space-xl));
1741 border: format!("2px dashed {}", var!(border));
1742 text-align: "center";
1743 user-select: "none";
1744 color: var!(foreground);
1745 }
1746
1747 pub c_event_drag_item {
1748 display: "inline-block";
1749 padding: format!("{} {}", var!(space-sm), var!(space-xl));
1750 background: var!(accent);
1751 color: var!(text-on-accent);
1752 font-size: var!(font-base);
1753 font-weight: "500";
1754 cursor: "grab";
1755 margin: var!(space-sm);
1756 }
1757
1758 pub c_event_drop_zone {
1759 border: format!("2px dashed {}", var!(border));
1760 padding: format!("{} {}", var!(space-4xl), var!(space-xl));
1761 text-align: "center";
1762 cursor: "pointer";
1763 }
1764
1765 pub c_event_drop_zone_active {
1766 border: format!("2px dashed {}", var!(accent));
1767 padding: format!("{} {}", var!(space-4xl), var!(space-xl));
1768 text-align: "center";
1769 cursor: "pointer";
1770 background: var!(accent-muted);
1771 }
1772
1773 pub c_event_drop_icon {
1774 font-size: var!(font-5xl);
1775 display: "block";
1776 padding-bottom: var!(space-md);
1777 }
1778
1779 pub c_event_drop_text {
1780 font-size: var!(font-lg);
1781 font-weight: "500";
1782 color: "inherit";
1783 padding-bottom: var!(space-md);
1784 }
1785
1786 pub c_event_drop_hint {
1787 font-size: var!(font-base);
1788 color: "inherit";
1789 opacity: "1";
1790 margin: "0px";
1791 }
1792
1793 pub c_event_wheel_zone {
1794 min-height: "120px";
1795 padding: format!("{} 0px", var!(space-xl));
1796 border: format!("2px dashed {}", var!(border));
1797 text-align: "center";
1798 overflow: "auto";
1799 color: var!(foreground);
1800 }
1801
1802 pub c_event_clipboard_area {
1803 color: var!(foreground);
1804 }
1805
1806 pub c_event_touch_zone {
1807 min-height: "120px";
1808 padding: format!("{} 0px", var!(space-xl));
1809 border: format!("2px dashed {}", var!(accent));
1810 text-align: "center";
1811 touch-action: "none";
1812 user-select: "none";
1813 color: var!(accent);
1814 }
1815
1816 pub c_event_form_area {
1817 padding: format!("{} 0px", var!(space-lg));
1818 color: var!(foreground);
1819 }
1820
1821 pub c_event_media_area {
1822 padding: format!("{} 0px", var!(space-lg));
1823 color: var!(foreground);
1824 max-width: "100%";
1825 overflow: "hidden";
1826 }
1827
1828 pub c_event_audio {
1829 width: "100%";
1830 max-width: "100%";
1831 }
1832
1833 pub c_event_video_area {
1834 color: var!(foreground);
1835 width: "100%";
1836 overflow: "hidden";
1837 }
1838
1839 pub c_event_video {
1840 width: "100%";
1841 max-width: "100%";
1842 }
1843
1844 pub c_event_image_area {
1845 padding: format!("{} 0px", var!(space-lg));
1846 color: "inherit";
1847 width: "100%";
1848 overflow: "hidden";
1849 display: "flex";
1850 flex-direction: "column";
1851 align-items: "center";
1852 gap: var!(space-md);
1853 }
1854
1855 pub c_event_image {
1856 width: "200px";
1857 max-width: "100%";
1858 object-fit: "contain";
1859 display: "block";
1860 }
1861
1862 pub c_event_url_text {
1863 text-align: "center";
1864 font-size: var!(font-sm);
1865 color: "inherit";
1866 opacity: "1";
1867 font-family: "ui-monospace, monospace";
1868 word-break: "break-all";
1869 width: "100%";
1870 }
1871
1872 pub c_timer_display {
1877 text-align: "center";
1878 padding: var!(space-xl);
1879 margin: format!("{} 0px", var!(gap-component));
1880 color: "inherit";
1881 }
1882
1883 pub c_timer_value {
1884 font-size: var!(font-5xl);
1885 font-weight: "700";
1886 color: var!(accent);
1887 letter-spacing: "0.04em";
1888 font-family: "ui-monospace, monospace";
1889 @media ((max-width: 767px)) {
1890 font-size: var!(font-4xl);
1891 }
1892 }
1893
1894 pub c_timer_controls {
1895 display: "flex";
1896 flex-wrap: "wrap";
1897 gap: var!(gap-element);
1898 }
1899
1900 pub c_timer_done {
1901 text-align: "center";
1902 margin-top: var!(gap-component);
1903 font-size: var!(font-lg);
1904 font-weight: "600";
1905 color: var!(foreground);
1906 }
1907
1908 pub c_modal_overlay {
1913 position: "fixed";
1914 top: "0px";
1915 left: "0px";
1916 width: "100%";
1917 height: "100%";
1918 background: var!(bg-overlay);
1919 contain: "layout style paint";
1920 display: "flex";
1921 align-items: "center";
1922 justify-content: "center";
1923 z-index: "1000";
1924 animation: format!("euv-fade-in {} {}", var!(duration-modal-overlay), var!(ease-out));
1925 @media ((max-width: 767px)) {
1926 align-items: "center";
1927 justify-content: "center";
1928 }
1929 }
1930
1931 pub c_modal_content {
1932 background: var!(background);
1933 padding: "0px";
1934 max-width: "480px";
1935 width: "90%";
1936 animation: format!("euv-scale-in-modal {} {}", var!(duration-modal-content), var!(ease-bounce));
1937 overflow: "hidden";
1938 color: var!(foreground);
1939 box-sizing: "border-box";
1940 @media ((max-width: 767px)) {
1941 max-width: "100%";
1942 width: "calc(100% - 32px)";
1943 max-height: "85vh";
1944 overflow-y: "auto";
1945 }
1946 }
1947
1948 pub c_modal_header {
1949 display: "flex";
1950 justify-content: "space-between";
1951 align-items: "center";
1952 padding: format!("{} {} 0px {}", var!(space-md), var!(space-xl), var!(space-xl));
1953 }
1954
1955 pub c_modal_title {
1956 margin: "0px";
1957 font-size: var!(font-xl);
1958 font-weight: "600";
1959 color: "inherit";
1960 }
1961
1962 pub c_modal_body {
1963 padding: format!("0px {} {} {}", var!(space-xl), var!(space-md), var!(space-xl));
1964 color: "inherit";
1965 }
1966
1967 pub c_modal_actions {
1968 display: "flex";
1969 flex-wrap: "wrap";
1970 gap: var!(space-md);
1971 margin: format!("{} 0px", var!(space-md));
1972 }
1973
1974 pub c_anim_fade_in {
1979 margin-top: var!(gap-component);
1980 animation: format!("euv-fade-in 0.5s {}", var!(ease-out));
1981 font-size: var!(font-base);
1982 color: "inherit";
1983 }
1984
1985 pub c_anim_spin_container {
1986 display: "flex";
1987 justify-content: "center";
1988 align-items: "center";
1989 margin: format!("{} 0px", var!(space-lg));
1990 min-height: "80px";
1991 }
1992
1993 pub c_anim_spin {
1994 font-size: var!(font-5xl);
1995 animation: "euv-spin 1.5s linear infinite";
1996 display: "inline-block";
1997 @media ((max-width: 767px)) {
1998 font-size: var!(font-4xl);
1999 }
2000 }
2001
2002 pub c_anim_spin_stopped {
2003 font-size: var!(font-5xl);
2004 display: "inline-block";
2005 opacity: "1";
2006 @media ((max-width: 767px)) {
2007 font-size: var!(font-4xl);
2008 }
2009 }
2010
2011 pub c_anim_pulse_container {
2012 display: "flex";
2013 justify-content: "center";
2014 align-items: "center";
2015 margin: format!("{} 0px", var!(space-lg));
2016 min-height: "80px";
2017 }
2018
2019 pub c_anim_pulse {
2020 font-size: var!(font-5xl);
2021 animation: "euv-pulse 1.5s ease-in-out infinite";
2022 display: "inline-block";
2023 color: var!(foreground);
2024 @media ((max-width: 767px)) {
2025 font-size: var!(font-4xl);
2026 }
2027 }
2028
2029 pub c_anim_pulse_stopped {
2030 font-size: var!(font-5xl);
2031 display: "inline-block";
2032 opacity: "1";
2033 color: var!(foreground);
2034 @media ((max-width: 767px)) {
2035 font-size: var!(font-4xl);
2036 }
2037 }
2038
2039 pub c_progress_container {
2040 width: "100%";
2041 height: "12px";
2042 margin: format!("{} 0px", var!(space-lg));
2043 overflow: "hidden";
2044 }
2045
2046 pub c_progress_bar_running {
2047 height: "100%";
2048 background: var!(accent);
2049 animation: format!("euv-progress 1.6s {} forwards", var!(ease-in-out));
2050 }
2051
2052 pub c_progress_bar_stopped {
2053 height: "100%";
2054 background: var!(accent);
2055 width: "0%";
2056 }
2057
2058 pub c_anim_scale_box {
2059 margin: format!("{} 0px", var!(gap-component));
2060 padding: var!(space-xl);
2061 background: var!(accent);
2062 cursor: "pointer";
2063 transition: format!("transform {} {}", var!(duration-normal), var!(ease-out));
2064 }
2065
2066 pub c_browser_api_row {
2071 display: "grid";
2072 grid-template-columns: "1fr 1fr";
2073 gap: var!(gap-component);
2074 margin-bottom: var!(gap-component);
2075 @media ((max-width: 767px)) {
2076 grid-template-columns: "1fr";
2077 }
2078 }
2079
2080 pub c_browser_api_actions {
2081 display: "flex";
2082 flex-wrap: "wrap";
2083 gap: var!(gap-element);
2084 margin: format!("{} 0px", var!(gap-component));
2085 }
2086
2087 pub c_browser_result_box {
2088 margin-top: var!(gap-component);
2089 font-size: var!(font-base);
2090 word-break: "break-all";
2091 color: "inherit";
2092 }
2093
2094 pub c_browser_result_label {
2095 font-weight: "600";
2096 color: var!(accent);
2097 }
2098
2099 pub c_browser_result_value {
2100 color: "inherit";
2101 }
2102
2103 pub c_browser_info_grid {
2104 display: "grid";
2105 gap: var!(gap-component);
2106 margin-top: var!(gap-component);
2107 @media ((max-width: 767px)) {
2108 grid-template-columns: "1fr";
2109 }
2110 }
2111
2112 pub c_browser_info_item {
2113 display: "flex";
2114 flex-direction: "column";
2115 gap: var!(space-xs);
2116 color: "inherit";
2117 }
2118
2119 pub c_browser_info_label {
2120 font-size: var!(font-sm);
2121 font-weight: "600";
2122 color: "inherit";
2123 opacity: "1";
2124 text-transform: "uppercase";
2125 letter-spacing: "0.05em";
2126 }
2127
2128 pub c_browser_info_value {
2129 font-size: var!(font-base);
2130 color: "inherit";
2131 word-break: "break-all";
2132 font-family: "ui-monospace, monospace";
2133 }
2134
2135 pub c_vconsole_badge {
2140 position: "absolute";
2141 top: "-6px";
2142 right: "-8px";
2143 min-width: "18px";
2144 height: "18px";
2145 background: var!(background);
2146 color: var!(foreground);
2147 font-size: "10px";
2148 font-weight: "600";
2149 display: "flex";
2150 align-items: "center";
2151 justify-content: "center";
2152 padding: format!("0px {}", var!(space-xs));
2153 border: format!("1px solid {}", var!(accent));
2154 pointer-events: "none";
2155 transition: format!("transform {} {}, opacity {} {}", var!(duration-normal), var!(ease-out), var!(duration-normal), var!(ease-out));
2156 }
2157
2158 pub c_vconsole_overlay {
2159 position: "fixed";
2160 top: "0px";
2161 left: "0px";
2162 right: "0px";
2163 bottom: "0px";
2164 z-index: "10000";
2165 background: var!(bg-overlay);
2166 contain: "layout style paint";
2167 transition: format!("opacity {} {}", var!(duration-overlay), var!(ease-out));
2168 }
2169
2170 pub c_vconsole_overlay_hidden {
2171 opacity: "0";
2172 pointer-events: "none";
2173 }
2174
2175 pub c_vconsole_panel {
2176 position: "fixed";
2177 bottom: "0px";
2178 left: "0px";
2179 right: "0px";
2180 height: format!("calc(76vh - {})", var!(safe-area-inset-bottom));
2181 background: var!(background);
2182 z-index: "10001";
2183 display: "flex";
2184 flex-direction: "column";
2185 contain: "layout style paint";
2186 will-change: "transform";
2187 transition: format!("transform {} {}", var!(duration-overlay), var!(ease-out));
2188 overflow: "hidden";
2189 padding: format!("{} {}", var!(padding-main-top), var!(padding-main-horizontal));
2190 @media ((max-width: 767px)) {
2191 padding: format!("{} {}", var!(space-md), var!(padding-main-horizontal-mobile));
2192 }
2193 }
2194
2195 pub c_vconsole_panel_closed {
2196 transform: "translateY(100%)";
2197 will-change: "auto";
2198 }
2199
2200 pub c_vconsole_fab {
2201 position: "fixed";
2202 bottom: format!("calc(20px + {})", var!(safe-area-inset-bottom));
2203 right: var!(padding-main-horizontal);
2204 z-index: "9999";
2205 @media ((max-width: 767px)) {
2206 bottom: format!("calc(16px + {})", var!(safe-area-inset-bottom));
2207 right: var!(padding-main-horizontal-mobile);
2208 }
2209 }
2210
2211 pub c_vconsole_header {
2212 display: "flex";
2213 justify-content: "space-between";
2214 align-items: "center";
2215 flex-shrink: "0";
2216 }
2217
2218 pub c_vconsole_title {
2219 color: var!(foreground);
2220 font-size: var!(font-md);
2221 font-weight: "600";
2222 margin: "0px";
2223 letter-spacing: "0.03em";
2224 display: "flex";
2225 align-items: "center";
2226 gap: var!(space-sm);
2227 }
2228
2229 pub c_vconsole_title_dot {
2230 width: "8px";
2231 height: "8px";
2232 background: var!(accent);
2233 display: "inline-block";
2234 animation: "euv-pulse 2s ease-in-out infinite";
2235 }
2236
2237 pub c_vconsole_header_actions {
2238 display: "flex";
2239 gap: var!(space-sm);
2240 align-items: "center";
2241 }
2242
2243 pub c_vconsole_clear_button {
2244 display: "inline-flex";
2245 justify-content: "center";
2246 align-items: "center";
2247 color: var!(foreground);
2248 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2249 font-size: var!(font-xs);
2250 font-weight: "600";
2251 cursor: "pointer";
2252 text-align: "center";
2253 border: format!("1.5px solid {}", var!(border));
2254 margin-left: "auto";
2255 :focus-visible {
2256 outline: "none";
2257 }
2258 }
2259
2260 pub c_vconsole_close_button {
2261 display: "inline-flex";
2262 justify-content: "center";
2263 align-items: "center";
2264 color: var!(foreground);
2265 padding: format!("{} {}", var!(space-xs), var!(space-md));
2266 cursor: "pointer";
2267 font-size: var!(font-sm);
2268 font-weight: "400";
2269 text-align: "center";
2270 white-space: "nowrap";
2271 user-select: "none";
2272 -webkit-user-select: "none";
2273 vertical-align: "middle";
2274 outline: "none";
2275 transition: format!("all {} {}", var!(duration-fast), var!(ease-out));
2276 :hover {
2277 border-color: var!(foreground);
2278 color: var!(foreground);
2279 background: var!(background);
2280 }
2281 :focus-visible {
2282 outline: "none";
2283 }
2284 :active {
2285 background: "transparent";
2286 color: var!(foreground);
2287 border-color: var!(border);
2288 }
2289 }
2290
2291 pub c_vconsole_body {
2292 flex: "1";
2293 overflow-y: "auto";
2294 contain: "content";
2295 padding-bottom: var!(space-md);
2296 font-family: "ui-monospace, monospace";
2297 font-size: var!(font-xs);
2298 }
2299
2300 pub c_vconsole_log_item {
2301 display: "flex";
2302 align-items: "center";
2303 padding: format!("{} 0px", var!(space-sm));
2304 border-bottom: format!("1px dashed {}", var!(border));
2305 color: var!(foreground);
2306 font-size: var!(font-xs);
2307 word-break: "break-all";
2308 }
2309
2310 pub c_vconsole_empty {
2311 color: var!(muted-foreground);
2312 font-size: var!(font-xs);
2313 text-align: "center";
2314 padding: format!("{} 0px", var!(space-4xl));
2315 overflow: "hidden";
2316 }
2317
2318 pub c_vconsole_empty_hidden {
2319 height: "0";
2320 overflow: "hidden";
2321 padding: "0";
2322 }
2323
2324 pub c_vconsole_log_list {
2325 overflow: "hidden";
2326 }
2327
2328 pub c_vconsole_log_list_hidden {
2329 height: "0";
2330 overflow: "hidden";
2331 }
2332
2333 pub c_vconsole_count {
2334 color: var!(muted-foreground);
2335 font-size: var!(font-sm);
2336 font-weight: "400";
2337 }
2338
2339 pub c_vconsole_filter_bar {
2340 display: "flex";
2341 gap: var!(space-sm);
2342 padding: format!("{} 0px", var!(space-sm));
2343 border-bottom: format!("1px dashed {}", var!(border));
2344 flex-shrink: "0";
2345 align-items: "center";
2346 }
2347
2348 pub c_vconsole_filter_badge {
2349 display: "inline-flex";
2350 justify-content: "center";
2351 align-items: "center";
2352 color: var!(text-on-accent);
2353 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2354 border: format!("1px solid {}", var!(accent));
2355 font-size: var!(font-xs);
2356 font-weight: "600";
2357 cursor: "pointer";
2358 text-align: "center";
2359 background: var!(accent);
2360 :focus-visible {
2361 outline: "none";
2362 }
2363 }
2364
2365 pub c_vconsole_filter_badge_outline {
2366 display: "inline-flex";
2367 justify-content: "center";
2368 align-items: "center";
2369 color: var!(foreground);
2370 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2371 font-size: var!(font-xs);
2372 font-weight: "600";
2373 cursor: "pointer";
2374 text-align: "center";
2375 border: format!("1.5px solid {}", var!(border));
2376 }
2377
2378 pub c_vconsole_level_badge {
2379 padding: format!("{} {}", var!(space-2xs), var!(space-sm));
2380 font-size: var!(font-xs);
2381 margin-right: var!(space-sm);
2382 letter-spacing: "0.05em";
2383 color: var!(foreground);
2384 border: "1px solid currentColor";
2385 wrap: "nowrap";
2386 flex-shrink: "0";
2387 }
2388
2389 pub c_mobile_header {
2394 display: "flex";
2395 align-items: "center";
2396 justify-content: "space-between";
2397 padding: format!("0px {}", var!(space-lg));
2398 height: var!(mobile-header-height);
2399 flex-shrink: "0";
2400 position: "sticky";
2401 top: "0px";
2402 z-index: "100";
2403 contain: "content";
2404 border-bottom: format!("1px solid {}", var!(border));
2405 }
2406
2407 pub c_mobile_header_left {
2408 display: "flex";
2409 align-items: "center";
2410 gap: format!("{}", var!(space-md));
2411 }
2412
2413 pub c_mobile_header_logo {
2414 display: "flex";
2415 align-items: "center";
2416 gap: format!("{}", var!(space-sm));
2417 text-decoration: "none";
2418 color: var!(foreground);
2419 }
2420
2421 pub c_mobile_menu_button {
2422 width: "40px";
2423 height: "40px";
2424 border: "none";
2425 cursor: "pointer";
2426 font-size: "22px";
2427 font-weight: "700";
2428 display: "flex";
2429 align-items: "center";
2430 justify-content: "center";
2431 color: var!(foreground);
2432 padding: "0px";
2433 :active {
2434 background: "transparent";
2435 color: var!(foreground);
2436 }
2437 }
2438
2439 pub c_mobile_theme_button {
2440 width: "40px";
2441 height: "40px";
2442 border: "none";
2443 cursor: "pointer";
2444 display: "flex";
2445 align-items: "center";
2446 justify-content: "center";
2447 padding: "0px";
2448 :active {
2449 background: "transparent";
2450 }
2451 }
2452
2453 pub c_mobile_menu_button_active {
2454 width: "40px";
2455 height: "40px";
2456 border: "none";
2457 cursor: "pointer";
2458 font-size: "22px";
2459 font-weight: "700";
2460 display: "flex";
2461 align-items: "center";
2462 justify-content: "center";
2463 color: var!(accent);
2464 padding: "0px";
2465 :active {
2466 background: var!(background);
2467 color: var!(accent);
2468 }
2469 }
2470
2471 pub c_mobile_drawer_close_button {
2472 width: "32px";
2473 height: "32px";
2474 border: "none";
2475 cursor: "pointer";
2476 font-size: "18px";
2477 font-weight: "500";
2478 display: "flex";
2479 align-items: "center";
2480 justify-content: "center";
2481 color: var!(muted-foreground);
2482 padding: "0px";
2483 transition: format!("color {} {}", var!(duration-fast), var!(ease-out));
2484 :hover {
2485 color: var!(foreground);
2486 }
2487 :active {
2488 color: var!(muted-foreground);
2489 }
2490 }
2491
2492 pub c_mobile_overlay {
2493 position: "fixed";
2494 top: "0px";
2495 left: "0px";
2496 width: "100%";
2497 height: "100%";
2498 background: var!(bg-overlay);
2499 z-index: "200";
2500 contain: "layout style paint";
2501 transition: format!("opacity {} {}", var!(duration-overlay), var!(ease-out));
2502 }
2503
2504 pub c_mobile_overlay_hidden {
2505 opacity: "0";
2506 pointer-events: "none";
2507 }
2508
2509 pub c_mobile_nav_drawer {
2510 position: "fixed";
2511 top: "0px";
2512 left: "0px";
2513 width: "240px";
2514 max-width: "100%";
2515 height: "100%";
2516 background: var!(background);
2517 z-index: "201";
2518 display: "flex";
2519 flex-direction: "column";
2520 padding-top: var!(padding-shell-top);
2521 padding-bottom: var!(padding-shell-bottom);
2522 contain: "layout style paint";
2523 will-change: "transform";
2524 transition: format!("transform {} {}", var!(duration-overlay), var!(ease-out));
2525 overflow: "hidden";
2526 }
2527
2528 pub c_mobile_nav_drawer_closed {
2529 transform: "translateX(-100%)";
2530 }
2531
2532 pub c_mobile_nav_drawer_header {
2533 display: "flex";
2534 align-items: "center";
2535 justify-content: "space-between";
2536 padding: format!("0px {}", var!(space-lg));
2537 height: var!(mobile-header-height);
2538 flex-shrink: "0";
2539 position: "relative";
2540 ::after {
2541 content: "''";
2542 position: "absolute";
2543 bottom: "0px";
2544 left: var!(space-lg);
2545 right: var!(space-lg);
2546 height: "1px";
2547 background: format!("linear-gradient(90deg, transparent, {}, transparent)", var!(border));
2548 }
2549 }
2550
2551 pub c_mobile_main {
2552 c_app_main();
2553 ::-webkit-scrollbar {
2554 width: "0px";
2555 }
2556 }
2557
2558 pub c_keep_alive_tab_bar {
2563 display: "flex";
2564 border-bottom: format!("1px dashed {}", var!(border));
2565 margin-bottom: var!(gap-component);
2566 gap: var!(gap-element);
2567 }
2568
2569 pub c_keep_alive_tab_panel {
2570 padding: format!("{} 0px", var!(gap-element));
2571 }
2572
2573 pub c_keep_alive_panel_title {
2574 margin-top: "0px";
2575 color: var!(accent);
2576 font-size: var!(font-md);
2577 margin-bottom: var!(gap-element);
2578 }
2579
2580 pub c_keep_alive_demo_text {
2581 color: "inherit";
2582 font-size: var!(font-base);
2583 margin-bottom: var!(gap-component);
2584 }
2585
2586 pub c_keep_alive_counter_display {
2587 display: "flex";
2588 justify-content: "center";
2589 align-items: "center";
2590 margin: format!("{} 0px", var!(space-xl));
2591 }
2592
2593 pub c_keep_alive_counter_value {
2594 font-size: var!(font-5xl);
2595 font-weight: "700";
2596 font-variant-numeric: "tabular-nums";
2597 color: var!(accent);
2598 min-width: "120px";
2599 text-align: "center";
2600 }
2601
2602 pub c_keep_alive_counter_controls {
2603 display: "flex";
2604 flex-wrap: "wrap";
2605 gap: format!("{}", var!(space-md));
2606 }
2607
2608 pub c_keep_alive_form_group {
2609 margin-bottom: var!(gap-component);
2610 }
2611
2612 pub c_keep_alive_form_preview {
2613 margin-top: var!(gap-component);
2614 background: var!(accent-muted);
2615 }
2616
2617 pub c_keep_alive_preview_label {
2618 font-size: var!(font-base);
2619 font-weight: "600";
2620 color: var!(accent);
2621 margin: format!("0px 0px {} 0px", var!(space-xs));
2622 }
2623
2624 pub c_file_upload_input_hidden {
2629 position: "absolute";
2630 width: "1px";
2631 height: "1px";
2632 padding: "0px";
2633 margin: "-1px";
2634 overflow: "hidden";
2635 clip: "rect(0, 0, 0, 0)";
2636 white-space: "nowrap";
2637 border: "0px";
2638 }
2639
2640 pub c_file_upload_options {
2641 margin: format!("{} 0px", var!(gap-component));
2642 }
2643
2644 pub c_file_upload_item {
2645 display: "flex";
2646 align-items: "center";
2647 gap: format!("{}", var!(space-md));
2648 margin: format!("{} 0px", var!(space-sm));
2649 font-size: var!(font-base);
2650 color: "inherit";
2651 }
2652
2653 pub c_file_upload_item_index {
2654 font-size: var!(font-sm);
2655 font-weight: "600";
2656 color: var!(accent);
2657 min-width: "24px";
2658 }
2659
2660 pub c_file_upload_item_name {
2661 color: "inherit";
2662 word-break: "break-all";
2663 }
2664
2665 pub c_binding_child_box {
2670 display: "flex";
2671 flex-direction: "column";
2672 gap: var!(gap-component);
2673 margin-top: var!(gap-component);
2674 }
2675
2676 pub c_binding_child_label {
2677 font-size: var!(font-base);
2678 font-weight: "600";
2679 color: var!(accent);
2680 text-transform: "uppercase";
2681 letter-spacing: "0.05em";
2682 }
2683
2684 pub c_binding_parent_box {
2685 display: "flex";
2686 flex-direction: "column";
2687 gap: var!(gap-component);
2688 margin-top: var!(gap-component);
2689 }
2690
2691 pub c_binding_section_title {
2692 margin-top: var!(gap-component);
2693 margin-bottom: var!(gap-element);
2694 color: var!(accent);
2695 font-size: var!(font-md);
2696 font-weight: "600";
2697 }
2698
2699 pub c_binding_temp_converter {
2700 display: "flex";
2701 align-items: "flex-end";
2702 gap: var!(gap-component);
2703 flex-wrap: "wrap";
2704 margin-top: var!(gap-component);
2705 }
2706
2707 pub c_binding_temp_field {
2708 flex: "1";
2709 min-width: "120px";
2710 }
2711
2712 pub c_binding_temp_arrow {
2713 font-size: "20px";
2714 font-weight: "700";
2715 color: var!(accent);
2716 padding-bottom: "10px";
2717 }
2718
2719 pub c_binding_color_mixer {
2720 margin-top: var!(gap-component);
2721 }
2722
2723 pub c_binding_color_preview {
2724 width: "100%";
2725 height: "80px";
2726 display: "flex";
2727 align-items: "center";
2728 justify-content: "center";
2729 margin-bottom: var!(gap-component);
2730 }
2731
2732 pub c_binding_color_hex {
2733 font-family: "ui-monospace, monospace";
2734 font-size: var!(font-xl);
2735 font-weight: "700";
2736 color: var!(text-on-accent);
2737 letter-spacing: "0.02em";
2738 }
2739
2740 pub c_binding_slider_row {
2741 display: "flex";
2742 align-items: "center";
2743 gap: format!("{}", var!(space-md));
2744 margin-bottom: var!(space-sm);
2745 }
2746
2747 pub c_binding_slider_label {
2748 font-size: var!(font-base);
2749 font-weight: "700";
2750 min-width: var!(font-sm);
2751 }
2752
2753 pub c_binding_slider {
2754 flex: "1";
2755 height: "24px";
2756 padding: "0px";
2757 cursor: "pointer";
2758 -webkit-appearance: "none";
2759 appearance: "none";
2760 border: "none";
2761 outline: "none";
2762 ::-webkit-slider-runnable-track {
2763 height: "6px";
2764 background: format!("linear-gradient(to right, {} 0%, {} var(--value,50%), {} var(--value,50%), {} 100%)", var!(foreground), var!(foreground), var!(border), var!(border));
2765 border-radius: "3px";
2766 border: "none";
2767 }
2768 ::-webkit-slider-thumb {
2769 width: "20px";
2770 height: "20px";
2771 background: var!(background);
2772 border: format!("2px solid {}", var!(accent));
2773 border-radius: "50%";
2774 cursor: "pointer";
2775 -webkit-appearance: "none";
2776 margin-top: "-7px";
2777 }
2778 : active::-webkit-slider-thumb {
2779 transform: "scale(0.92)";
2780 }
2781 ::-moz-range-track {
2782 height: "6px";
2783 background: format!("linear-gradient(to right, {} 0%, {} var(--value,50%), {} var(--value,50%), {} 100%)", var!(foreground), var!(foreground), var!(border), var!(border));
2784 border-radius: "3px";
2785 border: "none";
2786 }
2787 ::-moz-range-thumb {
2788 width: "20px";
2789 height: "20px";
2790 background: var!(background);
2791 border: format!("2px solid {}", var!(accent));
2792 border-radius: "50%";
2793 cursor: "pointer";
2794 }
2795 : active::-moz-range-thumb {
2796 transform: "scale(0.92)";
2797 }
2798 }
2799
2800 pub c_binding_slider_value {
2801 font-size: var!(font-base);
2802 font-weight: "500";
2803 color: "inherit";
2804 min-width: "32px";
2805 text-align: "right";
2806 font-family: "ui-monospace, monospace";
2807 }
2808
2809 pub c_binding_typed_prop_value {
2810 font-family: "ui-monospace, monospace";
2811 font-size: var!(font-base);
2812 font-weight: "600";
2813 color: var!(accent);
2814 padding: format!("1px {}", var!(space-sm));
2815 }
2816
2817 pub c_binding_typed_prop_group {
2818 display: "flex";
2819 align-items: "center";
2820 gap: var!(space-sm);
2821 }
2822
2823 pub c_binding_typed_warning {
2824 font-size: var!(font-base);
2825 font-weight: "500";
2826 color: var!(foreground);
2827 margin-bottom: "0px";
2828 }
2829
2830 pub c_binding_form_label {
2831 display: "block";
2832 color: "inherit";
2833 font-weight: "500";
2834 font-size: var!(font-base);
2835 }
2836
2837 pub c_binding_demo_text {
2838 color: "inherit";
2839 margin: "0px"
2840 }
2841
2842 pub c_binding_compact_button {
2843 display: "inline-flex";
2844 justify-content: "center";
2845 align-items: "center";
2846 height: "42px";
2847 padding: format!("0px {}", var!(space-md));
2848 background: var!(accent);
2849 color: var!(text-on-accent);
2850 border: format!("1px solid {}", var!(accent));
2851 cursor: "pointer";
2852 font-size: var!(font-sm);
2853 font-weight: "600";
2854 outline: "none";
2855 white-space: "nowrap";
2856 user-select: "none";
2857 -webkit-user-select: "none";
2858 box-sizing: "border-box";
2859 :hover {
2860 background: var!(accent);
2861 }
2862 :focus-visible {
2863 outline: "none";
2864 }
2865 :active {
2866 background: var!(accent);
2867 color: var!(text-on-accent);
2868 border-color: var!(accent);
2869 }
2870 }
2871
2872 pub c_attrs_dynamic_demo(prop_key: &str, prop_value: &str) {
2877 {
2878 prop_key
2879 }
2880 : prop_value;
2881 margin-top: var!(gap-component);
2882 color: "inherit";
2883 margin-top: var!(space-md);
2884 }
2885
2886 pub c_dynamic_component_tab_bar {
2891 display: "flex";
2892 flex-wrap: "wrap";
2893 gap: var!(gap-element);
2894 margin-bottom: var!(gap-component);
2895 }
2896
2897 pub c_dynamic_component_panel {
2898 display: "block";
2899 min-height: var!(min-height-sm);
2900 margin-top: var!(gap-component);
2901 }
2902
2903 pub c_virtual_list_status {
2908 display: "flex";
2909 gap: var!(gap-component);
2910 padding: format!("{} 0px", var!(gap-component));
2911 flex-wrap: "nowrap";
2912 overflow: "hidden";
2913 text-overflow: "ellipsis";
2914 white-space: "nowrap";
2915 @media ((max-width: 767px)) {
2916 gap: var!(gap-component-mobile);
2917 }
2918 }
2919
2920 pub c_virtual_list_status_item {
2921 font-size: var!(font-base);
2922 color: "inherit";
2923 overflow: "hidden";
2924 text-overflow: "ellipsis";
2925 white-space: "nowrap";
2926 }
2927
2928 pub c_virtual_list_status_value {
2929 font-weight: "700";
2930 color: var!(accent);
2931 font-family: "ui-monospace, monospace";
2932 }
2933
2934 pub c_virtual_list_container {
2935 flex: "1";
2936 height: "666px";
2937 max-height: "666px";
2938 overflow-y: "auto";
2939 }
2940
2941 pub c_virtual_list_card {
2942 flex: "1";
2943 padding: var!(space-xl);
2944 color: var!(foreground);
2945 display: "flex";
2946 flex-direction: "column";
2947 @media ((max-width: 767px)) {
2948 padding: var!(space-lg);
2949 }
2950 }
2951
2952 pub c_virtual_list_row {
2953 display: "flex";
2954 align-items: "center";
2955 gap: var!(space-lg);
2956 height: "100%";
2957 box-sizing: "border-box";
2958 }
2959
2960 pub c_virtual_list_row_index {
2961 min-width: "36px";
2962 font-size: var!(font-sm);
2963 font-weight: "600";
2964 color: var!(accent);
2965 font-family: "ui-monospace, monospace";
2966 flex-shrink: "0";
2967 display: "flex";
2968 align-items: "center";
2969 }
2970
2971 pub c_virtual_list_row_label {
2972 font-size: var!(font-base);
2973 font-weight: "500";
2974 color: "inherit";
2975 min-width: "120px";
2976 flex-shrink: "0";
2977 overflow: "hidden";
2978 text-overflow: "ellipsis";
2979 white-space: "nowrap";
2980 display: "flex";
2981 align-items: "center";
2982 }
2983
2984 pub c_virtual_list_row_description {
2985 font-size: var!(font-base);
2986 color: "inherit";
2987 opacity: "1";
2988 overflow: "hidden";
2989 text-overflow: "ellipsis";
2990 white-space: "nowrap";
2991 flex: "1";
2992 display: "flex";
2993 align-items: "center";
2994 }
2995
2996 pub c_element_stack {
3001 display: "flex";
3002 flex-direction: "column";
3003 gap: var!(gap-element);
3004 }
3005
3006 pub c_switcher {
3007 display: "flex";
3008 gap: var!(gap-component);
3009 flex-wrap: "wrap";
3010 @media ((max-width: 767px)) {
3011 flex-direction: "column";
3012 gap: var!(gap-component-mobile);
3013 }
3014 }
3015
3016 pub c_switcher_col {
3017 flex: "1";
3018 min-width: "200px";
3019 @media ((max-width: 767px)) {
3020 min-width: "100%";
3021 }
3022 }
3023
3024 pub c_hint {
3029 color: "inherit";
3030 opacity: "1";
3031 font-size: var!(font-base);
3032 margin-bottom: var!(gap-component);
3033 }
3034
3035 pub c_net_messages_empty {
3040 color: "inherit";
3041 opacity: "1";
3042 padding: var!(space-xl);
3043 text-align: "center";
3044 font-size: var!(font-base);
3045 }
3046
3047 pub c_net_messages_list {
3048 display: "flex";
3049 flex-direction: "column";
3050 gap: var!(space-xs);
3051 }
3052
3053 pub c_net_message_item {
3054 display: "flex";
3055 align-items: "baseline";
3056 gap: var!(gap-element);
3057 justify-content: "space-between";
3058 }
3059
3060 pub c_net_message_index {
3061 color: var!(accent);
3062 font-size: var!(font-sm);
3063 font-weight: "600";
3064 white-space: "nowrap";
3065 flex-shrink: "0";
3066 }
3067
3068 pub c_net_message_data {
3069 color: "inherit";
3070 font-size: var!(font-base);
3071 word-break: "break-all";
3072 overflow-wrap: "break-word";
3073 flex: "1";
3074 min-width: "0";
3075 }
3076
3077 pub c_ws_message_input {
3082 width: "100%";
3083 flex: "1";
3084 height: "42px";
3085 padding: format!("0px {}", var!(space-lg));
3086 color: var!(foreground);
3087 border: format!("1px solid {}", var!(border));
3088 font-size: var!(font-base);
3089 line-height: "normal";
3090 box-sizing: "border-box";
3091 outline: "none";
3092 appearance: "none";
3093 -webkit-appearance: "none";
3094 -moz-appearance: "none";
3095 vertical-align: "middle";
3096 :hover {
3097 border-color: var!(accent);
3098 background: var!(accent-muted);
3099 }
3100 :focus {
3101 outline: "none";
3102 border-color: var!(accent);
3103 background: var!(accent-muted);
3104 }
3105 }
3106
3107 pub c_ws_message_time {
3108 color: var!(foreground);
3109 font-size: var!(font-sm);
3110 white-space: "nowrap";
3111 flex-shrink: "0";
3112 margin-left: "auto";
3113 }
3114
3115 pub c_home {
3124 position: "relative";
3125 text-align: "center";
3126 margin-bottom: var!(space-xl);
3127 flex: "1";
3128 display: "flex";
3129 flex-direction: "column";
3130 justify-content: "center";
3131 @media ((max-width: 767px)) {
3132 margin-bottom: var!(space-lg);
3133 flex: "0 0 auto";
3134 }
3135 }
3136
3137 pub c_home_content {
3138 position: "relative";
3139 z-index: "1";
3140 }
3141
3142 pub c_home_badge_row {
3143 display: "inline-flex";
3144 align-items: "center";
3145 gap: var!(space-sm);
3146 margin-bottom: var!(space-md);
3147 }
3148
3149 pub c_home_badge {
3150 display: "inline-flex";
3151 justify-content: "center";
3152 align-items: "center";
3153 padding: format!("{} {}", var!(space-xs), var!(space-sm));
3154 color: var!(accent);
3155 font-size: var!(font-xs);
3156 font-weight: "600";
3157 letter-spacing: "0.05em";
3158 border: format!("1px solid {}", var!(accent));
3159 }
3160
3161 pub c_home_title {
3162 font-size: var!(font-5xl);
3163 font-weight: "800";
3164 letter-spacing: "-0.03em";
3165 margin: "0px";
3166 color: var!(foreground);
3167 margin-bottom: var!(space-xs);
3168 @media ((max-width: 767px)) {
3169 font-size: var!(font-4xl);
3170 }
3171 }
3172
3173 pub c_home_subtitle {
3174 font-size: var!(font-lg);
3175 color: var!(foreground);
3176 margin: "0px auto";
3177 max-width: "520px";
3178 margin-bottom: var!(space-lg);
3179 @media ((max-width: 767px)) {
3180 font-size: var!(font-base);
3181 }
3182 }
3183
3184 pub c_home_actions {
3185 display: "flex";
3186 gap: var!(space-md);
3187 justify-content: "center";
3188 flex-wrap: "wrap";
3189 }
3190
3191 pub c_home_btn_primary {
3192 display: "inline-flex";
3193 justify-content: "center";
3194 align-items: "center";
3195 gap: var!(space-sm);
3196 padding: format!("{} {}", var!(space-sm), var!(space-2xl));
3197 background: var!(accent);
3198 color: var!(text-on-accent);
3199 font-size: var!(font-base);
3200 font-weight: "600";
3201 text-decoration: "none";
3202 border: "1.5px solid transparent";
3203 cursor: "pointer";
3204 letter-spacing: "0.01em";
3205 vertical-align: "middle";
3206 min-height: var!(min-height-sm);
3207 :focus-visible {
3208 outline: "none";
3209 }
3210 :active {
3211 background: var!(accent);
3212 color: var!(text-on-accent);
3213 border-color: "1.5px solid transparent";
3214 }
3215 }
3216
3217 pub c_home_btn_secondary {
3218 display: "inline-flex";
3219 justify-content: "center";
3220 align-items: "center";
3221 gap: var!(space-sm);
3222 padding: format!("{} {}", var!(space-sm), var!(space-2xl));
3223 color: var!(accent);
3224 font-size: var!(font-base);
3225 font-weight: "600";
3226 text-decoration: "none";
3227 border: format!("1.5px solid {}", var!(accent));
3228 cursor: "pointer";
3229 letter-spacing: "0.01em";
3230 vertical-align: "middle";
3231 min-height: var!(min-height-sm);
3232 :focus-visible {
3233 outline: "none";
3234 }
3235 :active {
3236 background: "transparent";
3237 color: var!(accent);
3238 border-color: var!(accent);
3239 }
3240 }
3241
3242 pub c_home_stats {
3247 display: "grid";
3248 grid-template-columns: "repeat(4, 1fr)";
3249 gap: var!(space-md);
3250 margin-bottom: var!(space-xl);
3251 @media ((max-width: 767px)) {
3252 grid-template-columns: "repeat(2, 1fr)";
3253 gap: var!(space-sm);
3254 }
3255 }
3256
3257 pub c_home_stat_card {
3258 display: "flex";
3259 flex-direction: "column";
3260 align-items: "center";
3261 justify-content: "center";
3262 gap: var!(space-xs);
3263 }
3264
3265 pub c_home_stat_icon {
3266 font-size: var!(font-2xl);
3267 }
3268
3269 pub c_home_stat_value {
3270 font-size: var!(font-xl);
3271 font-weight: "800";
3272 color: var!(foreground);
3273 letter-spacing: "-0.01em";
3274 }
3275
3276 pub c_home_stat_label {
3277 font-size: var!(font-sm);
3278 color: var!(muted-foreground);
3279 font-weight: "500";
3280 }
3281
3282 pub c_home_section_title {
3287 font-size: var!(font-2xl);
3288 font-weight: "700";
3289 color: var!(foreground);
3290 margin: "0px";
3291 margin: format!("{} 0px", var!(gap-component));
3292 letter-spacing: "-0.02em";
3293 }
3294
3295 pub c_home_section_desc {
3296 font-size: var!(font-base);
3297 color: var!(foreground);
3298 margin: "0px";
3299 margin-bottom: var!(space-2xl);
3300 }
3301
3302 pub c_home_feature_grid {
3303 display: "grid";
3304 grid-template-columns: "repeat(2, 1fr)";
3305 gap: var!(space-md);
3306 @media ((max-width: 767px)) {
3307 grid-template-columns: "1fr";
3308 }
3309 }
3310
3311 pub c_feature_card {
3312 display: "flex";
3313 flex-direction: "column";
3314 gap: var!(space-sm);
3315 padding: "0px";
3316 overflow: "hidden";
3317 }
3318
3319 pub c_feature_header {
3320 display: "flex";
3321 align-items: "center";
3322 gap: var!(space-sm);
3323 }
3324
3325 pub c_feature_icon {
3326 font-size: var!(font-2xl);
3327 display: "flex";
3328 align-items: "center";
3329 justify-content: "center";
3330 line-height: "1";
3331 flex-shrink: "0";
3332 }
3333
3334 pub c_feature_name {
3335 font-size: var!(font-lg);
3336 font-weight: "600";
3337 color: var!(foreground);
3338 margin: "0px";
3339 overflow: "hidden";
3340 text-overflow: "ellipsis";
3341 white-space: "nowrap";
3342 }
3343
3344 pub c_feature_desc {
3345 font-size: var!(font-sm);
3346 color: var!(foreground);
3347 margin: "0px";
3348 }
3349
3350 }