chore: updated kepler stylesheet fe0a6341
Steve Simkins · 2026-06-11 16:55 1 file(s) · +97 −84
apps/kepler/static/styles.css +97 −84
25 25
    --add-fg: #FFC98F;
26 26
    --del-fg: #538888;
27 27
    --mono: "Commit Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
28 +
29 +
    /* Type scale. Keep it small; --fs-base covers most UI and all code. */
30 +
    --fs-xs: 11px;
31 +
    --fs-sm: 12px;
32 +
    --fs-base: 13px;
33 +
    --fs-md: 14px;
34 +
    --fs-lg: 15px;
35 +
    --fs-xl: 16px;
28 36
}
29 37
30 38
*, *::before, *::after {
39 47
html {
40 48
    background: var(--bg);
41 49
    color: var(--fg);
42 -
    font-size: 14px;
50 +
    font-size: var(--fs-md);
43 51
    line-height: 1.6;
52 +
    /* Stop iOS Safari / mobile WebKit from inflating text in wide blocks
53 +
       (code tables, diffs). Must stay on html, not body. */
44 54
    -webkit-text-size-adjust: 100%;
55 +
    -moz-text-size-adjust: 100%;
45 56
    text-size-adjust: 100%;
46 57
}
47 58
html::-webkit-scrollbar { display: none; }
71 82
    align-items: baseline;
72 83
    gap: 0.75rem;
73 84
    font-weight: 700;
74 -
    font-size: 16px;
85 +
    font-size: var(--fs-xl);
75 86
    margin-bottom: -1px;
76 87
    padding: 0.5rem 0;
77 88
}
85 96
    border: 1px solid transparent;
86 97
    border-bottom: none;
87 98
    margin-bottom: -1px;
88 -
    font-size: 13px;
99 +
    font-size: var(--fs-base);
89 100
}
90 101
.tab:hover { color: var(--fg); opacity: 1; }
91 102
.tab.active {
103 114
    margin-top: 3rem;
104 115
    padding: 1rem 0;
105 116
    color: var(--fg-dim);
106 -
    font-size: 13px;
117 +
    font-size: var(--fs-base);
107 118
}
108 119
.footer a { color: var(--fg-dim); text-decoration: underline; }
109 120
.footer a:hover { color: var(--fg); }
110 121
111 -
h1 { font-weight: 700; font-size: 18px; margin-bottom: 0.75rem; }
112 -
h2 { font-weight: 700; font-size: 15px; margin-bottom: 0.5rem; }
113 -
h3 { font-weight: 700; font-size: 14px; margin: 1.25rem 0 0.5rem; }
122 +
h1 { font-weight: 700; font-size: var(--fs-xl); margin-bottom: 0.75rem; }
123 +
h2 { font-weight: 700; font-size: var(--fs-lg); margin-bottom: 0.5rem; }
124 +
h3 { font-weight: 700; font-size: var(--fs-md); margin: 1.25rem 0 0.5rem; }
114 125
h3:first-child { margin-top: 0; }
115 126
116 127
/* --- Generic list tables (repo/log/ref) --- */
119 130
    width: 100%;
120 131
    border-collapse: collapse;
121 132
    margin-bottom: 1rem;
122 -
    font-size: 13px;
133 +
    font-size: var(--fs-base);
123 134
}
124 135
.repo-list th, .log-list th, .ref-list th {
125 136
    text-align: left;
126 137
    padding: 0.4rem 0.5rem;
127 138
    color: var(--fg-dim);
128 139
    font-weight: 400;
129 -
    font-size: 12px;
140 +
    font-size: var(--fs-sm);
130 141
    text-transform: uppercase;
131 142
    border-bottom: 1px solid var(--border);
132 143
}
145 156
.author { color: var(--fg-dim); white-space: nowrap; }
146 157
.ref-name { overflow-wrap: anywhere; word-break: break-word; }
147 158
.subject { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
148 -
.size { color: var(--fg-dim); text-align: right; white-space: nowrap; font-size: 12px; }
149 -
150 -
@media (max-width: 720px) { .desktop { display: none; } }
151 -
152 -
@media (max-width: 720px) {
153 -
    .container { padding: 0 0.75rem 3rem; }
154 -
155 -
    .repo-list, .log-list, .ref-list { font-size: 12px; }
156 -
    .repo-list td, .log-list td, .ref-list td,
157 -
    .repo-list th, .log-list th, .ref-list th { padding: 0.4rem 0.3rem; }
158 -
    .log-list .subject, .repo-list .subject { white-space: normal; }
159 -
160 -
    .repo-nav { flex-wrap: wrap; gap: 0.25rem; }
161 -
    .repo-name { flex: 1 1 100%; font-size: 15px; padding: 0.25rem 0; gap: 0.5rem; }
162 -
    .repo-nav .tab:first-of-type { margin-left: 0; }
163 -
    .tab { padding: 0.4rem 0.6rem; }
164 -
165 -
    .repo-head { flex-direction: column; gap: 0.75rem; align-items: stretch; }
166 -
    .clone-toggle { width: 100%; }
167 -
    .clone-menu { left: 0; right: 0; min-width: 0; }
168 -
    .last-commit { flex-wrap: wrap; gap: 0.25rem 0.75rem; padding: 0.5rem 0.75rem; }
169 -
    .last-commit .subject {
170 -
        flex: 1 1 100%;
171 -
        min-width: 0;
172 -
        white-space: nowrap;
173 -
        overflow: hidden;
174 -
        text-overflow: ellipsis;
175 -
    }
176 -
177 -
    .commit-title { flex-wrap: wrap; gap: 0.25rem 0.75rem; }
178 -
    .commit-title .subject { flex: 1 1 100%; font-size: 15px; }
179 -
    .commit-subtitle { flex-direction: column; align-items: flex-start; gap: 0.25rem; }
180 -
181 -
    .file-header { flex-wrap: wrap; gap: 0.25rem 0.75rem; }
182 -
183 -
    .diff-header { flex-wrap: wrap; gap: 0.25rem 0.5rem; }
184 -
    .diff-header .name { word-break: break-all; }
185 -
186 -
    .blob-code .line-num { min-width: 2.5rem; padding: 0 0.4rem 0 0.25rem; }
187 -
    .blob-code .line-code { padding-left: 0.75rem; }
188 -
    .diff-hunk td.diff-num { min-width: 1.75rem; padding: 0 0.2rem 0 0.25rem; font-size: 13px; }
189 -
    td.diff-marker { padding: 0 0.2rem 0 0.4rem; font-size: 13px; }
190 -
    .diff-hunk pre, .blob-code pre { font-size: 13px; }
191 -
    .blob-code .line-num a { font-size: 13px; }
192 -
    .blob-code .line-code pre { font-size: 13px; }
193 -
194 -
    h1 { font-size: 16px; }
195 -
}
159 +
.size { color: var(--fg-dim); text-align: right; white-space: nowrap; font-size: var(--fs-sm); }
196 160
197 161
/* --- Breadcrumbs --- */
198 162
199 -
.breadcrumbs { font-size: 13px; margin-bottom: 1rem; color: var(--fg-dim); }
163 +
.breadcrumbs { font-size: var(--fs-base); margin-bottom: 1rem; color: var(--fg-dim); }
200 164
.breadcrumbs a { color: var(--fg); }
201 165
202 166
/* --- Repo head (last commit + clone) --- */
214 178
    gap: 0.75rem;
215 179
    border: 1px solid var(--border);
216 180
    padding: 0.4rem 0.75rem;
217 -
    font-size: 13px;
181 +
    font-size: var(--fs-base);
218 182
    overflow: hidden;
219 183
    flex: 1;
220 184
    min-width: 0;
229 193
    color: var(--fg);
230 194
    padding: 0.4rem 0.9rem;
231 195
    font: inherit;
232 -
    font-size: 13px;
196 +
    font-size: var(--fs-base);
233 197
    cursor: pointer;
234 198
    white-space: nowrap;
235 199
}
251 215
}
252 216
.clone-menu[hidden] { display: none; }
253 217
.clone-option { display: flex; flex-direction: column; gap: 0.25rem; }
254 -
.clone-label { font-size: 11px; color: var(--fg-dim); text-transform: uppercase; }
218 +
.clone-label { font-size: var(--fs-xs); color: var(--fg-dim); text-transform: uppercase; }
255 219
.clone-option .copy-btn { align-self: flex-end; }
256 220
.clone-url {
257 221
    display: block;
258 222
    color: var(--fg);
259 223
    font-family: var(--mono);
260 -
    font-size: 12px;
224 +
    font-size: var(--fs-sm);
261 225
    background: var(--bg-alt);
262 226
    border: 1px solid var(--border);
263 227
    padding: 0.25rem 0.4rem;
268 232
/* --- Repo home grid --- */
269 233
270 234
.repo-home { display: grid; grid-template-columns: 280px 1fr; gap: 1.5rem; align-items: start; }
271 -
@media (max-width: 720px) { .repo-home { grid-template-columns: 1fr; } }
272 235
273 236
.content-view { min-width: 0; }
274 237
275 238
/* --- File tree --- */
276 239
277 -
.file-tree { font-size: 13px; }
240 +
.file-tree { font-size: var(--fs-base); }
278 241
.tree-entry {
279 242
    display: flex;
280 243
    align-items: baseline;
286 249
287 250
/* --- Tree page directory listing --- */
288 251
289 -
.tree-list { width: 100%; border-collapse: collapse; font-size: 13px; }
252 +
.tree-list { width: 100%; border-collapse: collapse; font-size: var(--fs-base); }
290 253
.tree-list td { padding: 0.3rem 0.5rem; vertical-align: top; }
291 254
.tree-list tr:hover { background: var(--bg-alt); }
292 255
293 256
/* --- File / blob view --- */
294 257
295 -
.file-view { border: 1px solid var(--border);  }
258 +
.file-view { border: 1px solid var(--border); }
296 259
.file-header {
297 260
    display: flex;
298 261
    gap: 0.75rem;
299 262
    align-items: baseline;
300 263
    padding: 0.5rem 0.75rem;
301 264
    border-bottom: 1px solid var(--border);
302 -
    font-size: 13px;
265 +
    font-size: var(--fs-base);
303 266
}
304 267
.file-name { font-weight: 700; flex: 1; }
305 -
.file-meta { color: var(--fg-dim); font-size: 12px; }
268 +
.file-meta { color: var(--fg-dim); font-size: var(--fs-sm); }
306 269
.copy-btn {
307 270
    background: none;
308 271
    border: 0;
321 284
.blob-code pre {
322 285
    margin: 0;
323 286
    font-family: var(--mono);
324 -
    font-size: 13px;
287 +
    font-size: var(--fs-base);
325 288
    line-height: 1.5;
326 289
    white-space: pre;
327 290
    display: inline;
337 300
.line-num a {
338 301
    color: var(--fg-dim);
339 302
    opacity: 0.5;
340 -
    font-size: 13px;
303 +
    font-size: var(--fs-base);
341 304
    line-height: 1.5;
342 305
    display: inline-block;
343 306
}
350 313
351 314
.commit-info { margin-bottom: 1.5rem; }
352 315
.commit-title { display: flex; align-items: baseline; gap: 1rem; margin-bottom: 0.75rem; }
353 -
.commit-title .subject { font-weight: 700; font-size: 16px; flex: 1; white-space: normal; overflow: visible; }
354 -
.commit-hash { color: var(--fg-dim); white-space: nowrap; font-size: 13px; }
316 +
.commit-title .subject { font-weight: 700; font-size: var(--fs-xl); flex: 1; white-space: normal; overflow: visible; }
317 +
.commit-hash { color: var(--fg-dim); white-space: nowrap; font-size: var(--fs-base); }
355 318
.commit-info .body {
356 319
    background: var(--bg-alt);
357 320
    padding: 0.5rem 0.75rem;
358 -
    font-size: 13px;
321 +
    font-size: var(--fs-base);
359 322
    margin: 0 0 1rem 0;
360 323
    white-space: pre-wrap;
361 324
}
363 326
    display: flex;
364 327
    align-items: baseline;
365 328
    gap: 1rem;
366 -
    font-size: 13px;
329 +
    font-size: var(--fs-base);
367 330
    color: var(--fg-dim);
368 331
    padding-top: 0.5rem;
369 332
    border-top: 1px solid var(--border);
376 339
377 340
/* --- Diff --- */
378 341
379 -
.diff-file { border: 1px solid var(--border);  margin-bottom: 1rem; overflow-x: auto; }
342 +
.diff-file { border: 1px solid var(--border); margin-bottom: 1rem; overflow-x: auto; }
380 343
.diff-header {
381 344
    display: flex;
382 345
    align-items: center;
383 346
    gap: 0.5rem;
384 347
    border-bottom: 1px solid var(--border);
385 348
    padding: 0.5rem 0.75rem;
386 -
    font-size: 13px;
349 +
    font-size: var(--fs-base);
387 350
    background: var(--bg-alt);
388 351
}
389 352
.diff-header .name { flex: 1; }
390 -
.diff-header-stats { margin-left: auto; font-size: 13px; white-space: nowrap; color: var(--fg-dim); }
353 +
.diff-header-stats { margin-left: auto; white-space: nowrap; color: var(--fg-dim); }
391 354
392 355
.diff-hunk { margin: 0; border: none; width: 100%; border-collapse: collapse; }
393 356
.diff-hunk td { border: none; padding: 0; vertical-align: top; }
396 359
.diff-hunk pre {
397 360
    margin: 0;
398 361
    font-family: var(--mono);
399 -
    font-size: 13px;
362 +
    font-size: var(--fs-base);
400 363
    line-height: 1.5;
401 364
    white-space: pre;
402 365
    padding: 0 0.75rem;
409 372
    color: var(--fg-dim);
410 373
    opacity: 0.6;
411 374
    user-select: none;
412 -
    font-size: 13px;
375 +
    font-size: var(--fs-base);
413 376
    line-height: 1.5;
414 377
    white-space: nowrap;
415 378
}
419 382
td.diff-marker {
420 383
    width: 1%;
421 384
    padding: 0 0.25rem 0 0.75rem;
422 -
    font-size: 13px;
385 +
    font-size: var(--fs-base);
423 386
    line-height: 1.5;
424 387
    user-select: none;
425 388
    white-space: pre;
434 397
435 398
/* --- Pagination --- */
436 399
437 -
.pagination { display: flex; justify-content: center; padding: 0.75rem 0; font-size: 13px; gap: 0; }
400 +
.pagination { display: flex; justify-content: center; padding: 0.75rem 0; font-size: var(--fs-base); gap: 0; }
438 401
.pagination a {
439 402
    padding: 0.4rem 0.75rem;
440 403
    border: 1px solid var(--border);
445 408
446 409
/* --- Readme --- */
447 410
448 -
.readme { font-size: 14px; line-height: 1.6; max-width: 900px; min-width: 0; overflow-wrap: break-word; }
411 +
.readme { font-size: var(--fs-md); line-height: 1.6; max-width: 900px; min-width: 0; overflow-wrap: break-word; }
449 412
.readme img, .readme video, .readme svg { max-width: 100%; height: auto; }
450 413
.readme h1, .readme h2, .readme h3, .readme h4 { margin-top: 1.25rem; }
451 414
.readme pre {
453 416
    padding: 0.75rem;
454 417
    margin: 0.75rem 0;
455 418
    overflow-x: auto;
456 -
    font-size: 13px;
419 +
    font-size: var(--fs-base);
457 420
}
458 421
.readme p { margin: 0.5rem 0; }
459 -
.readme code { background: var(--bg-alt); padding: 1px 4px; font-size: 13px;  }
422 +
.readme code { background: var(--bg-alt); padding: 1px 4px; font-size: var(--fs-base); }
460 423
.readme pre code { background: transparent; padding: 0; }
461 424
.readme blockquote { border-left: 2px solid var(--border); margin: 0.75rem 0; padding-left: 0.75rem; color: var(--fg-dim); }
462 425
.readme table { border-collapse: collapse; margin: 0.75rem 0; }
469 432
/* --- Error page --- */
470 433
471 434
.error-page { text-align: center; padding: 4rem 1rem; }
435 +
436 +
/* --- Mobile ---
437 +
   Single block, kept last so equal-specificity overrides beat the
438 +
   desktop rules above. */
439 +
440 +
@media (max-width: 720px) {
441 +
    .desktop { display: none; }
442 +
443 +
    .container { padding: 0 0.75rem 3rem; }
444 +
445 +
    h1 { font-size: var(--fs-lg); }
446 +
447 +
    .repo-list, .log-list, .ref-list { font-size: var(--fs-sm); }
448 +
    .repo-list td, .log-list td, .ref-list td,
449 +
    .repo-list th, .log-list th, .ref-list th { padding: 0.4rem 0.3rem; }
450 +
    .log-list .subject, .repo-list .subject { white-space: normal; }
451 +
452 +
    .repo-nav { flex-wrap: wrap; gap: 0.25rem; }
453 +
    .repo-name { flex: 1 1 100%; font-size: var(--fs-lg); padding: 0.25rem 0; gap: 0.5rem; }
454 +
    .repo-nav .tab:first-of-type { margin-left: 0; }
455 +
    .tab { padding: 0.4rem 0.6rem; }
456 +
457 +
    .repo-home { grid-template-columns: 1fr; }
458 +
459 +
    .repo-head { flex-direction: column; gap: 0.75rem; align-items: stretch; }
460 +
    .clone-toggle { width: 100%; }
461 +
    .clone-menu { left: 0; right: 0; min-width: 0; }
462 +
    .last-commit { flex-wrap: wrap; gap: 0.25rem 0.75rem; padding: 0.5rem 0.75rem; }
463 +
    .last-commit .subject {
464 +
        flex: 1 1 100%;
465 +
        min-width: 0;
466 +
        white-space: nowrap;
467 +
        overflow: hidden;
468 +
        text-overflow: ellipsis;
469 +
    }
470 +
471 +
    .commit-title { flex-wrap: wrap; gap: 0.25rem 0.75rem; }
472 +
    .commit-title .subject { flex: 1 1 100%; font-size: var(--fs-lg); }
473 +
    .commit-subtitle { flex-direction: column; align-items: flex-start; gap: 0.25rem; }
474 +
475 +
    .file-header { flex-wrap: wrap; gap: 0.25rem 0.75rem; }
476 +
477 +
    .diff-header { flex-wrap: wrap; gap: 0.25rem 0.5rem; }
478 +
    .diff-header .name { word-break: break-all; }
479 +
480 +
    .blob-code .line-num { min-width: 2.5rem; padding: 0 0.4rem 0 0.25rem; }
481 +
    .blob-code .line-code { padding-left: 0.75rem; }
482 +
    .diff-hunk td.diff-num { min-width: 1.75rem; padding: 0 0.2rem 0 0.25rem; }
483 +
    td.diff-marker { padding: 0 0.2rem 0 0.4rem; }
484 +
}