.vt360-apartment-viewer { width: 100%; max-width: 1400px; margin: 0 auto; box-sizing: border-box; }
.vt360-apartment-viewer__header { display: block; margin-bottom: 20px; }
.vt360-apartment-viewer__header > * { box-sizing: border-box; min-width: 0; margin: 0; padding: 10px 28px; }
.vt360-apartment-viewer__header > .vt360-apartment-viewer__back { padding: 9px 16px; }
.vt360-apartment-viewer__row { display: grid; align-items: stretch; }
.vt360-apartment-viewer__row--primary { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.vt360-apartment-viewer__row--secondary { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr); }
.vt360-apartment-viewer__row > * { box-sizing: border-box; min-width: 0; margin: 0; padding: 10px 28px; }
.vt360-apartment-viewer__title { font-size: 24px; font-weight: 400; line-height: 1.25; }
.vt360-apartment-viewer__header > p { line-height: 1.35; }
.vt360-apartment-viewer__layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); grid-template-areas: 'map stage' 'navigation stage'; align-items: start; gap: 18px; min-width: 0; }
.vt360-apartment-viewer__sidebar-panel { min-width: 0; padding: 16px; border: 1px solid #dcdcde; border-radius: 8px; background: #fff; }
.vt360-apartment-viewer__sidebar-panel--map { grid-area: map; }
.vt360-apartment-viewer__sidebar-panel--navigation { grid-area: navigation; }
.vt360-apartment-plan-map { min-width: 0; }
.vt360-apartment-plan-map h3 { margin: 0 0 8px; }
.vt360-apartment-plan-map svg { display: block; width: 100%; height: auto; max-height: 260px; background: #f6f7f7; border: 1px solid #dcdcde; }
.vt360-apartment-plan-map__underlay { pointer-events: none; }
.vt360-apartment-plan-map__grid { pointer-events: none; }
.vt360-apartment-plan-map__grid-line { fill: none; stroke: #d9dde1; stroke-width: .02; }
.vt360-apartment-plan-map__connection { stroke: #2271b1; stroke-width: .12; opacity: .7; }
.vt360-apartment-plan-map__fov { pointer-events: none; }
.vt360-apartment-plan-map__fov-cone { fill: rgba(214, 54, 56, .38); stroke: #d63638; stroke-width: .08; vector-effect: non-scaling-stroke; }
.vt360-apartment-plan-map__wall { stroke: #1d2327; stroke-linecap: square; }
.vt360-apartment-plan-map__wall-length { fill: #50575e; font-size: .34px; pointer-events: none; }
.vt360-apartment-plan-map__fixture { fill: rgba(34, 113, 177, .18); stroke: #2271b1; stroke-width: .05; }
.vt360-apartment-plan-map__fixture--window { fill: #fff; }
.vt360-apartment-plan-map__fixture--thin-rectangle { fill: rgba(34, 113, 177, .32); }
.vt360-apartment-plan-map__fixture--door { fill: #1d2327; stroke: #1d2327; stroke-width: .02; }
.vt360-apartment-plan-map__fixture--thick-rectangle { fill: rgba(45, 125, 50, .22); stroke: #2f7d32; }
.vt360-apartment-plan-map__fixture--square { fill: rgba(135, 87, 0, .2); stroke: #8a5a00; }
.vt360-apartment-plan-map__fixture--oval { fill: rgba(166, 58, 101, .18); stroke: #a63a65; }
.vt360-apartment-plan-map__fixture--wide-rectangle { fill: rgba(91, 68, 174, .2); stroke: #5b44ae; }
.vt360-apartment-plan-map__caption-text { fill: #1d2327; font-size: .42px; font-weight: 600; pointer-events: none; }
.vt360-apartment-plan-map__caption-outline { fill: rgba(255, 255, 255, .9); stroke: #50575e; stroke-width: .04; }
.vt360-apartment-plan-map__caption-divider { stroke: #50575e; stroke-width: .04; }
.vt360-apartment-plan-map__point { cursor: pointer; outline: none; }
.vt360-apartment-plan-map__point-circle { fill: #2271b1; stroke: #fff; stroke-width: 1px; pointer-events: none; }
.vt360-apartment-plan-map__point-hit-area { fill: transparent; stroke: none; pointer-events: all; }
.vt360-apartment-plan-map__point-label { fill: #fff; font: bold 12px sans-serif; pointer-events: none; }
.vt360-apartment-plan-map__point.is-current .vt360-apartment-plan-map__point-circle { fill: #d63638; }
.vt360-apartment-plan-map__point:focus-visible .vt360-apartment-plan-map__point-circle { stroke: #000; stroke-width: 2px; }
.vt360-apartment-viewer__sidebar-panel--navigation h3 { margin-top: 0; font-size: 14px;}
.vt360-apartment-viewer__sidebar-panel--navigation { --vt360-navigation-button-height: 48px; --vt360-navigation-button-gap: 8px; }
.vt360-apartment-viewer__sidebar-panel--navigation [data-vt360-viewpoint-list] { display: grid; min-width: 0; gap: var(--vt360-navigation-button-gap); }
.vt360-apartment-viewer__sidebar-panel--navigation [data-vt360-viewpoint-list].is-scrollable { max-height: calc(var(--vt360-navigation-button-height) * 4 + var(--vt360-navigation-button-gap) * 3); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.vt360-apartment-viewer__sidebar-panel--navigation button { display: block; width: 100%; min-height: var(--vt360-navigation-button-height); box-sizing: border-box; margin: 0; padding: 10px 12px; border: 1px solid #c3c4c7; border-radius: 5px; background: #fff; text-align: left; cursor: pointer; font-size: 14px;}
.vt360-apartment-viewer__sidebar-panel--navigation button.is-current { border-color: #2271b1; background: #eaf4fb; font-weight: 700; }
.vt360-apartment-viewer__sidebar-panel--navigation button:disabled { color: #8c8f94; background: #f6f7f7; cursor: not-allowed; }
.vt360-apartment-viewer__stage { grid-area: stage; min-width: 0; min-height: 520px; position: relative; }
.vt360-apartment-panorama { height: 520px; min-height: 520px; position: relative; overflow: hidden; border-radius: 8px; background: #111; }
.vt360-apartment-preloader { position: absolute; z-index: 20; inset: 0; display: grid; place-items: center; overflow: hidden; background: #111; opacity: 1; transition: opacity .22s ease; }
.vt360-apartment-preloader.is-complete { opacity: 0; pointer-events: none; }
.vt360-apartment-preloader__backdrop { position: absolute; inset: -28px; display: block; width: calc(100% + 56px); height: calc(100% + 56px); background-color: #111; object-fit: cover; object-position: center; filter: blur(var(--vt360-preloader-blur, 22px)); transform: scale(1.08); transition: filter .25s ease; }
.vt360-apartment-preloader__content { position: relative; z-index: 1; display: flex; width: min(300px, calc(100% - 32px)); box-sizing: border-box; flex-direction: column; align-items: center; gap: 8px; padding: 22px 24px; border: 1px solid rgba(255,255,255,.3); border-radius: 10px; background: rgba(17,17,17,.62); color: #fff; text-align: center; text-shadow: 0 1px 2px rgba(0,0,0,.65); backdrop-filter: blur(3px); }
.vt360-apartment-preloader__content strong { font-size: 18px; line-height: 1.3; }
.vt360-apartment-preloader__content > span:not(.vt360-apartment-preloader__spinner) { font-size: 14px; line-height: 1.3; }
.vt360-apartment-preloader__spinner { width: 28px; height: 28px; margin-bottom: 3px; border: 3px solid rgba(255,255,255,.38); border-right-color: #fff; border-radius: 50%; animation: vt360-apartment-preloader-spin .75s linear infinite; }
.vt360-apartment-preloader__progress { width: 100%; height: 5px; margin-top: 8px; overflow: hidden; border-radius: 999px; background: rgba(255,255,255,.28); }
.vt360-apartment-preloader__progress span { display: block; width: 0; height: 100%; border-radius: inherit; background: #fff; transition: width .25s ease; }
@keyframes vt360-apartment-preloader-spin { to { transform: rotate(360deg); } }
.vt360-apartment-panorama .psv-container, .vt360-apartment-panorama .psv-canvas-container, .vt360-apartment-panorama canvas { cursor: grab !important; }
.vt360-apartment-panorama:active .psv-container, .vt360-apartment-panorama:active .psv-canvas-container, .vt360-apartment-panorama:active canvas { cursor: grabbing !important; }
.vt360-apartment-viewer__status { color: #b32d2e; }
@media (max-width: 700px) { .vt360-apartment-viewer__layout { grid-template-columns: 1fr; grid-template-areas: 'map' 'stage' 'navigation'; } .vt360-apartment-viewer__stage, .vt360-apartment-panorama { height: 380px; min-height: 380px; } .vt360-apartment-plan-map svg { max-height: 220px; } }

/* Isolate the panorama geometry from theme content-width and media rules. */
.vt360-apartment-viewer .vt360-apartment-viewer__layout {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
}
.vt360-apartment-viewer .vt360-apartment-viewer__stage {
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  min-height: 520px !important;
}
.vt360-apartment-viewer .vt360-apartment-panorama {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  height: 520px !important;
  min-height: 520px !important;
  aspect-ratio: auto !important;
  overflow: hidden !important;
  position: relative !important;
}
.vt360-apartment-viewer .vt360-apartment-panorama .psv-container,
.vt360-apartment-viewer .vt360-apartment-panorama .psv-canvas-container,
.vt360-apartment-viewer .vt360-apartment-panorama canvas {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  min-width: 0 !important;
  height: 100% !important;
  min-height: 0 !important;
  aspect-ratio: auto !important;
}
@media (max-width: 700px) {
  .vt360-apartment-viewer .vt360-apartment-viewer__stage,
  .vt360-apartment-viewer .vt360-apartment-panorama {
    width: 100% !important;
    height: 380px !important;
    min-height: 380px !important;
  }
}

/* The fixed 520px/380px height above is only meant for the panorama's normal
   "card" layout (next to the sidebar list), where it needs some defined
   height. In fullscreen it must not apply at all - the panorama should fill
   whatever the browser's fullscreen viewport actually is. */
.vt360-apartment-viewer--fullscreen .vt360-apartment-panorama {
  width: 100vw !important;
  height: 100vh !important;
  min-height: 0 !important;
}

/* Keep the existing apartment plan visible over the panorama in fullscreen mode. */
.vt360-apartment-viewer--fullscreen .vt360-apartment-panorama > .vt360-apartment-plan-map {
  position: absolute !important;
  left: 16px !important;
  bottom: 46px !important;
  z-index: 30 !important;
  display: block !important;
  width: min(280px, 30vw) !important;
  max-width: calc(100% - 32px) !important;
  margin: 0 !important;
  padding: 10px !important;
  box-sizing: border-box !important;
  border: 1px solid rgba(255, 255, 255, .72) !important;
  border-radius: 8px !important;
  background: rgba(17, 17, 17, .33) !important;
  box-shadow: 0 2px 14px rgba(0, 0, 0, .45) !important;
}
.vt360-apartment-viewer--fullscreen .vt360-apartment-panorama > .vt360-apartment-plan-map h3 {
  margin: 0 0 8px !important;
  color: #fff !important;
  font-size: 14px !important;
  line-height: 1.2 !important;
}
.vt360-apartment-viewer--fullscreen .vt360-apartment-panorama > .vt360-apartment-plan-map svg {
  width: 100% !important;
  max-height: none !important;
  border: 0 !important;
  background: rgba(246, 247, 247, .96) !important;
}
@media (max-width: 700px) {
  .vt360-apartment-viewer--fullscreen .vt360-apartment-panorama > .vt360-apartment-plan-map {
    left: 10px !important;
    bottom: 40px !important;
    width: min(220px, calc(100% - 20px)) !important;
    padding: 8px !important;
  }
}

/* CSS-only MiniMap collapse/expand control. */
.vt360-apartment-plan-map__toggle {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}
.vt360-apartment-plan-map__toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.vt360-apartment-plan-map__toolbar h3 {
  flex: 1 1 auto;display: none;
}
.vt360-apartment-plan-map__collapse,
.vt360-apartment-plan-map__expand {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 28px;
  padding: 4px 8px;
  border: 1px solid #8c8f94;
  border-radius: 4px;
  background: #fff;
  color: #1d2327;
  font-size: 12px;
  line-height: 1.2;
  cursor: pointer;
  text-align: center;
}
.vt360-apartment-plan-map__collapse {
  margin-bottom: 9px;
}
.vt360-apartment-plan-map__expand { display: none; }
.vt360-apartment-plan-map__toggle:focus-visible + .vt360-apartment-plan-map__toolbar label {
  outline: 2px solid #2271b1;
  outline-offset: 2px;
}
.vt360-apartment-plan-map__toggle:checked ~ .vt360-apartment-plan-map__toolbar h3,
.vt360-apartment-plan-map__toggle:checked ~ .vt360-apartment-plan-map__canvas {
  display: none;
}
.vt360-apartment-plan-map__toggle:checked ~ .vt360-apartment-plan-map__toolbar {
  justify-content: flex-start;
}
.vt360-apartment-plan-map__toggle:checked ~ .vt360-apartment-plan-map__toolbar .vt360-apartment-plan-map__collapse {
  display: none;
}
.vt360-apartment-plan-map__toggle:checked ~ .vt360-apartment-plan-map__toolbar .vt360-apartment-plan-map__expand {
  display: inline-flex;
}
.vt360-apartment-plan-map:has(.vt360-apartment-plan-map__toggle:checked) {
  width: fit-content !important;
}
.vt360-apartment-viewer--fullscreen .vt360-apartment-plan-map__toolbar h3 {
  margin: 0 !important;
  color: #fff !important;
  font-size: 14px !important;
}
.vt360-apartment-viewer--fullscreen .vt360-apartment-plan-map__collapse,
.vt360-apartment-viewer--fullscreen .vt360-apartment-plan-map__expand {
  border-color: rgba(255, 255, 255, .75);
  background: rgba(255, 255, 255, .94);
}
.vt360-apartment-viewer--fullscreen .vt360-apartment-plan-map:has(.vt360-apartment-plan-map__toggle:checked) {
  padding: 6px !important;
}

/* The desktop map is always expanded; only the independent fullscreen copy has toggle controls. */
.vt360-apartment-viewer__sidebar-panel--map .vt360-apartment-plan-map__toolbar label {
  display: none !important;
}
.vt360-apartment-viewer__sidebar-panel--map .vt360-apartment-plan-map__toolbar {
  display: block;
}
