.split-host {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: row;
  overflow: hidden;
}

.split-host:not(.split-active) .split-pane--primary {
  flex: 1 1 100%;
}

.split-host:not(.split-active) .split-pane--mirror,
.split-host:not(.split-active) .split-divider {
  display: none !important;
}

.split-host.split-active .split-pane--primary {
  flex: 0 0 var(--split-primary-ratio, 50%);
  min-width: 0;
  position: relative;
  overflow: hidden;
}

.split-host.split-active .split-pane--mirror {
  flex: 1 1 auto;
  min-width: 0;
  position: relative;
  overflow: hidden;
  pointer-events: auto;
}

.split-host.split-active .split-divider {
  flex: 0 0 6px;
  cursor: col-resize;
  background: var(--border);
  touch-action: none;
}

.split-host.split-active .split-divider:hover,
.split-host.split-active .split-divider.dragging {
  background: var(--primary-muted);
}

.split-pane--primary .canvas-stage {
  position: absolute;
  inset: 0;
  transform-origin: 0 0;
  will-change: transform;
}

/* Unified MapPlanView stack (primary + mirror share these roles) */
.map-plan-view__stage,
.map-plan-view__stack {
  position: relative;
  width: 100%;
  height: 100%;
}

.map-plan-view__map,
.map-plan-view__bg,
.map-plan-view__plan,
.map-plan-view__overlay {
  position: absolute;
  inset: 0;
}

.map-plan-view__plan {
  z-index: 2;
  pointer-events: none;
  background: transparent;
}

/* Frozen plan snapshot during basemap style swap (above draw, no hit-testing).
   Must sit above #canvas-draw in normal (2), map-3d (3), and export (6) stacks. */
.map-plan-view__plan-freeze,
#canvas-plan-freeze {
  position: absolute;
  inset: 0;
  z-index: 10;
  pointer-events: none;
  background: transparent;
}

#canvas-plan-freeze.hidden {
  display: none;
}

.mirror-stage,
.maplibre-bg--mirror,
.mirror-bg-canvas,
.split-mirror-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.mirror-bg-canvas {
  z-index: 1;
}

.split-mirror-overlay {
  z-index: 2;
  background: transparent;
  /* Plan paint surface for MapPlanView(mirror); hits go via viewport pointer pipeline */
  pointer-events: none;
}

/* Same underlay as primary while tiles load (sky blue, not dark). */
.mirror-stage,
.map-plan-view__stage {
  background: #9dcef5;
}

.split-pane--primary,
.split-pane--mirror {
  position: relative;
}

.split-pane .layer-options {
  pointer-events: auto;
}

.layer-bg-choices--mirror {
  grid-template-columns: repeat(2, 1fr);
}

body.split-placing-symbol .split-pane--mirror {
  cursor: crosshair;
}

body.map-3d-active.split-active .split-pane--primary .maplibre-bg {
  pointer-events: auto;
}

/* Mirror map is interactive for pan/zoom whether cameras are linked or free. */
body.split-active .split-pane--mirror .maplibre-bg--mirror {
  pointer-events: auto !important;
}

body.split-active .split-pane--mirror .split-mirror-overlay {
  pointer-events: none;
}

/* Free (unlinked) camera: same hit-testing; class kept for future free-only UI. */
body.mirror-camera-free.split-active .split-pane--mirror .maplibre-bg--mirror {
  pointer-events: auto !important;
}

@media (max-width: 1100px) {
  .split-host {
    flex-direction: column;
  }

  .split-host.split-active .split-pane--mirror,
  .split-host.split-active .split-divider {
    display: none !important;
  }
}