solar-background 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # Solar Background
2
+
3
+ A reusable animated solar-system background component that works in vanilla JS, React, Next.js, and any framework supporting Web Components.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install solar-background
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Vanilla JS
14
+
15
+ ```js
16
+ import 'solar-background'
17
+
18
+ const background = document.createElement('solar-background')
19
+ document.body.appendChild(background)
20
+ ```
21
+
22
+ ### CDN
23
+
24
+ Include the UMD bundle directly from a CDN and use the custom element or global API:
25
+
26
+ ```html
27
+ <script src="https://unpkg.com/solar-background@0.1.0/dist/solar-background.umd.js"></script>
28
+ <script>
29
+ const background = document.createElement('solar-background')
30
+ document.body.appendChild(background)
31
+
32
+ // or programmatic API from the global UMD export
33
+ // SolarBackground.createSolarBackground(document.body)
34
+ </script>
35
+ ```
36
+
37
+ You can also use jsDelivr:
38
+
39
+ ```html
40
+ <script src="https://cdn.jsdelivr.net/npm/solar-background@0.1.0/dist/solar-background.umd.js"></script>
41
+ ```
42
+
43
+ ### React / Next.js
44
+
45
+ ```jsx
46
+ import 'solar-background'
47
+
48
+ export default function App() {
49
+ return (
50
+ <div style={{ position: 'relative', minHeight: '100vh' }}>
51
+ <solar-background />
52
+ <div style={{ position: 'relative', zIndex: 1 }}>
53
+ {/* Your page content */}
54
+ </div>
55
+ </div>
56
+ )
57
+ }
58
+ ```
59
+
60
+ ### Programmatic use
61
+
62
+ ```js
63
+ import { createSolarBackground, destroySolarBackground } from 'solar-background'
64
+
65
+ const root = createSolarBackground(document.body)
66
+ // later
67
+ destroySolarBackground(root)
68
+ ```
69
+
70
+ ## Customizing cards and styles
71
+
72
+ You can override the visual style of the pattern cards in three ways:
73
+
74
+ - CSS variables (recommended): set variables on the page root or on the element itself. Example:
75
+
76
+ ```css
77
+ solar-background {
78
+ --solar-card-bg: transparent; /* make cards transparent */
79
+ --pattern-pair-bottom: 4.5rem; /* space from bottom */
80
+ --pattern-subtitle-bottom: 1rem;
81
+ }
82
+ ```
83
+
84
+ - Options when creating programmatically: pass an options object to `createSolarBackground()`:
85
+
86
+ ```js
87
+ createSolarBackground(document.body, { transparentCards: true, patternPairBottom: '4.5rem' })
88
+ ```
89
+
90
+ - Direct DOM editing: after the background is created you can modify card nodes directly. Example:
91
+
92
+ ```js
93
+ const root = createSolarBackground(document.body)
94
+ // modify the next card title when it appears
95
+ setTimeout(() => {
96
+ const card = root.querySelector('.zodiac-sign')
97
+ if (card) card.querySelector('.pattern-title').textContent = 'Custom Title'
98
+ }, 1000)
99
+ ```
100
+
101
+ These methods let users fully control card backgrounds, spacing, sizes and text so the component can blend into any app design.
102
+
103
+ ## Build
104
+
105
+ ```bash
106
+ npm run build
107
+ ```
108
+
109
+ ## Notes
110
+
111
+ - The package defines a custom element `<solar-background>`.
112
+ - Place it inside a `position: relative` container to make it act as a full background.
113
+ - For smooth scrolling libraries such as Lenis or Locomotive Scroll, mount the background inside the same scroll container or its wrapper so it stays aligned with your page.
114
+ - The background is non-interactive by design (`pointer-events: none`), so it will not interfere with GSAP, Framer Motion, or other animation frameworks that animate your content.
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.497 0-3.578-1.842-3.578H1.237c-.92 0-1.456-1.04-.92-1.788L10.013.474c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.579 1.842 3.579h11.377c.943 0 1.473 1.088.89 1.83L25.947 44.94z" style="fill:#863bff;fill:color(display-p3 .5252 .23 1);fill-opacity:1"/><mask id="a" width="48" height="46" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#000" d="M25.842 44.938c-.664.844-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.183c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.498 0-3.579-1.842-3.579H1.133c-.92 0-1.456-1.04-.92-1.787L9.91.473c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.578 1.842 3.578h11.377c.943 0 1.473 1.088.89 1.832L25.843 44.94z" style="fill:#000;fill-opacity:1"/></mask><g mask="url(#a)"><g filter="url(#b)"><ellipse cx="5.508" cy="14.704" fill="#ede6ff" rx="5.508" ry="14.704" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -4.47 31.516)"/></g><g filter="url(#c)"><ellipse cx="10.399" cy="29.851" fill="#ede6ff" rx="10.399" ry="29.851" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -39.328 7.883)"/></g><g filter="url(#d)"><ellipse cx="5.508" cy="30.487" fill="#7e14ff" rx="5.508" ry="30.487" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.814 -25.913 -14.639)scale(1 -1)"/></g><g filter="url(#e)"><ellipse cx="5.508" cy="30.599" fill="#7e14ff" rx="5.508" ry="30.599" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.814 -32.644 -3.334)scale(1 -1)"/></g><g filter="url(#f)"><ellipse cx="5.508" cy="30.599" fill="#7e14ff" rx="5.508" ry="30.599" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -34.34 30.47)"/></g><g filter="url(#g)"><ellipse cx="14.072" cy="22.078" fill="#ede6ff" rx="14.072" ry="22.078" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="rotate(93.35 24.506 48.493)scale(-1 1)"/></g><g filter="url(#h)"><ellipse cx="3.47" cy="21.501" fill="#7e14ff" rx="3.47" ry="21.501" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.009 28.708 47.59)scale(-1 1)"/></g><g filter="url(#i)"><ellipse cx="3.47" cy="21.501" fill="#7e14ff" rx="3.47" ry="21.501" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.009 28.708 47.59)scale(-1 1)"/></g><g filter="url(#j)"><ellipse cx=".387" cy="8.972" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(39.51 .387 8.972)"/></g><g filter="url(#k)"><ellipse cx="47.523" cy="-6.092" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 47.523 -6.092)"/></g><g filter="url(#l)"><ellipse cx="41.412" cy="6.333" fill="#47bfff" rx="5.971" ry="9.665" style="fill:#47bfff;fill:color(display-p3 .2799 .748 1);fill-opacity:1" transform="rotate(37.892 41.412 6.333)"/></g><g filter="url(#m)"><ellipse cx="-1.879" cy="38.332" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 -1.88 38.332)"/></g><g filter="url(#n)"><ellipse cx="-1.879" cy="38.332" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 -1.88 38.332)"/></g><g filter="url(#o)"><ellipse cx="35.651" cy="29.907" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 35.651 29.907)"/></g><g filter="url(#p)"><ellipse cx="38.418" cy="32.4" fill="#47bfff" rx="5.971" ry="15.297" style="fill:#47bfff;fill:color(display-p3 .2799 .748 1);fill-opacity:1" transform="rotate(37.892 38.418 32.4)"/></g></g><defs><filter id="b" width="60.045" height="41.654" x="-19.77" y="16.149" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="c" width="90.34" height="51.437" x="-54.613" y="-7.533" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="d" width="79.355" height="29.4" x="-49.64" y="2.03" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="e" width="79.579" height="29.4" x="-45.045" y="20.029" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="f" width="79.579" height="29.4" x="-43.513" y="21.178" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="g" width="74.749" height="58.852" x="15.756" y="-17.901" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="h" width="61.377" height="25.362" x="23.548" y="2.284" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="i" width="61.377" height="25.362" x="23.548" y="2.284" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="j" width="56.045" height="63.649" x="-27.636" y="-22.853" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="k" width="54.814" height="64.646" x="20.116" y="-38.415" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="l" width="33.541" height="35.313" x="24.641" y="-11.323" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="m" width="54.814" height="64.646" x="-29.286" y="6.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="n" width="54.814" height="64.646" x="-29.286" y="6.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="o" width="54.814" height="64.646" x="8.244" y="-2.416" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="p" width="39.409" height="43.623" x="18.713" y="10.588" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter></defs></svg>
package/dist/icons.svg ADDED
@@ -0,0 +1,24 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg">
2
+ <symbol id="bluesky-icon" viewBox="0 0 16 17">
3
+ <g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
4
+ <defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
5
+ </symbol>
6
+ <symbol id="discord-icon" viewBox="0 0 20 19">
7
+ <path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
8
+ </symbol>
9
+ <symbol id="documentation-icon" viewBox="0 0 21 20">
10
+ <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
11
+ <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
12
+ <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
13
+ </symbol>
14
+ <symbol id="github-icon" viewBox="0 0 19 19">
15
+ <path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
16
+ </symbol>
17
+ <symbol id="social-icon" viewBox="0 0 20 20">
18
+ <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
19
+ <path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
20
+ </symbol>
21
+ <symbol id="x-icon" viewBox="0 0 19 19">
22
+ <path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
23
+ </symbol>
24
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,433 @@
1
+ //#region src/main.js
2
+ var e = "\n.solar-background-root {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n pointer-events: none;\n z-index: -1;\n background: radial-gradient(circle at top, #07142b 0%, #02040e 42%, #000000 100%);\n font-family: Inter, system-ui, sans-serif;\n}\n\n.solar-background-root::before {\n content: '';\n position: absolute;\n inset: 0;\n background: radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.08), transparent 22%),\n radial-gradient(circle at 80% 15%, rgba(82, 180, 255, 0.06), transparent 18%),\n radial-gradient(circle at 60% 85%, rgba(249, 237, 173, 0.05), transparent 16%);\n pointer-events: none;\n}\n\n.solar-background-root .scene {\n position: absolute;\n inset: 0;\n width: min(90vmin, 760px);\n height: min(90vmin, 760px);\n margin: auto;\n z-index: 3;\n transform-origin: center;\n animation: scene-zoom 20s ease-in-out infinite alternate;\n}\n\n.solar-background-root .sun {\n position: absolute;\n inset: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n height: 120px;\n border-radius: 50%;\n background:\n radial-gradient(circle at 38% 32%, #fff9d4 0%, #ffe57d 16%, #ffba3f 34%, #ff8d1d 58%, #e85a0f 80%, #b83006 96%),\n radial-gradient(circle at 62% 55%, rgba(255, 220, 120, 0.94) 0%, rgba(255, 150, 40, 0.78) 28%, rgba(230, 100, 24, 0.5) 62%, transparent 100%);\n box-shadow:\n 0 0 120px rgba(255, 175, 55, 0.96),\n 0 0 240px rgba(255, 135, 20, 0.3),\n inset 0 0 32px rgba(255, 250, 210, 0.92);\n overflow: hidden;\n animation: sun-pulse 4.2s ease-in-out infinite alternate;\n z-index: 6;\n}\n\n.solar-background-root .sun::before {\n content: '';\n position: absolute;\n inset: 10%;\n border-radius: 50%;\n background:\n radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.75) 0%, transparent 40%),\n radial-gradient(circle at 50% 55%, rgba(255, 210, 90, 0.45) 0%, transparent 38%),\n radial-gradient(circle at 65% 60%, rgba(255, 160, 45, 0.28) 0%, transparent 45%);\n background-size: 160% 160%;\n filter: blur(3px);\n mix-blend-mode: screen;\n animation: sun-surface 4.6s ease-in-out infinite alternate;\n}\n\n.solar-background-root .sun::after {\n content: '';\n position: absolute;\n inset: -22%;\n border-radius: 50%;\n background: conic-gradient(from 0deg, transparent 0deg 10deg, rgba(255, 224, 140, 0.18) 10deg 16deg, transparent 16deg 24deg, rgba(255, 180, 75, 0.13) 24deg 32deg, transparent 32deg 360deg);\n opacity: 0.8;\n filter: blur(14px);\n animation: sun-flares 6.4s linear infinite;\n}\n\n.solar-background-root .orbit {\n position: absolute;\n inset: 50%;\n transform: translate(-50%, -50%);\n border: 1px solid rgba(255, 255, 255, 0.12);\n border-radius: 50%;\n z-index: 4;\n}\n\n.solar-background-root .orbit-mercury {\n width: 130px;\n height: 130px;\n animation: orbit 4s linear infinite;\n}\n\n.solar-background-root .orbit-venus {\n width: 180px;\n height: 180px;\n animation: orbit 7s linear infinite reverse;\n}\n\n.solar-background-root .orbit-earth {\n width: 240px;\n height: 240px;\n animation: orbit 10s linear infinite;\n}\n\n.solar-background-root .orbit-mars {\n width: 300px;\n height: 300px;\n animation: orbit 16s linear infinite;\n}\n\n.solar-background-root .orbit-jupiter {\n width: 380px;\n height: 380px;\n animation: orbit 24s linear infinite;\n}\n\n.solar-background-root .orbit-saturn {\n width: 460px;\n height: 460px;\n animation: orbit 32s linear infinite;\n}\n\n.solar-background-root .orbit-uranus {\n width: 540px;\n height: 540px;\n animation: orbit 46s linear infinite reverse;\n}\n\n.solar-background-root .orbit-neptune {\n width: 620px;\n height: 620px;\n animation: orbit 56s linear infinite;\n}\n\n.solar-background-root .orbit-pluto {\n width: 700px;\n height: 700px;\n animation: orbit 68s linear infinite;\n}\n\n@keyframes orbit {\n to {\n transform: translate(-50%, -50%) rotate(360deg);\n }\n}\n\n.solar-background-root .planet,\n.solar-background-root .moon {\n position: absolute;\n top: 50%;\n right: 0;\n transform: translate(50%, -50%);\n border-radius: 50%;\n background-size: cover;\n background-position: center;\n box-shadow: 0 0 12px rgba(255, 255, 255, 0.08);\n z-index: 5;\n}\n\n.solar-background-root .mercury,\n.solar-background-root .venus,\n.solar-background-root .earth,\n.solar-background-root .mars,\n.solar-background-root .jupiter,\n.solar-background-root .saturn,\n.solar-background-root .uranus,\n.solar-background-root .neptune,\n.solar-background-root .pluto {\n width: 16px;\n height: 16px;\n}\n\n.solar-background-root .moon {\n width: 8px;\n height: 8px;\n background-color: #ccc;\n}\n\n.solar-background-root .mercury {\n width: 14px;\n height: 14px;\n background-image: url('/images/mercury.png');\n}\n\n.solar-background-root .venus {\n width: 16px;\n height: 16px;\n background-image: url('/images/venus.png');\n}\n\n.solar-background-root .earth {\n width: 22px;\n height: 22px;\n background-image: url('/images/earth.png');\n}\n\n.solar-background-root .mars {\n width: 18px;\n height: 18px;\n background-image: url('/images/mars.png');\n}\n\n.solar-background-root .jupiter {\n width: 28px;\n height: 28px;\n background-image: url('/images/jupiter.png');\n}\n\n.solar-background-root .saturn {\n width: 26px;\n height: 26px;\n background-image: url('/images/saturn.png');\n}\n\n.solar-background-root .uranus {\n width: 22px;\n height: 22px;\n background-image: url('/images/uranus.png');\n}\n\n.solar-background-root .neptune {\n width: 20px;\n height: 20px;\n background-image: url('/images/neptune.png');\n}\n\n.solar-background-root .pluto {\n width: 14px;\n height: 14px;\n background-image: url('/images/pluto.png');\n}\n\n.solar-background-root .earth .moon-orbit {\n position: absolute;\n inset: 50%;\n width: 48px;\n height: 48px;\n transform: translate(-50%, -50%);\n border: 1px dashed rgba(255, 255, 255, 0.18);\n border-radius: 50%;\n animation: orbit 3s linear infinite;\n}\n\n.solar-background-root .earth .moon {\n right: -6px;\n top: 50%;\n transform: translate(50%, -50%);\n}\n\n.solar-background-root .star {\n position: absolute;\n background: rgba(255, 255, 255, 0.85);\n border-radius: 50%;\n pointer-events: none;\n}\n\n.solar-background-root .zodiac-layer {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 1;\n}\n\n.solar-background-root .zodiac-sign {\n position: absolute;\n width: min(34vmin, 360px);\n height: min(34vmin, 360px);\n padding: 1rem;\n opacity: 0;\n pointer-events: none;\n animation: constellation-appear 3.4s ease-in-out forwards;\n transform-origin: center;\n border-radius: 24px;\n background: rgba(7, 14, 43, 0.85);\n border: 1px solid rgba(255, 255, 255, 0.12);\n box-shadow: inset 0 0 50px rgba(255, 255, 255, 0.08), 0 18px 80px rgba(0, 0, 0, 0.35);\n backdrop-filter: blur(12px);\n}\n\n.solar-background-root .left-sign {\n left: 2%;\n}\n\n.solar-background-root .right-sign {\n right: 2%;\n}\n\n.solar-background-root .pattern-star {\n position: absolute;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: radial-gradient(circle, #ffffff 0%, rgba(255,255,255,0.1) 100%);\n box-shadow: 0 0 16px rgba(255, 255, 255, 0.6);\n}\n\n.solar-background-root .pattern-line {\n position: absolute;\n height: 2px;\n background: rgba(255, 255, 255, 0.45);\n box-shadow: 0 0 12px rgba(255, 255, 255, 0.18);\n transform-origin: left center;\n}\n\n.solar-background-root .pattern-title {\n position: absolute;\n left: 1rem;\n top: 1rem;\n font-size: 1rem;\n text-transform: uppercase;\n letter-spacing: 0.18em;\n color: rgba(255, 255, 255, 0.92);\n font-weight: 700;\n text-shadow: 0 0 18px rgba(255, 255, 255, 0.15);\n}\n\n.solar-background-root .pattern-subtitle {\n position: absolute;\n left: 1rem;\n bottom: 1rem;\n font-size: 0.92rem;\n color: rgba(255, 255, 255, 0.76);\n}\n\n.solar-background-root .pattern-glyph {\n position: absolute;\n right: 1rem;\n top: 1rem;\n font-size: 2.2rem;\n line-height: 1;\n}\n\n.solar-background-root .pattern-pair {\n position: absolute;\n right: 1rem;\n bottom: 1rem;\n font-size: 1.1rem;\n color: rgba(255, 255, 255, 0.9);\n letter-spacing: 0.08em;\n}\n\n@keyframes constellation-appear {\n 0% {\n opacity: 0;\n transform: translateY(15px) scale(0.96);\n }\n 15% {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n 85% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n transform: translateY(-10px) scale(0.96);\n }\n}\n\n@keyframes sun-pulse {\n 0% {\n transform: translate(-50%, -50%) scale(1);\n box-shadow:\n 0 0 110px rgba(255, 175, 55, 0.96),\n 0 0 230px rgba(255, 135, 20, 0.3),\n inset 0 0 30px rgba(255, 250, 210, 0.92);\n }\n 50% {\n transform: translate(-50%, -50%) scale(1.02);\n box-shadow:\n 0 0 120px rgba(255, 190, 65, 0.96),\n 0 0 250px rgba(255, 140, 25, 0.32),\n inset 0 0 34px rgba(255, 255, 220, 0.94);\n }\n 100% {\n transform: translate(-50%, -50%) scale(1);\n box-shadow:\n 0 0 110px rgba(255, 175, 55, 0.96),\n 0 0 230px rgba(255, 135, 20, 0.3),\n inset 0 0 30px rgba(255, 250, 210, 0.92);\n }\n}\n\n@keyframes sun-surface {\n 0% {\n background-position: 0% 0%;\n opacity: 1;\n }\n 50% {\n background-position: 40% 45%;\n opacity: 0.92;\n }\n 100% {\n background-position: 0% 15%;\n opacity: 1;\n }\n}\n\n@keyframes sun-flares {\n from {\n transform: rotate(0deg);\n opacity: 0.82;\n }\n to {\n transform: rotate(360deg);\n opacity: 0.68;\n }\n}\n\n@keyframes scene-zoom {\n 0% {\n transform: scale(1) translateZ(0);\n }\n 100% {\n transform: scale(1.08) translateZ(0);\n }\n}\n", t = [
3
+ {
4
+ zodiac: "Sagittarius",
5
+ animal: "Rat",
6
+ traits: [
7
+ "Deeply curious",
8
+ "Highly sociable",
9
+ "Quick-witted",
10
+ "Freedom-loving"
11
+ ],
12
+ zodiacStars: [
13
+ {
14
+ id: "S1",
15
+ x: 40,
16
+ y: 30
17
+ },
18
+ {
19
+ id: "S2",
20
+ x: 45,
21
+ y: 45
22
+ },
23
+ {
24
+ id: "S3",
25
+ x: 55,
26
+ y: 50
27
+ },
28
+ {
29
+ id: "S4",
30
+ x: 60,
31
+ y: 35
32
+ },
33
+ {
34
+ id: "S5",
35
+ x: 50,
36
+ y: 25
37
+ },
38
+ {
39
+ id: "S6",
40
+ x: 30,
41
+ y: 25
42
+ }
43
+ ],
44
+ zodiacLines: [
45
+ ["S1", "S2"],
46
+ ["S2", "S3"],
47
+ ["S3", "S4"],
48
+ ["S4", "S5"],
49
+ ["S5", "S1"],
50
+ ["S1", "S6"],
51
+ ["S2", "S5"]
52
+ ],
53
+ animalStars: [
54
+ {
55
+ id: "R1",
56
+ x: 20,
57
+ y: 70
58
+ },
59
+ {
60
+ id: "R2",
61
+ x: 35,
62
+ y: 60
63
+ },
64
+ {
65
+ id: "R3",
66
+ x: 30,
67
+ y: 45
68
+ },
69
+ {
70
+ id: "R4",
71
+ x: 55,
72
+ y: 65
73
+ },
74
+ {
75
+ id: "R5",
76
+ x: 75,
77
+ y: 75
78
+ },
79
+ {
80
+ id: "R6",
81
+ x: 90,
82
+ y: 60
83
+ }
84
+ ],
85
+ animalLines: [
86
+ ["R1", "R2"],
87
+ ["R2", "R3"],
88
+ ["R3", "R2"],
89
+ ["R2", "R4"],
90
+ ["R4", "R5"],
91
+ ["R5", "R6"]
92
+ ]
93
+ },
94
+ {
95
+ zodiac: "Capricorn",
96
+ animal: "Ox",
97
+ traits: [
98
+ "Hardworking",
99
+ "Methodical",
100
+ "Disciplined",
101
+ "Stable"
102
+ ],
103
+ zodiacStars: [
104
+ {
105
+ id: "C1",
106
+ x: 20,
107
+ y: 30
108
+ },
109
+ {
110
+ id: "C2",
111
+ x: 25,
112
+ y: 35
113
+ },
114
+ {
115
+ id: "C3",
116
+ x: 45,
117
+ y: 60
118
+ },
119
+ {
120
+ id: "C4",
121
+ x: 70,
122
+ y: 50
123
+ },
124
+ {
125
+ id: "C5",
126
+ x: 75,
127
+ y: 45
128
+ }
129
+ ],
130
+ zodiacLines: [
131
+ ["C1", "C2"],
132
+ ["C2", "C3"],
133
+ ["C3", "C4"],
134
+ ["C4", "C5"],
135
+ ["C5", "C1"]
136
+ ],
137
+ animalStars: [
138
+ {
139
+ id: "O1",
140
+ x: 25,
141
+ y: 35
142
+ },
143
+ {
144
+ id: "O2",
145
+ x: 40,
146
+ y: 45
147
+ },
148
+ {
149
+ id: "O3",
150
+ x: 55,
151
+ y: 35
152
+ },
153
+ {
154
+ id: "O4",
155
+ x: 40,
156
+ y: 65
157
+ },
158
+ {
159
+ id: "O5",
160
+ x: 70,
161
+ y: 60
162
+ },
163
+ {
164
+ id: "O6",
165
+ x: 75,
166
+ y: 75
167
+ }
168
+ ],
169
+ animalLines: [
170
+ ["O1", "O2"],
171
+ ["O3", "O2"],
172
+ ["O2", "O4"],
173
+ ["O2", "O5"],
174
+ ["O5", "O6"]
175
+ ]
176
+ },
177
+ {
178
+ zodiac: "Aquarius",
179
+ animal: "Tiger",
180
+ traits: [
181
+ "Fiercely independent",
182
+ "Natural leader",
183
+ "Unpredictable"
184
+ ],
185
+ zodiacStars: [
186
+ {
187
+ id: "AQ1",
188
+ x: 30,
189
+ y: 20
190
+ },
191
+ {
192
+ id: "AQ2",
193
+ x: 45,
194
+ y: 30
195
+ },
196
+ {
197
+ id: "AQ3",
198
+ x: 40,
199
+ y: 50
200
+ },
201
+ {
202
+ id: "AQ4",
203
+ x: 60,
204
+ y: 65
205
+ }
206
+ ],
207
+ zodiacLines: [
208
+ ["AQ1", "AQ2"],
209
+ ["AQ2", "AQ3"],
210
+ ["AQ3", "AQ4"]
211
+ ],
212
+ animalStars: [
213
+ {
214
+ id: "T1",
215
+ x: 20,
216
+ y: 40
217
+ },
218
+ {
219
+ id: "T2",
220
+ x: 35,
221
+ y: 30
222
+ },
223
+ {
224
+ id: "T3",
225
+ x: 50,
226
+ y: 45
227
+ },
228
+ {
229
+ id: "T4",
230
+ x: 45,
231
+ y: 70
232
+ },
233
+ {
234
+ id: "T5",
235
+ x: 70,
236
+ y: 50
237
+ },
238
+ {
239
+ id: "T6",
240
+ x: 85,
241
+ y: 35
242
+ }
243
+ ],
244
+ animalLines: [
245
+ ["T1", "T2"],
246
+ ["T2", "T3"],
247
+ ["T3", "T4"],
248
+ ["T3", "T5"],
249
+ ["T5", "T6"]
250
+ ]
251
+ },
252
+ {
253
+ zodiac: "Pisces",
254
+ animal: "Rabbit",
255
+ traits: [
256
+ "Gentle",
257
+ "Highly sensitive",
258
+ "Artistic",
259
+ "Peace-loving"
260
+ ],
261
+ zodiacStars: [
262
+ {
263
+ id: "P1",
264
+ x: 20,
265
+ y: 20
266
+ },
267
+ {
268
+ id: "P2",
269
+ x: 40,
270
+ y: 40
271
+ },
272
+ {
273
+ id: "P3",
274
+ x: 60,
275
+ y: 60
276
+ },
277
+ {
278
+ id: "P4",
279
+ x: 75,
280
+ y: 45
281
+ }
282
+ ],
283
+ zodiacLines: [
284
+ ["P1", "P2"],
285
+ ["P2", "P3"],
286
+ ["P3", "P4"]
287
+ ],
288
+ animalStars: [
289
+ {
290
+ id: "RB1",
291
+ x: 30,
292
+ y: 25
293
+ },
294
+ {
295
+ id: "RB2",
296
+ x: 35,
297
+ y: 25
298
+ },
299
+ {
300
+ id: "RB3",
301
+ x: 33,
302
+ y: 40
303
+ },
304
+ {
305
+ id: "RB4",
306
+ x: 20,
307
+ y: 45
308
+ },
309
+ {
310
+ id: "RB5",
311
+ x: 55,
312
+ y: 50
313
+ },
314
+ {
315
+ id: "RB6",
316
+ x: 70,
317
+ y: 60
318
+ }
319
+ ],
320
+ animalLines: [
321
+ ["RB1", "RB3"],
322
+ ["RB2", "RB3"],
323
+ ["RB4", "RB3"],
324
+ ["RB3", "RB5"],
325
+ ["RB5", "RB6"]
326
+ ]
327
+ }
328
+ ], n = {
329
+ Aries: "♈",
330
+ Taurus: "♉",
331
+ Gemini: "♊",
332
+ Cancer: "♋",
333
+ Leo: "♌",
334
+ Virgo: "♍",
335
+ Libra: "♎",
336
+ Scorpio: "♏",
337
+ Sagittarius: "♐",
338
+ Capricorn: "♑",
339
+ Aquarius: "♒",
340
+ Pisces: "♓"
341
+ }, r = {
342
+ Rat: "🐀",
343
+ Ox: "🐂",
344
+ Tiger: "🐅",
345
+ Rabbit: "🐇",
346
+ Dragon: "🐉",
347
+ Snake: "🐍",
348
+ Horse: "🐎",
349
+ Goat: "🐐",
350
+ Monkey: "🐒",
351
+ Rooster: "🐓",
352
+ Dog: "🐕",
353
+ Pig: "🐖"
354
+ }, i = /* @__PURE__ */ new WeakMap();
355
+ function a() {
356
+ if (document.getElementById("solar-background-style")) return;
357
+ let t = document.createElement("style");
358
+ t.id = "solar-background-style", t.textContent = e, document.head.appendChild(t);
359
+ }
360
+ function o() {
361
+ return "\n <div class=\"scene\">\n <div class=\"sun\"></div>\n <div class=\"orbit orbit-mercury\"><div class=\"planet mercury\"></div></div>\n <div class=\"orbit orbit-venus\"><div class=\"planet venus\"></div></div>\n <div class=\"orbit orbit-earth\">\n <div class=\"planet earth\">\n <div class=\"moon-orbit\"><div class=\"moon\"></div></div>\n </div>\n </div>\n <div class=\"orbit orbit-mars\"><div class=\"planet mars\"></div></div>\n <div class=\"orbit orbit-jupiter\"><div class=\"planet jupiter\"></div></div>\n <div class=\"orbit orbit-saturn\"><div class=\"planet saturn\"></div></div>\n <div class=\"orbit orbit-uranus\"><div class=\"planet uranus\"></div></div>\n <div class=\"orbit orbit-neptune\"><div class=\"planet neptune\"></div></div>\n <div class=\"orbit orbit-pluto\"><div class=\"planet pluto\"></div></div>\n </div>\n <div class=\"zodiac-layer\"></div>\n ";
362
+ }
363
+ function s(e, t = 1260) {
364
+ for (let n = 0; n < t; n++) {
365
+ let t = document.createElement("span");
366
+ t.className = "star";
367
+ let n = Math.random() * 2 + .8;
368
+ t.style.width = `${n}px`, t.style.height = `${n}px`, t.style.top = `${Math.random() * 100}%`, t.style.left = `${Math.random() * 100}%`, t.style.opacity = `${Math.random() * .6 + .2}`, t.style.transform = "translate(-50%, -50%)", e.appendChild(t);
369
+ }
370
+ }
371
+ function c(e, t, i, a, o) {
372
+ let s = e.querySelector(".zodiac-layer");
373
+ if (!s) return;
374
+ let c = i === "zodiac" ? t.zodiacStars : t.animalStars, l = i === "zodiac" ? t.zodiacLines : t.animalLines, u = document.createElement("div");
375
+ u.className = `zodiac-sign ${i}-sign ${a}-sign`, u.style.top = `${Math.random() * 34 + 10}%`;
376
+ let d = document.createElement("div");
377
+ d.className = "pattern-title", d.textContent = i === "zodiac" ? `${t.zodiac} Constellation` : `${t.animal} Pattern`, u.appendChild(d);
378
+ let f = document.createElement("div");
379
+ f.className = "pattern-subtitle", f.textContent = i === "zodiac" ? t.traits.join(" • ") : `Animal: ${t.animal}`, u.appendChild(f);
380
+ let p = document.createElement("div");
381
+ p.className = "pattern-glyph", p.textContent = i === "zodiac" ? n[t.zodiac] : r[t.animal] || t.animal, u.appendChild(p);
382
+ let m = document.createElement("div");
383
+ m.className = "pattern-pair", m.textContent = i === "zodiac" ? t.animal : t.zodiac, u.appendChild(m), s.appendChild(u);
384
+ let h = u.getBoundingClientRect(), g = h.width, _ = h.height, v = new Map(c.map((e) => [e.id, e]));
385
+ c.forEach((e) => {
386
+ let t = document.createElement("span");
387
+ t.className = "pattern-star", t.style.left = `${e.x}%`, t.style.top = `${e.y}%`, u.appendChild(t);
388
+ }), l.forEach(([e, t]) => {
389
+ let n = v.get(e), r = v.get(t);
390
+ if (!n || !r) return;
391
+ let i = n.x / 100 * g, a = n.y / 100 * _, o = r.x / 100 * g, s = r.y / 100 * _, c = o - i, l = s - a, d = document.createElement("span");
392
+ d.className = "pattern-line", d.style.width = `${Math.sqrt(c * c + l * l)}px`, d.style.left = `${i}px`, d.style.top = `${a}px`, d.style.transform = `rotate(${Math.atan2(l, c)}rad)`, u.appendChild(d);
393
+ }), setTimeout(() => {
394
+ s.contains(u) && s.removeChild(u);
395
+ }, o - 300);
396
+ }
397
+ function l(e, n = 4200, r = 1400) {
398
+ let i = t[Math.floor(Math.random() * t.length)];
399
+ c(e, i, "zodiac", "left", n), setTimeout(() => c(e, i, "animal", "right", n), r);
400
+ }
401
+ function u(e = document.body, t = {}) {
402
+ a();
403
+ let n = typeof e == "string" ? document.querySelector(e) : e;
404
+ if (!n) throw Error("SolarBackground: mount target not found");
405
+ n !== document.body && getComputedStyle(n).position === "static" && (n.style.position = "relative");
406
+ let r = document.createElement("div");
407
+ r.className = "solar-background-root", r.style.position = "absolute", r.style.inset = "0", r.style.width = "100%", r.style.height = "100%", r.style.zIndex = "-1", r.innerHTML = o(), n.appendChild(r), s(r, t.starCount ?? 260);
408
+ let c = t.cycleDuration ?? 4200, u = t.animalDelay ?? 1400;
409
+ l(r, c, u);
410
+ let d = setInterval(() => l(r, c, u), c);
411
+ return i.set(r, { interval: d }), r;
412
+ }
413
+ function d(e) {
414
+ let t = i.get(e);
415
+ t && clearInterval(t.interval), e && e.parentNode && e.parentNode.removeChild(e), i.delete(e);
416
+ }
417
+ function f(e) {
418
+ a(), e.classList.add("solar-background-root"), e.style.display = "block", e.style.position = "absolute", e.style.inset = "0", e.style.width = "100%", e.style.height = "100%", e.style.pointerEvents = "none", e.style.zIndex = "-1", e.innerHTML = o(), s(e, 260);
419
+ let t = setInterval(() => l(e), 4200);
420
+ i.set(e, { interval: t });
421
+ }
422
+ var p = class extends HTMLElement {
423
+ connectedCallback() {
424
+ this.__solarBackgroundInitialized ||= (f(this), !0);
425
+ }
426
+ disconnectedCallback() {
427
+ let e = i.get(this);
428
+ e && (clearInterval(e.interval), i.delete(this));
429
+ }
430
+ };
431
+ customElements.get("solar-background") || customElements.define("solar-background", p);
432
+ //#endregion
433
+ export { u as createSolarBackground, d as destroySolarBackground };