components.css
Raw
1@layer components {
2 /* --- Buttons --- */
3 .btn {
4 display: inline-flex;
5 align-items: center;
6 gap: var(--space-2);
7 padding: var(--space-2) var(--space-4);
8 border: 1px solid var(--color-border);
9 border-radius: var(--radius-md);
10 font-size: var(--text-sm);
11 font-weight: 500;
12 text-decoration: none;
13 cursor: pointer;
14 background: var(--color-bg-subtle);
15 color: var(--color-text);
16 transition:
17 background 0.1s,
18 border-color 0.1s;
19 white-space: nowrap;
20 }
21 .btn:hover {
22 background: var(--color-bg-inset);
23 border-color: var(--color-border);
24 }
25 .btn:disabled {
26 opacity: 0.5;
27 cursor: not-allowed;
28 }
29 .btn-primary {
30 background: var(--color-accent);
31 border-color: transparent;
32 color: #fff;
33 }
34 .btn-primary:hover {
35 background: color-mix(in srgb, var(--color-accent) 82%, #000);
36 }
37 .btn-secondary {
38 background: var(--color-bg-subtle);
39 border-color: var(--color-border);
40 }
41 .btn-sm {
42 padding: var(--space-1) var(--space-3);
43 font-size: var(--text-xs);
44 }
45 .btn-block {
46 width: 100%;
47 justify-content: center;
48 }
49
50 /* --- Forms --- */
51 .form-group {
52 display: flex;
53 flex-direction: column;
54 gap: var(--space-2);
55 margin-bottom: var(--space-4);
56 }
57 .form-group label,
58 .form-group .form-group-label {
59 font-size: var(--text-sm);
60 font-weight: 500;
61 color: var(--color-text);
62 }
63 .form-group input:not([type="file"]):not([type="checkbox"]),
64 .form-group textarea,
65 .form-group select {
66 padding: var(--space-2) var(--space-3);
67 border: 1px solid var(--color-border);
68 border-radius: var(--radius-md);
69 background: var(--color-bg);
70 color: var(--color-text);
71 font-size: var(--text-sm);
72 }
73 .form-group input:not([type="file"]):not([type="checkbox"]):focus,
74 .form-group textarea:focus {
75 outline: 2px solid var(--color-accent);
76 outline-offset: -1px;
77 border-color: var(--color-accent);
78 }
79 .form-group input[type="file"] {
80 font-size: var(--text-sm);
81 color: var(--color-text);
82 padding: 0;
83 border: none;
84 background: none;
85 }
86 .form-group textarea {
87 resize: vertical;
88 min-height: 120px;
89 }
90 .form-success {
91 background: var(--color-success-bg);
92 color: var(--color-success);
93 border: 1px solid var(--color-success);
94 border-radius: var(--radius-md);
95 padding: var(--space-3) var(--space-4);
96 font-size: var(--text-sm);
97 margin-bottom: var(--space-4);
98 }
99 .form-hint {
100 font-size: var(--text-sm);
101 color: var(--color-text-muted);
102 margin: 0;
103 }
104 .form-error {
105 background: var(--color-danger-bg);
106 color: var(--color-danger);
107 border: 1px solid var(--color-danger);
108 border-radius: var(--radius-md);
109 padding: var(--space-3) var(--space-4);
110 font-size: var(--text-sm);
111 margin-bottom: var(--space-4);
112 }
113 .form-actions {
114 display: flex;
115 gap: var(--space-3);
116 align-items: center;
117 flex-wrap: wrap;
118 }
119 .form-card {
120 background: var(--color-bg-subtle);
121 border: 1px solid var(--color-border);
122 border-radius: var(--radius-lg);
123 padding: var(--space-6);
124 margin-top: var(--space-4);
125 }
126 .checkbox-label {
127 display: flex;
128 align-items: center;
129 gap: var(--space-2);
130 cursor: pointer;
131 }
132
133 /* --- Page header --- */
134 .page-header {
135 display: flex;
136 align-items: center;
137 justify-content: space-between;
138 margin-bottom: var(--space-6);
139 gap: var(--space-4);
140 }
141 .page-title {
142 font-size: var(--text-2xl);
143 color: var(--color-text);
144 margin-bottom: var(--space-4);
145 }
146 .page-title a {
147 text-decoration: none;
148 color: var(--color-link);
149 }
150 .page-title a:hover {
151 text-decoration: underline;
152 }
153 .section-title {
154 font-size: var(--text-lg);
155 margin-bottom: var(--space-4);
156 padding-bottom: var(--space-2);
157 border-bottom: 1px solid var(--color-border);
158 }
159
160 /* --- Auth --- */
161 .auth-container {
162 max-width: 400px;
163 margin: var(--space-12) auto;
164 }
165 .auth-container .page-title {
166 margin-bottom: var(--space-6);
167 }
168 .auth-form {
169 margin-bottom: var(--space-4);
170 }
171 .auth-footer {
172 text-align: center;
173 font-size: var(--text-sm);
174 color: var(--color-text-muted);
175 margin-top: var(--space-4);
176 }
177 .passkey-btn {
178 display: none;
179 margin-top: var(--space-3);
180 }
181
182 /* --- Repo header --- */
183 .repo-header {
184 margin-bottom: var(--space-2);
185 }
186 .repo-title-row {
187 display: flex;
188 align-items: center;
189 gap: var(--space-3);
190 flex-wrap: wrap;
191 }
192 .repo-title-row .page-title {
193 margin-bottom: 0;
194 }
195 .repo-header-title {
196 display: flex;
197 align-items: center;
198 gap: var(--space-3);
199 flex-wrap: wrap;
200 }
201 .repo-description {
202 color: var(--color-text-muted);
203 margin-top: var(--space-2);
204 }
205 .repo-header-meta {
206 display: flex;
207 align-items: center;
208 gap: var(--space-4);
209 margin-bottom: var(--space-3);
210 font-size: var(--text-sm);
211 color: var(--color-text-muted);
212 }
213 .icon {
214 font-style: normal;
215 }
216
217 /* --- Branch selector --- */
218 .branch-selector {
219 display: inline-flex;
220 align-items: center;
221 gap: var(--space-2);
222 }
223 .branch-selector-icon {
224 color: var(--color-text-muted);
225 font-size: var(--text-sm);
226 user-select: none;
227 }
228 .branch-select {
229 padding: var(--space-1) var(--space-2);
230 padding-right: var(--space-5);
231 border: 1px solid var(--color-border);
232 border-radius: var(--radius-md);
233 background: var(--color-bg-subtle);
234 font-size: var(--text-sm);
235 font-family: var(--font-mono);
236 color: var(--color-text);
237 cursor: pointer;
238 appearance: auto;
239 max-width: 180px;
240 }
241 .branch-select:hover {
242 border-color: var(--color-text-muted);
243 }
244 .branch-select:focus {
245 outline: 2px solid var(--color-accent);
246 outline-offset: -1px;
247 }
248
249 /* toolbar row above file tree */
250 .tree-toolbar {
251 display: flex;
252 align-items: center;
253 justify-content: space-between;
254 margin-bottom: var(--space-3);
255 }
256
257 /* commits-header flex row */
258 .commits-header {
259 display: flex;
260 align-items: center;
261 gap: var(--space-4);
262 margin-bottom: var(--space-4);
263 flex-wrap: wrap;
264 }
265 .commits-header .section-title {
266 margin-bottom: 0;
267 }
268
269 /* --- Repo nav bar (tabs + private badge) --- */
270 .repo-nav-bar {
271 display: flex;
272 align-items: center;
273 justify-content: space-between;
274 border-bottom: 1px solid var(--color-border);
275 margin-bottom: var(--space-6);
276 gap: var(--space-4);
277 }
278
279 /* --- Repo tabs --- */
280 .repo-tabs {
281 display: flex;
282 gap: 0;
283 flex: 1;
284 overflow-x: auto;
285 overflow-y: hidden;
286 }
287 .repo-tab {
288 padding: var(--space-3) var(--space-4);
289 font-size: var(--text-sm);
290 text-decoration: none;
291 color: var(--color-text-muted);
292 border-bottom: 2px solid transparent;
293 margin-bottom: -1px;
294 transition: color 0.1s;
295 }
296 .repo-tab:hover {
297 color: var(--color-text);
298 }
299 .repo-tab.active {
300 color: var(--color-text);
301 font-weight: 600;
302 border-bottom-color: var(--color-accent);
303 }
304
305 /* --- Repo list --- */
306 .repo-list {
307 display: flex;
308 flex-direction: column;
309 gap: var(--space-2);
310 }
311 .repo-card {
312 display: flex;
313 align-items: flex-start;
314 justify-content: space-between;
315 padding: var(--space-4) var(--space-5);
316 border: 1px solid var(--color-border);
317 border-radius: var(--radius-lg);
318 background: var(--color-bg);
319 gap: var(--space-4);
320 transition: border-color 0.15s;
321 }
322 .repo-card:hover {
323 border-color: var(--color-accent);
324 }
325 .repo-card-main {
326 flex: 1;
327 min-width: 0;
328 }
329 .repo-card-title {
330 display: flex;
331 align-items: center;
332 gap: var(--space-2);
333 margin-bottom: var(--space-1);
334 }
335 .repo-name {
336 font-size: var(--text-lg);
337 font-weight: 600;
338 color: var(--color-link);
339 text-decoration: none;
340 word-break: break-all;
341 }
342 .repo-name:hover {
343 text-decoration: underline;
344 }
345 .repo-card-meta {
346 display: flex;
347 flex-direction: column;
348 align-items: flex-end;
349 gap: var(--space-1);
350 font-size: var(--text-xs);
351 color: var(--color-text-muted);
352 white-space: nowrap;
353 }
354 .repo-date {
355 color: var(--color-text-muted);
356 }
357
358 /* --- Badges --- */
359 .badge {
360 display: inline-flex;
361 align-items: center;
362 padding: 1px var(--space-2);
363 border-radius: var(--radius-full);
364 font-size: var(--text-xs);
365 font-weight: 500;
366 border: 1px solid;
367 text-decoration: none;
368 }
369 .badge-private {
370 color: var(--color-warning);
371 border-color: var(--color-warning);
372 background: var(--color-warning-bg);
373 }
374 .badge-pinned {
375 color: var(--color-accent);
376 border-color: var(--color-accent);
377 background: var(--color-accent-bg);
378 }
379 .issue-badge,
380 .patch-badge {
381 display: inline-flex;
382 align-items: center;
383 padding: var(--space-1) var(--space-3);
384 border-radius: var(--radius-full);
385 font-size: var(--text-xs);
386 font-weight: 500;
387 text-transform: capitalize;
388 }
389 .issue-badge.open,
390 .patch-badge.open {
391 background: var(--color-success-bg);
392 color: var(--color-success);
393 }
394 .issue-badge.closed,
395 .patch-badge.closed {
396 background: var(--color-danger-bg);
397 color: var(--color-danger);
398 }
399 .issue-badge.completed {
400 background: var(--color-merged-bg);
401 color: var(--color-merged);
402 }
403 .patch-badge.merged {
404 background: var(--color-merged-bg);
405 color: var(--color-merged);
406 }
407 .sig-badge {
408 display: inline-flex;
409 align-items: center;
410 padding: var(--space-1) var(--space-3);
411 border-radius: var(--radius-full);
412 font-size: var(--text-xs);
413 font-weight: 500;
414 }
415 .sig-badge.verified {
416 background: var(--color-success-bg);
417 color: var(--color-success);
418 }
419 .sig-badge.unverified {
420 background: var(--color-danger-bg);
421 color: var(--color-danger);
422 }
423
424 /* --- Empty state --- */
425 .empty-state {
426 text-align: center;
427 padding: var(--space-16) var(--space-4);
428 color: var(--color-text-muted);
429 }
430 .empty-state p {
431 margin-bottom: var(--space-4);
432 font-size: var(--text-lg);
433 }
434
435 /* --- Breadcrumb --- */
436 .breadcrumb {
437 display: flex;
438 align-items: center;
439 flex-wrap: wrap;
440 gap: var(--space-1);
441 font-size: var(--text-sm);
442 margin-bottom: var(--space-4);
443 }
444 .breadcrumb a {
445 color: var(--color-link);
446 text-decoration: none;
447 }
448 .breadcrumb a:hover {
449 text-decoration: underline;
450 }
451 .breadcrumb-sep {
452 color: var(--color-text-muted);
453 }
454 .breadcrumb-current {
455 color: var(--color-text-muted);
456 }
457
458 /* --- Issue / Patch list --- */
459 .list-header {
460 display: flex;
461 align-items: center;
462 justify-content: space-between;
463 padding: var(--space-3) var(--space-4);
464 background: var(--color-bg-subtle);
465 border: 1px solid var(--color-border);
466 border-radius: var(--radius-lg) var(--radius-lg) 0 0;
467 gap: var(--space-4);
468 }
469 .list-header-tabs {
470 display: flex;
471 gap: var(--space-2);
472 }
473 .list-tab {
474 padding: var(--space-1) var(--space-3);
475 border-radius: var(--radius-md);
476 font-size: var(--text-sm);
477 text-decoration: none;
478 color: var(--color-text-muted);
479 }
480 .list-tab:hover {
481 background: var(--color-bg-inset);
482 color: var(--color-text);
483 }
484 .list-tab.active {
485 background: var(--color-bg-inset);
486 color: var(--color-text);
487 font-weight: 600;
488 }
489 .issue-list {
490 border: 1px solid var(--color-border);
491 border-top: none;
492 border-radius: 0 0 var(--radius-lg) var(--radius-lg);
493 }
494 .issue-item {
495 padding: var(--space-4) var(--space-4);
496 border-bottom: 1px solid var(--color-border-muted);
497 }
498 .issue-item:last-child {
499 border-bottom: none;
500 }
501 .issue-main {
502 display: flex;
503 align-items: center;
504 gap: var(--space-2);
505 margin-bottom: var(--space-1);
506 flex-wrap: wrap;
507 }
508 .issue-title {
509 font-weight: 500;
510 text-decoration: none;
511 color: var(--color-text);
512 flex: 1;
513 word-wrap: anywhere;
514 }
515 .issue-title:hover {
516 color: var(--color-link);
517 }
518 .issue-meta {
519 font-size: var(--text-xs);
520 color: var(--color-text-muted);
521 display: flex;
522 gap: var(--space-3);
523 }
524 .issue-status-dot,
525 .patch-status-dot {
526 width: 8px;
527 height: 8px;
528 border-radius: 50%;
529 flex-shrink: 0;
530 }
531 .issue-status-dot.open,
532 .patch-status-dot.open {
533 background: var(--color-success);
534 }
535 .issue-status-dot.closed,
536 .patch-status-dot.closed {
537 background: var(--color-danger);
538 }
539 .issue-status-dot.completed {
540 background: var(--color-merged);
541 }
542 .patch-status-dot.merged {
543 background: var(--color-merged);
544 }
545
546 /* --- Issue detail / Timeline --- */
547 .issue-detail-header {
548 display: flex;
549 align-items: center;
550 flex-wrap: wrap;
551 gap: var(--space-3);
552 margin-bottom: var(--space-4);
553 }
554 .issue-number {
555 font-size: var(--text-2xl);
556 font-weight: 600;
557 color: var(--color-text-muted);
558 white-space: nowrap;
559 }
560 .issue-detail-title {
561 font-size: var(--text-2xl);
562 font-weight: 600;
563 overflow-wrap: anywhere;
564 }
565 .issue-detail-meta-actions {
566 margin-left: auto;
567 display: flex;
568 gap: var(--space-2);
569 flex-shrink: 0;
570 }
571 .patch-author-meta {
572 display: flex;
573 align-items: center;
574 gap: var(--space-2);
575 font-size: var(--text-xs);
576 margin-top: calc(-1 * var(--space-4));
577 margin-bottom: var(--space-6);
578 }
579 .patch-author-label {
580 color: var(--color-text-muted);
581 }
582 .patch-author-identity {
583 font-family: monospace;
584 }
585 .timeline-item {
586 border: 1px solid var(--color-border);
587 border-radius: var(--radius-lg);
588 margin-bottom: var(--space-4);
589 overflow: hidden;
590 }
591 .timeline-author {
592 background: var(--color-bg-subtle);
593 padding: var(--space-3) var(--space-4);
594 font-size: var(--text-sm);
595 display: flex;
596 align-items: center;
597 justify-content: space-between;
598 gap: var(--space-3);
599 border-bottom: 1px solid var(--color-border);
600 overflow-wrap: anywhere;
601 }
602 .timeline-author time {
603 color: var(--color-text-muted);
604 font-size: var(--text-xs);
605 width: max-content;
606 }
607 .timeline-author-right {
608 margin-left: auto;
609 display: flex;
610 align-items: center;
611 gap: var(--space-2);
612 }
613 .edited-indicator {
614 color: var(--color-text-muted);
615 font-size: var(--text-xs);
616 cursor: default;
617 }
618
619 /* --- Avatars --- */
620 .avatar {
621 display: inline-flex;
622 border-radius: 4px;
623 overflow: hidden;
624 flex-shrink: 0;
625 vertical-align: middle;
626 }
627 .avatar-img {
628 width: 100%;
629 height: 100%;
630 object-fit: cover;
631 display: block;
632 color: transparent;
633 }
634 .avatar-placeholder {
635 display: inline-flex;
636 align-items: center;
637 justify-content: center;
638 border-radius: 4px;
639 background: var(--color-bg-inset);
640 color: var(--color-text-muted);
641 font-weight: 600;
642 flex-shrink: 0;
643 vertical-align: middle;
644 }
645 .avatar-settings {
646 display: flex;
647 align-items: flex-start;
648 gap: var(--space-5);
649 }
650 .avatar-actions {
651 display: flex;
652 flex-direction: column;
653 gap: var(--space-3);
654 }
655 .nav-user {
656 display: inline-flex;
657 align-items: center;
658 gap: var(--space-2);
659 font-size: var(--text-sm);
660 color: var(--color-text-muted);
661 }
662 .timeline-body {
663 padding: var(--space-4);
664 }
665 .timeline-item-new {
666 padding: var(--space-4);
667 }
668 .timeline-item-new .section-title {
669 font-size: var(--text-base);
670 border: none;
671 padding-bottom: 0;
672 }
673 /* Edit <details> (summary only) in .timeline-author; form is a sibling shown via :has() */
674 .timeline-author-right .inline-edit-details {
675 border: none;
676 }
677 .inline-edit-details .when-open {
678 display: none;
679 }
680 .inline-edit-details[open] .when-closed {
681 display: none;
682 }
683 .inline-edit-details[open] .when-open {
684 display: inline;
685 }
686 .inline-edit-form-area {
687 display: none;
688 border-top: 1px solid var(--color-border-muted);
689 }
690 .timeline-item:has(.inline-edit-details[open]) .inline-edit-form-area {
691 display: block;
692 }
693 .timeline-item:has(.inline-edit-details[open]) .timeline-body {
694 display: none;
695 }
696
697 /* Title edit in issue/patch header */
698 .issue-detail-header {
699 align-items: flex-start;
700 }
701 .title-with-edit {
702 flex: 1;
703 min-width: 16rem;
704 display: flex;
705 flex-direction: column;
706 gap: var(--space-1);
707 }
708 .title-edit-details {
709 border: none;
710 align-self: flex-start;
711 }
712 .title-with-edit:has(.title-edit-details[open]) .issue-detail-title {
713 display: none;
714 }
715 .title-with-edit:has(.title-edit-details[open]) > .title-edit-details {
716 display: none;
717 }
718 .title-edit-details > summary {
719 list-style: none;
720 }
721
722 .title-edit-form-area {
723 display: none;
724 }
725 .title-with-edit:has(.title-edit-details[open]) .title-edit-form-area {
726 display: flex;
727 flex: 1;
728 min-width: 0;
729 }
730 .title-edit-form {
731 display: flex;
732 flex-direction: column;
733 gap: var(--space-2);
734 flex: 1;
735 min-width: 0;
736 }
737 .title-edit-form .form-input {
738 min-width: 0;
739 width: 100%;
740 padding: var(--space-2) var(--space-3);
741 border: 1px solid var(--color-border);
742 border-radius: var(--radius-md);
743 background: var(--color-bg);
744 color: var(--color-text);
745 font-size: var(--text-sm);
746 }
747 .title-edit-form .form-input:focus {
748 outline: 2px solid var(--color-accent);
749 outline-offset: -1px;
750 border-color: var(--color-accent);
751 }
752 .title-edit-actions {
753 display: flex;
754 gap: var(--space-2);
755 }
756
757 .inline-edit-form {
758 padding: var(--space-4);
759 display: flex;
760 flex-direction: column;
761 gap: var(--space-3);
762 }
763
764 /* --- Reactions --- */
765 .reaction-bar {
766 display: flex;
767 flex-wrap: wrap;
768 gap: var(--space-2);
769 padding: var(--space-2) var(--space-4);
770 border-top: 1px solid var(--color-border-muted);
771 }
772 .reaction-form {
773 display: inline;
774 }
775 .reaction-btn {
776 display: inline-flex;
777 align-items: center;
778 gap: var(--space-1);
779 padding: var(--space-1) var(--space-3);
780 border: 1px solid var(--color-border);
781 border-radius: var(--radius-full);
782 background: var(--color-bg-subtle);
783 color: var(--color-text);
784 font-size: var(--text-sm);
785 cursor: pointer;
786 transition: background 0.1s;
787 }
788 .reaction-btn:hover {
789 background: var(--color-bg-inset);
790 }
791 .reaction-btn.reacted {
792 background: var(--color-accent-bg);
793 border-color: var(--color-accent);
794 }
795 .reaction-picker {
796 position: relative;
797 }
798 .reaction-add-btn {
799 display: inline-flex;
800 align-items: center;
801 justify-content: center;
802 width: 28px;
803 height: 28px;
804 border: 1px dashed var(--color-border);
805 border-radius: var(--radius-full);
806 background: transparent;
807 cursor: pointer;
808 font-size: var(--text-base);
809 color: var(--color-text-muted);
810 list-style: none;
811 }
812
813 .reaction-picker-dropdown {
814 position: absolute;
815 bottom: calc(100% + var(--space-2));
816 left: 0;
817 background: var(--color-bg);
818 border: 1px solid var(--color-border);
819 border-radius: var(--radius-lg);
820 padding: var(--space-2);
821 display: flex;
822 gap: var(--space-1);
823 z-index: 10;
824 }
825 .reaction-picker-btn {
826 background: none;
827 border: none;
828 font-size: 1.25rem;
829 cursor: pointer;
830 padding: var(--space-1);
831 border-radius: var(--radius-sm);
832 }
833 .reaction-picker-btn:hover {
834 background: var(--color-bg-inset);
835 }
836
837 /* --- Patch subview tabs --- */
838 .patch-tab-nav {
839 display: flex;
840 border-bottom: 1px solid var(--color-border);
841 margin-bottom: var(--space-6);
842 }
843 .tab-count {
844 display: inline-flex;
845 align-items: center;
846 justify-content: center;
847 min-width: 1.4em;
848 padding: 0 var(--space-1);
849 margin-left: var(--space-1);
850 font-size: var(--text-xs);
851 font-weight: 500;
852 background: var(--color-bg-inset);
853 border-radius: 999px;
854 color: var(--color-text-muted);
855 }
856
857 /* --- Patch apply status --- */
858 .apply-status {
859 margin: var(--space-4) 0;
860 }
861 .apply-result {
862 display: flex;
863 align-items: flex-start;
864 gap: var(--space-2);
865 padding: var(--space-3) var(--space-4);
866 border-radius: var(--radius-md);
867 font-size: var(--text-sm);
868 flex-direction: column;
869 }
870 .apply-result > div {
871 display: flex;
872 gap: var(--space-2);
873 align-items: center;
874 }
875 .apply-clean {
876 background: var(--color-success-bg);
877 color: var(--color-success);
878 border: 1px solid var(--color-success);
879 }
880 .apply-conflict {
881 background: var(--color-danger-bg);
882 color: var(--color-danger);
883 border: 1px solid var(--color-danger);
884 }
885 .apply-checking,
886 .apply-unknown {
887 color: var(--color-text-muted);
888 font-style: italic;
889 font-size: var(--text-sm);
890 }
891 .apply-output {
892 font-family: var(--font-mono);
893 font-size: var(--text-xs);
894 white-space: pre-wrap;
895 margin-top: var(--space-2);
896 padding: var(--space-2);
897 background: rgba(0, 0, 0, 0.05);
898 border-radius: var(--radius-sm);
899 width: 100%;
900 }
901 .patch-actions {
902 display: flex;
903 gap: var(--space-3);
904 margin: var(--space-4) 0;
905 flex-wrap: wrap;
906 }
907 .patch-card-title-row {
908 display: flex;
909 align-items: flex-start;
910 gap: var(--space-3);
911 justify-content: space-between;
912 margin-bottom: var(--space-3);
913 }
914 .patch-card-title-row .commit-card-subject {
915 margin-bottom: 0;
916 }
917 .patch-card-description {
918 margin-top: var(--space-4);
919 padding-top: var(--space-4);
920 border-top: 1px solid var(--color-border-muted);
921 }
922
923 /* --- Repo home layout --- */
924 .repo-home-layout {
925 display: grid;
926 gap: var(--space-8);
927 }
928 @media (min-width: 768px) {
929 .repo-home-layout {
930 grid-template-columns: 1fr 1fr;
931 }
932 }
933 .readme-section {
934 border: 1px solid var(--color-border);
935 border-radius: var(--radius-lg);
936 overflow: hidden;
937 }
938 .readme-header {
939 background: var(--color-bg-subtle);
940 padding: var(--space-3) var(--space-4);
941 font-size: var(--text-sm);
942 font-weight: 500;
943 border-bottom: 1px solid var(--color-border);
944 display: flex;
945 align-items: center;
946 justify-content: space-between;
947 }
948
949 /* --- Markdown body --- */
950 .markdown-body {
951 font-size: var(--text-sm);
952 line-height: 1.6;
953 color: var(--color-text);
954 }
955 .markdown-body h1,
956 .markdown-body h2,
957 .markdown-body h3,
958 .markdown-body h4,
959 .markdown-body h5,
960 .markdown-body h6 {
961 margin-top: var(--space-6);
962 margin-bottom: var(--space-3);
963 }
964 .markdown-body p {
965 margin-bottom: var(--space-4);
966 }
967 .markdown-body a {
968 color: var(--color-link);
969 }
970 .markdown-body code {
971 background: var(--color-bg-inset);
972 padding: 0.1em 0.3em;
973 border-radius: var(--radius-sm);
974 font-size: 0.9em;
975 }
976 .markdown-body pre {
977 background: var(--color-bg-subtle);
978 border: 1px solid var(--color-border);
979 border-radius: var(--radius-md);
980 padding: var(--space-4);
981 overflow: auto;
982 margin-bottom: var(--space-4);
983 }
984 .markdown-body pre code {
985 background: none;
986 padding: 0;
987 }
988 .markdown-body ul,
989 .markdown-body ol {
990 padding-left: var(--space-6);
991 margin-bottom: var(--space-4);
992 }
993 .markdown-body ul {
994 list-style: disc;
995 }
996 .markdown-body ol {
997 list-style: decimal;
998 }
999 .markdown-body li {
1000 margin-bottom: var(--space-1);
1001 }
1002 .markdown-body blockquote {
1003 border-left: 3px solid var(--color-border);
1004 padding-left: var(--space-4);
1005 color: var(--color-text-muted);
1006 margin: var(--space-4) 0;
1007 }
1008 .markdown-body table {
1009 width: 100%;
1010 border-collapse: collapse;
1011 margin-bottom: var(--space-4);
1012 }
1013 .markdown-body th,
1014 .markdown-body td {
1015 padding: var(--space-2) var(--space-3);
1016 border: 1px solid var(--color-border);
1017 }
1018 .markdown-body th {
1019 background: var(--color-bg-subtle);
1020 font-weight: 600;
1021 }
1022 .markdown-body hr {
1023 border: none;
1024 border-top: 1px solid var(--color-border);
1025 margin: var(--space-6) 0;
1026 }
1027 .markdown-body img {
1028 max-width: 100%;
1029 border-radius: var(--radius-md);
1030 }
1031 .markdown-body details {
1032 margin-bottom: var(--space-4);
1033 }
1034 .markdown-body summary {
1035 cursor: pointer;
1036 font-weight: 500;
1037 }
1038 .readme-section .markdown-body,
1039 .file-blob-body .markdown-body {
1040 padding: var(--space-4);
1041 }
1042
1043 /* --- Code setup block --- */
1044 .code-setup {
1045 background: var(--color-bg-subtle);
1046 border: 1px solid var(--color-border);
1047 border-radius: var(--radius-lg);
1048 padding: var(--space-4);
1049 font-size: var(--text-sm);
1050 margin-top: var(--space-4);
1051 overflow: auto;
1052 text-align: left;
1053 }
1054 .code-plain {
1055 background: var(--color-bg-subtle);
1056 padding: var(--space-4);
1057 overflow: auto;
1058 font-size: var(--text-sm);
1059 line-height: 1.6;
1060 }
1061
1062 /* --- Search row (search form + sort select) --- */
1063 .search-row {
1064 display: flex;
1065 align-items: center;
1066 gap: var(--space-3);
1067 margin-bottom: var(--space-5);
1068 }
1069 .search-form {
1070 flex: 1;
1071 }
1072 .repo-sort-select {
1073 padding: var(--space-1) var(--space-2);
1074 padding-right: var(--space-5);
1075 border: 1px solid var(--color-border);
1076 border-radius: var(--radius-md);
1077 background: var(--color-bg-subtle);
1078 font-size: var(--text-sm);
1079 color: var(--color-text);
1080 cursor: pointer;
1081 appearance: auto;
1082 }
1083 .repo-sort-select:hover {
1084 border-color: var(--color-text-muted);
1085 }
1086 .repo-sort-select:focus {
1087 outline: 2px solid var(--color-accent);
1088 outline-offset: -1px;
1089 }
1090 .search-input-wrap {
1091 display: flex;
1092 gap: var(--space-2);
1093 }
1094 .search-input {
1095 flex: 1;
1096 padding: var(--space-2) var(--space-3);
1097 border: 1px solid var(--color-border);
1098 border-radius: var(--radius-md);
1099 background: var(--color-bg);
1100 color: var(--color-text);
1101 font-size: var(--text-sm);
1102 }
1103 .search-input:focus {
1104 outline: 2px solid var(--color-accent);
1105 outline-offset: -1px;
1106 border-color: var(--color-accent);
1107 }
1108
1109 /* --- Issue close bar --- */
1110 .issue-close-bar {
1111 display: flex;
1112 justify-content: flex-end;
1113 padding: var(--space-3) 0;
1114 border-top: 1px solid var(--color-border-muted);
1115 margin-top: var(--space-2);
1116 }
1117
1118 /* --- Auth divider --- */
1119 .auth-divider {
1120 display: flex;
1121 align-items: center;
1122 gap: var(--space-3);
1123 margin: var(--space-4) 0;
1124 color: var(--color-text-muted);
1125 font-size: var(--text-sm);
1126 }
1127 .auth-divider::before,
1128 .auth-divider::after {
1129 content: "";
1130 flex: 1;
1131 height: 1px;
1132 background: var(--color-border);
1133 }
1134
1135 /* --- Passkey UI in settings --- */
1136 .passkey-actions {
1137 display: flex;
1138 flex-direction: column;
1139 gap: var(--space-3);
1140 align-items: flex-start;
1141 margin-top: var(--space-3);
1142 }
1143 .passkey-status {
1144 font-size: var(--text-sm);
1145 }
1146
1147 /* --- Danger zone --- */
1148 .danger-zone {
1149 margin-top: var(--space-8);
1150 }
1151 .danger-title {
1152 color: var(--color-danger);
1153 border-bottom-color: var(--color-danger);
1154 }
1155 .danger-card {
1156 border-color: var(--color-danger);
1157 background: var(--color-danger-bg);
1158 }
1159 .danger-item {
1160 display: flex;
1161 align-items: center;
1162 justify-content: space-between;
1163 gap: var(--space-4);
1164 flex-wrap: wrap;
1165 }
1166 .danger-item p {
1167 margin: var(--space-1) 0 0;
1168 }
1169 .btn-danger {
1170 background: var(--color-danger);
1171 border-color: transparent;
1172 color: #fff;
1173 }
1174 .btn-danger:hover {
1175 background: color-mix(in srgb, var(--color-danger) 85%, #000);
1176 }
1177
1178 /* --- Release list items --- */
1179 .release-item-header {
1180 display: flex;
1181 gap: var(--space-3);
1182 align-items: flex-start;
1183 }
1184 .release-item-main {
1185 flex: 1;
1186 min-width: 0;
1187 }
1188 .release-item-title {
1189 font-size: var(--text-lg);
1190 font-weight: 700;
1191 text-decoration: none;
1192 color: var(--color-text);
1193 display: block;
1194 margin-bottom: var(--space-1);
1195 }
1196 .release-item-title:hover {
1197 color: var(--color-link);
1198 }
1199 .release-item-meta {
1200 display: flex;
1201 flex-wrap: wrap;
1202 gap: var(--space-3);
1203 align-items: center;
1204 font-size: var(--text-xs);
1205 color: var(--color-text-muted);
1206 }
1207 .release-item-date {
1208 display: flex;
1209 flex-direction: column;
1210 align-items: flex-end;
1211 gap: var(--space-2);
1212 font-size: var(--text-xs);
1213 color: var(--color-text-muted);
1214 white-space: nowrap;
1215 flex-shrink: 0;
1216 }
1217
1218 /* --- Release notes preview in list --- */
1219 .release-notes-section {
1220 margin-top: var(--space-3);
1221 }
1222 .release-notes-label {
1223 font-size: var(--text-xs);
1224 font-weight: 600;
1225 color: var(--color-text-muted);
1226 text-transform: uppercase;
1227 letter-spacing: 0.05em;
1228 margin-bottom: var(--space-2);
1229 }
1230 .notes-expand > summary {
1231 list-style: none;
1232 cursor: pointer;
1233 outline: none;
1234 }
1235
1236 .notes-preview {
1237 max-height: calc(5 * 1.6em);
1238 overflow: hidden;
1239 position: relative;
1240 white-space: pre-wrap;
1241 font-size: var(--text-sm);
1242 color: var(--color-text);
1243 line-height: 1.6;
1244 word-break: break-word;
1245 margin-bottom: var(--space-1);
1246 }
1247 .notes-preview::after {
1248 content: "";
1249 position: absolute;
1250 bottom: 0;
1251 left: 0;
1252 right: 0;
1253 height: 2.5em;
1254 background: linear-gradient(transparent, var(--color-bg));
1255 pointer-events: none;
1256 }
1257 .notes-expand[open] .notes-preview {
1258 display: none;
1259 }
1260 .notes-full {
1261 padding-top: var(--space-3);
1262 padding-bottom: var(--space-1);
1263 }
1264 .notes-expand[open] {
1265 display: flex;
1266 flex-direction: column;
1267 }
1268 .notes-expand[open] > summary {
1269 order: 1;
1270 }
1271 .notes-expand[open] > .notes-full {
1272 order: 0;
1273 }
1274 .notes-toggle-label {
1275 display: inline-block;
1276 font-size: var(--text-xs);
1277 color: var(--color-link);
1278 margin-top: var(--space-1);
1279 }
1280 .notes-toggle-label:hover {
1281 text-decoration: underline;
1282 }
1283 .notes-toggle-label::before {
1284 content: "Show more ↓";
1285 }
1286 .notes-expand[open] .notes-toggle-label::before {
1287 content: "Show less ↑";
1288 }
1289
1290 /* --- Release detail --- */
1291 .release-detail {
1292 padding: var(--space-6) 0;
1293 }
1294 .release-header {
1295 margin-bottom: var(--space-6);
1296 }
1297 .release-notes {
1298 margin-bottom: var(--space-6);
1299 }
1300 .release-assets {
1301 margin-bottom: var(--space-6);
1302 }
1303 .release-assets-heading {
1304 font-size: var(--text-base);
1305 font-weight: 600;
1306 margin-bottom: var(--space-3);
1307 }
1308 .asset-list {
1309 border: 1px solid var(--color-border);
1310 border-radius: var(--radius-lg);
1311 overflow: hidden;
1312 }
1313 .asset-item {
1314 display: flex;
1315 align-items: center;
1316 gap: var(--space-4);
1317 padding: var(--space-3) var(--space-4);
1318 border-bottom: 1px solid var(--color-border-muted);
1319 font-size: var(--text-sm);
1320 }
1321 .asset-item:last-child {
1322 border-bottom: none;
1323 }
1324 .asset-name {
1325 flex: 1;
1326 color: var(--color-link);
1327 text-decoration: none;
1328 font-family: var(--font-mono);
1329 font-size: var(--text-xs);
1330 }
1331 .asset-name:hover {
1332 text-decoration: underline;
1333 }
1334 .asset-name-pending {
1335 color: var(--color-text-muted);
1336 cursor: default;
1337 }
1338 .asset-item-pending {
1339 opacity: 0.6;
1340 }
1341 .asset-size,
1342 .asset-meta {
1343 color: var(--color-text-muted);
1344 font-size: var(--text-xs);
1345 white-space: nowrap;
1346 }
1347 .release-back {
1348 margin-top: var(--space-4);
1349 display: flex;
1350 gap: var(--space-3);
1351 align-items: center;
1352 justify-content: space-between;
1353 }
1354
1355 /* ============================================================
1356 Pagination
1357 ============================================================ */
1358 .commit-verify-hint {
1359 margin-bottom: var(--space-4);
1360 font-size: var(--text-xs);
1361 color: var(--color-text-muted);
1362 }
1363 .commit-verify-hint code {
1364 word-break: break-all;
1365 }
1366 .commit-cursor-nav {
1367 display: flex;
1368 justify-content: space-between;
1369 border-top: 1px solid var(--color-border);
1370 margin-top: var(--space-2);
1371 padding: var(--space-4) 0 var(--space-2);
1372 }
1373
1374 .commit-cursor-prev {
1375 flex: 1;
1376 }
1377 .commit-cursor-next {
1378 flex: 1;
1379 text-align: right;
1380 }
1381
1382 .pagination {
1383 display: grid;
1384 grid-template-columns: 1fr auto 1fr;
1385 align-items: center;
1386 border-top: 1px solid var(--color-border);
1387 margin-top: var(--space-2);
1388 padding: var(--space-4) 0 var(--space-2);
1389 }
1390
1391 .pagination-prev {
1392 justify-self: start;
1393 }
1394 .pagination-next {
1395 justify-self: end;
1396 }
1397
1398 .pagination-info {
1399 justify-self: center;
1400 font-size: var(--text-sm);
1401 color: var(--color-text-muted);
1402 }
1403
1404 .pagination-btn {
1405 display: inline-flex;
1406 align-items: center;
1407 gap: var(--space-1);
1408 padding: var(--space-1) var(--space-3);
1409 border: 1px solid var(--color-border);
1410 border-radius: var(--radius-md);
1411 font-size: var(--text-sm);
1412 font-weight: 500;
1413 text-decoration: none;
1414 color: var(--color-text);
1415 background: var(--color-bg-subtle);
1416 transition:
1417 background 0.1s,
1418 border-color 0.1s;
1419 white-space: nowrap;
1420 }
1421
1422 .pagination-btn:hover {
1423 background: var(--color-bg-inset);
1424 border-color: var(--color-border);
1425 color: var(--color-text);
1426 text-decoration: none;
1427 }
1428
1429 /* Settings */
1430 .theme-options {
1431 display: flex;
1432 gap: var(--space-4);
1433 margin-bottom: var(--space-4);
1434 flex-wrap: wrap;
1435 }
1436 .theme-option {
1437 display: flex;
1438 align-items: center;
1439 gap: var(--space-2);
1440 cursor: pointer;
1441 font-size: var(--text-sm);
1442 }
1443 .settings-form {
1444 display: flex;
1445 flex-direction: column;
1446 gap: var(--space-4);
1447 }
1448 .passkey-list {
1449 display: flex;
1450 flex-direction: column;
1451 gap: var(--space-2);
1452 margin-bottom: var(--space-4);
1453 }
1454 .passkey-item {
1455 display: flex;
1456 align-items: center;
1457 gap: var(--space-3);
1458 padding: var(--space-2) 0;
1459 border-bottom: 1px solid var(--color-border-muted);
1460 font-size: var(--text-sm);
1461 }
1462 .passkey-item:last-child {
1463 border-bottom: none;
1464 }
1465 .passkey-date {
1466 flex: 1;
1467 color: var(--color-text-muted);
1468 }
1469 .queue-bulk-actions {
1470 display: flex;
1471 gap: var(--space-2);
1472 margin-bottom: var(--space-4);
1473 }
1474 .queue-list {
1475 list-style: none;
1476 padding: 0;
1477 margin: 0;
1478 max-height: 32rem;
1479 overflow-y: auto;
1480 }
1481 .queue-item {
1482 display: flex;
1483 align-items: flex-start;
1484 justify-content: space-between;
1485 gap: var(--space-4);
1486 padding: var(--space-3) 0;
1487 border-top: 1px solid var(--color-border-muted);
1488 font-size: var(--text-sm);
1489 }
1490 .queue-item-meta {
1491 display: flex;
1492 flex-direction: column;
1493 gap: var(--space-1);
1494 min-width: 0;
1495 }
1496 .queue-item-header {
1497 display: flex;
1498 align-items: baseline;
1499 gap: var(--space-2);
1500 }
1501 .queue-item-date {
1502 color: var(--color-text-muted);
1503 font-size: var(--text-xs);
1504 }
1505 .queue-item-answer {
1506 margin: 0;
1507 color: var(--color-text-muted);
1508 font-size: var(--text-xs);
1509 white-space: pre-wrap;
1510 word-break: break-word;
1511 }
1512 .queue-item-actions {
1513 display: flex;
1514 gap: var(--space-2);
1515 flex-shrink: 0;
1516 }
1517 .ssh-key-info {
1518 flex: 1;
1519 display: flex;
1520 flex-direction: column;
1521 gap: var(--space-1);
1522 min-width: 0;
1523 }
1524 .ssh-key-name {
1525 font-weight: 500;
1526 }
1527 .ssh-key-fingerprint {
1528 font-family: var(--font-mono);
1529 font-size: var(--text-xs);
1530 overflow: hidden;
1531 text-overflow: ellipsis;
1532 white-space: nowrap;
1533 }
1534 .form-textarea {
1535 resize: vertical;
1536 min-height: 4.5rem;
1537 font-family: var(--font-mono);
1538 font-size: var(--text-sm);
1539 }
1540
1541 /* Clone popup */
1542 .clone-popup-details {
1543 position: relative;
1544 display: inline-block;
1545 }
1546 .clone-popup-details > summary {
1547 list-style: none;
1548 }
1549 .timeline-author-right .inline-edit-details > summary {
1550 list-style: none;
1551 }
1552 .clone-popup {
1553 position: absolute;
1554 right: 1rem;
1555 top: calc(100% + var(--space-2));
1556 background: var(--color-bg);
1557 border: 1px solid var(--color-border);
1558 border-radius: var(--radius-lg);
1559 padding: var(--space-3);
1560 min-width: 22rem;
1561 z-index: 100;
1562 box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
1563 display: flex;
1564 flex-direction: column;
1565 gap: var(--space-2);
1566 }
1567 .clone-url-row {
1568 display: flex;
1569 align-items: center;
1570 gap: var(--space-2);
1571 }
1572 .clone-url-label {
1573 font-size: var(--text-xs);
1574 font-weight: 600;
1575 color: var(--color-text-muted);
1576 text-transform: uppercase;
1577 letter-spacing: 0.05em;
1578 min-width: 2.75rem;
1579 }
1580 .clone-url-input {
1581 flex: 1;
1582 font-family: var(--font-mono);
1583 font-size: var(--text-sm);
1584 background: var(--color-bg-subtle);
1585 border: 1px solid var(--color-border-muted);
1586 border-radius: var(--radius-md);
1587 padding: var(--space-1) var(--space-2);
1588 color: var(--color-text);
1589 cursor: text;
1590 min-width: 0;
1591 }
1592
1593 /* User list */
1594 .user-list {
1595 display: flex;
1596 flex-direction: column;
1597 gap: var(--space-2);
1598 margin-bottom: var(--space-6);
1599 }
1600 .user-item {
1601 display: flex;
1602 align-items: center;
1603 gap: var(--space-3);
1604 padding: var(--space-2) 0;
1605 border-bottom: 1px solid var(--color-border-muted);
1606 font-size: var(--text-sm);
1607 }
1608 .user-item:last-child {
1609 border-bottom: none;
1610 }
1611 .user-name {
1612 font-weight: 500;
1613 flex: 1;
1614 }
1615 .user-date {
1616 color: var(--color-text-muted);
1617 font-size: var(--text-xs);
1618 }
1619
1620 /* Labels */
1621 .label-badge {
1622 display: inline-block;
1623 padding: 0 var(--space-2);
1624 border-radius: 2em;
1625 font-size: var(--text-xs);
1626 font-weight: 500;
1627 line-height: 1.6;
1628 word-break: break-all;
1629 }
1630 .issue-labels {
1631 display: flex;
1632 flex-wrap: wrap;
1633 gap: var(--space-1);
1634 margin-bottom: var(--space-2);
1635 }
1636 .issue-labels-row {
1637 display: flex;
1638 flex-wrap: wrap;
1639 align-items: center;
1640 gap: var(--space-2);
1641 padding: var(--space-2) 0 var(--space-3);
1642 }
1643 .label-badge-wrap {
1644 display: inline-flex;
1645 align-items: center;
1646 gap: var(--space-1);
1647 }
1648 .label-remove-form {
1649 display: inline;
1650 }
1651 .label-remove-btn {
1652 background: none;
1653 border: none;
1654 cursor: pointer;
1655 padding: 0 2px;
1656 font-size: var(--text-sm);
1657 line-height: 1;
1658 color: var(--color-text-muted);
1659 opacity: 0.7;
1660 }
1661 .label-remove-btn:hover {
1662 opacity: 1;
1663 }
1664 .label-add-inline-form {
1665 display: inline-flex;
1666 align-items: center;
1667 gap: var(--space-2);
1668 }
1669 .label-select {
1670 font-size: var(--text-sm);
1671 padding: var(--space-1) var(--space-2);
1672 border: 1px solid var(--color-border);
1673 border-radius: var(--radius-md);
1674 background: var(--color-bg);
1675 color: var(--color-text);
1676 height: 2rem;
1677 }
1678 .label-checkbox-list {
1679 display: flex;
1680 flex-wrap: wrap;
1681 gap: var(--space-2);
1682 margin-top: var(--space-1);
1683 }
1684 .label-checkbox-item {
1685 display: inline-flex;
1686 align-items: center;
1687 gap: var(--space-1);
1688 cursor: pointer;
1689 }
1690 .label-settings-list {
1691 display: flex;
1692 flex-direction: column;
1693 margin-bottom: var(--space-4);
1694 max-height: 24rem;
1695 overflow-y: auto;
1696 }
1697 .label-settings-item {
1698 display: flex;
1699 align-items: center;
1700 gap: var(--space-3);
1701 padding: var(--space-2) 0;
1702 border-bottom: 1px solid var(--color-border-muted);
1703 font-size: var(--text-sm);
1704 }
1705 .label-settings-item:last-child {
1706 border-bottom: none;
1707 }
1708 .label-settings-swatch {
1709 width: 12px;
1710 height: 12px;
1711 border-radius: 50%;
1712 flex-shrink: 0;
1713 border: 1px solid rgba(0, 0, 0, 0.15);
1714 }
1715 .label-settings-name {
1716 flex: 1;
1717 font-weight: 500;
1718 }
1719 .label-add-form {
1720 display: flex;
1721 align-items: center;
1722 gap: var(--space-2);
1723 }
1724 .label-name-input {
1725 flex: 1;
1726 min-width: 0;
1727 padding: var(--space-2) var(--space-3);
1728 border: 1px solid var(--color-border);
1729 border-radius: var(--radius-md);
1730 background: var(--color-bg);
1731 color: var(--color-text);
1732 font-size: var(--text-sm);
1733 height: 2rem;
1734 box-sizing: border-box;
1735 }
1736 .label-name-input:focus {
1737 outline: 2px solid var(--color-accent);
1738 outline-offset: -1px;
1739 border-color: var(--color-accent);
1740 }
1741 .label-color-swatch-label {
1742 flex-shrink: 0;
1743 cursor: pointer;
1744 display: block;
1745 line-height: 0;
1746 }
1747 .label-color-input {
1748 display: block;
1749 width: 2rem;
1750 height: 2rem;
1751 cursor: pointer;
1752 appearance: none;
1753 box-sizing: border-box;
1754 clip-path: circle(50%);
1755 border: none;
1756 }
1757
1758 /* Label filter (details/summary popup) */
1759 .list-header-actions {
1760 display: flex;
1761 align-items: center;
1762 gap: var(--space-2);
1763 flex-shrink: 0;
1764 }
1765 .label-filter {
1766 position: relative;
1767 }
1768 .label-filter-popup {
1769 position: absolute;
1770 right: 0;
1771 top: calc(100% + var(--space-1));
1772 z-index: 10;
1773 background: var(--color-bg);
1774 border: 1px solid var(--color-border);
1775 border-radius: var(--radius-lg);
1776 padding: var(--space-3);
1777 min-width: 180px;
1778 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
1779 }
1780 .label-filter-list {
1781 display: flex;
1782 flex-direction: column;
1783 gap: var(--space-2);
1784 margin-bottom: var(--space-3);
1785 max-height: 16rem;
1786 overflow-y: auto;
1787 }
1788 .label-filter-item {
1789 display: flex;
1790 align-items: center;
1791 gap: var(--space-2);
1792 cursor: pointer;
1793 font-size: var(--text-sm);
1794 }
1795 .label-filter-actions {
1796 display: flex;
1797 gap: var(--space-2);
1798 }
1799}
1800