{# 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. #}
Favorite limit reached
Free accounts can save up to 3 favorites.
Upgrade to Snoflo Premium for unlimited
favorites, unlimited alerts, the historical comparison view,
and full access to the climate map.
{# 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. #}
Alerts live in the iOS app
Snoflo push alerts — snowfall thresholds, streamflow
crossings, wave height, and more — are managed in the
iOS app. Download Snoflo on your iPhone or iPad to view,
add, and edit your alerts.