/* Isolated, adaptive media viewer: desktop modal and touch-device fullscreen. */
#viewer{position:fixed;inset:0;width:100vw;height:100vh;width:100dvw;height:100dvh;max-width:none;max-height:none;margin:0;border:0;padding:max(0px,env(safe-area-inset-top)) max(0px,env(safe-area-inset-right)) max(0px,env(safe-area-inset-bottom)) max(0px,env(safe-area-inset-left));overflow:hidden;overscroll-behavior:contain;background:rgba(0,0,0,.96);color:#fff}
#viewer::backdrop{background:rgba(0,0,0,.82);backdrop-filter:blur(3px)}
#viewer .viewer-stage{width:100%;height:100%;display:grid;place-items:center;overflow:hidden;padding:clamp(14px,2.5vw,30px);background:transparent;touch-action:none;opacity:0;transform:scale(.985);transition:opacity 180ms ease,transform 190ms cubic-bezier(.2,.75,.25,1)}
#viewer.is-visible .viewer-stage{opacity:1;transform:scale(1)}
#viewer.is-closing .viewer-stage{opacity:0;transform:scale(.985)}
#viewer .viewer-media{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;background:#000;box-shadow:0 14px 45px rgba(0,0,0,.34)}
#viewer .viewer-image{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;will-change:transform;transition:transform 150ms ease-out}
#viewer .viewer-image:active{cursor:grabbing;transition:none}
#viewer .viewer-video{width:100%;height:100%;object-fit:contain;outline:0}
#viewer .close-viewer{position:fixed;z-index:2;right:max(16px,env(safe-area-inset-right));top:max(16px,env(safe-area-inset-top));border:1px solid #ffffff59;border-radius:50%;background:#161619e8;color:#fff;width:44px;height:44px;font-size:30px;line-height:38px;padding:0;box-shadow:0 3px 14px #0009;transition:transform 150ms ease,background 150ms ease}
#viewer .close-viewer:hover{background:#34343ae8;transform:scale(1.06)}
#viewer .close-viewer:focus-visible{outline:2px solid #fff;outline-offset:3px}
@media (pointer:coarse){#viewer .viewer-stage{padding:14px}#viewer .viewer-media{box-shadow:none}}
@media (prefers-reduced-motion:reduce){#viewer .viewer-stage,#viewer .viewer-image,#viewer .close-viewer{transition:none}}
