133 lines
3.1 KiB
CSS
133 lines
3.1 KiB
CSS
.underwater-container {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
pointer-events: none;
|
|
z-index: 9999;
|
|
overflow: hidden;
|
|
contain: strict;
|
|
}
|
|
|
|
.underwater-bg {
|
|
position: absolute;
|
|
top: 0; left: 0; width: 100vw; height: 100vh;
|
|
background: linear-gradient(180deg, rgba(0, 105, 148, 0.1) 0%, rgba(0, 48, 143, 0.4) 100%);
|
|
pointer-events: none;
|
|
z-index: 10;
|
|
}
|
|
|
|
.underwater-symbol {
|
|
position: absolute;
|
|
animation-timing-function: linear;
|
|
animation-iteration-count: infinite;
|
|
font-size: 3rem;
|
|
opacity: 0.9;
|
|
z-index: 20;
|
|
}
|
|
|
|
.underwater-symbol img {
|
|
width: 6vh;
|
|
height: auto;
|
|
max-width: 60px;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.underwater-seaweed {
|
|
will-change: transform, opacity;
|
|
position: absolute;
|
|
bottom: -1vh;
|
|
font-size: 4rem;
|
|
transform-origin: bottom center;
|
|
animation: underwater-sway 4s ease-in-out infinite alternate;
|
|
z-index: 30;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.underwater-seaweed img {
|
|
height: 12vh;
|
|
width: auto;
|
|
object-fit: contain;
|
|
max-height: 120px;
|
|
}
|
|
|
|
.underwater-bubble {
|
|
will-change: transform;
|
|
position: absolute;
|
|
bottom: -5vh;
|
|
border-radius: 50%;
|
|
border: 1px solid rgba(255, 255, 255, 0.4);
|
|
background: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.1));
|
|
box-shadow: inset 0 0 5px rgba(255, 255, 255, 0.5);
|
|
animation: underwater-bubble-rise linear infinite;
|
|
z-index: 40;
|
|
}
|
|
|
|
@keyframes underwater-traverse-right {
|
|
0% { left: -25vw; }
|
|
100% { left: 125vw; }
|
|
}
|
|
|
|
@keyframes underwater-traverse-left {
|
|
0% { left: 125vw; }
|
|
100% { left: -25vw; }
|
|
}
|
|
|
|
@keyframes underwater-traverse-up {
|
|
0% { top: 0; translate: 0 120vh; }
|
|
100% { top: 0; translate: 0 -20vh; }
|
|
}
|
|
|
|
@keyframes underwater-traverse-down {
|
|
0% { top: 0; translate: 0 -20vh; }
|
|
100% { top: 0; translate: 0 120vh; }
|
|
}
|
|
|
|
@keyframes underwater-sway-y {
|
|
0% { transform: translateY(-2vh); }
|
|
100% { transform: translateY(2vh); }
|
|
}
|
|
|
|
@keyframes underwater-sway {
|
|
0% { transform: rotate(-10deg); }
|
|
100% { transform: rotate(10deg); }
|
|
}
|
|
|
|
@keyframes underwater-bubble-rise {
|
|
0% { transform: translateY(0) translateX(0); opacity: 0; }
|
|
10% { opacity: 0.7; }
|
|
50% { transform: translateY(-55vh) translateX(-20px); }
|
|
90% { opacity: 0; }
|
|
100% { transform: translateY(-110vh) translateX(10px); opacity: 0; }
|
|
}
|
|
|
|
.underwater-god-rays {
|
|
will-change: transform;
|
|
position: absolute;
|
|
top: 0;
|
|
left: -50vw;
|
|
width: 200vw;
|
|
height: 200vh;
|
|
background: repeating-linear-gradient(
|
|
15deg,
|
|
rgba(255, 255, 255, 0.02) 0px,
|
|
rgba(255, 255, 255, 0.05) 100px,
|
|
transparent 100px,
|
|
transparent 300px
|
|
);
|
|
animation: god-rays-sway 20s ease-in-out infinite alternate;
|
|
pointer-events: none;
|
|
z-index: 12;
|
|
transform-origin: top center;
|
|
mix-blend-mode: overlay;
|
|
filter: blur(5px);
|
|
translate: 0 -50vh;
|
|
}
|
|
|
|
@keyframes god-rays-sway {
|
|
0% { transform: rotate(-3deg) translateX(-5%); opacity: 0.4; }
|
|
50% { opacity: 0.8; }
|
|
100% { transform: rotate(3deg) translateX(5%); opacity: 0.4; }
|
|
}
|