.hosting-map-page { max-width: 1280px; margin: 0 auto; }
.hosting-map-page .hm-intro { max-width: 840px; color: #526176; line-height: 1.7; }
.hosting-map-page .hm-note { padding: 16px 20px; border: 1px solid #d8e3f8; background: #f0f5ff; border-radius: 10px; font-size: 14px; line-height: 1.6; }
.hosting-map-page .hm-muted { color: #526176; font-size: 13px; line-height: 1.6; }
.hosting-map-page .hm-layout { display: grid; grid-template-columns: minmax(0,3fr) minmax(230px,1fr); gap: 24px; margin: 24px 0; }
.hosting-map-page .hm-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; min-height: 48px; margin-bottom: 12px; font-size: 13px; color: #526176; }
.hosting-map-page .hm-toolbar>div { display: flex; align-items: center; gap: 10px; }
.hosting-map-page .hm-mapbox { position: relative; aspect-ratio: 900 / 460; min-height: 250px; overflow: hidden; border: 1px solid #cfdee8; border-radius: 14px; background: #e9f2f7; }
.hosting-map-page #hm-map-layer,.hosting-map-page #hm-pins { position: absolute; inset: 0; }
.hosting-map-page #hm-map-layer svg { width: 100%; height: 100%; display: block; }
.hosting-map-page #hm-pins { pointer-events: none; }
.hosting-map-page .hm-land { fill: #e2eadb; stroke: #bdcdb7; stroke-width: 1; vector-effect: non-scaling-stroke; }
.hosting-map-page .hm-grid line { stroke: #adbfca; stroke-width: .6; stroke-dasharray: 3 5; opacity: .65; }
.hosting-map-page .hm-grid text { font-size: 13px; fill: #526b78; }
.hosting-map-page .hm-pin { position: absolute; transform: translate(-50%,-50%); pointer-events: auto; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; border: 2px solid #fff; background: #2359d1; box-shadow: 0 2px 6px #21395835; color: #fff; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; z-index: 1; }
.hosting-map-page .hm-pin.active { background: #142033; z-index: 3; outline: 3px solid #759bf288; }
.hosting-map-page .hm-pin:hover,.hosting-map-page .hm-pin:focus-visible { z-index: 4; }
.hosting-map-page .hm-list-panel { background: #fff; border: 1px solid #dde3ec; border-radius: 12px; padding: 18px; align-self: start; }
.hosting-map-page .hm-list-panel label { display: grid; gap: 7px; font-size: 13px; font-weight: 600; }
.hosting-map-page .hm-list-panel input { width: 100%; min-width: 0; min-height: 44px; }
.hosting-map-page .hm-place-list { max-height: 425px; overflow-y: auto; display: grid; margin-top: 14px; }
.hosting-map-page .hm-place-list button { border: 0; border-top: 1px solid #edf0f5; background: #fff; text-align: left; padding: 14px 7px; cursor: pointer; color: #142033; font: inherit; }
.hosting-map-page .hm-place-list button[aria-pressed="true"] { background: #edf3ff; border-radius: 7px; }
.hosting-map-page .hm-place-list span { display: block; margin-top: 5px; font-size: 12px; color: #526176; line-height: 1.5; }
.hosting-map-page .hm-place-card { background: #fff; border: 1px solid #dde3ec; border-radius: 12px; padding: 26px; margin: 22px 0; }
.hosting-map-page .hm-place-card h2 { margin: 10px 0; font-size: 25px; }
.hosting-map-page .hm-place-card ul { list-style: none; padding: 0; margin: 18px 0 0; display: grid; gap: 12px; }
.hosting-map-page .hm-place-card li a { display: inline-flex; gap: 10px; align-items: center; }
.hosting-map-page .hm-attribution { font-size: 13px; color: #526176; line-height: 1.7; }
.hosting-map-page .hm-attribution summary { cursor: pointer; padding: 10px 0; font-weight: 600; }
.hosting-map-page .hm-attribution li { margin: 8px 0; overflow-wrap: anywhere; }
.hosting-map-page .hm-empty { padding: 28px; background: #f5f7fa; border: 1px dashed #d5deec; border-radius: 12px; }
.hosting-map-page .hm-error { color: #a4262d; }
.hosting-map-page [hidden] { display: none !important; }
.hosting-map-page button:focus-visible,.hosting-map-page a:focus-visible,.hosting-map-page summary:focus-visible { outline: 3px solid #759bf2; outline-offset: 3px; }
@media(max-width:760px) { .hosting-map-page .hm-layout { grid-template-columns: minmax(0,1fr); gap: 14px; } .hosting-map-page .hm-mapbox { aspect-ratio: 1.4; min-height: 240px; } .hosting-map-page .hm-list-panel { padding: 16px; } .hosting-map-page .hm-place-list { max-height: 270px; } .hosting-map-page .hm-place-card { padding: 20px; } }
