/* 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%; } }