main
css 1,051 lines 20.8 KB
Raw
1 .home-shell {
2 display: grid;
3 gap: var(--space-5);
4 }
5
6 .home-hero,
7 .home-latest,
8 .home-empty-state,
9 .home-report-card,
10 .metric-card,
11 .report-shortcuts {
12 border: 1px solid var(--color-border);
13 border-radius: var(--radius-md);
14 background: var(--color-surface);
15 }
16
17 .home-hero,
18 .home-latest,
19 .home-empty-state {
20 padding: var(--space-4);
21 }
22
23 .home-hero--minimal {
24 display: grid;
25 gap: var(--space-1);
26 padding-block: var(--space-3);
27 border-color: transparent;
28 background: transparent;
29 }
30
31 .home-eyebrow,
32 .section-topline,
33 .metric-label,
34 .home-report-week,
35 .home-tag-label {
36 display: block;
37 color: var(--color-text-muted);
38 font-size: var(--text-sm);
39 letter-spacing: 0.04em;
40 text-transform: uppercase;
41 }
42
43 .home-hero h1 {
44 margin: 0;
45 font-size: clamp(var(--text-2xl), 6vw, var(--text-3xl));
46 line-height: var(--leading-tight);
47 }
48
49 .home-latest {
50 display: grid;
51 gap: var(--space-3);
52 }
53
54 .home-latest--feature {
55 gap: var(--space-4);
56 padding: var(--space-5);
57 border-left: var(--space-1) solid var(--color-accent);
58 box-shadow: var(--shadow-sm);
59 }
60
61 .home-latest-kicker,
62 .home-report-meta {
63 display: flex;
64 flex-wrap: wrap;
65 gap: var(--space-2);
66 align-items: center;
67 color: var(--color-text-muted);
68 font-size: var(--text-sm);
69 }
70
71 .home-latest h2 {
72 max-width: var(--prose-measure);
73 margin: 0;
74 font-size: clamp(var(--text-2xl), 6vw, var(--text-4xl));
75 line-height: var(--leading-tight);
76 letter-spacing: var(--tracking-tight);
77 }
78
79 .home-latest h2 a,
80 .home-report-title {
81 text-decoration-thickness: 1px;
82 text-underline-offset: var(--space-1);
83 }
84
85 .home-latest-hook {
86 max-width: var(--prose-measure);
87 color: var(--color-text);
88 font-size: var(--text-lg);
89 line-height: var(--leading-relaxed);
90 }
91
92 .report-metrics,
93 .home-report-list {
94 display: grid;
95 gap: var(--space-3);
96 }
97
98 .report-metrics {
99 grid-template-columns: repeat(auto-fit, minmax(min(100%, calc(var(--space-15) + var(--space-3))), 1fr));
100 }
101
102 .metric-card {
103 padding: var(--space-3);
104 }
105
106 .metric-card-wide {
107 grid-column: span 2;
108 }
109
110 .metric-value {
111 display: block;
112 margin-top: var(--space-1);
113 font-size: var(--text-lg);
114 line-height: var(--leading-tight);
115 }
116
117 .home-actions,
118 .report-shortcuts {
119 display: flex;
120 flex-wrap: wrap;
121 gap: var(--space-2);
122 align-items: center;
123 }
124
125 .home-action-primary,
126 .home-action-secondary,
127 .report-shortcuts a {
128 display: inline-flex;
129 align-items: center;
130 justify-content: center;
131 min-height: calc(var(--space-5) + var(--space-2));
132 padding: 0 var(--space-3);
133 border-radius: var(--radius-full);
134 text-decoration: none;
135 }
136
137 .home-action-primary {
138 background: var(--color-text);
139 color: var(--color-bg);
140 }
141
142 .home-action-secondary,
143 .report-shortcuts a {
144 border: 1px solid var(--color-border);
145 }
146
147 .home-recent--compact {
148 display: grid;
149 gap: var(--space-3);
150 padding-top: var(--space-3);
151 border-top: 1px solid var(--color-border);
152 }
153
154 .home-recent--compact h2 {
155 margin: 0;
156 font-size: var(--text-xl);
157 line-height: var(--leading-tight);
158 }
159
160 .home-report-list--compact {
161 gap: var(--space-2);
162 }
163
164 .home-report-card,
165 .squad-archive-entry {
166 padding: var(--space-3);
167 }
168
169 .home-report-card {
170 display: grid;
171 gap: var(--space-2);
172 }
173
174 .home-report-card--compact {
175 grid-template-columns: minmax(0, 1fr);
176 }
177
178 .home-report-title {
179 display: grid;
180 gap: var(--space-1);
181 color: var(--color-text);
182 font-weight: 700;
183 text-decoration: none;
184 }
185
186 .home-report-card p {
187 margin: 0;
188 color: var(--color-text-muted);
189 }
190
191 .squad-report .report-shortcuts {
192 margin-bottom: var(--space-4);
193 padding: var(--space-2);
194 }
195
196 .search-shell,
197 .taxonomy-grid {
198 display: grid;
199 gap: var(--space-3);
200 }
201
202 .search-intro-card,
203 .taxonomy-card {
204 border: var(--size-border-thin) solid var(--color-border);
205 border-radius: var(--radius-md);
206 background: var(--color-surface);
207 }
208
209 .search-intro-card {
210 padding: var(--space-3) 1.25rem;
211 }
212
213 .taxonomy-grid {
214 grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
215 }
216
217 .taxonomy-card h2 {
218 margin-top: 0;
219 margin-bottom: 0.5rem;
220 }
221
222 .pagefind-meta {
223 display: none;
224 }
225
226 :root {
227 --pagefind-ui-scale: 0.95;
228 --pagefind-ui-primary: var(--color-text);
229 --pagefind-ui-text: var(--color-text);
230 --pagefind-ui-background: var(--color-surface);
231 --pagefind-ui-border: var(--color-border);
232 --pagefind-ui-tag: var(--color-accent-muted);
233 --pagefind-ui-border-radius: var(--radius-md);
234 --pagefind-ui-font: inherit;
235 }
236
237 a:focus-visible,
238 button:focus-visible,
239 input:focus-visible,
240 select:focus-visible,
241 textarea:focus-visible,
242 summary:focus-visible,
243 [tabindex]:focus-visible {
244 outline: var(--size-focus-ring) solid var(--color-accent);
245 outline-offset: var(--space-1);
246 border-radius: var(--radius-sm);
247 }
248
249 .metric-value a,
250 .archive-entry-title a,
251 .home-report-card a,
252 .taxonomy-card a {
253 overflow-wrap: anywhere;
254 }
255
256 .post-content,
257 .md-content {
258 overflow-wrap: anywhere;
259 }
260
261 .search-shortcuts {
262 display: flex;
263 flex-wrap: wrap;
264 gap: var(--space-2);
265 margin-top: var(--space-3);
266 color: var(--color-text-muted);
267 font-size: var(--text-sm);
268 }
269
270 .search-shortcuts-title {
271 align-self: center;
272 color: var(--color-text);
273 font-weight: 700;
274 }
275
276 .search-shortcut {
277 display: inline-flex;
278 align-items: center;
279 gap: var(--space-1);
280 padding: var(--space-1) var(--space-2);
281 border: var(--size-border-thin) solid var(--color-border);
282 border-radius: var(--radius-full);
283 background: var(--color-surface);
284 }
285
286 .search-shortcut kbd {
287 display: inline-flex;
288 align-items: center;
289 justify-content: center;
290 min-width: 1.8rem;
291 min-height: 1.8rem;
292 padding: 0 var(--space-1);
293 border: var(--size-border-thin) solid var(--color-border);
294 border-radius: var(--radius-md);
295 background: var(--color-bg);
296 color: var(--color-text);
297 font: inherit;
298 font-weight: 700;
299 }
300
301 .search-panel {
302 display: grid;
303 gap: var(--space-3);
304 }
305
306 .search-panel .pagefind-ui__search-input {
307 font-size: var(--text-base);
308 }
309
310 .search-panel .pagefind-ui__results,
311 .search-panel .pagefind-ui__result-link,
312 .search-panel .pagefind-ui__result-excerpt {
313 overflow-wrap: anywhere;
314 }
315
316 .table-scroll {
317 margin: var(--space-3) 0;
318 overflow-x: auto;
319 border: var(--size-border-thin) solid var(--color-border);
320 border-radius: var(--radius-md);
321 background: var(--color-surface);
322 -webkit-overflow-scrolling: touch;
323 }
324
325 .table-scroll:focus-visible {
326 outline: 3px solid var(--color-accent);
327 outline-offset: 2px;
328 }
329
330 .table-scroll table {
331 width: 100%;
332 min-width: 36rem;
333 margin: 0;
334 }
335
336 .table-scroll th,
337 .table-scroll td {
338 white-space: nowrap;
339 }
340
341 .visually-hidden {
342 position: absolute;
343 width: var(--size-icon-sm);
344 height: var(--size-icon-sm);
345 padding: 0;
346 margin: calc(var(--size-icon-sm) * -1);
347 overflow: hidden;
348 clip: rect(0, 0, 0, 0);
349 white-space: nowrap;
350 border: 0;
351 }
352
353 .skip-link {
354 position: fixed;
355 inset-block-start: var(--space-3);
356 inset-inline-start: var(--space-3);
357 z-index: var(--z-overlay);
358 transform: translateY(calc((var(--space-8) + var(--space-3)) * -1));
359 padding: var(--space-2) var(--space-3);
360 border: var(--size-border-thin) solid var(--color-border);
361 border-radius: var(--radius-full);
362 background: var(--color-surface);
363 color: var(--color-text);
364 font-weight: 700;
365 box-shadow: var(--shadow-md);
366 }
367
368 .skip-link:focus-visible {
369 transform: translateY(0);
370 }
371
372 @media (min-width: 769px) {
373 .home-hero,
374 .home-content-grid {
375 grid-template-columns: minmax(0, 2fr) minmax(calc(var(--space-16) + var(--space-10)), 1fr);
376 }
377 }
378
379 @media (max-width: 640px) {
380 .metric-card-wide {
381 grid-column: span 1;
382 }
383
384 .search-shortcuts,
385 .repo-card__footer,
386 .article-week-nav,
387 .article-footer__prompt {
388 flex-direction: column;
389 align-items: stretch;
390 }
391
392 .article-week-nav__link--next {
393 text-align: start;
394 }
395 }
396
397 .squad-article {
398 max-width: calc(var(--prose-measure) + var(--space-10));
399 }
400
401 .article-header {
402 display: grid;
403 gap: var(--space-3);
404 padding-block: var(--space-5);
405 border-bottom: var(--size-border-thin) solid var(--color-border);
406 }
407
408 .article-header .breadcrumbs,
409 .article-header .section-topline,
410 .article-header .post-title,
411 .article-header .post-description,
412 .article-meta {
413 margin: 0;
414 }
415
416 .article-header .post-title {
417 max-width: var(--prose-measure);
418 }
419
420 .article-subtitle {
421 max-width: var(--prose-measure);
422 color: var(--color-text-muted);
423 font-size: var(--text-lg);
424 line-height: var(--leading-relaxed);
425 }
426
427 .article-meta,
428 .article-footer__prompt,
429 .article-footer__updated,
430 .article-errata,
431 .article-correction-path,
432 .repo-card__stats {
433 color: var(--color-text-muted);
434 font-size: var(--text-sm);
435 line-height: var(--leading-normal);
436 }
437
438 .article-ai-badge {
439 display: inline-flex;
440 align-items: center;
441 gap: var(--space-1);
442 padding: 0.15rem var(--space-2);
443 border: var(--size-border-thin) solid var(--color-border);
444 border-radius: var(--radius-full);
445 background: var(--color-accent-muted);
446 color: var(--color-text);
447 font-weight: 600;
448 white-space: nowrap;
449 }
450
451 .squad-article .report-metrics,
452 .article-jump-nav,
453 .article-featured-repos,
454 .squad-report .report-shortcuts {
455 margin-top: var(--space-4);
456 }
457
458 .squad-article .report-metrics {
459 grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--space-10)), 1fr));
460 }
461
462 .squad-article .metric-card,
463 .repo-card,
464 .article-jump-nav,
465 .press-context-callout,
466 .article-week-nav__link {
467 border: var(--size-border-thin) solid var(--color-border);
468 border-radius: var(--radius-md);
469 background: var(--color-surface);
470 }
471
472 .squad-article .metric-card {
473 min-width: var(--space-10);
474 }
475
476 .squad-article .metric-value {
477 font-size: var(--text-xl);
478 font-weight: 700;
479 }
480
481 .article-jump-nav {
482 display: flex;
483 flex-wrap: wrap;
484 gap: var(--space-2) var(--space-3);
485 align-items: center;
486 padding: var(--space-2);
487 }
488
489 .article-jump-nav__label,
490 .press-context-callout__kicker {
491 color: var(--color-text-muted);
492 font-size: var(--text-xs);
493 font-weight: 700;
494 letter-spacing: var(--tracking-nav);
495 text-transform: uppercase;
496 }
497
498 .article-jump-nav ul,
499 .article-week-nav,
500 .article-footer__prompt,
501 .repo-card__heading,
502 .repo-card__footer {
503 display: flex;
504 flex-wrap: wrap;
505 gap: var(--space-2);
506 align-items: center;
507 }
508
509 .article-jump-nav ul {
510 margin: 0;
511 padding: 0;
512 list-style: none;
513 }
514
515 .article-jump-nav a,
516 .repo-card__button {
517 display: inline-flex;
518 align-items: center;
519 justify-content: center;
520 min-height: calc(var(--space-4) + var(--space-2));
521 padding-inline: var(--space-3);
522 border: var(--size-border-thin) solid var(--color-border);
523 border-radius: var(--radius-full);
524 text-decoration: none;
525 }
526
527 .article-featured-repos {
528 display: grid;
529 }
530
531 .repo-card {
532 display: grid;
533 gap: var(--space-3);
534 padding: var(--space-4);
535 }
536
537 .repo-card__main {
538 display: grid;
539 gap: var(--space-2);
540 }
541
542 .repo-card__heading {
543 justify-content: space-between;
544 }
545
546 .repo-card__title,
547 .repo-inline-link,
548 .article-content a:not(.anchor),
549 .article-footer a {
550 color: var(--color-accent);
551 text-decoration-thickness: var(--size-border-thin);
552 text-underline-offset: var(--space-1);
553 }
554
555 .repo-card__title {
556 overflow-wrap: anywhere;
557 font-size: var(--text-lg);
558 font-weight: 700;
559 }
560
561 .repo-card__language {
562 padding: var(--space-1) var(--space-2);
563 border-radius: var(--radius-sm);
564 background: var(--color-accent-muted);
565 color: var(--color-accent);
566 font-size: var(--text-xs);
567 font-weight: 700;
568 }
569
570 .repo-card__description {
571 margin: 0;
572 color: var(--color-text-muted);
573 line-height: var(--leading-relaxed);
574 }
575
576 .repo-card__footer {
577 justify-content: space-between;
578 }
579
580 .repo-card__stats {
581 display: flex;
582 flex-wrap: wrap;
583 gap: var(--space-2);
584 margin: 0;
585 }
586
587 .repo-card__button {
588 color: var(--color-text);
589 font-size: var(--text-sm);
590 font-weight: 700;
591 }
592
593 .article-content {
594 max-width: var(--prose-measure);
595 margin-inline: auto;
596 font-size: var(--text-base);
597 line-height: var(--leading-relaxed);
598 }
599
600 .article-content h2 {
601 margin-top: var(--space-7);
602 padding-top: var(--space-5);
603 border-top: var(--size-border-thin) solid var(--color-border);
604 }
605
606 .article-content h3 {
607 margin-top: var(--space-5);
608 }
609
610 .article-content code,
611 .article-content pre code {
612 font-family: var(--font-mono);
613 }
614
615 .article-content code {
616 background: var(--color-code-bg);
617 color: var(--color-text);
618 border-radius: var(--radius-sm);
619 }
620
621 .article-content blockquote {
622 margin: var(--space-5) 0;
623 padding: var(--space-3) var(--space-4);
624 border-inline-start: calc(var(--size-border-thin) * 4) solid var(--color-accent);
625 border-radius: var(--radius-md);
626 background: var(--color-accent-muted);
627 color: var(--color-text);
628 font-size: var(--text-lg);
629 font-style: italic;
630 }
631
632 .press-context-callout {
633 margin: var(--space-6) 0;
634 padding: var(--space-4);
635 border-color: var(--color-accent);
636 border-inline-start-width: calc(var(--size-border-thin) * 4);
637 background: var(--color-accent-muted);
638 }
639
640 .press-context-callout__kicker,
641 .press-context-callout__title,
642 .press-context-callout__body p {
643 margin: 0;
644 }
645
646 .press-context-callout__title {
647 padding: 0;
648 border: 0;
649 color: var(--color-text);
650 font-size: var(--text-xl);
651 }
652
653 .press-context-callout__body {
654 display: grid;
655 gap: var(--space-3);
656 margin-top: var(--space-3);
657 color: var(--color-text-muted);
658 }
659
660 .press-context-callout__body p:first-child {
661 color: var(--color-text);
662 font-style: italic;
663 }
664
665 .article-footer {
666 display: grid;
667 gap: var(--space-4);
668 margin-top: var(--space-7);
669 padding-top: var(--space-5);
670 border-top: var(--size-border-thin) solid var(--color-border);
671 }
672
673 .article-footer>* {
674 margin: 0;
675 }
676
677 .article-errata {
678 display: grid;
679 gap: var(--space-2);
680 padding: var(--space-3);
681 border: var(--size-border-thin) solid var(--color-border);
682 border-radius: var(--radius-md);
683 background: var(--color-surface);
684 font-style: italic;
685 }
686
687 .article-correction-path {
688 display: grid;
689 gap: var(--space-2);
690 padding: var(--space-3);
691 border: var(--size-border-thin) solid var(--color-border);
692 border-radius: var(--radius-md);
693 background: var(--color-surface);
694 }
695
696 .article-correction-path__title {
697 margin: 0;
698 color: var(--color-text);
699 font-size: var(--text-base);
700 }
701
702 .article-correction-path p {
703 margin: 0;
704 }
705
706 .article-errata__title {
707 margin: 0;
708 color: var(--color-text);
709 font-size: var(--text-base);
710 font-style: normal;
711 }
712
713 .article-errata__list {
714 display: grid;
715 gap: var(--space-2);
716 margin: 0;
717 padding-inline-start: var(--space-4);
718 }
719
720 .article-errata time {
721 color: var(--color-text);
722 font-weight: 700;
723 }
724
725 .article-errata time::after {
726 content: " — ";
727 color: var(--color-text-muted);
728 font-weight: 400;
729 }
730
731 .article-week-nav {
732 align-items: stretch;
733 }
734
735 .article-week-nav__link {
736 flex: 1 1 var(--space-16);
737 display: grid;
738 gap: var(--space-1);
739 padding: var(--space-3);
740 color: var(--color-text);
741 text-decoration: none;
742 }
743
744 .article-week-nav__link--next {
745 text-align: end;
746 }
747
748 .article-week-nav__link span {
749 color: var(--color-text-muted);
750 font-size: var(--text-xs);
751 font-weight: 700;
752 letter-spacing: var(--tracking-nav);
753 text-transform: uppercase;
754 }
755
756
757 .section-heading-row {
758 display: flex;
759 align-items: flex-end;
760 justify-content: space-between;
761 gap: var(--space-3);
762 }
763
764 .section-heading-row h2 {
765 margin: var(--space-1) 0 0;
766 font-size: var(--text-xl);
767 line-height: var(--leading-tight);
768 }
769
770 .section-heading-row > a {
771 color: var(--color-accent);
772 font-size: var(--text-sm);
773 font-weight: 700;
774 white-space: nowrap;
775 }
776
777 .home-content-grid,
778 .home-rail,
779 .home-quick-links,
780 .home-topic-rail,
781 .home-topic-list,
782 .weekly-archive,
783 .weekly-archive-list {
784 display: grid;
785 gap: var(--space-3);
786 }
787
788 .home-tag-strip {
789 display: flex;
790 flex-wrap: wrap;
791 align-items: center;
792 gap: var(--space-2);
793 padding: var(--space-2) var(--space-3);
794 border-block: 1px solid var(--color-border);
795 }
796
797 .home-tag-strip a,
798 .home-topic-card,
799 .home-quick-links a {
800 color: var(--color-text);
801 font-weight: 700;
802 text-decoration-thickness: 1px;
803 text-underline-offset: var(--space-1);
804 }
805
806 .home-tag-strip a {
807 padding: var(--space-1) var(--space-2);
808 border-radius: var(--radius-full);
809 background: var(--color-accent-muted);
810 color: var(--color-accent);
811 text-decoration: none;
812 }
813
814 .home-recent,
815 .home-topic-rail,
816 .home-quick-links,
817 .weekly-archive-entry {
818 border: 1px solid var(--color-border);
819 border-radius: var(--radius-md);
820 background: var(--color-surface);
821 }
822
823 .home-recent,
824 .home-topic-rail,
825 .home-quick-links {
826 padding: var(--space-4);
827 }
828
829 .home-topic-list {
830 gap: var(--space-2);
831 }
832
833 .home-topic-card {
834 display: flex;
835 justify-content: space-between;
836 gap: var(--space-2);
837 padding: var(--space-2) 0;
838 border-bottom: 1px solid var(--color-border);
839 text-decoration: none;
840 }
841
842 .home-topic-card:last-child {
843 border-bottom: 0;
844 }
845
846 .home-topic-card small {
847 color: var(--color-text-muted);
848 font-size: var(--text-sm);
849 font-weight: 600;
850 white-space: nowrap;
851 }
852
853 .home-quick-links {
854 align-content: start;
855 }
856
857 .home-quick-links a {
858 display: flex;
859 justify-content: space-between;
860 gap: var(--space-3);
861 padding: var(--space-2) 0;
862 border-bottom: 1px solid var(--color-border);
863 }
864
865 .home-quick-links a::after {
866 content: "→";
867 color: var(--color-accent);
868 }
869
870 .home-quick-links a:last-child {
871 border-bottom: 0;
872 }
873
874 .weekly-archive-entry {
875 display: grid;
876 gap: var(--space-2);
877 padding: var(--space-4);
878 }
879
880 .weekly-archive-entry h3 {
881 margin: 0;
882 font-size: var(--text-xl);
883 line-height: var(--leading-tight);
884 }
885
886 .weekly-archive-entry p {
887 margin: 0;
888 color: var(--color-text-muted);
889 }
890
891 .weekly-archive-entry__meta {
892 display: flex;
893 flex-wrap: wrap;
894 gap: var(--space-2);
895 color: var(--color-text-muted);
896 font-size: var(--text-sm);
897 letter-spacing: 0.04em;
898 text-transform: uppercase;
899 }
900
901 @media (min-width: 769px) {
902 .home-content-grid {
903 grid-template-columns: minmax(0, 2fr) minmax(calc(var(--space-16) + var(--space-10)), 1fr);
904 }
905 }
906
907 @media (max-width: 640px) {
908 .section-heading-row {
909 align-items: flex-start;
910 flex-direction: column;
911 }
912 }
913
914 /* #327: mobile density overrides — placed after the base rules so equal-
915 specificity selectors win on mobile via source order (was previously
916 overridden by the later base declarations). */
917 @media (max-width: 768px) {
918 .post-title {
919 font-size: clamp(var(--text-xl), 6vw, var(--text-2xl));
920 }
921
922 .post-meta {
923 display: flex;
924 flex-wrap: wrap;
925 gap: var(--space-1) var(--space-2);
926 }
927
928 .home-actions {
929 flex-direction: column;
930 align-items: stretch;
931 }
932
933 .home-action-primary,
934 .home-action-secondary {
935 width: 100%;
936 }
937
938 .home-topic-rail,
939 .post-tags__topic {
940 display: none;
941 }
942
943 .table-scroll table {
944 min-width: 30rem;
945 }
946
947 .search-panel .pagefind-ui__search-input {
948 font-size: var(--text-base);
949 }
950
951 .article-header {
952 gap: var(--space-2);
953 padding-block: var(--space-3) var(--space-3);
954 }
955
956 .article-subtitle {
957 font-size: var(--text-base);
958 line-height: var(--leading-normal);
959 }
960
961 .squad-article .report-metrics,
962 .article-jump-nav,
963 .article-featured-repos,
964 .squad-report .report-shortcuts {
965 margin-top: var(--space-3);
966 }
967
968 /* Dense metric grid: two compact cards per row instead of tall full-width stacks. */
969 .squad-article .report-metrics,
970 .home-latest .report-metrics {
971 grid-template-columns: repeat(2, minmax(0, 1fr));
972 gap: var(--space-2);
973 }
974
975 .squad-article .metric-card,
976 .home-latest .metric-card {
977 min-width: 0;
978 padding: var(--space-2) var(--space-3);
979 }
980
981 .squad-article .metric-label,
982 .home-latest .metric-label {
983 font-size: var(--text-xs);
984 }
985
986 .squad-article .metric-value,
987 .home-latest .metric-value {
988 font-size: var(--text-base);
989 overflow-wrap: anywhere;
990 }
991
992 /* Report shortcuts as a dense wrapping pill row, not a full-width column stack. */
993 .squad-report .report-shortcuts {
994 flex-wrap: wrap;
995 gap: var(--space-2);
996 padding: var(--space-2);
997 }
998
999 .squad-report .report-shortcuts a {
1000 flex: 0 1 auto;
1001 min-height: var(--tap-target, 2.75rem);
1002 padding-inline: var(--space-3);
1003 }
1004
1005 /* 44px minimum tap targets for inline navigation controls. */
1006 .squad-article .article-jump-nav a,
1007 .squad-article .repo-card__button {
1008 min-height: var(--tap-target, 2.75rem);
1009 }
1010
1011 .home-actions .home-action-primary,
1012 .home-actions .home-action-secondary {
1013 min-height: var(--tap-target, 2.75rem);
1014 }
1015
1016 /* Tighter featured-repo card on small screens. */
1017 .repo-card {
1018 gap: var(--space-2);
1019 padding: var(--space-3);
1020 }
1021
1022 /* The top share block is redundant on mobile; the bottom one remains. */
1023 .article-share--top {
1024 display: none;
1025 }
1026
1027 /* Scannability: shorten the section rhythm so long articles don't read as a wall.
1028 Scoped under .squad-article and placed after the base rules, so these win on
1029 mobile without touching desktop. */
1030 .squad-article .article-content h2 {
1031 margin-top: var(--space-5);
1032 padding-top: var(--space-3);
1033 }
1034
1035 .squad-article .article-content h3 {
1036 margin-top: var(--space-4);
1037 }
1038
1039 .md-content h1 {
1040 margin-block: var(--space-4) var(--space-3);
1041 }
1042
1043 .md-content h2 {
1044 margin-block: var(--space-4) var(--space-3);
1045 }
1046
1047 .squad-article .article-content blockquote,
1048 .squad-article .press-context-callout {
1049 margin-block: var(--space-4);
1050 }
1051 }