body { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; } /* Keep the counter vertically centered in the viewport, below the header. */ header { position: absolute; top: 0; } main { flex: 1; display: flex; align-items: center; justify-content: center; padding-block: 10rem; } .timer { text-align: center; min-width: 0; max-width: 100%; margin: 0; } .counter { display: flex; align-items: baseline; justify-content: center; max-width: 100%; overflow-x: auto; font-family: var(--pico-font-family-monospace); font-size: clamp(3rem, 12vw, 6rem); line-height: 1.2; margin-bottom: 1.5rem; } .counter input { box-sizing: content-box; flex: 0 0 auto; width: 1ch; height: auto; margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: inherit; font: inherit; line-height: inherit; text-align: right; } .counter #seconds { width: 2ch; text-align: left; } .counter input:focus { background: transparent; box-shadow: none; } .counter input:focus-visible:not([readonly]) { outline: 2px solid var(--pico-primary); outline-offset: 4px; } .controls { display: flex; justify-content: center; gap: 1rem; } .controls button { margin: 0; min-width: 6rem; } .counter.finished { animation: flash 1s steps(1, end) infinite; } @keyframes flash { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }