Parent [>]
1*, *::before, *::after { box-sizing: border-box; }
2
3footer {
4  padding: 1rem;
5  margin-top: 2rem;
6  color: var(--secondary);
7  font-size: .875rem;
8  text-align: center;
9}
10
11html { overflow-x: clip; }
12
13body {
14  font-family: var(--font-body);
15  max-width: 860px;
16  margin: 0 auto;
17  padding: 0;
18  background: var(--background);
19  color: var(--primary);
20}
21
22header {
23  padding: .75rem 1rem;
24  margin-bottom: .75rem;
25}
26
27header ul {
28  list-style: none;
29  margin: 0;
30  padding: 0;
31  display: flex;
32  align-items: center;
33  gap: .25rem;
34  font-size: 1.2rem;
35  min-width: 0;
36}
37
38header li {
39  white-space: nowrap;
40  overflow: hidden;
41  text-overflow: ellipsis;
42  min-width: 0;
43}
44
45header li:first-child { flex-shrink: 0; }
46header li:last-child { flex-shrink: 1; }
47
48header li + li::before {
49  content: '/';
50  margin-right: .25rem;
51  color: var(--secondary);
52}
53
54header a {
55  color: var(--primary);
56  text-decoration: none;
57}
58
59header a:hover {
60  color: var(--emphasized);
61  text-decoration: underline;
62  text-underline-offset: 4px;
63}
64
65main > h1, main > p {
66  padding-left: 1rem;
67  padding-right: 1rem;
68}
69
70main > h1 { margin-bottom: .75rem; }
71main > p { margin-top: 0; }
72
73.repo-nav-item {
74  display: flex;
75  align-items: center;
76  gap: 1rem;
77  padding: 0 1rem;
78  min-height: 50px;
79  text-decoration: none;
80  color: var(--primary);
81  font-family: var(--font-mono);
82  border-top: 1px solid var(--secondary);
83  transition: background-color .3s ease-out;
84}
85
86.repo-nav-item + .repo-nav-item { border-top: 1px solid var(--highlight); }
87.repo-nav-item:last-child { border-bottom: 1px solid var(--secondary); }
88.repo-nav-item:active { background-color: var(--highlight); transition: none; }
89.repo-nav-item:hover > span:first-of-type { text-decoration: underline; text-underline-offset: 3px; }
90
91.repo-nav-item-meta {
92  margin-left: auto;
93  color: var(--secondary);
94}
95
96.repo-nav-item-arrow {
97  color: var(--secondary);
98}
99main > article { padding: 0 1rem; }
100
101.repo-list {
102  display: flex;
103  flex-direction: column;
104}
105
106.repo-card {
107  display: flex;
108  flex-direction: column;
109  gap: .5rem;
110  padding: 1rem 1.25rem;
111  text-decoration: none;
112  color: inherit;
113}
114
115.repo-card:hover { background: var(--highlight); }
116
117.repo-name {
118  font-size: 1.1rem;
119  font-weight: 600;
120  color: var(--emphasized);
121}
122
123.repo-desc {
124  font-size: 1rem;
125  color: var(--primary);
126}
127
128.repo-meta {
129  display: flex;
130  justify-content: space-between;
131  color: var(--secondary);
132}
133
134.tag-info {
135  display: grid;
136  grid-template-columns: max-content 1fr;
137  gap: .2rem 1.5rem;
138  font-family: var(--font-mono);
139  margin: 0 1rem 1rem;
140}
141
142.tag-info dt { color: var(--secondary); }
143.tag-info dd { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0; }
144.tag-info a { color: var(--primary); }
145
146.tag-downloads {
147  font-family: var(--font-mono);
148  padding: 0 1rem;
149}
150
151.tag-message {
152  font-family: var(--font-mono);
153  font-size: 1rem;
154  padding: 1rem;
155  margin: 0 1rem 1rem;
156  background: var(--highlight);
157  border-radius: 6px;
158  white-space: pre-wrap;
159  color: var(--primary);
160}
161
162.branch-list, .tag-list { display: flex; flex-direction: column; }
163
164.branch-row, .tag-row {
165  display: flex;
166  justify-content: space-between;
167  align-items: baseline;
168  padding: .75rem 1rem;
169  text-decoration: none;
170  color: inherit;
171  font-family: var(--font-mono);
172}
173
174.branch-row:hover, .tag-row:hover { background: var(--highlight); }
175
176.branch-name,
177.tag-name {
178  overflow: hidden;
179  text-overflow: ellipsis;
180  white-space: nowrap;
181  min-width: 0;
182}
183
184
185.branch-default {
186  color: var(--secondary);
187  margin-right: 1rem;
188}
189
190.branch-date, .tag-date {
191  display: flex;
192  align-items: baseline;
193  flex-shrink: 0;
194  color: var(--secondary);
195  padding-left: 1rem;
196}
197
198.commit-log {
199  display: flex;
200  flex-direction: column;
201}
202
203.commit-row {
204  display: grid;
205  grid-template-columns: 5rem 1fr;
206  grid-template-rows: auto auto;
207  gap: .15rem 1rem;
208  padding: .75rem 1rem;
209  text-decoration: none;
210  color: inherit;
211  font-family: var(--font-mono);
212}
213
214.commit-row:hover { background: var(--highlight); }
215
216.commit-sha {
217  font-family: var(--font-mono);
218  color: var(--secondary);
219  grid-row: 1;
220}
221
222.commit-message {
223  color: var(--primary);
224  grid-row: 1;
225  overflow: hidden;
226  text-overflow: ellipsis;
227  white-space: nowrap;
228}
229
230.commit-meta {
231  display: flex;
232  justify-content: space-between;
233  color: var(--secondary);
234  grid-column: 2;
235  grid-row: 2;
236  min-width: 0;
237}
238
239.commit-meta span:first-child {
240  overflow: hidden;
241  text-overflow: ellipsis;
242  white-space: nowrap;
243  min-width: 0;
244}
245
246.commit-meta span:last-child {
247  flex-shrink: 0;
248  padding-left: 1rem;
249}
250
251.pagination {
252  display: flex;
253  justify-content: space-between;
254  padding: .75rem 1rem;
255}
256
257.pagination a { color: var(--secondary); text-decoration: none; }
258.pagination a:hover { color: var(--primary); }
259
260details {
261  border-top: 1px solid var(--highlight);
262}
263
264details:first-of-type {
265  border-top: 1px solid var(--secondary);
266}
267
268details:last-of-type {
269  border-bottom: 1px solid var(--highlight);
270}
271
272summary {
273  cursor: pointer;
274  display: flex;
275  align-items: center;
276  gap: 1rem;
277  padding: 0 1rem;
278  min-height: 50px;
279  font-family: var(--font-mono);
280  background: var(--highlight);
281}
282
283.summary-icon {
284  width: 1rem;
285  height: 1rem;
286  flex-shrink: 0;
287}
288
289
290details[open] summary {
291  color: var(--emphasized);
292}
293
294summary::after {
295  content: '[+]';
296  color: var(--secondary);
297}
298
299summary:not(:has(span))::after {
300  margin-left: auto;
301}
302
303details[open] summary::after {
304  content: '[−]';
305}
306
307
308summary span {
309  color: var(--secondary);
310  margin-left: auto;
311}
312
313details > *:not(summary) {
314  padding: 0 1rem .75rem;
315  margin-bottom: 0;
316}
317
318details > ul {
319  list-style: none;
320  padding: 0;
321  margin: 0;
322}
323
324details ul li + li {
325  border-top: 1px solid var(--highlight);
326}
327
328details ul li {
329  display: flex;
330  align-items: center;
331  gap: 1rem;
332  min-height: 50px;
333  padding: 0 1rem;
334  color: var(--secondary);
335  font-family: var(--font-mono);
336  font-size: 1rem;
337}
338
339details ul li:has(a), details ul li:has(button) {
340  padding: 0;
341}
342
343details ul li a,
344details ul li button {
345  display: flex;
346  align-items: center;
347  gap: 1rem;
348  padding: 0 1rem;
349  min-height: 50px;
350  width: 100%;
351  text-align: left;
352  text-decoration: none;
353  color: inherit;
354  background: transparent;
355  border: none;
356  cursor: pointer;
357  font-family: var(--font-mono);
358  font-size: 1rem;
359}
360
361details ul li a,
362details ul li button { transition: background-color .3s ease-out; }
363
364details ul li a:active,
365details ul li button:active { background-color: var(--highlight); transition: none; }
366
367details ul li a:hover span:first-child,
368details ul li button:hover span:first-child { text-decoration: underline; text-underline-offset: 3px; }
369
370/* First span grows to fill available space in both link and button rows */
371details ul li a span:first-child,
372details ul li button span:first-child {
373  flex: 1;
374  min-width: 0;
375  overflow: hidden;
376  text-overflow: ellipsis;
377  white-space: nowrap;
378  color: var(--primary);
379}
380
381/* Clone rows: animate URL text on copy, label fixed width on right */
382details ul li button span:first-child { transition: opacity .1s; }
383details ul li button span:nth-child(2) {
384  flex-shrink: 0;
385  min-width: 4rem;
386  text-align: right;
387  color: var(--secondary);
388}
389
390/* Branch/tag rows: remaining spans fixed on the right */
391details ul li a span:not(:first-child) {
392  flex-shrink: 0;
393  color: var(--secondary);
394}
395
396/* Accent colors — specificity matches details ul li a span:first-child */
397details ul li a span.branch-name,
398.branch-name { color: var(--blue); }
399
400details ul li a span.tag-name,
401.tag-name { color: var(--violet); }