.nsf-directory { color: #17211b; }
.nsf-directory__header { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 26px; }
.nsf-directory__header h2 { margin-bottom: 8px; }
.nsf-directory__header p:last-child { margin: 0; color: #607067; }
.nsf-kicker { margin: 0 0 9px; color: #156b45; font-size: 12px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.nsf-view-toggle { display: inline-flex; padding: 4px; border: 1px solid #d7e2da; border-radius: 11px; background: #f3f7f4; }
.nsf-view-toggle button { min-width: 70px; padding: 7px 12px; border: 0; border-radius: 8px; color: #526158; background: transparent; font-weight: 700; }
.nsf-view-toggle button.is-active { color: #17211b; background: #fff; box-shadow: 0 2px 7px rgba(25,60,41,.10); }
.nsf-search-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px; }
.nsf-search { display: flex; min-height: 50px; align-items: center; gap: 8px; padding: 0 14px; border: 1px solid #ccd8d0; border-radius: 12px; background: #fff; }
.nsf-search:focus-within { border-color: #1463e2; box-shadow: 0 0 0 3px rgba(20,99,226,.12); }
.nsf-search input { width: 100%; border: 0; outline: 0; background: transparent; }
.nsf-location-button, .nsf-filter-toggle { min-height: 50px; padding: 0 17px; border: 1px solid #ccd8d0; border-radius: 12px; color: #17211b; background: #fff; font-weight: 750; }
.nsf-location-button { color: #fff; background: #1463e2; border-color: #1463e2; }
.nsf-location-button:hover { background: #0b4ebd; }
.nsf-filter-count:not(:empty) { display: inline-grid; width: 20px; height: 20px; margin-left: 5px; place-items: center; border-radius: 50%; color: #fff; background: #156b45; font-size: 11px; }
.nsf-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; margin-top: 13px; padding: 15px; border: 1px solid #dce6df; border-radius: 13px; background: #f7faf8; }
.nsf-filters label:not(.nsf-check) { min-width: 170px; }
.nsf-filters label > span:first-child { display: block; margin-bottom: 4px; color: #607067; font-size: 11px; font-weight: 750; text-transform: uppercase; }
.nsf-filters select { width: 100%; min-height: 42px; padding: 7px 32px 7px 10px; border: 1px solid #ccd8d0; border-radius: 9px; background: #fff; }
.nsf-check { display: flex; min-height: 42px; align-items: center; gap: 8px; padding: 8px 11px; border: 1px solid #ccd8d0; border-radius: 9px; background: #fff; font-size: 13px; }
.nsf-check input { width: 17px; height: 17px; accent-color: #156b45; }
.nsf-clear { min-height: 42px; border: 0; color: #1463e2; background: transparent; font-weight: 700; }
.nsf-status { display: flex; justify-content: space-between; gap: 15px; margin: 21px 0 12px; color: #607067; font-size: 13px; }
.nsf-status strong { color: #17211b; }
.nsf-layout { display: grid; grid-template-columns: minmax(0, .92fr) minmax(380px, 1.08fr); align-items: start; gap: 22px; }
.nsf-results { display: grid; gap: 12px; max-height: 720px; padding-right: 4px; overflow: auto; scrollbar-color: #aebdb3 transparent; }
.nsf-card { padding: 18px; border: 1px solid #dce6df; border-radius: 14px; background: #fff; box-shadow: 0 5px 18px rgba(26,62,39,.05); }
.nsf-card:hover { border-color: #b6cabe; box-shadow: 0 9px 26px rgba(26,62,39,.09); }
.nsf-card[hidden] { display: none !important; }
.nsf-card__top { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.nsf-card__location { margin: 0 0 3px; color: #156b45; font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.nsf-card h3 { margin: 0; font-size: 1.15rem; }
.nsf-card h3 a { color: #17211b; text-decoration: none; }
.nsf-card h3 a:hover { color: #1463e2; }
.nsf-card__address { margin: 9px 0; color: #607067; font-size: 13px; }
.nsf-distance { flex: 0 0 auto; padding: 4px 8px; border-radius: 7px; color: #0d5033; background: #e2f2e7; font-size: 11px; font-weight: 800; }
.nsf-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.nsf-tags span { padding: 5px 8px; border: 1px solid #dce6df; border-radius: 7px; color: #3f4f45; background: #f7faf8; font-size: 11px; }
.nsf-access-state { margin: 11px 0; color: #745600; font-size: 12px; }
.nsf-card__actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 11px; border-top: 1px solid #edf1ee; }
.nsf-card__actions a { font-size: 13px; font-weight: 750; text-decoration: none; }
.nsf-card__details { color: #1463e2; }
.nsf-map-panel { position: sticky; top: 94px; min-height: 620px; overflow: hidden; border: 1px solid #dce6df; border-radius: 16px; background: #e8efea; }
.nsf-map { width: 100%; height: 620px; background: #e8efea; }
.nsf-map-consent { position: absolute; z-index: 400; inset: 0; display: grid; place-content: center; padding: 40px; text-align: center; background: linear-gradient(135deg, rgba(240,247,242,.97), rgba(226,239,230,.97)); }
.nsf-map-consent[hidden], .nsf-map-fallback[hidden] { display: none !important; }
.nsf-map-consent h3, .nsf-map-consent h2 { margin-bottom: 8px; }
.nsf-map-consent p { max-width: 440px; color: #536259; }
.nsf-map-consent .button { width: auto; justify-self: center; }
.nsf-map-fallback { margin: 20px; padding: 14px; border: 1px solid #e1c66d; border-radius: 9px; background: #fff7dc; }
.nsf-empty { padding: 35px 18px; border: 1px dashed #bac8be; border-radius: 13px; text-align: center; background: #f8faf8; }
.nsf-empty h3 { margin-bottom: 6px; }
.nsf-empty p { margin: 0; color: #607067; }
.nsf-directory__notice { margin: 22px 0 0; padding: 13px 16px; border-left: 4px solid #d39b12; border-radius: 7px; background: #fff8e2; color: #5f4b14; font-size: 13px; }
.nsf-source-line { margin-top: 12px; color: #748078; font-size: 11px; }

.nsf-park-hero { padding: clamp(25px, 5vw, 54px); border: 1px solid #dce6df; border-radius: 20px; background: radial-gradient(circle at 100% 0, #d9eee1, transparent 36%), #fff; box-shadow: 0 10px 32px rgba(31,65,44,.06); }
.nsf-park-hero h1 { max-width: 900px; font-size: clamp(2.15rem, 6vw, 4.1rem); }
.nsf-park-hero > p:not(.nsf-kicker) { max-width: 780px; color: #536259; font-size: 1.08rem; }
.nsf-park-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 25px; }
.nsf-park-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; align-items: start; gap: 22px; margin-top: 24px; }
.nsf-park-main { display: grid; gap: 22px; }
.nsf-park-aside { display: grid; gap: 16px; }
.nsf-panel { padding: clamp(20px, 4vw, 30px); border: 1px solid #dce6df; border-radius: 16px; background: #fff; box-shadow: 0 6px 22px rgba(31,65,44,.05); }
.nsf-panel h2 { font-size: 1.4rem; }
.nsf-facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; overflow: hidden; margin: 20px 0 0; border: 1px solid #dce6df; border-radius: 11px; background: #dce6df; }
.nsf-facts div { padding: 13px; background: #fff; }
.nsf-facts dt, .nsf-facility dt { color: #69776e; font-size: 11px; font-weight: 750; text-transform: uppercase; }
.nsf-facts dd, .nsf-facility dd { margin: 2px 0 0; color: #17211b; font-weight: 650; }
.nsf-editorial { margin-top: 24px; }
.nsf-facilities { display: grid; gap: 12px; margin-top: 18px; }
.nsf-facility { padding: 17px; border: 1px solid #dce6df; border-radius: 12px; background: #f9fbfa; }
.nsf-facility__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.nsf-facility__head h3 { margin: 0; }
.nsf-status-badge { padding: 4px 7px; border-radius: 7px; color: #0d5033; background: #dff0e5; font-size: 10px; font-weight: 800; }
.nsf-facility dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px 20px; margin: 16px 0 0; }
.nsf-facility dl div { min-width: 0; }
.nsf-facility__note { margin: 14px 0 0; padding: 10px; border-left: 3px solid #156b45; background: #edf7f0; font-size: 13px; }
.nsf-access-panel { border-left: 4px solid #d39b12; background: #fffdf6; }
.nsf-nearby { margin-bottom: 0; padding-left: 20px; }
.nsf-nearby li + li { margin-top: 7px; }
.nsf-map-panel--single { position: sticky; top: 94px; min-height: 340px; padding: 0; }
.nsf-map-panel--single .nsf-map { height: 340px; }
.nsf-map-panel--single .nsf-map-consent { padding: 22px; }
.nsf-source-card p { margin: 0 0 12px; }
.nsf-source-card span, .nsf-source-card strong { display: block; }
.nsf-source-card span { color: #68766d; font-size: 11px; text-transform: uppercase; }
.nsf-page-disclaimer { margin-top: 22px; color: #65736a; font-size: 12px; text-align: center; }
.leaflet-control-attribution { font-size: 10px; }

@media (min-width: 901px) {
  .nsf-directory:not(.is-map-view) .nsf-map-panel { display: block !important; }
}
@media (max-width: 900px) {
  .nsf-layout, .nsf-park-grid { grid-template-columns: 1fr; }
  .nsf-results { max-height: none; overflow: visible; }
  .nsf-map-panel { position: relative; top: auto; min-height: 520px; }
  .nsf-map { height: 520px; }
  .nsf-directory.is-map-view .nsf-results { display: none; }
  .nsf-directory:not(.is-map-view) .nsf-map-panel { display: none; }
  .nsf-park-aside { grid-template-columns: repeat(2, 1fr); }
  .nsf-map-panel--single { grid-column: 1 / -1; }
}
@media (max-width: 680px) {
  .nsf-directory__header { align-items: start; }
  .nsf-directory__header > div:first-child { max-width: 70%; }
  .nsf-search-row { grid-template-columns: 1fr 1fr; }
  .nsf-search { grid-column: 1 / -1; }
  .nsf-location-button, .nsf-filter-toggle { padding-inline: 10px; font-size: 13px; }
  .nsf-filters { display: none; }
  .nsf-filters.is-open { display: flex; }
  .nsf-filters label:not(.nsf-check) { width: 100%; }
  .nsf-check { flex: 1 1 calc(50% - 8px); }
  .nsf-status { display: block; }
  .nsf-status span { display: block; margin-top: 3px; }
  .nsf-card__actions { align-items: stretch; }
  .nsf-facts, .nsf-facility dl, .nsf-park-aside { grid-template-columns: 1fr; }
  .nsf-park-actions { display: grid; }
  .nsf-park-actions .button { width: 100%; }
  .nsf-map-panel, .nsf-map { min-height: 440px; height: 440px; }
}
@media (prefers-reduced-motion: reduce) {
  .nsf-card, .nsf-location-button { transition: none; }
}
