starlight-theme-nova 0.10.0 → 0.11.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 (36) hide show
  1. package/lib/styles.css +1 -2
  2. package/lib/tailwind.css +130 -0
  3. package/lib/tailwind.gen.css +1313 -0
  4. package/package.json +13 -17
  5. package/src/components/CodeCopy.astro +7 -5
  6. package/src/components/CodeTabs.astro +4 -19
  7. package/src/components/Header.astro +19 -7
  8. package/src/components/LinkButton.astro +15 -7
  9. package/src/components/LinkButtonIcon.astro +11 -9
  10. package/src/components/LinkCard.astro +17 -3
  11. package/src/components/MobileMenuFooter.astro +1 -1
  12. package/src/components/MobileMenuToggle.astro +12 -2
  13. package/src/components/MobileTableOfContents.astro +1 -1
  14. package/src/components/PageFrame.astro +18 -21
  15. package/src/components/Pagination.astro +5 -2
  16. package/src/components/PaginationLink.astro +17 -8
  17. package/src/components/Search.astro +3 -2
  18. package/src/components/SiteTitle.astro +5 -1
  19. package/src/components/SocialIcons.astro +5 -1
  20. package/src/components/ThemeSelect.astro +8 -4
  21. package/src/constants.ts +2 -0
  22. package/src/icons/lucide-arrow-left.svg +1 -0
  23. package/src/icons/lucide-arrow-right.svg +1 -0
  24. package/src/icons/lucide-check.svg +1 -0
  25. package/src/icons/lucide-chevron-left.svg +1 -0
  26. package/src/icons/lucide-chevron-right.svg +1 -0
  27. package/src/icons/lucide-clipboard.svg +1 -0
  28. package/src/icons/lucide-menu.svg +1 -0
  29. package/src/icons/lucide-search.svg +1 -0
  30. package/src/icons/lucide-x.svg +1 -0
  31. package/src/icons/tabler-moon-filled.svg +1 -0
  32. package/src/icons/tabler-sun-high-filled.svg +1 -0
  33. package/src/index.ts +43 -2
  34. package/src/shiki-transformer-container.ts +6 -3
  35. package/src/user-options.ts +16 -0
  36. package/lib/styles.gen.css +0 -214
@@ -35,7 +35,8 @@ export function transformerContainer(): ShikiTransformer {
35
35
  type: 'element',
36
36
  tagName: 'div',
37
37
  properties: {
38
- class: 'nova-code-title',
38
+ class:
39
+ 'hidden border-b border-solid border-b-(--sl-color-gray-5) bg-(--sl-color-bg) px-4 py-2 font-mono text-sm text-(--sl-color-gray-3) [div[data-nova-code-container][data-nova-code-title]_&]:block',
39
40
  },
40
41
  children: [
41
42
  {
@@ -53,7 +54,8 @@ export function transformerContainer(): ShikiTransformer {
53
54
  properties: {
54
55
  [CODE_PROPERTY_CONTAINER]: '',
55
56
  [CODE_PROPERTY_TITLE]: title || undefined,
56
- class: 'nova-code-container not-content',
57
+ class:
58
+ 'not-content relative overflow-hidden [&_pre]:relative [&_nova-code-copy-button]:opacity-0 [&:hover_nova-code-copy-button]:opacity-100 border border-solid border-(--sl-color-gray-5) rounded-md',
57
59
  },
58
60
  children: [
59
61
  ...children,
@@ -65,7 +67,8 @@ export function transformerContainer(): ShikiTransformer {
65
67
  'data-code': this.source,
66
68
  title: 'Copy code',
67
69
  'aria-label': 'Copy code',
68
- class: 'nova-code-copy-button',
70
+ class:
71
+ 'absolute top-2 right-2 m-0 size-6 rounded border border-solid border-(--sl-color-gray-5) bg-gray-100/30 p-1 text-black backdrop-blur-sm transition hover:bg-gray-200/50 active:scale-90 dark:bg-gray-600/30 dark:text-white hover:dark:bg-gray-500/50',
69
72
  },
70
73
  children: [],
71
74
  },
@@ -13,6 +13,22 @@ export interface NavItem {
13
13
 
14
14
  export interface ThemeNovaOptions {
15
15
  nav?: NavItem[]
16
+
17
+ /**
18
+ * `starlight-theme-nova` supports two styling systems: pure CSS and Tailwind
19
+ * CSS.
20
+ *
21
+ * By default, `starlight-theme-nova` will detect if Tailwind CSS is passed to
22
+ * the Astro config, and use Tailwind CSS if it is. You can also force the
23
+ * theme to use a specific styling system by setting the `stylingSystem`
24
+ * option to `css` or `tailwind`.
25
+ *
26
+ * Check https://docs.astro.build/en/guides/styling/#tailwind for how to add
27
+ * Tailwind CSS to your Astro project.
28
+ *
29
+ * @default "detect"
30
+ */
31
+ stylingSystem?: 'css' | 'tailwind' | 'detect'
16
32
  }
17
33
 
18
34
  /**
@@ -1,214 +0,0 @@
1
- /* layer: preflights */
2
- *,::before,::after{--nova-rotate:0;--nova-rotate-x:0;--nova-rotate-y:0;--nova-rotate-z:0;--nova-scale-x:1;--nova-scale-y:1;--nova-scale-z:1;--nova-skew-x:0;--nova-skew-y:0;--nova-translate-x:0;--nova-translate-y:0;--nova-translate-z:0;--nova-pan-x: ;--nova-pan-y: ;--nova-pinch-zoom: ;--nova-scroll-snap-strictness:proximity;--nova-ordinal: ;--nova-slashed-zero: ;--nova-numeric-figure: ;--nova-numeric-spacing: ;--nova-numeric-fraction: ;--nova-border-spacing-x:0;--nova-border-spacing-y:0;--nova-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--nova-ring-shadow:0 0 rgb(0 0 0 / 0);--nova-shadow-inset: ;--nova-shadow:0 0 rgb(0 0 0 / 0);--nova-ring-inset: ;--nova-ring-offset-width:0px;--nova-ring-offset-color:#fff;--nova-ring-width:0px;--nova-ring-color:rgb(147 197 253 / 0.5);--nova-blur: ;--nova-brightness: ;--nova-contrast: ;--nova-drop-shadow: ;--nova-grayscale: ;--nova-hue-rotate: ;--nova-invert: ;--nova-saturate: ;--nova-sepia: ;--nova-backdrop-blur: ;--nova-backdrop-brightness: ;--nova-backdrop-contrast: ;--nova-backdrop-grayscale: ;--nova-backdrop-hue-rotate: ;--nova-backdrop-invert: ;--nova-backdrop-opacity: ;--nova-backdrop-saturate: ;--nova-backdrop-sepia: ;}::backdrop{--nova-rotate:0;--nova-rotate-x:0;--nova-rotate-y:0;--nova-rotate-z:0;--nova-scale-x:1;--nova-scale-y:1;--nova-scale-z:1;--nova-skew-x:0;--nova-skew-y:0;--nova-translate-x:0;--nova-translate-y:0;--nova-translate-z:0;--nova-pan-x: ;--nova-pan-y: ;--nova-pinch-zoom: ;--nova-scroll-snap-strictness:proximity;--nova-ordinal: ;--nova-slashed-zero: ;--nova-numeric-figure: ;--nova-numeric-spacing: ;--nova-numeric-fraction: ;--nova-border-spacing-x:0;--nova-border-spacing-y:0;--nova-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--nova-ring-shadow:0 0 rgb(0 0 0 / 0);--nova-shadow-inset: ;--nova-shadow:0 0 rgb(0 0 0 / 0);--nova-ring-inset: ;--nova-ring-offset-width:0px;--nova-ring-offset-color:#fff;--nova-ring-width:0px;--nova-ring-color:rgb(147 197 253 / 0.5);--nova-blur: ;--nova-brightness: ;--nova-contrast: ;--nova-drop-shadow: ;--nova-grayscale: ;--nova-hue-rotate: ;--nova-invert: ;--nova-saturate: ;--nova-sepia: ;--nova-backdrop-blur: ;--nova-backdrop-brightness: ;--nova-backdrop-contrast: ;--nova-backdrop-grayscale: ;--nova-backdrop-hue-rotate: ;--nova-backdrop-invert: ;--nova-backdrop-opacity: ;--nova-backdrop-saturate: ;--nova-backdrop-sepia: ;}
3
-
4
- :root,
5
- ::backdrop {
6
- --sl-content-width: 50rem;
7
-
8
- --sl-text-h1: var(--sl-text-3xl);
9
- --sl-text-h2: var(--sl-text-2xl);
10
- --sl-text-h3: var(--sl-text-xl);
11
- --sl-text-h4: var(--sl-text-lg);
12
- --sl-text-h5: var(--sl-text-base);
13
- --sl-text-h6: var(--sl-text-sm);
14
-
15
- /* Prevent adjustments of font size after orientation changes in iOS. */
16
- -webkit-text-size-adjust: 100%;
17
- }
18
-
19
- /* Dark mode Starlight theme variables. */
20
- :root {
21
- --sl-color-white: white;
22
- --sl-color-gray-1: #e5e7eb;
23
- --sl-color-gray-2: #d1d5db;
24
- --sl-color-gray-3: #9ca3af;
25
- --sl-color-gray-4: #4b5563;
26
- --sl-color-gray-5: #374151;
27
- --sl-color-gray-6: #1f2937;
28
- --sl-color-black: #030712;
29
-
30
- --sl-color-accent-low: #030712;
31
- --sl-color-accent: #4b5563;
32
- --sl-color-accent-high: #f3f4f6;
33
-
34
- --sl-color-bg-inline-code: #1f2937;
35
- --sl-color-border-inline-code: #374151;
36
- --sl-color-bg-nav: color-mix(in srgb, #030712 50%, transparent);
37
-
38
- --sl-color-orange-low: #451a03;
39
- --sl-color-orange: #78350f;
40
- --sl-color-orange-high: #fde68a;
41
-
42
- --sl-color-green-low: #052e16;
43
- --sl-color-green: #14532d;
44
- --sl-color-green-high: #bbf7d0;
45
-
46
- --sl-color-blue-low: #172554;
47
- --sl-color-blue: #1e3a8a;
48
- --sl-color-blue-high: #bfdbfe;
49
-
50
- --sl-color-purple-low: #3b0764;
51
- --sl-color-purple: #581c87;
52
- --sl-color-purple-high: #e9d5ff;
53
-
54
- --sl-color-red-low: #450a0a;
55
- --sl-color-red: #7f1d1d;
56
- --sl-color-red-high: #fecaca;
57
-
58
- --nano-color-highlight: var(--sl-color-gray-5);
59
- }
60
-
61
- /* Light mode Starlight theme variables */
62
- :root[data-theme='light'] {
63
- --sl-color-white: #111827;
64
- --sl-color-gray-1: #1f2937;
65
- --sl-color-gray-2: #374151;
66
- --sl-color-gray-3: #6b7280;
67
- --sl-color-gray-4: #9ca3af;
68
- --sl-color-gray-5: #d1d5db;
69
- --sl-color-gray-6: #e5e7eb;
70
- --sl-color-gray-7: #f3f4f6;
71
- --sl-color-black: white;
72
-
73
- --sl-color-accent-low: #e5e7eb;
74
- --sl-color-accent: #1f2937;
75
- --sl-color-accent-high: #111827;
76
-
77
- --sl-color-bg-inline-code: #f3f4f6;
78
- --sl-color-border-inline-code: #d1d5db;
79
- --sl-color-bg-nav: color-mix(in srgb, #fff 80%, transparent);
80
-
81
- --sl-color-orange-low: #fef3c7;
82
- --sl-color-orange: #fbbf24;
83
- --sl-color-orange-high: #92400e;
84
-
85
- --sl-color-green-low: #dcfce7;
86
- --sl-color-green: #4ade80;
87
- --sl-color-green-high: #166534;
88
-
89
- --sl-color-blue-low: #dbeafe;
90
- --sl-color-blue: #60a5fa;
91
- --sl-color-blue-high: #1e40af;
92
-
93
- --sl-color-purple-low: #f3e8ff;
94
- --sl-color-purple: #c084fc;
95
- --sl-color-purple-high: #6b21a8;
96
-
97
- --sl-color-red-low: #fee2e2;
98
- --sl-color-red: #f87171;
99
- --sl-color-red-high: #991b1b;
100
-
101
- --nano-color-highlight: var(--sl-color-gray-6);
102
- }
103
-
104
- /* layer: shortcuts */
105
- .nova-code-copy-button-icon-check{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;display:block;width:100%;height:100%;}
106
- .nova-code-copy-button-icon-clipboard{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;display:block;width:100%;height:100%;}
107
- .nova-link-button-icon-left{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m12 19l-7-7l7-7m7 7H5'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;width:1.25rem;height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
108
- .nova-link-button-icon-right{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7l7 7l-7 7'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;width:1.25rem;height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
109
- .nova-link-card-icon{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7l7 7l-7 7'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;margin-left:0.5rem;width:1.25rem;height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
110
- .nova-mobile-menu-toggle-icon{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 5h16M4 12h16M4 19h16'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;transition-property:transform;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
111
- body[data-mobile-menu-expanded] .nova-mobile-menu-toggle-icon{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;--nova-rotate-x:0;--nova-rotate-y:0;--nova-rotate-z:0;--nova-rotate:90deg;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
112
- .nova-pagination-link-icon-left{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;}
113
- .nova-pagination-link-icon-right{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;}
114
- .nova-search-button-icon{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;}
115
- .nova-theme-select-icon-dark{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 1.992a10 10 0 1 0 9.236 13.838c.341-.82-.476-1.644-1.298-1.31a6.5 6.5 0 0 1-6.864-10.787l.077-.08c.551-.63.113-1.653-.758-1.653h-.266l-.068-.006z'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;}
116
- .nova-theme-select-icon-light{--nova-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 24 24' width='1em' height='1em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M12 19a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1m-4.95-2.05a1 1 0 0 1 0 1.414l-1.414 1.414a1 1 0 1 1-1.414-1.414l1.414-1.414a1 1 0 0 1 1.414 0m11.314 0l1.414 1.414a1 1 0 0 1-1.414 1.414l-1.414-1.414a1 1 0 0 1 1.414-1.414m-5.049-9.836a5 5 0 1 1-2.532 9.674a5 5 0 0 1 2.532-9.674M4 11a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2zm18 0a1 1 0 0 1 0 2h-2a1 1 0 0 1 0-2zM5.636 4.222L7.05 5.636A1 1 0 0 1 5.636 7.05L4.222 5.636a1 1 0 0 1 1.414-1.414m14.142 0a1 1 0 0 1 0 1.414L18.364 7.05a1 1 0 0 1-1.414-1.414l1.414-1.414a1 1 0 0 1 1.414 0M12 1a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0V2a1 1 0 0 1 1-1'/%3E%3C/svg%3E");-webkit-mask:var(--nova-icon) no-repeat;mask:var(--nova-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;width:1em;height:1em;}
117
- .nova-page-frame-sidebar-pane{visibility:visible;visibility:hidden;border-width:0px;border-color:var(--sl-color-hairline);border-style:solid;}
118
- .nova-code-container{position:relative;overflow:hidden;border-width:1px;border-color:var(--sl-color-gray-5);border-radius:0.375rem;border-style:solid;}
119
- .nova-code-container pre{position:relative;}
120
- .nova-code-copy-button{position:absolute;right:0.5rem;top:0.5rem;margin:0;width:1.5rem;height:1.5rem;border-width:1px;border-color:var(--sl-color-gray-5);border-radius:0.25rem;border-style:solid;background-color:rgb(243 244 246 / 0.3) /* #f3f4f6 */;padding:0.25rem;--nova-text-opacity:1;color:rgb(0 0 0 / var(--nova-text-opacity)) /* #000 */;--nova-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--nova-backdrop-blur) var(--nova-backdrop-brightness) var(--nova-backdrop-contrast) var(--nova-backdrop-grayscale) var(--nova-backdrop-hue-rotate) var(--nova-backdrop-invert) var(--nova-backdrop-opacity) var(--nova-backdrop-saturate) var(--nova-backdrop-sepia);backdrop-filter:var(--nova-backdrop-blur) var(--nova-backdrop-brightness) var(--nova-backdrop-contrast) var(--nova-backdrop-grayscale) var(--nova-backdrop-hue-rotate) var(--nova-backdrop-invert) var(--nova-backdrop-opacity) var(--nova-backdrop-saturate) var(--nova-backdrop-sepia);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
121
- .nova-link-card{position:relative;display:flex;flex-direction:column;gap:0.5rem;border-width:1px;border-color:var(--sl-color-gray-5);border-radius:0.75rem;border-style:solid;--nova-bg-opacity:1;background-color:rgb(255 255 255 / var(--nova-bg-opacity)) /* #fff */;padding-left:1.25rem;padding-right:1.25rem;padding-top:1rem;padding-bottom:1rem;--nova-text-opacity:1;color:rgb(55 65 81 / var(--nova-text-opacity)) /* #374151 */;--nova-shadow:var(--nova-shadow-inset) 0 1px 2px 0 var(--nova-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--nova-ring-offset-shadow), var(--nova-ring-shadow), var(--nova-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
122
- .nova-page-frame-header{position:fixed;inset:0;z-index:var(--sl-z-index-navbar);box-sizing:border-box;width:100%;height:var(--sl-nav-height);border-width:0px;border-bottom-width:1px;border-color:var(--sl-color-hairline);border-style:solid;background-color:var(--sl-color-bg-nav) /* var(--sl-color-bg-nav) */;padding-top:var(--sl-nav-pad-y);padding-bottom:var(--sl-nav-pad-y);padding-left:var(--sl-nav-pad-x);padding-right:var(--sl-nav-pad-x);--nova-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--nova-backdrop-blur) var(--nova-backdrop-brightness) var(--nova-backdrop-contrast) var(--nova-backdrop-grayscale) var(--nova-backdrop-hue-rotate) var(--nova-backdrop-invert) var(--nova-backdrop-opacity) var(--nova-backdrop-saturate) var(--nova-backdrop-sepia);backdrop-filter:var(--nova-backdrop-blur) var(--nova-backdrop-brightness) var(--nova-backdrop-contrast) var(--nova-backdrop-grayscale) var(--nova-backdrop-hue-rotate) var(--nova-backdrop-invert) var(--nova-backdrop-opacity) var(--nova-backdrop-saturate) var(--nova-backdrop-sepia);}
123
- .nova-link-card-link::before{position:absolute;inset:0;content:'';}
124
- .nova-header-nav-link{margin:-0.375rem;border-radius:0.375rem;padding:0.375rem;color:var(--sl-color-gray-3) /* var(--sl-color-gray-3) */;text-decoration:none;}
125
- .nova-header-title{margin:-0.75rem;min-width:0;display:flex;overflow:clip;padding:0.75rem;}
126
- .nova-nav-link,
127
- .nova-site-title a{margin:-0.375rem;border-radius:0.375rem;padding:0.375rem;}
128
- .nova-pagination-link{margin:0;display:flex;align-items:center;justify-content:flex-end;gap:0.5rem;border-radius:0.75rem;padding:0.5rem;color:var(--sl-color-gray-2) /* var(--sl-color-gray-2) */;font-weight:500;text-decoration:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
129
- .nova-link-button{margin-inline-end:0.5rem;margin-top:0.5rem;margin-bottom:0.5rem;display:inline-flex;align-items:center;justify-content:space-between;gap:0.5rem;border-width:1px;border-color:transparent;border-radius:0.75rem;border-style:solid;padding-left:1.5rem;padding-right:1.5rem;padding-top:0.75rem;padding-bottom:0.75rem;font-weight:500;text-decoration:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
130
- .nova-header{box-sizing:border-box;height:100%;display:flex;align-items:center;gap:0.5rem;}
131
- div[data-nova-code-container][data-nova-code-title] .nova-code-title{display:block;}
132
- .nova-pagination-link-icon{display:block;min-width:1.25rem;min-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
133
- .nova-code-title{display:none;border-bottom-width:1px;border-bottom-color:var(--sl-color-gray-5);border-bottom-style:solid;background-color:var(--sl-color-bg) /* var(--sl-color-bg) */;padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem;font-size:0.875rem;line-height:1.25rem;color:var(--sl-color-gray-3) /* var(--sl-color-gray-3) */;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;}
134
- .nova-header-actions-lg{display:none;align-items:center;gap:0.5rem;}
135
- .nova-icon-button{width:2rem;height:2rem;display:flex;border-radius:0.375rem;padding:0.5rem;color:var(--sl-color-text) /* var(--sl-color-text) */;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
136
- .nova-theme-select{width:2rem;height:2rem;overflow:visible;}
137
- .nova-page-frame{min-height:100vh;display:flex;flex-direction:column;}
138
- .nova-pagination{min-width:100%;display:flex;flex-direction:row;align-items:stretch;justify-content:space-between;gap:0.5rem;padding-left:0.25rem;padding-right:0.25rem;padding-top:0;padding-bottom:1.5rem;}
139
- .nova-search-button-large{width:100%;max-width:22rem;height:2.25rem;display:flex;border-width:1px;border-color:var(--sl-color-gray-5);border-radius:0.375rem;border-style:solid;padding:0.5rem;color:var(--sl-color-text) /* var(--sl-color-text) */;transition-property:color;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
140
- .nova-header-actions-sm{display:flex;align-items:center;gap:0.5rem;}
141
- .nova-header-nav{display:flex;flex:1 1 0%;flex-direction:row;gap:1rem;overflow-x:auto;padding-top:0.75rem;padding-bottom:0.75rem;padding-left:1rem;padding-right:1rem;font-size:0.875rem;line-height:1.25rem;font-weight:500;}
142
- .nova-header-search{display:flex;}
143
- .nova-mobile-menu-footer{display:flex;align-items:center;justify-content:flex-end;gap:0.5rem;padding-top:1rem;padding-bottom:1rem;}
144
- .nova-link-card-link{display:inline-flex;align-items:center;justify-content:space-between;font-size:1.125rem;line-height:1.75rem;--nova-text-opacity:1;color:rgb(55 65 81 / var(--nova-text-opacity)) /* #374151 */;font-weight:600;text-decoration:none;}
145
- .nova-pagination-divider{flex:1 1 0%;}
146
- .nova-pagination-link[rel="next"]{flex-direction:row;}
147
- .nova-pagination-link[rel="prev"]{flex-direction:row-reverse;}
148
- .nova-link-button:hover .nova-link-button-icon-left,
149
- .nova-pagination-link:hover .nova-pagination-link-icon-left{--nova-translate-x:-0.25rem;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
150
- .nova-link-button:hover .nova-link-button-icon-right,
151
- .nova-link-card:hover .nova-link-card-icon,
152
- .nova-pagination-link:hover .nova-pagination-link-icon-right{--nova-translate-x:0.25rem;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
153
- .nova-code-copy-button:active{--nova-scale-x:0.9;--nova-scale-y:0.9;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
154
- .nova-icon-button:active{--nova-scale-x:0.9;--nova-scale-y:0.9;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
155
- .nova-link-button:active{--nova-scale-x:0.97;--nova-scale-y:0.97;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
156
- .nova-link-card:active{--nova-scale-x:0.99;--nova-scale-y:0.99;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
157
- .sl-markdown-content .nova-code-container pre.astro-code{border-width:0px;border-color:transparent;border-radius:0;}
158
- .nova-link-button-secondary{border-color:var(--sl-color-gray-5);--nova-bg-opacity:1;background-color:rgb(255 255 255 / var(--nova-bg-opacity)) /* #fff */;--nova-text-opacity:1;color:rgb(55 65 81 / var(--nova-text-opacity)) /* #374151 */;--nova-shadow:var(--nova-shadow-inset) 0 1px 2px 0 var(--nova-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--nova-ring-offset-shadow), var(--nova-ring-shadow), var(--nova-shadow);}
159
- .nova-mobile-table-of-contents summary{border-bottom-color:var(--sl-color-hairline);}
160
- .dark .nova-code-copy-button{background-color:rgb(75 85 99 / 0.3) /* #4b5563 */;--nova-text-opacity:1;color:rgb(255 255 255 / var(--nova-text-opacity)) /* #fff */;}
161
- .dark .nova-link-button-primary{--nova-bg-opacity:1;background-color:rgb(243 244 246 / var(--nova-bg-opacity)) /* #f3f4f6 */;--nova-text-opacity:1;color:rgb(17 24 39 / var(--nova-text-opacity)) /* #111827 */;}
162
- .nova-link-button-primary{--nova-bg-opacity:1;background-color:rgb(0 0 0 / var(--nova-bg-opacity)) /* #000 */;--nova-text-opacity:1;color:rgb(255 255 255 / var(--nova-text-opacity)) /* #fff */;--nova-shadow:var(--nova-shadow-inset) 0 1px 2px 0 var(--nova-shadow-color, rgb(0 0 0 / 0.05));box-shadow:var(--nova-ring-offset-shadow), var(--nova-ring-shadow), var(--nova-shadow);}
163
- .dark .nova-link-button-secondary,
164
- .dark .nova-link-card{--nova-bg-opacity:1;background-color:rgb(31 41 55 / var(--nova-bg-opacity)) /* #1f2937 */;--nova-text-opacity:1;color:rgb(229 231 235 / var(--nova-text-opacity)) /* #e5e7eb */;}
165
- .dark .nova-code-copy-button:hover{background-color:rgb(107 114 128 / 0.5) /* #6b7280 */;}
166
- .nova-code-copy-button:hover{background-color:rgb(229 231 235 / 0.5) /* #e5e7eb */;}
167
- .nova-icon-button:hover{background-color:rgb(156 163 175 / 0.3) /* #9ca3af */;}
168
- .dark .nova-link-button-primary:hover{--nova-bg-opacity:1;background-color:rgb(209 213 219 / var(--nova-bg-opacity)) /* #d1d5db */;}
169
- .nova-link-button-primary:hover{--nova-bg-opacity:1;background-color:rgb(31 41 55 / var(--nova-bg-opacity)) /* #1f2937 */;--nova-shadow:var(--nova-shadow-inset) 0 4px 6px -1px var(--nova-shadow-color, rgb(0 0 0 / 0.1)),var(--nova-shadow-inset) 0 2px 4px -2px var(--nova-shadow-color, rgb(0 0 0 / 0.1));box-shadow:var(--nova-ring-offset-shadow), var(--nova-ring-shadow), var(--nova-shadow);}
170
- .dark .nova-link-button-secondary:hover{--nova-bg-opacity:1;background-color:rgb(55 65 81 / var(--nova-bg-opacity)) /* #374151 */;}
171
- .nova-link-button-secondary:hover{--nova-bg-opacity:1;background-color:rgb(249 250 251 / var(--nova-bg-opacity)) /* #f9fafb */;--nova-shadow:var(--nova-shadow-inset) 0 4px 6px -1px var(--nova-shadow-color, rgb(0 0 0 / 0.1)),var(--nova-shadow-inset) 0 2px 4px -2px var(--nova-shadow-color, rgb(0 0 0 / 0.1));box-shadow:var(--nova-ring-offset-shadow), var(--nova-ring-shadow), var(--nova-shadow);}
172
- .dark .nova-link-card:hover{--nova-bg-opacity:1;background-color:rgb(55 65 81 / var(--nova-bg-opacity)) /* #374151 */;}
173
- .nova-link-card:hover{--nova-bg-opacity:1;background-color:rgb(249 250 251 / var(--nova-bg-opacity)) /* #f9fafb */;--nova-shadow:var(--nova-shadow-inset) 0 4px 6px -1px var(--nova-shadow-color, rgb(0 0 0 / 0.1)),var(--nova-shadow-inset) 0 2px 4px -2px var(--nova-shadow-color, rgb(0 0 0 / 0.1));box-shadow:var(--nova-ring-offset-shadow), var(--nova-ring-shadow), var(--nova-shadow);}
174
- .nova-search-button-large:hover{background-color:rgb(156 163 175 / 0.1) /* #9ca3af */;}
175
- .nova-site-title *{font-size:1.125rem;line-height:1.75rem;color:var(--sl-color-text) /* var(--sl-color-text) */;font-weight:600;}
176
- .dark .nova-link-button-minimal,
177
- .dark .nova-link-card-link{--nova-text-opacity:1;color:rgb(229 231 235 / var(--nova-text-opacity)) /* #e5e7eb */;}
178
- .nova-link-button-minimal{--nova-text-opacity:1;color:rgb(55 65 81 / var(--nova-text-opacity)) /* #374151 */;}
179
- .nova-header-nav-link:hover{color:var(--sl-color-white) /* var(--sl-color-white) */;}
180
- .nova-pagination-link:hover{color:var(--sl-color-white) /* var(--sl-color-white) */;}
181
- .nova-code-container .nova-code-copy-button{opacity:0;}
182
- .nova-code-container:hover .nova-code-copy-button{opacity:1;}
183
- .nova-header-nav-link:focus-visible{outline-offset:0px;}
184
- .nova-icon-button:focus-visible{outline-offset:1px;}
185
- .nova-nav-link:focus-visible{outline-offset:0px;}
186
- .nova-site-title:focus-visible a{outline-offset:0px;}
187
- .nova-mobile-table-of-contents nav{--nova-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--nova-backdrop-blur) var(--nova-backdrop-brightness) var(--nova-backdrop-contrast) var(--nova-backdrop-grayscale) var(--nova-backdrop-hue-rotate) var(--nova-backdrop-invert) var(--nova-backdrop-opacity) var(--nova-backdrop-saturate) var(--nova-backdrop-sepia);backdrop-filter:var(--nova-backdrop-blur) var(--nova-backdrop-brightness) var(--nova-backdrop-contrast) var(--nova-backdrop-grayscale) var(--nova-backdrop-hue-rotate) var(--nova-backdrop-invert) var(--nova-backdrop-opacity) var(--nova-backdrop-saturate) var(--nova-backdrop-sepia);}
188
- @media print{
189
- .nova-header-actions-lg,
190
- .nova-header-actions-sm,
191
- .nova-header-search,
192
- .nova-mobile-menu-footer{display:none;}
193
- }
194
- @media (max-width: calc(50rem - 0.1px)){
195
- body[data-mobile-menu-expanded] .nova-page-frame-sidebar-pane{visibility:visible;}
196
- .nova-header-nav *{display:none;}
197
- .nova-search-button{width:2rem;height:2rem;display:flex;border-radius:0.375rem;padding:0.5rem;color:var(--sl-color-text) /* var(--sl-color-text) */;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
198
- .nova-page-frame-sidebar-pane{width:100%;}
199
- .nova-search-button:active{--nova-scale-x:0.9;--nova-scale-y:0.9;transform:translateX(var(--nova-translate-x)) translateY(var(--nova-translate-y)) translateZ(var(--nova-translate-z)) rotate(var(--nova-rotate)) rotateX(var(--nova-rotate-x)) rotateY(var(--nova-rotate-y)) rotateZ(var(--nova-rotate-z)) skewX(var(--nova-skew-x)) skewY(var(--nova-skew-y)) scaleX(var(--nova-scale-x)) scaleY(var(--nova-scale-y)) scaleZ(var(--nova-scale-z));}
200
- .nova-search-button:hover{background-color:rgb(156 163 175 / 0.3) /* #9ca3af */;}
201
- .nova-search-button:focus-visible{outline-offset:1px;}
202
- }
203
- @media (min-width: 50rem){
204
- .nova-page-frame-sidebar-pane{visibility:visible;width:var(--sl-sidebar-width);border-right-width:1px;}
205
- .nova-header-actions-sm{display:none;}
206
- .nova-header-search{max-width:15rem;flex:1 1 0%;}
207
- .nova-search-button{width:100%;max-width:22rem;height:2.25rem;display:flex;border-width:1px;border-color:var(--sl-color-gray-5);border-radius:0.375rem;border-style:solid;padding:0.5rem;color:var(--sl-color-text) /* var(--sl-color-text) */;transition-property:color;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
208
- .nova-header-actions-lg{display:flex;}
209
- .nova-search-button:hover{background-color:rgb(156 163 175 / 0.1) /* #9ca3af */;}
210
- .nova-pagination-link{font-size:1.125rem;line-height:1.75rem;}
211
- }
212
- @media (min-width: 90rem){
213
- .nova-header-nav{gap:1.5rem;padding-left:1.5rem;}
214
- }