*, *::before, *::after { box-sizing: border-box } html, body { min-height: 100vh; padding: 0; margin: 0 } body { color: #222; line-height: 1.2 } #welcome-message { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 640px; max-width: 100%; padding: 48px; z-index: 20; opacity: 1; transition: opacity .2s ease; } #welcome-message.hidden { pointer-events: none; opacity: 0; } .container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 640px; max-width: 100%; padding: 48px; text-align: center; } canvas#result { /* needs position: absolute so it's rendered above the video */ position: absolute; z-index: 10; } video#capture { max-width: 100%; height: auto; } canvas#result, video#capture { transform: scale(-1, 1) }