| @@ -95,7 +95,7 @@ |
| 95 | --bad: #fa4d56; |
95 | --bad: #fa4d56; |
| 96 | --done: #a56eff; |
96 | --done: #a56eff; |
| 97 | --neutral: #a8a8a8; |
97 | --neutral: #a8a8a8; |
| 98 | --code-bg: #1e1e1e; |
98 | --code-bg: #131313; |
| 99 | --shell-line: #393939; |
99 | --shell-line: #393939; |
| 100 | } |
100 | } |
| 101 | } |
101 | } |
| @@ -133,11 +133,15 @@ code, pre, .code, td.mode, td.size { |
| 133 | margin: 0 auto; |
133 | margin: 0 auto; |
| 134 | padding: 0 var(--sp-5); |
134 | padding: 0 var(--sp-5); |
| 135 | } |
135 | } |
| 136 | /* the shell: an ink bar in both schemes, Carbon UI-shell style */ |
136 | /* the shell: an ink bar in both schemes, Carbon UI-shell style. Scoped |
| 137 | header { |
137 | to the page header so cards with their own <header> stay untouched. */ |
| |
138 | body > header { |
| 138 | background: var(--shell-bg); |
139 | background: var(--shell-bg); |
| 139 | border-bottom: 1px solid var(--shell-line); |
140 | border-bottom: 1px solid var(--shell-line); |
| 140 | padding: 0; |
141 | padding: 0; |
| |
142 | position: sticky; |
| |
143 | top: 0; |
| |
144 | z-index: 30; |
| 141 | } |
145 | } |
| 142 | a.site { |
146 | a.site { |
| 143 | font-weight: 600; |
147 | font-weight: 600; |
| @@ -146,6 +150,7 @@ a.site { |
| 146 | display: inline-flex; |
150 | display: inline-flex; |
| 147 | align-items: center; |
151 | align-items: center; |
| 148 | gap: var(--sp-2); |
152 | gap: var(--sp-2); |
| |
153 | padding: 0 var(--sp-4); |
| 149 | } |
154 | } |
| 150 | a.site:hover { text-decoration: none; color: #ffffff; } |
155 | a.site:hover { text-decoration: none; color: #ffffff; } |
| 151 | a.site svg.mark { display: block; } |
156 | a.site svg.mark { display: block; } |
| @@ -155,45 +160,134 @@ nav.topnav { |
| 155 | display: flex; |
160 | display: flex; |
| 156 | align-items: center; |
161 | align-items: center; |
| 157 | gap: 0; |
162 | gap: 0; |
| 158 | min-height: 3rem; |
163 | height: 3rem; |
| 159 | } |
164 | } |
| 160 | nav.topnav .spacer { flex: 1; } |
165 | nav.topnav .spacer { flex: 1; } |
| 161 | nav.topnav > a:not(.site) { |
166 | /* the avatar square is the only nav item in the shell; everything else |
| 162 | color: var(--shell-muted); |
167 | lives in the rail */ |
| |
168 | a.avatar { |
| |
169 | width: 2rem; |
| |
170 | height: 2rem; |
| |
171 | margin-right: var(--sp-3); |
| |
172 | display: inline-flex; |
| |
173 | align-items: center; |
| |
174 | justify-content: center; |
| |
175 | background: var(--accent); |
| |
176 | color: #ffffff; |
| 163 | font-size: var(--fs-2); |
177 | font-size: var(--fs-2); |
| 164 | padding: 0.85rem var(--sp-3); |
178 | font-weight: 600; |
| 165 | line-height: 1; |
179 | flex: none; |
| |
180 | } |
| |
181 | a.avatar:hover { text-decoration: none; filter: brightness(1.12); } |
| |
182 | a.avatar.guest { background: #393939; color: #f4f4f4; } |
| |
183 | |
| |
184 | /* the rail: persistent navigation, global links first, repo sections |
| |
185 | below them, the signed-in user pinned to the bottom */ |
| |
186 | .shell { display: flex; flex: 1; align-items: stretch; } |
| |
187 | .siderail { |
| |
188 | flex: none; |
| |
189 | width: 13.5rem; |
| |
190 | background: var(--surface); |
| |
191 | border-right: 1px solid var(--line); |
| |
192 | position: sticky; |
| |
193 | top: 3rem; |
| |
194 | height: calc(100vh - 3rem); |
| |
195 | display: flex; |
| |
196 | flex-direction: column; |
| |
197 | } |
| |
198 | .railmain { flex: 1; overflow-y: auto; padding: var(--sp-3) 0; } |
| |
199 | .railfoot { |
| |
200 | flex: none; |
| |
201 | border-top: 1px solid var(--line); |
| |
202 | padding: var(--sp-2) 0; |
| |
203 | background: var(--surface); |
| |
204 | } |
| |
205 | .siderail a, .siderail button.linklike { |
| |
206 | display: flex; |
| |
207 | align-items: center; |
| |
208 | gap: var(--sp-2); |
| |
209 | width: 100%; |
| |
210 | text-align: left; |
| |
211 | color: var(--fg); |
| |
212 | font-size: var(--fs-2); |
| |
213 | padding: 0.4rem var(--sp-4); |
| |
214 | border-left: 3px solid transparent; |
| |
215 | line-height: 1.35; |
| |
216 | } |
| |
217 | .siderail a:hover, .siderail button.linklike:hover { |
| |
218 | background: var(--hover); |
| |
219 | text-decoration: none; |
| |
220 | color: var(--fg); |
| |
221 | } |
| |
222 | .siderail a.active { |
| |
223 | border-left-color: var(--accent); |
| |
224 | background: var(--hover); |
| |
225 | font-weight: 600; |
| |
226 | } |
| |
227 | .siderail .glabel { |
| |
228 | display: block; |
| |
229 | font-size: var(--fs-0); |
| |
230 | color: var(--muted); |
| |
231 | letter-spacing: 0.04em; |
| |
232 | padding: 0 var(--sp-4); |
| |
233 | margin: var(--sp-4) 0 var(--sp-1); |
| 166 | } |
234 | } |
| 167 | nav.topnav > a:not(.site):hover { color: #ffffff; background: #353535; text-decoration: none; } |
235 | .siderail .glabel:not(.sub) { |
| 168 | nav.topnav a.navuser { |
236 | color: var(--fg); |
| 169 | font-weight: 600; |
237 | font-weight: 600; |
| |
238 | border-top: 1px solid var(--line); |
| |
239 | padding-top: var(--sp-3); |
| |
240 | overflow-wrap: anywhere; |
| |
241 | } |
| |
242 | .siderail .glabel.sub { margin-top: var(--sp-2); } |
| |
243 | .siderail .railuser { font-weight: 600; } |
| |
244 | .siderail .avatar.sm { |
| |
245 | width: 1.25rem; |
| |
246 | height: 1.25rem; |
| |
247 | margin: 0; |
| |
248 | font-size: var(--fs-0); |
| |
249 | background: var(--accent); |
| 170 | color: #ffffff; |
250 | color: #ffffff; |
| 171 | box-shadow: inset 0 -3px 0 #0f62fe; |
| |
| 172 | } |
251 | } |
| 173 | nav.topnav button.linklike { color: var(--shell-muted); padding: 0.85rem var(--sp-3); } |
| |
| 174 | nav.topnav button.linklike:hover { color: #ffffff; background: #353535; text-decoration: none; } |
| |
| 175 | main.container { |
252 | main.container { |
| 176 | width: 100%; |
253 | width: 100%; |
| 177 | padding-top: var(--sp-3); |
254 | min-width: 0; |
| |
255 | flex: 1; |
| |
256 | margin: 0; |
| |
257 | max-width: 66rem; |
| |
258 | padding-top: var(--sp-4); |
| 178 | padding-bottom: var(--sp-6); |
259 | padding-bottom: var(--sp-6); |
| 179 | } |
260 | } |
| 180 | /* repo pages carry a left rail: the repohead spans the top, the sidenav |
261 | @media (max-width: 52rem) { |
| 181 | takes column one, everything after flows in column two. Browsers |
262 | /* the rail folds into a wrapping strip above the content */ |
| 182 | without :has() fall back to single-column flow, which still works. */ |
263 | .shell { display: block; } |
| 183 | main.container:has(> nav.tabs) { |
264 | .siderail { |
| 184 | display: grid; |
265 | width: auto; |
| 185 | grid-template-columns: 11.5rem minmax(0, 1fr); |
266 | height: auto; |
| 186 | column-gap: var(--sp-6); |
267 | position: static; |
| 187 | max-width: 80rem; |
268 | flex-direction: row; |
| 188 | } |
269 | flex-wrap: wrap; |
| 189 | main.container:has(> nav.tabs) > * { grid-column: 2; } |
270 | align-items: center; |
| 190 | main.container:has(> nav.tabs) > .repohead { grid-column: 1 / -1; } |
271 | border-right: none; |
| 191 | main.container:has(> nav.tabs) > nav.tabs { |
272 | border-bottom: 1px solid var(--line); |
| 192 | grid-column: 1; |
273 | } |
| 193 | grid-row: 2 / span 99; |
274 | .railmain, .railfoot { |
| 194 | align-self: start; |
275 | display: flex; |
| 195 | position: sticky; |
276 | flex-wrap: wrap; |
| 196 | top: var(--sp-4); |
277 | align-items: center; |
| |
278 | overflow: visible; |
| |
279 | padding: var(--sp-1) var(--sp-2); |
| |
280 | border-top: none; |
| |
281 | } |
| |
282 | .railmain { flex: 1 1 auto; } |
| |
283 | .siderail a, .siderail button.linklike { |
| |
284 | width: auto; |
| |
285 | border-left: none; |
| |
286 | border-bottom: 3px solid transparent; |
| |
287 | padding: var(--sp-1) var(--sp-2); |
| |
288 | } |
| |
289 | .siderail a.active { border-left: none; border-bottom-color: var(--accent); background: none; } |
| |
290 | .siderail .glabel { display: none; } |
| 197 | } |
291 | } |
| 198 | |
292 | |
| 199 | /* tables */ |
293 | /* tables */ |
| @@ -261,8 +355,8 @@ nav.tabs a.active { |
| 261 | |
355 | |
| 262 | .clone { color: var(--muted); font-size: var(--fs-2); } |
356 | .clone { color: var(--muted); font-size: var(--fs-2); } |
| 263 | .clone code { |
357 | .clone code { |
| 264 | background: var(--surface); |
358 | background: var(--code-bg); |
| 265 | border: 1px solid var(--faint); |
359 | border: 1px solid var(--line); |
| 266 | padding: 0.15rem 0.5rem; |
360 | padding: 0.15rem 0.5rem; |
| 267 | border-radius: var(--r-sm); |
361 | border-radius: var(--r-sm); |
| 268 | } |
362 | } |
| @@ -507,7 +601,7 @@ a.memberchip .role { color: var(--muted); } |
| 507 | .landing .lede { font-size: var(--fs-4); color: var(--muted); line-height: 1.7; margin: 0 0 var(--sp-4); } |
601 | .landing .lede { font-size: var(--fs-4); color: var(--muted); line-height: 1.7; margin: 0 0 var(--sp-4); } |
| 508 | pre.quickstart { |
602 | pre.quickstart { |
| 509 | background: var(--code-bg); |
603 | background: var(--code-bg); |
| 510 | border: 1px solid var(--faint); |
604 | border: 1px solid var(--line); |
| 511 | border-radius: var(--r-md); |
605 | border-radius: var(--r-md); |
| 512 | padding: var(--sp-3) var(--sp-4); |
606 | padding: var(--sp-3) var(--sp-4); |
| 513 | overflow-x: auto; |
607 | overflow-x: auto; |
| @@ -540,7 +634,7 @@ button.linklike:hover { text-decoration: underline; filter: none; } |
| 540 | } |
634 | } |
| 541 | /* Highlighting is class-based with a palette per scheme, so code blocks |
635 | /* Highlighting is class-based with a palette per scheme, so code blocks |
| 542 | follow the site's own colors. */ |
636 | follow the site's own colors. */ |
| 543 | .code { background: var(--code-bg); color: var(--fg); padding: var(--sp-3) var(--sp-4); } |
637 | .code { background: var(--code-bg); color: var(--fg); padding: var(--sp-3) var(--sp-4); border-color: var(--line); } |
| 544 | .code pre { margin: 0; background: transparent !important; } |
638 | .code pre { margin: 0; background: transparent !important; } |
| 545 | @media (prefers-color-scheme: dark) { |
639 | @media (prefers-color-scheme: dark) { |
| 546 | .code { border-color: var(--line); } |
640 | .code { border-color: var(--line); } |
| @@ -550,13 +644,18 @@ button.linklike:hover { text-decoration: underline; filter: none; } |
| 550 | .rendered { max-width: 100%; overflow-wrap: anywhere; } |
644 | .rendered { max-width: 100%; overflow-wrap: anywhere; } |
| 551 | .rendered pre { |
645 | .rendered pre { |
| 552 | background: var(--code-bg); |
646 | background: var(--code-bg); |
| 553 | border: 1px solid var(--faint); |
647 | border: 1px solid var(--line); |
| 554 | padding: var(--sp-3) var(--sp-4); |
648 | padding: var(--sp-3) var(--sp-4); |
| 555 | border-radius: var(--r-md); |
649 | border-radius: var(--r-md); |
| 556 | overflow-x: auto; |
650 | overflow-x: auto; |
| 557 | } |
651 | } |
| 558 | .rendered code { background: var(--code-bg); padding: 0.1rem 0.35rem; border-radius: var(--r-sm); } |
652 | .rendered code { |
| 559 | .rendered pre code { background: transparent; padding: 0; } |
653 | background: var(--code-bg); |
| |
654 | border: 1px solid var(--line); |
| |
655 | padding: 0.05rem 0.3rem; |
| |
656 | border-radius: var(--r-sm); |
| |
657 | } |
| |
658 | .rendered pre code { background: transparent; border: none; padding: 0; } |
| 560 | .rendered blockquote { |
659 | .rendered blockquote { |
| 561 | border-left: 3px solid var(--line); |
660 | border-left: 3px solid var(--line); |
| 562 | margin-left: 0; |
661 | margin-left: 0; |
| @@ -589,7 +688,7 @@ button.linklike:hover { text-decoration: underline; filter: none; } |
| 589 | |
688 | |
| 590 | pre.message { |
689 | pre.message { |
| 591 | background: var(--code-bg); |
690 | background: var(--code-bg); |
| 592 | border: 1px solid var(--faint); |
691 | border: 1px solid var(--line); |
| 593 | padding: var(--sp-3) var(--sp-4); |
692 | padding: var(--sp-3) var(--sp-4); |
| 594 | border-radius: var(--r-md); |
693 | border-radius: var(--r-md); |
| 595 | white-space: pre-wrap; |
694 | white-space: pre-wrap; |
| @@ -614,7 +713,7 @@ details.difffold summary .add { color: var(--ok); } |
| 614 | details.difffold summary .del { color: var(--bad); } |
713 | details.difffold summary .del { color: var(--bad); } |
| 615 | pre.diff { |
714 | pre.diff { |
| 616 | background: var(--code-bg); |
715 | background: var(--code-bg); |
| 617 | border: 1px solid var(--faint); |
716 | border: 1px solid var(--line); |
| 618 | padding: var(--sp-3) var(--sp-4); |
717 | padding: var(--sp-3) var(--sp-4); |
| 619 | border-radius: var(--r-md); |
718 | border-radius: var(--r-md); |
| 620 | overflow-x: auto; |
719 | overflow-x: auto; |
| @@ -721,6 +820,7 @@ article.release { |
| 721 | padding: var(--sp-3) var(--sp-4); |
820 | padding: var(--sp-3) var(--sp-4); |
| 722 | margin: var(--sp-4) 0; |
821 | margin: var(--sp-4) 0; |
| 723 | } |
822 | } |
| |
823 | .releasehead { background: none; border: 0; padding: 0; } |
| 724 | .releasehead h3 { margin: 0 0 var(--sp-1); } |
824 | .releasehead h3 { margin: 0 0 var(--sp-1); } |
| 725 | .releasehead .meta { margin: 0 0 var(--sp-2); } |
825 | .releasehead .meta { margin: 0 0 var(--sp-2); } |
| 726 | table.assets { margin-top: var(--sp-2); } |
826 | table.assets { margin-top: var(--sp-2); } |