[OCaml] Mobile-friendly clone of cgit.
refactor extract repeated colors into :root custom properties
Define 8 color tokens in :root and replace all 40+ hardcoded occurrences: --color-muted, --color-link-hover, --color-hover-bg, --color-surface-raised, --color-border, --color-border-subtle, --color-accent, --color-accent-hover.
lib/static/styles.css
@@ -4,6 +4,16 @@
4
4
--nav-height: 48px;
5
5
--toolbar-height: 52px;
6
6
--target-size: 44px;
7
Added:
8
Added:
/* Color tokens */
9
Added:
--color-muted: #b0b0b0;
10
Added:
--color-link-hover: skyblue;
11
Added:
--color-hover-bg: #252525;
12
Added:
--color-surface-raised: #2a2a2a;
13
Added:
--color-border: #303030;
14
Added:
--color-border-subtle: #3a3a3a;
15
Added:
--color-accent: rgb(194, 79, 30);
16
Added:
--color-accent-hover: rgb(132, 40, 0);
7
17
}
8
18
9
19
body {
@@ -25,7 +35,7 @@
25
35
}
26
36
27
37
a:hover {
28
Removed:
color: skyblue;
38
Added:
color: var(--color-link-hover);
29
39
text-decoration: underline;
30
40
}
31
41
@@ -33,7 +43,7 @@
33
43
li:has(> a:hover),
34
44
span:has(> a:hover),
35
45
dd:has(> a:hover) {
36
Removed:
background-color: #252525;
46
Added:
background-color: var(--color-hover-bg);
37
47
border-radius: 0.25rem;
38
48
}
39
49
@@ -56,12 +66,12 @@
56
66
57
67
#page-header p {
58
68
margin: 0;
59
Removed:
color: #b0b0b0;
69
Added:
color: var(--color-muted);
60
70
}
61
71
62
72
#page-header .subtitle {
63
73
margin: 0;
64
Removed:
color: #b0b0b0;
74
Added:
color: var(--color-muted);
65
75
}
66
76
67
77
.skip-link {
@@ -85,7 +95,7 @@
85
95
}
86
96
87
97
:focus-visible {
88
Removed:
outline: 2px solid skyblue;
98
Added:
outline: 2px solid var(--color-link-hover);
89
99
outline-offset: 2px;
90
100
}
91
101
@@ -230,12 +240,12 @@
230
240
231
241
nav#top ul li[aria-current="page"] {
232
242
border-radius: 0.5rem;
233
Removed:
background-color: rgb(194, 79, 30);
243
Added:
background-color: var(--color-accent);
234
244
}
235
245
236
246
nav#top ul li[aria-current="page"] a:hover {
237
247
border-radius: 0.5rem;
238
Removed:
background-color: rgb(132, 40, 0);
248
Added:
background-color: var(--color-accent-hover);
239
249
color: white;
240
250
text-decoration: none;
241
251
}
@@ -250,12 +260,12 @@
250
260
}
251
261
252
262
#main ul li {
253
Removed:
border: 1px solid #303030;
263
Added:
border: 1px solid var(--color-border);
254
264
}
255
265
256
266
#main .tree-nested li {
257
267
border: none;
258
Removed:
border-top: 1px solid #252525;
268
Added:
border-top: 1px solid var(--color-hover-bg);
259
269
}
260
270
261
271
#main .tree-nested li:first-child {
@@ -278,7 +288,7 @@
278
288
}
279
289
280
290
#main ul li:has(> a:hover) {
281
Removed:
background-color: #252525;
291
Added:
background-color: var(--color-hover-bg);
282
292
}
283
293
284
294
/* Root page layout */
@@ -364,7 +374,7 @@
364
374
text-overflow: ellipsis;
365
375
white-space: nowrap;
366
376
min-width: 0;
367
Removed:
color: #b0b0b0;
377
Added:
color: var(--color-muted);
368
378
font-size: 0.85em;
369
379
}
370
380
@@ -381,7 +391,7 @@
381
391
}
382
392
383
393
#main ul li:has(.commit-title):hover {
384
Removed:
background-color: #252525;
394
Added:
background-color: var(--color-hover-bg);
385
395
}
386
396
387
397
.commit-ago {
@@ -389,7 +399,7 @@
389
399
align-items: center;
390
400
flex-shrink: 0;
391
401
font-size: 0.85em;
392
Removed:
color: #b0b0b0;
402
Added:
color: var(--color-muted);
393
403
white-space: nowrap;
394
404
padding-right: 0.75em;
395
405
}
@@ -400,7 +410,7 @@
400
410
flex-shrink: 0;
401
411
font-family: monospace;
402
412
font-size: 0.85em;
403
Removed:
color: #b0b0b0;
413
Added:
color: var(--color-muted);
404
414
white-space: nowrap;
405
415
padding-right: 0.75em;
406
416
}
@@ -562,7 +572,7 @@
562
572
padding: 0.25em 1em;
563
573
overflow: hidden;
564
574
background-color: #111;
565
Removed:
border-bottom: 1px solid #303030;
575
Added:
border-bottom: 1px solid var(--color-border);
566
576
flex-shrink: 0;
567
577
}
568
578
@@ -575,7 +585,7 @@
575
585
padding: 0.35em 0.9em;
576
586
border: 1px solid #444;
577
587
border-radius: 0.35rem;
578
Removed:
background-color: #2a2a2a;
588
Added:
background-color: var(--color-surface-raised);
579
589
font-weight: 600;
580
590
box-sizing: border-box;
581
591
}
@@ -615,8 +625,8 @@
615
625
width: 1.2em;
616
626
height: 1.2em;
617
627
padding: 0;
618
Removed:
color: #b0b0b0;
619
Removed:
background-color: #3a3a3a;
628
Added:
color: var(--color-muted);
629
Added:
background-color: var(--color-border-subtle);
620
630
text-decoration: none;
621
631
font-size: 0.8em;
622
632
line-height: 1;
@@ -680,7 +690,7 @@
680
690
font-size: 1.1em;
681
691
font-weight: 600;
682
692
color: white;
683
Removed:
background-color: #2a2a2a;
693
Added:
background-color: var(--color-surface-raised);
684
694
box-sizing: border-box;
685
695
}
686
696
@@ -714,7 +724,7 @@
714
724
715
725
.timestamp {
716
726
font-family: monospace;
717
Removed:
color: #b0b0b0;
727
Added:
color: var(--color-muted);
718
728
font-size: 0.85em;
719
729
}
720
730
@@ -730,7 +740,7 @@
730
740
731
741
#blob a.line-anchor,
732
742
.blob a.line-anchor {
733
Removed:
color: #b0b0b0;
743
Added:
color: var(--color-muted);
734
744
text-align: right;
735
745
}
736
746
@@ -742,7 +752,7 @@
742
752
743
753
#blob a.line-anchor:hover,
744
754
.blob a.line-anchor:hover {
745
Removed:
color: skyblue;
755
Added:
color: var(--color-link-hover);
746
756
background-color: inherit;
747
757
text-decoration: none;
748
758
}
@@ -759,7 +769,7 @@
759
769
}
760
770
761
771
.commit-meta dt {
762
Removed:
color: #b0b0b0;
772
Added:
color: var(--color-muted);
763
773
}
764
774
765
775
.commit-meta dd {
@@ -774,7 +784,7 @@
774
784
background: #1e1e1e;
775
785
padding: 0.75em 1em;
776
786
border-radius: 0.25rem;
777
Removed:
border: 1px solid #303030;
787
Added:
border: 1px solid var(--color-border);
778
788
}
779
789
780
790
/* Path pill — breadcrumb trail as a single rounded pill */
@@ -872,8 +882,8 @@
872
882
height: 1.6em;
873
883
font-size: 1.1em;
874
884
font-style: normal;
875
Removed:
color: #b0b0b0;
876
Removed:
background-color: #2a2a2a;
885
Added:
color: var(--color-muted);
886
Added:
background-color: var(--color-surface-raised);
877
887
border-radius: 50%;
878
888
flex-shrink: 0;
879
889
margin-right: 0.5em;
@@ -920,7 +930,7 @@
920
930
}
921
931
922
932
.tree-overflow a {
923
Removed:
color: #b0b0b0;
933
Added:
color: var(--color-muted);
924
934
font-style: italic;
925
935
}
926
936
@@ -932,7 +942,7 @@
932
942
933
943
.readme-inline {
934
944
margin-top: 1.5em;
935
Removed:
border: 1px solid #3a3a3a;
945
Added:
border: 1px solid var(--color-border-subtle);
936
946
border-radius: 0.25rem;
937
947
overflow-x: auto;
938
948
}
@@ -942,8 +952,8 @@
942
952
padding: 0.6em 1em;
943
953
background-color: #242424;
944
954
font-size: 0.9em;
945
Removed:
color: #b0b0b0;
946
Removed:
border-bottom: 1px solid #3a3a3a;
955
Added:
color: var(--color-muted);
956
Added:
border-bottom: 1px solid var(--color-border-subtle);
947
957
}
948
958
949
959
.readme-inline .blob {
@@ -952,13 +962,13 @@
952
962
953
963
.diff-file {
954
964
margin: 1.5em 0;
955
Removed:
border: 1px solid #3a3a3a;
965
Added:
border: 1px solid var(--color-border-subtle);
956
966
border-radius: 0.25rem;
957
967
overflow: hidden;
958
968
}
959
969
960
970
.diff-hunk {
961
Removed:
border-top: 1px solid #3a3a3a;
971
Added:
border-top: 1px solid var(--color-border-subtle);
962
972
}
963
973
964
974
.diff-file-header,
@@ -984,8 +994,8 @@
984
994
}
985
995
986
996
.diff-meta {
987
Removed:
color: #b0b0b0;
988
Removed:
border-top: 1px solid #3a3a3a;
997
Added:
color: var(--color-muted);
998
Added:
border-top: 1px solid var(--color-border-subtle);
989
999
}
990
1000
991
1001
.hunk-header {
@@ -1024,10 +1034,10 @@
1024
1034
1025
1035
.diff-line .line-number {
1026
1036
padding-right: 0.6em;
1027
Removed:
color: #b0b0b0;
1037
Added:
color: var(--color-muted);
1028
1038
text-align: right;
1029
1039
user-select: none;
1030
Removed:
border-right: 1px solid #3a3a3a;
1040
Added:
border-right: 1px solid var(--color-border-subtle);
1031
1041
}
1032
1042
1033
1043
.diff-marker {
@@ -1163,7 +1173,7 @@
1163
1173
right: 0;
1164
1174
z-index: 20;
1165
1175
background-color: black;
1166
Removed:
border-top: 1px solid #303030;
1176
Added:
border-top: 1px solid var(--color-border);
1167
1177
}
1168
1178
1169
1179
#bottom-nav ul {
@@ -1192,17 +1202,17 @@
1192
1202
}
1193
1203
1194
1204
#bottom-nav ul li a:hover {
1195
Removed:
background-color: #252525;
1205
Added:
background-color: var(--color-hover-bg);
1196
1206
text-decoration: none;
1197
1207
}
1198
1208
1199
1209
#bottom-nav ul li[aria-current="page"] {
1200
Removed:
background-color: rgb(194, 79, 30);
1210
Added:
background-color: var(--color-accent);
1201
1211
border-radius: 0.5rem;
1202
1212
}
1203
1213
1204
1214
#bottom-nav ul li[aria-current="page"] a:hover {
1205
Removed:
background-color: rgb(132, 40, 0);
1215
Added:
background-color: var(--color-accent-hover);
1206
1216
color: white;
1207
1217
text-decoration: none;
1208
1218
}