/* Keep the page at its reading position while a media/3D dialog owns touch. */
html.viewer-scroll-locked{overflow:hidden;overscroll-behavior:none}
html.viewer-scroll-locked body{position:fixed;top:var(--viewer-page-top,0px);left:0;right:0;width:100%;overscroll-behavior:none}

/* Even with Safari's controls visible, portrait dialogs must fit the viewport. */
@media(any-pointer:coarse){
 dialog.viewport-viewer[open]{max-height:100dvh}
 .photo-tour-dialog.viewport-viewer[open],.floor-3d-dialog.viewport-viewer[open]{height:100dvh}
}

/* Size directly in CSS: Safari can report stale/intermediate visualViewport
   dimensions during rotation. Never freeze those values into the modal.
   Dynamic units follow the browser bars without a JavaScript resize event. */
dialog.immersive-viewer[open]{position:fixed;inset:0;width:100vw;width:100dvw;height:100vh;height:100dvh;min-width:0;min-height:0;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;overscroll-behavior:none;box-shadow:none;touch-action:none}
dialog.immersive-viewer::backdrop{background:#12291f;backdrop-filter:none}
.immersive-viewer :is(.photo-dialog-header,.floor-3d-dialog-header,.variant-panel-head){position:absolute;inset:auto;top:max(10px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));z-index:30;display:block;width:56px;height:56px;min-height:56px;padding:0;border:0;background:none;pointer-events:auto}
.immersive-viewer :is(.photo-dialog-header,.floor-3d-dialog-header,.variant-panel-head)>:not(button.round){display:none!important}
.immersive-viewer :is(.photo-dialog-header,.floor-3d-dialog-header,.variant-panel-head)>button.round{position:absolute;inset:0;width:56px;height:56px;min-width:56px;min-height:56px;margin:0;padding:0;border:1px solid #ffffff80;border-radius:50%;background:#12291fd9;color:#fff;font-size:1.8rem;line-height:1;pointer-events:auto;touch-action:manipulation}
.immersive-viewer :is(.photo-dialog-header,.floor-3d-dialog-header,.variant-panel-head)>button.round:focus-visible{outline:3px solid #e6c587;outline-offset:2px}

.photo-tour-dialog.immersive-viewer .photo-dialog-gallery{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;display:block}
.photo-tour-dialog.immersive-viewer .photo-dialog-gallery>:not(.tour-track){display:none!important}
.photo-tour-dialog.immersive-viewer .tour-track{width:100%;height:100%;min-height:0;max-height:none;margin:0;border-radius:0}
.photo-tour-dialog.immersive-viewer .tour-slide,.photo-tour-dialog.immersive-viewer .tour-photo{height:100%;min-height:0;aspect-ratio:auto}
/* Preserve the whole photo on rotation, even if portrait used “Bild füllen”. */
.photo-tour-dialog.immersive-viewer .tour-photo :is(img,video){object-fit:contain!important}

/* Both 3D entry points share the same canvas; do not remount or reload it. */
#rooms-panel.immersive-viewer #grundrisse,
#rooms-panel.immersive-viewer #grundrisse>.wrap,
#rooms-panel.immersive-viewer #floor-panel,
.floor-3d-dialog.immersive-viewer .floor-3d-mount,
.immersive-viewer .interactive-floor-gallery{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0;max-height:none;margin:0;padding:0;border:0;display:block;border-radius:0}
#rooms-panel.immersive-viewer #grundrisse>.wrap>:not(#floor-panel),
#rooms-panel.immersive-viewer #floor-panel>:not(.interactive-floor-gallery),
.immersive-viewer .interactive-floor-gallery>:not(.floor-viewer-stage){display:none!important}
.immersive-viewer .floor-viewer-stage{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:none;margin:0;padding:0;border:0;border-radius:0;touch-action:none}
.immersive-viewer #floor-model{width:100%;height:100%;min-height:0;max-height:none;touch-action:none}
.immersive-viewer :is(.floor-viewer-topline,.floor-viewer-loading,.floor-area-labels){display:none!important}
#rooms-panel.immersive-viewer>:not(.variant-panel-head):not(#grundrisse){display:none!important}

.immersive-viewer button.viewer-close-pressed{background:#436353;transform:scale(.95)}
