
/* Layout: photo-led field guide. Full-bleed photographs carry each park; a high-contrast serif names places, a civic sans (USWDS's Public Sans) carries the facts. Left-aligned, generous margins, hairline rules only where they separate real groups. */
:root{
  --paper:#f3f4f1; --surface:#ffffff; --ink:#17211c; --muted:#58645d; --rule:#d7dcd5;
  --spruce:#1d4a3a; --spruce-ink:#ffffff; --link:#1d5c47; --ochre:#9a6a12; --ochre-bg:#f6ecd6; --alert:#a2412a; --alert-bg:#f8e6df;
  --serif:"Newsreader","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Public Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --w:1180px;
  --sea:#dfe8ec; --land:#eef0e8; --land-b:#ffffff; --state:#e4e8de; --water:#b9d3e0; --river:#86b3cc; --pk:#cfe2c8; --pk-line:#3f7a52; --pk-o:#e3eedb; --hwy:#d08a3c; --road:#b8a68a; --st-line:#9aa39b; --town:#2b332e; --halo:#ffffff;
  --blue:#1a0dab; --blue-v:#681da8; --mast:#1d4a3a; --mast-accent:#e9b949;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --paper:#111714; --surface:#18201c; --ink:#e8ece7; --muted:#a2ada6; --rule:#2c3731;
  --spruce:#2a6550; --spruce-ink:#ffffff; --link:#86c7a8; --ochre:#e2b55c; --ochre-bg:#33290f; --alert:#f08f71; --alert-bg:#3a2119; --sea:#16222a; --land:#1d2621; --land-b:#111714; --state:#222c26; --water:#28495a; --river:#3f6f88; --pk:#24412f; --pk-line:#7fbf9e; --pk-o:#1f3328; --hwy:#c98a45; --road:#6d6455; --st-line:#55605a; --town:#dfe6e1; --halo:#111714; --blue:#8ab4f8; --blue-v:#c58af9; --mast:#163a2d; --mast-accent:#e9b949; color-scheme:dark}}
:root[data-theme="dark"]{
  --paper:#111714; --surface:#18201c; --ink:#e8ece7; --muted:#a2ada6; --rule:#2c3731;
  --spruce:#2a6550; --spruce-ink:#ffffff; --link:#86c7a8; --ochre:#e2b55c; --ochre-bg:#33290f; --alert:#f08f71; --alert-bg:#3a2119; --sea:#16222a; --land:#1d2621; --land-b:#111714; --state:#222c26; --water:#28495a; --river:#3f6f88; --pk:#24412f; --pk-line:#7fbf9e; --pk-o:#1f3328; --hwy:#c98a45; --road:#6d6455; --st-line:#55605a; --town:#dfe6e1; --halo:#111714; --blue:#8ab4f8; --blue-v:#c58af9; --mast:#163a2d; --mast-accent:#e9b949; color-scheme:dark}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{background:var(--paper);color:var(--ink);font:16px/1.6 var(--sans);margin:0;-webkit-font-smoothing:antialiased}
a{color:var(--link);text-underline-offset:3px;text-decoration-thickness:1px}
button,input{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}
h1,h2,h3{font-family:var(--serif);font-weight:400;font-optical-sizing:auto;margin:0;text-wrap:balance;letter-spacing:-.015em}
p{margin:0}
.wrap{max-width:var(--w);margin:0 auto;padding-inline:clamp(16px,4vw,40px)}
.muted{color:var(--muted)}
.num{font-variant-numeric:tabular-nums}

/* Masthead */
.mast{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--mast);border-bottom:3px solid var(--mast-accent);box-shadow:0 2px 10px rgba(0,0,0,.12)}
.mast .wrap{display:flex;align-items:center;gap:24px;min-height:64px;flex-wrap:wrap;padding-block:6px}
.mark{display:flex;align-items:center;gap:12px;text-decoration:none;color:#fff;margin-right:auto}
.mark svg{flex:none;color:var(--mast-accent)}
.mark span{font:500 23px/1 var(--serif);letter-spacing:-.01em;white-space:nowrap}
.nav{display:flex;gap:4px 22px;flex-wrap:wrap}
@media (max-width:480px){.nav{gap:4px 16px}.nav a{font-size:14.5px}}
.nav a{color:rgba(255,255,255,.78);text-decoration:none;font-size:15px;font-weight:500;padding:8px 0;border-bottom:2px solid transparent}
.nav a:hover{color:#fff}
.nav a[aria-current="page"]{color:#fff;border-bottom-color:var(--mast-accent)}
.nav .count{font-size:12px;font-weight:600;margin-left:4px;color:var(--mast-accent)}

/* Photographic hero */
.hero{position:relative;color:#fff;background:#1a221e;overflow:hidden;isolation:isolate}
.hero .shot{position:absolute;inset:0;z-index:-2}
.hero .shot img.cover{width:100%;height:100%;object-fit:cover;display:block;max-width:none}
.lo{position:absolute;inset:0;overflow:hidden;background:#141b17}
.lo .bg{position:absolute;inset:-40px;width:calc(100% + 80px);height:calc(100% + 80px);object-fit:cover;filter:blur(28px) brightness(.62) saturate(1.1);max-width:none}
.lo .fg{position:relative;display:block;height:100%;width:auto;max-width:100%;margin:0 auto;object-fit:contain;box-shadow:0 0 60px rgba(0,0,0,.35)}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,14,11,.35) 0%,rgba(8,14,11,0) 30%,rgba(8,14,11,.15) 55%,rgba(8,14,11,.78) 100%)}
.hero .wrap{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:clamp(360px,54vh,560px);padding-block:24px 36px;gap:12px}
.hero h1{font-size:clamp(40px,5.8vw,74px);line-height:1;max-width:18ch}
.home h1{font-size:clamp(34px,4.6vw,58px);max-width:20ch}
.hero .sub{font-size:clamp(16px,1.6vw,19px);max-width:52ch;color:rgba(255,255,255,.88)}
.hero .place{font-size:14px;font-weight:500;color:rgba(255,255,255,.82)}
.hero .back{position:absolute;z-index:2;top:22px;left:clamp(16px,4vw,40px);color:#fff;text-decoration:none;font-size:14px;font-weight:500;background:rgba(10,16,13,.45);padding:7px 14px 7px 10px;border-radius:999px;display:inline-flex;gap:6px;align-items:center;backdrop-filter:blur(6px)}
.vcr{display:block;font-size:12px;color:var(--muted);margin-top:2px}.hero .caption .credit{display:block;margin-top:2px;font-size:11px}.hero .caption a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.credits td,.credits th{padding:6px 10px 6px 0;text-align:left;border-bottom:1px solid var(--rule);font-size:14px;vertical-align:top}.credits{border-collapse:collapse;width:100%;margin-bottom:24px;table-layout:fixed}.credits td:first-child{width:55%}
.hero .caption{position:absolute;right:clamp(16px,4vw,40px);bottom:16px;font-size:12px;color:rgba(255,255,255,.75);max-width:40ch;text-align:right}
@media (max-width:640px){.hero .wrap{padding-bottom:72px}.hero .caption{left:16px;right:16px;bottom:12px;text-align:left;max-width:none}}
.home .wrap{min-height:clamp(330px,48vh,470px)}
.search{display:flex;align-items:center;gap:10px;background:#fff;color:#17211c;border-radius:10px;padding:0 16px;max-width:520px;margin-top:4px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
.search svg{flex:none;color:#58645d}
.search input{border:0;outline:none;background:transparent;padding:15px 0;width:100%;color:#17211c}
.search input::placeholder{color:#7a857e}

.save{position:absolute;z-index:2;top:22px;right:clamp(16px,4vw,40px);display:inline-flex;align-items:center;gap:8px;border:0;cursor:pointer;background:rgba(10,16,13,.45);color:#fff;padding:7px 14px 7px 11px;border-radius:999px;font-size:14px;font-weight:500;backdrop-filter:blur(6px)}
.save[aria-pressed="true"] svg{fill:#f1c35b;stroke:#f1c35b}

/* Index */
.bar{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-block:24px 16px;border-bottom:1px solid var(--rule)}
.filters{display:flex;gap:6px 22px;flex-wrap:wrap}
.filters button{background:none;border:0;padding:6px 0;cursor:pointer;color:var(--muted);font-size:15px;font-weight:500;border-bottom:2px solid transparent}
.filters button:hover{color:var(--ink)}
.filters button[aria-pressed="true"]{color:var(--ink);border-bottom-color:var(--spruce)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:44px 32px;padding-block:24px 72px}
.park{display:flex;flex-direction:column;gap:12px;text-decoration:none;color:inherit;min-width:0}
.park .pic{position:relative;aspect-ratio:4/3;max-width:100%;border-radius:6px;overflow:hidden;background:var(--rule)}
.park .pic img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.park:hover .pic img{transform:scale(1.03)}
.park .pic .save{top:12px;right:12px;padding:8px;font-size:0;gap:0}
.park h3{font-size:30px;line-height:1.05}
.park:hover h3{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
.park .where{font-size:14px;color:var(--muted)}
.park .line{font-size:15px;color:var(--ink);opacity:.85}
.facts-inline{display:flex;flex-wrap:wrap;gap:4px 0;font-size:13.5px;color:var(--muted);margin-top:2px}
.facts-inline span+span::before{content:"";display:inline-block;width:1px;height:12px;background:var(--rule);margin:0 12px;vertical-align:-1px}
.facts-inline .hot{color:var(--alert);font-weight:600}
.empty{grid-column:1/-1;padding:56px 0;max-width:46ch}
.empty h3{font-size:30px;margin-bottom:8px}

/* Park page */
.thumbs{display:flex;gap:10px;overflow-x:auto;padding-block:14px 4px}
.thumbs button{flex:none;width:112px;aspect-ratio:4/3;border:0;padding:0;border-radius:4px;overflow:hidden;cursor:pointer;opacity:.6;outline-offset:2px;background:var(--rule)}
.thumbs button[aria-pressed="true"]{opacity:1;box-shadow:0 0 0 2px var(--spruce)}
.thumbs img{width:100%;height:100%;object-fit:cover;display:block}
.keyfacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--rule);margin-top:20px}
.keyfacts div{padding:18px 20px 20px 0;min-width:0}
.keyfacts div+div{padding-left:20px;border-left:1px solid var(--rule)}
.keyfacts dt{font-size:13px;color:var(--muted);margin-bottom:4px}
.keyfacts dd{margin:0;font-size:17px;font-weight:600;line-height:1.35}
.keyfacts .hot{color:var(--alert)}
@media (max-width:760px){.keyfacts{grid-template-columns:repeat(2,minmax(0,1fr))}.keyfacts div:nth-child(3){padding-left:0;border-left:0}.keyfacts div:nth-child(n+3){border-top:1px solid var(--rule)}}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:64px;padding-block:44px 80px;align-items:start}
@media (max-width:960px){.layout{grid-template-columns:minmax(0,1fr);gap:40px}}
.article{display:flex;flex-direction:column;gap:52px;min-width:0}
.article section{display:flex;flex-direction:column;gap:16px}
.article h2{font-size:clamp(28px,3vw,36px);line-height:1.1}
.lead p{font-size:18px;line-height:1.7;max-width:66ch}
.lead p:first-of-type{font-size:21px;line-height:1.6}
.plan{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 36px;margin:0}
@media (max-width:620px){.plan{grid-template-columns:minmax(0,1fr)}}
.plan dt{font-weight:600;font-size:15px;margin-bottom:4px}
.plan dd{margin:0;color:var(--muted);font-size:15.5px}
.route{list-style:none;margin:0;padding:0}
.route li{position:relative;padding:0 0 22px 48px;font-size:16.5px}
.route li .t{display:block;font-size:13px;color:var(--muted);margin-bottom:2px}
.route li::before{content:counter(list-item);position:absolute;left:0;top:0;width:30px;height:30px;border-radius:50%;border:1.5px solid var(--spruce);color:var(--spruce);display:grid;place-items:center;font:400 18px/1 var(--serif);background:var(--paper)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .route li::before{color:var(--link);border-color:var(--link)}}
:root[data-theme="dark"] .route li::before{color:var(--link);border-color:var(--link)}
.route li:not(:last-child)::after{content:"";position:absolute;left:15px;top:34px;bottom:4px;width:1px;background:var(--rule)}
.sights{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
.sights li{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:8px 28px;padding:16px 0;border-bottom:1px solid var(--rule)}
.sights b{font:500 21px/1.2 var(--serif)}
.sights span{color:var(--muted);font-size:15.5px}
@media (max-width:620px){.sights li{grid-template-columns:minmax(0,1fr)}}
.rules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
@media (max-width:620px){.rules{grid-template-columns:minmax(0,1fr)}}
.rules h3{font:600 15px/1.3 var(--sans);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.rules ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.rules li{padding-left:22px;position:relative;font-size:15.5px}
.rules .do li::before{content:"";position:absolute;left:2px;top:.55em;width:9px;height:5px;border-left:2px solid var(--link);border-bottom:2px solid var(--link);transform:rotate(-45deg)}
.rules .dont li::before,.rules .dont li::after{content:"";position:absolute;left:2px;top:.75em;width:11px;height:2px;background:var(--alert);transform:rotate(45deg)}
.rules .dont li::after{transform:rotate(-45deg)}
.tip{font:italic 400 clamp(21px,2.2vw,26px)/1.4 var(--serif);border-left:2px solid var(--spruce);padding:4px 0 4px 24px;max-width:36ch}
.tip small{display:block;font:500 14px/1.4 var(--sans);font-style:normal;color:var(--muted);margin-top:10px}
.videos{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start}
.vid{margin:0;width:min(100%,280px);display:flex;flex-direction:column;gap:8px}
.vid.wide{width:min(100%,560px)}
.vid video{width:100%;aspect-ratio:9/16;border-radius:6px;background:#000;display:block;object-fit:cover}
.vid.wide video{aspect-ratio:16/9}
.vid figcaption{font-size:14px;color:var(--muted)}
.vid figcaption b{color:var(--ink);font-weight:600}

.aside{position:sticky;top:calc(env(safe-area-inset-top,0px) + 88px);background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:26px;display:flex;flex-direction:column;gap:22px}
@media (max-width:960px){.aside{position:static}}
.aside h2{font-size:26px}
.aside h3{font:600 14px/1.3 var(--sans);color:var(--muted);margin-bottom:8px}
.fees{width:100%;border-collapse:collapse;font-size:15px}
.fees td{padding:9px 0;border-bottom:1px solid var(--rule);vertical-align:top}
.fees tr:last-child td{border-bottom:0}
.fees td:last-child{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:14px}
.notice{font-size:14.5px;padding:12px 14px;border-radius:6px;background:var(--ochre-bg);color:var(--ink);line-height:1.5}
.notice.hot{background:var(--alert-bg)}
.notice b{font-weight:600}
.camp{margin:0;display:flex;flex-direction:column;gap:10px;font-size:14.5px}
.camp dt{font-weight:600}
.camp dd{margin:0;color:var(--muted)}
.actions{display:flex;flex-direction:column;gap:8px}
.btn{display:flex;justify-content:center;align-items:center;gap:8px;padding:12px 16px;border-radius:6px;text-decoration:none;font-weight:600;font-size:15px;background:var(--spruce);color:var(--spruce-ink);border:1px solid var(--spruce)}
.btn:hover{filter:brightness(1.08)}
.btn.line{background:transparent;color:var(--ink);border-color:var(--rule)}
.btn.line:hover{border-color:var(--muted)}
.small{font-size:13.5px;color:var(--muted)}

/* Plain pages */
.pagehead{padding-block:56px 32px;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:14px}
.pagehead h1{font-size:clamp(40px,5.6vw,68px);line-height:1.02}
.pagehead p{font-size:18px;max-width:62ch;color:var(--muted)}
.passlist{list-style:none;margin:0;padding:0}
.passlist li{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr) auto;gap:6px 32px;align-items:baseline;padding:22px 0;border-bottom:1px solid var(--rule)}
.passlist .nm{font:400 24px/1.15 var(--serif)}
.passlist .who{font-weight:600;font-size:15px}
.passlist .what{color:var(--muted);font-size:15px;margin-top:2px}
.passlist .pr{font:400 30px/1 var(--serif);font-variant-numeric:tabular-nums;text-align:right}
@media (max-width:720px){.passlist li{grid-template-columns:minmax(0,1fr) auto}.passlist .desc{grid-column:1/-1;order:3}}
.section{padding-block:56px}
.section>h2{font-size:clamp(30px,3.4vw,40px);margin-bottom:8px}
.section>p{color:var(--muted);max-width:60ch;margin-bottom:28px}
.planner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:40px;align-items:start}
@media (max-width:900px){.planner{grid-template-columns:minmax(0,1fr)}}
.q{border:0;margin:0 0 26px;padding:0}
.q legend{font-weight:600;margin-bottom:10px;padding:0}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{position:relative}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt span{display:inline-block;padding:9px 14px;border:1px solid var(--rule);border-radius:6px;background:var(--surface);cursor:pointer;font-size:14.5px;user-select:none}
.opt input:checked+span{border-color:var(--spruce);box-shadow:inset 0 0 0 1px var(--spruce);font-weight:600}
.opt input:focus-visible+span{outline:2px solid var(--link);outline-offset:2px}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--rule);border-radius:6px;background:var(--surface)}
.stepper button{border:0;background:none;width:40px;height:40px;cursor:pointer;font-size:20px;color:var(--ink)}
.stepper output{min-width:34px;text-align:center;font-weight:600}
.result{background:var(--spruce);color:var(--spruce-ink);border-radius:8px;padding:28px;display:flex;flex-direction:column;gap:14px;position:sticky;top:calc(env(safe-area-inset-top,0px) + 88px)}
@media (max-width:900px){.result{position:static}}
.result .k{font-size:14px;opacity:.8}
.result .big{font:400 36px/1.05 var(--serif)}
.result table{width:100%;border-collapse:collapse;font-size:15px}
.result td{padding:8px 0;border-bottom:1px solid rgba(255,255,255,.18)}
.result td:last-child{text-align:right;font-variant-numeric:tabular-nums}
.result tr.tot td{font-weight:700;border-bottom:0}
.result p{font-size:15px;opacity:.92}
.result .fine{font-size:13px;opacity:.7}
.days{list-style:none;margin:0;padding:0}
.days li{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:20px;align-items:center;padding:20px 0;border-bottom:1px solid var(--rule)}
.days .d{font:400 38px/1 var(--serif);font-variant-numeric:tabular-nums}
.days .d small{font:500 14px/1 var(--sans);color:var(--muted);margin-left:6px}
.days .n{font-size:17px;font-weight:600}
.days .w{color:var(--muted);font-size:14.5px}
.days .s{font-size:13.5px;color:var(--muted)}
.days li.past{opacity:.45}
.days li.next .s{color:var(--spruce);font-weight:700}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .days li.next .s{color:var(--link)}}
:root[data-theme="dark"] .days li.next .s{color:var(--link)}
@media (max-width:560px){.days li{grid-template-columns:84px minmax(0,1fr)}.days .s{grid-column:2}}

/* Maps */
.mapbox{position:relative;border:1px solid var(--rule);border-radius:8px;overflow:hidden;background:var(--sea);touch-action:none}
.mapbox>svg{display:block;width:100%;height:auto;cursor:grab;user-select:none;-webkit-user-select:none}
.mapbox>svg.grabbing{cursor:grabbing}
.mapbox.us{margin-top:28px}
.sea{fill:var(--sea)}
.states path{fill:var(--land);stroke:var(--land-b);stroke-width:1.2;vector-effect:non-scaling-stroke}
.states path:hover{fill:var(--state)}
.glakes path{fill:var(--water);stroke:none}
.inset-box{fill:var(--sea);stroke:var(--land-b);stroke-width:1;vector-effect:non-scaling-stroke}
.inset-land{fill:var(--land);stroke:var(--land-b);stroke-width:1;vector-effect:non-scaling-stroke}
.inset-lbl{font-size:11px;fill:var(--muted);font-weight:600}
.stlabels text{font:600 11px var(--sans);fill:var(--muted);text-anchor:middle;letter-spacing:.04em;pointer-events:none;opacity:.8}
.mk{cursor:pointer;outline:none}
.mk .disc{fill:var(--spruce);stroke:#fff;stroke-width:2.2}
.mk .glyph{color:#fff;pointer-events:none}
.mk .mklabel{font:600 13px var(--sans);fill:var(--ink);paint-order:stroke;stroke:var(--land);stroke-width:4px;stroke-linejoin:round}
.mk:hover .disc,.mk:focus-visible .disc{fill:var(--ochre);stroke-width:3}
@media (max-width:640px){.mk .mklabel{display:none}.stlabels{display:none}}
.zoom{position:absolute;bottom:12px;right:12px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--rule);border-radius:6px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.zoom button{width:36px;height:36px;border:0;background:none;cursor:pointer;font-size:20px;line-height:1;color:var(--ink);display:grid;place-items:center}
.zoom button+button{border-top:1px solid var(--rule)}
.zoom button:hover{background:var(--paper)}
.tip-card{position:absolute;z-index:3;width:250px;background:var(--surface);border:1px solid var(--rule);border-radius:8px;box-shadow:0 10px 28px rgba(0,0,0,.18);overflow:hidden;pointer-events:none;display:flex;flex-direction:column}
.tip-card img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.tip-card div{padding:10px 12px;display:flex;flex-direction:column;gap:2px;font-size:13px;color:var(--muted)}
.tip-card b{font:500 20px/1.15 var(--serif);color:var(--ink)}
.maplist{list-style:none;margin:28px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 28px}
.maplist li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--rule)}
.maplist a{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-weight:600;min-width:0}
.maplist a:hover span:last-child{text-decoration:underline}
.mini{flex:none;width:28px;height:28px;border-radius:50%;background:var(--spruce);color:#fff;display:grid;place-items:center}
.maplist .small{text-align:right}
/* Local map */
.mapbox.local{aspect-ratio:3/2}
.mapbox.local>svg{height:100%}
.land{fill:var(--land)}
.pk-mine{fill:var(--pk);stroke:var(--pk-line);stroke-width:2;vector-effect:non-scaling-stroke}
.pk-other{fill:var(--pk-o);stroke:var(--pk-line);stroke-width:1;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;opacity:.9}
.lake{fill:var(--water);stroke:var(--river);stroke-width:.6;vector-effect:non-scaling-stroke}
.river{fill:none;stroke:var(--river);stroke-width:1.3;vector-effect:non-scaling-stroke}
.stline{fill:none;stroke:var(--st-line);stroke-width:1.4;stroke-dasharray:7 4 2 4;vector-effect:non-scaling-stroke}
.road{fill:none;stroke:var(--road);stroke-width:1.5;vector-effect:non-scaling-stroke}
.hwy{fill:none;stroke:var(--hwy);stroke-width:2.6;vector-effect:non-scaling-stroke}
.pk-label{font:italic 500 17px var(--serif);fill:var(--pk-line);text-anchor:middle;paint-order:stroke;stroke:var(--land);stroke-width:4px;stroke-linejoin:round;pointer-events:none}
.town circle{fill:var(--halo);stroke:var(--town);stroke-width:1.6}
.town.big circle{fill:var(--town)}
.town text{font:500 14px var(--sans);fill:var(--town);paint-order:stroke;stroke:var(--land);stroke-width:4px;stroke-linejoin:round}
.town.big text{font-weight:700;font-size:15px}
.parkpin .halo{fill:var(--halo);opacity:.85}
.parkpin .disc{fill:var(--spruce);stroke:#fff;stroke-width:2.4}
.parkpin .glyph{color:#fff}
.pinlabel{font:500 24px var(--serif);fill:var(--ink);paint-order:stroke;stroke:var(--land);stroke-width:5px;stroke-linejoin:round}
.scalebar{position:absolute;left:12px;bottom:12px;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--ink);background:color-mix(in srgb,var(--surface) 85%,transparent);padding:4px 8px;border-radius:4px}
.scalebar span{display:block;height:6px;border:2px solid var(--ink);border-top:0}
.scalebar em{font-style:normal}
.north{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;align-items:center;font:700 12px var(--sans);color:var(--ink);background:color-mix(in srgb,var(--surface) 85%,transparent);padding:4px 7px;border-radius:4px;gap:1px}
.legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 20px;font-size:13.5px;color:var(--muted)}
.legend li{display:flex;align-items:center;gap:8px}
.legend i{display:inline-block;width:22px;height:12px}
.lg-park{background:var(--pk);border:2px solid var(--pk-line)}
.lg-other{background:var(--pk-o);border:1px dashed var(--pk-line)}
.lg-hwy{height:3px!important;background:var(--hwy)}
.lg-road{height:2px!important;background:var(--road)}
.lg-water{background:var(--water);border-bottom:2px solid var(--river)}
.lg-town{width:10px!important;height:10px!important;border-radius:50%;border:1.6px solid var(--town);background:var(--halo)}
/* Weather */
.weather{padding-block:24px 4px;display:flex;flex-direction:column;gap:12px}
.wx-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px 24px;flex-wrap:wrap}
.wx-head h2{font-size:clamp(26px,2.6vw,32px)}
.wx-body{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:28px;align-items:stretch}
@media (max-width:900px){.wx-body{grid-template-columns:minmax(0,1fr)}}
.wx-now{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:center;background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:12px 16px}
.wx-temp{font:400 40px/1 var(--serif)}
.wx-temp small{font:500 15px var(--sans);color:var(--muted);margin-left:2px;vertical-align:top}
.wx-desc{font-weight:600;margin-top:2px;font-size:14.5px}
.wx-meta{grid-column:1/-1;display:flex;gap:18px;margin:6px 0 0;padding-top:8px;border-top:1px solid var(--rule);font-size:14px}
.wx-meta dt{font-size:12.5px;color:var(--muted)}
.wx-meta dd{margin:0;font-weight:600}
.wx-days{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(10,minmax(64px,1fr));gap:0;overflow-x:auto;border:1px solid var(--rule);border-radius:8px;background:var(--surface)}
.wx-days li{display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 4px;text-align:center}
.wx-days li+li{border-left:1px solid var(--rule)}
.wd{font-weight:600;font-size:13.5px}
.wdate{font-size:11.5px;color:var(--muted)}
.wx-days .wxi{margin:3px 0 2px}
.hi{font-weight:700}
.wlo{color:var(--muted);font-size:14px}
.pp{font-size:11.5px;color:var(--link);min-height:14px;font-weight:600}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.wxi{color:var(--muted)}
.wx-sun,.wx-partly{color:#d39a1c}
.wx-rain,.wx-storm{color:#3f7fae}
.wx-snow{color:#6d9cc4}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .wx-rain,:root:not([data-theme="light"]) .wx-storm{color:#79b2dc}:root:not([data-theme="light"]) .wx-sun,:root:not([data-theme="light"]) .wx-partly{color:#f0bf52}}
:root[data-theme="dark"] .wx-rain,:root[data-theme="dark"] .wx-storm{color:#79b2dc}
:root[data-theme="dark"] .wx-sun,:root[data-theme="dark"] .wx-partly{color:#f0bf52}
/* Directory */
.directory{padding-block:40px 72px;border-top:1px solid var(--rule)}
.directory h2{font:600 20px/1.3 var(--sans);letter-spacing:0;margin-bottom:14px}
.directory h2:not(:first-child){margin-top:36px}
.directory a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
.directory a:visited{color:var(--blue-v)}
.directory a:hover{text-decoration-thickness:2px}
.dir-names{columns:3 220px;column-gap:40px;margin:0;padding:0;list-style:none}
.dir-names li{padding:4px 0;break-inside:avoid}
.dir-states{margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px 40px}
.dir-states dt{font-weight:600;margin-bottom:4px}
.dir-states dd{margin:0;padding:2px 0}

/* Plan and book */
.book{display:flex;flex-direction:column;gap:18px}
.aff-note{font-size:13.5px;color:var(--muted);max-width:70ch}
.book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
@media (max-width:640px){.book-grid{grid-template-columns:minmax(0,1fr)}}
.book-card{background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:20px}
.book h3{font:600 16px/1.3 var(--sans);margin-bottom:10px}
.book-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.book-links li{display:flex;flex-direction:column;gap:1px;padding:10px 0;border-top:1px solid var(--rule)}
.book-links li:first-child{border-top:0;padding-top:2px}
.book-links a{font-weight:600;font-size:15.5px;text-decoration:none}
.book-links a:hover{text-decoration:underline}
.book-links span:not(.ext):not(.sr){font-size:13.5px;color:var(--muted)}
.note-li{font-size:14px;color:var(--muted)}
.ext{font-size:.85em;margin-left:4px;opacity:.7}
.gear ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
.gear li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid var(--rule)}
.gear li>div:first-child{display:flex;flex-direction:column;min-width:0}
.gear b{font-weight:600}
.gear li span{font-size:14px;color:var(--muted)}
.shop-links{display:flex;gap:8px;flex:none}
.chip{display:inline-flex;align-items:center;font-size:13.5px;font-weight:600;text-decoration:none;color:var(--ink)!important;border:1px solid var(--rule);background:var(--surface);border-radius:999px;padding:6px 12px}
.chip:hover{border-color:var(--muted)}
@media (max-width:520px){.gear li{flex-direction:column;align-items:flex-start}}
.sponsors{background:var(--ochre-bg);border-radius:8px;padding:18px 20px}
.sponsors ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sponsors li{display:flex;flex-direction:column}
.tagsp{font:600 11px var(--sans);background:var(--surface);border:1px solid var(--rule);border-radius:4px;padding:2px 6px;margin-left:6px;vertical-align:2px;color:var(--muted)}
.ad-slot{min-height:250px;border:1px dashed var(--rule);border-radius:8px}
/* Info pages */
.prose{max-width:68ch;padding-block:32px 72px;display:flex;flex-direction:column;gap:16px;font-size:16.5px}
.prose h2{font-size:28px;margin-top:16px}
.prose ul{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px}
.copyable{font-weight:600;user-select:all}
.callout-draft{background:var(--ochre-bg);border-radius:6px;padding:12px 16px;font-size:14.5px}
.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:18px;margin:8px 0 12px;max-width:none}
.shop-grid figure{margin:0;display:flex;flex-direction:column;gap:8px}
.shop-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;display:block}
.shop-grid figcaption{display:flex;flex-direction:column;font-size:14px;color:var(--muted)}
.shop-grid b{font:500 20px/1.2 var(--serif);color:var(--ink)}
.shop-grid em{font-style:normal;font-weight:600;color:var(--ochre);margin-top:4px}
.newsletter{background:var(--spruce);color:#fff;padding-block:36px}
.newsletter .wrap{display:flex;justify-content:space-between;align-items:center;gap:20px 40px;flex-wrap:wrap}
.newsletter h2{font-size:30px}
.newsletter p{opacity:.85}
.nl-form{display:flex;gap:8px;flex:1 1 320px;max-width:460px}
.nl-form input{flex:1;min-width:0;padding:12px 14px;border-radius:6px;border:0;color:#17211c}
.nl-form button{padding:12px 18px;border-radius:6px;border:0;background:var(--mast-accent);color:#17211c;font-weight:700;cursor:pointer}
.footnav{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px 22px;padding-top:4px}
.footnav a{color:var(--ink);text-decoration:none;font-weight:500}
.footnav a:hover{text-decoration:underline}
footer{border-top:1px solid var(--rule);padding-block:28px 40px;font-size:13.5px;color:var(--muted)}
footer .wrap{display:flex;justify-content:space-between;gap:12px 32px;flex-wrap:wrap}
footer .copy{flex-basis:100%;padding-top:14px;margin-top:4px;border-top:1px solid var(--rule);color:var(--ink);font-size:13px}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
