mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-01-23 19:27:04 +00:00
247 lines
4.5 KiB
SCSS
247 lines
4.5 KiB
SCSS
.rayContainer {
|
|
// Theme-specific colors
|
|
--ray-color-primary: color-mix(in srgb, var(--primary-color), transparent 30%);
|
|
--ray-color-secondary: color-mix(in srgb, var(--secondary-color), transparent 30%);
|
|
--ray-color-accent: color-mix(in srgb, var(--accent-color), transparent 30%);
|
|
|
|
// Theme-specific gradients
|
|
--ray-gradient-primary: radial-gradient(var(--ray-color-primary) 0%, transparent 70%);
|
|
--ray-gradient-secondary: radial-gradient(var(--ray-color-secondary) 0%, transparent 70%);
|
|
--ray-gradient-accent: radial-gradient(var(--ray-color-accent) 0%, transparent 70%);
|
|
|
|
position: fixed;
|
|
inset: 0;
|
|
overflow: hidden;
|
|
animation: fadeIn 1.5s ease-out;
|
|
pointer-events: none;
|
|
z-index: 0;
|
|
// background-color: transparent;
|
|
|
|
:global(html[data-theme='dark']) & {
|
|
mix-blend-mode: screen;
|
|
}
|
|
|
|
:global(html[data-theme='light']) & {
|
|
mix-blend-mode: multiply;
|
|
}
|
|
}
|
|
|
|
.lightRay {
|
|
position: absolute;
|
|
border-radius: 100%;
|
|
|
|
:global(html[data-theme='dark']) & {
|
|
mix-blend-mode: screen;
|
|
}
|
|
|
|
:global(html[data-theme='light']) & {
|
|
mix-blend-mode: multiply;
|
|
opacity: 0.4;
|
|
}
|
|
}
|
|
|
|
.ray1 {
|
|
width: 600px;
|
|
height: 800px;
|
|
background: var(--ray-gradient-primary);
|
|
transform: rotate(65deg);
|
|
top: -500px;
|
|
left: -100px;
|
|
filter: blur(80px);
|
|
opacity: 0.6;
|
|
animation: float1 15s infinite ease-in-out;
|
|
}
|
|
|
|
.ray2 {
|
|
width: 400px;
|
|
height: 600px;
|
|
background: var(--ray-gradient-secondary);
|
|
transform: rotate(-30deg);
|
|
top: -300px;
|
|
left: 200px;
|
|
filter: blur(60px);
|
|
opacity: 0.6;
|
|
animation: float2 18s infinite ease-in-out;
|
|
}
|
|
|
|
.ray3 {
|
|
width: 500px;
|
|
height: 400px;
|
|
background: var(--ray-gradient-accent);
|
|
top: -320px;
|
|
left: 500px;
|
|
filter: blur(65px);
|
|
opacity: 0.5;
|
|
animation: float3 20s infinite ease-in-out;
|
|
}
|
|
|
|
.ray4 {
|
|
width: 400px;
|
|
height: 450px;
|
|
background: var(--ray-gradient-secondary);
|
|
top: -350px;
|
|
left: 800px;
|
|
filter: blur(55px);
|
|
opacity: 0.55;
|
|
animation: float4 17s infinite ease-in-out;
|
|
}
|
|
|
|
.ray5 {
|
|
width: 350px;
|
|
height: 500px;
|
|
background: var(--ray-gradient-primary);
|
|
transform: rotate(-45deg);
|
|
top: -250px;
|
|
left: 1000px;
|
|
filter: blur(45px);
|
|
opacity: 0.6;
|
|
animation: float5 16s infinite ease-in-out;
|
|
}
|
|
|
|
.ray6 {
|
|
width: 300px;
|
|
height: 700px;
|
|
background: var(--ray-gradient-accent);
|
|
transform: rotate(75deg);
|
|
top: -400px;
|
|
left: 600px;
|
|
filter: blur(75px);
|
|
opacity: 0.45;
|
|
animation: float6 19s infinite ease-in-out;
|
|
}
|
|
|
|
.ray7 {
|
|
width: 450px;
|
|
height: 600px;
|
|
background: var(--ray-gradient-primary);
|
|
transform: rotate(45deg);
|
|
top: -450px;
|
|
left: 350px;
|
|
filter: blur(65px);
|
|
opacity: 0.55;
|
|
animation: float7 21s infinite ease-in-out;
|
|
}
|
|
|
|
.ray8 {
|
|
width: 380px;
|
|
height: 550px;
|
|
background: var(--ray-gradient-secondary);
|
|
transform: rotate(-60deg);
|
|
top: -380px;
|
|
left: 750px;
|
|
filter: blur(58px);
|
|
opacity: 0.6;
|
|
animation: float8 14s infinite ease-in-out;
|
|
}
|
|
|
|
@keyframes float1 {
|
|
0%,
|
|
100% {
|
|
transform: rotate(65deg) translate(0, 0);
|
|
}
|
|
25% {
|
|
transform: rotate(70deg) translate(30px, 20px);
|
|
}
|
|
50% {
|
|
transform: rotate(60deg) translate(-20px, 40px);
|
|
}
|
|
75% {
|
|
transform: rotate(68deg) translate(-40px, 10px);
|
|
}
|
|
}
|
|
|
|
@keyframes float2 {
|
|
0%,
|
|
100% {
|
|
transform: rotate(-30deg) scale(1);
|
|
}
|
|
33% {
|
|
transform: rotate(-25deg) scale(1.1);
|
|
}
|
|
66% {
|
|
transform: rotate(-35deg) scale(0.95);
|
|
}
|
|
}
|
|
|
|
@keyframes float3 {
|
|
0%,
|
|
100% {
|
|
transform: translate(0, 0) rotate(0deg);
|
|
}
|
|
25% {
|
|
transform: translate(40px, 20px) rotate(5deg);
|
|
}
|
|
75% {
|
|
transform: translate(-30px, 40px) rotate(-5deg);
|
|
}
|
|
}
|
|
|
|
@keyframes float4 {
|
|
0%,
|
|
100% {
|
|
transform: scale(1) rotate(0deg);
|
|
}
|
|
50% {
|
|
transform: scale(1.15) rotate(10deg);
|
|
}
|
|
}
|
|
|
|
@keyframes float5 {
|
|
0%,
|
|
100% {
|
|
transform: rotate(-45deg) translate(0, 0);
|
|
}
|
|
33% {
|
|
transform: rotate(-40deg) translate(25px, -20px);
|
|
}
|
|
66% {
|
|
transform: rotate(-50deg) translate(-25px, 20px);
|
|
}
|
|
}
|
|
|
|
@keyframes float6 {
|
|
0%,
|
|
100% {
|
|
transform: rotate(75deg) scale(1);
|
|
filter: blur(75px);
|
|
}
|
|
50% {
|
|
transform: rotate(85deg) scale(1.1);
|
|
filter: blur(65px);
|
|
}
|
|
}
|
|
|
|
@keyframes float7 {
|
|
0%,
|
|
100% {
|
|
transform: rotate(45deg) translate(0, 0);
|
|
opacity: 0.55;
|
|
}
|
|
50% {
|
|
transform: rotate(40deg) translate(-30px, 30px);
|
|
opacity: 0.65;
|
|
}
|
|
}
|
|
|
|
@keyframes float8 {
|
|
0%,
|
|
100% {
|
|
transform: rotate(-60deg) scale(1);
|
|
}
|
|
25% {
|
|
transform: rotate(-55deg) scale(1.05);
|
|
}
|
|
75% {
|
|
transform: rotate(-65deg) scale(0.95);
|
|
}
|
|
}
|
|
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|