*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;background:#08090d;color:#f0e7d1;font:16px/1.7 Inter,system-ui,sans-serif}a{color:#dfb975;text-underline-offset:4px}a:focus-visible,summary:focus-visible{outline:3px solid #f5d18e;outline-offset:5px}.skip{position:absolute;left:12px;top:-70px;z-index:100;background:#08090d;padding:12px}.skip:focus{top:10px}main{max-width:1250px;margin:auto;padding:0 28px}.intro{max-width:780px;padding:42px 0 24px}.breadcrumb{font-size:14px}.eyebrow{color:#d8ad61;font-size:13px;letter-spacing:.18em;text-transform:uppercase;margin:30px 0 8px}h1,h2,h3{font-family:Cinzel,Georgia,serif}h1{font-size:clamp(3rem,7vw,6rem);line-height:1.05;margin:0 0 16px}.lead{font-size:clamp(1.2rem,2.4vw,1.6rem);color:#e1d1b4}.intro p:not(.lead):not(.eyebrow){color:#bdb6a8}.fiction-label{font-size:12px;letter-spacing:.12em}.town{margin:0}.map{position:relative;overflow:hidden;border:1px solid #b9996155;border-radius:8px}.map img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}.pin{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid #ffe1a5;background:#101719ed;color:#ffe1a5;box-shadow:0 3px 14px #0009;font-weight:600;text-decoration:none}.pin:hover{background:#efd19a;color:#141719}.town figcaption{font-size:14px;color:#bcb5a9;padding:12px 0}.district-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#d8ad6133;border:1px solid #d8ad6133;margin:22px 0 40px}.district-index a{display:flex;gap:14px;align-items:center;background:#12151a;padding:18px;text-decoration:none}.district-index a>span{color:#8eacac;font-family:Cinzel,serif;font-size:22px}.district-index strong{display:block;color:#f0e7d1;font-size:15px}.district-index small{display:block;color:#bdb6a8;font-size:14px}.district-index a:hover{background:#20272b}.district{border-top:1px solid #d8ad6144;scroll-margin-top:20px}.district summary{display:flex;align-items:center;gap:18px;padding:24px 0;cursor:pointer;list-style:none}.district summary:after{content:'+';margin-left:auto;color:#d8ad61;font-size:26px}.district[open] summary:after{content:'−'}.district-number{font:22px Cinzel,serif;color:#8eacac}.district h2{font-size:clamp(1.25rem,3vw,1.8rem);margin:0}.district summary small{font-size:14px;color:#bdb6a8}.district-body{padding:0 0 28px 50px;max-width:1100px}.district-body>p{max-width:840px}.note,.closing{padding:22px;border:1px solid #8eacac44;background:#101a20;color:#c7d4d5}.note strong{color:#f0e7d1}.company-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:24px 0}.company{padding:24px;background:#13151b;border:1px solid #d8ad6133;border-radius:5px}.company h3{margin:8px 0;font-size:21px}.company p{color:#c3beb3}.category{font-size:13px;color:#8eb6bd}.company-links,.links{display:flex;flex-wrap:wrap;gap:12px 24px;font-size:14px}.links a,.action{display:inline-block;padding:10px 0}.review{font-size:14px;color:#b2aea5}.fiction{border-left:2px solid #d8ad61;padding-left:16px;color:#dbc9a5}.closing{margin:36px 0 50px}.closing p{margin:10px 0}footer{border-top:1px solid #d8ad6144;padding:30px max(24px,calc((100vw - 1194px)/2));font-size:14px;color:#aaa59b}footer nav{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px}@media(max-width:650px){main{padding:0 16px}.intro{padding-top:26px}.district-index{grid-template-columns:1fr}.district-index a{padding:12px 16px}.district-body{padding-left:0}.company-grid{grid-template-columns:1fr}.company{padding:20px}.pin{width:36px;height:36px;font-size:14px}.pin:before{content:'';position:absolute;inset:-4px}.district summary{gap:12px}.map{border-radius:4px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Building selection: retain the last selected district while reading its card. */
.town-regions{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.town-regions polygon{pointer-events:all;cursor:pointer;fill:transparent;stroke:none}
.town-regions polygon.selected{fill:transparent;stroke:none}
.pin{z-index:2;transition:transform .18s,background .18s}
.pin.selected{background:#ffe1a5;color:#101719;transform:translate(-50%,-50%) scale(1.22);box-shadow:0 0 0 5px #efca7940,0 4px 18px #000b}
.place-preview{display:flex;align-items:center;gap:24px;padding:20px;background:#131b20;border:1px solid #b9996166;border-radius:0 0 8px 8px;min-height:180px}
.place-preview[hidden]{display:none}
.place-closeup{display:block;flex:0 0 260px;width:260px;height:210px;background:#080e12;border-radius:6px;overflow:hidden}
.place-title{font:600 clamp(1.1rem,2vw,1.5rem)/1.4 Cinzel,Georgia,serif;color:#ffe1a5;margin:0 0 8px}
.place-description{margin:0 0 10px;color:#d0c9bb;max-width:740px}
.place-open{display:inline-block;padding:6px 0;font-size:14px}
@media(max-width:650px){.place-preview{flex-direction:column;gap:14px;padding:14px;align-items:stretch;min-height:0}.place-closeup{flex:none;width:100%;height:230px}.place-description{font-size:14px;line-height:1.5}.place-title{font-size:16px}}
@media(prefers-reduced-motion:reduce){.pin,.town-regions polygon{pointer-events:all;cursor:pointer;fill:transparent;stroke:none}}

.building-image{pointer-events:none;opacity:0;transform:scale(1);transition:transform .22s ease,opacity .16s ease;filter:drop-shadow(0 8px 8px #0008)}
.building-image.selected{opacity:1;transform:scale(1.045)}
@media(prefers-reduced-motion:reduce){.building-image{transition:none}}
.map{overflow:visible}.map>img{border-radius:8px}.town-regions{overflow:visible}
