@vantagecompute/docusaurus-theme 0.4.8 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -366,20 +366,49 @@ div[class^='codeBlockTitle'] {
366
366
  }
367
367
 
368
368
  /* ── Tables ────────────────────────────────────────────────────────── */
369
+ /* Every markdown table renders inside `.table-scroll` (src/theme/MDXComponents),
370
+ which carries the rounded frame and scrolls horizontally. The table itself
371
+ keeps its natural width. The old `display: table; overflow: hidden` on the
372
+ table removed Docusaurus's own overflow scrolling, and a four-column
373
+ reference table on a 345px phone column squeezed to 61px columns with
374
+ 171px rows. Cells are capped at 60ch so one long description cannot force
375
+ a 3000px scroll. */
376
+ .markdown .table-scroll,
377
+ article .table-scroll {
378
+ margin: 14px 0;
379
+ overflow-x: auto;
380
+ -webkit-overflow-scrolling: touch;
381
+ background: var(--ifm-background-surface-color);
382
+ border: 1px solid var(--ink-100);
383
+ border-radius: 8px;
384
+ }
385
+
386
+ .markdown .table-scroll:focus-visible,
387
+ article .table-scroll:focus-visible {
388
+ outline: 2px solid var(--ifm-color-primary);
389
+ outline-offset: 2px;
390
+ }
391
+
369
392
  .markdown table,
370
393
  article table {
371
394
  display: table;
372
395
  width: 100%;
396
+ min-width: max-content;
373
397
  border-collapse: collapse;
374
398
  font-size: 13px;
375
- margin: 14px 0;
399
+ margin: 0;
376
400
  background: var(--ifm-background-surface-color);
377
- border: 1px solid var(--ink-100);
378
- border-radius: 8px;
379
- overflow: hidden;
401
+ border: 0;
380
402
  box-shadow: none;
381
403
  }
382
404
 
405
+ .markdown table td,
406
+ .markdown table th,
407
+ article table td,
408
+ article table th {
409
+ max-width: 60ch;
410
+ }
411
+
383
412
  .markdown table th,
384
413
  article table th {
385
414
  font-weight: 600;
@@ -441,7 +470,11 @@ article table td code {
441
470
  }
442
471
 
443
472
  .markdown li::marker {
444
- color: var(--ink-300);
473
+ /* ink-300 was 2.5:1 against the page in both modes. ink-400 is the ramp's
474
+ fixed point (#6b7494 in both modes) and clears the 3:1 non-text floor:
475
+ 4.6:1 light, 4.1:1 dark. It stays decoration-only; see the note on
476
+ .sidebar-section-label for why it is not used for text. */
477
+ color: var(--ink-400);
445
478
  }
446
479
 
447
480
  /* Tab lists should have no left padding (override .markdown ul) */
@@ -450,6 +483,17 @@ article table td code {
450
483
  margin-bottom: 0;
451
484
  }
452
485
 
486
+ /* Infima scrolls the strip, and a strip that ends flush with the edge hides
487
+ the tabs past it with nothing to say they exist: two of six on a phone.
488
+ Wrap instead, so every tab is on screen in at most two rows. */
489
+ @media (max-width: 996px) {
490
+ .markdown .tabs {
491
+ flex-wrap: wrap;
492
+ overflow-x: visible;
493
+ row-gap: 2px;
494
+ }
495
+ }
496
+
453
497
  /* ── Provider showcase (On-Premises clusters) ───────────────────────── */
454
498
  .provider-showcase {
455
499
  display: grid;
@@ -645,7 +689,7 @@ html[data-theme='dark'] .provider-showcase-item {
645
689
  .guide-meta-label {
646
690
  display: block;
647
691
  margin-bottom: 0.25rem;
648
- color: var(--ink-400);
692
+ color: var(--ink-500);
649
693
  font-size: 0.75rem;
650
694
  font-weight: 700;
651
695
  letter-spacing: 0.08em;
@@ -805,12 +849,6 @@ html[data-theme='dark'] .provider-showcase-item {
805
849
  * --vantage-navbar-logo-hide-bp Breakpoint below which logo hides
806
850
  * --vantage-navbar-brand-pl Left padding on the brand area
807
851
  * --vantage-navbar-items-gap Gap between right-side items
808
- * --vantage-footer-bg Footer background colour
809
- * --vantage-footer-text Footer text colour
810
- * --vantage-footer-title-color Footer section-title colour
811
- * --vantage-footer-link-hover Footer link hover colour
812
- * --vantage-footer-separator Footer separator colour
813
- * --vantage-footer-logo-max-h Footer logo max-height
814
852
  */
815
853
  :root {
816
854
  --ifm-navbar-height: 64px;
@@ -825,14 +863,6 @@ html[data-theme='dark'] .provider-showcase-item {
825
863
  --vantage-navbar-logo-hide-bp: 1024px;
826
864
  --vantage-navbar-brand-pl: 6px;
827
865
  --vantage-navbar-items-gap: 10px;
828
-
829
- /* Footer defaults */
830
- --vantage-footer-bg: var(--iris-900);
831
- --vantage-footer-text: #ffffff;
832
- --vantage-footer-title-color: var(--iris-200);
833
- --vantage-footer-link-hover: var(--iris-200);
834
- --vantage-footer-separator: rgba(255, 255, 255, 0.12);
835
- --vantage-footer-logo-max-h: 60px;
836
866
  }
837
867
 
838
868
  .navbar {
@@ -877,8 +907,66 @@ html[data-theme='dark'] .provider-showcase-item {
877
907
  color: var(--vantage-navbar-link-hover) !important;
878
908
  }
879
909
 
880
- @media (max-width: 1024px) {
881
- .navbar__logo { display: none !important; }
910
+ /* The logo used to be hidden at <=1024px, which with an empty navbar.title
911
+ left every phone and tablet with no brand at all. Keep it; shrink it a
912
+ little where the hamburger shares the row. */
913
+ @media (max-width: 996px) {
914
+ .navbar__logo {
915
+ height: 28px;
916
+ }
917
+ }
918
+
919
+ /* Touch targets below the layout break. WCAG 2.5.8 asks for 24px minimum;
920
+ 44px is the comfortable size. The drawer close button measured 21px,
921
+ sidebar rows and carets 30px, the hamburger 30px. Padding, not larger
922
+ glyphs, so the visuals do not change. Infima's drawer is also 83vw, which
923
+ on a 768px tablet is a 637px menu for a list of 14px rows. */
924
+ @media (max-width: 996px) {
925
+ :root {
926
+ --ifm-navbar-sidebar-width: min(83vw, 360px);
927
+ }
928
+
929
+ .navbar__toggle {
930
+ padding: 7px;
931
+ margin: -7px 0;
932
+ }
933
+
934
+ .navbar-sidebar__close {
935
+ padding: 12px;
936
+ margin-right: -12px;
937
+ }
938
+
939
+ .navbar-sidebar .menu__link {
940
+ padding: 10px 12px;
941
+ }
942
+
943
+ .navbar-sidebar .menu__caret {
944
+ padding: 12px 10px;
945
+ }
946
+
947
+ .breadcrumbs__link {
948
+ display: inline-flex;
949
+ align-items: center;
950
+ min-height: 32px;
951
+ }
952
+
953
+ .theme-doc-toc-mobile > button {
954
+ min-height: 44px;
955
+ }
956
+ }
957
+
958
+ /* Two 165px pagination cards side by side on a phone truncate their titles.
959
+ Infima pins the next card to `grid-column: 2 / 3`, which would open an
960
+ implicit second track even with one column declared, so it is reset too. */
961
+ @media (max-width: 600px) {
962
+ .pagination-nav {
963
+ grid-template-columns: 1fr;
964
+ }
965
+
966
+ .pagination-nav__link--next {
967
+ grid-column: auto;
968
+ text-align: left;
969
+ }
882
970
  }
883
971
 
884
972
  /* ── Sidebar (left) ────────────────────────────────────────────────── */
@@ -1029,7 +1117,7 @@ html[data-theme='dark'] .provider-showcase-item {
1029
1117
  font-weight: 700;
1030
1118
  text-transform: uppercase;
1031
1119
  letter-spacing: 0.08em;
1032
- color: var(--ink-400);
1120
+ color: var(--ink-500);
1033
1121
  margin-bottom: 10px;
1034
1122
  content: 'On this page';
1035
1123
  }
@@ -1085,7 +1173,7 @@ html[data-theme='dark'] .provider-showcase-item {
1085
1173
  }
1086
1174
 
1087
1175
  .breadcrumbs__link {
1088
- color: var(--ink-400);
1176
+ color: var(--ink-500);
1089
1177
  font-weight: 500;
1090
1178
  border-bottom: 0 !important;
1091
1179
  }
@@ -1210,7 +1298,7 @@ a.button--secondary:focus {
1210
1298
  }
1211
1299
 
1212
1300
  .pagination-nav__sublabel {
1213
- color: var(--ink-400);
1301
+ color: var(--ink-500);
1214
1302
  font-size: 11px;
1215
1303
  text-transform: uppercase;
1216
1304
  letter-spacing: 0.06em;
@@ -1283,93 +1371,6 @@ details summary[onclick]:hover {
1283
1371
  text-decoration: underline !important;
1284
1372
  }
1285
1373
 
1286
- /* ── Footer ────────────────────────────────────────────────────────── */
1287
- .footer {
1288
- background-color: var(--vantage-footer-bg) !important;
1289
- border-top: 1px solid var(--vantage-navbar-border);
1290
- }
1291
-
1292
- .footer--dark {
1293
- background-color: var(--vantage-footer-bg) !important;
1294
- }
1295
-
1296
- .footer__title,
1297
- .footer__item,
1298
- .footer__link-item,
1299
- .footer__copyright {
1300
- color: var(--vantage-footer-text) !important;
1301
- }
1302
-
1303
- .footer__title {
1304
- font-size: 12px;
1305
- text-transform: uppercase;
1306
- letter-spacing: 0.08em;
1307
- font-weight: 700;
1308
- color: var(--vantage-footer-title-color) !important;
1309
- }
1310
-
1311
- .footer__link-item:hover {
1312
- color: var(--vantage-footer-link-hover) !important;
1313
- }
1314
-
1315
- .footer__separator {
1316
- background-color: var(--vantage-footer-separator) !important;
1317
- }
1318
-
1319
- .footer__links {
1320
- justify-content: center !important;
1321
- }
1322
-
1323
- .footer__col {
1324
- text-align: center !important;
1325
- }
1326
-
1327
- .footer__logo {
1328
- height: auto !important;
1329
- width: auto !important;
1330
- max-height: var(--vantage-footer-logo-max-h);
1331
- }
1332
-
1333
- .footer__link-social {
1334
- display: inline-flex !important;
1335
- align-items: center !important;
1336
- justify-content: center !important;
1337
- width: 40px !important;
1338
- height: 40px !important;
1339
- margin: 0 8px 8px 0 !important;
1340
- padding: 8px !important;
1341
- border-radius: 8px !important;
1342
- background-color: rgba(255, 255, 255, 0.1) !important;
1343
- transition: all 0.3s ease !important;
1344
- text-decoration: none !important;
1345
- }
1346
-
1347
- .footer__link-social:hover {
1348
- background-color: rgba(255, 255, 255, 0.2) !important;
1349
- transform: translateY(-2px) !important;
1350
- text-decoration: none !important;
1351
- }
1352
-
1353
- .footer__link-social img {
1354
- width: 24px !important;
1355
- height: 24px !important;
1356
- filter: brightness(0) invert(1) !important;
1357
- transition: all 0.3s ease !important;
1358
- }
1359
-
1360
- .footer__link-social:hover img {
1361
- filter: brightness(0) invert(1) !important;
1362
- transform: scale(1.1) !important;
1363
- }
1364
-
1365
- [data-theme='dark'] .footer__link-social img {
1366
- filter: brightness(0) invert(1) !important;
1367
- }
1368
-
1369
- [data-theme='light'] .footer__link-social img {
1370
- filter: brightness(0) invert(1) !important;
1371
- }
1372
-
1373
1374
  /* ── DocSearch (Algolia) - full theme ──────────────────────────────── */
1374
1375
  :root {
1375
1376
  /* Core */
@@ -1378,7 +1379,7 @@ details summary[onclick]:hover {
1378
1379
  --docsearch-spacing: 12px;
1379
1380
  --docsearch-icon-stroke-width: 1.4;
1380
1381
  --docsearch-highlight-color: var(--iris-700);
1381
- --docsearch-muted-color: var(--ink-400);
1382
+ --docsearch-muted-color: var(--ink-500);
1382
1383
  /* Backdrop */
1383
1384
  --docsearch-container-background: rgba(11, 16, 32, 0.48);
1384
1385
  /* Modal */
@@ -1407,7 +1408,7 @@ details summary[onclick]:hover {
1407
1408
  --docsearch-primary-color: #818cf8;
1408
1409
  --docsearch-text-color: var(--ink-700);
1409
1410
  --docsearch-highlight-color: #818cf8;
1410
- --docsearch-muted-color: var(--ink-400);
1411
+ --docsearch-muted-color: var(--ink-500);
1411
1412
  /* Backdrop */
1412
1413
  --docsearch-container-background: rgba(0, 0, 0, 0.65);
1413
1414
  /* Modal */
@@ -1501,7 +1502,8 @@ button.DocSearch-Button {
1501
1502
  .DocSearch-Button-Key {
1502
1503
  background: transparent !important;
1503
1504
  box-shadow: none !important;
1504
- color: rgba(255, 255, 255, 0.7) !important;
1505
+ /* .7 measured 3.91:1 on the keys' doubly tinted background; .85 is 5.1:1. */
1506
+ color: rgba(255, 255, 255, 0.85) !important;
1505
1507
  font-family: var(--ifm-font-family-monospace) !important;
1506
1508
  font-size: 10px !important;
1507
1509
  font-weight: 500 !important;
@@ -1510,30 +1512,6 @@ button.DocSearch-Button {
1510
1512
  line-height: 1 !important;
1511
1513
  }
1512
1514
 
1513
- /* Medium: hide AskAI, shrink search pill */
1514
- @media (max-width: 1050px) {
1515
- .navbar__items [data-navbar-ask-ai] { display: none !important; }
1516
-
1517
- .DocSearch-Button {
1518
- min-width: 180px !important;
1519
- }
1520
- }
1521
-
1522
- /* Small: search pill drops to icon-only */
1523
- @media (max-width: 800px) {
1524
- .DocSearch-Button {
1525
- min-width: 0 !important;
1526
- width: 36px !important;
1527
- padding: 0 !important;
1528
- justify-content: center !important;
1529
- }
1530
- .DocSearch-Button-Placeholder,
1531
- .DocSearch-Button-Keys { display: none !important; }
1532
- .DocSearch-Button .DocSearch-Search-Icon {
1533
- color: rgba(255, 255, 255, 0.9) !important;
1534
- }
1535
- }
1536
-
1537
1515
  /* Dark mode: same squared style */
1538
1516
  [data-theme='dark'] .DocSearch-Button,
1539
1517
  [data-theme='dark'] button.DocSearch-Button {
@@ -1558,9 +1536,103 @@ button.DocSearch-Button {
1558
1536
  }
1559
1537
 
1560
1538
  [data-theme='dark'] .DocSearch-Button-Key {
1561
- color: rgba(255, 255, 255, 0.7) !important;
1539
+ /* Same 3.91:1 to 5.1:1 lift as the light rule above. */
1540
+ color: rgba(255, 255, 255, 0.85) !important;
1562
1541
  }
1563
1542
 
1543
+
1544
+ /* ── Search below 1200: a bare magnifying glass ─────────────────────── */
1545
+ /* The 400px pill above is a desktop design. Below 1200 the navbar also holds
1546
+ the hamburger or the logo, Ask AI and the theme toggle, and below 997
1547
+ Docusaurus parks the search container in a zero-width absolute box at the
1548
+ right edge, which centred the pill on that edge and hung it 185px off
1549
+ screen. Here search is a 44px transparent box with an 18px white icon at
1550
+ 85% opacity, the same treatment the Ask AI sparkle uses, so the two read
1551
+ as one row of icon controls. Selectors are (0,3,1) so they outrank the
1552
+ dark-mode rules above, which are (0,2,1). */
1553
+ @media (max-width: 1199px) {
1554
+ .navbar .navbar__items button.DocSearch-Button {
1555
+ width: 44px !important;
1556
+ min-width: 0 !important;
1557
+ height: 44px !important;
1558
+ padding: 0 !important;
1559
+ justify-content: center !important;
1560
+ position: static !important;
1561
+ left: auto !important;
1562
+ top: auto !important;
1563
+ transform: none !important;
1564
+ background: transparent !important;
1565
+ border: 0 !important;
1566
+ border-radius: 0 !important;
1567
+ box-shadow: none !important;
1568
+ color: rgba(255, 255, 255, 0.85) !important;
1569
+ }
1570
+
1571
+ .navbar .navbar__items button.DocSearch-Button:hover,
1572
+ .navbar .navbar__items button.DocSearch-Button:focus-visible {
1573
+ background: transparent !important;
1574
+ border-color: transparent !important;
1575
+ color: #ffffff !important;
1576
+ }
1577
+
1578
+ .navbar .navbar__items button.DocSearch-Button .DocSearch-Button-Container {
1579
+ flex: 0 0 auto;
1580
+ }
1581
+
1582
+ .navbar .navbar__items button.DocSearch-Button .DocSearch-Button-Placeholder,
1583
+ .navbar .navbar__items button.DocSearch-Button .DocSearch-Button-Keys {
1584
+ display: none !important;
1585
+ }
1586
+
1587
+ .navbar .navbar__items button.DocSearch-Button .DocSearch-Search-Icon {
1588
+ width: 18px !important;
1589
+ height: 18px !important;
1590
+ color: inherit !important;
1591
+ }
1592
+
1593
+ /* Let the container flow with the other right-hand items instead of
1594
+ Docusaurus's `position: absolute; right: 15px`. */
1595
+ .navbar .navbar__items--right [class*="navbarSearchContainer"] {
1596
+ position: static !important;
1597
+ right: auto !important;
1598
+ }
1599
+
1600
+ /* A site's Ask AI navbar item (data-navbar-ask-ai) takes the same box. It
1601
+ used to be hidden at <=1050px, which below 997 left phones with no
1602
+ persistent entry point to the assistant. */
1603
+ .navbar .navbar__items [data-navbar-ask-ai] {
1604
+ display: inline-flex !important;
1605
+ }
1606
+
1607
+ .navbar .navbar__items [data-navbar-ask-ai] button {
1608
+ width: 44px;
1609
+ height: 44px;
1610
+ }
1611
+ }
1612
+
1613
+ /* DocSearch goes full screen below 768. The modal keeps no radius there, the
1614
+ input is 16px so iOS does not zoom on focus, and the Cancel control and the
1615
+ result rows reach touch size. */
1616
+ @media (max-width: 768px) {
1617
+ .DocSearch-Container .DocSearch-Modal {
1618
+ border-radius: 0 !important;
1619
+ max-width: none !important;
1620
+ }
1621
+
1622
+ .DocSearch-Container .DocSearch-Input {
1623
+ font-size: 16px !important;
1624
+ }
1625
+
1626
+ .DocSearch-Container .DocSearch-Close {
1627
+ min-width: 44px;
1628
+ min-height: 44px;
1629
+ justify-content: center;
1630
+ }
1631
+
1632
+ .DocSearch-Container .DocSearch-Hit a {
1633
+ min-height: 48px;
1634
+ }
1635
+ }
1564
1636
  /* ── Search modal ───────────────────────────────────────────────────── */
1565
1637
  .DocSearch-Modal {
1566
1638
  border-radius: 12px !important;
@@ -1583,7 +1655,7 @@ button.DocSearch-Button {
1583
1655
  }
1584
1656
 
1585
1657
  [data-theme='dark'] .DocSearch-Hit-source {
1586
- color: #6b7494 !important;
1658
+ color: var(--ink-500) !important;
1587
1659
  }
1588
1660
 
1589
1661
  .DocSearch-Form {
@@ -1733,7 +1805,7 @@ button.DocSearch-Button {
1733
1805
  box-shadow: none !important;
1734
1806
  border: 1px solid var(--ink-300) !important;
1735
1807
  border-radius: 4px !important;
1736
- color: var(--ink-400) !important;
1808
+ color: var(--ink-500) !important;
1737
1809
  font-family: var(--ifm-font-family-monospace) !important;
1738
1810
  font-size: 10px !important;
1739
1811
  padding: 2px 5px !important;
@@ -1744,12 +1816,12 @@ button.DocSearch-Button {
1744
1816
 
1745
1817
  [data-theme='dark'] .DocSearch-Commands-Key {
1746
1818
  border-color: #2a3157 !important;
1747
- color: #6b7494 !important;
1819
+ color: var(--ink-500) !important;
1748
1820
  }
1749
1821
 
1750
1822
  .DocSearch-Label {
1751
1823
  font-size: 11px !important;
1752
- color: var(--ink-400) !important;
1824
+ color: var(--ink-500) !important;
1753
1825
  }
1754
1826
 
1755
1827
  /* Empty / no results state */
@@ -1846,12 +1918,18 @@ article {
1846
1918
  *::-webkit-scrollbar-thumb:hover { background: var(--ink-300); }
1847
1919
 
1848
1920
  /* ── Sidebar section labels (Products / Platform / Reference / About) ─ */
1921
+ /* ink-500, not ink-400, for every muted label in the theme. ink-400 is the
1922
+ ramp's fixed point, #6b7494 in both modes, and as text it measures 4.46:1
1923
+ on the light page, 4.24:1 on a light ink-50 surface and 3.68 to 4.10:1
1924
+ everywhere in dark, all under the 4.5:1 floor. ink-500 is mirrored
1925
+ (#4a5375 light, #9aa1bd dark) and clears 6.6:1 on every surface it is
1926
+ used on. ink-400 stays for decoration only: markers, separators, chevrons. */
1849
1927
  .sidebar-section-label {
1850
1928
  font-size: 14px;
1851
1929
  font-weight: 700;
1852
1930
  text-transform: uppercase;
1853
1931
  letter-spacing: 0.08em;
1854
- color: var(--ink-400);
1932
+ color: var(--ink-500);
1855
1933
  padding: 14px 0 6px;
1856
1934
  margin-top: 8px;
1857
1935
  border-top: 1px solid var(--ink-100);
@@ -1863,7 +1941,7 @@ article {
1863
1941
  padding: 10px 0 4px;
1864
1942
  text-transform: uppercase;
1865
1943
  letter-spacing: 0.06em;
1866
- color: var(--ink-400);
1944
+ color: var(--ink-500);
1867
1945
  text-align: left;
1868
1946
  }
1869
1947
  .menu > .menu__list > li:first-child .sidebar-section-label,
@@ -1937,17 +2015,55 @@ article {
1937
2015
  }
1938
2016
  }
1939
2017
 
1940
- /* Chat sidebar - push layout (navbar excluded) */
1941
- .main-wrapper {
1942
- transition: margin-right 0.3s ease-in-out;
2018
+ /* A site with no navbar.title still gets the version badge, alone in the
2019
+ centre. Between 997 and 1024 that is a bare git hash beside the logo on a
2020
+ tablet; hide it there. On wider screens the lone centred badge stays. */
2021
+ @media (max-width: 1024px) {
2022
+ .navbar__center-title:not(:has(.navbar__center-title-text)) {
2023
+ display: none;
2024
+ }
1943
2025
  }
1944
2026
 
1945
- body.chat-open .main-wrapper {
1946
- margin-right: 400px;
2027
+ /* ── Tablet landscape (997 to 1199) ────────────────────────────────── */
2028
+ /* Docusaurus treats this band as desktop: a 300px sidebar, a right-hand TOC
2029
+ column and the article between them. At 1024 the article is 505px and the
2030
+ TOC has about 60px of text, so headings break letter by letter. Treat the
2031
+ band as a wide tablet: a narrower sidebar, and the collapsible TOC in the
2032
+ article instead of the right column. The column is hidden through :has so
2033
+ the article regains the 25% it held. */
2034
+ @media (min-width: 997px) and (max-width: 1199px) {
2035
+ .theme-doc-sidebar-container,
2036
+ [class*="docsWrapper"] {
2037
+ --doc-sidebar-width: 260px;
2038
+ }
2039
+
2040
+ .row > .col.col--3:has(.theme-doc-toc-desktop) {
2041
+ display: none;
2042
+ }
2043
+
2044
+ [class*="docItemCol"] {
2045
+ max-width: 100% !important;
2046
+ }
2047
+
2048
+ /* theme-classic hides the collapsible TOC from 997 up (tocMobile module).
2049
+ It is server-rendered on every page, so showing it here costs nothing. */
2050
+ article .theme-doc-toc-mobile {
2051
+ display: block;
2052
+ }
1947
2053
  }
1948
2054
 
1949
- @media (max-width: 480px) {
1950
- body.chat-open .main-wrapper {
1951
- margin-right: 0;
2055
+ /* ── Phone rhythm ──────────────────────────────────────────────────── */
2056
+ /* The 3rem h2 and 2rem h3 top margins above are sized for a wide screen. On
2057
+ a 375px phone a 45px gap before every section reads as a page break. */
2058
+ @media (max-width: 600px) {
2059
+ .theme-doc-markdown .markdown h2,
2060
+ .theme-doc-markdown article h2 {
2061
+ margin-top: 2.25rem;
2062
+ font-size: 1.45rem;
2063
+ }
2064
+
2065
+ .theme-doc-markdown .markdown h3,
2066
+ .theme-doc-markdown article h3 {
2067
+ margin-top: 1.5rem;
1952
2068
  }
1953
2069
  }