/* Blueprint detail on the tactical map (sh-film-map-detail.ts). Thin white
   linework at low contrast under the lots, so the lots, routes and hotspots
   still read first; gold only on the vaults, the one thing a thief wants. */
.sh-mapd__hatch-line { stroke: rgb(255 255 255 / 9%); stroke-width: 1; }
.sh-mapd__hatch { fill: url(#sh-map-hatch); stroke: none; }
.sh-mapd__unit { fill: rgb(255 255 255 / 3%); stroke: rgb(255 255 255 / 20%); stroke-width: .6; }
.sh-mapd__wall { fill: none; stroke: rgb(255 255 255 / 34%); stroke-width: 1.1; stroke-linecap: square; }
.sh-mapd__fit { fill: none; stroke: rgb(255 255 255 / 20%); stroke-width: .6; }
.sh-mapd__swing { fill: none; stroke: rgb(255 255 255 / 24%); stroke-width: .6; stroke-dasharray: 1.5 2; }
.sh-mapd__vault { fill: rgb(212 175 55 / 7%); stroke: rgb(229 198 92 / 55%); stroke-width: .9; }
.sh-mapd__pillar { fill: rgb(255 255 255 / 14%); stroke: none; }
.sh-mapd__curb { fill: none; stroke: rgb(255 255 255 / 30%); stroke-width: .9; }
.sh-mapd__joint { fill: none; stroke: rgb(255 255 255 / 6%); stroke-width: .6; }
.sh-mapd__reach { fill: rgb(229 198 92 / 3%); stroke: rgb(229 198 92 / 26%); stroke-width: .6; stroke-dasharray: 2 3; }
.sh-mapd__post { fill: var(--sh-gold-hi); }
.sh-mapd__zebra { fill: rgb(255 255 255 / 5%); stroke: none; }
.sh-mapd__patrol { fill: none; stroke: rgb(255 255 255 / 12%); stroke-width: .7; stroke-dasharray: 1 5; }
.sh-mapd__cross { fill: none; stroke: rgb(255 255 255 / 22%); stroke-width: .6; }
.sh-mapd__ruler { fill: none; stroke: rgb(255 255 255 / 20%); stroke-width: .6; }
.sh-mapd__north circle { fill: none; stroke: rgb(255 255 255 / 26%); stroke-width: .6; }
.sh-mapd__north-tip { fill: rgb(255 255 255 / 70%); }
.sh-mapd__scale path { fill: none; stroke: rgb(255 255 255 / 45%); stroke-width: .8; }
.sh-mapd__label { fill: rgb(255 255 255 / 55%); font: 600 6px var(--sh-font-mono); letter-spacing: .12em; text-anchor: middle; }
.sh-mapd__label--start { text-anchor: start; }
.sh-stage.is-bust .sh-mapd__vault { stroke: rgb(255 110 124 / 70%); fill: rgb(226 59 77 / 10%); }

/* One scan line sweeps the plane while the map shows (composited transform). */
.sh-mapd__scan {
  position: absolute; left: -60px; top: 0; width: 640px; height: 46px; opacity: 0; pointer-events: none;
  background: linear-gradient(180deg, transparent, rgb(95 212 196 / 5%) 70%, rgb(95 212 196 / 16%) 97%, rgb(190 255 244 / 30%) 100%);
}
html.sh-ambient .sh-stage.is-map .sh-mapd__scan { animation: sh-map-scan 5.2s cubic-bezier(.45, 0, .55, 1) infinite; }
.sh-stage.is-bust .sh-mapd__scan { background: linear-gradient(180deg, transparent, rgb(226 59 77 / 6%) 70%, rgb(226 59 77 / 18%) 97%, rgb(255 150 160 / 30%) 100%); }
@keyframes sh-map-scan { 0% { opacity: 0; transform: translateY(-60px); } 12% { opacity: 1; } 88% { opacity: 1; } 100% { opacity: 0; transform: translateY(300px); } }
@media (prefers-reduced-motion: reduce) { .sh-mapd__scan { animation: none !important; } }
.sh-flatmap .sh-mapd__ruler, .sh-flatmap .sh-mapd__north { display: none; }
