/* 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: 72px; height: 72px; 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, #explanation, #equation-next{ position: absolute; top: 31.5%; left: 50%; transform: translateX(-50%); font-size: 48px; transition: all 1.5s ease; } #explanation { transform: translate(-50%, 80px); font-size: 24px; opacity: 0.8; } #equation-next { font-size: 48px; transform: translate(-50%, 160px); /* start slightly below */ opacity: 0; } #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; } #equation-next.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%; } }