152 lines
3.4 KiB
CSS
152 lines
3.4 KiB
CSS
.sports-container {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
pointer-events: none;
|
|
z-index: 9999;
|
|
overflow: hidden;
|
|
contain: strict;
|
|
}
|
|
|
|
.sports-symbol {
|
|
position: absolute;
|
|
top: -10vh;
|
|
/* Default is empty, assigned in JS */
|
|
font-size: 3rem; /* Fallback emoji size */
|
|
opacity: 0.9;
|
|
z-index: 40;
|
|
}
|
|
|
|
.sports-inner {
|
|
display: inline-block;
|
|
}
|
|
|
|
.sports-symbol img {
|
|
width: 6vh;
|
|
height: auto;
|
|
max-width: 60px;
|
|
object-fit: contain;
|
|
}
|
|
|
|
.sports-confetti {
|
|
position: absolute;
|
|
top: -5vh;
|
|
width: 10px;
|
|
height: 15px;
|
|
opacity: 0.8;
|
|
animation: sports-confetti-fall linear infinite;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.sports-confetti.circle {
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.sports-confetti.triangle {
|
|
width: 0 !important;
|
|
height: 0 !important;
|
|
background-color: transparent !important;
|
|
border-left: 5px solid transparent;
|
|
border-right: 5px solid transparent;
|
|
border-bottom: 10px solid var(--shape-color, #FFCC00);
|
|
}
|
|
|
|
.sports-turf {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: 12vh;
|
|
background: linear-gradient(180deg, transparent 0%, rgba(34, 139, 34, 0.4) 30%, rgba(0, 100, 0, 0.8) 100%);
|
|
pointer-events: none;
|
|
z-index: 10;
|
|
}
|
|
|
|
@keyframes sports-bounce {
|
|
0% {
|
|
transform: translateY(-10vh);
|
|
opacity: 0;
|
|
animation-timing-function: ease-in;
|
|
}
|
|
5% {
|
|
opacity: 1;
|
|
}
|
|
30% {
|
|
transform: translateY(85vh);
|
|
animation-timing-function: ease-out;
|
|
} /* hit ground, start bouncing up */
|
|
50% {
|
|
transform: translateY(40vh);
|
|
animation-timing-function: ease-in;
|
|
} /* peak of bounce, start falling */
|
|
70% {
|
|
transform: translateY(85vh);
|
|
animation-timing-function: ease-out;
|
|
} /* hit ground, bounce up */
|
|
85% {
|
|
transform: translateY(70vh);
|
|
animation-timing-function: ease-in;
|
|
} /* smaller peak */
|
|
95% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: translateY(110vh);
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes sports-fall {
|
|
0% { transform: translateY(-10vh); opacity: 0; }
|
|
5% { opacity: 1; }
|
|
90% { opacity: 1; }
|
|
100% { transform: translateY(110vh); opacity: 0; }
|
|
}
|
|
|
|
@keyframes sports-sway {
|
|
0% { transform: rotate(-15deg) translateX(-10px); }
|
|
100% { transform: rotate(15deg) translateX(10px); }
|
|
}
|
|
|
|
@keyframes sports-spin {
|
|
0% { transform: rotate(0deg); }
|
|
100% { transform: rotate(var(--spin-rot, 360deg)); }
|
|
}
|
|
|
|
@keyframes sports-confetti-fall {
|
|
0% {
|
|
transform: translateY(-5vh) rotate3d(var(--rx), var(--ry), var(--rz), 0deg);
|
|
opacity: 0;
|
|
}
|
|
5% {
|
|
opacity: 1;
|
|
}
|
|
90% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: translateY(105vh) rotate3d(var(--rx), var(--ry), var(--rz), var(--rot-dir));
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
@keyframes sports-arc-x-right {
|
|
0% { transform: translateX(0); }
|
|
100% { transform: translateX(130vw); }
|
|
}
|
|
|
|
@keyframes sports-arc-x-left {
|
|
0% { transform: translateX(0); }
|
|
100% { transform: translateX(-130vw); }
|
|
}
|
|
|
|
@keyframes sports-arc-y {
|
|
0% { transform: translateY(110vh) scale(0.5) rotate(-30deg); opacity: 0; animation-timing-function: ease-out; }
|
|
5% { opacity: 1; }
|
|
50% { transform: translateY(10vh) scale(1.5) rotate(0deg); animation-timing-function: ease-in; }
|
|
95% { opacity: 1; }
|
|
100% { transform: translateY(110vh) scale(0.5) rotate(30deg); opacity: 0; }
|
|
}
|