/* /venue — the room map. Geometry comes from data/venue-map.json, the words
   from data/venue.json; this file only colours them. One colour per kind of
   room, the same hues the program map uses for the session formats. */
.vm{--talks:#6c91ff;--spotlight:#ff5967;--hands-on:#29d3a5;--foyer:#ffc342;--service:#a5b4cf;--welcome:#c084fc}
.vm svg{display:block;width:100%;height:auto;font-family:inherit}
.vm-street{fill:#39435c}
.vm-street-mid{fill:none;stroke:#8492b0;stroke-width:3;stroke-dasharray:14 12}
.vm-slab{fill:#1a2236;stroke:#2c3752;stroke-width:2}
.vm-other{fill:#253049}
.vm-esc{fill:#2c3752;stroke:#46557a;stroke-width:2}
.vm-room{stroke:#08090f;stroke-width:3;stroke-linejoin:round}
.vm-k-talks{fill:var(--talks)}.vm-k-spotlight{fill:var(--spotlight)}.vm-k-hands-on{fill:var(--hands-on)}
.vm-k-welcome{fill:var(--welcome)}
.vm-spot{stroke:#08090f;stroke-width:3}
.vm-k-foyer{fill:var(--foyer)}.vm-k-service{fill:var(--service)}
.vm-route{fill:none;stroke:#fff;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 16}
.vm-lift{fill:none;stroke:#fff;stroke-width:3;stroke-dasharray:10 10;opacity:.55}
.vm-branch .vm-route{stroke-width:6}
.vm-branch .vm-lift{opacity:.9;stroke-width:4}
.vm-s-hands-on .vm-start{fill:var(--hands-on);stroke:#08090f;stroke-width:3}
.vm-s-hands-on .vm-route,.vm-s-hands-on .vm-lift{stroke:var(--hands-on)}
.vm-leader{fill:none;stroke:#fff;stroke-width:3;opacity:.7}
.vm-pin{transform-box:fill-box;transform-origin:center;transform:scale(1.3)}
.vm-pin circle{fill:#fff;stroke:#08090f;stroke-width:4}
.vm-pin text{font-size:29px;font-weight:800;letter-spacing:-.5px;fill:#08090f;text-anchor:middle}
.vm-hanger{fill:none;stroke:#08090f;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.vm-entrance path{fill:#fff;stroke:#08090f;stroke-width:3}
/* Words on the map only where they can be read; on a phone the numbered list
   under the map does that job. The dark halo keeps a label legible wherever
   it lands, on a floor or on a room. */
.vm-wide{display:none}
.vm-label,.vm-floor{display:none;paint-order:stroke;stroke:#08090f;stroke-width:9px;stroke-linejoin:round}
.vm-label .n{font-size:32px;font-weight:800;fill:#fff}
.vm-label .u{font-size:24px;font-weight:500;fill:#cbd5e1}
.vm-pin.vm-sm text{font-size:22px}
.vm-label.vm-sm .n{font-size:26px}.vm-label.vm-sm .u{font-size:20px}
.vm-label .vm-addr{fill:#60a5fa;font-weight:700;text-decoration:underline}
.vm-floor{font-size:22px;font-weight:600;fill:#64748b;letter-spacing:.06em;text-transform:uppercase;stroke-width:6px}
@media (min-width:768px){
  .vm-label,.vm-floor,.vm-wide{display:inline}
  .vm-pin{transform:none}
}
.vm-badge{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:9999px;font-weight:800;font-size:.7rem;letter-spacing:-.02em;color:#08090f;flex-shrink:0}
.vm-b-talks{background:var(--talks)}.vm-b-spotlight{background:var(--spotlight)}.vm-b-hands-on{background:var(--hands-on)}
.vm-b-welcome{background:var(--welcome)}
.vm-b-foyer{background:var(--foyer)}.vm-b-service{background:var(--service)}
