Free account required

Sign up to access the Snoflo map

Real-time snowpack, streamflow, reservoirs, wildfires, and recreation conditions across North America — in one interactive map.

Create your free account
🔒 No credit card required.
Already a member? Log in
4,600+SNOTEL sites
7,400+USGS gauges
90,000+Dams & reservoirs
{# FAVORITE-LIMIT MODAL — fires when a non-premium user hits the 3-favorite cap. Mirrors the iOS PremiumGateSheet's .bookmarkLimit case: same copy direction (limit reached → unlimited with Premium), same primary CTA shape. Triggered from toggle_fave (pre-flight) and the 403 error handler. #} {# Bootstrap's `.modal.fade` class sets opacity:0 and expects to be opened via jQuery's $.modal('show') which animates the opacity. Our showFavoriteLimitModal() just flips inline display, so Bootstrap's opacity rule would leave the popup invisible. Use a plain div with inline styles (same pattern as #sf-cp-alerts-modal) to sidestep Bootstrap entirely. #} {# ALERTS-IN-APP MODAL — opened from the Account dropdown's "Alerts" link. Push-notification alerts (snow / flow / buoy / ski) are managed in the iOS app because they require APNs + device tokens; the webapp has no equivalent surface, so the right thing to do is point users at the App Store. Mirrors the per-gauge #sf-cp-alerts-modal popup on recChildFlow.html. #}