GameOver1337 / GitClone Public
К репозиторию
38.2 KB
static/css/main.css
38.2 KB
1/* ==========================================================================
2 Clancore Repo — GitHub / Primer inspired theme
3 Light by default, follows the system color scheme in dark mode.
4 ========================================================================== */
5
6:root {
7 color-scheme: light;
8
9 --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans",
10 Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
11 --font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
12 "Liberation Mono", monospace;
13
14 --bg: #ffffff;
15 --bg-subtle: #f6f8fa;
16 --bg-inset: #f6f8fa;
17 --fg: #1f2328;
18 --fg-muted: #656d76;
19 --border: #d0d7de;
20 --border-muted: #d8dee4;
21
22 --header-bg: #ffffff;
23 --header-border: #d0d7de;
24 --header-fg: #1f2328;
25
26 --accent: #0969da;
27 --accent-subtle: #ddf4ff;
28
29 --success-fg: #1a7f37;
30 --success-emphasis: #1f883d;
31 --success-emphasis-hover: #1a7f37;
32 --success-subtle: #dafbe1;
33 --success-border: rgba(74, 194, 107, 0.4);
34
35 --danger-fg: #cf222e;
36 --danger-subtle: #ffebe9;
37 --danger-border: rgba(255, 129, 130, 0.4);
38
39 --attention-fg: #9a6700;
40 --attention-subtle: #fff8c5;
41 --attention-border: rgba(212, 167, 44, 0.4);
42
43 --neutral-subtle: #eaeef2;
44 --neutral-border: rgba(31, 35, 40, 0.15);
45
46 --btn-bg: #f6f8fa;
47 --btn-hover-bg: #f3f4f6;
48 --btn-active-bg: #ebecf0;
49 --btn-border: rgba(31, 35, 40, 0.15);
50 --btn-hover-border: rgba(31, 35, 40, 0.15);
51
52 --focus-ring: rgba(9, 105, 218, 0.3);
53 --shadow-small: 0 1px 0 rgba(31, 35, 40, 0.04);
54 --input-shadow: inset 0 1px 0 rgba(208, 215, 222, 0.2);
55
56 --radius: 6px;
57 --tab-underline: #fd8c73;
58
59 --log-bg: #0d1117;
60 --log-fg: #e6edf3;
61}
62
63@media (prefers-color-scheme: dark) {
64 :root {
65 color-scheme: dark;
66
67 --bg: #0d1117;
68 --bg-subtle: #161b22;
69 --bg-inset: #010409;
70 --fg: #e6edf3;
71 --fg-muted: #8b949e;
72 --border: #30363d;
73 --border-muted: #21262d;
74
75 --header-bg: #010409;
76 --header-border: #21262d;
77 --header-fg: #e6edf3;
78
79 --accent: #4493f8;
80 --accent-subtle: rgba(56, 139, 253, 0.15);
81
82 --success-fg: #3fb950;
83 --success-emphasis: #238636;
84 --success-emphasis-hover: #2ea043;
85 --success-subtle: rgba(46, 160, 67, 0.15);
86 --success-border: rgba(46, 160, 67, 0.4);
87
88 --danger-fg: #f85149;
89 --danger-subtle: rgba(248, 81, 73, 0.1);
90 --danger-border: rgba(248, 81, 73, 0.4);
91
92 --attention-fg: #d29922;
93 --attention-subtle: rgba(187, 128, 9, 0.15);
94 --attention-border: rgba(187, 128, 9, 0.4);
95
96 --neutral-subtle: #21262d;
97 --neutral-border: rgba(240, 246, 252, 0.1);
98
99 --btn-bg: #21262d;
100 --btn-hover-bg: #30363d;
101 --btn-active-bg: #282e33;
102 --btn-border: rgba(240, 246, 252, 0.1);
103 --btn-hover-border: rgba(240, 246, 252, 0.1);
104
105 --focus-ring: rgba(47, 129, 247, 0.3);
106 --shadow-small: 0 0 0 transparent;
107 --input-shadow: inset 0 1px 0 rgba(1, 4, 9, 0.2);
108
109 --tab-underline: #f78166;
110 }
111}
112
113/* ===== Base ===== */
114
115*,
116*::before,
117*::after {
118 box-sizing: border-box;
119}
120
121html {
122 -webkit-text-size-adjust: 100%;
123}
124
125body {
126 margin: 0;
127 min-height: 100vh;
128 display: flex;
129 flex-direction: column;
130 background: var(--bg);
131 color: var(--fg);
132 font-family: var(--font-sans);
133 font-size: 14px;
134 line-height: 1.5;
135 -webkit-font-smoothing: antialiased;
136 -moz-osx-font-smoothing: grayscale;
137}
138
139main.container {
140 flex: 1 0 auto;
141 padding-top: 24px;
142 padding-bottom: 40px;
143}
144
145h1,
146h2,
147h3,
148h4 {
149 margin: 0;
150 font-weight: 600;
151}
152
153p {
154 margin: 0 0 16px;
155}
156
157a {
158 color: var(--accent);
159 text-decoration: none;
160}
161
162a:hover {
163 text-decoration: underline;
164}
165
166pre {
167 font-family: var(--font-mono);
168 margin: 0;
169}
170
171code,
172kbd,
173samp {
174 font-family: var(--font-mono);
175}
176
177svg {
178 vertical-align: middle;
179}
180
181button,
182input,
183select,
184textarea {
185 font: inherit;
186}
187
188:focus-visible {
189 outline: 2px solid var(--accent);
190 outline-offset: -2px;
191}
192
193.container {
194 width: 100%;
195 max-width: 1280px;
196 margin: 0 auto;
197 padding: 0 32px;
198}
199
200.octicon {
201 flex-shrink: 0;
202 fill: currentColor;
203 vertical-align: text-bottom;
204}
205
206.muted {
207 color: var(--fg-muted);
208}
209
210.text-small {
211 font-size: 12px;
212}
213
214.mt-2 {
215 margin-top: 8px;
216}
217
218.sr-only {
219 position: absolute;
220 width: 1px;
221 height: 1px;
222 padding: 0;
223 margin: -1px;
224 overflow: hidden;
225 clip: rect(0, 0, 0, 0);
226 white-space: nowrap;
227 border: 0;
228}
229
230.skip-link {
231 position: absolute;
232 top: -1000px;
233 left: 16px;
234 z-index: 200;
235 padding: 8px 16px;
236 background: var(--bg);
237 border: 1px solid var(--border);
238 border-radius: var(--radius);
239 color: var(--fg);
240}
241
242.skip-link:focus {
243 top: 16px;
244}
245
246/* ===== Header ===== */
247
248.header {
249 background: var(--header-bg);
250 border-bottom: 1px solid var(--header-border);
251 color: var(--header-fg);
252}
253
254.header-inner {
255 display: flex;
256 align-items: center;
257 gap: 16px;
258 height: 62px;
259}
260
261.header-logo {
262 display: inline-flex;
263 flex-shrink: 0;
264 color: var(--header-fg);
265}
266
267.header-logo:hover {
268 color: var(--fg-muted);
269 text-decoration: none;
270}
271
272.header-nav {
273 display: flex;
274 align-items: center;
275 gap: 4px;
276}
277
278.header-nav a,
279.header-link,
280.header-link-button {
281 display: inline-flex;
282 align-items: center;
283 padding: 6px 8px;
284 border: 0;
285 border-radius: var(--radius);
286 background: transparent;
287 color: var(--header-fg);
288 font-size: 14px;
289 font-weight: 600;
290 line-height: 20px;
291 white-space: nowrap;
292 text-decoration: none;
293 cursor: pointer;
294}
295
296.header-nav a:hover,
297.header-link:hover,
298.header-link-button:hover {
299 background: var(--neutral-subtle);
300 text-decoration: none;
301}
302
303.header-search {
304 flex: 1 1 200px;
305 max-width: 272px;
306 margin-left: auto;
307}
308
309.header-search form {
310 position: relative;
311 display: flex;
312 align-items: center;
313}
314
315.header-search-icon {
316 position: absolute;
317 left: 8px;
318 color: var(--fg-muted);
319 pointer-events: none;
320}
321
322.header-search input {
323 width: 100%;
324 height: 30px;
325 padding: 0 30px 0 30px;
326 background: var(--bg);
327 border: 1px solid var(--border);
328 border-radius: 6px;
329 color: var(--fg);
330 font-size: 14px;
331 line-height: 20px;
332 outline: none;
333}
334
335.header-search input::-webkit-search-cancel-button {
336 display: none;
337}
338
339.search-kbd {
340 position: absolute;
341 right: 6px;
342 display: inline-flex;
343 align-items: center;
344 justify-content: center;
345 min-width: 18px;
346 height: 18px;
347 padding: 0 5px;
348 border: 1px solid var(--border);
349 border-radius: 4px;
350 background: var(--bg-subtle);
351 color: var(--fg-muted);
352 font-family: var(--font-sans);
353 font-size: 11px;
354 line-height: 1;
355 pointer-events: none;
356}
357
358.header-search input::placeholder {
359 color: var(--fg-muted);
360}
361
362.header-search input:focus {
363 border-color: var(--accent);
364 box-shadow: 0 0 0 3px var(--focus-ring);
365}
366
367.header-user {
368 display: flex;
369 align-items: center;
370 gap: 8px;
371 flex-shrink: 0;
372}
373
374.header-avatar {
375 width: 24px;
376 height: 24px;
377 font-size: 11px;
378}
379
380/* ===== Footer ===== */
381
382.footer {
383 padding: 40px 0;
384 border-top: 1px solid var(--border);
385 color: var(--fg-muted);
386 font-size: 12px;
387}
388
389.footer-inner {
390 display: flex;
391 align-items: center;
392 justify-content: space-between;
393 gap: 16px;
394 flex-wrap: wrap;
395}
396
397.footer-left {
398 display: flex;
399 align-items: center;
400 gap: 8px;
401}
402
403.footer-mark {
404 display: inline-flex;
405 color: var(--fg-muted);
406}
407
408.footer-mark:hover {
409 color: var(--fg);
410}
411
412.footer-links {
413 display: flex;
414 align-items: center;
415 gap: 16px;
416 flex-wrap: wrap;
417}
418
419/* ===== Buttons ===== */
420
421.btn {
422 display: inline-flex;
423 align-items: center;
424 justify-content: center;
425 gap: 6px;
426 min-height: 32px;
427 padding: 5px 16px;
428 border: 1px solid var(--btn-border);
429 border-radius: var(--radius);
430 background: var(--btn-bg);
431 color: var(--fg);
432 font-size: 14px;
433 font-weight: 500;
434 line-height: 20px;
435 white-space: nowrap;
436 vertical-align: middle;
437 cursor: pointer;
438 user-select: none;
439 text-decoration: none;
440 box-shadow: var(--shadow-small);
441 transition: background-color 0.2s cubic-bezier(0.3, 0, 0.5, 1),
442 border-color 0.2s cubic-bezier(0.3, 0, 0.5, 1);
443}
444
445.btn:hover {
446 background: var(--btn-hover-bg);
447 border-color: var(--btn-hover-border);
448 text-decoration: none;
449}
450
451.btn:active {
452 background: var(--btn-active-bg);
453}
454
455.btn:focus-visible {
456 outline: none;
457 box-shadow: 0 0 0 3px var(--focus-ring);
458}
459
460.btn-primary {
461 background: var(--success-emphasis);
462 border-color: var(--btn-border);
463 color: #ffffff;
464}
465
466.btn-primary:hover {
467 background: var(--success-emphasis-hover);
468 border-color: var(--btn-border);
469}
470
471/* Зелёная кнопка (как Code в GitHub) */
472.btn-success {
473 background: var(--success-emphasis);
474 border-color: rgba(31, 35, 40, 0.15);
475 color: #ffffff;
476}
477
478.btn-success:hover {
479 background: var(--success-emphasis-hover);
480 border-color: rgba(31, 35, 40, 0.15);
481 color: #ffffff;
482}
483
484/* Инвертированная кнопка (в шапке) */
485.btn-inverted {
486 background: var(--fg);
487 border-color: var(--fg);
488 color: var(--bg);
489}
490
491.btn-inverted:hover {
492 background: var(--fg);
493 border-color: var(--fg);
494 color: var(--bg);
495 opacity: 0.85;
496}
497
498.btn-secondary {
499 background: var(--btn-bg);
500 color: var(--fg);
501}
502
503.btn-danger {
504 background: var(--danger-subtle);
505 border-color: var(--danger-border);
506 color: var(--danger-fg);
507}
508
509.btn-danger:hover {
510 background: var(--danger-subtle);
511 border-color: var(--danger-fg);
512}
513
514.btn-sm {
515 min-height: 28px;
516 padding: 3px 12px;
517 font-size: 12px;
518 line-height: 18px;
519}
520
521.btn-block {
522 display: flex;
523 width: 100%;
524 text-align: center;
525}
526
527.btn.copied {
528 background: var(--success-subtle);
529 border-color: var(--success-border);
530 color: var(--success-fg);
531}
532
533.inline-form {
534 display: inline;
535 margin: 0;
536 padding: 0;
537}
538
539.link-button {
540 padding: 0;
541 border: 0;
542 background: none;
543 color: var(--accent);
544 font: inherit;
545 font-size: 12px;
546 cursor: pointer;
547}
548
549.link-button:hover {
550 text-decoration: underline;
551}
552
553/* ===== Boxes and counters ===== */
554
555.box {
556 min-width: 0;
557 background: var(--bg);
558 border: 1px solid var(--border);
559 border-radius: var(--radius);
560}
561
562.box-header {
563 display: flex;
564 align-items: center;
565 justify-content: space-between;
566 gap: 8px;
567 padding: 8px 16px;
568 background: var(--bg-subtle);
569 border-bottom: 1px solid var(--border);
570 border-radius: var(--radius) var(--radius) 0 0;
571 font-size: 14px;
572 font-weight: 600;
573}
574
575.box-header h2 {
576 margin: 0;
577 font-size: 14px;
578 font-weight: 600;
579}
580
581.box-body {
582 padding: 16px;
583}
584
585.box-body-bordered {
586 border-top: 1px solid var(--border);
587}
588
589.counter {
590 display: inline-flex;
591 align-items: center;
592 justify-content: center;
593 min-width: 20px;
594 height: 18px;
595 padding: 0 6px;
596 border-radius: 2em;
597 background: var(--neutral-subtle);
598 color: var(--fg);
599 font-size: 12px;
600 font-weight: 500;
601 line-height: 18px;
602}
603
604/* ===== Badges ===== */
605
606.badge {
607 display: inline-flex;
608 align-items: center;
609 gap: 4px;
610 padding: 0 7px;
611 border: 1px solid var(--neutral-border);
612 border-radius: 2em;
613 background: transparent;
614 color: var(--fg-muted);
615 font-size: 12px;
616 font-weight: 500;
617 line-height: 18px;
618 white-space: nowrap;
619 vertical-align: middle;
620}
621
622.badge.success {
623 background: var(--success-subtle);
624 border-color: var(--success-border);
625 color: var(--success-fg);
626}
627
628.badge.failed {
629 background: var(--danger-subtle);
630 border-color: var(--danger-border);
631 color: var(--danger-fg);
632}
633
634.badge.running {
635 background: var(--attention-subtle);
636 border-color: var(--attention-border);
637 color: var(--attention-fg);
638}
639
640.badge.pending {
641 background: var(--neutral-subtle);
642 border-color: var(--neutral-border);
643 color: var(--fg-muted);
644}
645
646/* Обводка без заливки (Public / Private в хлебных крошках) */
647.badge-outline {
648 background: transparent;
649 border-color: var(--border);
650 color: var(--fg-muted);
651 font-weight: 500;
652}
653
654/* ===== Alerts ===== */
655
656.flash {
657 padding: 16px;
658 margin-bottom: 16px;
659 border: 1px solid var(--border);
660 border-radius: var(--radius);
661 font-size: 14px;
662}
663
664.flash-error {
665 background: var(--danger-subtle);
666 border-color: var(--danger-border);
667}
668
669.flash-attention {
670 background: var(--attention-subtle);
671 border-color: var(--attention-border);
672}
673
674/* ===== Page heading ===== */
675
676.page-heading {
677 display: flex;
678 align-items: center;
679 justify-content: space-between;
680 gap: 16px;
681 flex-wrap: wrap;
682 margin: 0 0 16px;
683}
684
685.page-heading h1 {
686 font-size: 24px;
687 font-weight: 600;
688 line-height: 1.25;
689}
690
691.page-description {
692 margin: -8px 0 16px;
693 color: var(--fg-muted);
694 font-size: 14px;
695}
696
697/* ===== Repo topline, tabs and heading ===== */
698
699.repo-topline {
700 display: flex;
701 align-items: center;
702 gap: 8px;
703 flex-wrap: wrap;
704 margin-top: 8px;
705 font-size: 14px;
706}
707
708.repo-topline-link {
709 display: inline-flex;
710 align-items: center;
711 gap: 6px;
712 min-width: 0;
713 color: var(--accent);
714 text-decoration: none;
715}
716
717.repo-topline-link .octicon {
718 color: var(--fg-muted);
719}
720
721.repo-topline-link:hover {
722 text-decoration: underline;
723}
724
725.repo-topline-owner {
726 font-weight: 400;
727}
728
729.repo-topline-sep {
730 color: var(--fg-muted);
731}
732
733.repo-topline-name {
734 font-weight: 600;
735}
736
737.repo-heading {
738 display: flex;
739 align-items: center;
740 gap: 16px;
741 flex-wrap: wrap;
742 margin: 4px 0 16px;
743}
744
745.repo-avatar {
746 width: 48px;
747 height: 48px;
748 border: 1px solid var(--border);
749 background: var(--bg-subtle);
750 font-size: 20px;
751 text-decoration: none;
752}
753
754.repo-avatar:hover {
755 text-decoration: none;
756}
757
758.repo-heading-main {
759 flex: 1 1 auto;
760 min-width: 0;
761}
762
763.repo-heading-title {
764 display: flex;
765 align-items: baseline;
766 flex-wrap: wrap;
767 gap: 4px;
768 margin: 0;
769 font-size: 20px;
770 line-height: 1.3;
771}
772
773.repo-heading-owner {
774 color: var(--accent);
775 font-weight: 400;
776}
777
778.repo-heading-sep {
779 color: var(--fg-muted);
780 font-weight: 400;
781}
782
783.repo-heading-name {
784 color: var(--accent);
785 font-weight: 600;
786}
787
788.repo-heading-actions {
789 display: flex;
790 align-items: center;
791 gap: 8px;
792 flex-wrap: wrap;
793 flex-shrink: 0;
794}
795
796.repo-actions {
797 display: flex;
798 align-items: center;
799 gap: 8px;
800 flex-wrap: wrap;
801}
802
803.repo-tabs {
804 display: flex;
805 gap: 0;
806 margin: 16px 0 24px;
807 border-bottom: 1px solid var(--border);
808 overflow-x: auto;
809 scrollbar-width: none;
810}
811
812.repo-tabs::-webkit-scrollbar {
813 display: none;
814}
815
816.repo-tabs a {
817 display: inline-flex;
818 align-items: center;
819 gap: 8px;
820 margin-bottom: -1px;
821 padding: 8px 16px;
822 border-bottom: 2px solid transparent;
823 color: var(--fg);
824 font-size: 14px;
825 line-height: 30px;
826 white-space: nowrap;
827 text-decoration: none;
828}
829
830.repo-tabs a:hover {
831 border-bottom-color: var(--border);
832 text-decoration: none;
833}
834
835.repo-tabs a.active {
836 border-bottom-color: var(--tab-underline);
837 font-weight: 600;
838}
839
840.repo-tabs .octicon {
841 color: var(--fg-muted);
842}
843
844/* ===== Repository layout ===== */
845
846.repo-layout {
847 display: grid;
848 grid-template-columns: minmax(0, 1fr) 296px;
849 gap: 24px;
850 align-items: start;
851}
852
853.repo-main {
854 min-width: 0;
855}
856
857.repo-main > .box + .box {
858 margin-top: 16px;
859}
860
861.repo-sidebar {
862 display: flex;
863 flex-direction: column;
864 gap: 24px;
865 min-width: 0;
866}
867
868/* ===== Repo toolbar (ветка, счётчики, Go to file, Code) ===== */
869
870.file-view-toolbar {
871 display: flex;
872 align-items: center;
873 gap: 12px;
874 flex-wrap: wrap;
875 min-height: 32px;
876 margin: 0 0 8px;
877}
878
879.repo-toolbar {
880 display: flex;
881 align-items: center;
882 gap: 8px;
883 flex-wrap: wrap;
884 margin: 0 0 16px;
885}
886
887.branch-selector {
888 position: relative;
889 display: inline-flex;
890 align-items: center;
891 gap: 4px;
892 padding-left: 8px;
893 background: var(--btn-bg);
894 border: 1px solid var(--btn-border);
895 border-radius: var(--radius);
896}
897
898.branch-selector:hover {
899 background: var(--btn-hover-bg);
900}
901
902.branch-selector-icon {
903 flex-shrink: 0;
904 color: var(--fg);
905}
906
907.branch-selector label {
908 position: absolute;
909 width: 1px;
910 height: 1px;
911 padding: 0;
912 margin: -1px;
913 overflow: hidden;
914 clip: rect(0, 0, 0, 0);
915 white-space: nowrap;
916 border: 0;
917}
918
919.branch-selector select {
920 appearance: none;
921 -webkit-appearance: none;
922 min-height: 32px;
923 padding: 5px 28px 5px 4px;
924 background-color: transparent;
925 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='%23656d76'%3E%3Cpath d='M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z'/%3E%3C/svg%3E");
926 background-repeat: no-repeat;
927 background-position: right 6px center;
928 background-size: 16px;
929 border: 0;
930 border-radius: var(--radius);
931 color: var(--fg);
932 font-size: 14px;
933 font-weight: 600;
934 line-height: 20px;
935 cursor: pointer;
936}
937
938.branch-selector select:focus-visible {
939 outline: none;
940 box-shadow: 0 0 0 3px var(--focus-ring);
941}
942
943.repo-counter {
944 display: inline-flex;
945 align-items: center;
946 gap: 4px;
947 height: 32px;
948 padding: 0 8px;
949 border: 1px solid var(--border);
950 border-radius: var(--radius);
951 background: var(--bg-subtle);
952 color: var(--fg-muted);
953 font-size: 12px;
954 font-weight: 500;
955 line-height: 1;
956 white-space: nowrap;
957}
958
959.repo-counter-value {
960 color: var(--fg);
961 font-weight: 600;
962}
963
964.go-to-file {
965 position: relative;
966 display: inline-flex;
967 align-items: center;
968}
969
970.go-to-file input {
971 width: 200px;
972 height: 32px;
973 padding: 0 32px 0 12px;
974 background: var(--bg);
975 border: 1px solid var(--border);
976 border-radius: var(--radius);
977 color: var(--fg);
978 font-size: 14px;
979 line-height: 20px;
980 outline: none;
981}
982
983.go-to-file input::placeholder {
984 color: var(--fg-muted);
985}
986
987.go-to-file input:focus {
988 border-color: var(--accent);
989 box-shadow: 0 0 0 3px var(--focus-ring);
990}
991
992.go-to-file .search-kbd {
993 right: 8px;
994}
995
996.code-dropdown {
997 position: relative;
998}
999
1000.btn-code {
1001 font-weight: 600;
1002}
1003
1004/* ===== Popover (панель клонирования) ===== */
1005
1006.popover {
1007 position: absolute;
1008 top: calc(100% + 6px);
1009 right: 0;
1010 z-index: 40;
1011 display: none;
1012 width: 356px;
1013 padding: 16px;
1014 background: var(--bg);
1015 border: 1px solid var(--border);
1016 border-radius: var(--radius);
1017 box-shadow: 0 8px 24px rgba(1, 4, 9, 0.12);
1018 text-align: left;
1019}
1020
1021.popover.open {
1022 display: block;
1023}
1024
1025.popover-title {
1026 margin: 0 0 8px;
1027 font-size: 14px;
1028 font-weight: 600;
1029}
1030
1031.popover-hint {
1032 margin: 8px 0 0;
1033}
1034
1035.breadcrumb {
1036 display: flex;
1037 align-items: center;
1038 flex-wrap: wrap;
1039 gap: 2px;
1040 min-width: 0;
1041 font-size: 14px;
1042}
1043
1044.breadcrumb a {
1045 color: var(--accent);
1046}
1047
1048.breadcrumb .sep {
1049 margin: 0 2px;
1050 color: var(--fg-muted);
1051}
1052
1053.toolbar-spacer {
1054 flex: 1 1 auto;
1055}
1056
1057.commit-avatar {
1058 background: var(--bg-subtle);
1059 color: var(--fg-muted);
1060}
1061
1062/* ===== File browser ===== */
1063
1064.file-browser {
1065 overflow: hidden;
1066}
1067
1068.file-browser-head {
1069 display: flex;
1070 align-items: center;
1071 gap: 8px;
1072 min-width: 0;
1073 padding: 10px 16px;
1074 background: var(--bg-subtle);
1075 border-bottom: 1px solid var(--border);
1076 font-size: 12px;
1077}
1078
1079.file-browser-head .commit-avatar {
1080 background: var(--neutral-subtle);
1081}
1082
1083.head-commit-author {
1084 flex-shrink: 0;
1085 color: var(--fg);
1086 font-weight: 600;
1087}
1088
1089.head-commit-subject {
1090 min-width: 0;
1091 overflow: hidden;
1092 color: var(--fg-muted);
1093 text-overflow: ellipsis;
1094 white-space: nowrap;
1095}
1096
1097.head-commit-time {
1098 flex-shrink: 0;
1099 color: var(--fg-muted);
1100 white-space: nowrap;
1101}
1102
1103.head-commit-count {
1104 flex-shrink: 0;
1105 color: var(--fg);
1106 font-weight: 600;
1107 text-decoration: none;
1108}
1109
1110.head-commit-count:hover {
1111 color: var(--accent);
1112 text-decoration: underline;
1113}
1114
1115.file-table {
1116 width: 100%;
1117 border-collapse: collapse;
1118 font-size: 14px;
1119}
1120
1121.file-table th,
1122.file-table td {
1123 text-align: left;
1124}
1125
1126.file-table td {
1127 padding: 8px 16px;
1128 border-top: 1px solid var(--border-muted);
1129 vertical-align: middle;
1130}
1131
1132.file-table tr:first-child td {
1133 border-top: 0;
1134}
1135
1136.file-table tbody tr:hover {
1137 background: var(--bg-subtle);
1138}
1139
1140.file-icon {
1141 display: inline-flex;
1142 align-items: center;
1143 margin-right: 8px;
1144 color: var(--fg-muted);
1145 vertical-align: middle;
1146}
1147
1148.file-name {
1149 min-width: 0;
1150 overflow-wrap: anywhere;
1151}
1152
1153.file-name a {
1154 color: var(--fg);
1155 vertical-align: middle;
1156}
1157
1158.file-name a:hover {
1159 color: var(--accent);
1160 text-decoration: underline;
1161}
1162
1163.file-commit {
1164 width: 42%;
1165}
1166
1167.file-commit-subject {
1168 display: inline-block;
1169 max-width: 100%;
1170 overflow: hidden;
1171 color: var(--fg-muted);
1172 font-size: 12px;
1173 text-overflow: ellipsis;
1174 white-space: nowrap;
1175 vertical-align: middle;
1176}
1177
1178.file-date {
1179 width: 1%;
1180 color: var(--fg-muted);
1181 font-size: 12px;
1182 text-align: right !important;
1183 white-space: nowrap;
1184}
1185
1186.file-size {
1187 width: 1%;
1188 color: var(--fg-muted);
1189 font-size: 12px;
1190 text-align: right !important;
1191 white-space: nowrap;
1192}
1193
1194.empty-row {
1195 padding: 32px 16px !important;
1196 color: var(--fg-muted);
1197 text-align: center !important;
1198}
1199
1200/* ===== Commits ===== */
1201
1202.commit-list {
1203 margin: 0;
1204 padding: 0;
1205 list-style: none;
1206}
1207
1208.commit-list li {
1209 display: flex;
1210 align-items: center;
1211 gap: 12px;
1212 padding: 8px 16px;
1213 border-top: 1px solid var(--border-muted);
1214 font-size: 14px;
1215}
1216
1217.commit-list li:first-child {
1218 border-top: 0;
1219}
1220
1221.commit-list li:hover {
1222 background: var(--bg-subtle);
1223}
1224
1225.commit-subject {
1226 flex: 1;
1227 min-width: 0;
1228 overflow: hidden;
1229 text-overflow: ellipsis;
1230 white-space: nowrap;
1231}
1232
1233.commit-meta {
1234 color: var(--fg-muted);
1235 font-size: 12px;
1236 white-space: nowrap;
1237}
1238
1239.commit-hash {
1240 display: inline-block;
1241 padding: 0 6px;
1242 background: var(--bg-subtle);
1243 border: 1px solid var(--border);
1244 border-radius: var(--radius);
1245 color: var(--fg-muted);
1246 font-family: var(--font-mono);
1247 font-size: 12px;
1248 font-weight: 400;
1249 line-height: 18px;
1250 white-space: nowrap;
1251}
1252
1253/* ===== Sidebar ===== */
1254
1255.sidebar-title {
1256 margin: 0 0 8px;
1257 font-size: 16px;
1258 font-weight: 600;
1259}
1260
1261.sidebar-desc {
1262 margin: 0 0 12px;
1263 color: var(--fg-muted);
1264 font-size: 14px;
1265 overflow-wrap: anywhere;
1266}
1267
1268.sidebar-facts {
1269 margin: 0;
1270 padding: 0;
1271 list-style: none;
1272}
1273
1274.sidebar-facts li {
1275 display: flex;
1276 align-items: center;
1277 gap: 8px;
1278 margin-top: 6px;
1279 color: var(--fg-muted);
1280 font-size: 12px;
1281}
1282
1283.sidebar-facts .octicon {
1284 flex-shrink: 0;
1285 color: var(--fg-muted);
1286}
1287
1288.sidebar-branches {
1289 margin: 0;
1290 padding: 0;
1291 list-style: none;
1292}
1293
1294.sidebar-branches li {
1295 margin: 0;
1296}
1297
1298.sidebar-branches a,
1299.sidebar-branches .branch-current {
1300 display: flex;
1301 align-items: center;
1302 gap: 8px;
1303 min-width: 0;
1304 padding: 6px 8px;
1305 margin: 0 -8px;
1306 border-radius: var(--radius);
1307 color: var(--fg);
1308 font-size: 14px;
1309 text-decoration: none;
1310}
1311
1312.sidebar-branches a:hover {
1313 background: var(--bg-subtle);
1314 text-decoration: none;
1315}
1316
1317.sidebar-branches li span,
1318.sidebar-branches li a {
1319 overflow: hidden;
1320 text-overflow: ellipsis;
1321 white-space: nowrap;
1322}
1323
1324.sidebar-releases {
1325 margin: 0 0 8px;
1326 padding: 0;
1327 list-style: none;
1328}
1329
1330.sidebar-releases li {
1331 display: flex;
1332 align-items: center;
1333 gap: 8px;
1334 min-width: 0;
1335 padding: 4px 0;
1336 font-size: 14px;
1337}
1338
1339.sidebar-releases li a {
1340 display: inline-flex;
1341 align-items: center;
1342 gap: 6px;
1343 min-width: 0;
1344 color: var(--fg);
1345 text-decoration: none;
1346}
1347
1348.sidebar-releases li a:hover {
1349 color: var(--accent);
1350 text-decoration: underline;
1351}
1352
1353.sidebar-releases .octicon {
1354 flex-shrink: 0;
1355 color: var(--fg-muted);
1356}
1357
1358.sidebar-release-tag {
1359 overflow: hidden;
1360 font-family: var(--font-mono);
1361 font-size: 12px;
1362 text-overflow: ellipsis;
1363 white-space: nowrap;
1364}
1365
1366.sidebar-release-date {
1367 flex-shrink: 0;
1368 margin-left: auto;
1369 color: var(--fg-muted);
1370 font-size: 12px;
1371 white-space: nowrap;
1372}
1373
1374.sidebar-more {
1375 font-size: 12px;
1376}
1377
1378.branch-current {
1379 background: var(--accent-subtle);
1380 color: var(--accent) !important;
1381 font-weight: 600;
1382}
1383
1384.branch-current .octicon {
1385 color: var(--accent);
1386}
1387
1388/* ===== Clone field ===== */
1389
1390.clone-field {
1391 display: flex;
1392 align-items: stretch;
1393}
1394
1395.clone-field .form-control {
1396 flex: 1 1 auto;
1397 min-width: 0;
1398 background: var(--bg-subtle);
1399 border-radius: var(--radius) 0 0 var(--radius);
1400 color: var(--fg);
1401 font-family: var(--font-mono);
1402 font-size: 12px;
1403}
1404
1405.clone-field .btn {
1406 flex-shrink: 0;
1407 border-left: 0;
1408 border-radius: 0 var(--radius) var(--radius) 0;
1409}
1410
1411.clone-copy {
1412 min-width: 34px;
1413 padding: 5px 9px;
1414}
1415
1416/* ===== Empty repository ===== */
1417
1418.empty-repo {
1419 padding: 40px 24px;
1420 text-align: center;
1421}
1422
1423.empty-repo-icon {
1424 margin-bottom: 12px;
1425 color: var(--fg-muted);
1426}
1427
1428.empty-repo h2 {
1429 margin: 0 0 8px;
1430 font-size: 20px;
1431 font-weight: 600;
1432}
1433
1434.empty-repo p {
1435 margin: 0 auto;
1436 color: var(--fg-muted);
1437}
1438
1439.empty-repo-clone {
1440 max-width: 560px;
1441 margin: 24px auto 16px;
1442}
1443
1444.empty-repo-guide {
1445 max-width: 640px;
1446 margin: 0 auto;
1447 text-align: left;
1448}
1449
1450/* ===== Forms ===== */
1451
1452.form-group {
1453 margin-bottom: 16px;
1454}
1455
1456.form-group:last-child {
1457 margin-bottom: 0;
1458}
1459
1460.form-group > label {
1461 display: block;
1462 margin-bottom: 8px;
1463 color: var(--fg);
1464 font-size: 14px;
1465 font-weight: 400;
1466}
1467
1468.form-control {
1469 width: 100%;
1470 min-height: 32px;
1471 padding: 5px 12px;
1472 background: var(--bg);
1473 border: 1px solid var(--border);
1474 border-radius: var(--radius);
1475 color: var(--fg);
1476 font-family: inherit;
1477 font-size: 14px;
1478 line-height: 20px;
1479 outline: none;
1480 box-shadow: var(--input-shadow);
1481 transition: border-color 0.2s, box-shadow 0.2s;
1482}
1483
1484.form-control:focus {
1485 border-color: var(--accent);
1486 box-shadow: 0 0 0 3px var(--focus-ring);
1487}
1488
1489.form-control::placeholder {
1490 color: var(--fg-muted);
1491}
1492
1493textarea.form-control {
1494 min-height: 80px;
1495 resize: vertical;
1496}
1497
1498.form-hint {
1499 margin: 4px 0 0;
1500 color: var(--fg-muted);
1501 font-size: 12px;
1502}
1503
1504.form-hint-inline {
1505 display: block;
1506 margin-top: 2px;
1507}
1508
1509.checkbox-label {
1510 display: flex !important;
1511 align-items: flex-start;
1512 gap: 8px;
1513 font-weight: 400 !important;
1514 cursor: pointer;
1515}
1516
1517.checkbox-label input[type="checkbox"] {
1518 width: 13px;
1519 height: 13px;
1520 margin: 3px 0 0;
1521 accent-color: var(--success-emphasis);
1522}
1523
1524.form-actions {
1525 display: flex;
1526 align-items: center;
1527 gap: 8px;
1528 flex-wrap: wrap;
1529}
1530
1531.input-group {
1532 display: flex;
1533 align-items: stretch;
1534}
1535
1536.input-group-prefix {
1537 display: inline-flex;
1538 align-items: center;
1539 padding: 5px 12px;
1540 background: var(--bg-subtle);
1541 border: 1px solid var(--border);
1542 border-right: 0;
1543 border-radius: var(--radius) 0 0 var(--radius);
1544 color: var(--fg-muted);
1545 font-size: 14px;
1546 white-space: nowrap;
1547}
1548
1549.input-group .form-control {
1550 border-radius: 0 var(--radius) var(--radius) 0;
1551}
1552
1553.repo-create-form {
1554 max-width: 768px;
1555}
1556
1557/* ===== Auth ===== */
1558
1559body:has(.auth-page) {
1560 background: var(--bg-subtle);
1561}
1562
1563.auth-page {
1564 max-width: 340px;
1565 margin: 40px auto 24px;
1566}
1567
1568.auth-page-wide {
1569 max-width: 420px;
1570}
1571
1572.auth-logo {
1573 display: flex;
1574 justify-content: center;
1575 margin-bottom: 24px;
1576 color: var(--fg);
1577}
1578
1579.auth-title {
1580 margin: 0 0 16px;
1581 font-size: 24px;
1582 font-weight: 300;
1583 line-height: 1.25;
1584 letter-spacing: -0.5px;
1585 text-align: center;
1586}
1587
1588.auth-card {
1589 padding: 16px;
1590 background: var(--bg);
1591 border: 1px solid var(--border);
1592 border-radius: var(--radius);
1593 box-shadow: var(--shadow-small);
1594}
1595
1596.auth-card-alt {
1597 margin-top: 16px;
1598 text-align: center;
1599 font-size: 14px;
1600 font-weight: 400;
1601}
1602
1603.auth-card .btn-block {
1604 margin-top: 8px;
1605}
1606
1607/* ===== Avatars ===== */
1608
1609.avatar {
1610 display: inline-flex;
1611 align-items: center;
1612 justify-content: center;
1613 flex-shrink: 0;
1614 overflow: hidden;
1615 border-radius: 50%;
1616 background: var(--neutral-subtle);
1617 color: var(--fg);
1618 font-weight: 600;
1619 line-height: 1;
1620 text-transform: uppercase;
1621}
1622
1623.avatar-sm {
1624 width: 24px;
1625 height: 24px;
1626 font-size: 11px;
1627}
1628
1629.avatar-md {
1630 width: 32px;
1631 height: 32px;
1632 font-size: 14px;
1633}
1634
1635.avatar-lg {
1636 width: 64px;
1637 height: 64px;
1638 font-size: 28px;
1639}
1640
1641.avatar-xl {
1642 width: 100%;
1643 max-width: 296px;
1644 aspect-ratio: 1 / 1;
1645 border: 1px solid var(--border);
1646 font-size: 80px;
1647 font-weight: 300;
1648}
1649
1650/* ===== Dashboard ===== */
1651
1652.dashboard-layout {
1653 display: grid;
1654 grid-template-columns: 296px minmax(0, 1fr);
1655 gap: 24px;
1656 align-items: start;
1657}
1658
1659.dashboard-main {
1660 min-width: 0;
1661}
1662
1663.dashboard-sidebar {
1664 display: flex;
1665 flex-direction: column;
1666 gap: 16px;
1667 min-width: 0;
1668}
1669
1670.sidebar-section {
1671 min-width: 0;
1672}
1673
1674.sidebar-section-header {
1675 display: flex;
1676 align-items: center;
1677 justify-content: space-between;
1678 gap: 8px;
1679 margin-bottom: 8px;
1680}
1681
1682.sidebar-section-header h2 {
1683 font-size: 14px;
1684 font-weight: 600;
1685}
1686
1687.sidebar-new-link {
1688 display: inline-flex;
1689 align-items: center;
1690 justify-content: center;
1691 width: 20px;
1692 height: 20px;
1693 border: 1px solid var(--btn-border);
1694 border-radius: var(--radius);
1695 background: var(--btn-bg);
1696 color: var(--fg);
1697 font-size: 14px;
1698 line-height: 1;
1699 text-decoration: none;
1700}
1701
1702.sidebar-new-link:hover {
1703 background: var(--btn-hover-bg);
1704 text-decoration: none;
1705}
1706
1707.sidebar-repo-list {
1708 margin: 0;
1709 padding: 0;
1710 list-style: none;
1711}
1712
1713.sidebar-repo-list li a {
1714 display: flex;
1715 align-items: center;
1716 gap: 8px;
1717 min-width: 0;
1718 padding: 4px 0;
1719 color: var(--fg);
1720 font-size: 14px;
1721 text-decoration: none;
1722}
1723
1724.sidebar-repo-list li a:hover .sidebar-repo-name {
1725 color: var(--accent);
1726 text-decoration: underline;
1727}
1728
1729.sidebar-repo-avatar {
1730 display: inline-flex;
1731 align-items: center;
1732 justify-content: center;
1733 flex-shrink: 0;
1734 width: 16px;
1735 height: 16px;
1736 border: 1px solid var(--border);
1737 border-radius: 3px;
1738 background: var(--bg-subtle);
1739 color: var(--fg-muted);
1740 font-size: 10px;
1741 font-weight: 600;
1742}
1743
1744.sidebar-repo-name {
1745 overflow: hidden;
1746 text-overflow: ellipsis;
1747 white-space: nowrap;
1748}
1749
1750.sidebar-user {
1751 display: flex;
1752 align-items: center;
1753 gap: 8px;
1754}
1755
1756.sidebar-user-info {
1757 min-width: 0;
1758}
1759
1760.sidebar-user-name {
1761 color: var(--fg);
1762 font-weight: 600;
1763}
1764
1765/* ===== Repo lists ===== */
1766
1767.repo-list {
1768 margin: 0;
1769 padding: 0;
1770 list-style: none;
1771}
1772
1773.repo-list-item {
1774 display: flex;
1775 align-items: flex-start;
1776 gap: 16px;
1777 padding: 16px;
1778 border-top: 1px solid var(--border-muted);
1779}
1780
1781.repo-list-item:first-child {
1782 border-top: 0;
1783}
1784
1785.repo-list-item:hover {
1786 background: var(--bg-subtle);
1787}
1788
1789.repo-list-icon {
1790 flex-shrink: 0;
1791 margin-top: 2px;
1792 color: var(--fg-muted);
1793}
1794
1795.repo-list-body {
1796 flex: 1;
1797 min-width: 0;
1798}
1799
1800.repo-list-title {
1801 display: flex;
1802 align-items: center;
1803 flex-wrap: wrap;
1804 gap: 8px;
1805 font-size: 16px;
1806 line-height: 1.25;
1807}
1808
1809.repo-list-title a {
1810 color: var(--accent);
1811 font-weight: 600;
1812}
1813
1814.repo-list-title .muted {
1815 font-weight: 400;
1816}
1817
1818.repo-list-desc {
1819 margin: 4px 0 0;
1820 color: var(--fg-muted);
1821 font-size: 14px;
1822 overflow-wrap: anywhere;
1823}
1824
1825.repo-list-meta {
1826 display: flex;
1827 align-items: center;
1828 flex-wrap: wrap;
1829 gap: 16px;
1830 margin-top: 8px;
1831 color: var(--fg-muted);
1832 font-size: 12px;
1833}
1834
1835.repo-list-action {
1836 flex-shrink: 0;
1837}
1838
1839/* ===== Tables ===== */
1840
1841.data-table {
1842 width: 100%;
1843 border-collapse: separate;
1844 border-spacing: 0;
1845 font-size: 14px;
1846}
1847
1848.data-table th {
1849 padding: 8px 16px;
1850 background: var(--bg-subtle);
1851 border-bottom: 1px solid var(--border);
1852 color: var(--fg-muted);
1853 font-size: 12px;
1854 font-weight: 600;
1855 text-align: left;
1856 white-space: nowrap;
1857}
1858
1859.data-table td {
1860 padding: 8px 16px;
1861 border-top: 1px solid var(--border-muted);
1862 vertical-align: middle;
1863}
1864
1865.data-table tbody tr:first-child td {
1866 border-top: 0;
1867}
1868
1869.data-table tbody tr:hover {
1870 background: var(--bg-subtle);
1871}
1872
1873.build-link {
1874 font-family: var(--font-mono);
1875 font-size: 12px;
1876}
1877
1878.branch-label {
1879 display: inline-flex;
1880 align-items: center;
1881 gap: 6px;
1882}
1883
1884/* ===== Build pages ===== */
1885
1886.build-summary + .flash,
1887.build-summary + .log-box,
1888.flash + .log-box {
1889 margin-top: 16px;
1890}
1891
1892.build-summary-header {
1893 gap: 12px;
1894}
1895
1896.build-title {
1897 display: flex;
1898 align-items: center;
1899 flex-wrap: wrap;
1900 gap: 8px;
1901}
1902
1903.build-actions {
1904 display: flex;
1905 align-items: center;
1906 flex-wrap: wrap;
1907 gap: 8px;
1908}
1909
1910.build-meta {
1911 display: flex;
1912 align-items: center;
1913 flex-wrap: wrap;
1914 gap: 16px;
1915 color: var(--fg-muted);
1916 font-size: 12px;
1917}
1918
1919.log-box {
1920 overflow: hidden;
1921}
1922
1923.build-log {
1924 max-height: 640px;
1925 margin: 0;
1926 padding: 16px;
1927 overflow: auto;
1928 background: var(--log-bg);
1929 color: var(--log-fg);
1930 font-family: var(--font-mono);
1931 font-size: 12px;
1932 line-height: 20px;
1933 white-space: pre-wrap;
1934 word-break: break-word;
1935 border-radius: 0 0 var(--radius) var(--radius);
1936}
1937
1938/* ===== File view ===== */
1939
1940.file-view {
1941 overflow: hidden;
1942}
1943
1944.file-box-header {
1945 display: flex;
1946 align-items: center;
1947 justify-content: space-between;
1948 gap: 12px;
1949 padding: 8px 16px;
1950 background: var(--bg-subtle);
1951 border-bottom: 1px solid var(--border);
1952 border-radius: var(--radius) var(--radius) 0 0;
1953 font-size: 12px;
1954}
1955
1956.file-box-path {
1957 display: flex;
1958 align-items: center;
1959 gap: 8px;
1960 min-width: 0;
1961 overflow: hidden;
1962 text-overflow: ellipsis;
1963 white-space: nowrap;
1964}
1965
1966.file-box-path .octicon {
1967 color: var(--fg-muted);
1968}
1969
1970.file-box-actions {
1971 display: flex;
1972 align-items: center;
1973 flex-shrink: 0;
1974 gap: 12px;
1975}
1976
1977.blob-wrapper {
1978 overflow: auto;
1979 background: var(--bg);
1980 border-radius: 0 0 var(--radius) var(--radius);
1981}
1982
1983.blob-code {
1984 width: 100%;
1985 border-collapse: collapse;
1986 font-family: var(--font-mono);
1987 font-size: 12px;
1988 line-height: 20px;
1989 tab-size: 4;
1990}
1991
1992.blob-code td {
1993 padding: 0;
1994}
1995
1996.blob-num {
1997 width: 1%;
1998 min-width: 50px;
1999 padding: 0 10px !important;
2000 background: var(--bg);
2001 border-right: 1px solid var(--border-muted);
2002 color: var(--fg-muted);
2003 text-align: right;
2004 vertical-align: top;
2005 user-select: none;
2006 -webkit-user-select: none;
2007}
2008
2009.blob-code-cell {
2010 padding: 0 10px !important;
2011 background: var(--bg);
2012 vertical-align: top;
2013 white-space: pre;
2014}
2015
2016.blob-code-inner {
2017 white-space: pre;
2018}
2019
2020/* подсветка синтаксиса (highlight.js) внутри таблицы строк;
2021 фон даёт строка таблицы, поэтому .hljs здесь без своего фона */
2022.blob-code-inner.hljs-highlighted {
2023 color: var(--fg);
2024}
2025
2026.blob-code-inner .hljs-comment,
2027.blob-code-inner .hljs-quote {
2028 font-style: italic;
2029}
2030
2031.blob-code tr:hover .blob-num,
2032.blob-code tr:hover .blob-code-cell {
2033 background: var(--bg-subtle);
2034}
2035
2036/* ===== Profile ===== */
2037
2038.profile-layout {
2039 display: grid;
2040 grid-template-columns: 296px minmax(0, 1fr);
2041 gap: 24px;
2042 align-items: start;
2043}
2044
2045.profile-sidebar {
2046 display: flex;
2047 flex-direction: column;
2048 gap: 8px;
2049 min-width: 0;
2050}
2051
2052.profile-name {
2053 margin: 8px 0 0;
2054 font-size: 24px;
2055 font-weight: 600;
2056 line-height: 1.25;
2057}
2058
2059.profile-login {
2060 font-size: 20px;
2061 font-weight: 300;
2062 line-height: 1.25;
2063}
2064
2065.profile-meta {
2066 display: flex;
2067 align-items: center;
2068 gap: 8px;
2069 margin: 8px 0;
2070 color: var(--fg-muted);
2071 font-size: 14px;
2072}
2073
2074.profile-main {
2075 min-width: 0;
2076}
2077
2078/* ===== Code snippets and empty states ===== */
2079
2080.mini-code {
2081 margin: 0;
2082 padding: 12px;
2083 overflow-x: auto;
2084 background: var(--bg-subtle);
2085 border: 1px solid var(--border);
2086 border-radius: var(--radius);
2087 color: var(--fg);
2088 font-family: var(--font-mono);
2089 font-size: 12px;
2090 line-height: 20px;
2091 white-space: pre-wrap;
2092 overflow-wrap: anywhere;
2093}
2094
2095.empty-state {
2096 padding: 40px 16px;
2097 color: var(--fg-muted);
2098 text-align: center;
2099}
2100
2101.empty-state > svg {
2102 margin-bottom: 12px;
2103 color: var(--fg-muted);
2104}
2105
2106.empty-state h3 {
2107 margin: 0 0 8px;
2108 color: var(--fg);
2109 font-size: 16px;
2110 font-weight: 600;
2111}
2112
2113.empty-state p {
2114 margin: 0 0 16px;
2115 font-size: 14px;
2116}
2117
2118/* ===== Releases ===== */
2119
2120.release-list {
2121 display: flex;
2122 flex-direction: column;
2123 gap: 16px;
2124 margin: 0;
2125 padding: 0;
2126 list-style: none;
2127}
2128
2129.release-item {
2130 display: flex;
2131 align-items: flex-start;
2132 justify-content: space-between;
2133 gap: 16px;
2134 padding: 16px;
2135}
2136
2137.release-main {
2138 flex: 1;
2139 min-width: 0;
2140}
2141
2142.release-head {
2143 display: flex;
2144 align-items: center;
2145 flex-wrap: wrap;
2146 gap: 8px;
2147}
2148
2149.release-tag {
2150 display: inline-flex;
2151 align-items: center;
2152 padding: 0 8px;
2153 border: 1px solid var(--success-border);
2154 border-radius: 2em;
2155 background: var(--success-subtle);
2156 color: var(--success-fg);
2157 font-family: var(--font-mono);
2158 font-size: 12px;
2159 font-weight: 600;
2160 line-height: 20px;
2161}
2162
2163.release-title {
2164 color: var(--fg);
2165 font-size: 16px;
2166 font-weight: 600;
2167 text-decoration: none;
2168}
2169
2170.release-title:hover {
2171 color: var(--accent);
2172 text-decoration: underline;
2173}
2174
2175.release-date {
2176 margin-top: 4px;
2177 color: var(--fg-muted);
2178 font-size: 12px;
2179}
2180
2181.release-body {
2182 margin-top: 12px;
2183 padding-top: 12px;
2184 border-top: 1px solid var(--border-muted);
2185 color: var(--fg);
2186 font-size: 14px;
2187 line-height: 1.6;
2188 white-space: pre-wrap;
2189 overflow-wrap: anywhere;
2190}
2191
2192.release-delete {
2193 flex: none;
2194}
2195
2196.release-empty {
2197 margin-bottom: 16px;
2198}
2199
2200.release-form {
2201 max-width: 760px;
2202}
2203
2204/* ===== Responsive ===== */
2205
2206@media (max-width: 1012px) {
2207 .container {
2208 padding: 0 24px;
2209 }
2210
2211 .repo-layout,
2212 .dashboard-layout,
2213 .profile-layout {
2214 grid-template-columns: 1fr;
2215 }
2216
2217 .dashboard-sidebar {
2218 order: 2;
2219 }
2220
2221 .dashboard-main {
2222 order: 1;
2223 }
2224
2225 .avatar-xl {
2226 width: 128px;
2227 height: 128px;
2228 max-width: 128px;
2229 font-size: 48px;
2230 aspect-ratio: auto;
2231 }
2232}
2233
2234@media (max-width: 768px) {
2235 .container {
2236 padding: 0 16px;
2237 }
2238
2239 .header-inner {
2240 height: auto;
2241 min-height: 56px;
2242 flex-wrap: wrap;
2243 gap: 8px;
2244 padding-top: 8px;
2245 padding-bottom: 8px;
2246 }
2247
2248 .header-logo {
2249 order: 0;
2250 }
2251
2252 .header-user {
2253 order: 1;
2254 margin-left: auto;
2255 }
2256
2257 .header-search {
2258 order: 2;
2259 flex: 1 0 100%;
2260 max-width: none;
2261 margin-left: 0;
2262 }
2263
2264 .header-nav {
2265 order: 3;
2266 width: 100%;
2267 overflow-x: auto;
2268 scrollbar-width: none;
2269 }
2270
2271 .header-nav::-webkit-scrollbar {
2272 display: none;
2273 }
2274
2275 .file-browser-head {
2276 gap: 6px;
2277 padding: 8px 12px;
2278 }
2279
2280 .head-commit-subject {
2281 max-width: 40vw;
2282 }
2283
2284 .repo-toolbar {
2285 gap: 8px;
2286 }
2287
2288 .go-to-file {
2289 order: 3;
2290 }
2291
2292 .go-to-file input {
2293 width: 160px;
2294 }
2295
2296 .repo-tabs a {
2297 padding: 8px 12px;
2298 }
2299
2300 .repo-list-item {
2301 flex-wrap: wrap;
2302 }
2303
2304 .repo-list-action {
2305 width: 100%;
2306 margin-left: 32px;
2307 }
2308
2309 .footer-inner {
2310 align-items: flex-start;
2311 flex-direction: column;
2312 }
2313}
2314
2315@media (max-width: 544px) {
2316 .page-heading h1 {
2317 font-size: 20px;
2318 }
2319
2320 .repo-heading-title {
2321 font-size: 18px;
2322 }
2323
2324 .repo-heading {
2325 gap: 12px;
2326 }
2327
2328 .repo-avatar {
2329 width: 40px;
2330 height: 40px;
2331 font-size: 16px;
2332 }
2333
2334 .file-commit {
2335 display: none;
2336 }
2337
2338 .file-table td,
2339 .file-browser-head {
2340 padding-left: 12px;
2341 padding-right: 12px;
2342 }
2343
2344 .go-to-file input {
2345 width: 132px;
2346 }
2347
2348 .popover {
2349 right: auto;
2350 left: 0;
2351 width: min(356px, calc(100vw - 32px));
2352 }
2353
2354 .repo-list-item {
2355 gap: 12px;
2356 padding: 12px;
2357 }
2358
2359 .repo-list-action {
2360 margin-left: 28px;
2361 }
2362
2363 .file-size {
2364 display: none;
2365 }
2366
2367 .header-nav a,
2368 .header-link,
2369 .header-link-button {
2370 padding: 6px 6px;
2371 }
2372
2373 .auth-page {
2374 margin-top: 24px;
2375 }
2376
2377 .release-item {
2378 flex-direction: column;
2379 }
2380
2381 .release-delete {
2382 align-self: flex-end;
2383 }
2384}