/* Geographic relief and illustrative, upright factory markers. */
:root{
  --terrain-tilt:50deg;--terrain-depth:20px;--terrain-perspective:1200px;
  --terrain-top:#ffffff;--terrain-side:#626262;--terrain-outline:#292929;
  --terrain-shadow:rgba(0,0,0,.16);--factory-front:#ffffff;--factory-side:#b8b8b8;
  --factory-roof:#eeeeee;--factory-line:#202020;--factory-window:#313131;
  --scene-header-height:48px;--scene-gap:12px;
}
.map-scene-host{position:relative}
.region-scene{position:relative;display:grid;grid-template-rows:auto minmax(0,1fr);gap:var(--scene-gap);width:100%;height:100%;min-width:0;padding:var(--space-2)}
.region-scene-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:var(--scene-header-height);position:relative;z-index:2}
.region-scene-title{display:block;font-family:var(--dashboard-display);font-size:var(--text-2xl);font-weight:700;line-height:1.25;color:var(--fg)}
.region-scene-back{flex:none;min-height:44px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--fg);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);white-space:nowrap}
.terrain-viewport{position:relative;display:block;width:100%;height:100%;min-height:0;perspective:var(--terrain-perspective);perspective-origin:50% 50%;isolation:auto}
.terrain-plane{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transform-origin:50% 50%;backface-visibility:visible}
.map-landing .map svg.terrain-layer{position:absolute;top:0;left:0;display:block;width:100%;height:100%;overflow:visible;pointer-events:none;backface-visibility:visible}
.terrain-side use{fill:var(--terrain-side);stroke:var(--terrain-side);stroke-width:1.5;stroke-linejoin:round}
.terrain-top use{fill:var(--terrain-top);stroke:var(--terrain-outline);stroke-width:1.25;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.terrain-bottom{filter:drop-shadow(0 16px 12px var(--terrain-shadow))}
.factory-anchor{position:absolute;display:block;width:var(--factory-width,64px);height:calc(var(--factory-width,64px)*112/96);transform-origin:50% 100%;transform:translateZ(2px) rotateX(calc(-1*var(--terrain-tilt)));pointer-events:none;backface-visibility:hidden}
.factory-model{display:block;width:100%;height:100%;transform-origin:50% 100%}
.map-landing .map svg.factory-illustration{display:block;width:100%;height:100%;overflow:visible;pointer-events:none}
.factory-illustration polygon{stroke:var(--factory-line);stroke-width:1.2;stroke-linejoin:round}
.factory-ground{fill:var(--terrain-shadow)}
.factory-face-front{fill:var(--factory-front)}
.factory-face-side{fill:var(--factory-side)}
.factory-roof{fill:var(--factory-roof)}
.factory-chimney-front{fill:var(--factory-line)}
.factory-chimney-side{fill:var(--muted)}
.factory-chimney-top{fill:var(--factory-side)}
.factory-window,.factory-door{fill:var(--factory-window)}
.region-scene-context{position:absolute;top:0;left:0;display:block;width:100%;height:100%;pointer-events:none;z-index:1}
.region-scene-context svg{pointer-events:none}
.region-scene.is-exiting{position:absolute;top:0;left:0;pointer-events:none}
.region-scene.is-exiting .region-scene-head{visibility:hidden}
.hero-map.is-region-focused .map-scale{display:none}
@media(hover:hover){.region-scene-back:hover{background:var(--chip-bg);color:var(--fg)}}
@media(max-width:767px){
  :root{--terrain-perspective:800px;--terrain-depth:16px;--scene-gap:8px}
  .region-scene{padding-inline:var(--space-3)}
  .region-scene-title{font-size:var(--text-xl)}
  .region-scene-head{gap:var(--space-2)}
}
