/* /lokacije chalk map — a static hand-drawn SVG, not a slippy map. The MapLibre version cost
   784KB of JavaScript and sent every visitor's IP to a third-party tile host.

   The geometry is real OpenStreetMap data, projected into this frame and baked into
   app/templates/_chalk_map_geometry.svg by tools/build_chalk_map.py; the five pins come from
   locations.json through the same transform (data/map-projection.json), so pins and streets
   agree. Frame: 5.57km x 3.90km centred on 45.48525, 16.36375. Regenerate with the script,
   never hand-edit the include.

   Map data (c) OpenStreetMap contributors, ODbL — the on-map credit is a licence condition. */

.lt-map {
  position: relative; overflow: hidden;
  background: transparent; border: 0; border-radius: 0; box-shadow: none;
}

/* the mask in lokacije.css feathers the drawing into the board on all four edges */
.chalk-map { display: block; width: 100%; height: 100%; }
.chalk-map svg { display: block; width: 100%; height: 100%; }

/* Stroke width is the hierarchy: water heaviest, main roads next, minor streets faintest.
   The minor tier is hundreds of OSM paths and turns the drawing to mud at any more weight. */
/* The chalk wobble is baked into the geometry (build_chalk_map.py: roughen()). As a live
   `filter: url(#rough)` over 767 paths it froze the main thread 170-194ms on every arrival
   and forced the board photo to re-composite; without it the navigation is 18.2ms. Do not
   put a live filter back on this group. */

/* Opacity ladder lifted one step 2026-09-03 (design review: "the chalk map is nearly invisible
   — reads as texture"). Was .38/.2 water, .3/.2/.1 roads, .22 rail: a whisper drawn for the
   placeholder grammar, but this drawing carries information and the pins alone were reading.
   Ratios kept so the hierarchy holds; the minor-street tier moves least, it is the one that
   goes to mud. Decorative strokes, no contrast floor applies; verify by eye at 1440 and 390. */
.cm-water {
  fill: none; stroke: var(--vb-chalk); stroke-opacity: .55;
  stroke-width: 9; stroke-linecap: round; stroke-linejoin: round;
}
.cm-water--minor { stroke-opacity: .3; stroke-width: 4; }
.cm-road {
  fill: none; stroke: var(--vb-chalk); stroke-opacity: .46;
  stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round;
}
.cm-road--sec { stroke-opacity: .3; stroke-width: 2.4; }
.cm-road--minor { stroke-opacity: .14; stroke-width: 1.6; }
.cm-rail {
  fill: none; stroke: var(--vb-chalk); stroke-opacity: .32;
  stroke-width: 2.5; stroke-dasharray: 3 11; stroke-linecap: round;
}

/* pins are not chalk: they are what the visitor came for, so full-strength gold, no roughen */
.cm-pin-ring { fill: none; stroke: var(--vb-gold); stroke-width: 3.5; }
.cm-pin-dot { fill: var(--vb-gold); }
.cm-pin-num {
  fill: var(--vb-gold); font-family: 'Anton', var(--font-display); font-weight: 400;
  font-size: 26px; letter-spacing: .02em; text-anchor: middle;
}
/* the fifth shop has not opened: hollow ring in link gold, never berry — berry is reserved
   for the action colour */
.cm-pin--soon .cm-pin-ring { stroke: var(--vb-gold-link); stroke-dasharray: 5 5; }
.cm-pin--soon .cm-pin-dot { fill: none; }
.cm-pin--soon .cm-pin-num { fill: var(--vb-gold-link); }

/* hovering a pekarnica in the list lifts its pin (odra-map.js) */
.cm-pin { transition: opacity .18s ease; }
.chalk-map.is-dimmed .cm-pin:not(.is-lit) { opacity: .35; }

.cm-scale { stroke: var(--vb-chalk); stroke-opacity: .45; stroke-width: 2; fill: none; }
.cm-scale-label {
  fill: var(--vb-chalk); fill-opacity: .6;
  font-family: var(--font-body); font-size: 15px; font-weight: 600; letter-spacing: .16em;
}
.cm-note {
  fill: var(--vb-muted); font-family: var(--font-body); font-size: 14px;
  letter-spacing: .1em; text-transform: uppercase;
}

@media (prefers-reduced-motion: reduce) { .cm-pin { transition: none; } }
