{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Ontario dark-sky observing sites",
  "description": "Curated list of dark-sky stargazing sites across Ontario, Canada. Each entry has a live forecast endpoint and a static text brief suitable for LLM ingestion.",
  "numberOfItems": 118,
  "attribution": {
    "app": "Clear Night Planner — Ontario Night Sky",
    "url": "https://ontarionightsky.com",
    "license": "Free to cite with link back to the app."
  },
  "sites": [
    {
      "id": "torrance-barrens",
      "name": "Torrance Barrens Dark-Sky Preserve",
      "shortName": "Torrance Barrens",
      "region": "Muskoka, ON",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 44.9333,
        "longitude": -79.4333
      },
      "summary": "Ontario's first permanent dark-sky preserve. Easy 2.5h drive from Toronto.",
      "links": {
        "app": "https://ontarionightsky.com/?site=torrance-barrens",
        "json": "https://ontarionightsky.com/sites/torrance-barrens.json",
        "text": "https://ontarionightsky.com/sites/torrance-barrens.txt"
      }
    },
    {
      "id": "killarney",
      "name": "Killarney Provincial Park",
      "shortName": "Killarney",
      "region": "Georgian Bay, ON",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 46.0167,
        "longitude": -81.4
      },
      "summary": "Designated dark-sky preserve on the La Cloche range. Excellent transparency.",
      "links": {
        "app": "https://ontarionightsky.com/?site=killarney",
        "json": "https://ontarionightsky.com/sites/killarney.json",
        "text": "https://ontarionightsky.com/sites/killarney.txt"
      }
    },
    {
      "id": "lake-superior",
      "name": "Lake Superior Provincial Park",
      "shortName": "Lake Superior",
      "region": "Algoma, ON",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 47.7167,
        "longitude": -84.85
      },
      "summary": "Remote north-shore wilderness. Among the darkest skies in Ontario.",
      "links": {
        "app": "https://ontarionightsky.com/?site=lake-superior",
        "json": "https://ontarionightsky.com/sites/lake-superior.json",
        "text": "https://ontarionightsky.com/sites/lake-superior.txt"
      }
    },
    {
      "id": "algonquin",
      "name": "Algonquin Provincial Park",
      "shortName": "Algonquin",
      "region": "Nipissing, ON",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.5833,
        "longitude": -78.35
      },
      "summary": "Vast interior wilderness with widely accessible dark skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=algonquin",
        "json": "https://ontarionightsky.com/sites/algonquin.json",
        "text": "https://ontarionightsky.com/sites/algonquin.txt"
      }
    },
    {
      "id": "north-frontenac",
      "name": "North Frontenac Dark Sky Preserve",
      "shortName": "North Frontenac",
      "region": "Frontenac, ON",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 44.9333,
        "longitude": -76.9167
      },
      "summary": "Municipally-protected dark-sky site with a public observing pad near Plevna.",
      "links": {
        "app": "https://ontarionightsky.com/?site=north-frontenac",
        "json": "https://ontarionightsky.com/sites/north-frontenac.json",
        "text": "https://ontarionightsky.com/sites/north-frontenac.txt"
      }
    },
    {
      "id": "bruce-peninsula",
      "name": "Bruce Peninsula National Park",
      "shortName": "Bruce Peninsula",
      "region": "Bruce, ON",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.2333,
        "longitude": -81.55
      },
      "summary": "Designated dark-sky preserve at the tip of the Bruce. Great Lake Huron horizons.",
      "links": {
        "app": "https://ontarionightsky.com/?site=bruce-peninsula",
        "json": "https://ontarionightsky.com/sites/bruce-peninsula.json",
        "text": "https://ontarionightsky.com/sites/bruce-peninsula.txt"
      }
    },
    {
      "id": "point-pelee",
      "name": "Point Pelee National Park",
      "shortName": "Point Pelee",
      "region": "Essex, ON",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 41.9667,
        "longitude": -82.5167
      },
      "summary": "Southernmost mainland Canada — southern horizon over Lake Erie.",
      "links": {
        "app": "https://ontarionightsky.com/?site=point-pelee",
        "json": "https://ontarionightsky.com/sites/point-pelee.json",
        "text": "https://ontarionightsky.com/sites/point-pelee.txt"
      }
    },
    {
      "id": "manitoulin",
      "name": "Gordon's Park Dark Sky Preserve",
      "shortName": "Manitoulin (Gordon's Park)",
      "region": "Manitoulin Island, ON",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 45.65,
        "longitude": -82.0167
      },
      "summary": "RASC-designated dark-sky preserve on Manitoulin with on-site observing fields.",
      "links": {
        "app": "https://ontarionightsky.com/?site=manitoulin",
        "json": "https://ontarionightsky.com/sites/manitoulin.json",
        "text": "https://ontarionightsky.com/sites/manitoulin.txt"
      }
    },
    {
      "id": "quetico",
      "name": "Quetico Provincial Park",
      "shortName": "Quetico",
      "region": "Rainy River, ON",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 48.5,
        "longitude": -91.5
      },
      "summary": "Wilderness canoe park near the Minnesota border. Exceptionally dark, hard to access.",
      "links": {
        "app": "https://ontarionightsky.com/?site=quetico",
        "json": "https://ontarionightsky.com/sites/quetico.json",
        "text": "https://ontarionightsky.com/sites/quetico.txt"
      }
    },
    {
      "id": "pukaskwa",
      "name": "Pukaskwa National Park",
      "shortName": "Pukaskwa",
      "region": "Algoma, ON",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 48.05,
        "longitude": -86.0167
      },
      "summary": "Rugged Lake Superior coastline with pristine northern skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=pukaskwa",
        "json": "https://ontarionightsky.com/sites/pukaskwa.json",
        "text": "https://ontarionightsky.com/sites/pukaskwa.txt"
      }
    },
    {
      "id": "binbrook",
      "name": "Binbrook Conservation Area",
      "shortName": "Binbrook",
      "region": "Hamilton, ON",
      "bortleClass": 5,
      "coordinates": {
        "latitude": 43.1167,
        "longitude": -79.8
      },
      "summary": "Popular Hamilton-area observing site. Compromised by city light but very accessible.",
      "links": {
        "app": "https://ontarionightsky.com/?site=binbrook",
        "json": "https://ontarionightsky.com/sites/binbrook.json",
        "text": "https://ontarionightsky.com/sites/binbrook.txt"
      }
    },
    {
      "id": "long-sault",
      "name": "Long Sault Conservation Area",
      "shortName": "Long Sault",
      "region": "Durham, ON",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 44.0667,
        "longitude": -78.7833
      },
      "summary": "Durham Region observing spot popular with the Toronto-area astronomy clubs.",
      "links": {
        "app": "https://ontarionightsky.com/?site=long-sault",
        "json": "https://ontarionightsky.com/sites/long-sault.json",
        "text": "https://ontarionightsky.com/sites/long-sault.txt"
      }
    },
    {
      "id": "jasper-np",
      "name": "Jasper National Park Dark Sky Preserve",
      "shortName": "Jasper NP",
      "region": "Rocky Mountains, AB",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 52.8734,
        "longitude": -118.0806
      },
      "summary": "The world's second-largest dark-sky preserve — 11,000 km² of Rocky Mountain wilderness.",
      "links": {
        "app": "https://ontarionightsky.com/?site=jasper-np",
        "json": "https://ontarionightsky.com/sites/jasper-np.json",
        "text": "https://ontarionightsky.com/sites/jasper-np.txt"
      }
    },
    {
      "id": "wood-buffalo-np",
      "name": "Wood Buffalo National Park",
      "shortName": "Wood Buffalo",
      "region": "Northern AB/NT",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 59.3833,
        "longitude": -112.3
      },
      "summary": "The largest dark-sky preserve on Earth. Aurora nearly every clear night.",
      "links": {
        "app": "https://ontarionightsky.com/?site=wood-buffalo-np",
        "json": "https://ontarionightsky.com/sites/wood-buffalo-np.json",
        "text": "https://ontarionightsky.com/sites/wood-buffalo-np.txt"
      }
    },
    {
      "id": "mont-megantic",
      "name": "Mont-Mégantic International Dark Sky Reserve",
      "shortName": "Mont-Mégantic",
      "region": "Eastern Townships, QC",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 45.455,
        "longitude": -71.1522
      },
      "summary": "The world's first International Dark Sky Reserve, with a public observatory at the summit.",
      "links": {
        "app": "https://ontarionightsky.com/?site=mont-megantic",
        "json": "https://ontarionightsky.com/sites/mont-megantic.json",
        "text": "https://ontarionightsky.com/sites/mont-megantic.txt"
      }
    },
    {
      "id": "grasslands-np",
      "name": "Grasslands National Park Dark Sky Preserve",
      "shortName": "Grasslands NP",
      "region": "Southern SK",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 49.1667,
        "longitude": -107.5
      },
      "summary": "Bortle 1 prairie skies. One of the darkest places accessible by car in North America.",
      "links": {
        "app": "https://ontarionightsky.com/?site=grasslands-np",
        "json": "https://ontarionightsky.com/sites/grasslands-np.json",
        "text": "https://ontarionightsky.com/sites/grasslands-np.txt"
      }
    },
    {
      "id": "cypress-hills",
      "name": "Cypress Hills Interprovincial Dark Sky Preserve",
      "shortName": "Cypress Hills",
      "region": "AB/SK border",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 49.6472,
        "longitude": -110.1264
      },
      "summary": "Canada's first interprovincial DSP, straddling AB and SK with an on-site observatory.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cypress-hills",
        "json": "https://ontarionightsky.com/sites/cypress-hills.json",
        "text": "https://ontarionightsky.com/sites/cypress-hills.txt"
      }
    },
    {
      "id": "kejimkujik-np",
      "name": "Kejimkujik National Park & Historic Site",
      "shortName": "Kejimkujik",
      "region": "Southwest NS",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 44.4,
        "longitude": -65.2167
      },
      "summary": "Nova Scotia's dark-sky preserve — Mi'kmaw sky-lore programming and lake horizons.",
      "links": {
        "app": "https://ontarionightsky.com/?site=kejimkujik-np",
        "json": "https://ontarionightsky.com/sites/kejimkujik-np.json",
        "text": "https://ontarionightsky.com/sites/kejimkujik-np.txt"
      }
    },
    {
      "id": "kouchibouguac-np",
      "name": "Kouchibouguac National Park",
      "shortName": "Kouchibouguac",
      "region": "Eastern NB",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 46.8167,
        "longitude": -64.9667
      },
      "summary": "Acadian coast DSP with dune horizons over the Northumberland Strait.",
      "links": {
        "app": "https://ontarionightsky.com/?site=kouchibouguac-np",
        "json": "https://ontarionightsky.com/sites/kouchibouguac-np.json",
        "text": "https://ontarionightsky.com/sites/kouchibouguac-np.txt"
      }
    },
    {
      "id": "fundy-np",
      "name": "Fundy National Park Dark Sky Preserve",
      "shortName": "Fundy NP",
      "region": "Bay of Fundy, NB",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.5951,
        "longitude": -64.9509
      },
      "summary": "Coastal DSP with sea-level tide-flat horizons and frequent low aurora.",
      "links": {
        "app": "https://ontarionightsky.com/?site=fundy-np",
        "json": "https://ontarionightsky.com/sites/fundy-np.json",
        "text": "https://ontarionightsky.com/sites/fundy-np.txt"
      }
    },
    {
      "id": "terra-nova-np",
      "name": "Terra Nova National Park",
      "shortName": "Terra Nova",
      "region": "Eastern NL",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 48.5333,
        "longitude": -53.9667
      },
      "summary": "Newfoundland's DSP — Atlantic horizons and reliable aurora at 49° north.",
      "links": {
        "app": "https://ontarionightsky.com/?site=terra-nova-np",
        "json": "https://ontarionightsky.com/sites/terra-nova-np.json",
        "text": "https://ontarionightsky.com/sites/terra-nova-np.txt"
      }
    },
    {
      "id": "elk-island-np",
      "name": "Elk Island National Park (Beaver Hills DSP)",
      "shortName": "Elk Island",
      "region": "Beaver Hills, AB",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 53.6333,
        "longitude": -112.85
      },
      "summary": "Closest true dark-sky preserve to Edmonton. Bison, aspen parkland, aurora.",
      "links": {
        "app": "https://ontarionightsky.com/?site=elk-island-np",
        "json": "https://ontarionightsky.com/sites/elk-island-np.json",
        "text": "https://ontarionightsky.com/sites/elk-island-np.txt"
      }
    },
    {
      "id": "riding-mountain-np",
      "name": "Riding Mountain National Park",
      "shortName": "Riding Mountain",
      "region": "Western MB",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 50.65,
        "longitude": -99.9667
      },
      "summary": "Manitoba escarpment park with a designated DSP zone and aurora corridor.",
      "links": {
        "app": "https://ontarionightsky.com/?site=riding-mountain-np",
        "json": "https://ontarionightsky.com/sites/riding-mountain-np.json",
        "text": "https://ontarionightsky.com/sites/riding-mountain-np.txt"
      }
    },
    {
      "id": "prince-albert-np",
      "name": "Prince Albert National Park",
      "shortName": "Prince Albert NP",
      "region": "Central SK",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 53.9667,
        "longitude": -106.3833
      },
      "summary": "Boreal forest and lake horizons at 54° north — aurora most clear nights.",
      "links": {
        "app": "https://ontarionightsky.com/?site=prince-albert-np",
        "json": "https://ontarionightsky.com/sites/prince-albert-np.json",
        "text": "https://ontarionightsky.com/sites/prince-albert-np.txt"
      }
    },
    {
      "id": "waterton-lakes-np",
      "name": "Waterton Lakes National Park",
      "shortName": "Waterton Lakes",
      "region": "Southern AB",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 49.05,
        "longitude": -113.9
      },
      "summary": "Canadian half of the Waterton-Glacier International Peace Park DSP.",
      "links": {
        "app": "https://ontarionightsky.com/?site=waterton-lakes-np",
        "json": "https://ontarionightsky.com/sites/waterton-lakes-np.json",
        "text": "https://ontarionightsky.com/sites/waterton-lakes-np.txt"
      }
    },
    {
      "id": "la-mauricie-np",
      "name": "La Mauricie National Park",
      "shortName": "La Mauricie",
      "region": "Central QC",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 46.75,
        "longitude": -73
      },
      "summary": "Laurentian foothills park with lake-shore observing pads.",
      "links": {
        "app": "https://ontarionightsky.com/?site=la-mauricie-np",
        "json": "https://ontarionightsky.com/sites/la-mauricie-np.json",
        "text": "https://ontarionightsky.com/sites/la-mauricie-np.txt"
      }
    },
    {
      "id": "kluane-np",
      "name": "Kluane National Park & Reserve",
      "shortName": "Kluane",
      "region": "Southwest YT",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 61,
        "longitude": -138.5
      },
      "summary": "Yukon's mountain wilderness. Aurora on most clear nights, Bortle 1 interior.",
      "links": {
        "app": "https://ontarionightsky.com/?site=kluane-np",
        "json": "https://ontarionightsky.com/sites/kluane-np.json",
        "text": "https://ontarionightsky.com/sites/kluane-np.txt"
      }
    },
    {
      "id": "nahanni-npr",
      "name": "Nahanni National Park Reserve",
      "shortName": "Nahanni",
      "region": "Southwest NT",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 61.5,
        "longitude": -125
      },
      "summary": "Fly-in wilderness DSP. Under-auroral-oval — aurora is the default sky feature.",
      "links": {
        "app": "https://ontarionightsky.com/?site=nahanni-npr",
        "json": "https://ontarionightsky.com/sites/nahanni-npr.json",
        "text": "https://ontarionightsky.com/sites/nahanni-npr.txt"
      }
    },
    {
      "id": "bon-echo-pp",
      "name": "Bon Echo Provincial Park",
      "shortName": "Bon Echo",
      "region": "Land O'Lakes, ON",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 44.9,
        "longitude": -77.2
      },
      "summary": "Mazinaw Rock cliff and lake horizons — Ontario RASC-designated dark-sky viewing area.",
      "links": {
        "app": "https://ontarionightsky.com/?site=bon-echo-pp",
        "json": "https://ontarionightsky.com/sites/bon-echo-pp.json",
        "text": "https://ontarionightsky.com/sites/bon-echo-pp.txt"
      }
    },
    {
      "id": "pinery-pp",
      "name": "Pinery Provincial Park Dark Sky Preserve",
      "shortName": "Pinery",
      "region": "Lake Huron shore, ON",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 43.25,
        "longitude": -81.8333
      },
      "summary": "Oak-savannah DSP with Lake Huron sunset-to-Milky-Way transitions.",
      "links": {
        "app": "https://ontarionightsky.com/?site=pinery-pp",
        "json": "https://ontarionightsky.com/sites/pinery-pp.json",
        "text": "https://ontarionightsky.com/sites/pinery-pp.txt"
      }
    },
    {
      "id": "cattle-point-star-park",
      "name": "Cattle Point Urban Star Park",
      "shortName": "Cattle Point",
      "region": "Victoria, BC",
      "bortleClass": 6,
      "coordinates": {
        "latitude": 48.438,
        "longitude": -123.2914
      },
      "summary": "Urban RASC star park in Victoria — accessible, if compromised, city observing.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cattle-point-star-park",
        "json": "https://ontarionightsky.com/sites/cattle-point-star-park.json",
        "text": "https://ontarionightsky.com/sites/cattle-point-star-park.txt"
      }
    },
    {
      "id": "mcdonald-park",
      "name": "McDonald Park Dark Sky Park",
      "shortName": "McDonald Park",
      "region": "Abbotsford, BC",
      "bortleClass": 5,
      "coordinates": {
        "latitude": 49.05,
        "longitude": -121.95
      },
      "summary": "Fraser Valley RASC dark-sky park — closest designated site to Vancouver.",
      "links": {
        "app": "https://ontarionightsky.com/?site=mcdonald-park",
        "json": "https://ontarionightsky.com/sites/mcdonald-park.json",
        "text": "https://ontarionightsky.com/sites/mcdonald-park.txt"
      }
    },
    {
      "id": "blomidon-pp",
      "name": "Blomidon Provincial Park",
      "shortName": "Blomidon",
      "region": "Bay of Fundy, NS",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.25,
        "longitude": -64.3333
      },
      "summary": "Basalt cliffs over the Minas Basin — dark, elevated, and gale-prone.",
      "links": {
        "app": "https://ontarionightsky.com/?site=blomidon-pp",
        "json": "https://ontarionightsky.com/sites/blomidon-pp.json",
        "text": "https://ontarionightsky.com/sites/blomidon-pp.txt"
      }
    },
    {
      "id": "gros-morne-np",
      "name": "Gros Morne National Park",
      "shortName": "Gros Morne",
      "region": "Western NL",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 49.6167,
        "longitude": -57.7333
      },
      "summary": "UNESCO fjords at 50° north — aurora, low light pollution, dramatic coastal horizons.",
      "links": {
        "app": "https://ontarionightsky.com/?site=gros-morne-np",
        "json": "https://ontarionightsky.com/sites/gros-morne-np.json",
        "text": "https://ontarionightsky.com/sites/gros-morne-np.txt"
      }
    },
    {
      "id": "cherry-springs-sp",
      "name": "Cherry Springs State Park",
      "shortName": "Cherry Springs",
      "region": "PA Wilds",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 41.6626,
        "longitude": -77.8264
      },
      "summary": "The East Coast's darkest, with a purpose-built astronomy field and Bortle 2 sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cherry-springs-sp",
        "json": "https://ontarionightsky.com/sites/cherry-springs-sp.json",
        "text": "https://ontarionightsky.com/sites/cherry-springs-sp.txt"
      }
    },
    {
      "id": "big-bend-np",
      "name": "Big Bend National Park",
      "shortName": "Big Bend",
      "region": "West TX",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 29.25,
        "longitude": -103.25
      },
      "summary": "Least-light-polluted national park in the lower 48 — desert Bortle 1 skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=big-bend-np",
        "json": "https://ontarionightsky.com/sites/big-bend-np.json",
        "text": "https://ontarionightsky.com/sites/big-bend-np.txt"
      }
    },
    {
      "id": "big-bend-ranch-sp",
      "name": "Big Bend Ranch State Park",
      "shortName": "Big Bend Ranch",
      "region": "West TX",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 29.45,
        "longitude": -104
      },
      "summary": "Even darker than the national park — Texas's largest DSP.",
      "links": {
        "app": "https://ontarionightsky.com/?site=big-bend-ranch-sp",
        "json": "https://ontarionightsky.com/sites/big-bend-ranch-sp.json",
        "text": "https://ontarionightsky.com/sites/big-bend-ranch-sp.txt"
      }
    },
    {
      "id": "mcdonald-observatory",
      "name": "McDonald Observatory (Fort Davis)",
      "shortName": "McDonald Observatory",
      "region": "Davis Mountains, TX",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 30.6714,
        "longitude": -104.0247
      },
      "summary": "Research observatory with public Star Parties three nights a week.",
      "links": {
        "app": "https://ontarionightsky.com/?site=mcdonald-observatory",
        "json": "https://ontarionightsky.com/sites/mcdonald-observatory.json",
        "text": "https://ontarionightsky.com/sites/mcdonald-observatory.txt"
      }
    },
    {
      "id": "enchanted-rock-sna",
      "name": "Enchanted Rock State Natural Area",
      "shortName": "Enchanted Rock",
      "region": "Hill Country, TX",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 30.5,
        "longitude": -98.8167
      },
      "summary": "Pink granite dome DSP — 90 minutes from Austin, elevated 360° horizon.",
      "links": {
        "app": "https://ontarionightsky.com/?site=enchanted-rock-sna",
        "json": "https://ontarionightsky.com/sites/enchanted-rock-sna.json",
        "text": "https://ontarionightsky.com/sites/enchanted-rock-sna.txt"
      }
    },
    {
      "id": "south-llano-river-sp",
      "name": "South Llano River State Park",
      "shortName": "South Llano River",
      "region": "Hill Country, TX",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 30.45,
        "longitude": -99.8
      },
      "summary": "IDA-certified Hill Country park with a walk-in astronomy field.",
      "links": {
        "app": "https://ontarionightsky.com/?site=south-llano-river-sp",
        "json": "https://ontarionightsky.com/sites/south-llano-river-sp.json",
        "text": "https://ontarionightsky.com/sites/south-llano-river-sp.txt"
      }
    },
    {
      "id": "copper-breaks-sp",
      "name": "Copper Breaks State Park",
      "shortName": "Copper Breaks",
      "region": "Rolling Plains, TX",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 34.1,
        "longitude": -99.75
      },
      "summary": "Texas Panhandle DSP with badland horizons and monthly Star Walks.",
      "links": {
        "app": "https://ontarionightsky.com/?site=copper-breaks-sp",
        "json": "https://ontarionightsky.com/sites/copper-breaks-sp.json",
        "text": "https://ontarionightsky.com/sites/copper-breaks-sp.txt"
      }
    },
    {
      "id": "death-valley-np",
      "name": "Death Valley National Park",
      "shortName": "Death Valley",
      "region": "Mojave, CA/NV",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 36.5323,
        "longitude": -116.9325
      },
      "summary": "Gold-tier IDA dark-sky park — Bortle 1 basins and 3,000+ visible stars.",
      "links": {
        "app": "https://ontarionightsky.com/?site=death-valley-np",
        "json": "https://ontarionightsky.com/sites/death-valley-np.json",
        "text": "https://ontarionightsky.com/sites/death-valley-np.txt"
      }
    },
    {
      "id": "joshua-tree-np",
      "name": "Joshua Tree National Park",
      "shortName": "Joshua Tree",
      "region": "Southern CA",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 33.8734,
        "longitude": -115.901
      },
      "summary": "High-desert IDA park with iconic silhouettes and Los Angeles light dome to the west.",
      "links": {
        "app": "https://ontarionightsky.com/?site=joshua-tree-np",
        "json": "https://ontarionightsky.com/sites/joshua-tree-np.json",
        "text": "https://ontarionightsky.com/sites/joshua-tree-np.txt"
      }
    },
    {
      "id": "anza-borrego-sp",
      "name": "Anza-Borrego Desert State Park",
      "shortName": "Anza-Borrego",
      "region": "Colorado Desert, CA",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 33.2586,
        "longitude": -116.4
      },
      "summary": "California's first IDA-certified state park DSP — 600,000 acres of desert dark.",
      "links": {
        "app": "https://ontarionightsky.com/?site=anza-borrego-sp",
        "json": "https://ontarionightsky.com/sites/anza-borrego-sp.json",
        "text": "https://ontarionightsky.com/sites/anza-borrego-sp.txt"
      }
    },
    {
      "id": "pinnacles-np",
      "name": "Pinnacles National Park",
      "shortName": "Pinnacles",
      "region": "Central CA",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 36.4906,
        "longitude": -121.1825
      },
      "summary": "Volcanic spires and California condors under Bortle 3 coast-range skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=pinnacles-np",
        "json": "https://ontarionightsky.com/sites/pinnacles-np.json",
        "text": "https://ontarionightsky.com/sites/pinnacles-np.txt"
      }
    },
    {
      "id": "grand-canyon-np",
      "name": "Grand Canyon National Park",
      "shortName": "Grand Canyon",
      "region": "Northern AZ",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 36.0544,
        "longitude": -112.1401
      },
      "summary": "IDA-certified — north rim is Bortle 2 with negative-elevation horizon.",
      "links": {
        "app": "https://ontarionightsky.com/?site=grand-canyon-np",
        "json": "https://ontarionightsky.com/sites/grand-canyon-np.json",
        "text": "https://ontarionightsky.com/sites/grand-canyon-np.txt"
      }
    },
    {
      "id": "petrified-forest-np",
      "name": "Petrified Forest National Park",
      "shortName": "Petrified Forest",
      "region": "Northern AZ",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 34.9095,
        "longitude": -109.8065
      },
      "summary": "Painted Desert horizons under one of Arizona's darkest skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=petrified-forest-np",
        "json": "https://ontarionightsky.com/sites/petrified-forest-np.json",
        "text": "https://ontarionightsky.com/sites/petrified-forest-np.txt"
      }
    },
    {
      "id": "sunset-crater-nm",
      "name": "Sunset Crater Volcano National Monument",
      "shortName": "Sunset Crater",
      "region": "Flagstaff, AZ",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 35.3667,
        "longitude": -111.5
      },
      "summary": "Cinder cone under Flagstaff's IDA-protected dark-sky city.",
      "links": {
        "app": "https://ontarionightsky.com/?site=sunset-crater-nm",
        "json": "https://ontarionightsky.com/sites/sunset-crater-nm.json",
        "text": "https://ontarionightsky.com/sites/sunset-crater-nm.txt"
      }
    },
    {
      "id": "wupatki-nm",
      "name": "Wupatki National Monument",
      "shortName": "Wupatki",
      "region": "Northern AZ",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 35.5522,
        "longitude": -111.3894
      },
      "summary": "Ancestral Puebloan pueblos with wide desert horizons and Flagstaff dark-sky protection.",
      "links": {
        "app": "https://ontarionightsky.com/?site=wupatki-nm",
        "json": "https://ontarionightsky.com/sites/wupatki-nm.json",
        "text": "https://ontarionightsky.com/sites/wupatki-nm.txt"
      }
    },
    {
      "id": "oracle-sp",
      "name": "Oracle State Park",
      "shortName": "Oracle SP",
      "region": "Santa Catalinas, AZ",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 32.6167,
        "longitude": -110.7333
      },
      "summary": "IDA-certified Sonoran desert park north of Tucson.",
      "links": {
        "app": "https://ontarionightsky.com/?site=oracle-sp",
        "json": "https://ontarionightsky.com/sites/oracle-sp.json",
        "text": "https://ontarionightsky.com/sites/oracle-sp.txt"
      }
    },
    {
      "id": "kartchner-caverns-sp",
      "name": "Kartchner Caverns State Park",
      "shortName": "Kartchner Caverns",
      "region": "Southern AZ",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 31.8375,
        "longitude": -110.3486
      },
      "summary": "IDA-designated with a dedicated star-party pad.",
      "links": {
        "app": "https://ontarionightsky.com/?site=kartchner-caverns-sp",
        "json": "https://ontarionightsky.com/sites/kartchner-caverns-sp.json",
        "text": "https://ontarionightsky.com/sites/kartchner-caverns-sp.txt"
      }
    },
    {
      "id": "grand-canyon-parashant-nm",
      "name": "Grand Canyon-Parashant National Monument",
      "shortName": "Parashant",
      "region": "NW AZ",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 36.55,
        "longitude": -113.5
      },
      "summary": "Remote Bortle 1 monument on the Arizona Strip — no services, spectacular sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=grand-canyon-parashant-nm",
        "json": "https://ontarionightsky.com/sites/grand-canyon-parashant-nm.json",
        "text": "https://ontarionightsky.com/sites/grand-canyon-parashant-nm.txt"
      }
    },
    {
      "id": "kaibab-nf",
      "name": "Kaibab National Forest (Arizona Strip)",
      "shortName": "Kaibab NF",
      "region": "Northern AZ",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 36.45,
        "longitude": -112.15
      },
      "summary": "IDA-certified national forest bordering Grand Canyon's North Rim.",
      "links": {
        "app": "https://ontarionightsky.com/?site=kaibab-nf",
        "json": "https://ontarionightsky.com/sites/kaibab-nf.json",
        "text": "https://ontarionightsky.com/sites/kaibab-nf.txt"
      }
    },
    {
      "id": "canyonlands-np",
      "name": "Canyonlands National Park",
      "shortName": "Canyonlands",
      "region": "Southern UT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 38.3269,
        "longitude": -109.8783
      },
      "summary": "Gold-tier IDA park — Island in the Sky mesa has 360° dark horizon.",
      "links": {
        "app": "https://ontarionightsky.com/?site=canyonlands-np",
        "json": "https://ontarionightsky.com/sites/canyonlands-np.json",
        "text": "https://ontarionightsky.com/sites/canyonlands-np.txt"
      }
    },
    {
      "id": "arches-np",
      "name": "Arches National Park",
      "shortName": "Arches",
      "region": "Southern UT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 38.7331,
        "longitude": -109.5925
      },
      "summary": "IDA-certified — sandstone arches frame the Milky Way from May to September.",
      "links": {
        "app": "https://ontarionightsky.com/?site=arches-np",
        "json": "https://ontarionightsky.com/sites/arches-np.json",
        "text": "https://ontarionightsky.com/sites/arches-np.txt"
      }
    },
    {
      "id": "capitol-reef-np",
      "name": "Capitol Reef National Park",
      "shortName": "Capitol Reef",
      "region": "South-central UT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 38.366,
        "longitude": -111.2615
      },
      "summary": "IDA-certified with an annual Heritage Starfest — Waterpocket Fold horizons.",
      "links": {
        "app": "https://ontarionightsky.com/?site=capitol-reef-np",
        "json": "https://ontarionightsky.com/sites/capitol-reef-np.json",
        "text": "https://ontarionightsky.com/sites/capitol-reef-np.txt"
      }
    },
    {
      "id": "bryce-canyon-np",
      "name": "Bryce Canyon National Park",
      "shortName": "Bryce Canyon",
      "region": "Southern UT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 37.593,
        "longitude": -112.1871
      },
      "summary": "8,000 ft elevation IDA park — thin air, Bortle 2, ranger astronomy programs.",
      "links": {
        "app": "https://ontarionightsky.com/?site=bryce-canyon-np",
        "json": "https://ontarionightsky.com/sites/bryce-canyon-np.json",
        "text": "https://ontarionightsky.com/sites/bryce-canyon-np.txt"
      }
    },
    {
      "id": "zion-np",
      "name": "Zion National Park",
      "shortName": "Zion",
      "region": "SW UT",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 37.2982,
        "longitude": -113.0263
      },
      "summary": "IDA-certified — canyon walls limit horizon but sky quality is excellent.",
      "links": {
        "app": "https://ontarionightsky.com/?site=zion-np",
        "json": "https://ontarionightsky.com/sites/zion-np.json",
        "text": "https://ontarionightsky.com/sites/zion-np.txt"
      }
    },
    {
      "id": "natural-bridges-nm",
      "name": "Natural Bridges National Monument",
      "shortName": "Natural Bridges",
      "region": "SE UT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 37.6083,
        "longitude": -110.0125
      },
      "summary": "First IDA-certified International Dark Sky Park in the world (2007).",
      "links": {
        "app": "https://ontarionightsky.com/?site=natural-bridges-nm",
        "json": "https://ontarionightsky.com/sites/natural-bridges-nm.json",
        "text": "https://ontarionightsky.com/sites/natural-bridges-nm.txt"
      }
    },
    {
      "id": "hovenweep-nm",
      "name": "Hovenweep National Monument",
      "shortName": "Hovenweep",
      "region": "UT/CO",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 37.3833,
        "longitude": -109.0833
      },
      "summary": "Ancestral Puebloan towers under one of the darkest skies in the lower 48.",
      "links": {
        "app": "https://ontarionightsky.com/?site=hovenweep-nm",
        "json": "https://ontarionightsky.com/sites/hovenweep-nm.json",
        "text": "https://ontarionightsky.com/sites/hovenweep-nm.txt"
      }
    },
    {
      "id": "cedar-breaks-nm",
      "name": "Cedar Breaks National Monument",
      "shortName": "Cedar Breaks",
      "region": "SW UT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 37.6367,
        "longitude": -112.8447
      },
      "summary": "10,000 ft IDA park — coldest, driest skies in southern Utah.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cedar-breaks-nm",
        "json": "https://ontarionightsky.com/sites/cedar-breaks-nm.json",
        "text": "https://ontarionightsky.com/sites/cedar-breaks-nm.txt"
      }
    },
    {
      "id": "antelope-island-sp",
      "name": "Antelope Island State Park",
      "shortName": "Antelope Island",
      "region": "Great Salt Lake, UT",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 40.9505,
        "longitude": -112.21
      },
      "summary": "IDA-certified island in the Great Salt Lake — Salt Lake City dome to the east.",
      "links": {
        "app": "https://ontarionightsky.com/?site=antelope-island-sp",
        "json": "https://ontarionightsky.com/sites/antelope-island-sp.json",
        "text": "https://ontarionightsky.com/sites/antelope-island-sp.txt"
      }
    },
    {
      "id": "weber-county-north-fork-park",
      "name": "Weber County North Fork Park",
      "shortName": "North Fork Park",
      "region": "Northern UT",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 41.3167,
        "longitude": -111.8167
      },
      "summary": "IDA-certified Wasatch foothills park — closest true DSP to Ogden and SLC.",
      "links": {
        "app": "https://ontarionightsky.com/?site=weber-county-north-fork-park",
        "json": "https://ontarionightsky.com/sites/weber-county-north-fork-park.json",
        "text": "https://ontarionightsky.com/sites/weber-county-north-fork-park.txt"
      }
    },
    {
      "id": "rainbow-bridge-nm",
      "name": "Rainbow Bridge National Monument",
      "shortName": "Rainbow Bridge",
      "region": "SE UT",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 37.0778,
        "longitude": -110.9642
      },
      "summary": "Boat-in-only IDA monument on Lake Powell — Bortle 1 canyon skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=rainbow-bridge-nm",
        "json": "https://ontarionightsky.com/sites/rainbow-bridge-nm.json",
        "text": "https://ontarionightsky.com/sites/rainbow-bridge-nm.txt"
      }
    },
    {
      "id": "dinosaur-nm",
      "name": "Dinosaur National Monument",
      "shortName": "Dinosaur NM",
      "region": "UT/CO",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 40.44,
        "longitude": -108.79
      },
      "summary": "IDA-certified — Green and Yampa river canyons at Bortle 2.",
      "links": {
        "app": "https://ontarionightsky.com/?site=dinosaur-nm",
        "json": "https://ontarionightsky.com/sites/dinosaur-nm.json",
        "text": "https://ontarionightsky.com/sites/dinosaur-nm.txt"
      }
    },
    {
      "id": "chaco-nhp",
      "name": "Chaco Culture National Historical Park",
      "shortName": "Chaco Culture",
      "region": "NW NM",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 36.0333,
        "longitude": -107.95
      },
      "summary": "Ancestral Puebloan great houses aligned to solstices — IDA gold-tier.",
      "links": {
        "app": "https://ontarionightsky.com/?site=chaco-nhp",
        "json": "https://ontarionightsky.com/sites/chaco-nhp.json",
        "text": "https://ontarionightsky.com/sites/chaco-nhp.txt"
      }
    },
    {
      "id": "cosmic-campground",
      "name": "Cosmic Campground (Gila NF)",
      "shortName": "Cosmic Campground",
      "region": "SW NM",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 33.479,
        "longitude": -108.9235
      },
      "summary": "First IDA International Dark Sky Sanctuary in North America — Bortle 1.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cosmic-campground",
        "json": "https://ontarionightsky.com/sites/cosmic-campground.json",
        "text": "https://ontarionightsky.com/sites/cosmic-campground.txt"
      }
    },
    {
      "id": "white-sands-np",
      "name": "White Sands National Park",
      "shortName": "White Sands",
      "region": "Tularosa Basin, NM",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 32.7794,
        "longitude": -106.1719
      },
      "summary": "Gypsum dunes reflect starlight — special full-moon and new-moon programs.",
      "links": {
        "app": "https://ontarionightsky.com/?site=white-sands-np",
        "json": "https://ontarionightsky.com/sites/white-sands-np.json",
        "text": "https://ontarionightsky.com/sites/white-sands-np.txt"
      }
    },
    {
      "id": "salinas-pueblo-missions-nm",
      "name": "Salinas Pueblo Missions National Monument",
      "shortName": "Salinas Missions",
      "region": "Central NM",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 34.26,
        "longitude": -106.1
      },
      "summary": "IDA-certified — mission ruins under central New Mexico dark sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=salinas-pueblo-missions-nm",
        "json": "https://ontarionightsky.com/sites/salinas-pueblo-missions-nm.json",
        "text": "https://ontarionightsky.com/sites/salinas-pueblo-missions-nm.txt"
      }
    },
    {
      "id": "mesa-verde-np",
      "name": "Mesa Verde National Park",
      "shortName": "Mesa Verde",
      "region": "SW CO",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 37.2309,
        "longitude": -108.4618
      },
      "summary": "IDA-certified — cliff-dwelling park at 8,000 ft with Bortle 2 skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=mesa-verde-np",
        "json": "https://ontarionightsky.com/sites/mesa-verde-np.json",
        "text": "https://ontarionightsky.com/sites/mesa-verde-np.txt"
      }
    },
    {
      "id": "black-canyon-gunnison-np",
      "name": "Black Canyon of the Gunnison National Park",
      "shortName": "Black Canyon",
      "region": "Western CO",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 38.5754,
        "longitude": -107.7016
      },
      "summary": "IDA-certified — 2,000 ft-deep canyon rim, some of Colorado's darkest sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=black-canyon-gunnison-np",
        "json": "https://ontarionightsky.com/sites/black-canyon-gunnison-np.json",
        "text": "https://ontarionightsky.com/sites/black-canyon-gunnison-np.txt"
      }
    },
    {
      "id": "great-sand-dunes-np",
      "name": "Great Sand Dunes National Park",
      "shortName": "Great Sand Dunes",
      "region": "San Luis Valley, CO",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 37.7327,
        "longitude": -105.5122
      },
      "summary": "IDA-certified — tallest dunes in North America under Bortle 2 sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=great-sand-dunes-np",
        "json": "https://ontarionightsky.com/sites/great-sand-dunes-np.json",
        "text": "https://ontarionightsky.com/sites/great-sand-dunes-np.txt"
      }
    },
    {
      "id": "curecanti-nra",
      "name": "Curecanti National Recreation Area",
      "shortName": "Curecanti",
      "region": "Western CO",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 38.4667,
        "longitude": -107.3333
      },
      "summary": "IDA-certified reservoir DSP adjacent to Black Canyon.",
      "links": {
        "app": "https://ontarionightsky.com/?site=curecanti-nra",
        "json": "https://ontarionightsky.com/sites/curecanti-nra.json",
        "text": "https://ontarionightsky.com/sites/curecanti-nra.txt"
      }
    },
    {
      "id": "rocky-mountain-np",
      "name": "Rocky Mountain National Park",
      "shortName": "Rocky Mountain NP",
      "region": "Northern CO",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 40.3428,
        "longitude": -105.6836
      },
      "summary": "IDA-certified — high alpine skies with Denver dome to the east.",
      "links": {
        "app": "https://ontarionightsky.com/?site=rocky-mountain-np",
        "json": "https://ontarionightsky.com/sites/rocky-mountain-np.json",
        "text": "https://ontarionightsky.com/sites/rocky-mountain-np.txt"
      }
    },
    {
      "id": "dinosaur-ridge-co",
      "name": "Jackson Lake State Park",
      "shortName": "Jackson Lake SP",
      "region": "Northeastern CO",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 40.3833,
        "longitude": -104.1
      },
      "summary": "IDA-certified reservoir DSP on the eastern plains.",
      "links": {
        "app": "https://ontarionightsky.com/?site=dinosaur-ridge-co",
        "json": "https://ontarionightsky.com/sites/dinosaur-ridge-co.json",
        "text": "https://ontarionightsky.com/sites/dinosaur-ridge-co.txt"
      }
    },
    {
      "id": "great-basin-np",
      "name": "Great Basin National Park",
      "shortName": "Great Basin",
      "region": "Eastern NV",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 38.9833,
        "longitude": -114.3
      },
      "summary": "IDA-certified — 13,000 ft peaks, ancient bristlecones, world-class dark.",
      "links": {
        "app": "https://ontarionightsky.com/?site=great-basin-np",
        "json": "https://ontarionightsky.com/sites/great-basin-np.json",
        "text": "https://ontarionightsky.com/sites/great-basin-np.txt"
      }
    },
    {
      "id": "massacre-rim-dss",
      "name": "Massacre Rim Dark Sky Sanctuary",
      "shortName": "Massacre Rim",
      "region": "NW NV",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 41.6167,
        "longitude": -119.7833
      },
      "summary": "IDA sanctuary — the largest contiguous dark area in the lower 48.",
      "links": {
        "app": "https://ontarionightsky.com/?site=massacre-rim-dss",
        "json": "https://ontarionightsky.com/sites/massacre-rim-dss.json",
        "text": "https://ontarionightsky.com/sites/massacre-rim-dss.txt"
      }
    },
    {
      "id": "central-idaho-dsr",
      "name": "Central Idaho Dark Sky Reserve",
      "shortName": "Central Idaho",
      "region": "Sawtooths, ID",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 44,
        "longitude": -114.75
      },
      "summary": "IDA gold-tier Reserve — 1,400 sq mi of Sawtooth wilderness.",
      "links": {
        "app": "https://ontarionightsky.com/?site=central-idaho-dsr",
        "json": "https://ontarionightsky.com/sites/central-idaho-dsr.json",
        "text": "https://ontarionightsky.com/sites/central-idaho-dsr.txt"
      }
    },
    {
      "id": "craters-of-the-moon-nm",
      "name": "Craters of the Moon National Monument",
      "shortName": "Craters of the Moon",
      "region": "Central ID",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 43.4165,
        "longitude": -113.5169
      },
      "summary": "IDA-certified lava-field DSP — dark, otherworldly landscape.",
      "links": {
        "app": "https://ontarionightsky.com/?site=craters-of-the-moon-nm",
        "json": "https://ontarionightsky.com/sites/craters-of-the-moon-nm.json",
        "text": "https://ontarionightsky.com/sites/craters-of-the-moon-nm.txt"
      }
    },
    {
      "id": "bruneau-dunes-sp",
      "name": "Bruneau Dunes State Park",
      "shortName": "Bruneau Dunes",
      "region": "SW ID",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 42.9,
        "longitude": -115.7
      },
      "summary": "IDA-certified — tallest single-structure dune in North America, on-site observatory.",
      "links": {
        "app": "https://ontarionightsky.com/?site=bruneau-dunes-sp",
        "json": "https://ontarionightsky.com/sites/bruneau-dunes-sp.json",
        "text": "https://ontarionightsky.com/sites/bruneau-dunes-sp.txt"
      }
    },
    {
      "id": "city-of-rocks-nr",
      "name": "City of Rocks National Reserve",
      "shortName": "City of Rocks",
      "region": "Southern ID",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 42.0764,
        "longitude": -113.7147
      },
      "summary": "IDA-certified granite spires — cool climate, dark Great Basin sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=city-of-rocks-nr",
        "json": "https://ontarionightsky.com/sites/city-of-rocks-nr.json",
        "text": "https://ontarionightsky.com/sites/city-of-rocks-nr.txt"
      }
    },
    {
      "id": "steens-mountain",
      "name": "Steens Mountain (Cooperative Management Area)",
      "shortName": "Steens Mountain",
      "region": "SE OR",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 42.6389,
        "longitude": -118.5806
      },
      "summary": "9,700 ft escarpment — one of the darkest, least-visited places in the lower 48.",
      "links": {
        "app": "https://ontarionightsky.com/?site=steens-mountain",
        "json": "https://ontarionightsky.com/sites/steens-mountain.json",
        "text": "https://ontarionightsky.com/sites/steens-mountain.txt"
      }
    },
    {
      "id": "oregon-outback-dss",
      "name": "Oregon Outback International Dark Sky Sanctuary",
      "shortName": "Oregon Outback",
      "region": "SE OR",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 42.75,
        "longitude": -120
      },
      "summary": "The world's largest Dark Sky Sanctuary — over 2.5 million acres of Bortle 1.",
      "links": {
        "app": "https://ontarionightsky.com/?site=oregon-outback-dss",
        "json": "https://ontarionightsky.com/sites/oregon-outback-dss.json",
        "text": "https://ontarionightsky.com/sites/oregon-outback-dss.txt"
      }
    },
    {
      "id": "prineville-reservoir-sp",
      "name": "Prineville Reservoir State Park",
      "shortName": "Prineville Reservoir",
      "region": "Central OR",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 44.15,
        "longitude": -120.75
      },
      "summary": "First IDA-certified state park in Oregon — high-desert reservoir DSP.",
      "links": {
        "app": "https://ontarionightsky.com/?site=prineville-reservoir-sp",
        "json": "https://ontarionightsky.com/sites/prineville-reservoir-sp.json",
        "text": "https://ontarionightsky.com/sites/prineville-reservoir-sp.txt"
      }
    },
    {
      "id": "cottonwood-canyon-sp",
      "name": "Cottonwood Canyon State Park",
      "shortName": "Cottonwood Canyon",
      "region": "North-central OR",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.45,
        "longitude": -120.4667
      },
      "summary": "John Day River canyon DSP — Oregon's second-largest state park.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cottonwood-canyon-sp",
        "json": "https://ontarionightsky.com/sites/cottonwood-canyon-sp.json",
        "text": "https://ontarionightsky.com/sites/cottonwood-canyon-sp.txt"
      }
    },
    {
      "id": "olympic-np",
      "name": "Olympic National Park",
      "shortName": "Olympic NP",
      "region": "NW WA",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 47.8021,
        "longitude": -123.6044
      },
      "summary": "Coast, rainforest and alpine — Hurricane Ridge and coastal beaches are darkest.",
      "links": {
        "app": "https://ontarionightsky.com/?site=olympic-np",
        "json": "https://ontarionightsky.com/sites/olympic-np.json",
        "text": "https://ontarionightsky.com/sites/olympic-np.txt"
      }
    },
    {
      "id": "north-cascades-np",
      "name": "North Cascades National Park",
      "shortName": "North Cascades",
      "region": "Northern WA",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 48.7,
        "longitude": -121.2
      },
      "summary": "American Alps — glaciated peaks under Bortle 2 sky.",
      "links": {
        "app": "https://ontarionightsky.com/?site=north-cascades-np",
        "json": "https://ontarionightsky.com/sites/north-cascades-np.json",
        "text": "https://ontarionightsky.com/sites/north-cascades-np.txt"
      }
    },
    {
      "id": "goldendale-observatory-sp",
      "name": "Goldendale Observatory State Park",
      "shortName": "Goldendale Observatory",
      "region": "South-central WA",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.8375,
        "longitude": -120.8153
      },
      "summary": "IDA-certified public observatory with a 24.5-inch reflector.",
      "links": {
        "app": "https://ontarionightsky.com/?site=goldendale-observatory-sp",
        "json": "https://ontarionightsky.com/sites/goldendale-observatory-sp.json",
        "text": "https://ontarionightsky.com/sites/goldendale-observatory-sp.txt"
      }
    },
    {
      "id": "crater-lake-np",
      "name": "Crater Lake National Park",
      "shortName": "Crater Lake",
      "region": "SW OR",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 42.9446,
        "longitude": -122.109
      },
      "summary": "6,000 ft caldera rim — cold, clear, world-class dark.",
      "links": {
        "app": "https://ontarionightsky.com/?site=crater-lake-np",
        "json": "https://ontarionightsky.com/sites/crater-lake-np.json",
        "text": "https://ontarionightsky.com/sites/crater-lake-np.txt"
      }
    },
    {
      "id": "denali-np",
      "name": "Denali National Park",
      "shortName": "Denali",
      "region": "Interior AK",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 63.1148,
        "longitude": -151.1926
      },
      "summary": "6-million-acre wilderness at 63° north — aurora September through April.",
      "links": {
        "app": "https://ontarionightsky.com/?site=denali-np",
        "json": "https://ontarionightsky.com/sites/denali-np.json",
        "text": "https://ontarionightsky.com/sites/denali-np.txt"
      }
    },
    {
      "id": "gates-of-the-arctic-np",
      "name": "Gates of the Arctic National Park",
      "shortName": "Gates of the Arctic",
      "region": "Northern AK",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 67.7833,
        "longitude": -153.3
      },
      "summary": "Above the Arctic Circle — polar night and continuous aurora in winter.",
      "links": {
        "app": "https://ontarionightsky.com/?site=gates-of-the-arctic-np",
        "json": "https://ontarionightsky.com/sites/gates-of-the-arctic-np.json",
        "text": "https://ontarionightsky.com/sites/gates-of-the-arctic-np.txt"
      }
    },
    {
      "id": "wrangell-st-elias-np",
      "name": "Wrangell-St. Elias National Park",
      "shortName": "Wrangell-St. Elias",
      "region": "SE AK",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 61.7104,
        "longitude": -142.9857
      },
      "summary": "Largest US national park — Bortle 1 across an area the size of Switzerland.",
      "links": {
        "app": "https://ontarionightsky.com/?site=wrangell-st-elias-np",
        "json": "https://ontarionightsky.com/sites/wrangell-st-elias-np.json",
        "text": "https://ontarionightsky.com/sites/wrangell-st-elias-np.txt"
      }
    },
    {
      "id": "glacier-np",
      "name": "Glacier National Park",
      "shortName": "Glacier NP",
      "region": "Northern MT",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 48.7596,
        "longitude": -113.787
      },
      "summary": "US half of Waterton-Glacier International Dark Sky Park.",
      "links": {
        "app": "https://ontarionightsky.com/?site=glacier-np",
        "json": "https://ontarionightsky.com/sites/glacier-np.json",
        "text": "https://ontarionightsky.com/sites/glacier-np.txt"
      }
    },
    {
      "id": "yellowstone-np",
      "name": "Yellowstone National Park",
      "shortName": "Yellowstone",
      "region": "WY/MT/ID",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 44.428,
        "longitude": -110.5885
      },
      "summary": "Geothermal wilderness at 7,500 ft — dark skies over Grand Prismatic and beyond.",
      "links": {
        "app": "https://ontarionightsky.com/?site=yellowstone-np",
        "json": "https://ontarionightsky.com/sites/yellowstone-np.json",
        "text": "https://ontarionightsky.com/sites/yellowstone-np.txt"
      }
    },
    {
      "id": "grand-teton-np",
      "name": "Grand Teton National Park",
      "shortName": "Grand Teton",
      "region": "NW WY",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 43.7904,
        "longitude": -110.6818
      },
      "summary": "Teton silhouettes over Snake River — Bortle 2 valley skies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=grand-teton-np",
        "json": "https://ontarionightsky.com/sites/grand-teton-np.json",
        "text": "https://ontarionightsky.com/sites/grand-teton-np.txt"
      }
    },
    {
      "id": "badlands-np",
      "name": "Badlands National Park",
      "shortName": "Badlands",
      "region": "SW SD",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 43.8554,
        "longitude": -102.3397
      },
      "summary": "Eroded pinnacles under one of the darkest skies east of the Rockies.",
      "links": {
        "app": "https://ontarionightsky.com/?site=badlands-np",
        "json": "https://ontarionightsky.com/sites/badlands-np.json",
        "text": "https://ontarionightsky.com/sites/badlands-np.txt"
      }
    },
    {
      "id": "theodore-roosevelt-np",
      "name": "Theodore Roosevelt National Park",
      "shortName": "Theodore Roosevelt",
      "region": "Western ND",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 46.979,
        "longitude": -103.5387
      },
      "summary": "IDA-certified badlands park — bison, aurora, no city domes.",
      "links": {
        "app": "https://ontarionightsky.com/?site=theodore-roosevelt-np",
        "json": "https://ontarionightsky.com/sites/theodore-roosevelt-np.json",
        "text": "https://ontarionightsky.com/sites/theodore-roosevelt-np.txt"
      }
    },
    {
      "id": "buffalo-national-river",
      "name": "Buffalo National River",
      "shortName": "Buffalo National River",
      "region": "Northern AR",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 36.025,
        "longitude": -92.75
      },
      "summary": "IDA-certified — Ozark river corridor with cliff-top observing.",
      "links": {
        "app": "https://ontarionightsky.com/?site=buffalo-national-river",
        "json": "https://ontarionightsky.com/sites/buffalo-national-river.json",
        "text": "https://ontarionightsky.com/sites/buffalo-national-river.txt"
      }
    },
    {
      "id": "voyageurs-np",
      "name": "Voyageurs National Park",
      "shortName": "Voyageurs",
      "region": "Northern MN",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 48.5,
        "longitude": -92.8833
      },
      "summary": "IDA gold-tier — lake wilderness on the Canadian border, aurora regular.",
      "links": {
        "app": "https://ontarionightsky.com/?site=voyageurs-np",
        "json": "https://ontarionightsky.com/sites/voyageurs-np.json",
        "text": "https://ontarionightsky.com/sites/voyageurs-np.txt"
      }
    },
    {
      "id": "boundary-waters",
      "name": "Boundary Waters Canoe Area Wilderness",
      "shortName": "Boundary Waters",
      "region": "Northern MN",
      "bortleClass": 1,
      "coordinates": {
        "latitude": 47.9333,
        "longitude": -91.0333
      },
      "summary": "IDA sanctuary jointly with Quetico — Bortle 1 canoe wilderness.",
      "links": {
        "app": "https://ontarionightsky.com/?site=boundary-waters",
        "json": "https://ontarionightsky.com/sites/boundary-waters.json",
        "text": "https://ontarionightsky.com/sites/boundary-waters.txt"
      }
    },
    {
      "id": "isle-royale-np",
      "name": "Isle Royale National Park",
      "shortName": "Isle Royale",
      "region": "Lake Superior, MI",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 47.9959,
        "longitude": -88.9091
      },
      "summary": "IDA-certified island wilderness — ferry-in, no roads, extraordinary dark.",
      "links": {
        "app": "https://ontarionightsky.com/?site=isle-royale-np",
        "json": "https://ontarionightsky.com/sites/isle-royale-np.json",
        "text": "https://ontarionightsky.com/sites/isle-royale-np.txt"
      }
    },
    {
      "id": "headlands-dsp",
      "name": "Headlands International Dark Sky Park",
      "shortName": "Headlands",
      "region": "Northern MI",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.7833,
        "longitude": -84.7833
      },
      "summary": "IDA-certified Lake Michigan shore park — free public programs year-round.",
      "links": {
        "app": "https://ontarionightsky.com/?site=headlands-dsp",
        "json": "https://ontarionightsky.com/sites/headlands-dsp.json",
        "text": "https://ontarionightsky.com/sites/headlands-dsp.txt"
      }
    },
    {
      "id": "dr-tk-lawless-park",
      "name": "Dr. T.K. Lawless Park",
      "shortName": "Dr. T.K. Lawless Park",
      "region": "SW MI",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 41.85,
        "longitude": -85.95
      },
      "summary": "IDA-certified county park with hilltop viewing pads.",
      "links": {
        "app": "https://ontarionightsky.com/?site=dr-tk-lawless-park",
        "json": "https://ontarionightsky.com/sites/dr-tk-lawless-park.json",
        "text": "https://ontarionightsky.com/sites/dr-tk-lawless-park.txt"
      }
    },
    {
      "id": "newport-sp-wi",
      "name": "Newport State Park",
      "shortName": "Newport SP",
      "region": "Door County, WI",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 45.25,
        "longitude": -86.9833
      },
      "summary": "IDA-certified — Wisconsin's only DSP, Lake Michigan shoreline.",
      "links": {
        "app": "https://ontarionightsky.com/?site=newport-sp-wi",
        "json": "https://ontarionightsky.com/sites/newport-sp-wi.json",
        "text": "https://ontarionightsky.com/sites/newport-sp-wi.txt"
      }
    },
    {
      "id": "shenandoah-np",
      "name": "Shenandoah National Park",
      "shortName": "Shenandoah",
      "region": "Northern VA",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 38.2928,
        "longitude": -78.6796
      },
      "summary": "Big Meadows and Skyline Drive overlooks — dark for the mid-Atlantic.",
      "links": {
        "app": "https://ontarionightsky.com/?site=shenandoah-np",
        "json": "https://ontarionightsky.com/sites/shenandoah-np.json",
        "text": "https://ontarionightsky.com/sites/shenandoah-np.txt"
      }
    },
    {
      "id": "staunton-river-sp",
      "name": "Staunton River State Park",
      "shortName": "Staunton River",
      "region": "Southern VA",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 36.6833,
        "longitude": -78.6667
      },
      "summary": "IDA-certified — hosts the annual Staunton River Star Party.",
      "links": {
        "app": "https://ontarionightsky.com/?site=staunton-river-sp",
        "json": "https://ontarionightsky.com/sites/staunton-river-sp.json",
        "text": "https://ontarionightsky.com/sites/staunton-river-sp.txt"
      }
    },
    {
      "id": "rappahannock-county-park",
      "name": "Rappahannock County Park",
      "shortName": "Rappahannock County Park",
      "region": "Northern VA",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 38.6667,
        "longitude": -78.1667
      },
      "summary": "IDA-certified — Blue Ridge foothill park with a dedicated observing field.",
      "links": {
        "app": "https://ontarionightsky.com/?site=rappahannock-county-park",
        "json": "https://ontarionightsky.com/sites/rappahannock-county-park.json",
        "text": "https://ontarionightsky.com/sites/rappahannock-county-park.txt"
      }
    },
    {
      "id": "mayland-earth-sky",
      "name": "Mayland Earth to Sky Park & Bare Dark Sky Observatory",
      "shortName": "Mayland Earth to Sky",
      "region": "Western NC",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 35.9333,
        "longitude": -82.25
      },
      "summary": "IDA-certified with a 34-inch research telescope open to the public.",
      "links": {
        "app": "https://ontarionightsky.com/?site=mayland-earth-sky",
        "json": "https://ontarionightsky.com/sites/mayland-earth-sky.json",
        "text": "https://ontarionightsky.com/sites/mayland-earth-sky.txt"
      }
    },
    {
      "id": "pisgah-astronomical-research-institute",
      "name": "PARI (Pisgah Astronomical Research Institute)",
      "shortName": "PARI",
      "region": "Western NC",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 35.2,
        "longitude": -82.8667
      },
      "summary": "Former NASA tracking station — public star parties and radio-astronomy tours.",
      "links": {
        "app": "https://ontarionightsky.com/?site=pisgah-astronomical-research-institute",
        "json": "https://ontarionightsky.com/sites/pisgah-astronomical-research-institute.json",
        "text": "https://ontarionightsky.com/sites/pisgah-astronomical-research-institute.txt"
      }
    },
    {
      "id": "cape-lookout-ns",
      "name": "Cape Lookout National Seashore",
      "shortName": "Cape Lookout",
      "region": "Outer Banks, NC",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 34.6167,
        "longitude": -76.5333
      },
      "summary": "IDA-certified barrier-island seashore — Atlantic horizon, no light domes.",
      "links": {
        "app": "https://ontarionightsky.com/?site=cape-lookout-ns",
        "json": "https://ontarionightsky.com/sites/cape-lookout-ns.json",
        "text": "https://ontarionightsky.com/sites/cape-lookout-ns.txt"
      }
    },
    {
      "id": "stephen-foster-sp",
      "name": "Stephen C. Foster State Park",
      "shortName": "Stephen Foster SP",
      "region": "Okefenokee, GA",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 30.8333,
        "longitude": -82.35
      },
      "summary": "First IDA-certified DSP in the eastern US — Okefenokee swamp horizons.",
      "links": {
        "app": "https://ontarionightsky.com/?site=stephen-foster-sp",
        "json": "https://ontarionightsky.com/sites/stephen-foster-sp.json",
        "text": "https://ontarionightsky.com/sites/stephen-foster-sp.txt"
      }
    },
    {
      "id": "kissimmee-prairie-sp",
      "name": "Kissimmee Prairie Preserve State Park",
      "shortName": "Kissimmee Prairie",
      "region": "Central FL",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 27.6167,
        "longitude": -81.05
      },
      "summary": "IDA-certified — Florida's darkest and one of the flattest horizons in the state.",
      "links": {
        "app": "https://ontarionightsky.com/?site=kissimmee-prairie-sp",
        "json": "https://ontarionightsky.com/sites/kissimmee-prairie-sp.json",
        "text": "https://ontarionightsky.com/sites/kissimmee-prairie-sp.txt"
      }
    },
    {
      "id": "big-cypress-npr",
      "name": "Big Cypress National Preserve",
      "shortName": "Big Cypress",
      "region": "Southern FL",
      "bortleClass": 3,
      "coordinates": {
        "latitude": 25.8667,
        "longitude": -81.0333
      },
      "summary": "IDA-certified — swamp preserve adjacent to Everglades.",
      "links": {
        "app": "https://ontarionightsky.com/?site=big-cypress-npr",
        "json": "https://ontarionightsky.com/sites/big-cypress-npr.json",
        "text": "https://ontarionightsky.com/sites/big-cypress-npr.txt"
      }
    },
    {
      "id": "everglades-np",
      "name": "Everglades National Park",
      "shortName": "Everglades",
      "region": "Southern FL",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 25.2866,
        "longitude": -80.8987
      },
      "summary": "River-of-grass horizons — Miami dome to the east, dark to the south and west.",
      "links": {
        "app": "https://ontarionightsky.com/?site=everglades-np",
        "json": "https://ontarionightsky.com/sites/everglades-np.json",
        "text": "https://ontarionightsky.com/sites/everglades-np.txt"
      }
    },
    {
      "id": "middle-fork-forest-preserve",
      "name": "Middle Fork River Forest Preserve",
      "shortName": "Middle Fork",
      "region": "East-central IL",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 40.2833,
        "longitude": -87.75
      },
      "summary": "IDA-certified — Illinois's only DSP and the darkest spot in the state.",
      "links": {
        "app": "https://ontarionightsky.com/?site=middle-fork-forest-preserve",
        "json": "https://ontarionightsky.com/sites/middle-fork-forest-preserve.json",
        "text": "https://ontarionightsky.com/sites/middle-fork-forest-preserve.txt"
      }
    },
    {
      "id": "geauga-observatory-park",
      "name": "Geauga Observatory Park",
      "shortName": "Geauga Observatory Park",
      "region": "NE OH",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 41.5722,
        "longitude": -81.0611
      },
      "summary": "IDA-certified public observatory east of Cleveland.",
      "links": {
        "app": "https://ontarionightsky.com/?site=geauga-observatory-park",
        "json": "https://ontarionightsky.com/sites/geauga-observatory-park.json",
        "text": "https://ontarionightsky.com/sites/geauga-observatory-park.txt"
      }
    },
    {
      "id": "katahdin-woods-waters-nm",
      "name": "Katahdin Woods and Waters National Monument",
      "shortName": "Katahdin Woods",
      "region": "Northern ME",
      "bortleClass": 2,
      "coordinates": {
        "latitude": 46.1,
        "longitude": -68.7
      },
      "summary": "IDA sanctuary — Maine's darkest, aurora when Kp ≥ 4.",
      "links": {
        "app": "https://ontarionightsky.com/?site=katahdin-woods-waters-nm",
        "json": "https://ontarionightsky.com/sites/katahdin-woods-waters-nm.json",
        "text": "https://ontarionightsky.com/sites/katahdin-woods-waters-nm.txt"
      }
    },
    {
      "id": "acadia-np",
      "name": "Acadia National Park",
      "shortName": "Acadia",
      "region": "Coastal ME",
      "bortleClass": 4,
      "coordinates": {
        "latitude": 44.3386,
        "longitude": -68.2733
      },
      "summary": "Cadillac Mountain and Sand Beach — coastal Bortle 4 sky, dark for the east.",
      "links": {
        "app": "https://ontarionightsky.com/?site=acadia-np",
        "json": "https://ontarionightsky.com/sites/acadia-np.json",
        "text": "https://ontarionightsky.com/sites/acadia-np.txt"
      }
    }
  ]
}