.provider-overview {
    margin-block: 1.5rem 2rem;
}
.provider-map-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 18rem;
    gap: 1.25rem;
    align-items: start;
}
.provider-map-controls {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: .8rem;
}
.provider-map-controls .button {
    padding: .65rem .85rem;
    font-size: .9rem;
}
.provider-map-stage {
    position: relative;
    height: clamp(21rem, 42vw, 28rem);
    overflow: hidden;
    background: #f2f2e8;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    touch-action: pan-y;
}
.provider-map-stage svg {
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
}
.provider-map-stage.is-static {
    overflow: auto;
}
.provider-map-stage.is-static svg {
    min-width: 44rem;
    min-height: 36rem;
}
.provider-map-stage.is-draggable {
    cursor: grab;
    touch-action: none;
}
.provider-map-north {
    position: absolute;
    top: .75rem;
    right: .75rem;
    padding: .25rem .6rem;
    background: #fff;
    color: #12324b;
    border-radius: .3rem;
    font-weight: bold;
    pointer-events: none;
}
.provider-map-credit {
    margin-block: .5rem .8rem;
    font-size: .8rem;
}
.provider-map-facts {
    display: grid;
    gap: 1rem;
}
.provider-map-metric {
    border: 1px solid var(--line);
    border-radius: var(--radius);
    padding: 1.1rem;
    background: var(--surface);
}
.provider-map-metric h3 {
    margin-top: 0;
    font-size: 1.1rem;
}
.provider-map-metric > :last-child {
    margin-bottom: 0;
}
.provider-map-legend {
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    gap: .7rem 1.5rem;
    padding: 0;
    margin-block: 1rem;
}
.provider-map-legend li {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    font-size: .9rem;
}
.provider-map-key {
    display: inline-grid;
    place-items: center;
    min-width: 2.2rem;
    min-height: 2rem;
    border-radius: .3rem;
    background: #12324b;
    color: #fff;
    font-weight: 700;
}
.provider-map-key-private {
    background: #984100;
}
.provider-map-point {
    padding: .4rem .6rem;
    font: inherit;
    border: 1px solid var(--line);
    border-radius: .3rem;
    color: var(--ink);
    background: var(--surface);
    cursor: pointer;
}
.provider-map-point[aria-pressed="true"] {
    border-color: var(--accent);
    box-shadow: inset 0 0 0 1px var(--accent);
}
@media (max-width: 64rem) {
    .provider-map-layout {
        grid-template-columns: minmax(0, 1fr);
    }
    .provider-map-facts {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 38rem) {
    .provider-map-facts {
        grid-template-columns: minmax(0, 1fr);
    }
}
@media print {
    .provider-overview, #provider-map-data {
        display: none !important;
    }
}
.provider-map-connections line {
    stroke: #984100;
    stroke-width: 1.5;
    stroke-dasharray: 6 5;
    opacity: .75;
    vector-effect: non-scaling-stroke;
}
.provider-map-help {
    margin-block: .7rem;
}
.provider-map-help summary {
    cursor: pointer;
}
.provider-map-help p {
    margin-block: .6rem 0;
}
.provider-overview-context .provider-map-layout {
    grid-template-columns: minmax(0, 1fr);
}
.provider-overview-context .provider-map-stage {
    height: clamp(29rem, 48vw, 36rem);
}
.provider-overview-context .provider-map-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.provider-overview-context .provider-context-green {
    fill: #dce8cd;
}
.provider-overview-context .provider-context-residential {
    fill: #e8e6df;
}
.provider-overview-context .provider-context-business {
    fill: #e6e2d9;
}
.provider-overview-context .provider-context-water {
    fill: #bddbe5;
}
.provider-overview-context .provider-context-building {
    fill: #d2d4cf;
    stroke: #bec3bc;
    stroke-width: 1;
}
.provider-overview-context .provider-context-rail {
    fill: none;
    stroke: #a7ada4;
    stroke-width: 6;
    stroke-dasharray: 20 8;
}
.provider-overview-context .provider-context-road {
    fill: none;
    stroke: #fff;
    stroke-width: 10;
}
.provider-overview-context .provider-context-road-major {
    stroke: #c7b98b;
    stroke-width: 19;
}
.provider-overview-context .provider-context-road-service {
    stroke-width: 5;
}
.provider-overview-context .provider-context-label {
    fill: #46584b;
    stroke: #f5f5eb;
    stroke-width: 3;
    paint-order: stroke;
    font-family: system-ui, sans-serif;
    font-weight: 500;
    pointer-events: none;
}
.provider-overview-context .provider-context-label-place {
    font-weight: 650;
    letter-spacing: .025em;
}
.provider-overview-context .provider-context-label-park {
    fill: #3f6036;
}
.provider-overview-context .provider-context-label-parking {
    fill: #164d71;
    font-weight: 750;
}
.provider-overview-context .geo-marker .provider-label-line {
    fill: #12324b;
    font: 11px system-ui, sans-serif;
}
.provider-overview-context .geo-marker .provider-label-title {
    font-weight: 750;
    font-size: 13px;
}
.provider-overview-context .provider-direct-label rect {
    fill: #fff;
    stroke: #12324b;
    stroke-width: 1.5;
}
.provider-overview-context .geo-marker-private .provider-direct-label rect {
    stroke: #984100;
}
.provider-overview-context .geo-marker-private .provider-label-title {
    fill: #984100;
}
.provider-overview-context .provider-label-leader {
    stroke: #12324b;
    stroke-width: 1.5;
}
.provider-overview-context .geo-marker-private .provider-label-leader {
    stroke: #984100;
}
.provider-overview-context .geo-marker:focus .provider-direct-label rect,
.provider-overview-context .geo-marker.is-selected .provider-direct-label rect {
    stroke-width: 3;
}
.provider-map-scale {
    position: absolute;
    bottom: .7rem;
    left: .7rem;
    padding: 0 .15rem .2rem;
    color: #12324b;
    background: #ffffffeb;
    border: solid #12324b;
    border-width: 0 2px 2px;
    font-size: .7rem;
    line-height: 1.3;
    text-align: center;
    pointer-events: none;
}
@media (max-width: 38rem) {
    .provider-overview-context .provider-map-facts {
        grid-template-columns: minmax(0, 1fr);
    }
}
