#coverage {
  --sm-lime: #dcff4f;
  --sm-paper: #f4f3ed;
  --sm-quiet: #a3a998;
  --sm-rule: #41463b;
  color: var(--sm-paper);
  background: #131610;
  padding: clamp(62px, 6.5vw, 118px) var(--page-pad, 5vw);
}
#service-map { min-width: 0; }
.sm-sectionline, .sm-index, .sm-head, .sm-filters, .sm-legend, .sm-legend > span, .sm-directory-top, .sm-status, .sm-catalog summary, .sm-catalog summary > span, .sm-citylist { display: flex; }
.sm-sectionline, .sm-directory-top, .sm-board-code, .sm-coords, .sm-catalog summary b { font-family: var(--mono, Consolas, monospace); font-variant-numeric: tabular-nums; }
.sm-sectionline, .sm-directory-top { justify-content: space-between; gap: 12px; align-items: center; font-size: 10px; letter-spacing: .06em; }
.sm-sectionline > span:last-child { color: #aab09e; }
.sm-index { gap: 10px; align-items: center; }
.sm-index i { width: 8px; height: 8px; background: var(--sm-lime); }
.sm-head { align-items: end; justify-content: space-between; margin: clamp(38px, 4.4vw, 75px) 0 clamp(27px, 3vw, 46px); gap: 35px; }
.sm-head h2 { margin: 0; font-size: clamp(48px, 5.6vw, 104px); letter-spacing: -.065em; line-height: 1.12; font-weight: 700; }
.sm-head h2 span { margin-left: .03em; color: var(--sm-lime); }
.sm-subhead { margin: 13px 0 0; font-size: clamp(15px, 1.4vw, 21px); letter-spacing: .01em; }
.sm-intro { flex: 0 1 29em; margin: 0 0 2px; max-width: 29em; color: #c0c4b8; font-size: clamp(13px, 1.1vw, 17px); line-height: 1.9; }
.sm-filters { flex-wrap: wrap; gap: 6px; padding-top: 16px; margin-bottom: 16px; border-top: 1px solid var(--sm-rule); }
.sm-filters button, .sm-citylist button {
  box-sizing: border-box; cursor: pointer; border: 1px solid transparent; border-radius: 0; font: inherit;
  color: inherit; background: none; transition: color .2s, background-color .2s, border-color .2s;
}
.sm-filters button { border: 1px solid #454a3e; padding: 7px 12px; border-radius: 20px; font-size: 12px; line-height: 1.4; letter-spacing: .015em; }
.sm-filters button[aria-pressed="true"] { background: var(--sm-lime); color: #131610; border-color: var(--sm-lime); font-weight: 650; }
.sm-body { display: grid; grid-template-columns: minmax(0, 1.83fr) minmax(265px, .85fr); align-items: start; gap: clamp(22px, 3vw, 57px); }
.sm-figure { min-width: 0; margin: 0; }
.sm-board {
  position: relative; isolation: isolate; min-width: 0;
  background-color: #191d16;
  background-image: radial-gradient(ellipse at 72% 42%, #313b252c, transparent 65%), radial-gradient(#53604870 .7px, transparent .8px);
  background-size: auto, 18px 18px;
  border: 1px solid #3b4135;
}
.sm-board-code { color: #9fa78f; font-size: clamp(7px, .65vw, 10px); letter-spacing: .09em; position: absolute; top: 15px; left: 16px; z-index: 1; }
.sm-motion {
  position: absolute; z-index: 2; top: 10px; right: 12px; display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 9px; border: 1px solid #555e4c; border-radius: 20px; background: #181d16eb; color: #d3d9c7;
  font: inherit; font-size: 10px; line-height: 1.3; cursor: pointer;
}
.sm-motion[hidden] { display: none; }
.sm-motion-icon { width: 7px; height: 7px; border: solid #d4ea9f; border-width: 0 2px; }
.sm-motion[aria-pressed="false"] .sm-motion-icon { border-width: 4px 0 4px 6px; border-color: transparent transparent transparent #d4ea9f; }
.sm-svg { display: block; width: 100%; height: auto; overflow: visible; }
.sm-corner { width: 10px; height: 10px; border: solid #879078; position: absolute; z-index: 1; pointer-events: none; }
.sm-tl { top: -1px; left: -1px; border-width: 1px 0 0 1px; }
.sm-tr { top: -1px; right: -1px; border-width: 1px 1px 0 0; }
.sm-bl { bottom: -1px; left: -1px; border-width: 0 0 1px 1px; }
.sm-br { bottom: -1px; right: -1px; border-width: 0 1px 1px 0; }
.sm-route { fill: none; stroke: #c6e274; stroke-opacity: .53; stroke-width: 1.3; stroke-linecap: round; }
.sm-route.is-current { stroke: #d9ff63; stroke-width: 1.7; stroke-opacity: .92; }
.sm-overview .sm-route { stroke: #aec47b; stroke-opacity: .67; stroke-width: 1.25; }
.sm-route-total { color: #cdd6bf; letter-spacing: .04em; }
.sm-flow { fill: none; visibility: hidden; pointer-events: none; stroke-linecap: round; }
.sm-flow-core { stroke: #efffbb; stroke-width: 3.4; stroke-dasharray: .3 105; }
.sm-flow-wake { stroke: #d8ff62; stroke-width: 2.5; stroke-dasharray: 4.5 105; }
.sm-overview .sm-flow-core { stroke: #deefb5; stroke-width: 2.8; }
.sm-overview .sm-flow-wake { stroke: #bddb85; stroke-width: 2; }
.sm-mark, .sm-hub { cursor: pointer; }
.sm-target { fill: transparent; }
.sm-shot .sm-pin { fill: #dcff66; stroke: #222919; stroke-width: .65; }
.sm-book .sm-pin { fill: #262b22; stroke: #c4cbba; stroke-width: 1; }
.sm-mark.sm-muted { opacity: .17; cursor: default; pointer-events: none; }
.sm-selected-ring { stroke: #e4f4ba; stroke-width: 1.2; fill: #d8ff5526; }
.sm-hub-halo { stroke: #dfff58; stroke-width: 1.35; fill: #caff4b19; }
.sm-hub-core { fill: #deff47; stroke: #1c2117; stroke-width: 1; }
.sm-leader { fill: none; stroke: #d7ebad; stroke-width: .9; }
.sm-hub text { fill: #e3eecb; paint-order: stroke; stroke: #191d16; stroke-width: 3px; font: 650 12px "Microsoft YaHei", sans-serif; }
.sm-legend { align-items: center; flex-wrap: wrap; gap: 8px 19px; margin-top: 11px; }
.sm-legend > span { align-items: center; gap: 6px; font-size: 11px; color: #b9c0ac; }
.sm-key { display: inline-block; flex: none; width: 7px; height: 7px; border-radius: 100%; }
.sm-shot-key { background: var(--sm-lime); }
.sm-book-key { border: 1px solid #bec6b3; }
.sm-hub-key { width: 9px; height: 9px; border: 1px solid var(--sm-lime); background: var(--sm-lime); box-shadow: inset 0 0 0 2px #1b1e17; }
.sm-directory { min-width: 0; }
.sm-directory-top { min-height: 32px; border-top: 1px solid #a6ad97; border-bottom: 1px solid var(--sm-rule); color: #bdc4b2; font-size: 9px; letter-spacing: .11em; }
.sm-status { align-items: end; justify-content: space-between; gap: 10px; padding: clamp(17px, 2.5vw, 34px) 0 clamp(16px, 2.6vw, 36px); }
.sm-location-type { display: inline-block; margin-bottom: 5px; color: var(--sm-lime); font-size: 11px; letter-spacing: .06em; }
.sm-status h3 { margin: 0; font-size: clamp(28px, 3.2vw, 58px); line-height: 1.15; letter-spacing: -.055em; }
.sm-coords { color: #acb49e; font-size: 10px; text-align: right; line-height: 1.5; letter-spacing: .05em; }
.sm-catalog details { margin: 0; border-top: 1px solid var(--sm-rule); }
.sm-catalog details:last-child { border-bottom: 1px solid var(--sm-rule); }
.sm-catalog summary { cursor: pointer; align-items: center; gap: 9px; padding: 14px 0; font-size: 13px; font-weight: 550; list-style: none; }
.sm-catalog summary::-webkit-details-marker { display: none; }
.sm-catalog summary > span { align-items: center; gap: 8px; }
.sm-catalog summary b { margin-left: auto; color: #acb59c; font-size: 11px; font-weight: 400; }
.sm-expander { width: 7px; height: 7px; border-right: 1px solid #b8c0a9; border-bottom: 1px solid #b8c0a9; transform: rotate(45deg); margin: -3px 2px 0 3px; }
.sm-catalog details[open] .sm-expander { transform: rotate(225deg); margin-top: 4px; }
.sm-citylist { flex-wrap: wrap; gap: 5px; padding: 0 0 16px; }
.sm-citylist button { padding: 4px 8px; border: 1px solid #394032; color: #c5ccba; font-size: 12px; line-height: 1.45; }
.sm-citylist button.sm-connected { border-color: #64724d; color: #e0eac9; }
.sm-citylist button[aria-pressed="true"] { color: #ebfbbb; border-color: #b1ce68; background: #343d24; }
.sm-source { margin: 20px 0 0; padding-top: 14px; border-top: 1px solid #343a2f; color: #a0a894; font-size: 10px; line-height: 1.8; }
.sm-source a { color: #c1cbb2; text-underline-offset: 3px; text-decoration: underline; }
#service-map :is(button, a, summary):focus-visible { outline: 2px solid var(--sm-lime); outline-offset: 3px; }
@media (hover: hover) {
  .sm-citylist button:hover, .sm-filters button:not([aria-pressed="true"]):hover { border-color: #9ca58d; color: white; }
}
@media (prefers-reduced-motion: no-preference) {
  .sm-flow { animation: sm-travel var(--sm-period) var(--sm-delay) linear infinite both; animation-play-state: paused; }
  .sm-flow-core { --sm-glow: 1; --sm-start: 0px; --sm-end: -100px; }
  .sm-flow-wake { --sm-glow: .6; --sm-start: 4.3px; --sm-end: -95.7px; }
  .sm-overview .sm-flow { animation-name: sm-network-travel; }
  .sm-overview .sm-flow-core { --sm-glow: .86; }
  .sm-overview .sm-flow-wake { --sm-glow: .40; }
  .sm-running .sm-flow { animation-play-state: running; visibility: visible; }
  @keyframes sm-network-travel {
    0% { stroke-dashoffset: var(--sm-start); opacity: .25; }
    10%, 90% { opacity: var(--sm-glow); }
    100% { stroke-dashoffset: var(--sm-end); opacity: .25; }
  }
  @keyframes sm-travel {
    0% { stroke-dashoffset: var(--sm-start); opacity: 0; }
    7% { opacity: var(--sm-glow); }
    79% { opacity: var(--sm-glow); }
    86%, 100% { stroke-dashoffset: var(--sm-end); opacity: 0; }
  }
}
@media (max-width: 820px) {
  .sm-body { grid-template-columns: minmax(0, 1.5fr) minmax(202px, 1fr); gap: 17px; }
  .sm-citylist { gap: 4px; }
  .sm-citylist button { padding: 3px 6px; }
}
@media (max-width: 650px) {
  .sm-head { display: block; margin: 31px 0 22px; }
  .sm-intro { margin-top: 13px; font-size: 13px; }
  .sm-body { grid-template-columns: minmax(0, 1fr); gap: 20px; }
  .sm-filters { gap: 4px; margin-bottom: 12px; padding-top: 12px; }
  .sm-filters button { padding: 6px 8px; font-size: 11px; }
  .sm-board-code { top: 8px; left: 8px; }
  .sm-motion { top: 6px; right: 7px; font-size: 9px; }
  .sm-legend { gap: 7px 11px; margin-top: 8px; }
  .sm-legend > span { font-size: 10px; }
  .sm-status { padding: 15px 0; }
  .sm-sectionline > span:last-child { font-size: 8px; }
  .sm-citylist { gap: 5px; }
  .sm-citylist button { padding: 5px 8px; }
  .sm-source { margin-top: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .sm-filters button, .sm-citylist button { transition: none; }
}

@media (max-width: 650px) {
  .sm-overview .sm-route { stroke-opacity: .82; stroke-width: 1.85; }
}
