:root{--bg:#e9e3d0;--sheet:#f7f3e6;--ink:#1f2a25;--soft:#5b6158;--rule:#c8c0a8;--verdigris:#22695f;--rust:#963f22;--halo:#f3e9cd;
--display:"IM Fell Double Pica","Iowan Old Style",Georgia,serif;--body:"Alegreya",Georgia,serif;--label:"Alegreya Sans SC","Gill Sans",sans-serif}
@media (prefers-color-scheme:dark){:root{--bg:#1a1f1b;--sheet:#212823;--ink:#e6e8df;--soft:#a7afa4;--rule:#3d4840;--verdigris:#7cc9b9;--rust:#e29a79;color-scheme:dark}}
*{box-sizing:border-box}html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font:18px/1.45 var(--body)}
.app{display:grid;height:100dvh;grid-template-columns:minmax(0,1fr) 400px}
#map{background:#c9bd9d;min-width:0}
#panel{background:var(--sheet);border-left:1px solid var(--rule);overflow-y:auto;padding:24px 22px calc(36px + env(safe-area-inset-bottom));min-width:0}
@media (max-width:820px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:56dvh minmax(0,1fr)}#panel{border-left:0;border-top:1px solid var(--rule);padding:18px 16px calc(32px + env(safe-area-inset-bottom))}}
h1{font:400 42px/1.05 var(--display);margin:0 0 8px}h2{font:400 31px/1.1 var(--display);margin:0 0 12px;text-wrap:balance}
h3{font:400 24px/1.15 var(--display);margin:0 0 5px}h4{font:700 15px/1.2 var(--label);letter-spacing:.06em;color:var(--verdigris);margin:18px 0 6px;text-transform:lowercase}
p{margin:0 0 12px}.intro{color:var(--soft);font-size:17px}
.filters{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 8px}
.filters button{font:500 15px/1 var(--label);letter-spacing:.03em;border:1px solid var(--rule);background:transparent;color:var(--soft);padding:7px 10px;cursor:pointer;display:inline-flex;gap:7px;align-items:center}
.filters button[aria-pressed="true"]{background:var(--ink);color:var(--sheet);border-color:var(--ink)}
ul.places{list-style:none;margin:0;padding:0}ul.places button{width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--rule);padding:9px 0;font:inherit;color:inherit;cursor:pointer;display:flex;justify-content:space-between;gap:12px}
ul.places button:hover{color:var(--verdigris)}ul.places span{color:var(--soft);font:500 14px/1.7 var(--label);text-transform:lowercase;white-space:nowrap}
.back{background:none;border:0;padding:0;margin:0 0 12px;font:700 15px/1.2 var(--label);letter-spacing:.05em;color:var(--verdigris);cursor:pointer;text-transform:lowercase}
.kind{font:700 14px/1.2 var(--label);letter-spacing:.06em;color:var(--rust);text-transform:lowercase;margin:0 0 3px}
figure{margin:0 0 18px}figure img{display:block;width:100%;height:auto;margin-bottom:8px}
.routes{margin:0;padding-left:20px;font-size:17px}.routes li{margin-bottom:3px}
:focus-visible{outline:2px solid var(--verdigris);outline-offset:2px}
.pin-wrap{position:relative;width:0;height:0}
.pin{position:absolute;left:-6.5px;top:-6.5px;width:13px;height:13px;border:2px solid var(--halo);cursor:pointer;box-shadow:0 1px 3px #0007;transition:transform .12s}
.leaflet-marker-icon:hover .pin,.active .pin{transform:scale(1.35)}
.k-city .pin{background:#faf7eb;border-color:#1c201a;border-radius:50% 50% 50% 50%/30% 30% 70% 70%}
.k-haven .pin{background:#145c52;border-radius:50%}.k-works .pin{background:#1c201a}
.k-road .pin{background:#8e3218;transform:rotate(45deg)}.k-ruin .pin{background:#8e3218;border-radius:2px;clip-path:polygon(20% 0,50% 30%,80% 0,100% 20%,70% 50%,100% 80%,80% 100%,50% 70%,20% 100%,0 80%,30% 50%,0 20%)}
.k-land .pin{background:#2f7f9a;border-radius:50%}
.k-road.active .pin,.leaflet-marker-icon:hover .k-road .pin{transform:rotate(45deg) scale(1.35)}
.lbl{position:absolute;white-space:nowrap;font:700 12px/1 Georgia,serif;color:#1c201a;text-shadow:-2px 0 #f3e9cd,2px 0 #f3e9cd,0 -2px #f3e9cd,0 2px #f3e9cd,-1.5px -1.5px #f3e9cd,1.5px 1.5px #f3e9cd,1.5px -1.5px #f3e9cd,-1.5px 1.5px #f3e9cd;cursor:pointer}
.k-city .lbl{font-style:italic;font-size:13.5px}
.side-r .lbl{left:11px;top:-6px}.side-l .lbl{right:11px;top:-6px}.side-t .lbl{left:0;transform:translateX(-50%);bottom:10px}.side-b .lbl{left:0;transform:translateX(-50%);top:10px}
.compact .minor .lbl{display:none}
.region{white-space:nowrap;font:400 13px/1 Georgia,serif;letter-spacing:.05em;transform:translate(-50%,-50%);color:#1c201a;text-shadow:-2px 0 #f3e9cd,2px 0 #f3e9cd,0 -2px #f3e9cd,0 2px #f3e9cd;display:inline-block;pointer-events:none}
.compact .region{display:none}
.leaflet-container{font:inherit;background:#c9bd9d}.leaflet-container a{color:#1c201a}
.compass{font:700 13px/1 Georgia,serif;background:#f3e9cdcc;padding:6px 8px;color:#1c201a}
