/* The map owns its height at every breakpoint; controls never float over it. */
.pv-map-system { padding: 22px; background: radial-gradient(ellipse at 50% 35%, #214e3b, #102f26 72%); perspective: none; transform-style: flat; }
.pv-map-system .pv-system-heading { flex-wrap: wrap; gap: 12px; }
.pv-map-system .pv-map-kicker { font-size: 12px; color: #b3caba; letter-spacing: .025em; margin-left: 8px; }
.pv-map-system .pv-orbit { display: block; height: clamp(330px, 36vw, 460px); margin: 12px -8px 8px; transform-style: flat; }
.pv-map-system #hero-3d-container { position: relative; height: 100%; width: 100%; overflow: hidden; border-radius: 12px; background: radial-gradient(ellipse at 50% 60%, #5b9e6320, transparent 68%); }
.pv-map-system #hero-3d-canvas { position: absolute; inset: 0; touch-action: pan-y pinch-zoom; outline-offset: -4px; cursor: grab; }
.pv-map-system #hero-3d-canvas:active { cursor: grabbing; }
.pv-map-system [hidden] { display: none !important; }
.pv-map-fallback { width: 100%; height: 100%; object-fit: contain; }
.pv-map-labels { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.pv-map-label { position: absolute; left: 0; top: 0; padding: 4px 7px; border: 1px solid #678a73; border-radius: 5px; background: #103226eb; color: #e7eedf; font: 500 12px/1.3 Inter, sans-serif; white-space: nowrap; will-change: transform; }
.pv-map-label.is-selected { background: #d3e7b2; border-color: #d3e7b2; color: #143627; font-weight: 700; }
.pv-map-compass { position: absolute; right: 12px; top: 12px; color: #b3caba; font: 500 12px/1 Inter,sans-serif; pointer-events: none; }
.pv-map-controls { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; padding: 5px; border: 1px solid #537260; border-radius: 12px; background: #0c281faa; }
.pv-map-controls button { min-width: 0; min-height: 44px; padding: 8px 5px; font: 600 14px/1.25 Inter,sans-serif; border-radius: 8px; color: #dce8d6; background: transparent; transition: background .18s; }
.pv-map-controls button:hover { background: #ffffff14; }
.pv-map-controls button:disabled { opacity: .5; cursor: default; }
.pv-map-controls button[aria-pressed="true"] { color: #12372b; background: #d0e4ad; }
.pv-map-controls button:focus-visible,.pv-map-city-row select:focus-visible { outline: 2px solid #e6f7cc; outline-offset: 2px; }
.pv-map-city-row { display: flex; gap: 12px; align-items: center; justify-content: space-between; margin-top: 12px; }
.pv-map-city-row label { color: #c2d3c4; font-size: 14px; }
.pv-map-city-row select { width: 48%; max-width: 200px; min-height: 44px; padding: 8px 10px; background: #193e2f; border: 1px solid #5d7c65; border-radius: 8px; color: #f0f4e9; font-size: 16px; }
.pv-map-help { margin: 10px 0 0; font-size: 12px; line-height: 1.6; color: #b6cbb9; min-height: 38px; }
.pv-map-system .pv-system-footer { flex-wrap: wrap; font-size: 12px; line-height: 1.6; }
@media (max-width: 767px) {
  .pv-map-system { padding: 16px 14px; border-radius: 18px; width: 100%; max-width: 100%; box-sizing: border-box; }
  .pv-map-system .pv-orbit { display: block !important; width: 100% !important; height: clamp(300px, 86vw, 420px); margin: 8px 0; }
  .pv-map-system .pv-system-heading { gap: 8px; }
  .pv-map-system .pv-map-kicker { display: inline-block; font-size: 11px; }
  .pv-map-controls { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 4px; width: 100%; box-sizing: border-box; }
  .pv-map-controls button { min-height: 44px; font-size: 12px; padding: 6px 4px; }
  .pv-map-city-row { display: flex; gap: 8px; align-items: center; justify-content: space-between; margin-top: 10px; width: 100%; box-sizing: border-box; }
  .pv-map-city-row label { font-size: 13px; }
  .pv-map-city-row select { width: 50%; max-width: 200px; min-height: 44px; padding: 6px 10px; font-size: 16px; }
  .pv-map-system .pv-capabilities-grid { margin-top: 16px; width: 100%; }
}
@media (max-width: 380px) {
  .pv-map-system .pv-map-kicker { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .pv-map-controls button { transition: none; }
}
