@riverbankcms/sdk 0.77.0 → 0.77.1

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.
Files changed (46) hide show
  1. package/dist/{PreviewEditorSidebar-XSX7QKHQ.mjs → PreviewEditorSidebar-DVUG7GK4.mjs} +2 -2
  2. package/dist/{PreviewEditorUI-YZNEZ3QD.mjs → PreviewEditorUI-P7RN4CDS.mjs} +2 -2
  3. package/dist/SdkPreviewModeRuntime-KLPX47SE.mjs +8 -0
  4. package/dist/_dts/ai/src/contracts/proposals.d.ts +40 -30
  5. package/dist/_dts/blocks/src/customBlockRegistry.d.ts +20 -1
  6. package/dist/_dts/blocks/src/index.d.ts +2 -2
  7. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +2 -2
  8. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +5 -0
  9. package/dist/_dts/blocks/src/system/runtime/components/multi-step/runtimeFormValidation.d.ts +28 -0
  10. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +4 -4
  11. package/dist/_dts/sdk/src/contracts/theme.d.ts +1 -1
  12. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +2 -2
  13. package/dist/_dts/sdk/src/version.d.ts +1 -1
  14. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  15. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +27 -27
  16. package/dist/_dts/theme-core/src/schema.d.ts +26 -30
  17. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +1 -1
  18. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +4 -4
  19. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +63 -33
  20. package/dist/{chunk-EAWHBECW.mjs → chunk-2SPENC5M.mjs} +5 -5
  21. package/dist/{chunk-GSQX43EZ.mjs → chunk-IENWFSLO.mjs} +22 -41
  22. package/dist/{chunk-WLQBJN2Z.mjs → chunk-KWJPDZH2.mjs} +1815 -1338
  23. package/dist/{chunk-ANKDYZ2E.mjs → chunk-ZYEJLCTN.mjs} +1 -1
  24. package/dist/cli/index.mjs +381 -176
  25. package/dist/client/client.mjs +1574 -1252
  26. package/dist/client/hooks.mjs +369 -170
  27. package/dist/client/rendering.mjs +1588 -1257
  28. package/dist/preview-next/client/runtime.mjs +3 -3
  29. package/dist/{sdk-runtime-Q6MTR4KL.mjs → sdk-runtime-6UT2S7KZ.mjs} +4 -4
  30. package/dist/server/components.mjs +1561 -1239
  31. package/dist/server/config-validation.mjs +369 -170
  32. package/dist/server/config.mjs +369 -170
  33. package/dist/server/data.mjs +369 -170
  34. package/dist/server/index.mjs +1 -1
  35. package/dist/server/next.mjs +1547 -1234
  36. package/dist/server/page-converter.mjs +362 -165
  37. package/dist/server/prebuild.mjs +1 -1
  38. package/dist/server/rendering/server.mjs +1561 -1239
  39. package/dist/server/rendering.mjs +1561 -1239
  40. package/dist/server/routing.mjs +370 -171
  41. package/dist/server/server.mjs +370 -171
  42. package/dist/server/theme-bridge.mjs +1156 -1035
  43. package/dist/server/theme.mjs +79 -11
  44. package/dist/styles/index.css +1081 -1028
  45. package/package.json +1 -1
  46. package/dist/SdkPreviewModeRuntime-5FS5E6BI.mjs +0 -8
@@ -1651,9 +1651,9 @@
1651
1651
 
1652
1652
 
1653
1653
  @layer rb-theme {
1654
- /* Fallback defaults so preview doesn't look broken before ThemeScope injects vars */
1655
- :root {
1656
- /* --tb-primary: 17 24 39;
1654
+ /* Fallback defaults so preview doesn't look broken before ThemeScope injects vars */
1655
+ :root {
1656
+ /* --tb-primary: 17 24 39;
1657
1657
  --tb-text: 17 24 39;
1658
1658
  --tb-muted: 107 114 128;
1659
1659
  --tb-bg: 255 255 255;
@@ -1675,159 +1675,164 @@
1675
1675
 
1676
1676
  --motion-duration: 180ms;
1677
1677
  --motion-ease: cubic-bezier(.2,.8,.2,1); */
1678
- }
1678
+ }
1679
1679
 
1680
- /* -------------------------------------------------------------------------- */
1681
- /* Shared: Modal */
1682
- /* -------------------------------------------------------------------------- */
1680
+ /* -------------------------------------------------------------------------- */
1681
+ /* Shared: Modal */
1682
+ /* -------------------------------------------------------------------------- */
1683
1683
 
1684
- :where(.theme-scope) .rb-modal-overlay {
1685
- position: fixed;
1686
- inset: 0;
1687
- z-index: var(--rb-modal-z-index, 20000);
1688
- display: grid;
1689
- place-items: center;
1690
- padding: 1rem;
1691
- /* Keep a hard fallback so the overlay never becomes transparent due to invalid vars. */
1692
- background-color: rgba(0, 0, 0, 0.6);
1693
- background: var(--rb-modal-overlay-bg, rgba(0, 0, 0, 0.6));
1694
- }
1684
+ :where(.theme-scope) .rb-modal-overlay {
1685
+ position: fixed;
1686
+ inset: 0;
1687
+ z-index: var(--rb-modal-z-index, 20000);
1688
+ display: grid;
1689
+ place-items: center;
1690
+ padding: 1rem;
1691
+ /* Keep a hard fallback so the overlay never becomes transparent due to invalid vars. */
1692
+ background-color: rgba(0, 0, 0, 0.6);
1693
+ background: var(--rb-modal-overlay-bg, rgba(0, 0, 0, 0.6));
1694
+ }
1695
1695
 
1696
- :where(.theme-scope) .rb-modal {
1697
- width: min(var(--rb-modal-max-width, 560px), 100%);
1698
- background: var(--rb-modal-bg, rgb(var(--tb-surface)));
1699
- border: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1700
- border-radius: var(--rb-modal-radius, var(--radius-card));
1701
- box-shadow: var(--rb-modal-shadow, var(--shadow-lg, var(--shadow-elev)));
1702
- }
1696
+ :where(.theme-scope) .rb-modal {
1697
+ width: min(var(--rb-modal-max-width, 560px), 100%);
1698
+ background: var(--rb-modal-bg, rgb(var(--tb-surface)));
1699
+ border: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1700
+ border-radius: var(--rb-modal-radius, var(--radius-card));
1701
+ box-shadow: var(--rb-modal-shadow, var(--shadow-lg, var(--shadow-elev)));
1702
+ }
1703
1703
 
1704
- :where(.theme-scope) .rb-modal__header {
1705
- display: flex;
1706
- align-items: center;
1707
- justify-content: space-between;
1708
- gap: 1rem;
1709
- padding: 1rem 1rem 0.75rem;
1710
- border-bottom: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1711
- }
1704
+ :where(.theme-scope) .rb-modal__header {
1705
+ display: flex;
1706
+ align-items: center;
1707
+ justify-content: space-between;
1708
+ gap: 1rem;
1709
+ padding: 1rem 1rem 0.75rem;
1710
+ border-bottom: 1px solid var(--rb-modal-border, rgb(var(--tb-border)));
1711
+ }
1712
1712
 
1713
- :where(.theme-scope) .rb-modal__title {
1714
- margin: 0;
1715
- font-family: var(--font-heading);
1716
- font-size: 1.0625rem;
1717
- font-weight: 600;
1718
- color: rgb(var(--tb-text));
1719
- }
1713
+ :where(.theme-scope) .rb-modal__title {
1714
+ margin: 0;
1715
+ font-family: var(--font-heading);
1716
+ font-size: 1.0625rem;
1717
+ font-weight: 600;
1718
+ color: rgb(var(--tb-text));
1719
+ }
1720
1720
 
1721
- :where(.theme-scope) .rb-modal__close {
1722
- background: transparent;
1723
- border: none;
1724
- width: 2.25rem;
1725
- height: 2.25rem;
1726
- padding: 0;
1727
- line-height: 1;
1728
- color: rgb(var(--tb-mutedText));
1729
- cursor: pointer;
1730
- display: grid;
1731
- place-items: center;
1732
- border-radius: var(--radius-control);
1733
- }
1721
+ :where(.theme-scope) .rb-modal__close {
1722
+ background: transparent;
1723
+ border: none;
1724
+ width: 2.25rem;
1725
+ height: 2.25rem;
1726
+ padding: 0;
1727
+ line-height: 1;
1728
+ color: rgb(var(--tb-mutedText));
1729
+ cursor: pointer;
1730
+ display: grid;
1731
+ place-items: center;
1732
+ border-radius: var(--radius-control);
1733
+ }
1734
1734
 
1735
- :where(.theme-scope) .rb-modal__close:hover {
1736
- color: rgb(var(--tb-text));
1737
- background: rgba(var(--tb-border), 0.2);
1738
- }
1735
+ :where(.theme-scope) .rb-modal__close:hover {
1736
+ color: rgb(var(--tb-text));
1737
+ background: rgba(var(--tb-border), 0.2);
1738
+ }
1739
1739
 
1740
- :where(.theme-scope) .rb-modal__close:focus-visible {
1741
- outline: none;
1742
- box-shadow: 0 0 0 3px rgba(var(--tb-primary), 0.15);
1743
- }
1740
+ :where(.theme-scope) .rb-modal__close:focus-visible {
1741
+ outline: none;
1742
+ box-shadow: 0 0 0 3px rgba(var(--tb-primary), 0.15);
1743
+ }
1744
1744
 
1745
- :where(.theme-scope) .rb-modal__body {
1746
- padding: 0.875rem 1rem 1rem;
1747
- color: rgb(var(--tb-text));
1748
- font-size: 0.9375rem;
1749
- line-height: 1.45;
1750
- }
1745
+ :where(.theme-scope) .rb-modal__body {
1746
+ padding: 0.875rem 1rem 1rem;
1747
+ color: rgb(var(--tb-text));
1748
+ font-size: 0.9375rem;
1749
+ line-height: 1.45;
1750
+ }
1751
1751
 
1752
- /* -------------------------------------------------------------------------- */
1753
- /* Header: Mobile nav overlay transitions */
1754
- /* -------------------------------------------------------------------------- */
1752
+ /* -------------------------------------------------------------------------- */
1753
+ /* Header: Mobile nav overlay transitions */
1754
+ /* -------------------------------------------------------------------------- */
1755
1755
 
1756
- /* Keep the overlay in the DOM so we can transition opacity/transform.
1756
+ /* Keep the overlay in the DOM so we can transition opacity/transform.
1757
1757
  JS toggles `aria-hidden` + `inert` (via enhancer), and CSS uses pointer-events
1758
1758
  to prevent interaction while closed. */
1759
- .nav-mobile-overlay {
1760
- pointer-events: none;
1761
- /* Prevent transformed children (panel) from creating viewport scrollbars
1759
+ .nav-mobile-overlay {
1760
+ pointer-events: none;
1761
+ /* Prevent transformed children (panel) from creating viewport scrollbars
1762
1762
  during enter/exit transitions. */
1763
- overflow: hidden;
1764
- }
1765
-
1766
- .nav-mobile-overlay[aria-hidden="false"] {
1767
- pointer-events: auto;
1768
- }
1763
+ overflow: hidden;
1764
+ }
1769
1765
 
1770
- .nav-mobile-overlay .nav-mobile-backdrop {
1771
- opacity: 0;
1772
- transition: opacity var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1));
1773
- }
1766
+ .nav-mobile-overlay[aria-hidden='false'] {
1767
+ pointer-events: auto;
1768
+ }
1774
1769
 
1775
- .nav-mobile-overlay[aria-hidden="false"] .nav-mobile-backdrop {
1776
- opacity: 1;
1777
- }
1770
+ .nav-mobile-overlay .nav-mobile-backdrop {
1771
+ opacity: 0;
1772
+ transition: opacity var(--motion-duration, 180ms)
1773
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
1774
+ }
1778
1775
 
1779
- .nav-mobile-overlay .nav-mobile-panel {
1780
- opacity: 0;
1781
- transform: translate3d(12px, 0, 0);
1782
- overflow-x: hidden;
1783
- transition:
1784
- opacity var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1)),
1785
- transform var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1));
1786
- will-change: opacity, transform;
1787
- }
1776
+ .nav-mobile-overlay[aria-hidden='false'] .nav-mobile-backdrop {
1777
+ opacity: 1;
1778
+ }
1788
1779
 
1789
- .nav-mobile-overlay[aria-hidden="false"] .nav-mobile-panel {
1790
- opacity: 1;
1791
- transform: translate3d(0, 0, 0);
1792
- }
1780
+ .nav-mobile-overlay .nav-mobile-panel {
1781
+ opacity: 0;
1782
+ transform: translate3d(12px, 0, 0);
1783
+ overflow-x: hidden;
1784
+ transition:
1785
+ opacity var(--motion-duration, 180ms)
1786
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1)),
1787
+ transform var(--motion-duration, 180ms)
1788
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
1789
+ will-change: opacity, transform;
1790
+ }
1793
1791
 
1794
- /* -------------------------------------------------------------------------- */
1795
- /* Header: Mobile toggle hamburger -> X */
1796
- /* -------------------------------------------------------------------------- */
1792
+ .nav-mobile-overlay[aria-hidden='false'] .nav-mobile-panel {
1793
+ opacity: 1;
1794
+ transform: translate3d(0, 0, 0);
1795
+ }
1797
1796
 
1798
- .nav-mobile-toggle .nav-mobile-bar {
1799
- transform-origin: center;
1800
- transition:
1801
- transform var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1)),
1802
- opacity var(--motion-duration, 180ms) var(--motion-ease, cubic-bezier(.2,.8,.2,1));
1803
- will-change: transform, opacity;
1804
- }
1797
+ /* -------------------------------------------------------------------------- */
1798
+ /* Header: Mobile toggle hamburger -> X */
1799
+ /* -------------------------------------------------------------------------- */
1805
1800
 
1806
- .nav-mobile-toggle[aria-expanded="true"] .nav-mobile-bar-top {
1807
- transform: translateY(6px) rotate(45deg);
1808
- }
1801
+ .nav-mobile-toggle .nav-mobile-bar {
1802
+ transform-origin: center;
1803
+ transition:
1804
+ transform var(--motion-duration, 180ms)
1805
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1)),
1806
+ opacity var(--motion-duration, 180ms)
1807
+ var(--motion-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
1808
+ will-change: transform, opacity;
1809
+ }
1809
1810
 
1810
- .nav-mobile-toggle[aria-expanded="true"] .nav-mobile-bar-middle {
1811
- opacity: 0;
1812
- }
1811
+ .nav-mobile-toggle[aria-expanded='true'] .nav-mobile-bar-top {
1812
+ transform: translateY(6px) rotate(45deg);
1813
+ }
1813
1814
 
1814
- .nav-mobile-toggle[aria-expanded="true"] .nav-mobile-bar-bottom {
1815
- transform: translateY(-6px) rotate(-45deg);
1816
- }
1815
+ .nav-mobile-toggle[aria-expanded='true'] .nav-mobile-bar-middle {
1816
+ opacity: 0;
1817
+ }
1817
1818
 
1818
- @media (prefers-reduced-motion: reduce) {
1819
- .nav-mobile-overlay .nav-mobile-backdrop,
1820
- .nav-mobile-overlay .nav-mobile-panel {
1821
- transition: none;
1822
- transform: none;
1819
+ .nav-mobile-toggle[aria-expanded='true'] .nav-mobile-bar-bottom {
1820
+ transform: translateY(-6px) rotate(-45deg);
1823
1821
  }
1824
1822
 
1825
- .nav-mobile-toggle .nav-mobile-bar {
1826
- transition: none;
1823
+ @media (prefers-reduced-motion: reduce) {
1824
+ .nav-mobile-overlay .nav-mobile-backdrop,
1825
+ .nav-mobile-overlay .nav-mobile-panel {
1826
+ transition: none;
1827
+ transform: none;
1828
+ }
1829
+
1830
+ .nav-mobile-toggle .nav-mobile-bar {
1831
+ transition: none;
1832
+ }
1827
1833
  }
1828
- }
1829
1834
 
1830
- /*
1835
+ /*
1831
1836
  * Theme Scope Styles
1832
1837
  *
1833
1838
  * IMPORTANT: All :where(.theme-scope) selectors are wrapped in :where() to give them
@@ -1837,782 +1842,830 @@
1837
1842
  * Example: `h4 { color: white; }` will override `:where(:where(.theme-scope)) h4`
1838
1843
  */
1839
1844
 
1840
- :where(:where(.theme-scope)) {
1841
- font-family: var(--font-body);
1842
- letter-spacing: var(--ls-body);
1843
- line-height: var(--lh-body);
1844
- font-weight: var(--font-weight-body);
1845
-
1846
- & h1,
1847
- & h2,
1848
- & h3,
1849
- & h4,
1850
- & h5,
1851
- & h6 {
1852
- font-family: var(--font-heading);
1853
- /* Color is set by generateTypographyCss.ts with full cascade:
1845
+ :where(:where(.theme-scope)) {
1846
+ font-family: var(--font-body);
1847
+ letter-spacing: var(--ls-body);
1848
+ line-height: var(--lh-body);
1849
+ font-weight: var(--font-weight-body);
1850
+
1851
+ & h1,
1852
+ & h2,
1853
+ & h3,
1854
+ & h4,
1855
+ & h5,
1856
+ & h6 {
1857
+ font-family: var(--font-heading);
1858
+ /* Color is set by generateTypographyCss.ts with full cascade:
1854
1859
  --section-heading-color -> --section-text-color -> --hc-hN -> --hc-heading -> inherit */
1855
- font-weight: var(--font-weight-heading);
1856
- text-transform: var(--tt-heading);
1857
- font-variant-caps: var(--fv-heading);
1860
+ font-weight: var(--font-weight-heading);
1861
+ text-transform: var(--tt-heading);
1862
+ font-variant-caps: var(--fv-heading);
1863
+ }
1858
1864
  }
1859
- }
1860
1865
 
1861
- /* Heading typographic overrides (fallback to defaults when not provided) */
1862
- :where(:where(.theme-scope)) h1 {
1863
- letter-spacing: var(--ls-h1, var(--ls-heading));
1864
- line-height: var(--lh-h1, var(--lh-heading));
1865
- font-weight: var(--fw-h1, var(--font-weight-heading));
1866
- }
1867
- :where(:where(.theme-scope)) h2 {
1868
- letter-spacing: var(--ls-h2, var(--ls-heading));
1869
- line-height: var(--lh-h2, var(--lh-heading));
1870
- font-weight: var(--fw-h2, var(--font-weight-heading));
1871
- }
1872
- :where(:where(.theme-scope)) h3 {
1873
- letter-spacing: var(--ls-h3, var(--ls-heading));
1874
- line-height: var(--lh-h3, var(--lh-heading));
1875
- font-weight: var(--fw-h3, var(--font-weight-heading));
1876
- }
1877
- :where(:where(.theme-scope)) h4,
1878
- :where(:where(.theme-scope)) h5,
1879
- :where(:where(.theme-scope)) h6 {
1880
- letter-spacing: var(--ls-heading);
1881
- line-height: var(--lh-heading);
1882
- }
1883
- :where(:where(.theme-scope)) h4 {
1884
- font-weight: var(--fw-h4, var(--font-weight-heading));
1885
- }
1886
- :where(:where(.theme-scope)) h5 {
1887
- font-weight: var(--fw-h5, var(--font-weight-heading));
1888
- }
1889
- :where(:where(.theme-scope)) h6 {
1890
- font-weight: var(--fw-h6, var(--font-weight-heading));
1891
- }
1866
+ /* Heading typographic overrides (fallback to defaults when not provided) */
1867
+ :where(:where(.theme-scope)) h1 {
1868
+ letter-spacing: var(--ls-h1, var(--ls-heading));
1869
+ line-height: var(--lh-h1, var(--lh-heading));
1870
+ font-weight: var(--fw-h1, var(--font-weight-heading));
1871
+ }
1872
+ :where(:where(.theme-scope)) h2 {
1873
+ letter-spacing: var(--ls-h2, var(--ls-heading));
1874
+ line-height: var(--lh-h2, var(--lh-heading));
1875
+ font-weight: var(--fw-h2, var(--font-weight-heading));
1876
+ }
1877
+ :where(:where(.theme-scope)) h3 {
1878
+ letter-spacing: var(--ls-h3, var(--ls-heading));
1879
+ line-height: var(--lh-h3, var(--lh-heading));
1880
+ font-weight: var(--fw-h3, var(--font-weight-heading));
1881
+ }
1882
+ :where(:where(.theme-scope)) h4,
1883
+ :where(:where(.theme-scope)) h5,
1884
+ :where(:where(.theme-scope)) h6 {
1885
+ letter-spacing: var(--ls-heading);
1886
+ line-height: var(--lh-heading);
1887
+ }
1888
+ :where(:where(.theme-scope)) h4 {
1889
+ font-weight: var(--fw-h4, var(--font-weight-heading));
1890
+ }
1891
+ :where(:where(.theme-scope)) h5 {
1892
+ font-weight: var(--fw-h5, var(--font-weight-heading));
1893
+ }
1894
+ :where(:where(.theme-scope)) h6 {
1895
+ font-weight: var(--fw-h6, var(--font-weight-heading));
1896
+ }
1892
1897
 
1893
- /* Rich text element spacing based on theme rhythm */
1894
- :where(.theme-scope) .rb-prose h1 {
1895
- margin-top: calc(var(--rt-space-y) * 1.6);
1896
- margin-bottom: calc(var(--rt-space-y) * 0.8);
1897
- }
1898
- :where(.theme-scope) .rb-prose h2 {
1899
- margin-top: calc(var(--rt-space-y) * 1.4);
1900
- margin-bottom: calc(var(--rt-space-y) * 0.7);
1901
- }
1902
- :where(.theme-scope) .rb-prose h3 {
1903
- margin-top: calc(var(--rt-space-y) * 1.2);
1904
- margin-bottom: calc(var(--rt-space-y) * 0.6);
1905
- }
1906
- :where(.theme-scope) .rb-prose h4 {
1907
- margin-top: calc(var(--rt-space-y) * 1);
1908
- margin-bottom: calc(var(--rt-space-y) * 0.5);
1909
- }
1910
- :where(.theme-scope) .rb-prose h5 {
1911
- margin-top: calc(var(--rt-space-y) * 0.9);
1912
- margin-bottom: calc(var(--rt-space-y) * 0.45);
1913
- }
1914
- :where(.theme-scope) .rb-prose h6 {
1915
- margin-top: calc(var(--rt-space-y) * 0.8);
1916
- margin-bottom: calc(var(--rt-space-y) * 0.4);
1917
- }
1918
- :where(.theme-scope) .rb-prose p {
1919
- margin: var(--rt-space-y) 0;
1920
- }
1921
- :where(.theme-scope) .rb-prose img {
1922
- display: block;
1923
- max-width: 100%;
1924
- height: auto;
1925
- margin: calc(var(--rt-space-y) * 1) 0;
1926
- }
1927
- :where(.theme-scope) .rb-prose ul,
1928
- :where(.theme-scope) .rb-prose ol {
1929
- margin: var(--rt-space-y) 0;
1930
- padding-left: 1.25rem;
1931
- }
1932
- :where(.theme-scope) .rb-prose ul {
1933
- list-style-type: disc;
1934
- }
1935
- :where(.theme-scope) .rb-prose ol {
1936
- list-style-type: decimal;
1937
- }
1938
- :where(.theme-scope) .rb-prose ul ul {
1939
- list-style-type: circle;
1940
- }
1941
- :where(.theme-scope) .rb-prose ul ul ul {
1942
- list-style-type: square;
1943
- }
1944
- :where(.theme-scope) .rb-prose ol ol {
1945
- list-style-type: lower-alpha;
1946
- }
1947
- :where(.theme-scope) .rb-prose ol ol ol {
1948
- list-style-type: lower-roman;
1949
- }
1950
- :where(.theme-scope) .rb-prose blockquote {
1951
- margin: calc(var(--rt-space-y) * 1) 0;
1952
- padding-left: 1rem;
1953
- border-left: 3px solid rgb(var(--tb-border));
1954
- }
1955
- :where(.theme-scope) .rb-prose > :first-child {
1956
- margin-top: 0;
1957
- }
1958
- :where(.theme-scope) .rb-prose > :last-child {
1959
- margin-bottom: 0;
1960
- }
1898
+ /* Rich text element spacing based on theme rhythm */
1899
+ :where(.theme-scope) .rb-prose h1 {
1900
+ margin-top: calc(var(--rt-space-y) * 1.6);
1901
+ margin-bottom: calc(var(--rt-space-y) * 0.8);
1902
+ }
1903
+ :where(.theme-scope) .rb-prose h2 {
1904
+ margin-top: calc(var(--rt-space-y) * 1.4);
1905
+ margin-bottom: calc(var(--rt-space-y) * 0.7);
1906
+ }
1907
+ :where(.theme-scope) .rb-prose h3 {
1908
+ margin-top: calc(var(--rt-space-y) * 1.2);
1909
+ margin-bottom: calc(var(--rt-space-y) * 0.6);
1910
+ }
1911
+ :where(.theme-scope) .rb-prose h4 {
1912
+ margin-top: calc(var(--rt-space-y) * 1);
1913
+ margin-bottom: calc(var(--rt-space-y) * 0.5);
1914
+ }
1915
+ :where(.theme-scope) .rb-prose h5 {
1916
+ margin-top: calc(var(--rt-space-y) * 0.9);
1917
+ margin-bottom: calc(var(--rt-space-y) * 0.45);
1918
+ }
1919
+ :where(.theme-scope) .rb-prose h6 {
1920
+ margin-top: calc(var(--rt-space-y) * 0.8);
1921
+ margin-bottom: calc(var(--rt-space-y) * 0.4);
1922
+ }
1923
+ :where(.theme-scope) .rb-prose p {
1924
+ margin: var(--rt-space-y) 0;
1925
+ }
1926
+ :where(.theme-scope) .rb-prose img {
1927
+ display: block;
1928
+ max-width: 100%;
1929
+ height: auto;
1930
+ margin: calc(var(--rt-space-y) * 1) 0;
1931
+ }
1932
+ :where(.theme-scope) .rb-prose ul,
1933
+ :where(.theme-scope) .rb-prose ol {
1934
+ margin: var(--rt-space-y) 0;
1935
+ padding-left: 1.25rem;
1936
+ }
1937
+ :where(.theme-scope) .rb-prose ul {
1938
+ list-style-type: disc;
1939
+ }
1940
+ :where(.theme-scope) .rb-prose ol {
1941
+ list-style-type: decimal;
1942
+ }
1943
+ :where(.theme-scope) .rb-prose ul ul {
1944
+ list-style-type: circle;
1945
+ }
1946
+ :where(.theme-scope) .rb-prose ul ul ul {
1947
+ list-style-type: square;
1948
+ }
1949
+ :where(.theme-scope) .rb-prose ol ol {
1950
+ list-style-type: lower-alpha;
1951
+ }
1952
+ :where(.theme-scope) .rb-prose ol ol ol {
1953
+ list-style-type: lower-roman;
1954
+ }
1955
+ :where(.theme-scope) .rb-prose blockquote {
1956
+ margin: calc(var(--rt-space-y) * 1) 0;
1957
+ padding-left: 1rem;
1958
+ border-left: 3px solid rgb(var(--tb-border));
1959
+ }
1960
+ :where(.theme-scope) .rb-prose > :first-child {
1961
+ margin-top: 0;
1962
+ }
1963
+ :where(.theme-scope) .rb-prose > :last-child {
1964
+ margin-bottom: 0;
1965
+ }
1961
1966
 
1962
- /* Prose color overrides - use theme CSS variables instead of hardcoded colors
1967
+ /* Prose color overrides - use theme CSS variables instead of hardcoded colors
1963
1968
  * This makes prose elements automatically adapt to light/dark themes */
1964
- :where(.theme-scope) .rb-prose {
1965
- /* Body text inherits from parent, which should already have theme color */
1966
- color: inherit;
1967
- }
1969
+ :where(.theme-scope) .rb-prose {
1970
+ /* Body text inherits from parent, which should already have theme color */
1971
+ color: inherit;
1972
+ }
1968
1973
 
1969
- /* Prose size variants (theme-aware, CSS-only) */
1970
- :where(.theme-scope) {
1971
- /* Body scale + rhythm come from the active theme runtime (ThemeScope) */
1972
- --rb-prose-sm-font-size: calc(var(--fs-body, 16px) * 0.875);
1973
- --rb-prose-sm-line-height: calc(var(--lh-body, 1.65) - 0.05);
1974
+ /* Prose size variants (theme-aware, CSS-only) */
1975
+ :where(.theme-scope) {
1976
+ /* Body scale + rhythm come from the active theme runtime (ThemeScope) */
1977
+ --rb-prose-sm-font-size: calc(var(--fs-body, 16px) * 0.875);
1978
+ --rb-prose-sm-line-height: calc(var(--lh-body, 1.65) - 0.05);
1974
1979
 
1975
- --rb-prose-lg-font-size: calc(var(--fs-body, 16px) * 1.125);
1976
- --rb-prose-lg-line-height: calc(var(--lh-body, 1.65) + 0.1);
1980
+ --rb-prose-lg-font-size: calc(var(--fs-body, 16px) * 1.125);
1981
+ --rb-prose-lg-line-height: calc(var(--lh-body, 1.65) + 0.1);
1977
1982
 
1978
- /* Applied at >= 640px; below that, rb-prose-lg is typically used */
1979
- --rb-prose-xl-sm-font-size: calc(var(--fs-body, 16px) * 1.25);
1980
- --rb-prose-xl-sm-line-height: calc(var(--lh-body, 1.65) + 0.15);
1981
- }
1983
+ /* Applied at >= 640px; below that, rb-prose-lg is typically used */
1984
+ --rb-prose-xl-sm-font-size: calc(var(--fs-body, 16px) * 1.25);
1985
+ --rb-prose-xl-sm-line-height: calc(var(--lh-body, 1.65) + 0.15);
1986
+ }
1982
1987
 
1983
- :where(.theme-scope) .rb-prose-sm {
1984
- font-size: var(--rb-prose-sm-font-size);
1985
- line-height: var(--rb-prose-sm-line-height);
1986
- }
1987
- :where(.theme-scope) .rb-prose-lg {
1988
- font-size: var(--rb-prose-lg-font-size);
1989
- line-height: var(--rb-prose-lg-line-height);
1990
- }
1991
- @media (min-width: 640px) {
1992
- :where(.theme-scope) .rb-prose-xl-sm {
1993
- font-size: var(--rb-prose-xl-sm-font-size);
1994
- line-height: var(--rb-prose-xl-sm-line-height);
1988
+ :where(.theme-scope) .rb-prose-sm {
1989
+ font-size: var(--rb-prose-sm-font-size);
1990
+ line-height: var(--rb-prose-sm-line-height);
1991
+ }
1992
+ :where(.theme-scope) .rb-prose-lg {
1993
+ font-size: var(--rb-prose-lg-font-size);
1994
+ line-height: var(--rb-prose-lg-line-height);
1995
+ }
1996
+ @media (min-width: 640px) {
1997
+ :where(.theme-scope) .rb-prose-xl-sm {
1998
+ font-size: var(--rb-prose-xl-sm-font-size);
1999
+ line-height: var(--rb-prose-xl-sm-line-height);
2000
+ }
1995
2001
  }
1996
- }
1997
2002
 
1998
- /* Neutral prose uses theme text color by default */
1999
- :where(.theme-scope) .rb-prose-neutral {
2000
- color: rgb(var(--tb-text));
2001
- }
2003
+ /* Neutral prose uses theme text color by default */
2004
+ :where(.theme-scope) .rb-prose-neutral {
2005
+ color: rgb(var(--tb-text));
2006
+ }
2002
2007
 
2003
- :where(.theme-scope) .rb-prose p,
2004
- :where(.theme-scope) .rb-prose li {
2005
- /* Body text uses inherited color (set by fragment via textColorStyle) */
2006
- color: inherit;
2007
- }
2008
+ :where(.theme-scope) .rb-prose p,
2009
+ :where(.theme-scope) .rb-prose li {
2010
+ /* Body text uses inherited color (set by fragment via textColorStyle) */
2011
+ color: inherit;
2012
+ }
2008
2013
 
2009
- :where(.theme-scope) .rb-prose h1,
2010
- :where(.theme-scope) .rb-prose h2,
2011
- :where(.theme-scope) .rb-prose h3,
2012
- :where(.theme-scope) .rb-prose h4,
2013
- :where(.theme-scope) .rb-prose h5,
2014
- :where(.theme-scope) .rb-prose h6 {
2015
- /* Headings inherit from parent or use theme text color */
2016
- color: inherit;
2017
- }
2014
+ :where(.theme-scope) .rb-prose h1,
2015
+ :where(.theme-scope) .rb-prose h2,
2016
+ :where(.theme-scope) .rb-prose h3,
2017
+ :where(.theme-scope) .rb-prose h4,
2018
+ :where(.theme-scope) .rb-prose h5,
2019
+ :where(.theme-scope) .rb-prose h6 {
2020
+ /* Headings inherit from parent or use theme text color */
2021
+ color: inherit;
2022
+ }
2018
2023
 
2019
- :where(.theme-scope) .rb-prose strong,
2020
- :where(.theme-scope) .rb-prose b {
2021
- /* Bold text inherits color but increases weight */
2022
- color: inherit;
2023
- font-weight: 600;
2024
- }
2024
+ :where(.theme-scope) .rb-prose strong,
2025
+ :where(.theme-scope) .rb-prose b {
2026
+ /* Bold text inherits color but increases weight */
2027
+ color: inherit;
2028
+ font-weight: 600;
2029
+ }
2025
2030
 
2026
- :where(.theme-scope) .rb-prose em,
2027
- :where(.theme-scope) .rb-prose i {
2028
- /* Italic text inherits color */
2029
- color: inherit;
2030
- }
2031
+ :where(.theme-scope) .rb-prose em,
2032
+ :where(.theme-scope) .rb-prose i {
2033
+ /* Italic text inherits color */
2034
+ color: inherit;
2035
+ }
2031
2036
 
2032
- :where(.theme-scope) .rb-prose a {
2033
- /* Global prose link style with theme-level overrides */
2034
- color: var(--rb-prose-link-color, rgb(var(--tb-primary)));
2035
- text-decoration-line: var(--rb-prose-link-decoration-line, underline);
2036
- text-decoration-style: var(--rb-prose-link-underline-style, solid);
2037
- text-decoration-thickness: var(--rb-prose-link-underline-thickness, from-font);
2038
- text-underline-offset: var(--rb-prose-link-underline-offset, 0.14em);
2039
- text-decoration-color: var(--rb-prose-link-decoration-color, rgba(var(--tb-primary), 0.3));
2040
- transition:
2041
- color 150ms ease,
2042
- text-decoration-color 150ms ease;
2043
- }
2037
+ :where(.theme-scope) .rb-prose a {
2038
+ /* Global prose link style with theme-level overrides */
2039
+ color: var(--rb-prose-link-color, rgb(var(--tb-primary)));
2040
+ text-decoration-line: var(--rb-prose-link-decoration-line, underline);
2041
+ text-decoration-style: var(--rb-prose-link-underline-style, solid);
2042
+ text-decoration-thickness: var(
2043
+ --rb-prose-link-underline-thickness,
2044
+ from-font
2045
+ );
2046
+ text-underline-offset: var(--rb-prose-link-underline-offset, 0.14em);
2047
+ text-decoration-color: var(
2048
+ --rb-prose-link-decoration-color,
2049
+ rgba(var(--tb-primary), 0.3)
2050
+ );
2051
+ transition:
2052
+ color 150ms ease,
2053
+ text-decoration-color 150ms ease;
2054
+ }
2044
2055
 
2045
- :where(.theme-scope) .rb-prose a:hover {
2046
- color: var(--rb-prose-link-hover-color, var(--rb-prose-link-color, rgb(var(--tb-primary))));
2047
- text-decoration-color: var(
2048
- --rb-prose-link-hover-decoration-color,
2049
- var(--rb-prose-link-hover-color, var(--rb-prose-link-color, rgb(var(--tb-primary))))
2050
- );
2051
- }
2056
+ :where(.theme-scope) .rb-prose a:hover {
2057
+ color: var(
2058
+ --rb-prose-link-hover-color,
2059
+ var(--rb-prose-link-color, rgb(var(--tb-primary)))
2060
+ );
2061
+ text-decoration-color: var(
2062
+ --rb-prose-link-hover-decoration-color,
2063
+ var(
2064
+ --rb-prose-link-hover-color,
2065
+ var(--rb-prose-link-color, rgb(var(--tb-primary)))
2066
+ )
2067
+ );
2068
+ }
2052
2069
 
2053
- :where(.theme-scope) .rb-prose blockquote {
2054
- /* Blockquotes use muted text color */
2055
- color: rgb(var(--tb-mutedText));
2056
- border-left-color: rgb(var(--tb-border));
2057
- }
2070
+ :where(.theme-scope) .rb-prose blockquote {
2071
+ /* Blockquotes use muted text color */
2072
+ color: rgb(var(--tb-mutedText));
2073
+ border-left-color: rgb(var(--tb-border));
2074
+ }
2058
2075
 
2059
- :where(.theme-scope) .fragment-quote-body blockquote {
2060
- /* Quote fragment should not get the generic prose blockquote left border/indent. */
2061
- border-left: 0;
2062
- padding-left: 0;
2063
- }
2076
+ :where(.theme-scope) .fragment-quote-body blockquote {
2077
+ /* Quote fragment should not get the generic prose blockquote left border/indent. */
2078
+ border-left: 0;
2079
+ padding-left: 0;
2080
+ }
2064
2081
 
2065
- :where(.theme-scope) .rb-columns-equal-height {
2066
- /* Needed so we can use container query units (`cqw`) for width-based tile sizing. */
2067
- container-type: inline-size;
2082
+ :where(.theme-scope) .rb-columns-equal-height {
2083
+ /* Needed so we can use container query units (`cqw`) for width-based tile sizing. */
2084
+ container-type: inline-size;
2068
2085
 
2069
- --rb-columns-cols: var(--rb-columns-cols-mobile, 1);
2070
- --rb-columns-gap: var(--rb-semantic-gap, 0px);
2071
- --rb-columns-tile-ar: var(--rb-columns-tile-ar, 1);
2086
+ --rb-columns-cols: var(--rb-columns-cols-mobile, 1);
2087
+ --rb-columns-gap: var(--rb-semantic-gap, 0px);
2088
+ --rb-columns-tile-ar: var(--rb-columns-tile-ar, 1);
2072
2089
 
2073
- --rb-columns-tile-w: calc(
2074
- (100cqw - (var(--rb-columns-cols) - 1) * var(--rb-columns-gap)) / var(--rb-columns-cols)
2075
- );
2076
- --rb-columns-tile-h: calc(var(--rb-columns-tile-w) * var(--rb-columns-tile-ar));
2077
- }
2090
+ --rb-columns-tile-w: calc(
2091
+ (100cqw - (var(--rb-columns-cols) - 1) * var(--rb-columns-gap)) /
2092
+ var(--rb-columns-cols)
2093
+ );
2094
+ --rb-columns-tile-h: calc(
2095
+ var(--rb-columns-tile-w) * var(--rb-columns-tile-ar)
2096
+ );
2097
+ }
2078
2098
 
2079
- @media (min-width: 768px) {
2080
- :where(.theme-scope) .rb-columns-equal-height {
2081
- --rb-columns-cols: var(--rb-columns-cols-md, var(--rb-columns-cols));
2099
+ @media (min-width: 768px) {
2100
+ :where(.theme-scope) .rb-columns-equal-height {
2101
+ --rb-columns-cols: var(--rb-columns-cols-md, var(--rb-columns-cols));
2102
+ }
2082
2103
  }
2083
- }
2084
2104
 
2085
- @media (min-width: 1024px) {
2086
- :where(.theme-scope) .rb-columns-equal-height {
2087
- --rb-columns-cols: var(--rb-columns-cols-lg, var(--rb-columns-cols));
2105
+ @media (min-width: 1024px) {
2106
+ :where(.theme-scope) .rb-columns-equal-height {
2107
+ --rb-columns-cols: var(--rb-columns-cols-lg, var(--rb-columns-cols));
2108
+ }
2088
2109
  }
2089
- }
2090
2110
 
2091
- @media (min-width: 1280px) {
2092
- :where(.theme-scope) .rb-columns-equal-height {
2093
- --rb-columns-cols: var(--rb-columns-cols-xl, var(--rb-columns-cols));
2111
+ @media (min-width: 1280px) {
2112
+ :where(.theme-scope) .rb-columns-equal-height {
2113
+ --rb-columns-cols: var(--rb-columns-cols-xl, var(--rb-columns-cols));
2114
+ }
2094
2115
  }
2095
- }
2096
2116
 
2097
- :where(.theme-scope) .rb-columns-equal-height > * {
2098
- height: var(--rb-columns-tile-h);
2099
- }
2117
+ :where(.theme-scope) .rb-columns-equal-height > * {
2118
+ height: var(--rb-columns-tile-h);
2119
+ }
2100
2120
 
2101
- :where(.theme-scope) .rb-columns-equal-height > .rb-h-full {
2102
- /*
2121
+ :where(.theme-scope) .rb-columns-equal-height > .rb-h-full {
2122
+ /*
2103
2123
  Grid items commonly include `rb-h-full` (height: 100%) to stretch within
2104
2124
  their row. In equal-height mode we instead want a fixed tile height so the
2105
2125
  spanning editorial tile doesn't become taller due to its larger width +
2106
2126
  aspect-ratio.
2107
2127
  */
2108
- height: var(--rb-columns-tile-h);
2109
- min-height: var(--rb-columns-tile-h);
2110
- max-height: var(--rb-columns-tile-h);
2111
- }
2128
+ height: var(--rb-columns-tile-h);
2129
+ min-height: var(--rb-columns-tile-h);
2130
+ max-height: var(--rb-columns-tile-h);
2131
+ }
2112
2132
 
2113
- :where(.theme-scope) .rb-columns-equal-height .fragment-image-frame {
2114
- width: 100%;
2115
- height: 100%;
2116
- overflow: hidden;
2117
- }
2133
+ :where(.theme-scope) .rb-columns-equal-height .fragment-image-frame {
2134
+ width: 100%;
2135
+ height: 100%;
2136
+ overflow: hidden;
2137
+ }
2118
2138
 
2119
- :where(.theme-scope) .rb-columns-equal-height .fragment-image {
2120
- width: 100%;
2121
- height: 100%;
2122
- object-fit: cover;
2123
- }
2139
+ :where(.theme-scope) .rb-columns-equal-height .fragment-image {
2140
+ width: 100%;
2141
+ height: 100%;
2142
+ object-fit: cover;
2143
+ }
2124
2144
 
2125
- :where(.theme-scope) .rb-prose code {
2126
- /* Inline code uses text color with surface background */
2127
- color: inherit;
2128
- background-color: rgba(var(--tb-surface), 0.5);
2129
- padding: 0.125rem 0.25rem;
2130
- border-radius: 0.25rem;
2131
- font-size: 0.875em;
2132
- }
2145
+ :where(.theme-scope) .rb-prose code {
2146
+ /* Inline code uses text color with surface background */
2147
+ color: inherit;
2148
+ background-color: rgba(var(--tb-surface), 0.5);
2149
+ padding: 0.125rem 0.25rem;
2150
+ border-radius: 0.25rem;
2151
+ font-size: 0.875em;
2152
+ }
2133
2153
 
2134
- :where(.theme-scope) .rb-prose pre {
2135
- /* Code blocks */
2136
- background-color: rgb(var(--tb-surface));
2137
- color: rgb(var(--tb-text));
2138
- border: 1px solid rgb(var(--tb-border));
2139
- border-radius: 0.5rem;
2140
- padding: 1rem;
2141
- overflow-x: auto;
2142
- }
2154
+ :where(.theme-scope) .rb-prose pre {
2155
+ /* Code blocks */
2156
+ background-color: rgb(var(--tb-surface));
2157
+ color: rgb(var(--tb-text));
2158
+ border: 1px solid rgb(var(--tb-border));
2159
+ border-radius: 0.5rem;
2160
+ padding: 1rem;
2161
+ overflow-x: auto;
2162
+ }
2143
2163
 
2144
- :where(.theme-scope) .rb-prose pre code {
2145
- /* Code inside pre blocks */
2146
- background-color: transparent;
2147
- padding: 0;
2148
- color: inherit;
2149
- }
2164
+ :where(.theme-scope) .rb-prose pre code {
2165
+ /* Code inside pre blocks */
2166
+ background-color: transparent;
2167
+ padding: 0;
2168
+ color: inherit;
2169
+ }
2150
2170
 
2151
- :where(.theme-scope) .rb-prose hr {
2152
- /* Horizontal rules */
2153
- border-color: rgb(var(--tb-border));
2154
- }
2171
+ :where(.theme-scope) .rb-prose hr {
2172
+ /* Horizontal rules */
2173
+ border-color: rgb(var(--tb-border));
2174
+ }
2155
2175
 
2156
- :where(.theme-scope) .rb-prose ul > li::marker,
2157
- :where(.theme-scope) .rb-prose ol > li::marker {
2158
- /* List markers use muted text color */
2159
- color: rgb(var(--tb-mutedText));
2160
- }
2176
+ :where(.theme-scope) .rb-prose ul > li::marker,
2177
+ :where(.theme-scope) .rb-prose ol > li::marker {
2178
+ /* List markers use muted text color */
2179
+ color: rgb(var(--tb-mutedText));
2180
+ }
2161
2181
 
2162
- /*
2182
+ /*
2163
2183
  /* Density helpers */
2164
- :where(.theme-scope) .section-pad {
2165
- padding-top: 4rem;
2166
- padding-bottom: 4rem;
2167
- }
2168
- :where(.theme-scope)[data-density="airy"] .section-pad {
2169
- padding-top: 4.5rem;
2170
- padding-bottom: 4.5rem;
2171
- }
2172
- :where(.theme-scope)[data-density="compact"] .section-pad {
2173
- padding-top: 3rem;
2174
- padding-bottom: 3rem;
2175
- }
2176
-
2177
- :where(.theme-scope) .rounded-control {
2178
- border-radius: var(--radius-control);
2179
- }
2180
- :where(.theme-scope) .rounded-card {
2181
- border-radius: var(--radius-card);
2182
- }
2184
+ :where(.theme-scope) .section-pad {
2185
+ padding-top: 4rem;
2186
+ padding-bottom: 4rem;
2187
+ }
2188
+ :where(.theme-scope)[data-density='airy'] .section-pad {
2189
+ padding-top: 4.5rem;
2190
+ padding-bottom: 4.5rem;
2191
+ }
2192
+ :where(.theme-scope)[data-density='compact'] .section-pad {
2193
+ padding-top: 3rem;
2194
+ padding-bottom: 3rem;
2195
+ }
2183
2196
 
2184
- :where(.theme-scope) .shadow-elev {
2185
- box-shadow: var(--shadow-elev);
2186
- }
2197
+ :where(.theme-scope) .rounded-control {
2198
+ border-radius: var(--radius-control);
2199
+ }
2200
+ :where(.theme-scope) .rounded-card {
2201
+ border-radius: var(--radius-card);
2202
+ }
2187
2203
 
2188
- :where(.theme-scope) .font-heading {
2189
- font-family: var(--font-heading);
2190
- }
2191
- :where(.theme-scope) .font-body {
2192
- font-family: var(--font-body);
2193
- }
2204
+ :where(.theme-scope) .shadow-elev {
2205
+ box-shadow: var(--shadow-elev);
2206
+ }
2194
2207
 
2195
- :where(.theme-scope) .text-h1 {
2196
- font-size: var(--fs-h1);
2197
- line-height: 1.1;
2198
- }
2199
- :where(.theme-scope) .text-h2 {
2200
- font-size: var(--fs-h2);
2201
- line-height: 1.15;
2202
- }
2203
- :where(.theme-scope) .text-h3 {
2204
- font-size: var(--fs-h3);
2205
- line-height: 1.2;
2206
- }
2207
- :where(.theme-scope) .text-body-size {
2208
- font-size: var(--fs-body);
2209
- }
2208
+ :where(.theme-scope) .font-heading {
2209
+ font-family: var(--font-heading);
2210
+ }
2211
+ :where(.theme-scope) .font-body {
2212
+ font-family: var(--font-body);
2213
+ }
2210
2214
 
2211
- :where(.theme-scope) .transition-theme {
2212
- transition: all var(--motion-duration) var(--motion-ease);
2213
- }
2214
- :where(.theme-scope) .transition-theme-standard {
2215
- transition: all var(--motion-duration) var(--motion-ease);
2216
- }
2217
- :where(.theme-scope) .transition-theme-subtle {
2218
- transition: all calc(var(--motion-duration) * 0.75) var(--motion-ease);
2219
- }
2220
- :where(.theme-scope) .transition-theme-expressive {
2221
- transition: all calc(var(--motion-duration) * 1.35) var(--motion-ease);
2222
- }
2215
+ :where(.theme-scope) .text-h1 {
2216
+ font-size: var(--fs-h1);
2217
+ line-height: 1.1;
2218
+ }
2219
+ :where(.theme-scope) .text-h2 {
2220
+ font-size: var(--fs-h2);
2221
+ line-height: 1.15;
2222
+ }
2223
+ :where(.theme-scope) .text-h3 {
2224
+ font-size: var(--fs-h3);
2225
+ line-height: 1.2;
2226
+ }
2227
+ :where(.theme-scope) .text-body-size {
2228
+ font-size: var(--fs-body);
2229
+ }
2223
2230
 
2224
- /* Shade tokens (50..950) for primary */
2225
- :where(.theme-scope) .from-primary-50 {
2226
- --rb-gradient-from: rgb(var(--tb-primary-50)) var(--rb-gradient-from-position);
2227
- --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2228
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2229
- }
2230
- :where(.theme-scope) .to-primary-50 {
2231
- --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2232
- }
2233
- :where(.theme-scope) .from-primary-100 {
2234
- --rb-gradient-from: rgb(var(--tb-primary-100))
2235
- var(--rb-gradient-from-position);
2236
- --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2237
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2238
- }
2239
- :where(.theme-scope) .to-primary-100 {
2240
- --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2241
- }
2242
- :where(.theme-scope) .from-primary-200 {
2243
- --rb-gradient-from: rgb(var(--tb-primary-200))
2244
- var(--rb-gradient-from-position);
2245
- --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2246
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2247
- }
2248
- :where(.theme-scope) .to-primary-200 {
2249
- --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2250
- }
2251
- :where(.theme-scope) .from-primary-300 {
2252
- --rb-gradient-from: rgb(var(--tb-primary-300))
2253
- var(--rb-gradient-from-position);
2254
- --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2255
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2256
- }
2257
- :where(.theme-scope) .to-primary-300 {
2258
- --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2259
- }
2260
- :where(.theme-scope) .from-primary-400 {
2261
- --rb-gradient-from: rgb(var(--tb-primary-400))
2262
- var(--rb-gradient-from-position);
2263
- --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2264
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2265
- }
2266
- :where(.theme-scope) .to-primary-400 {
2267
- --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2268
- }
2269
- :where(.theme-scope) .from-primary-500 {
2270
- --rb-gradient-from: rgb(var(--tb-primary-500))
2271
- var(--rb-gradient-from-position);
2272
- --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2273
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2274
- }
2275
- :where(.theme-scope) .to-primary-500 {
2276
- --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2277
- }
2278
- :where(.theme-scope) .from-primary-600 {
2279
- --rb-gradient-from: rgb(var(--tb-primary-600))
2280
- var(--rb-gradient-from-position);
2281
- --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2282
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2283
- }
2284
- :where(.theme-scope) .to-primary-600 {
2285
- --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2286
- }
2287
- :where(.theme-scope) .from-primary-700 {
2288
- --rb-gradient-from: rgb(var(--tb-primary-700))
2289
- var(--rb-gradient-from-position);
2290
- --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2291
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2292
- }
2293
- :where(.theme-scope) .to-primary-700 {
2294
- --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2295
- }
2296
- :where(.theme-scope) .from-primary-800 {
2297
- --rb-gradient-from: rgb(var(--tb-primary-800))
2298
- var(--rb-gradient-from-position);
2299
- --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2300
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2301
- }
2302
- :where(.theme-scope) .to-primary-800 {
2303
- --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2304
- }
2305
- :where(.theme-scope) .from-primary-900 {
2306
- --rb-gradient-from: rgb(var(--tb-primary-900))
2307
- var(--rb-gradient-from-position);
2308
- --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2309
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2310
- }
2311
- :where(.theme-scope) .to-primary-900 {
2312
- --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2313
- }
2314
- :where(.theme-scope) .from-primary-950 {
2315
- --rb-gradient-from: rgb(var(--tb-primary-950))
2316
- var(--rb-gradient-from-position);
2317
- --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2318
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2319
- }
2320
- :where(.theme-scope) .to-primary-950 {
2321
- --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2322
- }
2323
-
2324
- /* Shade tokens (50..950) for secondary */
2325
- :where(.theme-scope) .from-secondary-50 {
2326
- --rb-gradient-from: rgb(var(--tb-secondary-50))
2327
- var(--rb-gradient-from-position);
2328
- --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2329
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2330
- }
2331
- :where(.theme-scope) .to-secondary-50 {
2332
- --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2333
- }
2334
- :where(.theme-scope) .from-secondary-100 {
2335
- --rb-gradient-from: rgb(var(--tb-secondary-100))
2336
- var(--rb-gradient-from-position);
2337
- --rb-gradient-to: rgb(var(--tb-secondary-100)) var(--rb-gradient-to-position);
2338
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2339
- }
2340
- :where(.theme-scope) .to-secondary-100 {
2341
- --rb-gradient-to: rgb(var(--tb-secondary-100)) var(--rb-gradient-to-position);
2342
- }
2343
- :where(.theme-scope) .from-secondary-200 {
2344
- --rb-gradient-from: rgb(var(--tb-secondary-200))
2345
- var(--rb-gradient-from-position);
2346
- --rb-gradient-to: rgb(var(--tb-secondary-200)) var(--rb-gradient-to-position);
2347
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2348
- }
2349
- :where(.theme-scope) .to-secondary-200 {
2350
- --rb-gradient-to: rgb(var(--tb-secondary-200)) var(--rb-gradient-to-position);
2351
- }
2352
- :where(.theme-scope) .from-secondary-300 {
2353
- --rb-gradient-from: rgb(var(--tb-secondary-300))
2354
- var(--rb-gradient-from-position);
2355
- --rb-gradient-to: rgb(var(--tb-secondary-300)) var(--rb-gradient-to-position);
2356
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2357
- }
2358
- :where(.theme-scope) .to-secondary-300 {
2359
- --rb-gradient-to: rgb(var(--tb-secondary-300)) var(--rb-gradient-to-position);
2360
- }
2361
- :where(.theme-scope) .from-secondary-400 {
2362
- --rb-gradient-from: rgb(var(--tb-secondary-400))
2363
- var(--rb-gradient-from-position);
2364
- --rb-gradient-to: rgb(var(--tb-secondary-400)) var(--rb-gradient-to-position);
2365
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2366
- }
2367
- :where(.theme-scope) .to-secondary-400 {
2368
- --rb-gradient-to: rgb(var(--tb-secondary-400)) var(--rb-gradient-to-position);
2369
- }
2370
- :where(.theme-scope) .from-secondary-500 {
2371
- --rb-gradient-from: rgb(var(--tb-secondary-500))
2372
- var(--rb-gradient-from-position);
2373
- --rb-gradient-to: rgb(var(--tb-secondary-500)) var(--rb-gradient-to-position);
2374
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2375
- }
2376
- :where(.theme-scope) .to-secondary-500 {
2377
- --rb-gradient-to: rgb(var(--tb-secondary-500)) var(--rb-gradient-to-position);
2378
- }
2379
- :where(.theme-scope) .from-secondary-600 {
2380
- --rb-gradient-from: rgb(var(--tb-secondary-600))
2381
- var(--rb-gradient-from-position);
2382
- --rb-gradient-to: rgb(var(--tb-secondary-600)) var(--rb-gradient-to-position);
2383
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2384
- }
2385
- :where(.theme-scope) .to-secondary-600 {
2386
- --rb-gradient-to: rgb(var(--tb-secondary-600)) var(--rb-gradient-to-position);
2387
- }
2388
- :where(.theme-scope) .from-secondary-700 {
2389
- --rb-gradient-from: rgb(var(--tb-secondary-700))
2390
- var(--rb-gradient-from-position);
2391
- --rb-gradient-to: rgb(var(--tb-secondary-700)) var(--rb-gradient-to-position);
2392
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2393
- }
2394
- :where(.theme-scope) .to-secondary-700 {
2395
- --rb-gradient-to: rgb(var(--tb-secondary-700)) var(--rb-gradient-to-position);
2396
- }
2397
- :where(.theme-scope) .from-secondary-800 {
2398
- --rb-gradient-from: rgb(var(--tb-secondary-800))
2399
- var(--rb-gradient-from-position);
2400
- --rb-gradient-to: rgb(var(--tb-secondary-800)) var(--rb-gradient-to-position);
2401
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2402
- }
2403
- :where(.theme-scope) .to-secondary-800 {
2404
- --rb-gradient-to: rgb(var(--tb-secondary-800)) var(--rb-gradient-to-position);
2405
- }
2406
- :where(.theme-scope) .from-secondary-900 {
2407
- --rb-gradient-from: rgb(var(--tb-secondary-900))
2408
- var(--rb-gradient-from-position);
2409
- --rb-gradient-to: rgb(var(--tb-secondary-900)) var(--rb-gradient-to-position);
2410
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2411
- }
2412
- :where(.theme-scope) .to-secondary-900 {
2413
- --rb-gradient-to: rgb(var(--tb-secondary-900)) var(--rb-gradient-to-position);
2414
- }
2415
- :where(.theme-scope) .from-secondary-950 {
2416
- --rb-gradient-from: rgb(var(--tb-secondary-950))
2417
- var(--rb-gradient-from-position);
2418
- --rb-gradient-to: rgb(var(--tb-secondary-950)) var(--rb-gradient-to-position);
2419
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2420
- }
2421
- :where(.theme-scope) .to-secondary-950 {
2422
- --rb-gradient-to: rgb(var(--tb-secondary-950)) var(--rb-gradient-to-position);
2423
- }
2424
-
2425
- /* Shade tokens (50..950) for accent */
2426
- :where(.theme-scope) .from-accent-50 {
2427
- --rb-gradient-from: rgb(var(--tb-accent-50)) var(--rb-gradient-from-position);
2428
- --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2429
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2430
- }
2431
- :where(.theme-scope) .to-accent-50 {
2432
- --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2433
- }
2434
- :where(.theme-scope) .from-accent-100 {
2435
- --rb-gradient-from: rgb(var(--tb-accent-100)) var(--rb-gradient-from-position);
2436
- --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2437
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2438
- }
2439
- :where(.theme-scope) .to-accent-100 {
2440
- --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2441
- }
2442
- :where(.theme-scope) .from-accent-200 {
2443
- --rb-gradient-from: rgb(var(--tb-accent-200)) var(--rb-gradient-from-position);
2444
- --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2445
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2446
- }
2447
- :where(.theme-scope) .to-accent-200 {
2448
- --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2449
- }
2450
- :where(.theme-scope) .from-accent-300 {
2451
- --rb-gradient-from: rgb(var(--tb-accent-300)) var(--rb-gradient-from-position);
2452
- --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2453
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2454
- }
2455
- :where(.theme-scope) .to-accent-300 {
2456
- --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2457
- }
2458
- :where(.theme-scope) .from-accent-400 {
2459
- --rb-gradient-from: rgb(var(--tb-accent-400)) var(--rb-gradient-from-position);
2460
- --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2461
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2462
- }
2463
- :where(.theme-scope) .to-accent-400 {
2464
- --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2465
- }
2466
- :where(.theme-scope) .from-accent-500 {
2467
- --rb-gradient-from: rgb(var(--tb-accent-500)) var(--rb-gradient-from-position);
2468
- --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2469
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2470
- }
2471
- :where(.theme-scope) .to-accent-500 {
2472
- --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2473
- }
2474
- :where(.theme-scope) .from-accent-600 {
2475
- --rb-gradient-from: rgb(var(--tb-accent-600)) var(--rb-gradient-from-position);
2476
- --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2477
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2478
- }
2479
- :where(.theme-scope) .to-accent-600 {
2480
- --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2481
- }
2482
- :where(.theme-scope) .from-accent-700 {
2483
- --rb-gradient-from: rgb(var(--tb-accent-700)) var(--rb-gradient-from-position);
2484
- --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2485
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2486
- }
2487
- :where(.theme-scope) .to-accent-700 {
2488
- --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2489
- }
2490
- :where(.theme-scope) .from-accent-800 {
2491
- --rb-gradient-from: rgb(var(--tb-accent-800)) var(--rb-gradient-from-position);
2492
- --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2493
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2494
- }
2495
- :where(.theme-scope) .to-accent-800 {
2496
- --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2497
- }
2498
- :where(.theme-scope) .from-accent-900 {
2499
- --rb-gradient-from: rgb(var(--tb-accent-900)) var(--rb-gradient-from-position);
2500
- --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2501
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2502
- }
2503
- :where(.theme-scope) .to-accent-900 {
2504
- --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2505
- }
2506
- :where(.theme-scope) .from-accent-950 {
2507
- --rb-gradient-from: rgb(var(--tb-accent-950)) var(--rb-gradient-from-position);
2508
- --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2509
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2510
- }
2511
- :where(.theme-scope) .to-accent-950 {
2512
- --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2513
- }
2231
+ :where(.theme-scope) .transition-theme {
2232
+ transition: all var(--motion-duration) var(--motion-ease);
2233
+ }
2234
+ :where(.theme-scope) .transition-theme-standard {
2235
+ transition: all var(--motion-duration) var(--motion-ease);
2236
+ }
2237
+ :where(.theme-scope) .transition-theme-subtle {
2238
+ transition: all calc(var(--motion-duration) * 0.75) var(--motion-ease);
2239
+ }
2240
+ :where(.theme-scope) .transition-theme-expressive {
2241
+ transition: all calc(var(--motion-duration) * 1.35) var(--motion-ease);
2242
+ }
2514
2243
 
2515
- /* Shade tokens (50..950) for neutral */
2516
- :where(.theme-scope) .from-neutral-50 {
2517
- --rb-gradient-from: rgb(var(--tb-neutral-50)) var(--rb-gradient-from-position);
2518
- --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2519
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2520
- }
2521
- :where(.theme-scope) .to-neutral-50 {
2522
- --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2523
- }
2524
- :where(.theme-scope) .from-neutral-100 {
2525
- --rb-gradient-from: rgb(var(--tb-neutral-100))
2526
- var(--rb-gradient-from-position);
2527
- --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2528
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2529
- }
2530
- :where(.theme-scope) .to-neutral-100 {
2531
- --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2532
- }
2533
- :where(.theme-scope) .from-neutral-200 {
2534
- --rb-gradient-from: rgb(var(--tb-neutral-200))
2535
- var(--rb-gradient-from-position);
2536
- --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2537
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2538
- }
2539
- :where(.theme-scope) .to-neutral-200 {
2540
- --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2541
- }
2542
- :where(.theme-scope) .from-neutral-300 {
2543
- --rb-gradient-from: rgb(var(--tb-neutral-300))
2544
- var(--rb-gradient-from-position);
2545
- --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2546
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2547
- }
2548
- :where(.theme-scope) .to-neutral-300 {
2549
- --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2550
- }
2551
- :where(.theme-scope) .from-neutral-400 {
2552
- --rb-gradient-from: rgb(var(--tb-neutral-400))
2553
- var(--rb-gradient-from-position);
2554
- --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2555
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2556
- }
2557
- :where(.theme-scope) .to-neutral-400 {
2558
- --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2559
- }
2560
- :where(.theme-scope) .from-neutral-500 {
2561
- --rb-gradient-from: rgb(var(--tb-neutral-500))
2562
- var(--rb-gradient-from-position);
2563
- --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2564
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2565
- }
2566
- :where(.theme-scope) .to-neutral-500 {
2567
- --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2568
- }
2569
- :where(.theme-scope) .from-neutral-600 {
2570
- --rb-gradient-from: rgb(var(--tb-neutral-600))
2571
- var(--rb-gradient-from-position);
2572
- --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2573
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2574
- }
2575
- :where(.theme-scope) .to-neutral-600 {
2576
- --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2577
- }
2578
- :where(.theme-scope) .from-neutral-700 {
2579
- --rb-gradient-from: rgb(var(--tb-neutral-700))
2580
- var(--rb-gradient-from-position);
2581
- --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2582
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2583
- }
2584
- :where(.theme-scope) .to-neutral-700 {
2585
- --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2586
- }
2587
- :where(.theme-scope) .from-neutral-800 {
2588
- --rb-gradient-from: rgb(var(--tb-neutral-800))
2589
- var(--rb-gradient-from-position);
2590
- --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2591
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2592
- }
2593
- :where(.theme-scope) .to-neutral-800 {
2594
- --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2595
- }
2596
- :where(.theme-scope) .from-neutral-900 {
2597
- --rb-gradient-from: rgb(var(--tb-neutral-900))
2598
- var(--rb-gradient-from-position);
2599
- --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2600
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2601
- }
2602
- :where(.theme-scope) .to-neutral-900 {
2603
- --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2604
- }
2605
- :where(.theme-scope) .from-neutral-950 {
2606
- --rb-gradient-from: rgb(var(--tb-neutral-950))
2607
- var(--rb-gradient-from-position);
2608
- --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2609
- --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2610
- }
2611
- :where(.theme-scope) .to-neutral-950 {
2612
- --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2613
- }
2614
-
2615
- /* =================================================================
2244
+ /* Shade tokens (50..950) for primary */
2245
+ :where(.theme-scope) .from-primary-50 {
2246
+ --rb-gradient-from: rgb(var(--tb-primary-50))
2247
+ var(--rb-gradient-from-position);
2248
+ --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2249
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2250
+ }
2251
+ :where(.theme-scope) .to-primary-50 {
2252
+ --rb-gradient-to: rgb(var(--tb-primary-50)) var(--rb-gradient-to-position);
2253
+ }
2254
+ :where(.theme-scope) .from-primary-100 {
2255
+ --rb-gradient-from: rgb(var(--tb-primary-100))
2256
+ var(--rb-gradient-from-position);
2257
+ --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2258
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2259
+ }
2260
+ :where(.theme-scope) .to-primary-100 {
2261
+ --rb-gradient-to: rgb(var(--tb-primary-100)) var(--rb-gradient-to-position);
2262
+ }
2263
+ :where(.theme-scope) .from-primary-200 {
2264
+ --rb-gradient-from: rgb(var(--tb-primary-200))
2265
+ var(--rb-gradient-from-position);
2266
+ --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2267
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2268
+ }
2269
+ :where(.theme-scope) .to-primary-200 {
2270
+ --rb-gradient-to: rgb(var(--tb-primary-200)) var(--rb-gradient-to-position);
2271
+ }
2272
+ :where(.theme-scope) .from-primary-300 {
2273
+ --rb-gradient-from: rgb(var(--tb-primary-300))
2274
+ var(--rb-gradient-from-position);
2275
+ --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2276
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2277
+ }
2278
+ :where(.theme-scope) .to-primary-300 {
2279
+ --rb-gradient-to: rgb(var(--tb-primary-300)) var(--rb-gradient-to-position);
2280
+ }
2281
+ :where(.theme-scope) .from-primary-400 {
2282
+ --rb-gradient-from: rgb(var(--tb-primary-400))
2283
+ var(--rb-gradient-from-position);
2284
+ --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2285
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2286
+ }
2287
+ :where(.theme-scope) .to-primary-400 {
2288
+ --rb-gradient-to: rgb(var(--tb-primary-400)) var(--rb-gradient-to-position);
2289
+ }
2290
+ :where(.theme-scope) .from-primary-500 {
2291
+ --rb-gradient-from: rgb(var(--tb-primary-500))
2292
+ var(--rb-gradient-from-position);
2293
+ --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2294
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2295
+ }
2296
+ :where(.theme-scope) .to-primary-500 {
2297
+ --rb-gradient-to: rgb(var(--tb-primary-500)) var(--rb-gradient-to-position);
2298
+ }
2299
+ :where(.theme-scope) .from-primary-600 {
2300
+ --rb-gradient-from: rgb(var(--tb-primary-600))
2301
+ var(--rb-gradient-from-position);
2302
+ --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2303
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2304
+ }
2305
+ :where(.theme-scope) .to-primary-600 {
2306
+ --rb-gradient-to: rgb(var(--tb-primary-600)) var(--rb-gradient-to-position);
2307
+ }
2308
+ :where(.theme-scope) .from-primary-700 {
2309
+ --rb-gradient-from: rgb(var(--tb-primary-700))
2310
+ var(--rb-gradient-from-position);
2311
+ --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2312
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2313
+ }
2314
+ :where(.theme-scope) .to-primary-700 {
2315
+ --rb-gradient-to: rgb(var(--tb-primary-700)) var(--rb-gradient-to-position);
2316
+ }
2317
+ :where(.theme-scope) .from-primary-800 {
2318
+ --rb-gradient-from: rgb(var(--tb-primary-800))
2319
+ var(--rb-gradient-from-position);
2320
+ --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2321
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2322
+ }
2323
+ :where(.theme-scope) .to-primary-800 {
2324
+ --rb-gradient-to: rgb(var(--tb-primary-800)) var(--rb-gradient-to-position);
2325
+ }
2326
+ :where(.theme-scope) .from-primary-900 {
2327
+ --rb-gradient-from: rgb(var(--tb-primary-900))
2328
+ var(--rb-gradient-from-position);
2329
+ --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2330
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2331
+ }
2332
+ :where(.theme-scope) .to-primary-900 {
2333
+ --rb-gradient-to: rgb(var(--tb-primary-900)) var(--rb-gradient-to-position);
2334
+ }
2335
+ :where(.theme-scope) .from-primary-950 {
2336
+ --rb-gradient-from: rgb(var(--tb-primary-950))
2337
+ var(--rb-gradient-from-position);
2338
+ --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2339
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2340
+ }
2341
+ :where(.theme-scope) .to-primary-950 {
2342
+ --rb-gradient-to: rgb(var(--tb-primary-950)) var(--rb-gradient-to-position);
2343
+ }
2344
+
2345
+ /* Shade tokens (50..950) for secondary */
2346
+ :where(.theme-scope) .from-secondary-50 {
2347
+ --rb-gradient-from: rgb(var(--tb-secondary-50))
2348
+ var(--rb-gradient-from-position);
2349
+ --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2350
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2351
+ }
2352
+ :where(.theme-scope) .to-secondary-50 {
2353
+ --rb-gradient-to: rgb(var(--tb-secondary-50)) var(--rb-gradient-to-position);
2354
+ }
2355
+ :where(.theme-scope) .from-secondary-100 {
2356
+ --rb-gradient-from: rgb(var(--tb-secondary-100))
2357
+ var(--rb-gradient-from-position);
2358
+ --rb-gradient-to: rgb(var(--tb-secondary-100))
2359
+ var(--rb-gradient-to-position);
2360
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2361
+ }
2362
+ :where(.theme-scope) .to-secondary-100 {
2363
+ --rb-gradient-to: rgb(var(--tb-secondary-100))
2364
+ var(--rb-gradient-to-position);
2365
+ }
2366
+ :where(.theme-scope) .from-secondary-200 {
2367
+ --rb-gradient-from: rgb(var(--tb-secondary-200))
2368
+ var(--rb-gradient-from-position);
2369
+ --rb-gradient-to: rgb(var(--tb-secondary-200))
2370
+ var(--rb-gradient-to-position);
2371
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2372
+ }
2373
+ :where(.theme-scope) .to-secondary-200 {
2374
+ --rb-gradient-to: rgb(var(--tb-secondary-200))
2375
+ var(--rb-gradient-to-position);
2376
+ }
2377
+ :where(.theme-scope) .from-secondary-300 {
2378
+ --rb-gradient-from: rgb(var(--tb-secondary-300))
2379
+ var(--rb-gradient-from-position);
2380
+ --rb-gradient-to: rgb(var(--tb-secondary-300))
2381
+ var(--rb-gradient-to-position);
2382
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2383
+ }
2384
+ :where(.theme-scope) .to-secondary-300 {
2385
+ --rb-gradient-to: rgb(var(--tb-secondary-300))
2386
+ var(--rb-gradient-to-position);
2387
+ }
2388
+ :where(.theme-scope) .from-secondary-400 {
2389
+ --rb-gradient-from: rgb(var(--tb-secondary-400))
2390
+ var(--rb-gradient-from-position);
2391
+ --rb-gradient-to: rgb(var(--tb-secondary-400))
2392
+ var(--rb-gradient-to-position);
2393
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2394
+ }
2395
+ :where(.theme-scope) .to-secondary-400 {
2396
+ --rb-gradient-to: rgb(var(--tb-secondary-400))
2397
+ var(--rb-gradient-to-position);
2398
+ }
2399
+ :where(.theme-scope) .from-secondary-500 {
2400
+ --rb-gradient-from: rgb(var(--tb-secondary-500))
2401
+ var(--rb-gradient-from-position);
2402
+ --rb-gradient-to: rgb(var(--tb-secondary-500))
2403
+ var(--rb-gradient-to-position);
2404
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2405
+ }
2406
+ :where(.theme-scope) .to-secondary-500 {
2407
+ --rb-gradient-to: rgb(var(--tb-secondary-500))
2408
+ var(--rb-gradient-to-position);
2409
+ }
2410
+ :where(.theme-scope) .from-secondary-600 {
2411
+ --rb-gradient-from: rgb(var(--tb-secondary-600))
2412
+ var(--rb-gradient-from-position);
2413
+ --rb-gradient-to: rgb(var(--tb-secondary-600))
2414
+ var(--rb-gradient-to-position);
2415
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2416
+ }
2417
+ :where(.theme-scope) .to-secondary-600 {
2418
+ --rb-gradient-to: rgb(var(--tb-secondary-600))
2419
+ var(--rb-gradient-to-position);
2420
+ }
2421
+ :where(.theme-scope) .from-secondary-700 {
2422
+ --rb-gradient-from: rgb(var(--tb-secondary-700))
2423
+ var(--rb-gradient-from-position);
2424
+ --rb-gradient-to: rgb(var(--tb-secondary-700))
2425
+ var(--rb-gradient-to-position);
2426
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2427
+ }
2428
+ :where(.theme-scope) .to-secondary-700 {
2429
+ --rb-gradient-to: rgb(var(--tb-secondary-700))
2430
+ var(--rb-gradient-to-position);
2431
+ }
2432
+ :where(.theme-scope) .from-secondary-800 {
2433
+ --rb-gradient-from: rgb(var(--tb-secondary-800))
2434
+ var(--rb-gradient-from-position);
2435
+ --rb-gradient-to: rgb(var(--tb-secondary-800))
2436
+ var(--rb-gradient-to-position);
2437
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2438
+ }
2439
+ :where(.theme-scope) .to-secondary-800 {
2440
+ --rb-gradient-to: rgb(var(--tb-secondary-800))
2441
+ var(--rb-gradient-to-position);
2442
+ }
2443
+ :where(.theme-scope) .from-secondary-900 {
2444
+ --rb-gradient-from: rgb(var(--tb-secondary-900))
2445
+ var(--rb-gradient-from-position);
2446
+ --rb-gradient-to: rgb(var(--tb-secondary-900))
2447
+ var(--rb-gradient-to-position);
2448
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2449
+ }
2450
+ :where(.theme-scope) .to-secondary-900 {
2451
+ --rb-gradient-to: rgb(var(--tb-secondary-900))
2452
+ var(--rb-gradient-to-position);
2453
+ }
2454
+ :where(.theme-scope) .from-secondary-950 {
2455
+ --rb-gradient-from: rgb(var(--tb-secondary-950))
2456
+ var(--rb-gradient-from-position);
2457
+ --rb-gradient-to: rgb(var(--tb-secondary-950))
2458
+ var(--rb-gradient-to-position);
2459
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2460
+ }
2461
+ :where(.theme-scope) .to-secondary-950 {
2462
+ --rb-gradient-to: rgb(var(--tb-secondary-950))
2463
+ var(--rb-gradient-to-position);
2464
+ }
2465
+
2466
+ /* Shade tokens (50..950) for accent */
2467
+ :where(.theme-scope) .from-accent-50 {
2468
+ --rb-gradient-from: rgb(var(--tb-accent-50))
2469
+ var(--rb-gradient-from-position);
2470
+ --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2471
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2472
+ }
2473
+ :where(.theme-scope) .to-accent-50 {
2474
+ --rb-gradient-to: rgb(var(--tb-accent-50)) var(--rb-gradient-to-position);
2475
+ }
2476
+ :where(.theme-scope) .from-accent-100 {
2477
+ --rb-gradient-from: rgb(var(--tb-accent-100))
2478
+ var(--rb-gradient-from-position);
2479
+ --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2480
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2481
+ }
2482
+ :where(.theme-scope) .to-accent-100 {
2483
+ --rb-gradient-to: rgb(var(--tb-accent-100)) var(--rb-gradient-to-position);
2484
+ }
2485
+ :where(.theme-scope) .from-accent-200 {
2486
+ --rb-gradient-from: rgb(var(--tb-accent-200))
2487
+ var(--rb-gradient-from-position);
2488
+ --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2489
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2490
+ }
2491
+ :where(.theme-scope) .to-accent-200 {
2492
+ --rb-gradient-to: rgb(var(--tb-accent-200)) var(--rb-gradient-to-position);
2493
+ }
2494
+ :where(.theme-scope) .from-accent-300 {
2495
+ --rb-gradient-from: rgb(var(--tb-accent-300))
2496
+ var(--rb-gradient-from-position);
2497
+ --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2498
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2499
+ }
2500
+ :where(.theme-scope) .to-accent-300 {
2501
+ --rb-gradient-to: rgb(var(--tb-accent-300)) var(--rb-gradient-to-position);
2502
+ }
2503
+ :where(.theme-scope) .from-accent-400 {
2504
+ --rb-gradient-from: rgb(var(--tb-accent-400))
2505
+ var(--rb-gradient-from-position);
2506
+ --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2507
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2508
+ }
2509
+ :where(.theme-scope) .to-accent-400 {
2510
+ --rb-gradient-to: rgb(var(--tb-accent-400)) var(--rb-gradient-to-position);
2511
+ }
2512
+ :where(.theme-scope) .from-accent-500 {
2513
+ --rb-gradient-from: rgb(var(--tb-accent-500))
2514
+ var(--rb-gradient-from-position);
2515
+ --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2516
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2517
+ }
2518
+ :where(.theme-scope) .to-accent-500 {
2519
+ --rb-gradient-to: rgb(var(--tb-accent-500)) var(--rb-gradient-to-position);
2520
+ }
2521
+ :where(.theme-scope) .from-accent-600 {
2522
+ --rb-gradient-from: rgb(var(--tb-accent-600))
2523
+ var(--rb-gradient-from-position);
2524
+ --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2525
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2526
+ }
2527
+ :where(.theme-scope) .to-accent-600 {
2528
+ --rb-gradient-to: rgb(var(--tb-accent-600)) var(--rb-gradient-to-position);
2529
+ }
2530
+ :where(.theme-scope) .from-accent-700 {
2531
+ --rb-gradient-from: rgb(var(--tb-accent-700))
2532
+ var(--rb-gradient-from-position);
2533
+ --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2534
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2535
+ }
2536
+ :where(.theme-scope) .to-accent-700 {
2537
+ --rb-gradient-to: rgb(var(--tb-accent-700)) var(--rb-gradient-to-position);
2538
+ }
2539
+ :where(.theme-scope) .from-accent-800 {
2540
+ --rb-gradient-from: rgb(var(--tb-accent-800))
2541
+ var(--rb-gradient-from-position);
2542
+ --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2543
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2544
+ }
2545
+ :where(.theme-scope) .to-accent-800 {
2546
+ --rb-gradient-to: rgb(var(--tb-accent-800)) var(--rb-gradient-to-position);
2547
+ }
2548
+ :where(.theme-scope) .from-accent-900 {
2549
+ --rb-gradient-from: rgb(var(--tb-accent-900))
2550
+ var(--rb-gradient-from-position);
2551
+ --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2552
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2553
+ }
2554
+ :where(.theme-scope) .to-accent-900 {
2555
+ --rb-gradient-to: rgb(var(--tb-accent-900)) var(--rb-gradient-to-position);
2556
+ }
2557
+ :where(.theme-scope) .from-accent-950 {
2558
+ --rb-gradient-from: rgb(var(--tb-accent-950))
2559
+ var(--rb-gradient-from-position);
2560
+ --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2561
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2562
+ }
2563
+ :where(.theme-scope) .to-accent-950 {
2564
+ --rb-gradient-to: rgb(var(--tb-accent-950)) var(--rb-gradient-to-position);
2565
+ }
2566
+
2567
+ /* Shade tokens (50..950) for neutral */
2568
+ :where(.theme-scope) .from-neutral-50 {
2569
+ --rb-gradient-from: rgb(var(--tb-neutral-50))
2570
+ var(--rb-gradient-from-position);
2571
+ --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2572
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2573
+ }
2574
+ :where(.theme-scope) .to-neutral-50 {
2575
+ --rb-gradient-to: rgb(var(--tb-neutral-50)) var(--rb-gradient-to-position);
2576
+ }
2577
+ :where(.theme-scope) .from-neutral-100 {
2578
+ --rb-gradient-from: rgb(var(--tb-neutral-100))
2579
+ var(--rb-gradient-from-position);
2580
+ --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2581
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2582
+ }
2583
+ :where(.theme-scope) .to-neutral-100 {
2584
+ --rb-gradient-to: rgb(var(--tb-neutral-100)) var(--rb-gradient-to-position);
2585
+ }
2586
+ :where(.theme-scope) .from-neutral-200 {
2587
+ --rb-gradient-from: rgb(var(--tb-neutral-200))
2588
+ var(--rb-gradient-from-position);
2589
+ --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2590
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2591
+ }
2592
+ :where(.theme-scope) .to-neutral-200 {
2593
+ --rb-gradient-to: rgb(var(--tb-neutral-200)) var(--rb-gradient-to-position);
2594
+ }
2595
+ :where(.theme-scope) .from-neutral-300 {
2596
+ --rb-gradient-from: rgb(var(--tb-neutral-300))
2597
+ var(--rb-gradient-from-position);
2598
+ --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2599
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2600
+ }
2601
+ :where(.theme-scope) .to-neutral-300 {
2602
+ --rb-gradient-to: rgb(var(--tb-neutral-300)) var(--rb-gradient-to-position);
2603
+ }
2604
+ :where(.theme-scope) .from-neutral-400 {
2605
+ --rb-gradient-from: rgb(var(--tb-neutral-400))
2606
+ var(--rb-gradient-from-position);
2607
+ --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2608
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2609
+ }
2610
+ :where(.theme-scope) .to-neutral-400 {
2611
+ --rb-gradient-to: rgb(var(--tb-neutral-400)) var(--rb-gradient-to-position);
2612
+ }
2613
+ :where(.theme-scope) .from-neutral-500 {
2614
+ --rb-gradient-from: rgb(var(--tb-neutral-500))
2615
+ var(--rb-gradient-from-position);
2616
+ --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2617
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2618
+ }
2619
+ :where(.theme-scope) .to-neutral-500 {
2620
+ --rb-gradient-to: rgb(var(--tb-neutral-500)) var(--rb-gradient-to-position);
2621
+ }
2622
+ :where(.theme-scope) .from-neutral-600 {
2623
+ --rb-gradient-from: rgb(var(--tb-neutral-600))
2624
+ var(--rb-gradient-from-position);
2625
+ --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2626
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2627
+ }
2628
+ :where(.theme-scope) .to-neutral-600 {
2629
+ --rb-gradient-to: rgb(var(--tb-neutral-600)) var(--rb-gradient-to-position);
2630
+ }
2631
+ :where(.theme-scope) .from-neutral-700 {
2632
+ --rb-gradient-from: rgb(var(--tb-neutral-700))
2633
+ var(--rb-gradient-from-position);
2634
+ --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2635
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2636
+ }
2637
+ :where(.theme-scope) .to-neutral-700 {
2638
+ --rb-gradient-to: rgb(var(--tb-neutral-700)) var(--rb-gradient-to-position);
2639
+ }
2640
+ :where(.theme-scope) .from-neutral-800 {
2641
+ --rb-gradient-from: rgb(var(--tb-neutral-800))
2642
+ var(--rb-gradient-from-position);
2643
+ --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2644
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2645
+ }
2646
+ :where(.theme-scope) .to-neutral-800 {
2647
+ --rb-gradient-to: rgb(var(--tb-neutral-800)) var(--rb-gradient-to-position);
2648
+ }
2649
+ :where(.theme-scope) .from-neutral-900 {
2650
+ --rb-gradient-from: rgb(var(--tb-neutral-900))
2651
+ var(--rb-gradient-from-position);
2652
+ --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2653
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2654
+ }
2655
+ :where(.theme-scope) .to-neutral-900 {
2656
+ --rb-gradient-to: rgb(var(--tb-neutral-900)) var(--rb-gradient-to-position);
2657
+ }
2658
+ :where(.theme-scope) .from-neutral-950 {
2659
+ --rb-gradient-from: rgb(var(--tb-neutral-950))
2660
+ var(--rb-gradient-from-position);
2661
+ --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2662
+ --rb-gradient-stops: var(--rb-gradient-from), var(--rb-gradient-to);
2663
+ }
2664
+ :where(.theme-scope) .to-neutral-950 {
2665
+ --rb-gradient-to: rgb(var(--tb-neutral-950)) var(--rb-gradient-to-position);
2666
+ }
2667
+
2668
+ /* =================================================================
2616
2669
  Header System Class Naming Conventions
2617
2670
 
2618
2671
  rb-header-* Utility-style classes set in site-header.ts layouts
@@ -2625,236 +2678,236 @@
2625
2678
  (nav-dropdown, nav-mobile-panel, nav-underline-grow)
2626
2679
  ================================================================= */
2627
2680
 
2628
- /* =================================================================
2681
+ /* =================================================================
2629
2682
  Header Layout Padding
2630
2683
 
2631
2684
  Padding is controlled entirely by CSS based on variant class.
2632
2685
  This ensures shrink headers look identical to non-shrink before scroll.
2633
2686
  ================================================================= */
2634
2687
 
2635
- /* Prevent scroll anchoring feedback loops when the header height transitions.
2688
+ /* Prevent scroll anchoring feedback loops when the header height transitions.
2636
2689
  In some browsers, resizing a sticky header near the top can cause the UA to
2637
2690
  adjust scroll position ("scroll anchoring"), which then flips the
2638
2691
  `header-scrolled` threshold logic back and forth. */
2639
- :where(.theme-scope) .block-site-header {
2640
- overflow-anchor: none;
2641
- }
2692
+ :where(.theme-scope) .block-site-header {
2693
+ overflow-anchor: none;
2694
+ }
2642
2695
 
2643
- /* Base padding for horizontal variants (classic, transparent) */
2644
- :where(.theme-scope) .rb-header-layout {
2645
- padding-top: 1rem;
2646
- padding-bottom: 1rem;
2647
- transition: padding 300ms var(--motion-ease, ease);
2648
- }
2696
+ /* Base padding for horizontal variants (classic, transparent) */
2697
+ :where(.theme-scope) .rb-header-layout {
2698
+ padding-top: 1rem;
2699
+ padding-bottom: 1rem;
2700
+ transition: padding 300ms var(--motion-ease, ease);
2701
+ }
2649
2702
 
2650
- /* Vertical variants need more breathing room
2703
+ /* Vertical variants need more breathing room
2651
2704
  Note: header-variant-* is on Section (ancestor), rb-header-layout on inner div */
2652
- :where(.theme-scope) .header-variant-centered .rb-header-layout,
2653
- :where(.theme-scope) .header-variant-editorial .rb-header-layout {
2654
- padding-top: 1.5rem;
2655
- padding-bottom: 1.5rem;
2656
- }
2705
+ :where(.theme-scope) .header-variant-centered .rb-header-layout {
2706
+ padding-top: 1.5rem;
2707
+ padding-bottom: 1.5rem;
2708
+ }
2657
2709
 
2658
- /* Floating variant - compact padding */
2659
- :where(.theme-scope) .header-variant-floating .rb-header-layout {
2660
- padding-top: 0.75rem;
2661
- padding-bottom: 0.75rem;
2662
- }
2710
+ /* Floating variant - compact padding */
2711
+ :where(.theme-scope) .header-variant-floating .rb-header-layout {
2712
+ padding-top: 0.75rem;
2713
+ padding-bottom: 0.75rem;
2714
+ }
2663
2715
 
2664
- /* =================================================================
2716
+ /* =================================================================
2665
2717
  Header Shrink-on-Scroll
2666
2718
 
2667
2719
  Only applies when .rb-header-shrink is present AND user has scrolled.
2668
2720
  No changes until scroll - shrink header = non-shrink header initially.
2669
2721
  ================================================================= */
2670
2722
 
2671
- /* Scrolled state - reduce padding */
2672
- :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-layout {
2673
- padding-top: 0.5rem;
2674
- padding-bottom: 0.5rem;
2675
- }
2723
+ /* Scrolled state - reduce padding */
2724
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-layout {
2725
+ padding-top: 0.5rem;
2726
+ padding-bottom: 0.5rem;
2727
+ }
2676
2728
 
2677
- /* Vertical variants get gentler reduction
2729
+ /* Vertical variants get gentler reduction
2678
2730
  Note: Both classes are on Section, rb-header-layout on inner div */
2679
- :where(.theme-scope) .rb-header-shrink.header-scrolled.header-variant-centered .rb-header-layout,
2680
- :where(.theme-scope) .rb-header-shrink.header-scrolled.header-variant-editorial .rb-header-layout {
2681
- padding-top: 0.75rem;
2682
- padding-bottom: 0.75rem;
2683
- }
2731
+ :where(.theme-scope)
2732
+ .rb-header-shrink.header-scrolled.header-variant-centered
2733
+ .rb-header-layout {
2734
+ padding-top: 0.75rem;
2735
+ padding-bottom: 0.75rem;
2736
+ }
2684
2737
 
2685
- /* Floating variant */
2686
- :where(.theme-scope) .rb-header-shrink.header-scrolled.header-variant-floating .rb-header-layout {
2687
- padding-top: 0.25rem;
2688
- padding-bottom: 0.25rem;
2689
- }
2738
+ /* Floating variant */
2739
+ :where(.theme-scope)
2740
+ .rb-header-shrink.header-scrolled.header-variant-floating
2741
+ .rb-header-layout {
2742
+ padding-top: 0.25rem;
2743
+ padding-bottom: 0.25rem;
2744
+ }
2690
2745
 
2691
- /* =================================================================
2746
+ /* =================================================================
2692
2747
  Logo & Title Sizing
2693
2748
 
2694
2749
  Font sizes controlled here, not via utility classes, so shrink
2695
2750
  transitions work (utility classes would override :where()).
2696
2751
  ================================================================= */
2697
2752
 
2698
- /* Logo image sizing */
2699
- :where(.theme-scope) .rb-header-logo-sm {
2700
- height: 2.5rem;
2701
- transition: height 300ms var(--motion-ease, ease);
2702
- }
2703
- :where(.theme-scope) .rb-header-logo-lg {
2704
- height: 3rem;
2705
- transition: height 300ms var(--motion-ease, ease);
2706
- }
2707
-
2708
- /* Site title base font size (replaces rb-text-lg / rb-text-xl utilities) */
2709
- :where(.theme-scope) .header-logo-text {
2710
- font-size: 1.125rem; /* matches rb-text-lg */
2711
- line-height: 1.75rem;
2712
- transition: font-size 300ms var(--motion-ease, ease);
2713
- }
2753
+ /* Logo image sizing */
2754
+ :where(.theme-scope) .rb-header-logo-sm {
2755
+ height: 2.5rem;
2756
+ transition: height 300ms var(--motion-ease, ease);
2757
+ }
2758
+ :where(.theme-scope) .rb-header-logo-lg {
2759
+ height: 3rem;
2760
+ transition: height 300ms var(--motion-ease, ease);
2761
+ }
2714
2762
 
2715
- /* Mobile: reduce site title size (~30%) to keep header compact */
2716
- @media (max-width: 767px) {
2763
+ /* Site title base font size (replaces rb-text-lg / rb-text-xl utilities) */
2717
2764
  :where(.theme-scope) .header-logo-text {
2718
- font-size: 0.8rem;
2719
- line-height: 1.25rem;
2765
+ font-size: 1.125rem; /* matches rb-text-lg */
2766
+ line-height: 1.75rem;
2767
+ transition: font-size 300ms var(--motion-ease, ease);
2720
2768
  }
2721
2769
 
2722
- :where(.theme-scope) .header-variant-centered .header-logo-text,
2723
- :where(.theme-scope) .header-variant-editorial .header-logo-text {
2724
- font-size: 0.875rem;
2725
- line-height: 1.25rem;
2770
+ /* Mobile: reduce site title size (~30%) to keep header compact */
2771
+ @media (max-width: 767px) {
2772
+ :where(.theme-scope) .header-logo-text {
2773
+ font-size: 0.8rem;
2774
+ line-height: 1.25rem;
2775
+ }
2776
+
2777
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
2778
+ font-size: 0.875rem;
2779
+ line-height: 1.25rem;
2780
+ }
2726
2781
  }
2727
- }
2728
2782
 
2729
- /* Centered/editorial variants use larger title */
2730
- :where(.theme-scope) .header-variant-centered .header-logo-text,
2731
- :where(.theme-scope) .header-variant-editorial .header-logo-text {
2732
- font-size: 1.25rem; /* matches rb-text-xl */
2733
- line-height: 1.75rem;
2734
- }
2783
+ /* Centered variant uses larger title */
2784
+ :where(.theme-scope) .header-variant-centered .header-logo-text {
2785
+ font-size: 1.25rem; /* matches rb-text-xl */
2786
+ line-height: 1.75rem;
2787
+ }
2735
2788
 
2736
- /* =================================================================
2789
+ /* =================================================================
2737
2790
  Shrink on Scroll - Logo & Title
2738
2791
  ================================================================= */
2739
2792
 
2740
- :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-sm {
2741
- height: 2rem;
2742
- }
2743
- :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-lg {
2744
- height: 2.5rem;
2745
- }
2746
- :where(.theme-scope) .rb-header-shrink.header-scrolled .header-logo-text {
2747
- font-size: 0.875rem;
2748
- }
2749
-
2750
- @media (max-width: 767px) {
2793
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-sm {
2794
+ height: 2rem;
2795
+ }
2796
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .rb-header-logo-lg {
2797
+ height: 2.5rem;
2798
+ }
2751
2799
  :where(.theme-scope) .rb-header-shrink.header-scrolled .header-logo-text {
2752
- font-size: 0.75rem;
2800
+ font-size: 0.875rem;
2753
2801
  }
2754
- }
2755
2802
 
2756
- /* =================================================================
2803
+ @media (max-width: 767px) {
2804
+ :where(.theme-scope) .rb-header-shrink.header-scrolled .header-logo-text {
2805
+ font-size: 0.75rem;
2806
+ }
2807
+ }
2808
+
2809
+ /* =================================================================
2757
2810
  Accessibility: Reduced Motion
2758
2811
  ================================================================= */
2759
2812
 
2760
- @media (prefers-reduced-motion: reduce) {
2761
- :where(.theme-scope) .rb-header-layout,
2762
- :where(.theme-scope) .rb-header-logo-sm,
2763
- :where(.theme-scope) .rb-header-logo-lg,
2764
- :where(.theme-scope) .header-logo-text {
2765
- transition: none;
2813
+ @media (prefers-reduced-motion: reduce) {
2814
+ :where(.theme-scope) .rb-header-layout,
2815
+ :where(.theme-scope) .rb-header-logo-sm,
2816
+ :where(.theme-scope) .rb-header-logo-lg,
2817
+ :where(.theme-scope) .header-logo-text {
2818
+ transition: none;
2819
+ }
2766
2820
  }
2767
- }
2768
2821
 
2769
- /* Nav underline-grow animation (used by navStyle: "underline-grow" in site-header.ts) */
2770
- :where(.theme-scope) .nav-underline-grow {
2771
- position: relative;
2772
- overflow: visible;
2773
- }
2774
- :where(.theme-scope) .nav-underline-grow::after {
2775
- content: "";
2776
- position: absolute;
2777
- left: 0;
2778
- bottom: var(--nav-underline-offset, -0.35em);
2779
- width: 100%;
2780
- height: 2px;
2781
- background-color: currentColor;
2782
- transform: scaleX(0);
2783
- transform-origin: left center;
2784
- transition: transform calc(var(--motion-duration) * 1.1) var(--motion-ease);
2785
- }
2786
- :where(.theme-scope) .nav-underline-grow:hover::after,
2787
- :where(.theme-scope)
2788
- .nav-underline-grow.nav-underline-active[data-active="true"]::after {
2789
- transform: scaleX(1);
2790
- }
2791
- :where(.theme-scope) .nav-underline-offset-tight {
2792
- --nav-underline-offset: -0.2em;
2793
- }
2794
- :where(.theme-scope) .nav-underline-offset-normal {
2795
- --nav-underline-offset: -0.3em;
2796
- }
2797
- :where(.theme-scope) .nav-underline-offset-loose {
2798
- --nav-underline-offset: -0.45em;
2799
- }
2822
+ /* Nav underline-grow animation (used by navStyle: "underline-grow" in site-header.ts) */
2823
+ :where(.theme-scope) .nav-underline-grow {
2824
+ position: relative;
2825
+ overflow: visible;
2826
+ }
2827
+ :where(.theme-scope) .nav-underline-grow::after {
2828
+ content: '';
2829
+ position: absolute;
2830
+ left: 0;
2831
+ bottom: var(--nav-underline-offset, -0.35em);
2832
+ width: 100%;
2833
+ height: 2px;
2834
+ background-color: currentColor;
2835
+ transform: scaleX(0);
2836
+ transform-origin: left center;
2837
+ transition: transform calc(var(--motion-duration) * 1.1) var(--motion-ease);
2838
+ }
2839
+ :where(.theme-scope) .nav-underline-grow:hover::after,
2840
+ :where(.theme-scope)
2841
+ .nav-underline-grow.nav-underline-active[data-active='true']::after {
2842
+ transform: scaleX(1);
2843
+ }
2844
+ :where(.theme-scope) .nav-underline-offset-tight {
2845
+ --nav-underline-offset: -0.2em;
2846
+ }
2847
+ :where(.theme-scope) .nav-underline-offset-normal {
2848
+ --nav-underline-offset: -0.3em;
2849
+ }
2850
+ :where(.theme-scope) .nav-underline-offset-loose {
2851
+ --nav-underline-offset: -0.45em;
2852
+ }
2800
2853
 
2801
- :where(.theme-scope) .card-surface {
2802
- background: rgb(var(--tb-surface));
2803
- color: rgb(var(--tb-onSurface, var(--tb-text)));
2804
- border: 1px solid rgb(var(--tb-border));
2805
- border-radius: var(--radius-card);
2806
- box-shadow: var(--shadow-elev);
2807
- }
2808
- :where(.theme-scope) .media-rounded {
2809
- border-radius: var(--radius-card);
2810
- }
2854
+ :where(.theme-scope) .card-surface {
2855
+ background: rgb(var(--tb-surface));
2856
+ color: rgb(var(--tb-onSurface, var(--tb-text)));
2857
+ border: 1px solid rgb(var(--tb-border));
2858
+ border-radius: var(--radius-card);
2859
+ box-shadow: var(--shadow-elev);
2860
+ }
2861
+ :where(.theme-scope) .media-rounded {
2862
+ border-radius: var(--radius-card);
2863
+ }
2811
2864
 
2812
- :where(.theme-scope) .is-placeholder::after {
2813
- content: "Placeholder";
2814
- position: absolute;
2815
- top: 0.5rem;
2816
- left: 0.5rem;
2817
- font-size: 11px;
2818
- background: color-mix(in oklab, rgb(var(--tb-bg)), rgb(var(--tb-text)) 10%);
2819
- color: rgb(var(--tb-text));
2820
- padding: 0.15rem 0.35rem;
2821
- border-radius: 4px;
2822
- opacity: 0.85;
2823
- }
2865
+ :where(.theme-scope) .is-placeholder::after {
2866
+ content: 'Placeholder';
2867
+ position: absolute;
2868
+ top: 0.5rem;
2869
+ left: 0.5rem;
2870
+ font-size: 11px;
2871
+ background: color-mix(in oklab, rgb(var(--tb-bg)), rgb(var(--tb-text)) 10%);
2872
+ color: rgb(var(--tb-text));
2873
+ padding: 0.15rem 0.35rem;
2874
+ border-radius: 4px;
2875
+ opacity: 0.85;
2876
+ }
2824
2877
 
2825
- /* Status badges - theme-aware styling for capacity indicators */
2826
- :where(.theme-scope) .badge-status {
2827
- display: inline-flex;
2828
- align-items: center;
2829
- padding: 0.125rem 0.625rem;
2830
- border-radius: 9999px;
2831
- font-size: 0.75rem;
2832
- font-weight: 500;
2833
- line-height: 1.25rem;
2834
- }
2878
+ /* Status badges - theme-aware styling for capacity indicators */
2879
+ :where(.theme-scope) .badge-status {
2880
+ display: inline-flex;
2881
+ align-items: center;
2882
+ padding: 0.125rem 0.625rem;
2883
+ border-radius: 9999px;
2884
+ font-size: 0.75rem;
2885
+ font-weight: 500;
2886
+ line-height: 1.25rem;
2887
+ }
2835
2888
 
2836
- /* All badges use a subtle theme-aware style by default */
2837
- :where(.theme-scope) .badge-status-available {
2838
- background-color: rgba(var(--tb-secondary), 0.15);
2839
- color: rgb(var(--tb-secondary-700, var(--tb-secondary)));
2840
- }
2889
+ /* All badges use a subtle theme-aware style by default */
2890
+ :where(.theme-scope) .badge-status-available {
2891
+ background-color: rgba(var(--tb-secondary), 0.15);
2892
+ color: rgb(var(--tb-secondary-700, var(--tb-secondary)));
2893
+ }
2841
2894
 
2842
- :where(.theme-scope) .badge-status-low {
2843
- background-color: rgba(var(--tb-accent), 0.15);
2844
- color: rgb(var(--tb-accent-700, var(--tb-accent)));
2845
- }
2895
+ :where(.theme-scope) .badge-status-low {
2896
+ background-color: rgba(var(--tb-accent), 0.15);
2897
+ color: rgb(var(--tb-accent-700, var(--tb-accent)));
2898
+ }
2846
2899
 
2847
- :where(.theme-scope) .badge-status-sold-out {
2848
- background-color: rgba(var(--tb-text), 0.1);
2849
- color: rgb(var(--tb-mutedText));
2850
- }
2900
+ :where(.theme-scope) .badge-status-sold-out {
2901
+ background-color: rgba(var(--tb-text), 0.1);
2902
+ color: rgb(var(--tb-mutedText));
2903
+ }
2851
2904
 
2852
- /* Event list empty state - theme-aware */
2853
- :where(.theme-scope) .event-list-empty {
2854
- background-color: rgb(var(--tb-surface));
2855
- color: rgb(var(--tb-onSurface, var(--tb-text)));
2856
- border-color: rgb(var(--tb-border));
2857
- }
2905
+ /* Event list empty state - theme-aware */
2906
+ :where(.theme-scope) .event-list-empty {
2907
+ background-color: rgb(var(--tb-surface));
2908
+ color: rgb(var(--tb-onSurface, var(--tb-text)));
2909
+ border-color: rgb(var(--tb-border));
2910
+ }
2858
2911
  } /* end @layer rb-theme */
2859
2912
 
2860
2913