#212121
1.uiverse { 2 --duration: 5s; 3 --easing: ease-in-out; 4 --c-color-1: #ff6f00; 5 --c-color-2: #1a23ff; 6 --c-color-3: #e21bda; 7 --c-color-4: #ffd800; 8 --c-shadow: rgba(0, 0, 0, 0.2); 9 --c-shadow-inset-top: rgba(0, 0, 0, 0.1); 10 --c-shadow-inset-bottom: rgba(0, 0, 0, 0.1); 11 --c-radial-inner: #ffd215; 12 --c-radial-outer: #fff172; 13 --c-color: #fff; 14 -webkit-tap-highlight-color: transparent; 15 -webkit-appearance: none; 16 outline: none; 17 position: relative; 18 cursor: pointer; 19 border: none; 20 display: table; 21 border-radius: 24px; 22 padding: 0; 23 margin: 0; 24 text-align: center; 25 font-weight: 600; 26 font-size: 16px; 27 letter-spacing: 0.02em; 28 line-height: 1.5; 29 color: var(--c-color); 30 background: radial-gradient(circle, var(--c-radial-inner), var(--c-radial-outer) 80%); 31 box-shadow: 0 0 14px var(--c-shadow); 32} 33 34.uiverse:before { 35 content: ''; 36 pointer-events: none; 37 position: absolute; 38 z-index: 3; 39 left: 0; 40 top: 0; 41 right: 0; 42 bottom: 0; 43 border-radius: 24px; 44 box-shadow: inset 0 3px 12px var(--c-shadow-inset-top), inset 0 -3px 4px var(--c-shadow-inset-bottom); 45} 46 47.uiverse .wrapper { 48 -webkit-mask-image: -webkit-radial-gradient(white, black); 49 overflow: hidden; 50 border-radius: 24px; 51 min-width: 132px; 52 padding: 12px 0; 53} 54 55.uiverse .wrapper span { 56 display: inline-block; 57 position: relative; 58 z-index: 1; 59} 60 61.uiverse .wrapper .circle { 62 position: absolute; 63 left: 0; 64 top: 0; 65 width: 40px; 66 height: 40px; 67 border-radius: 50%; 68 filter: blur(var(--blur, 8px)); 69 background: var(--background, transparent); 70 transform: translate(var(--x, 0), var(--y, 0)) translateZ(0); 71 animation: var(--animation, none) var(--duration) var(--easing) infinite; 72} 73 74.uiverse .wrapper .circle.circle-1, .uiverse .wrapper .circle.circle-9, .uiverse .wrapper .circle.circle-10 { 75 --background: var(--c-color-4); 76} 77 78.uiverse .wrapper .circle.circle-3, .uiverse .wrapper .circle.circle-4 { 79 --background: var(--c-color-2); 80 --blur: 14px; 81} 82 83.uiverse .wrapper .circle.circle-5, .uiverse .wrapper .circle.circle-6 { 84 --background: var(--c-color-3); 85 --blur: 16px; 86} 87 88.uiverse .wrapper .circle.circle-2, .uiverse .wrapper .circle.circle-7, .uiverse .wrapper .circle.circle-8, .uiverse .wrapper .circle.circle-11, .uiverse .wrapper .circle.circle-12 { 89 --background: var(--c-color-1); 90 --blur: 12px; 91} 92 93.uiverse .wrapper .circle.circle-1 { 94 --x: 0; 95 --y: -40px; 96 --animation: circle-1; 97} 98 99.uiverse .wrapper .circle.circle-2 { 100 --x: 92px; 101 --y: 8px; 102 --animation: circle-2; 103} 104 105.uiverse .wrapper .circle.circle-3 { 106 --x: -12px; 107 --y: -12px; 108 --animation: circle-3; 109} 110 111.uiverse .wrapper .circle.circle-4 { 112 --x: 80px; 113 --y: -12px; 114 --animation: circle-4; 115} 116 117.uiverse .wrapper .circle.circle-5 { 118 --x: 12px; 119 --y: -4px; 120 --animation: circle-5; 121} 122 123.uiverse .wrapper .circle.circle-6 { 124 --x: 56px; 125 --y: 16px; 126 --animation: circle-6; 127} 128 129.uiverse .wrapper .circle.circle-7 { 130 --x: 8px; 131 --y: 28px; 132 --animation: circle-7; 133} 134 135.uiverse .wrapper .circle.circle-8 { 136 --x: 28px; 137 --y: -4px; 138 --animation: circle-8; 139} 140 141.uiverse .wrapper .circle.circle-9 { 142 --x: 20px; 143 --y: -12px; 144 --animation: circle-9; 145} 146 147.uiverse .wrapper .circle.circle-10 { 148 --x: 64px; 149 --y: 16px; 150 --animation: circle-10; 151} 152 153.uiverse .wrapper .circle.circle-11 { 154 --x: 4px; 155 --y: 4px; 156 --animation: circle-11; 157} 158 159.uiverse .wrapper .circle.circle-12 { 160 --blur: 14px; 161 --x: 52px; 162 --y: 4px; 163 --animation: circle-12; 164} 165 166@keyframes circle-1 { 167 0% { 168 transform: translate(0px, 0px) translateZ(0); 169 } 170 171 50% { 172 transform: translate(0px, 16px) translateZ(0); 173 } 174 175 100% { 176 transform: translate(0px, 0px) translateZ(0); 177 } 178} 179 180@keyframes circle-2 { 181 0% { 182 transform: translate(80px, -10px) translateZ(0); 183 } 184 185 50% { 186 transform: translate(72px, -48px) translateZ(0); 187 } 188 189 100% { 190 transform: translate(80px, -10px) translateZ(0); 191 } 192} 193 194@keyframes circle-3 { 195 0% { 196 transform: translate(20px, 12px) translateZ(0); 197 } 198 199 50% { 200 transform: translate(12px, 4px) translateZ(0); 201 } 202 203 100% { 204 transform: translate(20px, 12px) translateZ(0); 205 } 206} 207 208@keyframes circle-4 { 209 0% { 210 transform: translate(76px, -12px) translateZ(0); 211 } 212 213 50% { 214 transform: translate(112px, -8px) translateZ(0); 215 } 216 217 100% { 218 transform: translate(76px, -12px) translateZ(0); 219 } 220} 221 222@keyframes circle-5 { 223 0% { 224 transform: translate(84px, 28px) translateZ(0); 225 } 226 227 50% { 228 transform: translate(40px, -32px) translateZ(0); 229 } 230 231 100% { 232 transform: translate(84px, 28px) translateZ(0); 233 } 234} 235 236@keyframes circle-6 { 237 0% { 238 transform: translate(28px, -16px) translateZ(0); 239 } 240 241 50% { 242 transform: translate(76px, -56px) translateZ(0); 243 } 244 245 100% { 246 transform: translate(28px, -16px) translateZ(0); 247 } 248} 249 250@keyframes circle-7 { 251 0% { 252 transform: translate(8px, 28px) translateZ(0); 253 } 254 255 50% { 256 transform: translate(20px, -60px) translateZ(0); 257 } 258 259 100% { 260 transform: translate(8px, 28px) translateZ(0); 261 } 262} 263 264@keyframes circle-8 { 265 0% { 266 transform: translate(32px, -4px) translateZ(0); 267 } 268 269 50% { 270 transform: translate(56px, -20px) translateZ(0); 271 } 272 273 100% { 274 transform: translate(32px, -4px) translateZ(0); 275 } 276} 277 278@keyframes circle-9 { 279 0% { 280 transform: translate(20px, -12px) translateZ(0); 281 } 282 283 50% { 284 transform: translate(80px, -8px) translateZ(0); 285 } 286 287 100% { 288 transform: translate(20px, -12px) translateZ(0); 289 } 290} 291 292@keyframes circle-10 { 293 0% { 294 transform: translate(68px, 20px) translateZ(0); 295 } 296 297 50% { 298 transform: translate(100px, 28px) translateZ(0); 299 } 300 301 100% { 302 transform: translate(68px, 20px) translateZ(0); 303 } 304} 305 306@keyframes circle-11 { 307 0% { 308 transform: translate(4px, 4px) translateZ(0); 309 } 310 311 50% { 312 transform: translate(68px, 20px) translateZ(0); 313 } 314 315 100% { 316 transform: translate(4px, 4px) translateZ(0); 317 } 318} 319 320@keyframes circle-12 { 321 0% { 322 transform: translate(56px, 0px) translateZ(0); 323 } 324 325 50% { 326 transform: translate(60px, -32px) translateZ(0); 327 } 328 329 100% { 330 transform: translate(56px, 0px) translateZ(0); 331 } 332}
Comments
MIT License