html, body {
    width: 100%;
    height: 100vh; /* fallback for older browsers */
    height: 100dvh; /* shrinks when mobile keyboard opens */
    margin: 0;
    padding: 0;
    overflow: hidden;
}

/*
 * iOS Chrome workaround: Chrome on iOS doesn't always expose
 * env(safe-area-inset-bottom) to JavaScript, so the Compose
 * bottom nav can get hidden by the browser/system bar.
 * Applying the inset at the CSS level on the canvas ensures
 * all browsers that support viewport-fit=cover get the padding.
 */
canvas {
    padding-bottom: env(safe-area-inset-bottom, 0px) !important;
    box-sizing: border-box;
}