.infra-map { margin: 1.75rem 0 2rem }
.infra-map svg { display: block; width: 100%; height: auto }
.infra-map .land { fill: var(--rule-strong) }
.infra-map .magnified { fill: none; stroke: var(--pencil); stroke-width: 1px; vector-effect: non-scaling-stroke }
.infra-map .inset { fill: none; stroke: var(--pencil); stroke-width: 1px; vector-effect: non-scaling-stroke }
.infra-map .halo { fill: var(--biro); stroke: var(--biro); stroke-width: 0; opacity: .2 }
.infra-map .dot { fill: var(--biro); stroke: var(--biro); stroke-width: 0 }
.infra-map text { font-family: var(--sans); font-size: 20px; fill: var(--ink); paint-order: stroke; stroke: var(--paper);
                  stroke-width: 5px; stroke-linejoin: round }
.infra-map figcaption { margin-top: .6rem; font-size: var(--text-sm); line-height: 1.45; color: var(--graphite) }

@media (max-width: 599.98px) {
  .infra-map text { font-size: 26px; stroke-width: 6.5px }
  .infra-map .dot { stroke-width: 3px }
  .infra-map .halo { stroke-width: 6px }
}

@media (max-width: 479.98px) {
  .infra-map text { font-size: 34px; stroke-width: 8.5px }
  .infra-map .dot { stroke-width: 7px }
  .infra-map .halo { stroke-width: 14px }
}

.prose :is(.infra-parts, .infra-holds) tbody th { white-space: normal }
.prose .infra-parts thead th { white-space: nowrap }
.infra-parts .flagged { white-space: nowrap }
.infra-parts .flagged img { vertical-align: -1px }
.infra-parts thead th:first-child { width: 20% }

.infra-holds table { table-layout: fixed }
.infra-holds thead th:is(:nth-child(1), :nth-child(2)) { width: 34% }

@media (max-width: 639.98px) {
  :is(.infra-parts, .infra-holds) thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%) }
  :is(.infra-parts, .infra-holds) :is(table, tbody, tr, th, td) { display: block; width: auto }
  .prose :is(.infra-parts, .infra-holds) :is(th, td) { padding: 0; border: 0 }
  .prose :is(.infra-parts, .infra-holds) td { position: relative; padding: .1rem 0 .1rem 5rem }
  :is(.infra-parts, .infra-holds) td::before { position: absolute; left: 0; content: attr(data-label); color: var(--graphite) }
  :is(.infra-parts, .infra-holds) td::before { content: attr(data-label) / "" }
  :is(.infra-parts, .infra-holds) tr { padding: .7rem 0; border-bottom: 1px solid var(--rule) }
  :is(.infra-parts, .infra-holds) tbody th { margin-bottom: .3rem }
  .prose .infra-parts tbody.near th { margin: 0 0 .3rem; padding: 0 0 .7rem; border-bottom: 1px solid var(--rule) }
  .infra-parts tbody.near tr:first-child { padding-top: 0 }
  .infra-parts tbody.near tr:first-child td:first-of-type { margin-top: .7rem }
}
