{
 "region": "porkies",
 "region_name": "Porcupine Mountains / Lake Superior",
 "tz": "America/Detroit",
 "run_time": "2026-10-19T22:30-04:00",
 "morning": "2026-10-20",
 "sites": [
  {
   "id": "home",
   "name": "Lake of the Clouds scenic overlook (DNR waypoint 'LAKE OF CLOUDS')",
   "lat": 46.803333,
   "lon": -89.763667,
   "elevation_m": 416.2,
   "position": "ridge",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season.",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "lake (Lake of the Clouds)",
    "river (Big Carp River outlet)",
    "escarpment relief",
    "valley below"
   ],
   "features_source": "Coordinates: Michigan DNR GPS waypoint list, 'LAKE OF CLOUDS N46 48.200 W89 45.820' (https://www.michigan.gov/-/media/Project/Websites/dnr/Documents/Education/visitorcenters/porkiesgpscoordinates.pdf); the DNR does not label it 'overlook', so treating it as the overlook is my inference from its 416.2 m cliff-top elevation. Nominatim 'Lake of the Clouds Overlook' is the access-road centroid 46.8065750,-89.7656277 (390 m away, 356.9 m). USGS EPQS 416.195 m here vs lake surface 327.803 m = 88.4 m above the lake. Lake polygon: Nominatim OSM way 34449102.",
   "drive_minutes_est": 32,
   "airspace_note": "Not researched (outside ticket). Nearest ICAO fields from this point, great-circle: KOGM 30.5 km, KIWD 41.6 km, KCMX 104.9 km.",
   "notes": "Drive time is OSRM public router from DNR park headquarters waypoint, 13.2 km; implied 24.5 km/h because OSM tags M-107 'unclassified' with no maxspeed, so this probably overstates real time. DNR calls the road 'County Road M-107'. Gate at the overlook: not found on any michigan.gov page.",
   "look": "from the escarpment: the bank cresting the ridge toward you, or a sea of cloud below if the top is beneath you; valley radiation fog in the Carp River below",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:24",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:40",
    "sun_12deg": "09:45"
   },
   "score": {
    "fog_probability": 0.01,
    "raw_blend": 0.207,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.554,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.55); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 10.8 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:39",
     "est_end": "09:09",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.01,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 10.799999999999999,
       "dpd_key": 11.0,
       "rh_max": 47,
       "wind_mean": 11.125,
       "wind_after": 11.65,
       "gust_max": 20.2,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 40900.0,
       "low_sunrise": 0.0,
       "vis_min": 40500.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.5,
       "t_key": 9.4,
       "cooling": 2.0999999999999996,
       "t_min_night": 9.4,
       "td_afternoon": 0.15,
       "crossover": 9.25,
       "td_drop": 1.75,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.3000000000000682,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 9.7,
         "Td": -3.9,
         "RH": 38,
         "wind": 10.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 50900.0
        },
        {
         "t": "23:00",
         "T": 10.1,
         "Td": -1.9,
         "RH": 43,
         "wind": 12.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 44800.0
        },
        {
         "t": "00:00",
         "T": 10.7,
         "Td": -2.0,
         "RH": 41,
         "wind": 14.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 47600.0
        },
        {
         "t": "01:00",
         "T": 10.8,
         "Td": -0.9,
         "RH": 44,
         "wind": 16.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 43100.0
        },
        {
         "t": "02:00",
         "T": 11.0,
         "Td": 0.7,
         "RH": 49,
         "wind": 15.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38300.0
        },
        {
         "t": "03:00",
         "T": 10.9,
         "Td": 0.3,
         "RH": 48,
         "wind": 12.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39500.0
        },
        {
         "t": "04:00",
         "T": 10.6,
         "Td": -2.1,
         "RH": 41,
         "wind": 12.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 47000.0
        },
        {
         "t": "05:00",
         "T": 10.2,
         "Td": -0.6,
         "RH": 47,
         "wind": 11.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 40500.0
        },
        {
         "t": "06:00",
         "T": 9.8,
         "Td": -1.2,
         "RH": 46,
         "wind": 10.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 41700.0
        },
        {
         "t": "07:00",
         "T": 9.6,
         "Td": -2.1,
         "RH": 44,
         "wind": 10.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 43300.0
        },
        {
         "t": "08:00",
         "T": 9.4,
         "Td": -1.6,
         "RH": 46,
         "wind": 11.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 40900.0
        },
        {
         "t": "09:00",
         "T": 9.6,
         "Td": -0.1,
         "RH": 51,
         "wind": 12.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36800.0
        },
        {
         "t": "10:00",
         "T": 11.2,
         "Td": 1.4,
         "RH": 51,
         "wind": 11.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35900.0
        },
        {
         "t": "11:00",
         "T": 13.1,
         "Td": 2.4,
         "RH": 48,
         "wind": 7.3,
         "low": 3,
         "mid": 0,
         "high": 0,
         "vis": 38800.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 10.8 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.09,
        "why": "mean 10 m wind in the 3 h before sunrise = 11.1 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.2,
        "why": "temperature fall 18:00 \u2192 sunrise = 2.1 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 9.4 \u00b0C vs afternoon dewpoint 0.1 \u00b0C \u2192 +9.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 40.5 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 10.8 \u00b0C: air does not saturate"
       },
       {
        "mult": 0.25,
        "why": "wind 11 kt: too much mixing for radiation fog"
       }
      ],
      "raw": 0.016
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 4.5,
       "dpd_key": 4.5,
       "rh_max": 73,
       "wind_mean": 5.0,
       "wind_after": 4.7,
       "gust_max": 9.3,
       "cloud_mh_night": 6.545454545454546,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 3.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 9.6,
       "t_key": 5.5,
       "cooling": 4.1,
       "t_min_night": 4.7,
       "td_afternoon": 2.75,
       "crossover": 1.9500000000000002,
       "td_drop": 1.75,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 5.7,
         "Td": 2.1,
         "RH": 78,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 5.2,
         "Td": 1.6,
         "RH": 78,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 5.0,
         "Td": 1.4,
         "RH": 78,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 4.7,
         "Td": 1.2,
         "RH": 78,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 4.9,
         "Td": 1.2,
         "RH": 77,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 5.2,
         "Td": 1.1,
         "RH": 75,
         "wind": 5.2,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 5.3,
         "Td": 1.0,
         "RH": 74,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 5.4,
         "Td": 0.7,
         "RH": 72,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 5.4,
         "Td": -0.1,
         "RH": 68,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 5.3,
         "Td": 0.6,
         "RH": 72,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 5.5,
         "Td": 1.0,
         "RH": 73,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 6.5,
         "Td": 1.8,
         "RH": 72,
         "wind": 4.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 8.3,
         "Td": 2.7,
         "RH": 68,
         "wind": 4.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 9.9,
         "Td": 3.6,
         "RH": 65,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 4.5 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.0 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 7 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.44,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.1 \u00b0C"
       },
       "moisture": {
        "score": 0.41,
        "why": "crossover: forecast night minimum 4.7 \u00b0C vs afternoon dewpoint 2.8 \u00b0C \u2192 +2.0 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 4.5 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.135
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1999999999999997,
       "dpd_key": 3.1999999999999997,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.6,
       "t_key": 6.1,
       "cooling": 4.5,
       "t_min_night": 5.6,
       "td_afternoon": 1.5499999999999998,
       "crossover": 4.05,
       "td_drop": -1.35,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 5.8,
         "Td": 3.1,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 5.6,
         "Td": 2.7,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 5.6,
         "Td": 2.8,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 5.9,
         "Td": 3.1,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 6.2,
         "Td": 3.2,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.5,
         "Td": 3.1,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.7,
         "Td": 2.8,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 6.8,
         "Td": 2.5,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 6.5,
         "Td": 2.5,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 5.9,
         "Td": 2.6,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 6.1,
         "Td": 2.9,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 7.5,
         "Td": 3.6,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 9.6,
         "Td": 4.2,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 11.7,
         "Td": 4.9,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.12,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.2 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 5.6 \u00b0C vs afternoon dewpoint 1.5 \u00b0C \u2192 +4.0 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.408
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 2.1000000000000005,
       "dpd_key": 2.2,
       "rh_max": 86,
       "wind_mean": 3.3499999999999996,
       "wind_after": 3.65,
       "gust_max": 11.7,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.9,
       "t_key": 5.2,
       "cooling": 6.7,
       "t_min_night": 5.2,
       "td_afternoon": -0.7999999999999999,
       "crossover": 6.0,
       "td_drop": -3.8,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.20000000000004547,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.2,
         "Td": 1.3,
         "RH": 66,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 6.8,
         "Td": 0.4,
         "RH": 64,
         "wind": 3.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 6.6,
         "Td": 1.3,
         "RH": 69,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 6.6,
         "Td": 1.7,
         "RH": 71,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 6.4,
         "Td": 2.3,
         "RH": 75,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.2,
         "Td": 3.2,
         "RH": 81,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.1,
         "Td": 3.4,
         "RH": 83,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 5.8,
         "Td": 3.5,
         "RH": 85,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 5.6,
         "Td": 3.4,
         "RH": 86,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 5.4,
         "Td": 3.3,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 5.2,
         "Td": 3.0,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 5.3,
         "Td": 3.0,
         "RH": 85,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 8.4,
         "Td": 3.2,
         "RH": 70,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 11.2,
         "Td": 3.9,
         "RH": 61,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.37,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.3 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.83,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.7 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 5.2 \u00b0C vs afternoon dewpoint -0.8 \u00b0C \u2192 +6.0 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 86 %"
       }
      },
      "gates": [],
      "raw": 0.57
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.218,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:16+00:00",
     "elevation_m": 412.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 412.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 412.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 412.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 9.4,
   "dawn_wind_kt": 11.2
  },
  {
   "id": "big-carp-river-valley-floor",
   "name": "Big Carp River valley floor at the Lake of the Clouds outlet (North Mirror Lake Trail vertex)",
   "lat": 46.8011827,
   "lon": -89.761865,
   "elevation_m": 329.0,
   "position": "valley",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season. Reached on foot only (trail descends from the overlook parking area).",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "lake outlet",
    "river (Big Carp River)",
    "valley floor",
    "escarpment above"
   ],
   "features_source": "CONTRADICTS TICKET: the point on the Big Carp River Trail nearest the outlet is NOT valley floor. DNR trail text: \"Travels the escarpment ridge west from Lake of the Clouds then descends into the valley\". Nearest Big Carp River Trail vertex (46.8029322,-89.7647065, Nominatim way 742703652) is 283 m from the outlet at 419.8 m, i.e. 92 m above the lake. Sampled trail vertices to 3.5 km stay 348-447 m while the river runs 315-328 m. Used instead the nearest vertex of North Mirror Lake Trail (Nominatim way 414830762; DNR: \"From the Lake of the Clouds parking area, the trail descends into the Big Carp River valley\"), 24 m from the outlet (lake polygon west-most vertex 46.8013852,-89.7617656). USGS EPQS 328.989 m; lake surface 327.803 m.",
   "drive_minutes_est": 32,
   "airspace_note": "Not researched. KOGM 30.4 km, KIWD 41.5 km, KCMX 104.8 km.",
   "notes": "Drive time is to the overlook road (OSRM snaps 391 m from the point); the rest is a walk down the escarpment. Trail walking time not found.",
   "look": "inside valley fog at dawn; the overlook above is the vantage for it",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:24",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:40",
    "sun_12deg": "09:45"
   },
   "score": {
    "fog_probability": 0.01,
    "raw_blend": 0.207,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.554,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.55); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 10.9 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:39",
     "est_end": "09:09",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.01,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 10.899999999999999,
       "dpd_key": 11.1,
       "rh_max": 47,
       "wind_mean": 11.125,
       "wind_after": 11.65,
       "gust_max": 20.2,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 40900.0,
       "low_sunrise": 0.0,
       "vis_min": 40500.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.0,
       "t_key": 9.9,
       "cooling": 2.0999999999999996,
       "t_min_night": 9.9,
       "td_afternoon": 0.55,
       "crossover": 9.35,
       "td_drop": 1.75,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.39999999999997726,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 10.2,
         "Td": -3.5,
         "RH": 38,
         "wind": 10.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 50900.0
        },
        {
         "t": "23:00",
         "T": 10.6,
         "Td": -1.4,
         "RH": 43,
         "wind": 12.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 44800.0
        },
        {
         "t": "00:00",
         "T": 11.2,
         "Td": -1.6,
         "RH": 41,
         "wind": 14.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 47600.0
        },
        {
         "t": "01:00",
         "T": 11.3,
         "Td": -0.5,
         "RH": 44,
         "wind": 16.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 43100.0
        },
        {
         "t": "02:00",
         "T": 11.5,
         "Td": 1.1,
         "RH": 49,
         "wind": 15.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38300.0
        },
        {
         "t": "03:00",
         "T": 11.4,
         "Td": 0.8,
         "RH": 48,
         "wind": 12.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39500.0
        },
        {
         "t": "04:00",
         "T": 11.1,
         "Td": -1.6,
         "RH": 41,
         "wind": 12.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 47000.0
        },
        {
         "t": "05:00",
         "T": 10.7,
         "Td": -0.2,
         "RH": 47,
         "wind": 11.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 40500.0
        },
        {
         "t": "06:00",
         "T": 10.3,
         "Td": -0.8,
         "RH": 46,
         "wind": 10.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 41700.0
        },
        {
         "t": "07:00",
         "T": 10.1,
         "Td": -1.6,
         "RH": 44,
         "wind": 10.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 43300.0
        },
        {
         "t": "08:00",
         "T": 9.9,
         "Td": -1.2,
         "RH": 46,
         "wind": 11.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 40900.0
        },
        {
         "t": "09:00",
         "T": 10.1,
         "Td": 0.4,
         "RH": 51,
         "wind": 12.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36800.0
        },
        {
         "t": "10:00",
         "T": 11.7,
         "Td": 1.9,
         "RH": 51,
         "wind": 11.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35900.0
        },
        {
         "t": "11:00",
         "T": 13.6,
         "Td": 2.8,
         "RH": 48,
         "wind": 7.3,
         "low": 3,
         "mid": 0,
         "high": 0,
         "vis": 38800.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 10.9 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.09,
        "why": "mean 10 m wind in the 3 h before sunrise = 11.1 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.2,
        "why": "temperature fall 18:00 \u2192 sunrise = 2.1 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 9.9 \u00b0C vs afternoon dewpoint 0.6 \u00b0C \u2192 +9.3 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 40.5 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 10.9 \u00b0C: air does not saturate"
       },
       {
        "mult": 0.25,
        "why": "wind 11 kt: too much mixing for radiation fog"
       }
      ],
      "raw": 0.016
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 4.5,
       "dpd_key": 4.5,
       "rh_max": 73,
       "wind_mean": 5.0,
       "wind_after": 4.7,
       "gust_max": 9.3,
       "cloud_mh_night": 6.545454545454546,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 3.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.1,
       "t_key": 6.0,
       "cooling": 4.1,
       "t_min_night": 5.2,
       "td_afternoon": 3.1500000000000004,
       "crossover": 2.05,
       "td_drop": 1.6500000000000004,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.2,
         "Td": 2.6,
         "RH": 78,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 5.7,
         "Td": 2.1,
         "RH": 78,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 5.5,
         "Td": 1.9,
         "RH": 78,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 5.2,
         "Td": 1.6,
         "RH": 78,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 5.4,
         "Td": 1.7,
         "RH": 77,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 5.7,
         "Td": 1.6,
         "RH": 75,
         "wind": 5.2,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 5.8,
         "Td": 1.5,
         "RH": 74,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 5.9,
         "Td": 1.2,
         "RH": 72,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 5.9,
         "Td": 0.4,
         "RH": 68,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 5.8,
         "Td": 1.1,
         "RH": 72,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 6.0,
         "Td": 1.5,
         "RH": 73,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 7.0,
         "Td": 2.3,
         "RH": 72,
         "wind": 4.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 8.8,
         "Td": 3.2,
         "RH": 68,
         "wind": 4.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 10.4,
         "Td": 4.1,
         "RH": 65,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 4.5 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.0 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 7 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.44,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.1 \u00b0C"
       },
       "moisture": {
        "score": 0.39,
        "why": "crossover: forecast night minimum 5.2 \u00b0C vs afternoon dewpoint 3.2 \u00b0C \u2192 +2.0 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 4.5 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.135
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1999999999999997,
       "dpd_key": 3.1999999999999997,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.1,
       "t_key": 6.6,
       "cooling": 4.5,
       "t_min_night": 6.1,
       "td_afternoon": 2.0,
       "crossover": 4.1,
       "td_drop": -1.4,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.3,
         "Td": 3.6,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 6.1,
         "Td": 3.2,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 6.1,
         "Td": 3.3,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 6.4,
         "Td": 3.6,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 6.7,
         "Td": 3.7,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 7.0,
         "Td": 3.6,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 7.2,
         "Td": 3.3,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 7.3,
         "Td": 3.0,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 7.0,
         "Td": 3.0,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 6.4,
         "Td": 3.0,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 6.6,
         "Td": 3.4,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 8.0,
         "Td": 4.0,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 10.1,
         "Td": 4.7,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 12.2,
         "Td": 5.3,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.12,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.2 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 6.1 \u00b0C vs afternoon dewpoint 2.0 \u00b0C \u2192 +4.1 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.408
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 2.1000000000000005,
       "dpd_key": 2.2,
       "rh_max": 86,
       "wind_mean": 3.3499999999999996,
       "wind_after": 3.65,
       "gust_max": 11.7,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.4,
       "t_key": 5.7,
       "cooling": 6.7,
       "t_min_night": 5.7,
       "td_afternoon": -0.4,
       "crossover": 6.1000000000000005,
       "td_drop": -3.9,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.10000000000002274,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.7,
         "Td": 1.8,
         "RH": 66,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 7.3,
         "Td": 0.9,
         "RH": 64,
         "wind": 3.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 7.1,
         "Td": 1.8,
         "RH": 69,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 7.1,
         "Td": 2.2,
         "RH": 71,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 6.9,
         "Td": 2.7,
         "RH": 75,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.7,
         "Td": 3.7,
         "RH": 81,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.6,
         "Td": 3.9,
         "RH": 83,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 6.3,
         "Td": 4.0,
         "RH": 85,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 6.1,
         "Td": 3.9,
         "RH": 86,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 5.9,
         "Td": 3.8,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 5.7,
         "Td": 3.5,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 5.8,
         "Td": 3.5,
         "RH": 85,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 8.9,
         "Td": 3.7,
         "RH": 70,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 11.7,
         "Td": 4.4,
         "RH": 61,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.37,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.3 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.83,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.7 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 5.7 \u00b0C vs afternoon dewpoint -0.4 \u00b0C \u2192 +6.1 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 86 %"
       }
      },
      "gates": [],
      "raw": 0.57
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.218,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8011827&longitude=-89.761865&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8011827&longitude=-89.761865&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 335.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8011827&longitude=-89.761865&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 335.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8011827&longitude=-89.761865&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 335.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8011827&longitude=-89.761865&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 335.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 9.9,
   "dawn_wind_kt": 11.2
  },
  {
   "id": "cuyahoga-peak",
   "name": "Cuyahoga Peak (Escarpment Trail high point candidate)",
   "lat": 46.8135567,
   "lon": -89.7159907,
   "elevation_m": 483.6,
   "position": "ridge",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season. Trail access only; DNR Escarpment Trail text: \"Follows the escarpment ridge from the Lake of the Clouds parking area to the Government Peak Trailhead on M-107.\"",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "escarpment ridge",
    "relief 156 m above Lake of the Clouds surface",
    "300 m above Lake Superior"
   ],
   "features_source": "Coordinates: Nominatim OSM node 353923662 (natural=peak). USGS EPQS 483.595 m vs Cloud Peak 459.409 m, so Cuyahoga is the higher of the two. DNR trail PDF does not name either peak, so which is 'the Escarpment Trail high point' is my pick by elevation. Lake of the Clouds is about 1.5 km west.",
   "drive_minutes_est": 20,
   "airspace_note": "Not researched. KOGM 26.8 km, KIWD 44.9 km, KCMX 101.1 km.",
   "notes": "Drive time is OSRM to the nearest road, which snaps 496 m from the peak; trailhead and hike time not found. Cloud Peak alternative: Nominatim 46.8118901,-89.7301580, 459.4 m (DNR waypoint 46.81158,-89.73095, 460.6 m), OSRM 22.8 min. DNR waypoint list names mine relics (Carp Lake Boiler, Carp Lake Adit) roughly 0.3-0.9 km from the peaks; not verified whether any counts as a 'cultural or historical site' for the 100-yard clause.",
   "look": "from the escarpment: the bank cresting the ridge toward you, or a sea of cloud below if the top is beneath you; valley radiation fog in the Carp River below",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:24",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:40",
    "sun_12deg": "09:45"
   },
   "score": {
    "fog_probability": 0.01,
    "raw_blend": 0.209,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.555,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.55); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 9.0 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:39",
     "est_end": "09:09",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.01,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 9.0,
       "dpd_key": 9.5,
       "rh_max": 53,
       "wind_mean": 13.75,
       "wind_after": 13.7,
       "gust_max": 21.6,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 36600.0,
       "low_sunrise": 0.0,
       "vis_min": 34600.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.7,
       "t_key": 7.9,
       "cooling": 2.799999999999999,
       "t_min_night": 7.9,
       "td_afternoon": 0.85,
       "crossover": 7.050000000000001,
       "td_drop": 2.45,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.39999999999997726,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 8.0,
         "Td": -3.5,
         "RH": 44,
         "wind": 8.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 43900.0
        },
        {
         "t": "23:00",
         "T": 8.1,
         "Td": -2.5,
         "RH": 47,
         "wind": 9.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 40100.0
        },
        {
         "t": "00:00",
         "T": 8.4,
         "Td": -1.7,
         "RH": 49,
         "wind": 8.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38800.0
        },
        {
         "t": "01:00",
         "T": 8.8,
         "Td": -1.3,
         "RH": 49,
         "wind": 10.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39000.0
        },
        {
         "t": "02:00",
         "T": 8.8,
         "Td": -0.3,
         "RH": 53,
         "wind": 12.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34700.0
        },
        {
         "t": "03:00",
         "T": 8.8,
         "Td": -0.2,
         "RH": 53,
         "wind": 12.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34600.0
        },
        {
         "t": "04:00",
         "T": 8.7,
         "Td": -1.1,
         "RH": 50,
         "wind": 13.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38100.0
        },
        {
         "t": "05:00",
         "T": 8.5,
         "Td": -0.5,
         "RH": 53,
         "wind": 13.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34600.0
        },
        {
         "t": "06:00",
         "T": 8.3,
         "Td": -1.3,
         "RH": 51,
         "wind": 13.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36400.0
        },
        {
         "t": "07:00",
         "T": 8.1,
         "Td": -1.9,
         "RH": 49,
         "wind": 13.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38200.0
        },
        {
         "t": "08:00",
         "T": 7.9,
         "Td": -1.6,
         "RH": 51,
         "wind": 13.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36600.0
        },
        {
         "t": "09:00",
         "T": 7.9,
         "Td": -0.3,
         "RH": 56,
         "wind": 13.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32500.0
        },
        {
         "t": "10:00",
         "T": 9.0,
         "Td": 1.2,
         "RH": 58,
         "wind": 13.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 30200.0
        },
        {
         "t": "11:00",
         "T": 10.7,
         "Td": 2.1,
         "RH": 55,
         "wind": 11.7,
         "low": 2,
         "mid": 0,
         "high": 0,
         "vis": 32500.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 9.0 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 13.8 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.24,
        "why": "temperature fall 18:00 \u2192 sunrise = 2.8 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 7.9 \u00b0C vs afternoon dewpoint 0.8 \u00b0C \u2192 +7.1 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 34.6 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 9.0 \u00b0C: air does not saturate"
       },
       {
        "mult": 0.25,
        "why": "wind 14 kt: too much mixing for radiation fog"
       }
      ],
      "raw": 0.015
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 4.3999999999999995,
       "dpd_key": 4.4,
       "rh_max": 73,
       "wind_mean": 5.3500000000000005,
       "wind_after": 5.15,
       "gust_max": 10.1,
       "cloud_mh_night": 6.363636363636363,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 3.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 9.0,
       "t_key": 4.5,
       "cooling": 4.5,
       "t_min_night": 3.3,
       "td_afternoon": 2.0,
       "crossover": 1.2999999999999998,
       "td_drop": 1.9,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 4.4,
         "Td": 1.3,
         "RH": 80,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 3.8,
         "Td": 0.7,
         "RH": 80,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 3.7,
         "Td": 0.7,
         "RH": 81,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 3.3,
         "Td": 0.4,
         "RH": 81,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 3.5,
         "Td": 0.0,
         "RH": 78,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 4.0,
         "Td": 0.2,
         "RH": 76,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 4.2,
         "Td": -0.0,
         "RH": 74,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 4.3,
         "Td": -0.1,
         "RH": 73,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 4.3,
         "Td": -1.1,
         "RH": 68,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 4.3,
         "Td": -0.3,
         "RH": 72,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 4.5,
         "Td": 0.1,
         "RH": 73,
         "wind": 5.2,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 5.7,
         "Td": 0.9,
         "RH": 71,
         "wind": 5.2,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 7.7,
         "Td": 1.8,
         "RH": 66,
         "wind": 5.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 9.4,
         "Td": 2.7,
         "RH": 63,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 4.4 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.94,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.4 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.61,
        "why": "crossover: forecast night minimum 3.3 \u00b0C vs afternoon dewpoint 2.0 \u00b0C \u2192 +1.3 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 4.4 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.139
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.0999999999999996,
       "dpd_key": 3.0999999999999996,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.1,
       "t_key": 5.6,
       "cooling": 4.5,
       "t_min_night": 5.1,
       "td_afternoon": 1.1,
       "crossover": 3.9999999999999996,
       "td_drop": -1.4,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 5.3,
         "Td": 2.6,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 5.1,
         "Td": 2.3,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 5.1,
         "Td": 2.3,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 5.4,
         "Td": 2.6,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 5.7,
         "Td": 2.7,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.0,
         "Td": 2.6,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.2,
         "Td": 2.3,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 6.3,
         "Td": 2.0,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 6.0,
         "Td": 2.1,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 5.4,
         "Td": 2.1,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 5.6,
         "Td": 2.5,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 7.0,
         "Td": 3.1,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 9.1,
         "Td": 3.7,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 11.2,
         "Td": 4.4,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.14,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 5.1 \u00b0C vs afternoon dewpoint 1.1 \u00b0C \u2192 +4.0 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.413
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 2.1000000000000005,
       "dpd_key": 2.2,
       "rh_max": 86,
       "wind_mean": 3.3499999999999996,
       "wind_after": 3.65,
       "gust_max": 11.7,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.4,
       "t_key": 4.7,
       "cooling": 6.7,
       "t_min_night": 4.7,
       "td_afternoon": -1.2,
       "crossover": 5.9,
       "td_drop": -3.7,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.1999999999999318,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.7,
         "Td": 0.8,
         "RH": 66,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 6.3,
         "Td": -0.0,
         "RH": 64,
         "wind": 3.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 6.1,
         "Td": 0.8,
         "RH": 69,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 6.1,
         "Td": 1.2,
         "RH": 71,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 5.9,
         "Td": 1.8,
         "RH": 75,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 5.7,
         "Td": 2.7,
         "RH": 81,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 5.6,
         "Td": 2.9,
         "RH": 83,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 5.3,
         "Td": 3.0,
         "RH": 85,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 5.1,
         "Td": 2.9,
         "RH": 86,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 4.9,
         "Td": 2.8,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 4.7,
         "Td": 2.5,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 4.8,
         "Td": 2.5,
         "RH": 85,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 7.9,
         "Td": 2.8,
         "RH": 70,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 10.7,
         "Td": 3.5,
         "RH": 61,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.37,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.3 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.83,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.7 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 4.7 \u00b0C vs afternoon dewpoint -1.2 \u00b0C \u2192 +5.9 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 86 %"
       }
      },
      "gates": [],
      "raw": 0.57
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.218,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8135567&longitude=-89.7159907&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8135567&longitude=-89.7159907&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 485.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8135567&longitude=-89.7159907&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 485.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8135567&longitude=-89.7159907&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 485.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8135567&longitude=-89.7159907&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 485.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 7.9,
   "dawn_wind_kt": 13.8
  },
  {
   "id": "summit-peak-tower",
   "name": "Summit Peak observation tower",
   "lat": 46.7477695,
   "lon": -89.771874,
   "elevation_m": 594.9,
   "position": "summit",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season. DNR trail PDF: \"Summit Peak parking area to tower ... 0.5 miles\"; \"Trail climbs 300 feet to the tower.\"",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "summit (DNR: highest point in the park)",
    "observation tower",
    "relief 411 m above Lake Superior"
   ],
   "features_source": "Coordinates: Nominatim OSM node 4159655259 (man_made=tower). USGS EPQS 594.873 m; peak node 592.623 m; DNR trail PDF: \"Summit Peak, at 1,958 feet, the highest point in the park\" (596.8 m, consistent within 2 m).",
   "drive_minutes_est": 28,
   "airspace_note": "Not researched. KOGM 32.7 km, KIWD 36.8 km, KCMX 108.0 km.",
   "notes": "Drive time is OSRM to the nearest road (snaps 428 m away), not to the parking area. Tower is a viewing structure; DNR clause about structures covers 'cultural or historical' sites only.",
   "look": "highest ground in the park: above most lake fog decks, beams through the forest on the slopes",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:24",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:40",
    "sun_12deg": "09:45"
   },
   "score": {
    "fog_probability": 0.03,
    "raw_blend": 0.356,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.429,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.43); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 6.6 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:54",
     "est_end": "09:39",
     "model_clear": null,
     "notes": [],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.03,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 6.6,
       "dpd_key": 7.3,
       "rh_max": 62,
       "wind_mean": 5.125,
       "wind_after": 4.9,
       "gust_max": 17.1,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 30400.0,
       "low_sunrise": 0.0,
       "vis_min": 27700.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.4,
       "t_key": 3.5,
       "cooling": 7.9,
       "t_min_night": 3.5,
       "td_afternoon": -2.6,
       "crossover": 6.1,
       "td_drop": 1.1999999999999997,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.40000000000009095,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.0,
         "Td": -2.7,
         "RH": 50,
         "wind": 7.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37800.0
        },
        {
         "t": "23:00",
         "T": 6.9,
         "Td": -2.5,
         "RH": 51,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37000.0
        },
        {
         "t": "00:00",
         "T": 6.7,
         "Td": -1.7,
         "RH": 55,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33500.0
        },
        {
         "t": "01:00",
         "T": 6.4,
         "Td": -2.0,
         "RH": 55,
         "wind": 5.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33100.0
        },
        {
         "t": "02:00",
         "T": 6.1,
         "Td": -1.1,
         "RH": 60,
         "wind": 5.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 29600.0
        },
        {
         "t": "03:00",
         "T": 5.4,
         "Td": -1.5,
         "RH": 61,
         "wind": 4.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 28600.0
        },
        {
         "t": "04:00",
         "T": 4.8,
         "Td": -1.8,
         "RH": 62,
         "wind": 5.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 27800.0
        },
        {
         "t": "05:00",
         "T": 4.5,
         "Td": -2.2,
         "RH": 62,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 27800.0
        },
        {
         "t": "06:00",
         "T": 4.1,
         "Td": -2.5,
         "RH": 62,
         "wind": 5.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 27700.0
        },
        {
         "t": "07:00",
         "T": 3.7,
         "Td": -3.5,
         "RH": 59,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 30000.0
        },
        {
         "t": "08:00",
         "T": 3.5,
         "Td": -3.8,
         "RH": 59,
         "wind": 5.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 30400.0
        },
        {
         "t": "09:00",
         "T": 3.4,
         "Td": -2.9,
         "RH": 63,
         "wind": 5.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 27200.0
        },
        {
         "t": "10:00",
         "T": 6.6,
         "Td": 0.9,
         "RH": 67,
         "wind": 4.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 24700.0
        },
        {
         "t": "11:00",
         "T": 9.3,
         "Td": 2.0,
         "RH": 60,
         "wind": 5.9,
         "low": 4,
         "mid": 0,
         "high": 0,
         "vis": 28600.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 6.6 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.98,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.1 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.99,
        "why": "temperature fall 18:00 \u2192 sunrise = 7.9 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 3.5 \u00b0C vs afternoon dewpoint -2.6 \u00b0C \u2192 +6.1 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 27.7 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 6.6 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.141
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 3.3000000000000003,
       "dpd_key": 3.3000000000000003,
       "rh_max": 79,
       "wind_mean": 4.1,
       "wind_after": 4.5,
       "gust_max": 9.7,
       "cloud_mh_night": 6.181818181818182,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 2.5,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 9.3,
       "t_key": 3.1,
       "cooling": 6.200000000000001,
       "t_min_night": 2.4,
       "td_afternoon": 0.8,
       "crossover": 1.5999999999999999,
       "td_drop": 1.0,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 3.2,
         "Td": 0.9,
         "RH": 85,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 2.6,
         "Td": 0.2,
         "RH": 84,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 2.6,
         "Td": 0.2,
         "RH": 84,
         "wind": 3.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 2.4,
         "Td": 0.1,
         "RH": 85,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 2.5,
         "Td": 0.1,
         "RH": 84,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 2.7,
         "Td": 0.3,
         "RH": 84,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 3.1,
         "Td": 0.2,
         "RH": 81,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 3.1,
         "Td": -0.2,
         "RH": 79,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 2.9,
         "Td": -0.9,
         "RH": 76,
         "wind": 3.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 2.8,
         "Td": -0.7,
         "RH": 78,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 3.1,
         "Td": -0.2,
         "RH": 79,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 4.3,
         "Td": 0.8,
         "RH": 78,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 6.7,
         "Td": 2.0,
         "RH": 72,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 8.7,
         "Td": 2.7,
         "RH": 66,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.1,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.3 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 4.1 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.76,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.2 \u00b0C"
       },
       "moisture": {
        "score": 0.52,
        "why": "crossover: forecast night minimum 2.4 \u00b0C vs afternoon dewpoint 0.8 \u00b0C \u2192 +1.6 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [],
      "raw": 0.524
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1,
       "dpd_key": 3.1,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 9.5,
       "t_key": 5.0,
       "cooling": 4.5,
       "t_min_night": 4.5,
       "td_afternoon": 0.6,
       "crossover": 3.9,
       "td_drop": -1.2999999999999998,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.10000000000002274,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 4.7,
         "Td": 2.0,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 4.5,
         "Td": 1.7,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 4.5,
         "Td": 1.7,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 4.8,
         "Td": 2.0,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 5.1,
         "Td": 2.1,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 5.4,
         "Td": 2.0,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 5.6,
         "Td": 1.7,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 5.7,
         "Td": 1.5,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 5.4,
         "Td": 1.5,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 4.8,
         "Td": 1.5,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 5.0,
         "Td": 1.9,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 6.4,
         "Td": 2.5,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 8.5,
         "Td": 3.2,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 10.6,
         "Td": 3.8,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.13,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.11,
        "why": "crossover: forecast night minimum 4.5 \u00b0C vs afternoon dewpoint 0.6 \u00b0C \u2192 +3.9 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.414
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 2.0999999999999996,
       "dpd_key": 2.1999999999999997,
       "rh_max": 86,
       "wind_mean": 3.3499999999999996,
       "wind_after": 3.65,
       "gust_max": 11.7,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.8,
       "t_key": 4.1,
       "cooling": 6.700000000000001,
       "t_min_night": 4.1,
       "td_afternoon": -1.7999999999999998,
       "crossover": 5.8999999999999995,
       "td_drop": -3.6999999999999997,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.3000000000000682,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.1,
         "Td": 0.2,
         "RH": 66,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 5.7,
         "Td": -0.6,
         "RH": 64,
         "wind": 3.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 5.5,
         "Td": 0.2,
         "RH": 69,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 5.5,
         "Td": 0.6,
         "RH": 71,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 5.3,
         "Td": 1.2,
         "RH": 75,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 5.1,
         "Td": 2.1,
         "RH": 81,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 5.0,
         "Td": 2.3,
         "RH": 83,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 4.7,
         "Td": 2.4,
         "RH": 85,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 4.5,
         "Td": 2.3,
         "RH": 86,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 4.3,
         "Td": 2.2,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 4.1,
         "Td": 1.9,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 4.2,
         "Td": 1.9,
         "RH": 85,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 7.3,
         "Td": 2.2,
         "RH": 70,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 10.1,
         "Td": 2.9,
         "RH": 61,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.38,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.3 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.83,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.7 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 4.1 \u00b0C vs afternoon dewpoint -1.8 \u00b0C \u2192 +5.9 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 86 %"
       }
      },
      "gates": [],
      "raw": 0.57
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.218,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7477695&longitude=-89.771874&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7477695&longitude=-89.771874&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:26+00:00",
     "elevation_m": 579.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7477695&longitude=-89.771874&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:46+00:00",
     "elevation_m": 579.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7477695&longitude=-89.771874&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:46+00:00",
     "elevation_m": 579.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7477695&longitude=-89.771874&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:46+00:00",
     "elevation_m": 579.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 3.5,
   "dawn_wind_kt": 5.3
  },
  {
   "id": "presque-isle-river-mouth",
   "name": "Presque Isle River mouth (Presque Isle Unit)",
   "lat": 46.7101982,
   "lon": -89.9746386,
   "elevation_m": 183.5,
   "position": "shore",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season. Winter: \"Access to Presque Isle Scenic Area remains available via County Road 519 just east of Wakefield.\" Presque Isle day-use area and rustic campground are on this unit.",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "river mouth",
    "Lake Superior shoreline",
    "river corridor"
   ],
   "features_source": "Coordinates: northernmost vertex of the Nominatim Presque Isle River relation (OSM relation 14325056), not a named Nominatim hit. USGS EPQS 183.456 m, equal to lake level, which supports it being the mouth. Presque Isle Rustic Campground (Nominatim way 1081870588) is at 46.7059397,-89.9796097, 213.2 m. DNR: \"There is trail access to the nearby Presque Isle River and Lake Superior shoreline.\"",
   "drive_minutes_est": 48,
   "airspace_note": "Not researched. KIWD 23.6 km, KOGM 48.6 km, KCMX 123.8 km.",
   "notes": "OSRM from park headquarters, 40.3 km; mouth snaps 318 m from the road. Over a campground and occupied beach areas are banned for drones.",
   "look": "steam fog over the water on cold mornings; looking up at the escarpment bank when the wind is onshore",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:53",
    "sunrise": "08:25",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:41",
    "sun_12deg": "09:46"
   },
   "score": {
    "fog_probability": 0.02,
    "raw_blend": 0.263,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.425,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.42); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 9.1 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:40",
     "est_end": "09:10",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.01,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 9.100000000000001,
       "dpd_key": 9.9,
       "rh_max": 53,
       "wind_mean": 8.925,
       "wind_after": 9.1,
       "gust_max": 18.1,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 38100.0,
       "low_sunrise": 0.0,
       "vis_min": 34700.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 14.3,
       "t_key": 9.0,
       "cooling": 5.300000000000001,
       "t_min_night": 8.4,
       "td_afternoon": 4.75,
       "crossover": 3.6500000000000004,
       "td_drop": 5.65,
       "airmass_change": true,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.6000000000000227,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 8.7,
         "Td": -2.9,
         "RH": 44,
         "wind": 1.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 43400.0
        },
        {
         "t": "23:00",
         "T": 8.4,
         "Td": -2.8,
         "RH": 45,
         "wind": 2.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 42500.0
        },
        {
         "t": "00:00",
         "T": 8.5,
         "Td": -1.9,
         "RH": 48,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39200.0
        },
        {
         "t": "01:00",
         "T": 8.5,
         "Td": -1.6,
         "RH": 49,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38200.0
        },
        {
         "t": "02:00",
         "T": 9.0,
         "Td": 0.7,
         "RH": 56,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32700.0
        },
        {
         "t": "03:00",
         "T": 9.5,
         "Td": 1.4,
         "RH": 57,
         "wind": 7.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 31400.0
        },
        {
         "t": "04:00",
         "T": 9.6,
         "Td": 0.7,
         "RH": 54,
         "wind": 7.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34500.0
        },
        {
         "t": "05:00",
         "T": 9.4,
         "Td": 0.1,
         "RH": 52,
         "wind": 8.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35600.0
        },
        {
         "t": "06:00",
         "T": 9.3,
         "Td": 0.2,
         "RH": 53,
         "wind": 9.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34700.0
        },
        {
         "t": "07:00",
         "T": 9.2,
         "Td": -0.4,
         "RH": 51,
         "wind": 9.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37200.0
        },
        {
         "t": "08:00",
         "T": 9.0,
         "Td": -0.9,
         "RH": 50,
         "wind": 9.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38100.0
        },
        {
         "t": "09:00",
         "T": 8.9,
         "Td": -0.2,
         "RH": 53,
         "wind": 9.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35100.0
        },
        {
         "t": "10:00",
         "T": 11.2,
         "Td": 2.2,
         "RH": 54,
         "wind": 9.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33400.0
        },
        {
         "t": "11:00",
         "T": 13.9,
         "Td": 3.7,
         "RH": 50,
         "wind": 5.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37000.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 9.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.31,
        "why": "mean 10 m wind in the 3 h before sunrise = 8.9 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.4,
        "why": "temperature fall 18:00 \u2192 sunrise = 5.3 \u00b0C; part of this is cold advection, not radiation (discounted)"
       },
       "moisture": {
        "score": 0.15,
        "why": "crossover: forecast night minimum 8.4 \u00b0C vs afternoon dewpoint 4.8 \u00b0C \u2192 +3.7 \u00b0C; rain last 48 h = 0.0 mm; BUT dewpoint falls 5.7 \u00b0C by dawn \u2014 drier air moving in, crossover rule discounted"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 34.7 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 9.1 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.085
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 2.9999999999999996,
       "dpd_key": 3.1999999999999997,
       "rh_max": 81,
       "wind_mean": 3.2,
       "wind_after": 3.6,
       "gust_max": 8.6,
       "cloud_mh_night": 5.818181818181818,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 3.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.0,
       "t_key": 6.3,
       "cooling": 5.7,
       "t_min_night": 6.3,
       "td_afternoon": 3.7,
       "crossover": 2.5999999999999996,
       "td_drop": 0.6000000000000001,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.2,
         "Td": 3.8,
         "RH": 79,
         "wind": 3.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 6.9,
         "Td": 3.5,
         "RH": 79,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 6.6,
         "Td": 3.6,
         "RH": 81,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 6.7,
         "Td": 4.0,
         "RH": 83,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 6.5,
         "Td": 3.7,
         "RH": 82,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 6.6,
         "Td": 3.6,
         "RH": 81,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 6.7,
         "Td": 3.7,
         "RH": 81,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 6.6,
         "Td": 3.6,
         "RH": 81,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 6.5,
         "Td": 3.1,
         "RH": 79,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 6.3,
         "Td": 2.9,
         "RH": 79,
         "wind": 3.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 6.3,
         "Td": 3.1,
         "RH": 80,
         "wind": 3.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 7.0,
         "Td": 3.4,
         "RH": 78,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 9.0,
         "Td": 4.4,
         "RH": 73,
         "wind": 3.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 11.0,
         "Td": 5.3,
         "RH": 68,
         "wind": 3.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.15,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.0 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.2 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.69,
        "why": "temperature fall 18:00 \u2192 sunrise = 5.7 \u00b0C"
       },
       "moisture": {
        "score": 0.31,
        "why": "crossover: forecast night minimum 6.3 \u00b0C vs afternoon dewpoint 3.7 \u00b0C \u2192 +2.6 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [],
      "raw": 0.51
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1999999999999993,
       "dpd_key": 3.1999999999999993,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.1,
       "t_key": 7.6,
       "cooling": 4.5,
       "t_min_night": 7.1,
       "td_afternoon": 2.9000000000000004,
       "crossover": 4.199999999999999,
       "td_drop": -1.5,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.3,
         "Td": 4.6,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 7.1,
         "Td": 4.2,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 7.1,
         "Td": 4.3,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 7.4,
         "Td": 4.5,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 7.7,
         "Td": 4.7,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 8.0,
         "Td": 4.5,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 8.2,
         "Td": 4.2,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 8.3,
         "Td": 4.0,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 8.0,
         "Td": 4.0,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 7.4,
         "Td": 4.0,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 7.6,
         "Td": 4.4,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 9.0,
         "Td": 5.0,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 11.1,
         "Td": 5.6,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 13.2,
         "Td": 6.3,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.12,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.2 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 7.1 \u00b0C vs afternoon dewpoint 2.9 \u00b0C \u2192 +4.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.408
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 4.800000000000001,
       "dpd_key": 4.800000000000001,
       "rh_max": 72,
       "wind_mean": 5.1,
       "wind_after": 5.45,
       "gust_max": 16.5,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 14.4,
       "t_key": 9.3,
       "cooling": 5.1,
       "t_min_night": 9.3,
       "td_afternoon": 0.15,
       "crossover": 9.15,
       "td_drop": -4.35,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.20000000000004547,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 9.8,
         "Td": 5.0,
         "RH": 72,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 9.5,
         "Td": 3.9,
         "RH": 68,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 9.3,
         "Td": 3.5,
         "RH": 67,
         "wind": 4.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 9.6,
         "Td": 3.8,
         "RH": 67,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 10.1,
         "Td": 5.1,
         "RH": 71,
         "wind": 4.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 10.5,
         "Td": 6.1,
         "RH": 74,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 10.6,
         "Td": 5.4,
         "RH": 70,
         "wind": 4.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 10.3,
         "Td": 4.7,
         "RH": 68,
         "wind": 5.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 9.9,
         "Td": 4.7,
         "RH": 70,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 9.6,
         "Td": 4.6,
         "RH": 71,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 9.3,
         "Td": 4.5,
         "RH": 72,
         "wind": 5.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 9.3,
         "Td": 4.7,
         "RH": 73,
         "wind": 5.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 10.7,
         "Td": 4.9,
         "RH": 67,
         "wind": 5.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 12.7,
         "Td": 5.6,
         "RH": 62,
         "wind": 5.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 4.8 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.98,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.1 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.61,
        "why": "temperature fall 18:00 \u2192 sunrise = 5.1 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 9.3 \u00b0C vs afternoon dewpoint 0.1 \u00b0C \u2192 +9.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 72 %"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 4.8 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.13
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.229,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7101982&longitude=-89.9746386&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7101982&longitude=-89.9746386&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:46+00:00",
     "elevation_m": 181.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7101982&longitude=-89.9746386&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:55+00:00",
     "elevation_m": 181.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7101982&longitude=-89.9746386&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:56+00:00",
     "elevation_m": 181.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7101982&longitude=-89.9746386&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:56+00:00",
     "elevation_m": 181.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 9.0,
   "dawn_wind_kt": 9.1
  },
  {
   "id": "union-bay-campground",
   "name": "Union Bay Campground (lakeshore)",
   "lat": 46.8236895,
   "lon": -89.6407265,
   "elevation_m": 191.7,
   "position": "shore",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season. DNR: \"Only registered campers are allowed in the campgrounds after 10 p.m.\" so campers are present at dawn; day-use boat access and beach are adjacent to the campground.",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "prohibited",
   "features": [
    "Lake Superior shoreline (Union Bay)",
    "sandy beach",
    "rocky shore",
    "boat launch"
   ],
   "features_source": "Coordinates: Nominatim OSM way 413730262 centroid (campground polygon). USGS EPQS 191.688 m. DNR: \"In many sites, you can hear waves crashing along the rocky shoreline of Union Bay\"; \"Enjoy 1.6 miles of Lake Superior's Union Bay shoreline along M-107\".",
   "drive_minutes_est": 8,
   "airspace_note": "Not researched. KOGM 21.0 km, KIWD 49.9 km, KCMX 95.4 km.",
   "notes": "'prohibited' because rule (h) bans flying \"Over a campground\"; the beach and shoreline outside the campground are covered by (f) occupied beach area and by the permit clause, not a flat ban. OSRM from park headquarters 2.9 km.",
   "look": "steam fog over the water on cold mornings; looking up at the escarpment bank when the wind is onshore",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:23",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:39",
    "sun_12deg": "09:44"
   },
   "score": {
    "fog_probability": 0.02,
    "raw_blend": 0.278,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.426,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.43); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 9.4 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:38",
     "est_end": "09:08",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.01,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 9.4,
       "dpd_key": 10.5,
       "rh_max": 52,
       "wind_mean": 9.2,
       "wind_after": 11.3,
       "gust_max": 19.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 39400.0,
       "low_sunrise": 0.0,
       "vis_min": 36100.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.2,
       "t_key": 9.7,
       "cooling": 2.5,
       "t_min_night": 7.6,
       "td_afternoon": 1.8,
       "crossover": 5.8,
       "td_drop": 2.6,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.6000000000000227,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.6,
         "Td": -2.1,
         "RH": 50,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37800.0
        },
        {
         "t": "23:00",
         "T": 8.2,
         "Td": -2.8,
         "RH": 46,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 41400.0
        },
        {
         "t": "00:00",
         "T": 8.2,
         "Td": -1.3,
         "RH": 51,
         "wind": 5.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36500.0
        },
        {
         "t": "01:00",
         "T": 7.7,
         "Td": -1.1,
         "RH": 54,
         "wind": 5.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34000.0
        },
        {
         "t": "02:00",
         "T": 9.0,
         "Td": -0.3,
         "RH": 52,
         "wind": 7.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35400.0
        },
        {
         "t": "03:00",
         "T": 10.5,
         "Td": 0.2,
         "RH": 49,
         "wind": 10.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38300.0
        },
        {
         "t": "04:00",
         "T": 10.0,
         "Td": -0.5,
         "RH": 48,
         "wind": 8.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39400.0
        },
        {
         "t": "05:00",
         "T": 9.6,
         "Td": 0.2,
         "RH": 52,
         "wind": 8.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36100.0
        },
        {
         "t": "06:00",
         "T": 9.8,
         "Td": -0.4,
         "RH": 49,
         "wind": 9.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38700.0
        },
        {
         "t": "07:00",
         "T": 9.9,
         "Td": -1.2,
         "RH": 46,
         "wind": 9.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 41600.0
        },
        {
         "t": "08:00",
         "T": 9.7,
         "Td": -0.8,
         "RH": 48,
         "wind": 9.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39400.0
        },
        {
         "t": "09:00",
         "T": 10.0,
         "Td": 0.6,
         "RH": 52,
         "wind": 11.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36100.0
        },
        {
         "t": "10:00",
         "T": 11.7,
         "Td": 2.2,
         "RH": 52,
         "wind": 11.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34800.0
        },
        {
         "t": "11:00",
         "T": 13.5,
         "Td": 3.0,
         "RH": 49,
         "wind": 8.6,
         "low": 3,
         "mid": 0,
         "high": 0,
         "vis": 37300.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 9.4 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.28,
        "why": "mean 10 m wind in the 3 h before sunrise = 9.2 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.23,
        "why": "temperature fall 18:00 \u2192 sunrise = 2.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 7.6 \u00b0C vs afternoon dewpoint 1.8 \u00b0C \u2192 +5.8 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 36.1 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 9.4 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.076
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 3.7,
       "dpd_key": 3.8999999999999995,
       "rh_max": 77,
       "wind_mean": 4.25,
       "wind_after": 4.4,
       "gust_max": 9.3,
       "cloud_mh_night": 6.454545454545454,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 3.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.8,
       "t_key": 5.6,
       "cooling": 5.200000000000001,
       "t_min_night": 4.9,
       "td_afternoon": 3.6,
       "crossover": 1.3000000000000003,
       "td_drop": 1.9000000000000001,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 5.9,
         "Td": 2.7,
         "RH": 80,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 5.4,
         "Td": 2.4,
         "RH": 81,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 5.3,
         "Td": 2.3,
         "RH": 81,
         "wind": 3.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 4.9,
         "Td": 1.8,
         "RH": 80,
         "wind": 3.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 5.2,
         "Td": 2.1,
         "RH": 80,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 5.5,
         "Td": 1.4,
         "RH": 75,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 5.7,
         "Td": 1.6,
         "RH": 75,
         "wind": 3.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 5.4,
         "Td": 1.7,
         "RH": 77,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 5.6,
         "Td": 1.2,
         "RH": 73,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 5.4,
         "Td": 1.2,
         "RH": 74,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 5.6,
         "Td": 1.7,
         "RH": 76,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 6.9,
         "Td": 2.2,
         "RH": 72,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 9.2,
         "Td": 3.2,
         "RH": 66,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 11.0,
         "Td": 4.0,
         "RH": 62,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.04,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.7 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 4.2 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.63,
        "why": "temperature fall 18:00 \u2192 sunrise = 5.2 \u00b0C"
       },
       "moisture": {
        "score": 0.61,
        "why": "crossover: forecast night minimum 4.9 \u00b0C vs afternoon dewpoint 3.6 \u00b0C \u2192 +1.3 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [],
      "raw": 0.502
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.3,
       "dpd_key": 3.3,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.0,
       "t_key": 7.6,
       "cooling": 4.4,
       "t_min_night": 7.0,
       "td_afternoon": 2.85,
       "crossover": 4.15,
       "td_drop": -1.4499999999999997,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.2,
         "Td": 4.5,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 7.0,
         "Td": 4.1,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 7.1,
         "Td": 4.2,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 7.4,
         "Td": 4.5,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 7.7,
         "Td": 4.6,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 7.9,
         "Td": 4.5,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 8.2,
         "Td": 4.2,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 8.3,
         "Td": 3.9,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 7.9,
         "Td": 3.9,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 7.4,
         "Td": 3.9,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 7.6,
         "Td": 4.3,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 9.0,
         "Td": 4.9,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 11.1,
         "Td": 5.6,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 13.1,
         "Td": 6.2,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.11,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.3 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.5,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.4 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 7.0 \u00b0C vs afternoon dewpoint 2.9 \u00b0C \u2192 +4.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.402
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.207,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8236895&longitude=-89.6407265&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8236895&longitude=-89.6407265&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:40:56+00:00",
     "elevation_m": 191.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8236895&longitude=-89.6407265&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:41:47+00:00",
     "elevation_m": 191.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8236895&longitude=-89.6407265&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:41:57+00:00",
     "elevation_m": 191.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 9.7,
   "dawn_wind_kt": 9.3
  },
  {
   "id": "ontonagon-marina",
   "name": "Ontonagon Marina (City of Ontonagon)",
   "lat": 46.8695866,
   "lon": -89.3209563,
   "elevation_m": 183.5,
   "position": "shore",
   "agency": "City of Ontonagon (OSM operator tag; not confirmed on a city page)",
   "agency_url": null,
   "dawn_access": "unknown: no hours found for the marina.",
   "dawn_access_ok": null,
   "drone_rule": "unknown. Not state park land, so Order 5.1 does not apply on its face. No City of Ontonagon drone rule found in one search; Ontonagon County park rules were surfaced but not read.",
   "drone_rule_url": null,
   "drone_status": "unknown",
   "features": [
    "marina/harbor at lake level",
    "Lake Superior shoreline"
   ],
   "features_source": "Coordinates: Nominatim OSM way 959120361 ('Ontonagon Marina, 125 River Road'); OSM tags operator 'City of Ontonagon', phone +1 906 884 4225. USGS EPQS 183.488 m, equal to Lake Superior. Ontonagon Township Park alternative: Nominatim relation 17386505, 46.8843375,-89.2982464, 187.6 m.",
   "drive_minutes_est": 26,
   "airspace_note": "Not researched. KOGM is 4.4 km away (the nearest of the three, and it reports no METAR). KCMX 71.3 km, KIWD 72.6 km.",
   "notes": "OSRM from park headquarters, 25.2 km. DNR calls Ontonagon \"about 20 miles east of the park\".",
   "look": "steam fog over the water on cold mornings; looking up at the escarpment bank when the wind is onshore",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:51",
    "sunrise": "08:22",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:38",
    "sun_12deg": "09:43"
   },
   "score": {
    "fog_probability": 0.04,
    "raw_blend": 0.376,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.49,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.49); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 6.5 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:37",
     "est_end": "09:07",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.02,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 6.5,
       "dpd_key": 6.5,
       "rh_max": 63,
       "wind_mean": 5.625,
       "wind_after": 8.3,
       "gust_max": 15.9,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 29400.0,
       "low_sunrise": 0.0,
       "vis_min": 29400.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.3,
       "t_key": 4.7,
       "cooling": 6.6000000000000005,
       "t_min_night": 4.3,
       "td_afternoon": 2.55,
       "crossover": 1.75,
       "td_drop": 4.35,
       "airmass_change": true,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.10000000000002274,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.7,
         "Td": -3.8,
         "RH": 47,
         "wind": 4.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32000.0
        },
        {
         "t": "23:00",
         "T": 6.4,
         "Td": -4.4,
         "RH": 46,
         "wind": 5.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33600.0
        },
        {
         "t": "00:00",
         "T": 6.0,
         "Td": -2.6,
         "RH": 54,
         "wind": 5.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 30600.0
        },
        {
         "t": "01:00",
         "T": 5.7,
         "Td": -2.0,
         "RH": 58,
         "wind": 5.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 29600.0
        },
        {
         "t": "02:00",
         "T": 5.5,
         "Td": -3.3,
         "RH": 53,
         "wind": 4.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35400.0
        },
        {
         "t": "03:00",
         "T": 5.2,
         "Td": -3.6,
         "RH": 53,
         "wind": 5.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 36700.0
        },
        {
         "t": "04:00",
         "T": 4.7,
         "Td": -3.3,
         "RH": 56,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32000.0
        },
        {
         "t": "05:00",
         "T": 4.6,
         "Td": -4.1,
         "RH": 53,
         "wind": 5.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32500.0
        },
        {
         "t": "06:00",
         "T": 4.5,
         "Td": -4.0,
         "RH": 54,
         "wind": 5.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35500.0
        },
        {
         "t": "07:00",
         "T": 4.3,
         "Td": -2.5,
         "RH": 61,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32100.0
        },
        {
         "t": "08:00",
         "T": 4.7,
         "Td": -1.8,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 29400.0
        },
        {
         "t": "09:00",
         "T": 5.5,
         "Td": -1.4,
         "RH": 61,
         "wind": 8.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 29300.0
        },
        {
         "t": "10:00",
         "T": 7.8,
         "Td": 1.4,
         "RH": 64,
         "wind": 8.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32900.0
        },
        {
         "t": "11:00",
         "T": 10.6,
         "Td": 4.5,
         "RH": 66,
         "wind": 7.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35700.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 6.5 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.89,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.6 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.4,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.6 \u00b0C; part of this is cold advection, not radiation (discounted)"
       },
       "moisture": {
        "score": 0.2,
        "why": "crossover: forecast night minimum 4.3 \u00b0C vs afternoon dewpoint 2.5 \u00b0C \u2192 +1.8 \u00b0C; rain last 48 h = 0.0 mm; BUT dewpoint falls 4.3 \u00b0C by dawn \u2014 drier air moving in, crossover rule discounted"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 29.4 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 6.5 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.121
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 2.9,
       "dpd_key": 2.9,
       "rh_max": 81,
       "wind_mean": 4.3,
       "wind_after": 4.9,
       "gust_max": 10.7,
       "cloud_mh_night": 5.909090909090909,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 6.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.9,
       "t_key": 3.4,
       "cooling": 7.5,
       "t_min_night": 3.2,
       "td_afternoon": 4.45,
       "crossover": -1.25,
       "td_drop": 3.95,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 5.3,
         "Td": 3.2,
         "RH": 86,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 4.7,
         "Td": 2.8,
         "RH": 87,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 4.5,
         "Td": 2.4,
         "RH": 86,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 4.1,
         "Td": 2.0,
         "RH": 86,
         "wind": 2.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 4.0,
         "Td": 1.7,
         "RH": 85,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 3.6,
         "Td": 1.0,
         "RH": 83,
         "wind": 3.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 3.7,
         "Td": 0.8,
         "RH": 81,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 3.5,
         "Td": 0.6,
         "RH": 81,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 3.4,
         "Td": 0.1,
         "RH": 79,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 3.2,
         "Td": -0.0,
         "RH": 79,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 3.4,
         "Td": 0.5,
         "RH": 81,
         "wind": 4.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 4.7,
         "Td": 0.9,
         "RH": 76,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 7.6,
         "Td": 2.5,
         "RH": 70,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 9.8,
         "Td": 3.6,
         "RH": 65,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.18,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.9 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 4.3 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.93,
        "why": "temperature fall 18:00 \u2192 sunrise = 7.5 \u00b0C"
       },
       "moisture": {
        "score": 1.0,
        "why": "crossover: forecast night minimum 3.2 \u00b0C vs afternoon dewpoint 4.5 \u00b0C \u2192 -1.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [],
      "raw": 0.611
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1000000000000005,
       "dpd_key": 4.3,
       "rh_max": 80,
       "wind_mean": 7.25,
       "wind_after": 7.0,
       "gust_max": 14.0,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 13.3,
       "t_key": 5.8,
       "cooling": 7.500000000000001,
       "t_min_night": 5.3,
       "td_afternoon": 0.75,
       "crossover": 4.55,
       "td_drop": -0.75,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.2999999999999545,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.7,
         "Td": 3.7,
         "RH": 81,
         "wind": 6.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 6.5,
         "Td": 4.0,
         "RH": 84,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 6.3,
         "Td": 3.7,
         "RH": 83,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 6.3,
         "Td": 3.0,
         "RH": 79,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 6.3,
         "Td": 2.6,
         "RH": 77,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.2,
         "Td": 2.7,
         "RH": 78,
         "wind": 6.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.0,
         "Td": 2.7,
         "RH": 79,
         "wind": 7.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 5.9,
         "Td": 2.8,
         "RH": 80,
         "wind": 7.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 5.6,
         "Td": 2.3,
         "RH": 79,
         "wind": 7.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 5.3,
         "Td": 1.6,
         "RH": 77,
         "wind": 7.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 5.8,
         "Td": 1.5,
         "RH": 74,
         "wind": 7.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 7.5,
         "Td": 2.2,
         "RH": 69,
         "wind": 7.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 9.9,
         "Td": 3.2,
         "RH": 63,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 12.3,
         "Td": 4.3,
         "RH": 58,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.13,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.61,
        "why": "mean 10 m wind in the 3 h before sunrise = 7.2 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.93,
        "why": "temperature fall 18:00 \u2192 sunrise = 7.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 5.3 \u00b0C vs afternoon dewpoint 0.8 \u00b0C \u2192 +4.5 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.43
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 1.9999999999999996,
       "dpd_key": 2.4,
       "rh_max": 87,
       "wind_mean": 3.55,
       "wind_after": 4.05,
       "gust_max": 10.3,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 15.2,
       "t_key": 4.8,
       "cooling": 10.399999999999999,
       "t_min_night": 4.8,
       "td_afternoon": -1.05,
       "crossover": 5.85,
       "td_drop": -3.45,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.1999999999999318,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.4,
         "Td": 1.2,
         "RH": 65,
         "wind": 2.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 6.6,
         "Td": 2.6,
         "RH": 76,
         "wind": 2.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 6.6,
         "Td": 3.5,
         "RH": 81,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 7.1,
         "Td": 3.7,
         "RH": 79,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 7.0,
         "Td": 3.8,
         "RH": 80,
         "wind": 3.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.7,
         "Td": 3.8,
         "RH": 82,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.2,
         "Td": 3.6,
         "RH": 84,
         "wind": 3.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 5.6,
         "Td": 3.6,
         "RH": 87,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 5.2,
         "Td": 3.2,
         "RH": 87,
         "wind": 3.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 4.9,
         "Td": 2.8,
         "RH": 86,
         "wind": 3.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 4.8,
         "Td": 2.4,
         "RH": 85,
         "wind": 3.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 5.1,
         "Td": 2.2,
         "RH": 82,
         "wind": 3.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 8.5,
         "Td": 2.7,
         "RH": 67,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 11.1,
         "Td": 3.8,
         "RH": 61,
         "wind": 4.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.4,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.0 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 1.0,
        "why": "temperature fall 18:00 \u2192 sunrise = 10.4 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 4.8 \u00b0C vs afternoon dewpoint -1.1 \u00b0C \u2192 +5.8 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 87 %"
       }
      },
      "gates": [],
      "raw": 0.595
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.22,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8695866&longitude=-89.3209563&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8695866&longitude=-89.3209563&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:17+00:00",
     "elevation_m": 181.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8695866&longitude=-89.3209563&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8695866&longitude=-89.3209563&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.8695866&longitude=-89.3209563&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 4.7,
   "dawn_wind_kt": 6.4
  },
  {
   "id": "porkies-m107-boundary-shoreline",
   "name": "Lake Superior shoreline at the park's M-107 east boundary",
   "lat": 46.81857,
   "lon": -89.6296,
   "elevation_m": 183.5,
   "position": "shore",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season.",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "Lake Superior shoreline (Union Bay)",
    "road at lake level"
   ],
   "features_source": "Derived from Nominatim geometry: M-107 (OSM way 281430952) crosses the Porcupine Mountains Wilderness State Park polygon (OSM relation 2199937) at 46.8182450,-89.6296109 (EPQS 188.820 m); the polygon's shoreline vertex 36 m north is 46.81857,-89.6296 (EPQS 183.487 m, lake surface, so the water edge). Ambiguity in ticket: 'the park's M-107 boundary' could mean other places; I used the east boundary where the road leaves the park. A 0.0002 degree step north reads 184.404 m, then 183.487 m.",
   "drive_minutes_est": 4,
   "airspace_note": "Not researched. KOGM 20.2 km, KIWD 50.1 km, KCMX 94.8 km.",
   "notes": "OSRM from park headquarters 1.5 km. Fog features: open lake to the north, no escarpment relief. 183.487 m matches the ticket's 183 m for Lake Superior.",
   "look": "steam fog over the water on cold mornings; looking up at the escarpment bank when the wind is onshore",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:23",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:39",
    "sun_12deg": "09:44"
   },
   "score": {
    "fog_probability": 0.03,
    "raw_blend": 0.343,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.472,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.47); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 6.8 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:38",
     "est_end": "09:08",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.02,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 6.8,
       "dpd_key": 8.9,
       "rh_max": 62,
       "wind_mean": 6.475,
       "wind_after": 9.0,
       "gust_max": 15.2,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 34500.0,
       "low_sunrise": 0.0,
       "vis_min": 23300.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.4,
       "t_key": 7.6,
       "cooling": 4.800000000000001,
       "t_min_night": 5.5,
       "td_afternoon": 2.3499999999999996,
       "crossover": 3.1500000000000004,
       "td_drop": 3.6499999999999995,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.0,
         "Td": -1.0,
         "RH": 57,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 26500.0
        },
        {
         "t": "23:00",
         "T": 6.9,
         "Td": -2.0,
         "RH": 53,
         "wind": 5.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 27300.0
        },
        {
         "t": "00:00",
         "T": 6.5,
         "Td": -2.9,
         "RH": 51,
         "wind": 4.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 25900.0
        },
        {
         "t": "01:00",
         "T": 5.5,
         "Td": -1.4,
         "RH": 61,
         "wind": 4.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 23700.0
        },
        {
         "t": "02:00",
         "T": 6.4,
         "Td": -1.2,
         "RH": 58,
         "wind": 6.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 25700.0
        },
        {
         "t": "03:00",
         "T": 7.3,
         "Td": -0.4,
         "RH": 58,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 26700.0
        },
        {
         "t": "04:00",
         "T": 6.9,
         "Td": -0.3,
         "RH": 60,
         "wind": 5.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 24200.0
        },
        {
         "t": "05:00",
         "T": 6.6,
         "Td": -0.2,
         "RH": 62,
         "wind": 5.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 23300.0
        },
        {
         "t": "06:00",
         "T": 6.9,
         "Td": -0.5,
         "RH": 59,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 23300.0
        },
        {
         "t": "07:00",
         "T": 7.5,
         "Td": -1.5,
         "RH": 53,
         "wind": 7.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 30000.0
        },
        {
         "t": "08:00",
         "T": 7.6,
         "Td": -1.3,
         "RH": 53,
         "wind": 7.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34500.0
        },
        {
         "t": "09:00",
         "T": 8.3,
         "Td": -0.2,
         "RH": 55,
         "wind": 8.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33400.0
        },
        {
         "t": "10:00",
         "T": 10.8,
         "Td": 1.8,
         "RH": 54,
         "wind": 9.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35600.0
        },
        {
         "t": "11:00",
         "T": 12.9,
         "Td": 3.0,
         "RH": 51,
         "wind": 8.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38000.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 6.8 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.74,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.57,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.8 \u00b0C"
       },
       "moisture": {
        "score": 0.23,
        "why": "crossover: forecast night minimum 5.5 \u00b0C vs afternoon dewpoint 2.3 \u00b0C \u2192 +3.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 23.3 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 6.8 \u00b0C: air does not saturate"
       }
      ],
      "raw": 0.118
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 3.7,
       "dpd_key": 3.9000000000000004,
       "rh_max": 77,
       "wind_mean": 4.25,
       "wind_after": 4.4,
       "gust_max": 9.3,
       "cloud_mh_night": 6.454545454545454,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 3.0,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.9,
       "t_key": 5.7,
       "cooling": 5.2,
       "t_min_night": 5.0,
       "td_afternoon": 3.6999999999999997,
       "crossover": 1.3000000000000003,
       "td_drop": 1.8999999999999997,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.0,
         "Td": 2.8,
         "RH": 80,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 5.5,
         "Td": 2.5,
         "RH": 81,
         "wind": 3.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 5.4,
         "Td": 2.4,
         "RH": 81,
         "wind": 3.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 5.0,
         "Td": 1.8,
         "RH": 80,
         "wind": 3.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 5.3,
         "Td": 2.1,
         "RH": 80,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 5.6,
         "Td": 1.5,
         "RH": 75,
         "wind": 3.7,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 5.8,
         "Td": 1.7,
         "RH": 75,
         "wind": 3.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 5.5,
         "Td": 1.8,
         "RH": 77,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 5.7,
         "Td": 1.2,
         "RH": 73,
         "wind": 4.1,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 5.5,
         "Td": 1.2,
         "RH": 74,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 5.7,
         "Td": 1.8,
         "RH": 76,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 7.0,
         "Td": 2.3,
         "RH": 72,
         "wind": 4.5,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 9.3,
         "Td": 3.3,
         "RH": 66,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 11.1,
         "Td": 4.1,
         "RH": 62,
         "wind": 4.3,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.04,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.7 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 4.2 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.63,
        "why": "temperature fall 18:00 \u2192 sunrise = 5.2 \u00b0C"
       },
       "moisture": {
        "score": 0.61,
        "why": "crossover: forecast night minimum 5.0 \u00b0C vs afternoon dewpoint 3.7 \u00b0C \u2192 +1.3 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [],
      "raw": 0.502
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1999999999999993,
       "dpd_key": 3.1999999999999993,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 12.1,
       "t_key": 7.6,
       "cooling": 4.5,
       "t_min_night": 7.1,
       "td_afternoon": 2.9000000000000004,
       "crossover": 4.199999999999999,
       "td_drop": -1.5,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.0,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 7.3,
         "Td": 4.6,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 7.1,
         "Td": 4.2,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 7.1,
         "Td": 4.3,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 7.4,
         "Td": 4.5,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 7.7,
         "Td": 4.7,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 8.0,
         "Td": 4.5,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 8.2,
         "Td": 4.2,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 8.3,
         "Td": 4.0,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 8.0,
         "Td": 4.0,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 7.4,
         "Td": 4.0,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 7.6,
         "Td": 4.4,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 9.0,
         "Td": 5.0,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 11.1,
         "Td": 5.6,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 13.2,
         "Td": 6.3,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.12,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.2 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 7.1 \u00b0C vs afternoon dewpoint 2.9 \u00b0C \u2192 +4.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.408
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 2.0,
       "dpd_key": 2.4,
       "rh_max": 87,
       "wind_mean": 3.15,
       "wind_after": 3.8,
       "gust_max": 11.3,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 13.9,
       "t_key": 6.3,
       "cooling": 7.6000000000000005,
       "t_min_night": 6.3,
       "td_afternoon": -0.6,
       "crossover": 6.8999999999999995,
       "td_drop": -4.5,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.10000000000002274,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 9.9,
         "Td": 0.7,
         "RH": 53,
         "wind": 2.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 8.3,
         "Td": 1.4,
         "RH": 62,
         "wind": 2.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 7.3,
         "Td": 2.6,
         "RH": 72,
         "wind": 2.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 6.7,
         "Td": 3.0,
         "RH": 77,
         "wind": 2.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 6.4,
         "Td": 3.3,
         "RH": 81,
         "wind": 3.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 6.4,
         "Td": 4.1,
         "RH": 85,
         "wind": 3.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 6.5,
         "Td": 4.5,
         "RH": 87,
         "wind": 3.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 6.6,
         "Td": 4.5,
         "RH": 87,
         "wind": 3.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 6.5,
         "Td": 4.5,
         "RH": 87,
         "wind": 3.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 6.4,
         "Td": 4.2,
         "RH": 86,
         "wind": 3.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 6.3,
         "Td": 3.9,
         "RH": 85,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 6.5,
         "Td": 4.0,
         "RH": 84,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 9.7,
         "Td": 4.2,
         "RH": 69,
         "wind": 4.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 12.3,
         "Td": 5.0,
         "RH": 61,
         "wind": 4.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.4,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.0 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.1 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.95,
        "why": "temperature fall 18:00 \u2192 sunrise = 7.6 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 6.3 \u00b0C vs afternoon dewpoint -0.6 \u00b0C \u2192 +6.9 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 87 %"
       }
      },
      "gates": [],
      "raw": 0.59
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.207,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.81857&longitude=-89.6296&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.81857&longitude=-89.6296&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.81857&longitude=-89.6296&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.81857&longitude=-89.6296&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.81857&longitude=-89.6296&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 181.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 7.6,
   "dawn_wind_kt": 7.1
  },
  {
   "id": "government-peak",
   "name": "Government Peak",
   "lat": 46.7832798,
   "lon": -89.7309924,
   "elevation_m": 563.5,
   "position": "summit",
   "agency": "Michigan DNR, Parks and Recreation Division (Porcupine Mountains Wilderness State Park)",
   "agency_url": "https://www.michigan.gov/recsearch/parks/porkies",
   "dawn_access": "DNR FAQ: \"State parks and recreation area day-use hours are open 8 a.m. to 10 p.m. daily.\" That is the statewide rule; the Porkies page gives no park-specific hours and no gate times. Winter: \"Park roads, including County Road M-107 at the Whitetail parking area and South Boundary Road closes at Headquarters Road south to the Pinkerton Trailhead, close Dec. 1 through late spring\". No October-November road closure is stated. Visitor center: \"Oct. 15 - May 14: Closed for the season\". Computed sunrise at the overlook (api.sunrise-sunset.org, America/Detroit): 08:17 EDT Oct 16, 08:38 EDT Oct 31, 07:40 EST Nov 1, 08:00 EST Nov 15, 08:20 EST Nov 30; civil twilight starts about 30 min earlier. Result: 8:00 opening is before sunrise through Oct 31, but from Nov 1 sunrise (about 07:40-07:59 EST until about Nov 14) is before the stated opening, and pre-sunrise blue hour is before 8:00 all season. Accessible on foot: DNR trail PDF, Government Peak Trail: \"Leaving the trailhead on M-107, the trail crosses the upper Carp River, following it to Trap Falls. From here the trail swings west through fine stands of hardwood and hemlock to Government Peak.\"",
   "dawn_access_ok": null,
   "drone_rule": "Order 5.1(5), as amended Sept 9, 2026: \"Launch an unmanned aircraft from state managed lands in conflict with the unmanned aircraft system act (PA 436 of 2016), and as follows.\" Listed bans: \"(c) Within 100 yards of a cultural or historical site or structure.\" \"(f) Over an occupied beach area.\" \"(h) Over a campground.\" \"(i) Over a restroom or open-air changing court.\" \"(k) For a commercial purpose without first obtaining written permission from an authorized representative of the department, pursuant to administrative rule 299.922(dd).\" Porcupine-specific Order 5.1(10) covers only bear feeding and snowmobiles. DNR commercial-use page: commercial use is \"use of a state-managed property or land for profit or benefit. Benefit may include ... the growth or promotion of a business\"; \"Filming or photography\" is listed; \"you must submit a non-event use permit application at least 60 days in advance\". No flat ban on recreational drone flight was found. Status 'permit' is the conservative reading for a working photographer; non-commercial flight outside the listed zones is not banned by this order. Text of R 299.922(dd) itself was not retrieved.",
   "drone_rule_url": "https://www.michigan.gov/dnr/-/media/Project/Websites/dnr/Documents/Boards/NRC/2026/September-2026/Signed_03LUOD2026_Action_edits.pdf",
   "drone_status": "permit",
   "features": [
    "summit",
    "forested ridge",
    "relief 380 m above Lake Superior"
   ],
   "features_source": "Coordinates: Nominatim OSM node 353934732 (natural=peak). USGS EPQS 563.465 m. 'Government Peak Trailhead' returned no Nominatim result.",
   "drive_minutes_est": null,
   "airspace_note": "Not researched. KOGM 28.5 km, KIWD 41.7 km, KCMX 103.5 km.",
   "notes": "Drive time left null: OSRM snaps the peak 3.4 km from any road (30.5 min) and the trailhead coordinate on M-107 was not found, so no honest figure. DNR trail PDF segments from the M-107 trailhead (0.7 + 1.3 + 1.3 + 1.9 miles, my sum) come to about 5.2 miles to the peak; total trail length is stated as 7.3 miles.",
   "look": "highest ground in the park: above most lake fog decks, beams through the forest on the slopes",
   "evidence": "research/F-porkies-locations.md",
   "sun": {
    "civil_dawn": "07:52",
    "sunrise": "08:24",
    "azimuth": 104.5,
    "compass": "ESE",
    "night_length_h": 13.3,
    "sun_2deg": "08:40",
    "sun_12deg": "09:45"
   },
   "score": {
    "fog_probability": 0.02,
    "raw_blend": 0.289,
    "calibration": "Platt-calibrated on 329 station-mornings (2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL)",
    "models_scored": [
     "ecmwf_ifs025",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "models_failed": {},
    "model_spread": 0.555,
    "confidence": "low",
    "confidence_why": "models disagree (spread 0.55); treat the number as a coin-flip and check the 04:45 refresh",
    "fog_type": {
     "type": "shallow ground fog",
     "depth_est": "0\u20133 m, if any (estimate)",
     "why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 9.3 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
     "heuristic_type": "shallow ground fog",
     "profile_note": "HRRR profile at KIWD 08:00 (run 2026-10-19 20:00): no level saturated (T\u2212Td \u2264 1 \u00b0C), temperature change 10 m \u2192 80 m: +0.3 \u00b0C (inversion) \u2014 profile shows no saturated layer at the airport; any fog will be local to low ground and water"
    },
    "burnoff": {
     "est_start": "08:39",
     "est_end": "09:09",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "light": {
     "score": 1.0,
     "label": "sun will reach the fog top",
     "why": "mid+high cloud at sunrise \u2248 0 %"
    },
    "steam_fog": null,
    "photo_score": 0.02,
    "grade": "F",
    "per_model": {
     "gfs_hrrr": {
      "features": {
       "dpd_min": 9.299999999999999,
       "dpd_key": 9.7,
       "rh_max": 52,
       "wind_mean": 14.175,
       "wind_after": 14.25,
       "gust_max": 22.2,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": 39600.0,
       "low_sunrise": 0.0,
       "vis_min": 33600.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 10.4,
       "t_key": 7.8,
       "cooling": 2.6000000000000005,
       "t_min_night": 7.8,
       "td_afternoon": -0.45000000000000007,
       "crossover": 8.25,
       "td_drop": 1.4499999999999997,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.20000000000004547,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 8.3,
         "Td": -3.9,
         "RH": 42,
         "wind": 10.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37700.0
        },
        {
         "t": "23:00",
         "T": 8.5,
         "Td": -2.4,
         "RH": 46,
         "wind": 11.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32900.0
        },
        {
         "t": "00:00",
         "T": 9.0,
         "Td": -2.0,
         "RH": 46,
         "wind": 12.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33800.0
        },
        {
         "t": "01:00",
         "T": 8.9,
         "Td": -1.2,
         "RH": 49,
         "wind": 13.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35800.0
        },
        {
         "t": "02:00",
         "T": 8.7,
         "Td": -0.1,
         "RH": 54,
         "wind": 13.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 31100.0
        },
        {
         "t": "03:00",
         "T": 9.1,
         "Td": -0.3,
         "RH": 52,
         "wind": 14.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32000.0
        },
        {
         "t": "04:00",
         "T": 9.0,
         "Td": -1.7,
         "RH": 47,
         "wind": 14.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 37200.0
        },
        {
         "t": "05:00",
         "T": 8.6,
         "Td": -0.7,
         "RH": 52,
         "wind": 14.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 33600.0
        },
        {
         "t": "06:00",
         "T": 8.4,
         "Td": -1.4,
         "RH": 50,
         "wind": 14.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 34700.0
        },
        {
         "t": "07:00",
         "T": 8.2,
         "Td": -2.5,
         "RH": 47,
         "wind": 14.0,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 38700.0
        },
        {
         "t": "08:00",
         "T": 7.8,
         "Td": -1.9,
         "RH": 50,
         "wind": 13.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 39600.0
        },
        {
         "t": "09:00",
         "T": 8.1,
         "Td": -0.6,
         "RH": 54,
         "wind": 14.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 35600.0
        },
        {
         "t": "10:00",
         "T": 9.4,
         "Td": 1.0,
         "RH": 56,
         "wind": 14.1,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": 32600.0
        },
        {
         "t": "11:00",
         "T": 11.0,
         "Td": 1.5,
         "RH": 52,
         "wind": 10.9,
         "low": 1,
         "mid": 0,
         "high": 0,
         "vis": 34200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.0,
        "why": "min T\u2212Td in the 3 h before sunrise = 9.3 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 14.2 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.23,
        "why": "temperature fall 18:00 \u2192 sunrise = 2.6 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 7.8 \u00b0C vs afternoon dewpoint -0.5 \u00b0C \u2192 +8.2 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 33.6 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [
       {
        "mult": 0.3,
        "why": "dewpoint depression never below 9.3 \u00b0C: air does not saturate"
       },
       {
        "mult": 0.25,
        "why": "wind 14 kt: too much mixing for radiation fog"
       }
      ],
      "raw": 0.015
     },
     "ncep_nbm_conus": {
      "features": {
       "dpd_min": 3.7,
       "dpd_key": 3.7,
       "rh_max": 77,
       "wind_mean": 5.8,
       "wind_after": 5.5,
       "gust_max": 10.7,
       "cloud_mh_night": 6.181818181818182,
       "cloud_low_night": null,
       "cloud_mh_sunrise": 2.5,
       "cloud_source": "total cloud (levels unavailable)",
       "vis_sunrise": 16200.0,
       "low_sunrise": null,
       "vis_min": 16200.0,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 8.7,
       "t_key": 4.0,
       "cooling": 4.699999999999999,
       "t_min_night": 3.0,
       "td_afternoon": 1.5,
       "crossover": 1.5,
       "td_drop": 1.2,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": null,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 3.9,
         "Td": 1.5,
         "RH": 84,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "23:00",
         "T": 3.3,
         "Td": 0.7,
         "RH": 83,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "00:00",
         "T": 3.3,
         "Td": 0.9,
         "RH": 84,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "01:00",
         "T": 3.0,
         "Td": 0.4,
         "RH": 83,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "02:00",
         "T": 3.2,
         "Td": 0.3,
         "RH": 81,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "03:00",
         "T": 3.6,
         "Td": 0.5,
         "RH": 80,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16280.0
        },
        {
         "t": "04:00",
         "T": 3.8,
         "Td": 0.3,
         "RH": 78,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "05:00",
         "T": 3.9,
         "Td": 0.1,
         "RH": 76,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "06:00",
         "T": 3.9,
         "Td": -0.7,
         "RH": 72,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "07:00",
         "T": 3.8,
         "Td": -0.0,
         "RH": 76,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "08:00",
         "T": 4.0,
         "Td": 0.3,
         "RH": 77,
         "wind": 5.8,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "09:00",
         "T": 5.2,
         "Td": 1.1,
         "RH": 75,
         "wind": 5.6,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "10:00",
         "T": 7.1,
         "Td": 2.0,
         "RH": 70,
         "wind": 5.4,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        },
        {
         "t": "11:00",
         "T": 8.8,
         "Td": 2.8,
         "RH": 66,
         "wind": 4.9,
         "low": null,
         "mid": null,
         "high": null,
         "vis": 16200.0
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.04,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.7 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.86,
        "why": "mean 10 m wind in the 3 h before sunrise = 5.8 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight total cloud (levels unavailable) cloud = 6 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.55,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.7 \u00b0C"
       },
       "moisture": {
        "score": 0.55,
        "why": "crossover: forecast night minimum 3.0 \u00b0C vs afternoon dewpoint 1.5 \u00b0C \u2192 +1.5 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model's own visibility minimum before sunrise = 16.2 km (0 h \u2264 1 km overnight)"
       }
      },
      "gates": [],
      "raw": 0.46
     },
     "ecmwf_ifs025": {
      "features": {
       "dpd_min": 3.1,
       "dpd_key": 3.1,
       "rh_max": 80,
       "wind_mean": 6.55,
       "wind_after": 6.5,
       "gust_max": 13.4,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 9.7,
       "t_key": 5.2,
       "cooling": 4.499999999999999,
       "t_min_night": 4.7,
       "td_afternoon": 0.75,
       "crossover": 3.95,
       "td_drop": -1.35,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": 0.09999999999990905,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 4.9,
         "Td": 2.2,
         "RH": 83,
         "wind": 3.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 4.7,
         "Td": 1.9,
         "RH": 82,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 4.7,
         "Td": 1.9,
         "RH": 82,
         "wind": 4.6,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 5.0,
         "Td": 2.2,
         "RH": 82,
         "wind": 5.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 5.3,
         "Td": 2.3,
         "RH": 81,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 5.6,
         "Td": 2.2,
         "RH": 79,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 5.8,
         "Td": 1.9,
         "RH": 76,
         "wind": 6.8,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 5.9,
         "Td": 1.7,
         "RH": 74,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 5.6,
         "Td": 1.7,
         "RH": 76,
         "wind": 6.7,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 5.0,
         "Td": 1.7,
         "RH": 79,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 5.2,
         "Td": 2.1,
         "RH": 80,
         "wind": 6.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 6.6,
         "Td": 2.7,
         "RH": 76,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 8.7,
         "Td": 3.4,
         "RH": 69,
         "wind": 6.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 10.8,
         "Td": 4.0,
         "RH": 63,
         "wind": 6.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.13,
        "why": "min T\u2212Td in the 3 h before sunrise = 3.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 0.73,
        "why": "mean 10 m wind in the 3 h before sunrise = 6.5 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.51,
        "why": "temperature fall 18:00 \u2192 sunrise = 4.5 \u00b0C"
       },
       "moisture": {
        "score": 0.11,
        "why": "crossover: forecast night minimum 4.7 \u00b0C vs afternoon dewpoint 0.8 \u00b0C \u2192 +4.0 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 80 %"
       }
      },
      "gates": [],
      "raw": 0.413
     },
     "icon_seamless": {
      "features": {
       "dpd_min": 2.0999999999999996,
       "dpd_key": 2.0999999999999996,
       "rh_max": 86,
       "wind_mean": 3.3499999999999996,
       "wind_after": 3.65,
       "gust_max": 11.7,
       "cloud_mh_night": 0.0,
       "cloud_low_night": 0.0,
       "cloud_mh_sunrise": 0.0,
       "cloud_source": "mid+high levels",
       "vis_sunrise": null,
       "low_sunrise": 0.0,
       "vis_min": null,
       "vis_fog_hours": 0,
       "hours_saturated": 0,
       "first_sat_hour": null,
       "t_evening": 11.0,
       "t_key": 4.3,
       "cooling": 6.7,
       "t_min_night": 4.3,
       "td_afternoon": -1.6,
       "crossover": 5.9,
       "td_drop": -3.8000000000000003,
       "airmass_change": false,
       "precip_night_mm": 0,
       "precip_dawn_mm": 0,
       "pressure_trend": -0.2999999999999545,
       "model_clear_hour": null,
       "dawn_rows": [
        {
         "t": "22:00",
         "T": 6.3,
         "Td": 0.4,
         "RH": 66,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "23:00",
         "T": 5.9,
         "Td": -0.4,
         "RH": 64,
         "wind": 3.2,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "00:00",
         "T": 5.7,
         "Td": 0.4,
         "RH": 69,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "01:00",
         "T": 5.7,
         "Td": 0.8,
         "RH": 71,
         "wind": 3.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "02:00",
         "T": 5.5,
         "Td": 1.4,
         "RH": 75,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "03:00",
         "T": 5.3,
         "Td": 2.3,
         "RH": 81,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "04:00",
         "T": 5.2,
         "Td": 2.5,
         "RH": 83,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "05:00",
         "T": 4.9,
         "Td": 2.6,
         "RH": 85,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "06:00",
         "T": 4.7,
         "Td": 2.5,
         "RH": 86,
         "wind": 3.3,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "07:00",
         "T": 4.5,
         "Td": 2.4,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "08:00",
         "T": 4.3,
         "Td": 2.2,
         "RH": 86,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "09:00",
         "T": 4.4,
         "Td": 2.1,
         "RH": 85,
         "wind": 3.4,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "10:00",
         "T": 7.5,
         "Td": 2.4,
         "RH": 70,
         "wind": 3.9,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        },
        {
         "t": "11:00",
         "T": 10.3,
         "Td": 3.1,
         "RH": 61,
         "wind": 4.5,
         "low": 0,
         "mid": 0,
         "high": 0,
         "vis": null
        }
       ]
      },
      "factors": {
       "dewpoint_depression": {
        "score": 0.38,
        "why": "min T\u2212Td in the 3 h before sunrise = 2.1 \u00b0C (\u22641 \u00b0C strongly favours fog, >3 \u00b0C rarely fogs)"
       },
       "wind": {
        "score": 1.0,
        "why": "mean 10 m wind in the 3 h before sunrise = 3.3 kt (2\u20135 kt ideal; calm gives only shallow fog; >8 kt mixes it out)"
       },
       "sky": {
        "score": 1.0,
        "why": "overnight mid+high levels cloud = 0 % (clear sky lets the ground radiate and cool)"
       },
       "cooling": {
        "score": 0.83,
        "why": "temperature fall 18:00 \u2192 sunrise = 6.7 \u00b0C"
       },
       "moisture": {
        "score": 0.1,
        "why": "crossover: forecast night minimum 4.3 \u00b0C vs afternoon dewpoint -1.6 \u00b0C \u2192 +5.9 \u00b0C; rain last 48 h = 0.0 mm"
       },
       "model_signal": {
        "score": 0.1,
        "why": "model has no visibility field; max RH before sunrise = 86 %"
       }
      },
      "gates": [],
      "raw": 0.57
     }
    },
    "primary_model": "gfs_hrrr",
    "primary_label": "HRRR"
   },
   "precip": {
    "mm_48h": 0.0,
    "soil_moisture_top": 0.218,
    "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7832798&longitude=-89.7309924&hourly=precipitation%2Csoil_moisture_0_to_1cm%2Csoil_moisture_1_to_3cm&models=icon_seamless&timezone=GMT&past_days=3&forecast_days=1",
    "source": "Open-Meteo ICON assimilated past days (model analysis, not a gauge)"
   },
   "sources": {
    "gfs_hrrr": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7832798&longitude=-89.7309924&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 547.0
    },
    "ncep_nbm_conus": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7832798&longitude=-89.7309924&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 547.0
    },
    "ecmwf_ifs025": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7832798&longitude=-89.7309924&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 547.0
    },
    "icon_seamless": {
     "url": "https://api.open-meteo.com/v1/forecast?latitude=46.7832798&longitude=-89.7309924&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00",
     "fetched_utc": "2026-10-20T02:42:23+00:00",
     "elevation_m": 547.0
    }
   },
   "water_temp_c": null,
   "dawn_temp_c": 7.8,
   "dawn_wind_kt": 13.6
  }
 ],
 "log": [
  "union-bay-campground icon_seamless: GET failed https://api.open-meteo.com/v1/forecast?latitude=46.8236895&longitude=-89.6407265&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-20T15%3A00: HTTP 503: {\"error\":true,\"reason\":\"The service is overloaded\"}"
 ],
 "calibration": {
  "a": 5.511394479940868,
  "b": -5.384646836851622,
  "n": 329,
  "events": 34,
  "period": "2026-08-21..2026-10-15 at GYY, IKK, JOT, LOT, PNT, RZL",
  "fitted_utc": "2026-10-16T04:17:08+00:00"
 },
 "models": [
  "gfs_hrrr",
  "ncep_nbm_conus",
  "ecmwf_ifs025",
  "icon_seamless"
 ],
 "version": "0.2.0",
 "afd": {
  "url": "https://api.weather.gov/products/28412809-bfa3-48ed-844a-c75fd775dd60",
  "issued": "2026-10-19T23:12:00+00:00",
  "fog_paragraphs": []
 },
 "metar": {
  "url": "https://aviationweather.gov/api/data/metar?ids=KIWD%2CKCMX%2CKOGM&format=json",
  "obs": [
   {
    "id": "KCMX",
    "time": "2026-10-20T02:00:00.000Z",
    "temp_c": 6.7,
    "dewp_c": 3.3,
    "wind_kt": 5,
    "wind_dir": 100,
    "vis_mi": "10+",
    "clouds": [],
    "wx": null,
    "raw": "METAR KCMX 200153Z AUTO 10005KT 10SM CLR 07/03 A3041 RMK AO2 SLP306 T00670033"
   },
   {
    "id": "KIWD",
    "time": "2026-10-20T02:00:00.000Z",
    "temp_c": 5.6,
    "dewp_c": 0.6,
    "wind_kt": 7,
    "wind_dir": 80,
    "vis_mi": "10+",
    "clouds": [],
    "wx": null,
    "raw": "METAR KIWD 200156Z AUTO 08007KT 10SM CLR 06/01 A3038 RMK AO2 SLP300 T00560006"
   }
  ]
 },
 "gauges": {
  "gauges": {},
  "url": null
 },
 "nbm_text": {
  "url": "https://nomads.ncep.noaa.gov/pub/data/nccf/com/blend/prod/blend.20261020/01/text/blend_nbhtx.t01z",
  "cycle_utc": "2026-10-20T01:00:00+00:00",
  "station": "KOGM",
  "rows": [
   {
    "local": "2026-10-19 22:00",
    "TMP": 41,
    "DPT": 36,
    "WSP": 3,
    "SKY": 9,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 0,
    "CIG": -88
   },
   {
    "local": "2026-10-19 23:00",
    "TMP": 40,
    "DPT": 35,
    "WSP": 3,
    "SKY": 7,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 0,
    "CIG": -88
   },
   {
    "local": "2026-10-20 00:00",
    "TMP": 40,
    "DPT": 35,
    "WSP": 3,
    "SKY": 7,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 1,
    "MVV": 1,
    "CIG": -88
   },
   {
    "local": "2026-10-20 01:00",
    "TMP": 40,
    "DPT": 34,
    "WSP": 3,
    "SKY": 2,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 1,
    "MVV": 2,
    "CIG": -88
   },
   {
    "local": "2026-10-20 02:00",
    "TMP": 40,
    "DPT": 34,
    "WSP": 3,
    "SKY": 5,
    "VIS": 10.0,
    "LIV": 1,
    "IFV": 2,
    "MVV": 4,
    "CIG": -88
   },
   {
    "local": "2026-10-20 03:00",
    "TMP": 40,
    "DPT": 33,
    "WSP": 3,
    "SKY": 8,
    "VIS": 10.0,
    "LIV": 1,
    "IFV": 3,
    "MVV": 4,
    "CIG": -88
   },
   {
    "local": "2026-10-20 04:00",
    "TMP": 40,
    "DPT": 33,
    "WSP": 3,
    "SKY": 6,
    "VIS": 10.0,
    "LIV": 2,
    "IFV": 3,
    "MVV": 5,
    "CIG": -88
   },
   {
    "local": "2026-10-20 05:00",
    "TMP": 39,
    "DPT": 33,
    "WSP": 3,
    "SKY": 3,
    "VIS": 10.0,
    "LIV": 2,
    "IFV": 3,
    "MVV": 5,
    "CIG": -88
   },
   {
    "local": "2026-10-20 06:00",
    "TMP": 39,
    "DPT": 32,
    "WSP": 4,
    "SKY": 3,
    "VIS": 10.0,
    "LIV": 2,
    "IFV": 4,
    "MVV": 6,
    "CIG": -88
   },
   {
    "local": "2026-10-20 07:00",
    "TMP": 39,
    "DPT": 32,
    "WSP": 4,
    "SKY": 7,
    "VIS": 10.0,
    "LIV": 3,
    "IFV": 4,
    "MVV": 6,
    "CIG": -88
   },
   {
    "local": "2026-10-20 08:00",
    "TMP": 39,
    "DPT": 33,
    "WSP": 4,
    "SKY": 9,
    "VIS": 10.0,
    "LIV": 3,
    "IFV": 4,
    "MVV": 6,
    "CIG": -88
   },
   {
    "local": "2026-10-20 09:00",
    "TMP": 42,
    "DPT": 34,
    "WSP": 5,
    "SKY": 3,
    "VIS": 10.0,
    "LIV": 4,
    "IFV": 6,
    "MVV": 7,
    "CIG": -88
   },
   {
    "local": "2026-10-20 10:00",
    "TMP": 47,
    "DPT": 37,
    "WSP": 5,
    "SKY": 1,
    "VIS": 10.0,
    "LIV": 4,
    "IFV": 4,
    "MVV": 5,
    "CIG": -88
   },
   {
    "local": "2026-10-20 11:00",
    "TMP": 52,
    "DPT": 39,
    "WSP": 5,
    "SKY": 0,
    "VIS": 10.0,
    "LIV": 3,
    "IFV": 3,
    "MVV": 3,
    "CIG": -88
   },
   {
    "local": "2026-10-20 12:00",
    "TMP": 56,
    "DPT": 41,
    "WSP": 5,
    "SKY": 3,
    "VIS": 10.0,
    "LIV": 2,
    "IFV": 2,
    "MVV": 2,
    "CIG": -88
   },
   {
    "local": "2026-10-20 13:00",
    "TMP": 60,
    "DPT": 41,
    "WSP": 4,
    "SKY": 6,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 0,
    "CIG": -88
   },
   {
    "local": "2026-10-20 14:00",
    "TMP": 63,
    "DPT": 42,
    "WSP": 3,
    "SKY": 4,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 0,
    "CIG": -88
   },
   {
    "local": "2026-10-20 15:00",
    "TMP": 63,
    "DPT": 43,
    "WSP": 3,
    "SKY": 1,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 0,
    "CIG": -88
   },
   {
    "local": "2026-10-20 16:00",
    "TMP": 63,
    "DPT": 43,
    "WSP": 2,
    "SKY": 1,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 1,
    "CIG": -88
   },
   {
    "local": "2026-10-20 17:00",
    "TMP": 63,
    "DPT": 44,
    "WSP": 2,
    "SKY": 1,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 1,
    "CIG": -88
   },
   {
    "local": "2026-10-20 18:00",
    "TMP": 61,
    "DPT": 44,
    "WSP": 2,
    "SKY": 4,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 2,
    "CIG": -88
   },
   {
    "local": "2026-10-20 19:00",
    "TMP": 58,
    "DPT": 44,
    "WSP": 2,
    "SKY": 6,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 3,
    "CIG": -88
   },
   {
    "local": "2026-10-20 20:00",
    "TMP": 54,
    "DPT": 44,
    "WSP": 3,
    "SKY": 7,
    "VIS": 10.0,
    "LIV": 0,
    "IFV": 0,
    "MVV": 2,
    "CIG": -88
   },
   {
    "local": "2026-10-20 21:00",
    "TMP": 52,
    "DPT": 44,
    "WSP": 4,
    "SKY": 11,
    "VIS": 10.0,
    "LIV": 2,
    "IFV": 2,
    "MVV": 4,
    "CIG": -88
   },
   {
    "local": "2026-10-20 22:00",
    "TMP": 51,
    "DPT": 43,
    "WSP": 4,
    "SKY": 15,
    "VIS": 10.0,
    "LIV": 2,
    "IFV": 3,
    "MVV": 6,
    "CIG": -88
   }
  ]
 },
 "profile": {
  "url": "https://www.meteo.psu.edu/bufkit/data/HRRR/00/hrrr_kiwd.buf",
  "cycle": "00",
  "init_local": "2026-10-19 20:00",
  "dawn_hours": [
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.6,
    "lowest_levels": [
     [
      8.4,
      9.84,
      3.45
     ],
     [
      33.0,
      10.04,
      3.38
     ],
     [
      79.0,
      10.44,
      3.33
     ],
     [
      158.3,
      12.14,
      3.39
     ],
     [
      277.3,
      12.94,
      3.41
     ]
    ],
    "valid_local": "03:00"
   },
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.5,
    "lowest_levels": [
     [
      8.4,
      9.94,
      1.94
     ],
     [
      33.8,
      10.04,
      1.81
     ],
     [
      78.9,
      10.44,
      1.25
     ],
     [
      158.1,
      11.94,
      -1.13
     ],
     [
      276.9,
      12.44,
      0.89
     ]
    ],
    "valid_local": "04:00"
   },
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.3,
    "lowest_levels": [
     [
      9.2,
      9.24,
      1.05
     ],
     [
      33.7,
      9.34,
      0.94
     ],
     [
      78.7,
      9.54,
      0.63
     ],
     [
      157.6,
      11.24,
      -0.8
     ],
     [
      276.2,
      12.34,
      0.47
     ]
    ],
    "valid_local": "05:00"
   },
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.2,
    "lowest_levels": [
     [
      9.2,
      8.94,
      0.87
     ],
     [
      33.7,
      9.04,
      0.8
     ],
     [
      78.7,
      9.14,
      0.66
     ],
     [
      157.5,
      11.04,
      0.08
     ],
     [
      276.1,
      12.24,
      1.3
     ]
    ],
    "valid_local": "06:00"
   },
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.2,
    "lowest_levels": [
     [
      9.2,
      8.64,
      0.64
     ],
     [
      33.7,
      8.74,
      0.57
     ],
     [
      78.6,
      8.84,
      0.39
     ],
     [
      158.2,
      10.94,
      0.02
     ],
     [
      275.9,
      12.34,
      2.13
     ]
    ],
    "valid_local": "07:00"
   },
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.3,
    "lowest_levels": [
     [
      8.4,
      8.24,
      0.03
     ],
     [
      32.8,
      8.34,
      -0.05
     ],
     [
      78.4,
      8.54,
      -0.16
     ],
     [
      157.1,
      11.14,
      0.3
     ],
     [
      275.7,
      12.54,
      2.5
     ]
    ],
    "valid_local": "08:00"
   },
   {
    "saturated_depth_m": 0.0,
    "inversion_dT_c": 0.2,
    "lowest_levels": [
     [
      10.1,
      8.04,
      0.27
     ],
     [
      33.6,
      8.04,
      0.23
     ],
     [
      78.3,
      8.24,
      0.3
     ],
     [
      157.8,
      11.14,
      1.23
     ],
     [
      276.5,
      12.74,
      2.53
     ]
    ],
    "valid_local": "09:00"
   }
  ],
  "station": "KIWD"
 },
 "obs_context": {
  "available": true,
  "metar": {
   "id": "KIWD",
   "time": "2026-10-20T02:00:00.000Z",
   "temp_c": 5.6,
   "dewp_c": 0.6,
   "wind_kt": 7,
   "wind_dir": 80,
   "vis_mi": "10+",
   "clouds": [],
   "wx": null,
   "raw": "METAR KIWD 200156Z AUTO 08007KT 10SM CLR 06/01 A3038 RMK AO2 SLP300 T00560006"
  },
  "station": "KIWD",
  "hrrr_now": {
   "T": 9.7,
   "Td": -3.9,
   "wind": 10.9,
   "low": 0
  },
  "dpd_obs": 5.0,
  "dpd_model": 13.6
 },
 "outlook": {
  "rows": [
   {
    "day": 1,
    "date": "2026-10-20",
    "weekday": "Tue 20 Oct",
    "setup_score": 0.233,
    "band": "poor",
    "spread": 0.554,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "HRRR",
    "type": "shallow ground fog",
    "light": "sun will reach the fog top",
    "sunrise": "08:24",
    "azimuth": 104.5,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 10.799999999999999,
     "wind_mean": 11.05,
     "cloud_mh_night": 0.0,
     "hours_saturated": 0
    },
    "confidence": "see the main report (calibrated, HRRR included)",
    "per_model": {
     "gfs_hrrr": 0.016,
     "ecmwf_ifs025": 0.408,
     "gfs_global": 0.404,
     "icon_seamless": 0.57,
     "ncep_nbm_conus": 0.135
    },
    "civil_dawn": "07:52",
    "sun_2deg": "08:40",
    "sun_12deg": "09:45",
    "burnoff": {
     "est_start": "08:39",
     "est_end": "09:09",
     "model_clear": null,
     "notes": [
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "0\u20133 m, if any (estimate)",
    "type_why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 10.8 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
    "light_why": "mid+high cloud at sunrise \u2248 0 %",
    "agreement": "low",
    "agreement_why": "models disagree (spread 0.55); treat the number as a coin-flip and check the 04:45 refresh",
    "dawn_temp_c": 9.4,
    "dawn_wind_kt": 11.0
   },
   {
    "day": 2,
    "date": "2026-10-21",
    "weekday": "Wed 21 Oct",
    "setup_score": 0.123,
    "band": "poor",
    "spread": 0.385,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "gfs_hrrr",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "HRRR",
    "type": "shallow ground fog",
    "light": "overcast above the fog",
    "sunrise": "08:25",
    "azimuth": 105.0,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 8.8,
     "wind_mean": 11.375,
     "cloud_mh_night": 45.72727272727273,
     "hours_saturated": 0
    },
    "confidence": "HRRR reaches this morning; models usually agree on the airmass; backtest AUC at this lead 0.726 (measured at 2 days)",
    "per_model": {
     "gfs_hrrr": 0.014,
     "ecmwf_ifs025": 0.082,
     "gfs_global": 0.27,
     "icon_seamless": 0.399,
     "ncep_nbm_conus": 0.075
    },
    "civil_dawn": "07:54",
    "sun_2deg": "08:41",
    "sun_12deg": "09:46",
    "burnoff": {
     "est_start": "09:05",
     "est_end": "09:55",
     "model_clear": null,
     "notes": [
      "cloud above the fog weakens the sun; add ~30\u201345 min",
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "0\u20133 m, if any (estimate)",
    "type_why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 8.8 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
    "light_why": "mid+high cloud at sunrise \u2248 100 % \u2014 flat grey, no beams",
    "agreement": "low",
    "agreement_why": "models disagree (spread 0.39); treat the number as a coin-flip and check the 04:45 refresh",
    "dawn_temp_c": 12.7,
    "dawn_wind_kt": 11.0
   },
   {
    "day": 3,
    "date": "2026-10-22",
    "weekday": "Thu 22 Oct",
    "setup_score": 0.797,
    "band": "strong set-up",
    "spread": 0.384,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "ECMWF",
    "type": "deep fog bank",
    "light": "sun will reach the fog top",
    "sunrise": "08:27",
    "azimuth": 105.6,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 0.0,
     "wind_mean": 1.75,
     "cloud_mh_night": 0.0,
     "hours_saturated": 11
    },
    "confidence": "set-up only: dewpoint, wind and sky from the global models; backtest AUC at this lead 0.738 (measured at 3 days)",
    "per_model": {
     "gfs_hrrr": null,
     "ecmwf_ifs025": 0.855,
     "gfs_global": 0.601,
     "icon_seamless": 0.985,
     "ncep_nbm_conus": 0.755
    },
    "civil_dawn": "07:55",
    "sun_2deg": "08:43",
    "sun_12deg": "09:49",
    "burnoff": {
     "est_start": "10:27",
     "est_end": "11:57",
     "model_clear": "11:00",
     "notes": [],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "20\u201380 m (estimate)",
    "type_why": "saturated for 11 h before sunrise with 1.8 kt of wind to stir the layer upward \u2014 enough time and mixing to bury tree lines; only the tallest crowns will poke out",
    "light_why": "mid+high cloud at sunrise \u2248 6 %",
    "agreement": "low",
    "agreement_why": "models disagree (spread 0.38); treat the number as a coin-flip and check the 04:45 refresh",
    "dawn_temp_c": 3.6,
    "dawn_wind_kt": 2.0
   },
   {
    "day": 4,
    "date": "2026-10-23",
    "weekday": "Fri 23 Oct",
    "setup_score": 0.419,
    "band": "poor",
    "spread": 0.203,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "ECMWF",
    "type": "shallow ground fog",
    "light": "overcast above the fog",
    "sunrise": "08:28",
    "azimuth": 106.1,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 1.8999999999999995,
     "wind_mean": 7.45,
     "cloud_mh_night": 0.0,
     "hours_saturated": 0
    },
    "confidence": "set-up only: dewpoint, wind and sky from the global models; backtest AUC at this lead 0.738 (measured at 3 days)",
    "per_model": {
     "gfs_hrrr": null,
     "ecmwf_ifs025": 0.471,
     "gfs_global": 0.502,
     "icon_seamless": 0.469,
     "ncep_nbm_conus": 0.299
    },
    "civil_dawn": "07:56",
    "sun_2deg": "08:44",
    "sun_12deg": "09:50",
    "burnoff": {
     "est_start": "08:58",
     "est_end": "09:43",
     "model_clear": null,
     "notes": [],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "0\u20133 m, if any (estimate)",
    "type_why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 1.9 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
    "light_why": "mid+high cloud at sunrise \u2248 0 %, plus a low deck \u2248 88 % \u2014 flat grey, no beams",
    "agreement": "medium",
    "agreement_why": "models differ by 0.20 on the blend score",
    "dawn_temp_c": 9.1,
    "dawn_wind_kt": 7.4
   },
   {
    "day": 5,
    "date": "2026-10-24",
    "weekday": "Sat 24 Oct",
    "setup_score": 0.008,
    "band": "poor",
    "spread": 0.003,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "ECMWF",
    "type": "shallow ground fog",
    "light": "overcast above the fog",
    "sunrise": "08:30",
    "azimuth": 106.6,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 4.3,
     "wind_mean": 11.95,
     "cloud_mh_night": 98.18181818181819,
     "hours_saturated": 0
    },
    "confidence": "pattern only; expect the number to move; backtest AUC at this lead 0.627 (measured at 5 days)",
    "per_model": {
     "gfs_hrrr": null,
     "ecmwf_ifs025": 0.008,
     "gfs_global": 0.006,
     "icon_seamless": 0.008,
     "ncep_nbm_conus": 0.009
    },
    "civil_dawn": "07:58",
    "sun_2deg": "08:46",
    "sun_12deg": "09:52",
    "burnoff": {
     "est_start": "09:10",
     "est_end": "10:00",
     "model_clear": null,
     "notes": [
      "cloud above the fog weakens the sun; add ~30\u201345 min",
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "0\u20133 m, if any (estimate)",
    "type_why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 4.3 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
    "light_why": "mid+high cloud at sunrise \u2248 100 % \u2014 flat grey, no beams",
    "agreement": "high",
    "agreement_why": "4 models within 0.00 of each other on the blend score",
    "dawn_temp_c": 11.6,
    "dawn_wind_kt": 12.6
   },
   {
    "day": 6,
    "date": "2026-10-25",
    "weekday": "Sun 25 Oct",
    "setup_score": 0.127,
    "band": "poor",
    "spread": 0.331,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "ECMWF",
    "type": "shallow ground fog",
    "light": "overcast above the fog",
    "sunrise": "08:31",
    "azimuth": 107.1,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 0.10000000000000142,
     "wind_mean": 8.775,
     "cloud_mh_night": 100.0,
     "hours_saturated": 2
    },
    "confidence": "pattern only; expect the number to move; backtest AUC at this lead 0.627 (measured at 5 days)",
    "per_model": {
     "gfs_hrrr": null,
     "ecmwf_ifs025": 0.34,
     "gfs_global": 0.009,
     "icon_seamless": 0.154,
     "ncep_nbm_conus": 0.012
    },
    "civil_dawn": "07:59",
    "sun_2deg": "08:47",
    "sun_12deg": "09:54",
    "burnoff": {
     "est_start": "09:11",
     "est_end": "10:01",
     "model_clear": "11:00",
     "notes": [
      "cloud above the fog weakens the sun; add ~30\u201345 min",
      "wind picking up after sunrise mixes it out faster"
     ],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "0.5\u20135 m (estimate)",
    "type_why": "saturation only in the last 2 h before sunrise \u2014 fog pools over the lowest ground, rivers and wet fields, trees stand clear of it",
    "light_why": "mid+high cloud at sunrise \u2248 100 %, plus a low deck \u2248 86 % \u2014 flat grey, no beams",
    "agreement": "low",
    "agreement_why": "models disagree (spread 0.33); treat the number as a coin-flip and check the 04:45 refresh",
    "dawn_temp_c": 12.3,
    "dawn_wind_kt": 7.7
   },
   {
    "day": 7,
    "date": "2026-10-26",
    "weekday": "Mon 26 Oct",
    "setup_score": 0.29,
    "band": "poor",
    "spread": 0.613,
    "models": [
     "ecmwf_ifs025",
     "gfs_global",
     "icon_seamless",
     "ncep_nbm_conus"
    ],
    "primary": "ECMWF",
    "type": "shallow ground fog",
    "light": "sun will reach the fog top",
    "sunrise": "08:32",
    "azimuth": 107.6,
    "compass": "ESE",
    "drivers": {
     "dpd_min": 1.7000000000000002,
     "wind_mean": 6.425,
     "cloud_mh_night": 70.36363636363636,
     "hours_saturated": 0
    },
    "confidence": "pattern only; expect the number to move; backtest AUC at this lead 0.627 (measured at 5 days)",
    "per_model": {
     "gfs_hrrr": null,
     "ecmwf_ifs025": 0.499,
     "gfs_global": 0.02,
     "icon_seamless": 0.633,
     "ncep_nbm_conus": 0.08
    },
    "civil_dawn": "08:01",
    "sun_2deg": "08:48",
    "sun_12deg": "09:55",
    "burnoff": {
     "est_start": "09:02",
     "est_end": "09:47",
     "model_clear": null,
     "notes": [],
     "basis": "rule-of-thumb window by fog depth (estimate), plus the HRRR hour where its own visibility and dewpoint spread recover (model output)"
    },
    "depth_est": "0\u20133 m, if any (estimate)",
    "type_why": "the primary model never brings T\u2212Td under 1 \u00b0C (minimum 1.7 \u00b0C); anything that forms will be thin patches over water and the wettest low ground",
    "light_why": "mid+high cloud at sunrise \u2248 0 %",
    "agreement": "low",
    "agreement_why": "models disagree (spread 0.61); treat the number as a coin-flip and check the 04:45 refresh",
    "dawn_temp_c": 7.0,
    "dawn_wind_kt": 6.8
   }
  ],
  "best_days": [
   "2026-10-22",
   "2026-10-23",
   "2026-10-26"
  ],
  "sources": {
   "gfs_hrrr": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-26T15%3A00",
   "ecmwf_ifs025": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ecmwf_ifs025&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-26T15%3A00",
   "gfs_global": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=gfs_global&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-26T15%3A00",
   "icon_seamless": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-26T15%3A00",
   "ncep_nbm_conus": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_gusts_10m%2Cwind_direction_10m%2Ccloud_cover%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Cprecipitation%2Csurface_pressure%2Cboundary_layer_height%2Csoil_moisture_0_to_1cm%2Cshortwave_radiation&models=ncep_nbm_conus&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T19%3A00&end_hour=2026-10-26T15%3A00"
  },
  "band_rates": [
   {
    "band": "strong set-up",
    "lo": 0.75,
    "n": 44,
    "fog_rate": 0.25
   },
   {
    "band": "decent set-up",
    "lo": 0.6,
    "n": 82,
    "fog_rate": 0.17
   },
   {
    "band": "marginal",
    "lo": 0.45,
    "n": 154,
    "fog_rate": 0.12
   },
   {
    "band": "poor",
    "lo": 0.0,
    "n": 285,
    "fog_rate": 0.08
   }
  ],
  "lead_skill": {
   "1": 0.746,
   "2": 0.726,
   "3": 0.738,
   "5": 0.627
  },
  "note": "Set-up score = the same factor blend the day-1 report uses, before calibration. It ranks mornings; it is not a probability. Day 1 is calibrated in the main report."
 },
 "lake": {
  "uncalibrated": true,
  "sunrise": "08:24",
  "ground_msl": 416.2,
  "lake_msl": 183.5,
  "lake_name": "Lake Superior",
  "ridge_label": "escarpment",
  "skyline": [],
  "steam": {
   "available": true,
   "air_min_c": 8.7,
   "wind_dir": 116,
   "wind_kt": 10.9,
   "onshore": false,
   "sst_c": 7.7,
   "sst_label": "NDBC 45006 water temperature (observation)",
   "sst_time": "2026-10-20T02:10Z",
   "sst_url": "https://www.ndbc.noaa.gov/data/realtime2/45006.txt",
   "delta_c": -1.0,
   "score": 0.0,
   "label": "unlikely",
   "why": "lake 7.7 \u00b0C (NDBC 45006 water temperature (observation)) vs forecast dawn air over the water 8.7 \u00b0C (HRRR) \u2192 -1.0 \u00b0C; steam needs roughly 8\u201310 \u00b0C or more (rule of thumb, uncalibrated); wind is off the land, so the steam stays over the lake as a band seen from the shore"
  },
  "bank": {
   "score": 0.07,
   "label": "unlikely",
   "per_model": {
    "gfs_hrrr": {
     "score": 0.07,
     "low_cloud_pct": 0,
     "wind_dir": 164,
     "wind_kt": 11.1,
     "onshore": false,
     "base_msl": null,
     "top_msl": null,
     "hours_ridge_in_cloud": 0,
     "hours": 5
    },
    "gfs_global": {
     "score": 0.07,
     "low_cloud_pct": 0,
     "wind_dir": 170,
     "wind_kt": 4.7,
     "onshore": false,
     "base_msl": null,
     "top_msl": null,
     "hours_ridge_in_cloud": 0,
     "hours": 5
    },
    "icon_seamless": {
     "score": 0.07,
     "low_cloud_pct": 0,
     "wind_dir": 169,
     "wind_kt": 3.4,
     "onshore": false,
     "base_msl": null,
     "top_msl": null,
     "hours_ridge_in_cloud": 0,
     "hours": 5
    }
   },
   "primary": "gfs_hrrr",
   "why": "low cloud \u2248 0 %, wind 164\u00b0 at 11.1 kt (offshore), saturated layer none vs escarpment 416 m, escarpment in cloud 0/5 dawn hours (HRRR levels 975\u2013900 hPa over the lake point)"
  },
  "views": [
   {
    "id": "home",
    "name": "Lake of the Clouds scenic overlook (DNR waypoint 'LAKE OF CLOUDS')",
    "elevation_m": 416.2,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "big-carp-river-valley-floor",
    "name": "Big Carp River valley floor at the Lake of the Clouds outlet (North Mirror Lake Trail vertex)",
    "elevation_m": 329.0,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "cuyahoga-peak",
    "name": "Cuyahoga Peak (Escarpment Trail high point candidate)",
    "elevation_m": 483.6,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "summit-peak-tower",
    "name": "Summit Peak observation tower",
    "elevation_m": 594.9,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "presque-isle-river-mouth",
    "name": "Presque Isle River mouth (Presque Isle Unit)",
    "elevation_m": 183.5,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "union-bay-campground",
    "name": "Union Bay Campground (lakeshore)",
    "elevation_m": 191.7,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "ontonagon-marina",
    "name": "Ontonagon Marina (City of Ontonagon)",
    "elevation_m": 183.5,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "porkies-m107-boundary-shoreline",
    "name": "Lake Superior shoreline at the park's M-107 east boundary",
    "elevation_m": 183.5,
    "view": "no saturated layer in the primary model"
   },
   {
    "id": "government-peak",
    "name": "Government Peak",
    "elevation_m": 563.5,
    "view": "no saturated layer in the primary model"
   }
  ],
  "sources": {
   "gfs_hrrr": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_direction_10m%2Cwind_speed_80m%2Cwind_direction_80m%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Crelative_humidity_975hPa%2Crelative_humidity_950hPa%2Crelative_humidity_925hPa%2Crelative_humidity_900hPa%2Ccloud_cover_975hPa%2Ccloud_cover_950hPa%2Ccloud_cover_925hPa%2Ccloud_cover_900hPa%2Cgeopotential_height_975hPa%2Cgeopotential_height_950hPa%2Cgeopotential_height_925hPa%2Cgeopotential_height_900hPa%2Cwind_direction_925hPa%2Cwind_speed_925hPa&models=gfs_hrrr&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T22%3A00&end_hour=2026-10-20T15%3A00",
   "gfs_global": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_direction_10m%2Cwind_speed_80m%2Cwind_direction_80m%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Crelative_humidity_975hPa%2Crelative_humidity_950hPa%2Crelative_humidity_925hPa%2Crelative_humidity_900hPa%2Ccloud_cover_975hPa%2Ccloud_cover_950hPa%2Ccloud_cover_925hPa%2Ccloud_cover_900hPa%2Cgeopotential_height_975hPa%2Cgeopotential_height_950hPa%2Cgeopotential_height_925hPa%2Cgeopotential_height_900hPa%2Cwind_direction_925hPa%2Cwind_speed_925hPa&models=gfs_global&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T22%3A00&end_hour=2026-10-20T15%3A00",
   "icon_seamless": "https://api.open-meteo.com/v1/forecast?latitude=46.803333&longitude=-89.763667&hourly=temperature_2m%2Cdew_point_2m%2Crelative_humidity_2m%2Cwind_speed_10m%2Cwind_direction_10m%2Cwind_speed_80m%2Cwind_direction_80m%2Ccloud_cover_low%2Ccloud_cover_mid%2Ccloud_cover_high%2Cvisibility%2Crelative_humidity_975hPa%2Crelative_humidity_950hPa%2Crelative_humidity_925hPa%2Crelative_humidity_900hPa%2Ccloud_cover_975hPa%2Ccloud_cover_950hPa%2Ccloud_cover_925hPa%2Ccloud_cover_900hPa%2Cgeopotential_height_975hPa%2Cgeopotential_height_950hPa%2Cgeopotential_height_925hPa%2Cgeopotential_height_900hPa%2Cwind_direction_925hPa%2Cwind_speed_925hPa&models=icon_seamless&timezone=GMT&wind_speed_unit=kn&start_hour=2026-10-19T22%3A00&end_hour=2026-10-20T15%3A00"
  },
  "note": "Lake mechanisms are scored from physical rules of thumb and have no backtest; treat labels as a reading of the set-up, not a probability. The radiation score above still applies to low ground away from the water."
 },
 "history": [
  {
   "morning": "2026-10-16",
   "run_time": "2026-10-16T12:09-04:00",
   "kind": "predawn",
   "fog_probability": 0.01,
   "raw_blend": 0.049,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "high",
   "observed_min_vis_mi": 2.5,
   "observed_fog": false,
   "cams": [
    "2026-10-16-GOES19-umv-geocolor.jpg",
    "2026-10-16-GOES19-umv-nightfog.jpg",
    "2026-10-16-MDOT-2057.jpg",
    "2026-10-16-MDOT-2063.jpg",
    "2026-10-16-MDOT-2069.jpg"
   ],
   "verification_source": "IEM ASOS IWD 04:00\u201309:00 local"
  },
  {
   "morning": "2026-10-17",
   "run_time": "2026-10-16T22:30-04:00",
   "kind": "evening",
   "fog_probability": 0.01,
   "raw_blend": 0.031,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "high",
   "observed_min_vis_mi": 10.0,
   "observed_fog": false,
   "cams": [
    "2026-10-17-GOES19-umv-geocolor.jpg",
    "2026-10-17-GOES19-umv-nightfog.jpg",
    "2026-10-17-MDOT-2057.jpg",
    "2026-10-17-MDOT-2063.jpg",
    "2026-10-17-MDOT-2069.jpg"
   ],
   "verification_source": "IEM ASOS IWD 04:00\u201309:00 local"
  },
  {
   "morning": "2026-10-17",
   "run_time": "2026-10-17T05:45-04:00",
   "kind": "predawn",
   "fog_probability": 0.01,
   "raw_blend": 0.032,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "high",
   "observed_min_vis_mi": 10.0,
   "observed_fog": false,
   "cams": [
    "2026-10-17-GOES19-umv-geocolor.jpg",
    "2026-10-17-GOES19-umv-nightfog.jpg",
    "2026-10-17-MDOT-2057.jpg",
    "2026-10-17-MDOT-2063.jpg",
    "2026-10-17-MDOT-2069.jpg"
   ],
   "verification_source": "IEM ASOS IWD 04:00\u201309:00 local"
  },
  {
   "morning": "2026-10-18",
   "run_time": "2026-10-17T22:30-04:00",
   "kind": "evening",
   "fog_probability": 0.0,
   "raw_blend": 0.016,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "high",
   "observed_min_vis_mi": 10.0,
   "observed_fog": false,
   "cams": [
    "2026-10-18-GOES19-umv-geocolor.jpg",
    "2026-10-18-GOES19-umv-nightfog.jpg",
    "2026-10-18-MDOT-2057.jpg",
    "2026-10-18-MDOT-2063.jpg",
    "2026-10-18-MDOT-2069.jpg"
   ],
   "verification_source": "IEM ASOS IWD 04:00\u201309:00 local"
  },
  {
   "morning": "2026-10-18",
   "run_time": "2026-10-18T05:45-04:00",
   "kind": "predawn",
   "fog_probability": 0.0,
   "raw_blend": 0.015,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "high",
   "observed_min_vis_mi": 10.0,
   "observed_fog": false,
   "cams": [
    "2026-10-18-GOES19-umv-geocolor.jpg",
    "2026-10-18-GOES19-umv-nightfog.jpg",
    "2026-10-18-MDOT-2057.jpg",
    "2026-10-18-MDOT-2063.jpg",
    "2026-10-18-MDOT-2069.jpg"
   ],
   "verification_source": "IEM ASOS IWD 04:00\u201309:00 local"
  },
  {
   "morning": "2026-10-19",
   "run_time": "2026-10-18T22:30-04:00",
   "kind": "evening",
   "fog_probability": 0.03,
   "raw_blend": 0.344,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "low",
   "observed_min_vis_mi": null,
   "observed_fog": null,
   "cams": [
    "2026-10-19-GOES19-umv-geocolor.jpg",
    "2026-10-19-GOES19-umv-nightfog.jpg",
    "2026-10-19-MDOT-2057.jpg",
    "2026-10-19-MDOT-2063.jpg",
    "2026-10-19-MDOT-2069.jpg"
   ]
  },
  {
   "morning": "2026-10-19",
   "run_time": "2026-10-19T05:45-04:00",
   "kind": "predawn",
   "fog_probability": 0.02,
   "raw_blend": 0.284,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "low",
   "observed_min_vis_mi": null,
   "observed_fog": null,
   "cams": [
    "2026-10-19-GOES19-umv-geocolor.jpg",
    "2026-10-19-GOES19-umv-nightfog.jpg",
    "2026-10-19-MDOT-2057.jpg",
    "2026-10-19-MDOT-2063.jpg",
    "2026-10-19-MDOT-2069.jpg"
   ]
  },
  {
   "morning": "2026-10-20",
   "run_time": "2026-10-19T22:30-04:00",
   "kind": "evening",
   "fog_probability": 0.01,
   "raw_blend": 0.207,
   "grade": "F",
   "type": "shallow ground fog",
   "confidence": "low",
   "observed_min_vis_mi": null,
   "observed_fog": null
  }
 ]
}