:root { --hue: 223; --bg: hsl(var(--hue), 90%, 5%); --infinity-dur: 0.3s; } html { background: var(--bg); } body { margin: 0; padding: 0; box-sizing: border-box; animation: fadein 1s; } .loading { min-height: 100vh; display: flex; position: relative; justify-content: center; align-items: center; z-index: 6; cursor: progress; } .loading-icon { justify-self: center; display: block; position: absolute; } .loading-icon img { width: 256; height: 256; scale: 0.6; } .loading-tip { font-family: 'Flexi IBM VGA True (437)'; font-weight: 400; text-rendering: optimizelegibility; color: #009400; font-size: 40px; min-height: 50px; display: flex; margin-bottom: 12rem; } .loading-infinity { display: flex; align-items: center; justify-content: center; } .infinity { width: 16em; height: 8em; padding-top: 10em; background-color: rgba(0, 0, 0, 0); } .infinity-track { stroke: hsl(var(--hue), 90%, 90%); transition: stroke var(--infinity-dur); } .worm1, .worm2 { animation: worm1 2s linear infinite; } .worm2 { animation-name: worm2; } .stopped { animation-play-state: paused; } @keyframes worm1 { from { stroke-dashoffset: 0; } 50% { animation-timing-function: steps(1); stroke-dashoffset: -358; } 50.01% { animation-timing-function: linear; stroke-dashoffset: 358; } to { stroke-dashoffset: 0; } } @keyframes worm2 { from { stroke-dashoffset: 358; } 50% { stroke-dashoffset: 0; } to { stroke-dashoffset: -358; } } @keyframes fadein { 0% { opacity: 0; } 100% { opacity: 1; } } @font-face { font-family: 'Flexi IBM VGA True (437)'; src: url('../fonts/Flexi_IBM_VGA_True_437.woff2') format('woff2'), url('../fonts/Flexi_IBM_VGA_True_437.woff') format('woff'), url('../fonts/Flexi_IBM_VGA_True_437.svg#Flexi_IBM_VGA_True_437') format('svg'); font-weight: normal; font-style: normal; font-display: swap; } section { height: 100%; width: 100%; position: absolute; top: 0; left: 0; overflow: hidden; }