diff --git a/static/index.html b/static/index.html index f4220fa..2acff4d 100644 --- a/static/index.html +++ b/static/index.html @@ -300,7 +300,7 @@ } /* On mobile: full-bleed modal, buttons hug the screen edges. Body padding - still ~20 px so cropper corner handles stay outside Android's edge-swipe + still ~16 px so cropper corner handles stay outside Android's edge-swipe gesture zone — tapping a button doesn't trigger it, but dragging into the very edge does. */ @media (max-width: 640px) { @@ -308,24 +308,35 @@ .modal { width: 100vw; max-width: 100vw; - height: 100vh; - max-height: 100vh; + height: 100dvh; /* dynamic viewport — accounts for mobile browser chrome */ + max-height: 100dvh; + border: 0; border-radius: 0; } .modal-header { + flex-shrink: 0; /* never get squeezed out by the body */ padding-top: max(0.75rem, env(safe-area-inset-top, 0px)); } .modal-body { + flex: 1 1 auto; + min-height: 0; padding: - 1rem - max(1.25rem, env(safe-area-inset-right, 0px)) - 1rem - max(1.25rem, env(safe-area-inset-left, 0px)); + 0.5rem + max(1rem, env(safe-area-inset-right, 0px)) + 0.5rem + max(1rem, env(safe-area-inset-left, 0px)); max-height: none; } .cam-body { padding: 0 !important; } - .cam-body video { max-height: none; } + .cam-body video { + width: 100%; + height: 100%; + max-height: none; + object-fit: contain; + } .modal-footer { + flex-shrink: 0; + background: var(--bg); /* explicit so it always reads clearly */ padding: 0.5rem max(0.5rem, env(safe-area-inset-right, 0px))