@font-face { font-family: 'mplus-1m'; font-weight: normal; src: url('fonts/mplus-1m-regular-webfont.woff2') format('woff2'), url('fonts/mplus-1m-regular-webfont.woff') format('woff'); } *, *::before, *::after { box-sizing: border-box } html, body { min-height: 100vh; padding: 0; margin: 0 } body { font-family: 'mplus-1m', monospace; line-height: 1.5; font-size: 18px; color: #444; } h1 { font-size: 18px; color: hsl(240, 100%, 70%); display: inline-block; border-bottom: 2px solid currentcolor; margin: 0 } p { margin: 18px 0; } p:first-of-type { margin-top: 24px; } p:last-of-type { margin-bottom: 24px } button { background: hsl(240, 100%, 70%); border-radius: 4px; border: none; padding: 4px 8px; color: #fff; line-height: 24px; font-family: inherit; font-size: inherit; } button:hover { transform: translateY(-1px); cursor: pointer } input { border: none; border-bottom: 2px solid hsl(240, 100%, 70%); color: hsl(240, 100%, 70%); background: none; font-family: inherit; font-size: inherit; height: 30px; line-height: 24px; margin-right: 8px; width: 120px; text-align: center; } #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; } .capture-container { display: flex; align-items: center; justify-content: center; margin-bottom: 28px; } 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); border-radius: 4px; }