*{box-sizing:border-box}
body{margin:0;background:#f4f6f9;color:#172231;font:16px system-ui,sans-serif}
header,main{max-width:1240px;margin:auto;padding:24px}
header{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid #dce2ea}
a{color:#215aca}h1{font-size:clamp(26px,4vw,40px);margin-bottom:12px}p{line-height:1.6}
form{background:white;border:1px solid #dce2ea;padding:20px;border-radius:12px;display:flex;gap:12px;flex-wrap:wrap;align-items:end}
label{display:grid;gap:6px;font-size:14px}
input{padding:10px;border:1px solid #bdc8d8;border-radius:6px;width:145px;font:inherit}
button{background:#215aca;color:white;border:0;border-radius:6px;padding:12px;cursor:pointer;font:inherit}
button.secondary{background:#e7edf8;color:#153766}
button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #ed8c29;outline-offset:3px}
.directory{display:grid;grid-template-columns:minmax(300px,1fr) minmax(300px,1.25fr);gap:24px}
article{padding:20px;background:white;border:1px solid #dce2ea;border-radius:12px;margin-bottom:12px;overflow-wrap:anywhere}
article.selected{border:2px solid #215aca;padding:19px;background:#f2f6ff}
article h2{font-size:21px;margin-top:0}article button{display:block;margin-top:14px}
#service-map{width:100%;height:490px;border:1px solid #bdc8d8;border-radius:12px;background:#e7edf3;z-index:0}
.map{position:sticky;top:20px;align-self:start}.map-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}
.map-toolbar h2{font-size:18px;margin:0}.map-toolbar button{padding:8px 10px;font-size:14px}
.hint,#map-note,#map-status{color:#556477;font-size:14px}#map-status:empty{display:none}
.leaflet-popup-content{font-family:system-ui,sans-serif}.leaflet-popup-content button{padding:8px 10px;font-size:13px}
.leaflet-control-attribution a{color:#164fae}.map-links{display:flex;flex-wrap:wrap;gap:14px}
@media(max-width:760px){.directory{grid-template-columns:1fr}.map{position:static;grid-row:1}#service-map{height:340px}main{padding:16px}header{padding:18px 16px}form{padding:16px}input{width:135px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
