Skip to content

Commit 069fc4b

Browse files
ui: update animation
1 parent 5b7e26e commit 069fc4b

3 files changed

Lines changed: 59 additions & 25 deletions

File tree

assets/ucip-entanglement.jpg

239 KB
Loading

assets/ucip-entanglement.png

1.17 MB
Loading

styles.css

Lines changed: 59 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -82,71 +82,103 @@ body {
8282
background-image: linear-gradient(180deg, var(--dark-bg-start) 0%, #10213a 100%);
8383
}
8484

85-
body::before {
85+
body::before,
86+
body::after {
8687
content: "";
8788
position: fixed;
8889
inset: -28vmax;
8990
z-index: -1;
9091
pointer-events: none;
91-
transform: translate3d(-2vmax, -2.5vmax, 0) scale(1);
9292
transform-origin: center;
9393
background-repeat: no-repeat;
9494
background-size: 100% 100%;
9595
background-position: center;
9696
will-change: transform, opacity;
9797
}
9898

99+
/* Top-left orb (light mode) */
99100
:root:not([data-theme="dark"]) body::before {
100101
background-image:
101102
radial-gradient(ellipse 28vw 16vh at 50% 16%, rgba(44, 110, 194, 1) 0%, rgba(44, 110, 194, 0.92) 18%, rgba(44, 110, 194, 0.48) 48%, rgba(44, 110, 194, 0.156) 76%, rgba(44, 110, 194, 0) 100%),
102103
radial-gradient(ellipse 42vw 26vh at 8% 14%, rgba(44, 110, 194, 0.619) 0%, rgba(44, 110, 194, 0.448) 18%, rgba(44, 110, 194, 0.225) 46%, rgba(44, 110, 194, 0.077) 74%, rgba(44, 110, 194, 0) 100%),
103-
radial-gradient(ellipse 42vw 26vh at 92% 86%, rgba(44, 110, 194, 0.336) 0%, rgba(44, 110, 194, 0.246) 18%, rgba(44, 110, 194, 0.125) 46%, rgba(44, 110, 194, 0.042) 74%, rgba(44, 110, 194, 0) 100%),
104104
radial-gradient(ellipse 59vw 30vh at 50% 17%, rgba(44, 110, 194, 1) 0%, rgba(44, 110, 194, 1) 9%, rgba(44, 110, 194, 0.84) 38%, rgba(44, 110, 194, 0.34) 69%, rgba(44, 110, 194, 0) 100%),
105-
radial-gradient(ellipse 86vw 50vh at 8% 14%, rgba(44, 110, 194, 1) 0%, rgba(44, 110, 194, 0.742) 10%, rgba(44, 110, 194, 0.389) 36%, rgba(44, 110, 194, 0.16) 66%, rgba(44, 110, 194, 0) 100%),
106-
radial-gradient(ellipse 86vw 50vh at 92% 86%, rgba(44, 110, 194, 0.576) 0%, rgba(44, 110, 194, 0.408) 10%, rgba(44, 110, 194, 0.215) 36%, rgba(44, 110, 194, 0.088) 66%, rgba(44, 110, 194, 0) 100%);
105+
radial-gradient(ellipse 86vw 50vh at 8% 14%, rgba(44, 110, 194, 1) 0%, rgba(44, 110, 194, 0.742) 10%, rgba(44, 110, 194, 0.389) 36%, rgba(44, 110, 194, 0.16) 66%, rgba(44, 110, 194, 0) 100%);
107106
opacity: 1;
108-
animation: ambientSpotlightLight 3s ease-in-out infinite alternate;
107+
animation: breatheTopLight 4s ease-in-out infinite alternate;
109108
}
110109

110+
/* Bottom-right orb (light mode) — more opaque/blue than before */
111+
:root:not([data-theme="dark"]) body::after {
112+
background-image:
113+
radial-gradient(ellipse 42vw 26vh at 92% 86%, rgba(44, 110, 194, 0.72) 0%, rgba(44, 110, 194, 0.54) 18%, rgba(44, 110, 194, 0.28) 46%, rgba(44, 110, 194, 0.095) 74%, rgba(44, 110, 194, 0) 100%),
114+
radial-gradient(ellipse 86vw 50vh at 92% 86%, rgba(44, 110, 194, 0.88) 0%, rgba(44, 110, 194, 0.66) 10%, rgba(44, 110, 194, 0.36) 36%, rgba(44, 110, 194, 0.14) 66%, rgba(44, 110, 194, 0) 100%);
115+
opacity: 1;
116+
animation: breatheBottomRightLight 5.5s ease-in-out infinite alternate;
117+
}
118+
119+
/* Top-left orb (dark mode) */
111120
:root[data-theme="dark"] body::before {
112121
background-image:
113122
radial-gradient(ellipse 29vw 17vh at 50% 16%, rgba(43, 106, 188, 1) 0%, rgba(43, 106, 188, 0.88) 18%, rgba(43, 106, 188, 0.48) 48%, rgba(43, 106, 188, 0.176) 76%, rgba(43, 106, 188, 0) 100%),
114123
radial-gradient(ellipse 44vw 28vh at 8% 14%, rgba(51, 122, 205, 1) 0%, rgba(51, 122, 205, 0.896) 18%, rgba(51, 122, 205, 0.503) 46%, rgba(51, 122, 205, 0.175) 74%, rgba(51, 122, 205, 0) 100%),
115-
radial-gradient(ellipse 44vw 28vh at 92% 86%, rgba(51, 122, 205, 0.6) 0%, rgba(51, 122, 205, 0.492) 18%, rgba(51, 122, 205, 0.276) 46%, rgba(51, 122, 205, 0.096) 74%, rgba(51, 122, 205, 0) 100%),
116124
radial-gradient(ellipse 62vw 33vh at 50% 17%, rgba(37, 88, 150, 1) 0%, rgba(37, 88, 150, 1) 10%, rgba(37, 88, 150, 0.928) 40%, rgba(37, 88, 150, 0.408) 70%, rgba(37, 88, 150, 0) 100%),
117-
radial-gradient(ellipse 90vw 54vh at 8% 14%, rgba(43, 102, 168, 1) 0%, rgba(43, 102, 168, 1) 11%, rgba(43, 102, 168, 0.917) 38%, rgba(43, 102, 168, 0.386) 68%, rgba(43, 102, 168, 0) 100%),
125+
radial-gradient(ellipse 90vw 54vh at 8% 14%, rgba(43, 102, 168, 1) 0%, rgba(43, 102, 168, 1) 11%, rgba(43, 102, 168, 0.917) 38%, rgba(43, 102, 168, 0.386) 68%, rgba(43, 102, 168, 0) 100%);
126+
opacity: 1;
127+
animation: breatheTopDark 4s ease-in-out infinite alternate;
128+
}
129+
130+
/* Bottom-right orb (dark mode) — original transparency */
131+
:root[data-theme="dark"] body::after {
132+
background-image:
133+
radial-gradient(ellipse 44vw 28vh at 92% 86%, rgba(51, 122, 205, 0.6) 0%, rgba(51, 122, 205, 0.492) 18%, rgba(51, 122, 205, 0.276) 46%, rgba(51, 122, 205, 0.096) 74%, rgba(51, 122, 205, 0) 100%),
118134
radial-gradient(ellipse 90vw 54vh at 92% 86%, rgba(43, 102, 168, 0.6) 0%, rgba(43, 102, 168, 0.6) 11%, rgba(43, 102, 168, 0.504) 38%, rgba(43, 102, 168, 0.212) 68%, rgba(43, 102, 168, 0) 100%);
119135
opacity: 1;
120-
animation: ambientSpotlightDark 3s ease-in-out infinite alternate;
136+
animation: breatheBottomRightDark 5.5s ease-in-out infinite alternate;
121137
}
122138

123-
@keyframes ambientSpotlightLight {
139+
/* Top-left orb breathes in (expands) while bottom-right breathes out (contracts) */
140+
@keyframes breatheTopLight {
124141
0% {
125-
transform: translate3d(-2.6vmax, -3vmax, 0) scale(0.985);
126-
opacity: 0.74;
142+
transform: translate3d(-0.6vmax, -0.6vmax, 0) scale(0.96);
143+
opacity: 0.80;
144+
}
145+
100% {
146+
transform: translate3d(0.6vmax, 0.4vmax, 0) scale(1.07);
147+
opacity: 1;
127148
}
128-
50% {
129-
transform: translate3d(0.9vmax, -1.2vmax, 0) scale(1.04);
130-
opacity: 0.93;
149+
}
150+
151+
@keyframes breatheTopDark {
152+
0% {
153+
transform: translate3d(-0.5vmax, -0.5vmax, 0) scale(0.962);
154+
opacity: 0.82;
131155
}
132156
100% {
133-
transform: translate3d(3.2vmax, 1.7vmax, 0) scale(1.075);
157+
transform: translate3d(0.5vmax, 0.35vmax, 0) scale(1.065);
134158
opacity: 1;
135159
}
136160
}
137161

138-
@keyframes ambientSpotlightDark {
162+
/* Bottom-right orb starts expanded and contracts — opposite phase to top orb */
163+
@keyframes breatheBottomRightLight {
139164
0% {
140-
transform: translate3d(-2.5vmax, -2.9vmax, 0) scale(0.988);
165+
transform: scale(1.09);
166+
opacity: 1;
167+
}
168+
100% {
169+
transform: scale(0.91);
141170
opacity: 0.76;
142171
}
143-
50% {
144-
transform: translate3d(0.8vmax, -1.3vmax, 0) scale(1.038);
145-
opacity: 0.94;
172+
}
173+
174+
@keyframes breatheBottomRightDark {
175+
0% {
176+
transform: scale(1.08);
177+
opacity: 1;
146178
}
147179
100% {
148-
transform: translate3d(3.1vmax, 1.6vmax, 0) scale(1.07);
149-
opacity: 1;
180+
transform: scale(0.92);
181+
opacity: 0.78;
150182
}
151183
}
152184

@@ -1443,11 +1475,13 @@ html.theme-transitions * {
14431475
transition-duration: 0.01ms !important;
14441476
}
14451477

1446-
:root:not([data-theme="dark"]) body::before {
1478+
:root:not([data-theme="dark"]) body::before,
1479+
:root:not([data-theme="dark"]) body::after {
14471480
animation: none !important;
14481481
}
14491482

1450-
:root[data-theme="dark"] body::before {
1483+
:root[data-theme="dark"] body::before,
1484+
:root[data-theme="dark"] body::after {
14511485
animation: none !important;
14521486
}
14531487

0 commit comments

Comments
 (0)