142 lines
2.4 KiB
CSS
142 lines
2.4 KiB
CSS
/* Copyright John Salguero All rights Reserved */
|
|
html, body {
|
|
margin: 0;
|
|
height: 100vh;
|
|
overflow: hidden;
|
|
|
|
background: linear-gradient(-45deg, #0f172a, #1e293b, #0ea5e9, #22c55e);
|
|
background-size: 400% 400%;
|
|
animation: gradientShift 12s ease infinite;
|
|
|
|
color: white;
|
|
font-family: Arial;
|
|
}
|
|
|
|
#timer {
|
|
position: absolute;
|
|
top: 20px;
|
|
right: 20px;
|
|
width: 60px;
|
|
height: 60px;
|
|
z-index: 10;
|
|
}
|
|
|
|
#timer svg {
|
|
transform: rotate(-90deg); /* start from top */
|
|
}
|
|
|
|
#timer-bg {
|
|
fill: none;
|
|
stroke: rgba(255,255,255,0.2);
|
|
stroke-width: 8;
|
|
}
|
|
|
|
#timer-progress {
|
|
fill: none;
|
|
stroke: #22c55e; /* green */
|
|
stroke-width: 8;
|
|
stroke-linecap: round;
|
|
transition: stroke-dashoffset 1s linear;
|
|
}
|
|
|
|
#timer-text {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
font-size: 28px;
|
|
font-weight: bold;
|
|
color: white;
|
|
}
|
|
|
|
#problem {
|
|
position: absolute;
|
|
top: 15%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
|
|
font-size: 76px;
|
|
text-align: center;
|
|
}
|
|
|
|
#equation-main, #equation-next {
|
|
position: absolute;
|
|
top: 30%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
font-size: 48px;
|
|
transition: all 0.5s ease;
|
|
}
|
|
|
|
#equation-next {
|
|
opacity: 0;
|
|
transform: translate(-50%, 40px); /* start slightly below */
|
|
}
|
|
|
|
#explanation {
|
|
position: absolute;
|
|
top: 45%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
font-size: 24px;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
#steps {
|
|
position: absolute;
|
|
top: 27%; /* below the problem */
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
|
|
width: 800px;
|
|
text-align: center;
|
|
font-size: 28px;
|
|
}
|
|
|
|
#waveCanvas {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 0;
|
|
}
|
|
|
|
#particleCanvas {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 0;
|
|
}
|
|
|
|
#timer.low {
|
|
animation: pulse 1s infinite;
|
|
}
|
|
|
|
.fade-out {
|
|
opacity: 0;
|
|
transform: translateX(-50%) scale(0.95);
|
|
}
|
|
|
|
.fade-in {
|
|
opacity: 1;
|
|
transform: translateX(-50%) scale(1);
|
|
}
|
|
|
|
.move-up {
|
|
transform: translate(-50%, 0);
|
|
}
|
|
|
|
@keyframes pulse {
|
|
0% { transform: scale(1); }
|
|
50% { transform: scale(1.1); }
|
|
100% { transform: scale(1); }
|
|
}
|
|
|
|
@keyframes gradientShift {
|
|
0% { background-position: 0% 50%; }
|
|
50% { background-position: 100% 50%; }
|
|
100% { background-position: 0% 50%; }
|
|
} |