:root{--accent:#b01e34;--accent-d:#8c1528;--ink:#1d1d1f;--text:#3a3a3c;--muted:#6e6e73;--line:#ececef;--water:#1f6fb2;--relief:#5a7d2a;--gap:#9a9aa0}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased}
#app{position:fixed;inset:0}
#map{position:absolute;inset:0 380px 0 0;background:#e8eef2}
#side{position:absolute;top:0;right:0;bottom:0;width:380px;overflow:auto;background:#fff;border-left:1px solid var(--line);display:flex;flex-direction:column;z-index:500}
#sheet{display:none}
.hd{padding:18px 20px 8px}
.brand{font-weight:700;color:var(--ink);text-decoration:none;font-size:.85rem;letter-spacing:.02em}
.brand:hover{color:var(--accent)}
h1{font-size:1.35rem;margin:6px 0 2px;color:var(--ink);letter-spacing:-.01em}
.lead{margin:0;color:var(--muted);font-size:.85rem;line-height:1.4}
.search{padding:8px 20px;position:relative}
#q{width:100%;padding:10px 12px;border:1px solid #d2d2d7;border-radius:10px;font-size:1rem;outline:none}
#q:focus{border-color:var(--accent);box-shadow:0 0 0 3px #b01e3422}
#res{list-style:none;margin:4px 0 0;padding:0;max-height:300px;overflow:auto}
#res li{padding:7px 8px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px;font-size:.92rem}
#res li:hover,#res li.act{background:#fbeef0}
#res li small{display:block;color:var(--muted);font-size:.78rem}
#res .msg{color:var(--muted);cursor:default}
.flt{padding:4px 20px 8px;font-size:.9rem}
.grp{padding:8px 0;border-bottom:1px solid var(--line)}
.grp b{display:block;color:var(--ink);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}
.grp label{display:flex;align-items:center;gap:7px;padding:3px 0;cursor:pointer}
.n{margin-left:auto;color:var(--muted);font-size:.8rem;font-variant-numeric:tabular-nums}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}
.dot.s{background:var(--accent)}.dot.w{background:var(--water)}.dot.r{background:var(--relief)}.dot.g{background:#fff;border:2px solid var(--gap)}
.cnt{color:var(--ink);font-size:.88rem;margin:8px 0 0}
.about{padding:6px 20px;font-size:.85rem;line-height:1.5}
.about summary{cursor:pointer;color:var(--ink);font-weight:600}
.about ul{padding-left:18px;margin:6px 0}
.muted{color:var(--muted)}
a{color:var(--accent)}
footer{margin-top:auto;padding:16px 20px 20px;font-size:.82rem;color:var(--muted);text-align:center;border-top:1px solid var(--line);line-height:1.6}
footer a{color:var(--ink);text-decoration:none}footer a:hover{color:var(--accent)}
.credit{display:block;font-size:.74rem}
/* markers */
.tp{background:none;border:none}
.tp i{position:absolute;left:-5px;top:-5px;width:10px;height:10px;border-radius:50%;background:var(--accent);border:1.5px solid #fff;box-shadow:0 0 0 1px #0003}
.tp.w i{background:var(--water)}.tp.r i{background:var(--relief)}.tp.g i{background:#fff;border:2px solid var(--gap);box-shadow:none}
.tp.of i{box-shadow:0 0 0 2px #f3c24a}
.tp span{position:absolute;left:8px;top:-9px;white-space:nowrap;font:600 12px/16px system-ui,"Segoe UI",Arial,sans-serif;color:var(--ink);text-shadow:0 0 3px #fff,0 0 3px #fff,0 0 2px #fff;pointer-events:none;display:none}
.tp.w span{color:#174f80;font-style:italic}.tp.g span{color:#77777c;font-weight:500}
.lbl .tp span{display:block}
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:#b01e3433}
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:#b01e34d9;color:#fff;font-weight:600}
/* popup */
.leaflet-popup-content{margin:12px 14px;font-size:13px;line-height:1.45;max-height:60vh;overflow:auto;min-width:240px}
.pp h3{margin:0 0 2px;font-size:17px;color:var(--ink)}
.pp .lg{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:6px}
.pp .nm{font-size:15px;font-weight:600;color:var(--ink)}
.pp .src{font-size:11px;color:var(--muted);font-weight:400}
.pp .ru{margin-top:6px}
.pp .meta{color:var(--muted);font-size:12px}
.pp .badge{display:inline-block;font-size:10.5px;background:#fff3d6;color:#7a5200;border-radius:4px;padding:0 5px;margin-left:4px;vertical-align:1px}
.pp .ety{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
.pp .ety p{margin:2px 0 4px}
.pp .links{margin-top:8px;font-size:12px}
.pp .links a{margin-right:8px}
@media(max-width:760px){
  #map{inset:0 0 46vh 0}
  #app.min #map{bottom:132px}
  #side{top:auto;left:0;width:100%;height:46vh;border-left:none;border-top:1px solid var(--line);border-radius:14px 14px 0 0;box-shadow:0 -4px 16px #0002;transition:height .2s}
  #app.min #side{height:132px}
  #sheet{display:block;position:sticky;top:0;width:100%;height:18px;border:0;background:#fff;cursor:pointer;z-index:2;padding:0}
  #sheet span{display:block;width:40px;height:4px;border-radius:2px;background:#c7c7cc;margin:7px auto}
  .hd{padding:2px 16px 4px}.hd h1{font-size:1.1rem}.lead{display:none}.search,.flt,.about{padding-left:16px;padding-right:16px}
}
.tp.nf span{color:#55555a;font-weight:500}
.pp details summary{cursor:pointer;margin:4px 0}
.pp details p{margin:2px 0 6px}
.pp .hist{margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
.pp .hist p{margin:2px 0 5px}
.pp .hist .fact{font-weight:500;color:var(--ink)}
.pp .det .meta a,.pp .hist .meta a{color:var(--accent)}
.pp .hist details summary{color:var(--accent);font-size:12px}
.pp .hist .wpx p{margin:2px 0 5px}
.pp .hist .wpalt{margin-top:6px}
.pp .hist .wpalt>summary{color:var(--ink);font-weight:600}
#modal{position:fixed;inset:0;z-index:2000;background:#0006;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:5vh 16px}
#modal[hidden]{display:none}
.mbox{position:relative;background:#fff;border-radius:14px;max-width:680px;width:100%;padding:22px 26px 20px;box-shadow:0 10px 40px #0004;font-size:15px;line-height:1.6;color:var(--text)}
.mbox h2{margin:2px 0 10px;font-size:1.35rem;color:var(--ink)}.mbox h2 small{font-weight:400;color:var(--muted);font-size:.95rem}
.mbox .lg{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.mbox .mtext p{margin:0 0 10px}
.mbox .msrc{margin-top:10px;font-size:12px;color:var(--muted)}
.mbox .fact{font-weight:500;color:var(--ink);margin:0 0 8px}.mbox .src{font-size:12px;color:var(--muted);font-weight:400}
.mmap{margin:12px 0 4px;display:flex;flex-wrap:wrap;gap:6px}
.mmap button{border:1px solid #d2d2d7;background:#fff;border-radius:8px;padding:6px 10px;cursor:pointer;font:inherit;font-size:13px;color:var(--ink)}
.mmap button:hover{border-color:var(--accent);color:var(--accent)}
#mclose{position:absolute;top:8px;right:10px;border:0;background:none;font-size:26px;line-height:1;cursor:pointer;color:var(--muted)}
.pp a.full{white-space:nowrap}
@media(max-width:760px){#modal{padding:0}.mbox{border-radius:0;min-height:100%;padding:18px 18px 28px}}
.seo{padding:6px 20px 12px;font-size:.85rem;line-height:1.5}.seo h2{font-size:.95rem;margin:.7rem 0 .3rem;color:var(--ink)}.seo p{margin:.3rem 0}
.seo ul{list-style:none;padding:0;margin:.3rem 0 .5rem;display:flex;flex-wrap:wrap;gap:4px}.seo li a{display:inline-block;padding:2px 9px;border-radius:999px;background:#f3f3f5;text-decoration:none;color:var(--ink);font-size:.8rem}.seo li a:hover{color:var(--accent)}
@media (max-width:760px){.seo{padding-left:16px;padding-right:16px}}
