/* BNDesign · Frederick Favorites map
   Everything is scoped under .bnmap so it can't leak into (or be overridden by) the theme.
   Layout: header + filter chips, then a two-column stage (tilted illustrated map beside a spots panel), then the crawlable guide. */
.bnmap{
  --bg:#F4F2F2; --surface:#FFFFFF; --fg:#1C1919; --muted:#6E6767; --line:#DED8D8;
  --accent:#930000; --accent-text:#930000; --chip:#ECE7E7;
  --m-land:#EEE9E4; --m-ground:#EFE1C7; --m-ink:#1C1919; --m-red:#930000; --m-paper:#FFFFFF; --m-grey:#ADA6A5; --m-label:#5C5555;
  --f-display:"Fraunces Variable", "Fraunces", Georgia, "Times New Roman", serif;
  --f-body:"Figtree Variable", "Figtree", system-ui, -apple-system, "Segoe UI", sans-serif;
  color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.5;color-scheme:light;
  display:grid;gap:44px;max-width:1280px;margin-inline:auto;text-align:left;
}
/* defensive reset: neutralise common theme styles on the elements the map uses */
.bnmap button{font:inherit;letter-spacing:normal;text-transform:none;box-shadow:none;text-shadow:none;min-height:0;min-width:0;margin:0;line-height:1;border-radius:0;width:auto;height:auto}
.bnmap img{border:0;border-radius:0;box-shadow:none;margin:0}
.bnmap blockquote{border:0;padding:0;background:none;quotes:none;box-shadow:none}
.bnmap blockquote::before,.bnmap blockquote::after{position:static;font:inherit;color:inherit;margin:0;opacity:1}
.bnmap h1,.bnmap h2,.bnmap h3{color:var(--fg);text-transform:none;padding:0;border:0}
.bnmap ul,.bnmap ol{margin:0;padding:0}
.bnmap address{font-style:normal}
.bnmap, .bnmap *{box-sizing:border-box}
.bnmap [hidden]{display:none!important}
.bnmap .wrap{display:grid;gap:20px;min-width:0}

/* header */
.bnmap .top{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:16px 24px}
.bnmap .eyebrow{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.bnmap .bnm-title{font-family:var(--f-display);font-weight:800;font-size:clamp(34px,5vw,56px);line-height:.95;letter-spacing:-.02em;margin:8px 0 8px;text-wrap:balance}
.bnmap .bnm-title em{font-style:normal;color:var(--accent-text)}
.bnmap .bnm-sub{margin:0 0 10px;font:700 clamp(18px,2vw,22px)/1.25 var(--f-display);color:var(--fg);text-wrap:balance}
.bnmap .lede{margin:0;color:var(--muted);max-width:62ch}
.bnmap .chips{display:flex;flex-wrap:wrap;gap:6px}
.bnmap .chip{font:600 13px/1 var(--f-body);color:var(--fg);background:var(--chip);border:1px solid transparent;padding:9px 13px;border-radius:99px;cursor:pointer}
.bnmap .chip[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
.bnmap .chip:focus-visible,.bnmap .row:focus-visible,.bnmap .card > .back:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}

.bnmap .tabs{display:flex;flex-wrap:wrap;gap:4px;margin-top:14px;background:var(--chip);padding:4px;border-radius:12px;width:fit-content;max-width:100%;box-sizing:border-box}
.bnmap .top>div{min-width:0;max-width:100%}
@media (max-width:480px){.bnmap .tab{padding:9px 10px;font-size:13px}}
.bnmap .tab{font:700 14px/1 var(--f-body);color:var(--fg);background:transparent;border:0;padding:10px 14px;border-radius:9px;cursor:pointer}
.bnmap .tab[aria-selected="true"]{background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.bnmap .tab:disabled{color:var(--muted);cursor:default}
.bnmap .tab span{font-weight:600;font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin-left:4px}
/* stage */
.bnmap .stage{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
@media (max-width:899px){.bnmap .stage{grid-template-columns:1fr}}
.bnmap .mapframe{min-width:0;border-radius:14px;border:1px solid var(--line);background:var(--m-land);overflow-x:auto;-webkit-overflow-scrolling:touch}

.bnmap .hint{font-size:12px;color:var(--muted);margin:0}

/* panel */
.bnmap .panel{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;display:grid;gap:14px}
.bnmap .panel h2{font:700 12px/1 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0}
.bnmap .group{display:grid;gap:2px}
.bnmap .group h3{font:600 20px/1.1 var(--f-display);margin:6px 0 6px}
.bnmap .row{all:unset;box-sizing:border-box;display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 8px;border-radius:10px;cursor:pointer}
.bnmap .row:hover{background:var(--chip)}
.bnmap .row[hidden]{display:none!important}
.bnmap .row .ic{width:44px;height:44px;border-radius:10px;background:var(--m-land);display:grid;place-items:center}
.bnmap .row .ic img{width:40px;height:40px;display:block}
.bnmap .row b{display:block;font-weight:700;font-size:14px;line-height:1.25}
.bnmap .row small{color:var(--muted);font-size:12.5px}

.bnmap .card{display:grid;gap:14px}
.bnmap .card > .back{all:unset;cursor:pointer;font:600 13px/1 var(--f-body);color:var(--muted);justify-self:start;padding:4px 0}
.bnmap .card > .back:hover{color:var(--fg)}
.bnmap .flip{width:100%;aspect-ratio:16/10;max-width:100%;perspective:900px}
.bnmap .flip .inner{position:relative;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,.2,1);transform-style:preserve-3d}
.bnmap .flip.flipped .inner{transform:rotateY(180deg)}
.bnmap .face{position:absolute;inset:0;border-radius:12px;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:grid;place-items:center}
.bnmap .face.front{background:var(--m-land)}
.bnmap .face.front img{position:absolute;left:10%;top:9%;width:80%;height:82%;max-width:none;object-fit:contain;display:block}
.bnmap .face.back{transform:rotateY(180deg);background:var(--m-paper);border:2px dashed var(--m-grey);text-align:center;padding:16px;color:var(--m-ink)}
.bnmap .logo-name{font:800 clamp(20px,2.4vw,26px)/1.05 var(--f-body);letter-spacing:-.01em;text-transform:uppercase}
.bnmap .logo-note{font:600 10.5px/1 var(--f-body);letter-spacing:.12em;text-transform:uppercase;color:var(--m-label);margin-top:10px}
.bnmap .card h3{font:800 28px/1.02 var(--f-display);letter-spacing:-.015em;margin:0;text-wrap:balance}
/* The place name and Saturday Plans title are h2 (one level below the page title); they keep their original look. */
.bnmap .panel .card h2{font:800 28px/1.02 var(--f-display);letter-spacing:-.015em;text-transform:none;color:var(--fg);margin:0;text-wrap:balance}
.bnmap .meta{display:flex;flex-wrap:wrap;gap:6px}
.bnmap .pill{font:600 12px/1 var(--f-body);padding:6px 10px;border-radius:99px;background:var(--chip);color:var(--fg)}
.bnmap blockquote{margin:0;font:600 18px/1.35 var(--f-display);text-wrap:pretty}
.bnmap blockquote::before{content:"\201C"} .bnmap blockquote::after{content:"\201D"}
.bnmap .by{font-size:12px;color:var(--muted);margin-top:-6px}
.bnmap .facts{margin:0;padding:0;list-style:none;display:grid;gap:6px;border-top:1px solid var(--line);padding-top:12px;font-size:14px}
.bnmap .facts li{display:grid;grid-template-columns:18px 1fr;gap:6px}
.bnmap .facts li::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);margin-top:7px}

@media (prefers-reduced-motion: reduce){
  .bnmap .flip .inner{transition:none}
}

/* tilted illustrated map */
.bnmap .mapframe{background:var(--m-ground);overflow:hidden;position:relative}
.bnmap .zoomer{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 0}
.bnmap .zoomer.anim{transition:transform .28s cubic-bezier(.2,.7,.2,1)}
.bnmap .tilt{touch-action:pan-y;-webkit-user-select:none;user-select:none}
.bnmap .tilt img{-webkit-user-drag:none;user-select:none}
.bnmap .tilt.zoomed{touch-action:none;cursor:grab}
.bnmap .tilt.dragging{cursor:grabbing}
.bnmap .zoomctl{position:absolute;z-index:5;right:max(10px,env(safe-area-inset-right,0px));top:10px;display:grid;gap:4px}
.bnmap .zoomctl button{width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--fg);font:700 20px/1 var(--f-body);cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.15);display:grid;place-items:center;padding:0}
.bnmap .zoomctl button:disabled{opacity:.4;cursor:default}
.bnmap .zoomctl button:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
@media (prefers-reduced-motion: reduce){.bnmap .zoomer.anim{transition:none}}
.bnmap .tilt{position:relative;width:100%;overflow:hidden;background:var(--m-ground)}
.bnmap .world{position:absolute;left:0;top:0;width:1040px;height:634px;transform-origin:0 0}
.bnmap .persp{position:absolute;inset:0;perspective:1900px;perspective-origin:50% 100%}
.bnmap .base{filter:saturate(.5) brightness(1.14) contrast(.78);position:absolute;inset:0;width:1040px;height:634px;max-width:none;display:block;transition:filter .9s ease}
.bnmap .over{position:absolute;inset:0;pointer-events:none}
.bnmap .over>.lm,.bnmap .over>.spot,.bnmap .over>.csp{pointer-events:auto}
.bnmap .csp{position:absolute;z-index:2400;width:21px;height:21px;margin:-10px 0 0 -10px;padding:0;border:0;background:none;cursor:pointer;outline:none}
.bnmap .csp svg{display:block;width:100%;height:100%;animation:bnm-breathe 3.4s ease-in-out infinite;transition:translate .2s cubic-bezier(.2,1.4,.4,1),scale .2s cubic-bezier(.2,1.4,.4,1)}

.bnmap .csp .lbl{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:6px;opacity:0;transition:opacity .15s;pointer-events:none;background:#930000;color:#fff;padding:6px 10px 5px;border-radius:999px;font:800 12.5px/1 var(--f-body);letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;box-shadow:0 3px 8px rgba(40,10,10,.28),0 0 0 2px #fff}
.bnmap .csp:hover .lbl,.bnmap .csp:focus-visible .lbl{opacity:1}
.bnmap .csp.dim{opacity:.15;pointer-events:none}
.bnmap .lm.dim{opacity:.15!important;pointer-events:none}
.bnmap .over>.lm.deco{pointer-events:none}
.bnmap .lm.deco .sp,.bnmap .lm.deco .lbl{display:none}
.bnmap .lm.deco.dim{opacity:1!important}
.bnmap .lm.dim .sp{display:none}
.bnmap .lm.spbr .sp{top:auto;right:-12px;bottom:-4px}
.bnmap .lm{position:absolute;padding:0;border:0;background:none;cursor:pointer;transform-origin:50% 100%;outline:none;transition:translate .2s cubic-bezier(.2,1.4,.4,1),scale .2s cubic-bezier(.2,1.4,.4,1)}
.bnmap .lm img{transition:translate .2s cubic-bezier(.2,1.4,.4,1),scale .2s cubic-bezier(.2,1.4,.4,1);transform-origin:50% 100%}
.bnmap .lm:hover img,.bnmap .lm:focus-visible img,.bnmap .lm.on img,.bnmap .lm.peek img{translate:0 -6px;scale:1.08}

.bnmap .lm img{display:block;width:100%;height:auto;max-width:none;filter:drop-shadow(0 3px 2px rgba(60,40,20,.18))}
.bnmap .lm:focus-visible img{filter:drop-shadow(0 8px 6px rgba(40,20,10,.3))}
.bnmap .lm.pop{animation:bnm-pop .5s cubic-bezier(.2,1.4,.4,1) both}
@keyframes bnm-pop{from{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}
.bnmap .leaders{position:absolute;inset:0;width:1040px;height:634px;overflow:visible;pointer-events:none;z-index:1998}
.bnmap .spot{position:absolute;z-index:2000;width:0;height:0;cursor:pointer;outline:none}
.bnmap .spot .ic{position:absolute;left:-26px;top:-52px;width:52px;height:52px;transition:translate .2s cubic-bezier(.2,1.4,.4,1),scale .2s cubic-bezier(.2,1.4,.4,1),filter .2s;transform-origin:50% 100%}
.bnmap .spot .ic img{width:100%;height:100%;display:block;max-width:none;filter:drop-shadow(0 5px 4px rgba(40,20,10,.25))}
.bnmap .spot:hover .ic img,.bnmap .spot.on .ic img{filter:drop-shadow(0 8px 6px rgba(40,20,10,.3))}
.bnmap .lm:hover img{filter:drop-shadow(0 8px 6px rgba(40,20,10,.3))}
.bnmap .spot:hover .ic,.bnmap .spot:focus-visible .ic,.bnmap .spot.on .ic{translate:0 -6px;scale:1.08}
.bnmap .spot .sp{position:absolute;left:13px;top:-60px;width:21px;height:21px}
.bnmap .spot .lbl{position:absolute;left:0;top:3px;transform:translateX(-50%);font:800 10.5px/1 var(--f-body);letter-spacing:.06em;text-transform:uppercase;color:var(--m-ink);white-space:nowrap;
  text-shadow:0 0 4px var(--m-ground),0 0 4px var(--m-ground),0 0 4px var(--m-ground),0 0 8px var(--m-ground)}
.bnmap .spot.on .lbl,.bnmap .lm.on .lbl{color:var(--m-red)}
.bnmap .spot .lbl,.bnmap .lm .lbl{opacity:0;transition:opacity .15s ease;pointer-events:none}
.bnmap .spot:hover .lbl,.bnmap .spot:focus-visible .lbl,.bnmap .spot.on .lbl,.bnmap .lm:hover .lbl,.bnmap .lm:focus-visible .lbl,.bnmap .lm.on .lbl,.bnmap .lm.peek .lbl{opacity:1}
.bnmap .lm .lbl{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:4px;font:800 10.5px/1 var(--f-body);letter-spacing:.06em;text-transform:uppercase;color:var(--m-ink);white-space:nowrap;
  text-shadow:0 0 4px var(--m-ground),0 0 4px var(--m-ground),0 0 4px var(--m-ground),0 0 8px var(--m-ground)}
.bnmap .lm .sp{position:absolute;right:-8px;top:-6px;width:21px;height:21px;pointer-events:none}
.bnmap .lm:hover,.bnmap .lm:focus-visible,.bnmap .lm.on,.bnmap .lm.peek,.bnmap .spot:hover,.bnmap .spot:focus-visible{z-index:2500!important}

.bnmap .spot.dim{opacity:.15;pointer-events:none}
.bnmap .dot{position:absolute;z-index:1999;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;background:var(--m-red);border:3px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.bnmap .ctrl{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:12px;color:var(--muted)}
.bnmap .ctrl label{display:flex;align-items:center;gap:8px;font-weight:600}
.bnmap .ctrl input{accent-color:var(--accent)}
.bnmap .lmrow{all:unset;box-sizing:border-box;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:10px;padding:4px 8px;border-radius:8px;cursor:pointer;font-size:13.5px;font-weight:600}
.bnmap .lmrow:hover,.bnmap .lmrow:focus-visible{background:var(--chip)}
.bnmap .lmrow span.t{width:34px;height:30px;display:grid;place-items:center}
.bnmap .lmrow img{max-width:34px;max-height:30px;display:block}
.bnmap .lmgroup{display:grid;gap:0;border-top:1px solid var(--line);padding-top:12px;margin-top:4px}
.bnmap .lmgroup h3{font:600 18px/1.1 var(--f-display);margin:0;display:inline}
.bnmap .lmgroup summary{cursor:pointer;padding:4px 0 8px;color:var(--fg)}
.bnmap .lmgroup summary:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
.bnmap .lmgroup p{margin:0 0 6px;font-size:12px;color:var(--muted)}
.bnmap .lmgroup[hidden]{display:none}
@media (prefers-reduced-motion: reduce){.bnmap .lm.pop{animation:none}.bnmap .spot .ic{transition:none}}
.bnmap .plane{position:absolute;left:0;top:0;width:1040px;height:634px;transform-origin:50% 100%}
.bnmap .tint{position:absolute;inset:0;background:#1d2a5e;mix-blend-mode:multiply;opacity:0;transition:opacity .9s ease;pointer-events:none}
.bnmap .psvg{position:absolute;inset:0;width:1040px;height:634px;overflow:visible}
.bnmap .psvg *{pointer-events:none}
.bnmap .lamps{opacity:0;transition:opacity .9s ease}
.bnmap .lamps .tw{animation:bnm-twinkle 4s ease-in-out infinite}
@keyframes bnm-twinkle{0%,100%{opacity:1}50%{opacity:.45}}
.bnmap .rip{fill:none;stroke:#fff;stroke-linecap:round;transition:stroke .9s ease,opacity .9s ease}
.bnmap .r1{stroke-width:1.4;stroke-dasharray:7 19;opacity:.55;animation:bnm-flow 9s linear infinite}
.bnmap .r2{stroke-width:.9;stroke-dasharray:3 23;opacity:.4;animation:bnm-flow 6s linear infinite reverse;stroke-dashoffset:11}
@keyframes bnm-flow{to{stroke-dashoffset:-260}}
.bnmap .creek .creekHit{fill:none;stroke:transparent;stroke-width:26;pointer-events:stroke;cursor:pointer;outline:none}
.bnmap .creekLbl{font:italic 700 13px var(--f-display);letter-spacing:.1em;fill:#fffdf6;paint-order:stroke;stroke:#3f7290;stroke-width:2.4px;stroke-linejoin:round;transition:fill .2s}

.bnmap .creek.hov .r1{opacity:.9}
.bnmap .pad{transform-box:fill-box;transform-origin:center;animation:bnm-drift 9s ease-in-out infinite alternate;transition:opacity .9s ease}
@keyframes bnm-drift{from{rotate:-6deg;translate:-1.5px 0}to{rotate:7deg;translate:1.5px .8px}}
.bnmap .route{opacity:0;transition:opacity .4s}
.bnmap .routeOn .route{opacity:1}
.bnmap .rDots{fill:none;stroke:#930000;stroke-width:3.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:9 7;animation:bnm-march 1.6s linear infinite}
@keyframes bnm-march{to{stroke-dashoffset:-16}}
.bnmap #bnm-rmaskp{transition:stroke-dashoffset 2.6s cubic-bezier(.45,.05,.3,1)}
.bnmap .boat{position:absolute;z-index:1;pointer-events:none;opacity:0;transition:opacity .9s ease;transform-origin:50% 100%}
.bnmap .boat img{display:block;width:100%;height:auto;max-width:none;animation:bnm-bob 3.4s ease-in-out infinite;filter:drop-shadow(0 0 6px rgba(255,200,110,.7))}
@keyframes bnm-bob{0%,100%{translate:0 0;rotate:-2deg}50%{translate:0 -2px;rotate:2deg}}
.bnmap .rbadge{position:absolute;z-index:2600;width:20px;height:20px;margin:-6px 0 0 -10px;border-radius:50%;background:#930000;color:#fff;border:2px solid #fff;font:800 11px/16px var(--f-body);text-align:center;box-shadow:0 2px 5px rgba(0,0,0,.3);pointer-events:none;opacity:0;scale:.4;transition:opacity .3s,scale .3s cubic-bezier(.2,1.4,.4,1)}
.bnmap .routeOn .rbadge.show{opacity:1;scale:1}
.bnmap .routeOn .offroute{opacity:.28}
.bnmap .routeOn .offroute .sp{display:none}
/* night */
.bnmap .night .base{filter:saturate(.55) brightness(.62) contrast(1.05)}
.bnmap .night .tint{opacity:.62}
.bnmap .night .lamps{opacity:1}
.bnmap .night .pad{opacity:0}
.bnmap .night .boat{opacity:1}
/* Night: the ripples keep their daytime movement in a dim moonlit blue, so the water darkens with the map. */
.bnmap .night .rip{stroke:#8ea3c9}
.bnmap .night .r1{opacity:.3}.bnmap .night .r2{opacity:.2}
.bnmap .night .creekLbl{fill:#ffe9b8;stroke:#16223f}
.bnmap .night .lm:not(:hover):not(.on):not(.peek) img{filter:brightness(.82) saturate(.95) drop-shadow(0 0 7px rgba(255,196,110,.6))}
.bnmap .night .spot:not(:hover):not(.on) .ic img{filter:drop-shadow(0 0 8px rgba(255,210,140,.75))}
/* map tools */
.bnmap .maptools{position:absolute;z-index:5;right:calc(max(10px,env(safe-area-inset-right,0px)) + 44px);top:10px;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:calc(100% - 70px)}
.bnmap .seg{display:flex;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.bnmap .seg button,.bnmap .tool{display:flex;align-items:center;gap:6px;border:0;background:transparent;color:var(--fg);font:700 12.5px/1 var(--f-body);padding:7px 10px;border-radius:7px;cursor:pointer}
.bnmap .seg button svg,.bnmap .tool svg{width:15px;height:15px}
.bnmap .seg button[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
.bnmap .tool{background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.15);padding:9px 12px}
.bnmap .tool[aria-pressed="true"]{background:#930000;border-color:#930000;color:#fff}
.bnmap .seg button:focus-visible,.bnmap .tool:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
/* labels: BN pill */
.bnmap .spot .lbl,.bnmap .lm .lbl{background:#930000;color:#fff!important;padding:6px 10px 5px;border-radius:999px;font:800 12.5px/1 var(--f-body);letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;text-shadow:none;box-shadow:0 3px 8px rgba(40,10,10,.28),0 0 0 2px #fff}
.bnmap .spot .lbl{top:6px}
.bnmap .lm .lbl{margin-top:6px}
.bnmap .spot.lblL .lbl{transform:translateX(-28px)}
.bnmap .spot.lblR .lbl{transform:translateX(calc(-100% + 28px))}
.bnmap .spot.lblUp .lbl{top:-92px}
.bnmap .lm.lblL .lbl{left:0;transform:none}
.bnmap .lm.lblR .lbl{left:auto;right:0;transform:none}
.bnmap .lm.lblUp .lbl,.bnmap .lm.flipUp .lbl{top:auto;bottom:100%;margin:0 0 6px}
.bnmap .spot.flipUp .lbl{top:-92px}
.bnmap .spot.lp-tr .lbl{top:-74px!important;transform:translateX(16px)!important}
.bnmap .spot.lp-tl .lbl{top:-74px!important;transform:translateX(calc(-100% - 16px))!important}
.bnmap .csp.flipUp .lbl{top:auto;bottom:100%;margin:0 0 6px}
.bnmap .lm.spl .sp{right:auto;left:-8px}
.bnmap .spot.spl .sp{left:-34px}
.bnmap .sp{animation:bnm-breathe 3.4s ease-in-out infinite}
@keyframes bnm-breathe{0%,100%{scale:1}50%{scale:1.09}}
/* route panel */
.bnmap .routebox{display:grid;gap:6px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:6px}
.bnmap .routebox h3{font:600 20px/1.1 var(--f-display);margin:0}
.bnmap .panel .routebox h2{font:600 20px/1.1 var(--f-display);letter-spacing:normal;text-transform:none;color:var(--fg);margin:0}
.bnmap .routebox ol{list-style:none;margin:0;padding:0;display:grid;gap:2px;counter-reset:st}
.bnmap .routebox li button{all:unset;box-sizing:border-box;width:100%;display:grid;grid-template-columns:24px 52px minmax(0,1fr);gap:8px;align-items:baseline;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:13.5px}
.bnmap .routebox li button:hover,.bnmap .routebox li button:focus-visible{background:var(--chip)}
.bnmap .routebox .n{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#930000;color:#fff;font:800 11px/1 var(--f-body);align-self:center}
.bnmap .routebox .t{font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px}
.bnmap .routebox b{font-weight:700}
@media (prefers-reduced-motion: reduce){.bnmap .rip,.bnmap .pad,.bnmap .boat img,.bnmap .lamps .tw,.bnmap .rDots,.bnmap .sp{animation:none}.bnmap #bnm-rmaskp{transition:none}}


/* crawlable guide below the map */
.bnmap .bnm-guide{display:grid;gap:16px}
.bnmap .bnm-guide>h2{font:800 clamp(26px,3.4vw,36px)/1.05 var(--f-display);letter-spacing:-.015em;margin:8px 0 0;text-wrap:balance}
.bnmap .bnm-guide-intro{margin:0;color:var(--muted);max-width:62ch}
.bnmap .bnm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px;list-style:none;margin:0;padding:0}
.bnmap .bnm-place{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;grid-template-columns:72px minmax(0,1fr);gap:14px;align-items:start;scroll-margin-top:96px;height:100%}
.bnmap .bnm-place:target{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.bnmap .bnm-place-img{width:72px;height:72px;border-radius:12px;background:var(--m-land);display:grid;place-items:center}
.bnmap .bnm-place-img img{width:62px;height:62px;object-fit:contain;display:block}
.bnmap .bnm-place>div{min-width:0}
.bnmap .bnm-place h3{font:700 19px/1.15 var(--f-display);margin:0 0 6px;text-wrap:balance}
.bnmap .bnm-place-cat{margin:0 0 8px;font:700 11px/1.2 var(--f-body);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text)}
.bnmap .bnm-desc{margin:0 0 8px;font-size:14px}
.bnmap .bnm-place blockquote{font-size:15px;margin:0 0 8px}
.bnmap .bnm-place address{font-size:13px;color:var(--muted);margin:0 0 12px}
.bnmap .bnm-place-actions{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}
.bnmap .bnm-mapbtn{all:unset;box-sizing:border-box;cursor:pointer;font:700 13px/1 var(--f-body);color:#fff;background:var(--accent);padding:9px 13px;border-radius:99px}
.bnmap .bnm-mapbtn:hover{background:#6e0000}
.bnmap .bnm-mapbtn:focus-visible{outline:2px solid var(--fg);outline-offset:2px}
.bnmap .bnm-place-actions a{color:var(--accent-text);font-weight:700;font-size:13px;text-underline-offset:3px}
.bnmap .bnm-credit{font-size:12px;color:var(--muted);margin:0}
.bnmap .bnm-credit a{color:inherit}
.bnmap .bnm-toast{position:absolute;z-index:6;left:12px;bottom:12px;background:var(--m-ink);color:#fff;font:700 13px/1 var(--f-body);padding:9px 12px;border-radius:8px;pointer-events:none}

/* About-section teaser: [bn_frederick_map_teaser] */
.bnmap-teaser{display:block;position:relative;border-radius:14px;overflow:hidden;text-decoration:none;max-width:100%;line-height:0}
.bnmap-teaser img{display:block;width:100%;height:auto;margin:0}
.bnmap-teaser span{position:absolute;left:16px;bottom:16px;line-height:1;background:#930000;color:#fff;font:700 15px/1 var(--f-body);padding:12px 16px;border-radius:99px;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.bnmap-teaser:hover span,.bnmap-teaser:focus-visible span{background:#6e0000}
/* 1.0.1: a visible ring for keyboard focus on the map's places (mouse and touch look unchanged). */
.bnmap .spot:focus-visible,.bnmap .lm:focus-visible,.bnmap .csp:focus-visible{outline:none}
.bnmap .spot:focus-visible .ic{outline:2px solid var(--accent-text);outline-offset:3px;border-radius:50%}
.bnmap .lm:focus-visible img{outline:2px solid var(--accent-text);outline-offset:4px;border-radius:6px}
.bnmap .csp:focus-visible svg{outline:2px solid var(--accent-text);outline-offset:3px;border-radius:50%}
.bnmap .creek .creekHit:focus-visible{stroke:rgba(147,0,0,.45);stroke-width:8}

/* --nav-h is the site header height (BNDesign theme); without it the scroll margin is 0. */
/* 1.1.0: business cards. Even padding and spacing inside the card; a calm entrance; the logo side only where a
   logo exists, shown whole (never cropped or stretched) on a background that suits it. */
.bnmap .visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.bnmap .panel{padding:24px;gap:16px;scroll-margin-top:calc(var(--nav-h, -12px) + 12px)}
.bnmap .stage{scroll-margin-top:calc(var(--nav-h, -12px) + 12px)}
.bnmap .card{gap:16px}
.bnmap .card > *{margin:0}
.bnmap .card > .back{padding:12px 0;margin:-12px 0 -4px}
/* The site's homepage styles a generic ".jb .card" (absolute, dark, flex) on every page; keep the map's card its own. */
.bnmap .panel .card{position:static;inset:auto;display:grid;align-items:stretch;gap:16px;padding:0;border-radius:0;background:none;box-shadow:none;color:var(--fg);font-family:var(--f-body);font-size:15px;font-weight:400}
.bnmap .flip .inner{transition:transform .5s cubic-bezier(.33,.7,.25,1)}
.bnmap .flip.noanim .inner{transition:none}
.bnmap .flip.has-logo{cursor:pointer}
.bnmap .flip.has-logo:focus-visible{outline:2px solid var(--accent-text);outline-offset:3px;border-radius:12px}
.bnmap .face.front img{left:12%;top:11%;width:76%;height:78%}
.bnmap .face.back{border:1px solid var(--line);background:#fff;padding:24px}
.bnmap .face.back.dark{background:#000;border-color:#000}
.bnmap .face.back{display:flex;align-items:center;justify-content:center;padding:28px 32px}
.bnmap .face.back img{display:block;flex:none;width:auto;height:auto;max-width:100%;max-height:100%}
.bnmap .card blockquote{padding-top:2px}
.bnmap .by{margin-top:-10px}
.bnmap .facts{gap:8px;padding-top:16px;line-height:1.5}
.bnmap .cardlinks{border-top:1px solid var(--line);padding-top:14px}
.bnmap .cardlinks a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font:700 14px/1 var(--f-body);color:var(--accent-text);text-underline-offset:3px}
.bnmap .cardlinks a:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px;border-radius:4px}
@keyframes bnm-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.bnmap .entering{animation:bnm-enter .34s cubic-bezier(.2,.7,.2,1) both}
@media (max-width:600px){.bnmap .panel{padding:20px;gap:14px}.bnmap .face.back{padding:22px 24px}}
@media (prefers-reduced-motion: reduce){.bnmap .entering{animation:none}.bnmap .flip .inner{transition:none}}

/* 1.2.0: BNDesign shared look (the site's brand-system.css sets the same on BNDesign pages). */
.bnmap .eyebrow{display:inline-block;width:auto;max-width:100%;padding:.5em 1.15em .58em 1.05em;font:700 13px/1.35 var(--f-body);letter-spacing:.01em;text-transform:none;color:#fff;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 40' preserveAspectRatio='none'%3E%3Cpath fill='%23930000' d='M6,9 C44,4 118,8 176,5 C226,2 262,7 288,4 C295,3 299,7 296,11 C300,15 296,19 299,23 C301,29 296,34 289,34 C244,38 172,34 112,37 C72,39 34,35 10,37 C4,38 0,34 4,30 C0,26 4,22 1,18 C-1,13 2,10 6,9Z M40,36 C80,35 130,37 170,35 L168,38 C128,40 80,39 42,39Z'/%3E%3C/svg%3E") center / 100% 100% no-repeat}
.bnmap .bnm-title em{font-style:italic;color:var(--accent-text)}
.bnmap .pill{background:#fff;border:1px solid #d7cfc9;border-radius:999px;padding:5px 11px;color:#554f4b;font:500 12px/1.5 var(--f-body)}
.bnmap .chips{gap:4px 14px}
.bnmap .chip{min-height:44px;padding:10px 6px 8px;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);font:600 14px/1.2 var(--f-body)}
.bnmap .chip:hover{color:var(--fg);border-bottom-color:var(--line)}
.bnmap .chip[aria-pressed="true"]{background:none;color:var(--accent-text);border-bottom-color:var(--accent-text)}
.bnmap .chip:focus-visible{border-radius:4px}
.bnmap .bnd-arrow{display:inline-block;flex:none;width:1em;height:1em;vertical-align:-.12em}
.bnmap a.bnd-arrow-link{display:inline-flex;align-items:center;gap:.4em;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px;line-height:1.3}

/* 1.2.0: the list panel. Search, filters, places, then the collapsible landmarks. */
.bnmap #bnm-list{display:grid;gap:14px;min-height:0}
.bnmap .finder label{display:block;font:600 13px/1.3 var(--f-body);color:var(--fg);margin:0 0 8px}
.bnmap .search{position:relative}
.bnmap .search .ico{position:absolute;left:12px;top:50%;width:18px;height:18px;translate:0 -50%;color:var(--muted);pointer-events:none}
.bnmap .search input{display:block;width:100%;min-height:46px;margin:0;padding:11px 44px 11px 40px;border:1px solid #d5cdc6;border-radius:10px;background:#fff;color:var(--fg);font:400 16px/1.3 var(--f-body);box-shadow:none;-webkit-appearance:none;appearance:none}
.bnmap .search input::-webkit-search-cancel-button{display:none}
.bnmap .search input:focus{outline:2px solid var(--accent-text);outline-offset:1px;border-color:var(--accent-text)}
.bnmap .search .clear{all:unset;position:absolute;right:4px;top:50%;translate:0 -50%;width:40px;height:40px;display:grid;place-items:center;border-radius:8px;color:var(--muted);cursor:pointer}
.bnmap .search .clear svg{width:18px;height:18px}
.bnmap .search .clear:hover{color:var(--fg)}
.bnmap .search .clear:focus-visible{outline:2px solid var(--accent-text);outline-offset:0}
.bnmap .chips{margin-top:-6px}
.bnmap .bnm-status{margin:-6px 0 0;font-size:13px;color:var(--muted)}
.bnmap .listscroll{display:grid;gap:10px;min-height:0}
.bnmap .panel #bnm-count{margin:2px 0 0}
.bnmap .group{gap:0}
.bnmap .row{display:grid;grid-template-columns:minmax(0,1fr) 20px;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 8px;border-radius:0;border-top:1px solid var(--line);font-size:inherit}
.bnmap .group .row:first-child{border-top:0}
.bnmap .row:hover{background:var(--chip)}
.bnmap .row .txt{min-width:0}
.bnmap .row b{display:block;font:700 15px/1.3 var(--f-body);color:var(--fg)}
.bnmap .row small{display:block;margin-top:2px;font-size:13px;line-height:1.35;color:var(--muted)}
.bnmap .row .go{width:16px;height:16px;color:var(--accent-text);justify-self:end}
.bnmap .row:focus-visible{outline:2px solid var(--accent-text);outline-offset:-2px;border-radius:6px}
.bnmap .lmrow{min-height:48px}
.bnmap .more{all:unset;box-sizing:border-box;justify-self:start;display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;border:1px solid var(--accent-text);border-radius:999px;background:#fff;color:var(--accent-text);font:600 14px/1 var(--f-body);cursor:pointer}
.bnmap .more:hover{background:#fbf3f2}
.bnmap .more:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
.bnmap .lmgroup{border-top:1px solid var(--line);padding-top:6px;margin-top:2px}
.bnmap .lmgroup summary{display:flex;align-items:center;gap:8px;min-height:48px;padding:0;list-style:none}
.bnmap .lmgroup summary::-webkit-details-marker{display:none}
.bnmap .lmgroup summary::before{content:"";flex:none;width:8px;height:8px;border-right:2px solid var(--accent-text);border-bottom:2px solid var(--accent-text);rotate:-45deg;transition:rotate .2s}
.bnmap .lmgroup[open] summary::before{rotate:45deg}
.bnmap .lmgroup h3{font:600 18px/1.2 var(--f-display);display:block}
.bnmap .lmgroup p{margin:0 0 8px;font-size:13px}
.bnmap .empty{display:grid;gap:10px;padding:8px 0}
.bnmap .empty p{margin:0;font-size:14px;color:var(--muted)}
@media (min-width:900px){
  /* As tall as the map: search and filters stay put, the list scrolls. */
  .bnmap .panel:has(> #bnm-list:not([hidden])){max-height:max(420px, var(--bnm-map-h, 640px));grid-template-rows:minmax(0,1fr);overflow:hidden}
  .bnmap #bnm-list{grid-template-rows:auto auto auto auto minmax(0,1fr)}
  .bnmap .listscroll{overflow-y:auto;overscroll-behavior:contain;margin:0 -8px;padding:0 8px 8px;align-content:start;scrollbar-gutter:stable}
}
@media (prefers-reduced-motion: reduce){.bnmap .lmgroup summary::before{transition:none}}

/* 1.2.0: detail cards. Illustration and logo both on white (no tinted tile, no inner outline); the outer card border,
   corners and padding stay. A prominent "Back to all places" button. */
.bnmap .face.front,.bnmap .face.back{background:#fff;border:0}
.bnmap .face.back.dark{background:#fff}
.bnmap .card > .back{all:unset;box-sizing:border-box;justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;margin:0;padding:10px 16px;border:1px solid var(--accent-text);border-radius:999px;background:#fff;color:var(--accent-text);font:600 14px/1 var(--f-body);cursor:pointer}
.bnmap .card > .back svg{width:16px;height:16px;flex:none}
.bnmap .card > .back:hover{background:#fbf3f2}
.bnmap .card > .back:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
