{"id":145,"date":"2025-10-13T20:00:48","date_gmt":"2025-10-13T20:00:48","guid":{"rendered":"https:\/\/upwellsurf.com\/?page_id=145"},"modified":"2026-03-27T16:58:10","modified_gmt":"2026-03-27T16:58:10","slug":"upwell_surf","status":"publish","type":"page","link":"https:\/\/upwellsurf.com\/","title":{"rendered":"\u00a0Upwellsurf Forecast"},"content":{"rendered":"    <style>\n    #upwell-forecast-wrap { max-width: 1200px; margin: 20px auto; padding: 30px; background: #f8fafc; border-radius: 15px; font-family: Arial, sans-serif; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }\n    .upwell-day-block { background: white; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.08); margin-bottom: 0; overflow: hidden; }\n    .upwell-day-header { background: linear-gradient(135deg, #1e40af 0%, #3730a3 100%); color: white; padding: 14px 20px; display: flex; justify-content: space-between; align-items: center; cursor: pointer; user-select: none; }\n    .upwell-day-header:hover { background: linear-gradient(135deg, #1e3a8a 0%, #312e81 100%); }\n    .upwell-day-header h4 { margin: 0; font-size: 17px; font-weight: bold; }\n    .upwell-day-header .day-summary { font-size: 14px; opacity: 0.9; }\n    .upwell-day-header .toggle-icon { font-size: 18px; transition: transform 0.3s; }\n    .upwell-day-header.open .toggle-icon { transform: rotate(180deg); }\n    .upwell-hourly-grid { display: none; overflow-x: auto; }\n    .upwell-hourly-grid.open { display: block; }\n    .upwell-hourly-table { width: 100%; border-collapse: collapse; min-width: 700px; }\n    .upwell-hourly-table th { background: #f1f5f9; color: #1e40af; font-size: 13px; padding: 10px 12px; text-align: center; border-bottom: 2px solid #e5e7eb; white-space: nowrap; }\n    .upwell-hourly-table td { padding: 10px 12px; text-align: center; border-bottom: 1px solid #f1f5f9; font-size: 14px; }\n    .upwell-hourly-table tr:last-child td { border-bottom: none; }\n    .upwell-hourly-table tr:hover td { background: #f8fafc; }\n    .upwell-hourly-table td.time-col { font-weight: bold; color: #1e40af; white-space: nowrap; }\n    .upwell-btn-pro {\n        background: linear-gradient(135deg, #7c3aed 0%, #4f46e5 100%); color: #fff; border: none;\n        padding: 12px 18px; border-radius: 8px; font-weight: 700; cursor: pointer; font-size: 15px;\n    }\n    .upwell-btn-pro:hover { filter: brightness(1.05); }\n    .upwell-pro-gate {\n        margin: 16px 0 24px; padding: 20px; border-radius: 12px;\n        background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 55%, #db2777 100%);\n        color: #fff; box-shadow: 0 8px 24px rgba(79, 70, 229, 0.25);\n    }\n    .upwell-pro-gate h3 { margin: 0 0 8px; font-size: 20px; }\n    .upwell-pro-gate p { margin: 0 0 14px; opacity: 0.95; font-size: 14px; line-height: 1.45; }\n    .upwell-pro-gate .upwell-pro-gate-actions { display: flex; flex-wrap: wrap; gap: 10px; }\n    .upwell-pro-gate button {\n        background: #fff; color: #4f46e5; border: none; border-radius: 8px;\n        padding: 10px 16px; font-weight: 700; cursor: pointer;\n    }\n    #upwellPro24Mount { margin: 0 0 24px; min-height: 0; }\n    .rating-excellent { color: #16a34a; font-weight: bold; }\n    .rating-good { color: #2563eb; font-weight: bold; }\n    .rating-fair { color: #d97706; font-weight: bold; }\n    .rating-poor { color: #dc2626; font-weight: bold; }\n    .upwell-ad-divider { background: linear-gradient(135deg, #1e40af 0%, #3730a3 50%, #dc2626 100%); color: white; padding: 18px 24px; margin: 0; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; }\n    .upwell-ad-divider .ad-text h5 { margin: 0 0 4px 0; font-size: 16px; font-weight: bold; }\n    .upwell-ad-divider .ad-text p { margin: 0; font-size: 13px; opacity: 0.9; }\n    .upwell-ad-divider .ad-buttons { display: flex; gap: 10px; flex-wrap: wrap; }\n    .upwell-ad-btn { padding: 8px 18px; border-radius: 7px; font-weight: bold; font-size: 14px; text-decoration: none; color: white; display: inline-block; }\n    .upwell-select { width: 100%; padding: 15px; font-size: 16px; border: 2px solid #3b82f6; border-radius: 8px; background: white; margin-bottom: 15px; }\n    .upwell-did-podcast {\n        background: linear-gradient(160deg, #111827 0%, #1f2937 55%, #3f2a0a 100%);\n        color: #fff;\n        border-radius: 16px;\n        padding: 18px;\n        margin: 18px 0 22px;\n        box-shadow: 0 8px 24px rgba(0,0,0,0.18);\n    }\n    .upwell-did-podcast h3 {\n        margin: 0 0 6px;\n        font-size: 1.25rem;\n        font-weight: 800;\n        letter-spacing: -0.02em;\n        overflow-wrap: anywhere;\n    }\n    .upwell-did-podcast .upwell-did-kicker {\n        margin: 0 0 10px;\n        font-size: 12px;\n        font-weight: 800;\n        letter-spacing: 0.08em;\n        text-transform: uppercase;\n        color: #d4a017;\n    }\n    .upwell-did-podcast .upwell-did-price {\n        margin: 0 0 14px;\n        font-size: 15px;\n        line-height: 1.45;\n        color: #fde68a;\n    }\n    .upwell-did-podcast .upwell-did-price strong { color: #fff; font-size: 1.05em; }\n    .upwell-did-podcast .upwell-did-media {\n        position: relative;\n        width: 100%;\n        border-radius: 12px;\n        overflow: hidden;\n        background: #000;\n        margin-bottom: 14px;\n        aspect-ratio: 16 \/ 9;\n    }\n    .upwell-did-podcast .upwell-did-media iframe,\n    .upwell-did-podcast .upwell-did-media video {\n        position: absolute;\n        inset: 0;\n        width: 100%;\n        height: 100%;\n        border: 0;\n        display: block;\n        background: #000;\n        object-fit: cover;\n    }\n    .upwell-did-podcast .upwell-did-actions {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 10px;\n        align-items: center;\n    }\n    .upwell-did-podcast .upwell-did-subscribe {\n        display: inline-block;\n        padding: 12px 20px;\n        border-radius: 10px;\n        background: #d4a017;\n        color: #111 !important;\n        font-weight: 800;\n        text-decoration: none !important;\n        border: none;\n        cursor: pointer;\n        font-size: 15px;\n    }\n    .upwell-did-podcast .upwell-did-subscribe:hover { filter: brightness(1.05); }\n    .upwell-did-podcast .upwell-did-listen {\n        display: inline-block;\n        padding: 12px 18px;\n        border-radius: 10px;\n        background: #1db954;\n        color: #fff !important;\n        font-weight: 700;\n        text-decoration: none !important;\n        font-size: 14px;\n    }\n    .upwell-surfdonkey-podcast {\n        background: linear-gradient(145deg, #111827 0%, #1f2937 48%, #7c2d12 100%);\n        color: #fff;\n        border-radius: 16px;\n        padding: 0;\n        margin: 0 0 22px;\n        box-shadow: 0 12px 32px rgba(0,0,0,0.24);\n        border: 1px solid rgba(251,146,60,0.35);\n        overflow: hidden;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-top {\n        padding: 18px 18px 14px;\n        text-align: left;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-kicker {\n        margin: 0 0 8px;\n        font-size: 11px;\n        font-weight: 800;\n        letter-spacing: 0.12em;\n        text-transform: uppercase;\n        color: #fb923c;\n    }\n    .upwell-surfdonkey-podcast h3 {\n        margin: 0 0 6px;\n        font-size: 1.4rem;\n        font-weight: 800;\n        letter-spacing: -0.03em;\n        color: #fff;\n        line-height: 1.2;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-sub {\n        margin: 0;\n        font-size: 14px;\n        line-height: 1.45;\n        color: #fdba74;\n        max-width: 36em;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-grid {\n        display: grid;\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 0;\n        border-top: 1px solid rgba(255,255,255,0.08);\n        background: #0f172a;\n    }\n    @media (max-width: 480px) {\n        .upwell-surfdonkey-podcast .upwell-sd-grid { grid-template-columns: 1fr; }\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-card {\n        display: flex;\n        flex-direction: column;\n        text-decoration: none !important;\n        color: inherit;\n        background: #fff;\n        position: relative;\n        transition: filter 0.15s ease;\n        border-right: 1px solid #e5e7eb;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-card:last-child { border-right: 0; }\n    .upwell-surfdonkey-podcast .upwell-sd-card:hover { filter: brightness(1.03); }\n    .upwell-surfdonkey-podcast .upwell-sd-card img {\n        width: 100%;\n        height: 240px;\n        object-fit: contain;\n        background: #f8fafc;\n        display: block;\n        padding: 16px;\n        box-sizing: border-box;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-card-meta {\n        padding: 12px 14px 16px;\n        text-align: left;\n        background: #fff;\n        border-top: 1px solid #f1f5f9;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-card-meta strong {\n        display: block;\n        color: #0f172a;\n        font-size: 16px;\n        font-weight: 800;\n        margin-bottom: 4px;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-card-meta span {\n        font-size: 13px;\n        color: #ea580c;\n        font-weight: 700;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-actions {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 10px;\n        align-items: center;\n        justify-content: space-between;\n        padding: 14px 18px 16px;\n        background: rgba(0,0,0,0.22);\n        border-top: 1px solid rgba(255,255,255,0.08);\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-actions .upwell-sd-note {\n        margin: 0;\n        font-size: 13px;\n        color: #fdba74;\n        font-weight: 600;\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-shop {\n        display: inline-block;\n        padding: 12px 22px;\n        border-radius: 10px;\n        background: #ea580c;\n        color: #fff !important;\n        font-weight: 800;\n        text-decoration: none !important;\n        font-size: 15px;\n        box-shadow: 0 4px 14px rgba(234,88,12,0.45);\n    }\n    .upwell-surfdonkey-podcast .upwell-sd-shop:hover { background: #c2410c; }\n    .upwell-ad-divider.upwell-sd-forecast-ad {\n        background: linear-gradient(145deg, #111827 0%, #1f2937 48%, #7c2d12 100%);\n        flex-direction: column;\n        align-items: stretch;\n        gap: 12px;\n        border-radius: 14px;\n        padding: 14px;\n        border: 1px solid rgba(251,146,60,0.35);\n    }\n    .upwell-ad-divider.upwell-sd-forecast-ad .upwell-sd-merch-row {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 10px;\n        width: 100%;\n    }\n    .upwell-ad-divider.upwell-sd-forecast-ad .upwell-sd-merch-row a {\n        display: block;\n        background: #fff;\n        border-radius: 10px;\n        overflow: hidden;\n        text-decoration: none;\n        color: #0f172a;\n        font-weight: 800;\n        font-size: 13px;\n        text-align: left;\n        border: 1px solid #e5e7eb;\n    }\n    .upwell-ad-divider.upwell-sd-forecast-ad .upwell-sd-merch-row img {\n        width: 100%;\n        height: 160px;\n        object-fit: contain;\n        background: #f8fafc;\n        display: block;\n        padding: 10px;\n        box-sizing: border-box;\n    }\n    .upwell-ad-divider.upwell-sd-forecast-ad .upwell-sd-merch-row span {\n        display: block;\n        padding: 8px 10px 10px;\n        color: #ea580c;\n        border-top: 1px solid #f1f5f9;\n    }\n    .upwell-btn-primary { background: #3b82f6; color: white; padding: 12px 30px; border: none; border-radius: 8px; font-size: 16px; cursor: pointer; width: 100%; font-weight: bold; }\n    .upwell-btn-primary:hover { background: #2563eb; }\n    .upwell-listing-showing-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\n    @media (max-width: 520px) {\n        .upwell-listing-showing-grid { grid-template-columns: 1fr; }\n    }\n    #upwell-forecast-wrap .youtube-support-listing-card {\n        margin: 16px 0 0 0; padding: 16px 18px; border-radius: 12px; border: 1px solid #e5e7eb;\n        background: #fff; box-shadow: 0 2px 12px rgba(15,23,42,0.08); max-width: 900px;\n    }\n    #upwell-forecast-wrap .upwell-listing-status-pill { display:inline-block; padding:4px 10px; border-radius:4px; font-size:11px; font-weight:700; letter-spacing:0.06em; }\n    #upwell-forecast-wrap .upwell-listing-status-for-sale { background:#dcfce7; color:#166534; }\n    #upwell-forecast-wrap .upwell-listing-status-pending { background:#fef9c3; color:#854d0e; }\n    #upwell-forecast-wrap .upwell-listing-status-sold { background:#fee2e2; color:#991b1b; }\n    #upwell-forecast-wrap .upwell-listing-card-price { margin:10px 0 0; font-size:26px; font-weight:800; color:#0f172a; line-height:1.15; }\n    #upwell-forecast-wrap .upwell-listing-card-price-secondary { margin:4px 0 0; font-size:15px; font-weight:600; color:#475569; }\n    #upwell-forecast-wrap .upwell-listing-card-address { margin:10px 0 0; font-size:15px; color:#334155; }\n    #upwell-forecast-wrap .upwell-listing-card-stats { display:flex; flex-wrap:wrap; gap:14px 20px; margin:12px 0 4px; font-size:15px; font-weight:600; color:#1e293b; }\n    #upwell-forecast-wrap .upwell-listing-card-desc { margin-top:12px; font-size:14px; line-height:1.55; color:#334155; }\n    #upwell-forecast-wrap .upwell-listing-card-ext { font-weight:700; color:#2563eb; text-decoration:none; }\n    \/* Listing info popup *\/\n    .upwell-re-listing-teaser {\n        display:flex; gap:16px; align-items:stretch; max-width:900px; margin:0 auto 16px;\n        background:#fff; border:1px solid #e5e7eb; border-radius:12px; overflow:hidden;\n        box-shadow:0 2px 12px rgba(54, 54, 56, 0.08); cursor:pointer; text-align:left;\n        transition:box-shadow .2s, transform .15s;\n    }\n    .upwell-re-listing-teaser:hover { box-shadow:0 8px 24px rgba(15,23,42,0.12); transform:translateY(-1px); }\n    .upwell-re-listing-teaser:focus { outline:2px solid #2563eb; outline-offset:2px; }\n    .upwell-re-listing-teaser-img { width:140px; min-height:100px; flex-shrink:0; object-fit:cover; }\n    .upwell-re-listing-teaser-body { padding:14px 16px 14px 0; flex:1; min-width:0; }\n    .upwell-re-listing-teaser-price { font-size:22px; font-weight:800; color:#0f172a; margin:4px 0 0; }\n    .upwell-re-listing-teaser-addr { font-size:14px; color:#475569; margin:6px 0 0; line-height:1.4; }\n    .upwell-re-listing-teaser-stats { font-size:14px; font-weight:600; color:#334155; margin-top:8px; }\n    .upwell-re-listing-teaser-cta { display:inline-block; margin-top:12px; font-size:14px; font-weight:700; color:#2563eb; }\n    .upwell-re-listing-teaser--forecast-between { margin: 14px 0 10px; max-width: 100%; }\n    .upwell-re-listing-teaser--forecast-between {\n        border: 2px solid #f59e0b;\n        box-shadow: 0 10px 24px rgba(15,23,42,0.14);\n        flex-direction: column;\n        align-items: stretch;\n    }\n    .upwell-re-listing-teaser--forecast-between .upwell-re-listing-teaser-figure {\n        position: relative;\n        width: 100%;\n        overflow: hidden;\n        background: #0f172a;\n        flex-shrink: 0;\n        cursor: pointer;\n    }\n    .upwell-re-listing-teaser--forecast-between .upwell-re-listing-teaser-img {\n        width: 100%;\n        height: 200px;\n        min-height: 180px;\n        max-height: 280px;\n        object-fit: cover;\n        display: block;\n    }\n    @media (min-width: 521px) {\n        .upwell-re-listing-teaser--forecast-between .upwell-re-listing-teaser-img {\n            height: 240px;\n            max-height: 320px;\n        }\n    }\n    .upwell-re-listing-teaser-photo-pill {\n        position: absolute;\n        right: 10px;\n        bottom: 10px;\n        background: rgba(15, 23, 42, 0.82);\n        color: #fff;\n        font-size: 12px;\n        font-weight: 700;\n        padding: 5px 11px;\n        border-radius: 8px;\n        pointer-events: none;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n    }\n    .upwell-re-listing-teaser-listing-hint {\n        position: absolute;\n        left: 10px;\n        top: 10px;\n        background: rgba(255,255,255,0.95);\n        color: #0f172a;\n        font-size: 12px;\n        font-weight: 700;\n        padding: 5px 10px;\n        border-radius: 8px;\n        pointer-events: none;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.12);\n    }\n    .upwell-re-listing-teaser--forecast-between .upwell-re-listing-teaser-body { padding: 14px 16px 16px; }\n    .upwell-re-listing-teaser--forecast-between .upwell-re-listing-teaser-price { font-size: 24px; }\n    .upwell-re-listing-teaser--forecast-between .upwell-re-listing-teaser-cta { color: #dc2626; font-weight: 800; letter-spacing: 0.02em; }\n    .upwell-re-listing-more-btn {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        margin-top: 10px;\n        padding: 9px 14px;\n        border: 1px solid #2563eb;\n        border-radius: 8px;\n        background: #eff6ff;\n        color: #1d4ed8;\n        font-size: 14px;\n        font-weight: 700;\n        cursor: pointer;\n        text-decoration: none;\n    }\n    .upwell-re-listing-more-btn:hover { background: #dbeafe; }\n    .upwell-re-listing-teaser-badge {\n        display: inline-flex; align-items: center; gap: 6px; margin: 0 0 8px 0; padding: 5px 10px;\n        border-radius: 999px; background: #fef3c7; color: #92400e; font-size: 11px;\n        font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase;\n    }\n    .upwell-forecast-between-wrap { margin: 0; padding: 0; }\n    \/* Featured listing between day cards *\/\n    .upwell-forecast-day-listing-wrap,\n    .upwell-forecast-day-re-wrap,\n    .upwell-forecast-day-sponsor-wrap {\n        margin: 0;\n        padding: 0;\n    }\n    .upwell-forecast-day-re-wrap { margin-top: 12px; }\n    .upwell-forecast-day-re-wrap + .upwell-forecast-day-sponsor-wrap .upwell-ad-divider { margin-top: 10px; }\n    .upwell-free-home-estate {\n        margin: 0 0 24px 0; padding: 22px 20px; border-radius: 14px;\n        background: linear-gradient(135deg, #0f172a 0%, #1e3a5f 45%, #0ea5e9 100%);\n        color: #fff; box-shadow: 0 8px 24px rgba(15, 23, 42, 0.2);\n    }\n    .upwell-free-home-estate h3 {\n        margin: 0 0 6px 0; font-size: 22px; font-weight: 800; letter-spacing: 0.02em; color: #fff;\n    }\n    .upwell-free-home-estate .uhe-sub {\n        margin: 0 0 16px 0; font-size: 14px; line-height: 1.45; opacity: 0.95; color: #e2e8f0;\n    }\n    .upwell-free-home-estate .uhe-spot {\n        display: inline-block; margin-bottom: 14px; padding: 4px 10px; border-radius: 999px;\n        background: rgba(255,255,255,0.18); font-size: 12px; font-weight: 700; letter-spacing: 0.04em;\n        text-transform: uppercase;\n    }\n    .upwell-free-home-estate .uhe-grid {\n        display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\n    }\n    .upwell-free-home-estate .uhe-field { display: flex; flex-direction: column; gap: 6px; }\n    .upwell-free-home-estate .uhe-field.uhe-full { grid-column: 1 \/ -1; }\n    .upwell-free-home-estate label { font-size: 13px; font-weight: 700; color: #f8fafc; }\n    .upwell-free-home-estate input {\n        width: 100%; box-sizing: border-box; padding: 11px 12px; border-radius: 8px;\n        border: 1px solid rgba(255,255,255,0.35); background: rgba(255,255,255,0.95);\n        color: #0f172a; font-size: 15px; font-family: inherit;\n    }\n    .upwell-free-home-estate input:focus {\n        outline: 2px solid #fde047; outline-offset: 1px; border-color: #fde047;\n    }\n    .upwell-free-home-estate .uhe-actions { margin-top: 14px; }\n    .upwell-free-home-estate .uhe-submit {\n        display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n        padding: 12px 22px; border: none; border-radius: 10px; cursor: pointer;\n        background: linear-gradient(180deg, #fde047 0%, #facc15 100%); color: #422006;\n        font-size: 15px; font-weight: 800; font-family: inherit;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.2);\n    }\n    .upwell-free-home-estate .uhe-submit:hover { background: #fef08a; }\n    .upwell-free-home-estate .uhe-note {\n        margin: 10px 0 0 0; font-size: 12px; color: #cbd5e1;\n    }\n    @media (max-width: 560px) {\n        .upwell-free-home-estate .uhe-grid { grid-template-columns: 1fr; }\n    }\n    .upwell-efficiency-ns {\n        margin: 0 0 24px 0; padding: 22px 20px; border-radius: 14px;\n        background: linear-gradient(135deg, #064e3b 0%, #047857 50%, #10b981 100%);\n        color: #fff; box-shadow: 0 8px 24px rgba(6, 78, 59, 0.25);\n    }\n    .upwell-efficiency-ns h3 {\n        margin: 0 0 6px 0; font-size: 22px; font-weight: 800; letter-spacing: 0.02em; color: #fff;\n    }\n    .upwell-efficiency-ns .ens-sub {\n        margin: 0 0 16px 0; font-size: 14px; line-height: 1.45; opacity: 0.95; color: #d1fae5;\n    }\n    .upwell-efficiency-ns .ens-spot {\n        display: inline-block; margin-bottom: 14px; padding: 4px 10px; border-radius: 999px;\n        background: rgba(255,255,255,0.18); font-size: 12px; font-weight: 700; letter-spacing: 0.04em;\n        text-transform: uppercase;\n    }\n    .upwell-efficiency-ns .ens-grid {\n        display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\n    }\n    .upwell-efficiency-ns .ens-field { display: flex; flex-direction: column; gap: 6px; }\n    .upwell-efficiency-ns .ens-field.ens-full { grid-column: 1 \/ -1; }\n    .upwell-efficiency-ns label { font-size: 13px; font-weight: 700; color: #ecfdf5; }\n    .upwell-efficiency-ns input {\n        width: 100%; box-sizing: border-box; padding: 11px 12px; border-radius: 8px;\n        border: 1px solid rgba(255,255,255,0.35); background: rgba(255,255,255,0.95);\n        color: #064e3b; font-size: 15px; font-family: inherit;\n    }\n    .upwell-efficiency-ns input:focus {\n        outline: 2px solid #a7f3d0; outline-offset: 1px; border-color: #a7f3d0;\n    }\n    .upwell-efficiency-ns .ens-actions { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }\n    .upwell-efficiency-ns .ens-submit {\n        display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n        padding: 12px 22px; border: none; border-radius: 10px; cursor: pointer;\n        background: #ecfdf5; color: #064e3b;\n        font-size: 15px; font-weight: 800; font-family: inherit;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.15);\n    }\n    .upwell-efficiency-ns .ens-submit:hover { background: #fff; }\n    .upwell-efficiency-ns .ens-link {\n        color: #ecfdf5; font-size: 13px; font-weight: 600; text-decoration: underline; text-underline-offset: 2px;\n    }\n    .upwell-efficiency-ns .ens-note {\n        margin: 10px 0 0 0; font-size: 12px; color: #a7f3d0;\n    }\n    @media (max-width: 560px) {\n        .upwell-efficiency-ns .ens-grid { grid-template-columns: 1fr; }\n    }\n    .upwell-forecast-day-listing-wrap .upwell-re-listing-teaser--forecast-between {\n        margin: 14px 0 10px;\n        max-width: 100%;\n    }\n    @media (max-width:520px) {\n        .upwell-re-listing-teaser:not(.upwell-re-listing-teaser--forecast-between) { flex-direction: column; }\n        .upwell-re-listing-teaser:not(.upwell-re-listing-teaser--forecast-between) .upwell-re-listing-teaser-img { width: 100%; height: 160px; }\n    }\n    .upwell-re-modal { position:fixed; inset:0; z-index:100000; display:none; align-items:flex-start; justify-content:center; padding:24px 12px 40px; box-sizing:border-box; overflow-y:auto; }\n    .upwell-re-modal.is-open { display:flex; }\n    .upwell-re-modal-backdrop { position:fixed; inset:0; background:rgba(15,23,42,0.55); }\n    .upwell-re-modal-panel {\n        position:relative; z-index:1; width:100%; max-width:920px; margin-top:8px;\n        background:#fff; border-radius:14px; box-shadow:0 25px 50px rgba(0,0,0,0.25); overflow:hidden;\n        max-height:calc(100vh - 48px); display:flex; flex-direction:column;\n    }\n    .upwell-re-modal-close {\n        position:absolute; top:10px; right:10px; z-index:5; width:40px; height:40px; border:none; border-radius:50%;\n        background:rgba(255,255,255,0.95); font-size:24px; line-height:1; cursor:pointer; color:#0f172a;\n        box-shadow:0 2px 8px rgba(0,0,0,0.12);\n    }\n    .upwell-re-modal-close:hover { background:#f1f5f9; }\n    .upwell-re-modal-scroll { overflow-y:auto; -webkit-overflow-scrolling:touch; flex:1; }\n    .upwell-re-gallery { background:#0f172a; }\n    .upwell-re-gallery-stage { position:relative; }\n    .upwell-re-gallery-main { width:100%; max-height:min(52vh,420px); object-fit:cover; display:block; }\n    .upwell-re-gallery-overlay { position:absolute; left:12px; bottom:12px; right:12px; display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:8px; pointer-events:none; }\n    .upwell-re-gallery-overlay .upwell-listing-status-pill { pointer-events:auto; }\n    .upwell-re-gallery-count { background:rgba(15,23,42,0.75); color:#fff; font-size:12px; font-weight:600; padding:4px 10px; border-radius:6px; }\n    .upwell-re-gallery-nav {\n        position:absolute; top:50%; transform:translateY(-50%); z-index:3; width:40px; height:40px; border:none; border-radius:50%;\n        background:rgba(255,255,255,0.92); font-size:22px; cursor:pointer; color:#0f172a; line-height:1; box-shadow:0 2px 8px rgba(0,0,0,0.15);\n    }\n    .upwell-re-gallery-nav:hover { background:#fff; }\n    .upwell-re-gallery-prev { left:10px; }\n    .upwell-re-gallery-next { right:10px; }\n    .upwell-re-gallery-thumbs { display:flex; gap:8px; padding:10px 12px; overflow-x:auto; background:#1e293b; }\n    .upwell-re-gallery-thumb { flex:0 0 auto; padding:0; border:2px solid transparent; border-radius:8px; overflow:hidden; cursor:pointer; background:transparent; opacity:0.75; }\n    .upwell-re-gallery-thumb.is-active { border-color:#38bdf8; opacity:1; }\n    .upwell-re-gallery-thumb img { width:72px; height:52px; object-fit:cover; display:block; }\n    .upwell-re-video-wrap { background:#0f172a; padding: 10px 12px 14px; border-top: 1px solid rgba(148,163,184,0.25); }\n    .upwell-re-video-title { margin: 0 0 8px; font-size: 13px; font-weight: 700; color: #e2e8f0; letter-spacing: 0.02em; }\n    .upwell-re-video-iframe {\n        width: 100%;\n        max-width: 100%;\n        height: 280px;\n        border: 0;\n        border-radius: 10px;\n        display: block;\n        background: #000;\n    }\n    @media (max-width: 720px) {\n        .upwell-re-video-iframe { height: 220px; }\n    }\n    #upwell-forecast-wrap .youtube-support-listing-card.upwell-re-modal-card { margin:0; border-radius:0; border:none; box-shadow:none; max-width:none; }\n    #upwell-forecast-wrap #upwellListingInquiryForm.upwell-re-modal-form { max-width:none; margin:0; padding:20px 22px 24px; border-top:1px solid #e5e7eb; background:#f8fafc; }\n    \/* Storm banner + featured listing (opens same modal as between-day teaser) *\/\n    #upwell-forecast-wrap .upwell-storm-listing-wrap { margin-top: 14px; text-align: center; }\n    #upwell-forecast-wrap .upwell-storm-listing-btn {\n        display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n        padding: 10px 18px; font-size: 15px; font-weight: 700; color: #991b1b;\n        background: #fff; border: none; border-radius: 8px; cursor: pointer;\n        box-shadow: 0 2px 8px rgba(0,0,0,0.15); font-family: inherit;\n    }\n    #upwell-forecast-wrap .upwell-storm-listing-btn:hover { background: #fef2f2; color: #7f1d1d; }\n    #upwell-forecast-wrap .upwell-storm-listing-thumb-wrap { margin-top: 12px; }\n    #upwell-forecast-wrap .upwell-storm-listing-thumb {\n        display: inline-block; padding: 0; margin: 0; border: none; background: transparent;\n        cursor: pointer; border-radius: 10px; overflow: hidden; line-height: 0;\n        box-shadow: 0 4px 14px rgba(0,0,0,0.25); max-width: 100%; vertical-align: top;\n    }\n    #upwell-forecast-wrap .upwell-storm-listing-thumb img { display: block; width: 100%; max-width: 380px; height: auto; }\n    #upwell-forecast-wrap .upwell-storm-listing-amenities {\n        margin: 10px 0 0; font-size: 14px; color: rgba(255,255,255,0.95); line-height: 1.4;\n    }\n    #upwell-forecast-wrap .upwell-storm-listing-mini-gallery {\n        display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; justify-content: flex-start;\n    }\n    #upwell-forecast-wrap .upwell-storm-listing-mini-gallery button {\n        border: 0; padding: 0; border-radius: 6px; overflow: hidden; cursor: pointer; width: 64px; height: 48px; background: rgba(255,255,255,0.2);\n    }\n    #upwell-forecast-wrap .upwell-storm-listing-mini-gallery img { width: 100%; height: 100%; object-fit: cover; display: block; }\n    #upwell-forecast-wrap .upwell-storm-subtitle {\n        margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; line-height: 1.3;\n    }\n    #upwell-forecast-wrap .storm-noreaster-label {\n        font-size: 22px; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase;\n        text-shadow: 0 2px 4px rgba(0, 0, 0, 0.28);\n    }\n    #upwell-forecast-wrap .storm-noreaster-cta {\n        display: inline-block; font-size: 14px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase;\n        padding: 6px 14px; border-radius: 999px; background: rgba(255, 255, 255, 0.2);\n        border: 1px solid rgba(255, 255, 255, 0.45); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n    }\n    <\/style>\n\n    <div id=\"upwell-forecast-wrap\">\n    <script>\n    window.UPWELL_STRIPE_PRO_REPORT_URL = \"https:\\\/\\\/buy.stripe.com\\\/bJe28tbj539f0w07gaew800\";\n    window.upwellOpenStripeProReportPayment = window.upwellOpenStripeProReportPayment || function () {\n        var url = (typeof upwell_ajax !== 'undefined' && upwell_ajax.stripe_pro_report_url) || window.UPWELL_STRIPE_PRO_REPORT_URL;\n        if (!url) { return; }\n        var w = window.open(url, '_blank', 'noopener,noreferrer');\n        if (!w) { window.location.assign(url); }\n    };\n    <\/script>\n\n        <!-- STORM WARNING BANNER (April 12\u2013style: optional real-estate listing opens full info popup when listing enabled) -->\n        <div style=\"background: linear-gradient(135deg, #dc2626 0%, #b91c1c 50%, #991b1b 100%); color: white; padding: 20px; border-radius: 12px; margin-bottom: 30px; text-align: center;\">\n            <div style=\"display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;\">\n                <div style=\"text-align: left;\">\n                    <h2 style=\"margin: 0 0 8px 0; font-size: 28px; font-weight: bold;\">\ud83c\udf28\ufe0f STORM WARNING<\/h2>\n                    <p class=\"upwell-storm-subtitle\"><span class=\"storm-noreaster-label\">Nor&rsquo;easter<\/span><button type=\"button\" class=\"storm-noreaster-cta\" onclick=\"upwellOpenStripeProReportPayment(); return false;\">Get Pro Report<\/button><\/p>\n                    <p style=\"margin: 8px 0 0 0; font-size: 16px;\">\u26a0\ufe0f Sponsor \u2014 Father's day sale 50% pro report . Check local conditions.<\/p>\n                                                    <div class=\"upwell-storm-listing-wrap\">\n            <button type=\"button\" class=\"upwell-storm-listing-btn\" onclick=\"upwellForecastOpenOceanViewModal();\" aria-label=\"View Ocean View rental and contact\">\n                \ud83c\udfe0 View Ocean View rental &amp; contact            <\/button>\n            <p class=\"upwell-storm-listing-amenities\">\n                <strong>Internet<\/strong> Starlink\n                \u00b7\n                <strong>Kitchen<\/strong> Full kitchen \u2014 stove, fridge, dining\n                \u00b7\n                <strong>$299<\/strong> \/ night\n            <\/p>\n            <div class=\"upwell-storm-listing-thumb-wrap\">\n                <button type=\"button\" class=\"upwell-storm-listing-thumb\" onclick=\"upwellForecastOpenOceanViewModal();\" aria-label=\"Open Ocean View rental\">\n                    <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-view-hero.jpg\" alt=\"Ocean View \u2014 exterior and ocean outlook\" loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"254\">\n                <\/button>\n            <\/div>\n                        <div class=\"upwell-storm-listing-mini-gallery\">\n                                <button type=\"button\" onclick=\"upwellForecastOpenOceanViewModal();\">\n                    <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-view-hero.jpg\" alt=\"Ocean View \u2014 exterior and ocean outlook\" loading=\"lazy\" width=\"64\" height=\"48\">\n                <\/button>\n                                <button type=\"button\" onclick=\"upwellForecastOpenOceanViewModal();\">\n                    <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-view-4-laundry.jpg\" alt=\"Ocean View \u2014 laundry and kitchen area\" loading=\"lazy\" width=\"64\" height=\"48\">\n                <\/button>\n                                <button type=\"button\" onclick=\"upwellForecastOpenOceanViewModal();\">\n                    <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-08-water-view.jpg\" alt=\"Ocean View \u2014 water view from the property\" loading=\"lazy\" width=\"64\" height=\"48\">\n                <\/button>\n                                <button type=\"button\" onclick=\"upwellForecastOpenOceanViewModal();\">\n                    <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-09-driveway.jpg\" alt=\"Ocean View \u2014 driveway and parking\" loading=\"lazy\" width=\"64\" height=\"48\">\n                <\/button>\n                            <\/div>\n                    <\/div>\n                                            <\/div>\n                <span style=\"font-size: 48px;\">\u2744\ufe0f<\/span>\n            <\/div>\n        <\/div>\n\n        <div id=\"upwellForecastOceanViewModal\" class=\"upwell-re-modal\" aria-hidden=\"true\">\n            <div class=\"upwell-re-modal-backdrop\" onclick=\"upwellForecastCloseOceanViewModal()\"><\/div>\n            <div class=\"upwell-re-modal-panel\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"upwell-ov-modal-title\">\n                <button type=\"button\" class=\"upwell-re-modal-close\" onclick=\"upwellForecastCloseOceanViewModal()\" aria-label=\"Close\">\u00d7<\/button>\n                <div class=\"upwell-re-modal-scroll\">\n                    <div class=\"upwell-re-gallery\" data-count=\"7\">\n                        <div class=\"upwell-re-gallery-stage\">\n                                                        <button type=\"button\" class=\"upwell-re-gallery-nav upwell-re-gallery-prev\" onclick=\"upwellForecastOceanGalleryStep(-1)\" aria-label=\"Previous photo\">\u2039<\/button>\n                            <button type=\"button\" class=\"upwell-re-gallery-nav upwell-re-gallery-next\" onclick=\"upwellForecastOceanGalleryStep(1)\" aria-label=\"Next photo\">\u203a<\/button>\n                                                        <img id=\"upwellForecastOceanGalleryMain\" class=\"upwell-re-gallery-main\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-view-hero.jpg\" alt=\"Ocean View \u2014 exterior and ocean outlook\" loading=\"eager\" decoding=\"async\" data-index=\"0\">\n                            <div class=\"upwell-re-gallery-overlay\">\n                                <span class=\"upwell-listing-status-pill upwell-listing-status-for-sale\">Short-term rental<\/span>\n                                <span class=\"upwell-re-gallery-count\" id=\"upwellForecastOceanGalleryCount\" aria-live=\"polite\">1 \/ 7<\/span>                            <\/div>\n                        <\/div>\n                                                <div class=\"upwell-re-gallery-thumbs\" role=\"tablist\" aria-label=\"Ocean View photos\">\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb is-active\" role=\"tab\" aria-selected=\"true\" onclick=\"upwellForecastOceanGalleryPick(0)\" aria-label=\"Show photo 1\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-view-hero.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb\" role=\"tab\" aria-selected=\"false\" onclick=\"upwellForecastOceanGalleryPick(1)\" aria-label=\"Show photo 2\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-view-4-laundry.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb\" role=\"tab\" aria-selected=\"false\" onclick=\"upwellForecastOceanGalleryPick(2)\" aria-label=\"Show photo 3\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-08-water-view.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb\" role=\"tab\" aria-selected=\"false\" onclick=\"upwellForecastOceanGalleryPick(3)\" aria-label=\"Show photo 4\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-09-driveway.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb\" role=\"tab\" aria-selected=\"false\" onclick=\"upwellForecastOceanGalleryPick(4)\" aria-label=\"Show photo 5\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-10-dining.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb\" role=\"tab\" aria-selected=\"false\" onclick=\"upwellForecastOceanGalleryPick(5)\" aria-label=\"Show photo 6\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-11-deck-view.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                        <button type=\"button\" class=\"upwell-re-gallery-thumb\" role=\"tab\" aria-selected=\"false\" onclick=\"upwellForecastOceanGalleryPick(6)\" aria-label=\"Show photo 7\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/ocean-view\/ocean-12-laundry-kitchen.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" width=\"72\" height=\"52\">\n                            <\/button>\n                                                    <\/div>\n                                            <\/div>\n\n                    <div class=\"youtube-support-listing-card upwell-re-modal-card\">\n                        <h3 class=\"upwell-listing-card-price\" id=\"upwell-ov-modal-title\">$299 \/ night<\/h3>\n                        <p class=\"upwell-listing-card-price-secondary\">Ocean View \u2014 short-term house rental<\/p>\n                        <p class=\"upwell-listing-card-address upwell-ov-modal-spot\">Coastal home near the break<\/p>\n                        <div class=\"upwell-listing-card-stats\">\n                            <span>5 bd<\/span>\n                            <span>1 ba<\/span>\n                            <span>Sleeps 8\u201312<\/span>\n                        <\/div>\n                        <div style=\"display:grid; grid-template-columns:1fr; gap:8px; margin-top:10px; font-size:14px;\">\n                            <div><strong>Internet<\/strong> \u2014 Starlink<\/div>\n                            <div><strong>Kitchen<\/strong> \u2014 Full kitchen \u2014 stove, fridge, cookware, dining<\/div>\n                            <div><strong>Parking<\/strong> \u2014 Long driveway \u00b7 2+ cars<\/div>\n                            <div><strong>Extras<\/strong> \u2014 BBQ \u00b7 surf rinse \u00b7 wood stove<\/div>\n                            <div><strong>Min stay<\/strong> \u2014 2 nights \u00b7 check-in 1pm \u00b7 out 11am<\/div>\n                        <\/div>\n                        <h4 style=\"margin:18px 0 8px;font-size:15px;color:#0f172a;\">About this house rental<\/h4>\n                        <div class=\"upwell-listing-card-desc\">\n                            <p>Ocean View is a coastal short-term house rental for surf trips, family gatherings, and remote-work getaways. Bright living area, full kitchen, and an ocean-facing deck after your session.<\/p>\n                            <p>Email for availability, weekly rates, and booking. Rates confirmed by email.<\/p>\n                        <\/div>\n                        <div class=\"upwell-ov-modal-cal-wrap\" style=\"margin-top:18px;\">\n                                    <div class=\"upwell-ocean-view__schedule upwell-ov-cal\" data-month=\"2026-10\">\n            <h4>Availability calendar<\/h4>\n            <p class=\"upwell-ov-cal__month\">October 2026<\/p>\n            <p class=\"upwell-ocean-view__legend\">\n                <span class=\"upwell-ocean-view__pill upwell-ocean-view__pill--open\">Open<\/span>\n                <span class=\"upwell-ocean-view__pill upwell-ocean-view__pill--booked\">Booked<\/span>\n            <\/p>\n            <p class=\"upwell-ov-cal__booked-note\">Booked: October 16\u201323, 2026<\/p>\n            <div class=\"upwell-ov-cal__grid\" role=\"grid\" aria-label=\"Availability for October 2026\">\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Mon<\/div>\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Tue<\/div>\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Wed<\/div>\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Thu<\/div>\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Fri<\/div>\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Sat<\/div>\n                                    <div class=\"upwell-ov-cal__dow\" role=\"columnheader\">Sun<\/div>\n                                                    <div class=\"upwell-ov-cal__cell is-empty\" aria-hidden=\"true\"><\/div>\n                                    <div class=\"upwell-ov-cal__cell is-empty\" aria-hidden=\"true\"><\/div>\n                                    <div class=\"upwell-ov-cal__cell is-empty\" aria-hidden=\"true\"><\/div>\n                                                                                                <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-01\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">1<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-02\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">2<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-03\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">3<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-04\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">4<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-05\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">5<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-06\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">6<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-07\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">7<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-08\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">8<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-09\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">9<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-10\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">10<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-11\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">11<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-12\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">12<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-13\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">13<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-14\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">14<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-15\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">15<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-16\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">16<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-17\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">17<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-18\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">18<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-19\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">19<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-20\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">20<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-21\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">21<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-22\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">22<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"Booked 2026-10-23\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">23<\/span>\n                            <span class=\"upwell-ov-cal__status\">Booked<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-24\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">24<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-25\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">25<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-26\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">26<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <div class=\"upwell-ov-cal__cell is-past\" role=\"gridcell\" title=\"2026-10-27\" aria-disabled=\"true\">\n                            <span class=\"upwell-ov-cal__num\">27<\/span>\n                            <span class=\"upwell-ov-cal__status\">&nbsp;<\/span>\n                        <\/div>\n                                                                                                    <a class=\"upwell-ov-cal__cell is-open is-today\" href=\"mailto:support@upwellsurf.com?subject=Book%20Ocean%20View%20%E2%80%94%202026-10-28&#038;body=I%27d%20like%20to%20book%20Ocean%20View%20starting%202026-10-28.%0AGuests%3A%0ANights%3A%0A\" role=\"gridcell\" title=\"Available 2026-10-28\">\n                            <span class=\"upwell-ov-cal__num\">28<\/span>\n                            <span class=\"upwell-ov-cal__status\">Open<\/span>\n                        <\/a>\n                                                                                                    <a class=\"upwell-ov-cal__cell is-open\" href=\"mailto:support@upwellsurf.com?subject=Book%20Ocean%20View%20%E2%80%94%202026-10-29&#038;body=I%27d%20like%20to%20book%20Ocean%20View%20starting%202026-10-29.%0AGuests%3A%0ANights%3A%0A\" role=\"gridcell\" title=\"Available 2026-10-29\">\n                            <span class=\"upwell-ov-cal__num\">29<\/span>\n                            <span class=\"upwell-ov-cal__status\">Open<\/span>\n                        <\/a>\n                                                                                                    <a class=\"upwell-ov-cal__cell is-open\" href=\"mailto:support@upwellsurf.com?subject=Book%20Ocean%20View%20%E2%80%94%202026-10-30&#038;body=I%27d%20like%20to%20book%20Ocean%20View%20starting%202026-10-30.%0AGuests%3A%0ANights%3A%0A\" role=\"gridcell\" title=\"Available 2026-10-30\">\n                            <span class=\"upwell-ov-cal__num\">30<\/span>\n                            <span class=\"upwell-ov-cal__status\">Open<\/span>\n                        <\/a>\n                                                                                                    <a class=\"upwell-ov-cal__cell is-open\" href=\"mailto:support@upwellsurf.com?subject=Book%20Ocean%20View%20%E2%80%94%202026-10-31&#038;body=I%27d%20like%20to%20book%20Ocean%20View%20starting%202026-10-31.%0AGuests%3A%0ANights%3A%0A\" role=\"gridcell\" title=\"Available 2026-10-31\">\n                            <span class=\"upwell-ov-cal__num\">31<\/span>\n                            <span class=\"upwell-ov-cal__status\">Open<\/span>\n                        <\/a>\n                                                <\/div>\n            <p class=\"upwell-ocean-view__note\">Tap an open date to email a booking request, or write support@upwellsurf.com. October 16\u201323 is booked.<\/p>\n        <\/div>\n                                <\/div>\n                        <p style=\"margin:14px 0 0;font-size:14px;\">\n                            <a href=\"mailto:support@upwellsurf.com?subject=Ocean%20View%20short-term%20rental%20%E2%80%94%20more%20info&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27d%20like%20more%20information%20about%20the%20Ocean%20View%20house%20rental.%0A%0APreferred%20check-in%3A%0APreferred%20check-out%3A%0AGuests%3A%0A%0AThanks%21\" style=\"font-weight:700;color:#005bff;\">support@upwellsurf.com<\/a>\n                        <\/p>\n                        <p style=\"margin:14px 0 0 0; font-size:14px; display:flex; flex-wrap:wrap; gap:10px;\">\n                            <a href=\"mailto:support@upwellsurf.com?subject=Ocean%20View%20short-term%20rental%20%E2%80%94%20more%20info&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27d%20like%20more%20information%20about%20the%20Ocean%20View%20house%20rental.%0A%0APreferred%20check-in%3A%0APreferred%20check-out%3A%0AGuests%3A%0A%0AThanks%21\" style=\"display:inline-block; padding:12px 22px; background:#005bff; color:#fff; font-weight:700; border-radius:10px; text-decoration:none;\">Email for more info<\/a>\n                            <a href=\"mailto:support@upwellsurf.com?subject=Ocean%20View%20short-term%20rental%20inquiry&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27d%20like%20to%20book%20%2F%20ask%20about%20Ocean%20View%20short-term%20rental.%0A%0APreferred%20check-in%3A%0APreferred%20check-out%3A%0AGuests%3A%0A%0AThanks%21\" style=\"display:inline-block; padding:12px 22px; background:linear-gradient(180deg,#fde047 0%,#facc15 100%); color:#422006; font-weight:700; border-radius:10px; border:2px solid #ca8a04; text-decoration:none;\">Request stay (email)<\/a>\n                        <\/p>\n                    <\/div>\n\n                    <form id=\"upwellOceanViewInquiryForm\" class=\"upwell-re-modal-form\" onsubmit=\"return upwellSendOceanViewInquiry(event);\"\n                        data-contact-email=\"support@upwellsurf.com\"\n                        data-mail-subject=\"Ocean View short-term rental inquiry\"\n                        style=\"font-family:sans-serif;\">\n                        <h2 style=\"margin-top:0;\">Request stay \/ more info<\/h2>\n                        <input type=\"text\" name=\"Name\" id=\"upwellOceanViewName\" placeholder=\"Your Name\" required\n                            style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\">\n                        <input type=\"email\" name=\"Email\" id=\"upwellOceanViewEmail\" placeholder=\"Your Email\" required\n                            style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\">\n                        <input type=\"tel\" name=\"Phone\" id=\"upwellOceanViewPhone\" placeholder=\"Phone Number\"\n                            style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\">\n                        <textarea name=\"Message\" id=\"upwellOceanViewMessage\" placeholder=\"Preferred dates, guests, questions\u2026\"\n                            rows=\"5\"\n                            style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\"><\/textarea>\n                        <button type=\"submit\"\n                            style=\"background:#10b981; color:white; padding:14px 20px; border:none; border-radius:10px; font-size:16px; cursor:pointer;\">\n                            Send inquiry                        <\/button>\n                    <\/form>\n\n                    <div class=\"upwell-ov-list-rental-bar\">\n                        <p>Have a place near the break?<\/p>\n                        <a class=\"upwell-ov-list-rental upwell-ov-list-rental--bar\" href=\"mailto:support@upwellsurf.com?subject=List%20my%20short-term%20rental%20on%20Upwell%20Surf&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27d%20like%20to%20list%20my%20short-term%20rental%20on%20Upwell%20Surf.%0A%0AProperty%20name%20%2F%20title%3A%0ALocation%3A%0ANightly%20rate%3A%0ABedrooms%20%2F%20baths%20%2F%20sleeps%3A%0AInternet%20%2F%20kitchen%20notes%3A%0APhotos%20available%3A%20yes%20%2F%20no%0A%0AThanks%21\">\n                            List your rental today                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <script>\n        window.upwellOceanViewListingGallery = [{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-view-hero.jpg\",\"alt\":\"Ocean View \\u2014 exterior and ocean outlook\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-view-4-laundry.jpg\",\"alt\":\"Ocean View \\u2014 laundry and kitchen area\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-08-water-view.jpg\",\"alt\":\"Ocean View \\u2014 water view from the property\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-09-driveway.jpg\",\"alt\":\"Ocean View \\u2014 driveway and parking\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-10-dining.jpg\",\"alt\":\"Ocean View \\u2014 dining area\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-11-deck-view.jpg\",\"alt\":\"Ocean View \\u2014 deck overlooking the ocean\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-12-laundry-kitchen.jpg\",\"alt\":\"Ocean View \\u2014 kitchen and laundry\"}];\n        window.upwellOceanViewGalleryIdx = 0;\n        <\/script>\n        \n\n        <!-- SPONSOR AD -->\n        <div style=\"background: linear-gradient(135deg, #1e40af 0%, #3730a3 50%, #dc2626 100%); color: white; padding: 30px; border-radius: 15px; margin-bottom: 30px; text-align: center;\">\n            <a href=\"https:\/\/upwellsurf.com\/wp-content\/uploads\/2026\/03\/MacPhee-Ford-Bronco-Lease-Promo-Upwell-Surf-2-1.pdf\" target=\"_blank\">\n                <iframe loading=\"lazy\" src=\"https:\/\/upwellsurf.com\/wp-content\/uploads\/2026\/03\/MacPhee-Ford-Bronco-Lease-Promo-Upwell-Surf-2-1.pdf\"\n                        width=\"100%\" height=\"400px\"\n                        style=\"border-radius:12px; margin-bottom:20px; border:none;\"><\/iframe>\n            <\/a>\n            <div style=\"font-size: 50px; margin-bottom: 10px;\">\ud83d\ude99<\/div>\n            <h2 style=\"font-size: 28px; font-weight: bold; margin-bottom: 10px;\">2026 FORD BRONCO<\/h2>\n            <h3 style=\"font-size: 18px; margin-bottom: 15px;\">MACPHEE FORD \u2014 HALIFAX, NOVA SCOTIA<\/h3>\n            <div style=\"font-size: 16px; margin-bottom: 20px;\">\ud83d\udd25 What is your car worth?<\/div>\n            <div style=\"display: flex; gap: 15px; justify-content: center; flex-wrap: wrap;\">\n                <a href=\"tel:+19024347700\" style=\"background: #10b981; color: white; padding: 12px 24px; border-radius: 8px; font-weight: bold; text-decoration: none;\">\ud83d\udcde Call Now<\/a>\n                <a href=\"https:\/\/upwellsurf.com\/wp-content\/uploads\/2026\/03\/MacPhee-Ford-Bronco-Lease-Promo-Upwell-Surf-2-1.pdf\" target=\"_blank\" style=\"background: #f59e0b; color: white; padding: 12px 24px; border-radius: 8px; font-weight: bold; text-decoration: none;\">\ud83d\udcc4 View Offer<\/a>\n                <a href=\"https:\/\/www.macpheeford.com\" target=\"_blank\" style=\"background: #3b82f6; color: white; padding: 12px 24px; border-radius: 8px; font-weight: bold; text-decoration: none;\">\ud83c\udf10 Visit Website<\/a>\n            <\/div>\n        <\/div>\n\n            <aside class=\"upwell-did-podcast\" id=\"upwellDidPodcastPromoStatic\" data-upwell-did-podcast=\"1\">\n        <p class=\"upwell-did-kicker\">Podcast video<\/p>\n        <h3>\ud83c\udf99\ufe0f Didijustbuymygrandmothershouse<\/h3>\n        <p class=\"upwell-did-price\"><strong>7-day free trial<\/strong> \u00b7 then <strong>$9.99\/month<\/strong><\/p>\n        <div class=\"upwell-did-media\">\n                            <iframe title=\"Didijustbuymygrandmothershouse podcast\" src=\"https:\/\/open.spotify.com\/embed\/show\/0U1Pn78J9vV3WGIGyLTX8H?utm_source=generator&#038;theme=0\" allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"><\/iframe>\n                    <\/div>\n        <div class=\"upwell-did-actions\">\n            <a class=\"upwell-did-subscribe\" href=\"https:\/\/www.didijustbuymygrandmothershouse.store\" target=\"_blank\" rel=\"noopener noreferrer\">Subscribe<\/a>\n            <a class=\"upwell-did-listen\" href=\"https:\/\/open.spotify.com\/show\/0U1Pn78J9vV3WGIGyLTX8H\" target=\"_blank\" rel=\"noopener noreferrer\">Listen on Spotify<\/a>\n        <\/div>\n    <\/aside>\n    \n        <!-- SPOT SELECTOR -->\n        <div style=\"margin-bottom: 30px;\">\n            <h3 style=\"color: #1e40af; margin-bottom: 15px; text-align: center;\">\ud83c\udf0a 500+ Global Surf Spots Forecast<\/h3>\n            <select id=\"surfSpot\" class=\"upwell-select\">\n                <option value=\"\">Choose from 500+ surf spots...<\/option>\n\n                <optgroup label=\"\ud83c\udf41 Nova Scotia (50+ spots)\">\n                    <option value=\"Lawrencetown Beach\">Lawrencetown Beach<\/option>\n                    <option value=\"Martinique Beach\">Martinique Beach<\/option>\n                    <option value=\"Cow Bay\">Cow Bay<\/option>\n                    <option value=\"Clarke's Beach\">Clarke's Beach<\/option>\n                    <option value=\"Lawrencetown River\">Lawrencetown River<\/option>\n                    <option value=\"Shubie Beach\">Shubie Beach<\/option>\n                    <option value=\"Moose\">Moose<\/option>\n                    <option value=\"Halifax Harbour\">Halifax Harbour<\/option>\n                    <option value=\"Seaforth\">Seaforth<\/option>\n                    <option value=\"Rainbow Heaven\">Rainbow Heaven<\/option>\n                    <option value=\"Osbourne Head\">Osbourne Head<\/option>\n\t\t\t\t\t<option value=\"Sheet Harbour\">Sheet Harbour<\/option>\n                    <option value=\"Mushaboom\">Mushaboom<\/option>\n                    <option value=\"Spry Bay\">Spry Bay<\/option>\n                    <option value=\"Clam Bay\">Clam Bay<\/option>\n                    <option value=\"Sober Island\">Sober Island<\/option>\n                    <option value=\"Beaver Harbour\">Beaver Harbour<\/option>\n                    <option value=\"Liscomb\">Liscomb<\/option>\n                    <option value=\"Wine Harbour\">Wine Harbour<\/option>\n                    <option value=\"Point Bickerton\">Point Bickerton<\/option>\n                    <option value=\"New Harbour\">New Harbour<\/option>\n                    <option value=\"Tayler's Head\">Tayler's Head<\/option>\n                    <option value=\"Point Bickerton\">Point Bickerton<\/option>\n                    <option value=\"White Point\">White Point<\/option>\n                    <option value=\"Broad Cove\">Broad Cove<\/option>\n                    <option value=\"Hurtles\">Hurtles<\/option>\n                    <option value=\"Cherry Hill\">Cherry Hill<\/option>\n                    <option value=\"Carters Beach\">Carters Beach<\/option>\n                    <option value=\"Lockport\">Lockport<\/option>\n                    <option value=\"Yarmouth Beach\">Yarmouth Beach<\/option>\n                    <option value=\"Inverness Beach\">Inverness Beach<\/option>\n                    <option value=\"Crystal Crescent Beach\">Crystal Crescent Beach<\/option>\n                    <option value=\"Peggy's Cove\">Peggy's Cove<\/option>\n                    <option value=\"Truro Tidal Bore\">Truro Tidal Bore<\/option>\n                    <option value=\"West Lawrencetown\">West Lawrencetown<\/option>\n                    <option value=\"Conrad's Beach\">Conrad's Beach<\/option>\n                    <option value=\"The Reef\">The Reef<\/option>\n                    <option value=\"Chester\">Chester<\/option>\n                    <option value=\"Western Head\">Western Head<\/option>\n                    <option value=\"Eagle Head\">Eagle Head<\/option>\n                    <option value=\"Bras d'Or Lake\">Bras d'Or Lake<\/option>\n                    <option value=\"Kejimkujik Lake\">Kejimkujik Lake<\/option>\n\t\t\t\t\t<!-- Lake Spots -->\n                        <option value=\"Bras d'Or Lake\">Bras d'Or Lake<\/option>\n                        <option value=\"Lake Banook\">Lake Banook<\/option>\n                        <option value=\"Lake Micmac\">Lake Micmac<\/option>\n                        <option value=\"Settle Lake\">Settle Lake<\/option>\n                        <option value=\"Oathill Lake\">Oathill Lake<\/option>\n                        <option value=\"First Lake\">First Lake<\/option>\n                        <option value=\"Second Lake\">Second Lake<\/option>\n                        <option value=\"Third Lake\">Third Lake<\/option>\n                        <option value=\"Chocolate Lake\">Chocolate Lake<\/option>\n                        <option value=\"Williams Lake\">Williams Lake<\/option>\n                        <option value=\"Lake Ainslie\">Lake Ainslie<\/option>\n                        <option value=\"Grand Lake\">Grand Lake<\/option>\n                        <option value=\"Kinsac Lake\">Kinsac Lake<\/option>\n                        <option value=\"Miller Lake\">Miller Lake<\/option>\n                        <option value=\"Fletcher Lake\">Fletcher Lake<\/option>\n                        <option value=\"Thomas Lake\">Thomas Lake<\/option>\n                        <option value=\"McCabe Lake\">McCabe Lake<\/option>\n                        <option value=\"Lewis Lake\">Lewis Lake<\/option>\n                        <option value=\"Little Springfield Lake\">Little Springfield Lake<\/option>\n                        <option value=\"Springfield Lake\">Springfield Lake<\/option>\n                        <option value=\"Sherbrooke Lake\">Sherbrooke Lake<\/option>\n                        <option value=\"Kejimkujik Lake\">Kejimkujik Lake<\/option>\n\t\t\t\t\t <\/optgroup>\n\t\t\t\t\n\t\t\t\t<!-- Nova Scotia -->\n<option value=\"Cabot Links\">Cabot Links<\/option>\n<option value=\"Fox Harb'r Golf Resort\">Fox Harb'r Golf Resort<\/option>\n<option value=\"Highlands Links\">Highlands Links<\/option>\n<option value=\"Riverside Country Club\">Riverside Country Club<\/option>\n<option value=\"Bell Bay Golf Course\">Bell Bay Golf Course<\/option>\n<option value=\"Ashburn Golf Club\">Ashburn Golf Club<\/option>\n<option value=\"Digby Pines Golf Club\">Digby Pines Golf Club<\/option>\n<option value=\"St Margaret Golf Club\">St Margaret Golf Club<\/option>\n<option value=\"St. Ignace Golf Club\">St. Ignace Golf Club<\/option>\n<option value=\"Dundee Golf Course\">Dundee Golf Course<\/option>\n\n<!-- Prince Edward Island -->\n<option value=\"The Links at Crowbush Cove\">The Links at Crowbush Cove<\/option>\n<option value=\"Brudenell River Golf Course\">Brudenell River Golf Course<\/option>\n<option value=\"Dundarave Golf Course\">Dundarave Golf Course<\/option>\n<option value=\"Mill River Golf Course\">Mill River Golf Course<\/option>\n<option value=\"Glasgow Hills Golf Resort\">Glasgow Hills Golf Resort<\/option>\n<option value=\"Green Gables Golf Course\">Green Gables Golf Course<\/option>\n<option value=\"Fox Meadow Golf Course\">Fox Meadow Golf Course<\/option>\n<option value=\"Eagles Glenn at Cavendish\">Eagles Glenn at Cavendish<\/option>\n\n<!-- New Brunswick -->\n<option value=\"Fraser Golf Club\">Fraser Golf Club<\/option>\n<option value=\"Berwick Heights Golf Course\">Berwick Heights Golf Course<\/option>\n<option value=\"Golf Bouctouche\">Golf Bouctouche<\/option>\n<option value=\"Brookfield Golf\">Brookfield Golf<\/option>\n<option value=\"Golf Pokemouche\">Golf Pokemouche<\/option>\n<option value=\"Truro Golf Course\">Truro Golf Course<\/option>\n<option value=\"Antigonish Golf Course\">Antigonish Golf Course<\/option>\n<option value=\"Kingswood Park Golf Course\">Kingswood Park Golf Course<\/option>\n<option value=\"Country Meadows Golf Club\">Country Meadows Golf Club<\/option>\n<option value=\"Royal Oaks Golf Club\">Royal Oaks Golf Club<\/option>\n\n<!-- Example local course -->\n<option value=\"Osbourne Head\">Osbourne Head<\/option>\n\t\t\t\t\n\t\t\t\t  <!-- Great Lakes -->\n                        <option value=\"Lake Superior\">Lake Superior<\/option>\n                        <option value=\"Wisconsin Point\">Wisconsin Point<\/option>\n                        <option value=\"Grand Haven Beach\">Grand Haven Beach<\/option>\n                        <option value=\"Silver Beach\">Silver Beach<\/option>\n                        <option value=\"Wasaga Beach\">Wasaga Beach<\/option>\n                        <option value=\"Sandbanks Provincial Park\">Sandbanks Provincial Park<\/option>\n                        <option value=\"South Haven Beach\">South Haven Beach<\/option>\n                        <option value=\"Port Austin\">Port Austin<\/option>\n                        <option value=\"Sauble Beach\">Sauble Beach<\/option>\n                        <option value=\"Cedar Point\">Cedar Point<\/option>\n                        <option value=\"Sheboygan\">Sheboygan<\/option>\n                        <option value=\"Grand Haven\">Grand Haven<\/option>\n                        <option value=\"Lake Michigan\">Lake Michigan<\/option>\n                        <option value=\"Tawas Bay\">Tawas Bay<\/option>\n                        <option value=\"Pictured Rocks\">Pictured Rocks<\/option>\n                        <option value=\"Point Pelee\">Point Pelee<\/option>\n                        <option value=\"Kewadin Beach\">Kewadin Beach<\/option>\n                        <option value=\"Holland Beach\">Holland Beach<\/option>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t \n                        <!-- Canada West Coast -->\n                        <option value=\"Tofino\">Tofino<\/option>\n                        <option value=\"Jordan River\">Jordan River<\/option>\n                        <option value=\"Bamburgh\">Bamburgh<\/option>\n                        <option value=\"Sombrio Beach\">Sombrio Beach<\/option>\n\n                <optgroup label=\"\ud83c\udf3a Hawaii (30+ spots)\">\n                    <option value=\"Pipeline\">Pipeline, Oahu<\/option>\n                    <option value=\"Waimea Bay\">Waimea Bay, Oahu<\/option>\n                    <option value=\"Sunset Beach\">Sunset Beach, Oahu<\/option>\n                    <option value=\"Honolua Bay\">Honolua Bay, Maui<\/option>\n                    <option value=\"Ho'okipa\">Ho'okipa, Maui<\/option>\n                    <option value=\"Poipu Beach\">Poipu Beach, Kauai<\/option>\n                    <option value=\"Hanalei Bay\">Hanalei Bay, Kauai<\/option>\n                    <option value=\"Ala Moana\">Ala Moana, Oahu<\/option>\n                    <option value=\"Diamond Head\">Diamond Head, Oahu<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udf34 California (80+ spots)\">\n                    <option value=\"Malibu\">Malibu, California<\/option>\n                    <option value=\"Santa Cruz\">Santa Cruz, California<\/option>\n                    <option value=\"Huntington Beach\">Huntington Beach, California<\/option>\n                    <option value=\"Venice Beach\">Venice Beach, California<\/option>\n                    <option value=\"Manhattan Beach\">Manhattan Beach, California<\/option>\n                    <option value=\"Newport Beach\">Newport Beach, California<\/option>\n                    <option value=\"Laguna Beach\">Laguna Beach, California<\/option>\n                    <option value=\"San Clemente\">San Clemente, California<\/option>\n                    <option value=\"Oceanside\">Oceanside, California<\/option>\n                    <option value=\"Pacific Beach\">Pacific Beach, California<\/option>\n                    <option value=\"Carmel\">Carmel, California<\/option>\n\t\t\t\t\t\n\t\t\t\t\t <!-- Oregon -->\n  <optgroup label=\"Oregon\">\n    <option value=\"Cannon Beach\">Cannon Beach, Oregon<\/option>\n    <option value=\"Seaside\">Seaside, Oregon<\/option>\n    <option value=\"Pacific City\">Pacific City, Oregon<\/option>\n    <option value=\"Otter Rock\">Otter Rock, Oregon<\/option>\n    <option value=\"Newport OR\">Newport, Oregon<\/option>\n    <option value=\"Florence OR\">Florence, Oregon<\/option>\n  <\/optgroup>\n\n  <!-- Washington -->\n  <optgroup label=\"Washington\">\n    <option value=\"Westport WA\">Westport, Washington<\/option>\n    <option value=\"La Push\">La Push, Washington<\/option>\n    <option value=\"Neah Bay\">Neah Bay, Washington<\/option>\n    <option value=\"Long Beach WA\">Long Beach, Washington<\/option>\n  <\/optgroup>\n               \n\t\t\t\t<!-- Florida -->\n  <optgroup label=\"Florida\">\n    <option value=\"Cocoa Beach\">Cocoa Beach, Florida<\/option>\n    <option value=\"New Smyrna Beach\">New Smyrna Beach, Florida<\/option>\n    <option value=\"Jacksonville Beach\">Jacksonville Beach, Florida<\/option>\n    <option value=\"Sebastian Inlet\">Sebastian Inlet, Florida<\/option>\n    <option value=\"Ponce Inlet\">Ponce Inlet, Florida<\/option>\n    <option value=\"Daytona Beach\">Daytona Beach, Florida<\/option>\n  <\/optgroup>\n\n  <!-- Georgia -->\n  <optgroup label=\"Georgia\">\n    <option value=\"Tybee Island\">Tybee Island, Georgia<\/option>\n  <\/optgroup>\n\n  <!-- South Carolina -->\n  <optgroup label=\"South Carolina\">\n    <option value=\"Folly Beach\">Folly Beach, South Carolina<\/option>\n    <option value=\"Isle of Palms\">Isle of Palms, South Carolina<\/option>\n    <option value=\"Myrtle Beach\">Myrtle Beach, South Carolina<\/option>\n  <\/optgroup>\n\n  <!-- North Carolina -->\n  <optgroup label=\"North Carolina\">\n    <option value=\"Outer Banks\">Outer Banks, North Carolina<\/option>\n    <option value=\"Wrightsville Beach\">Wrightsville Beach, North Carolina<\/option>\n    <option value=\"Cape Hatteras\">Cape Hatteras, North Carolina<\/option>\n    <option value=\"Nags Head\">Nags Head, North Carolina<\/option>\n  <\/optgroup>\n\n  <!-- Virginia -->\n  <optgroup label=\"Virginia\">\n    <option value=\"Virginia Beach\">Virginia Beach, Virginia<\/option>\n    <option value=\"Sandbridge Beach\">Sandbridge Beach, Virginia<\/option>\n  <\/optgroup>\n\n  <!-- Maryland -->\n  <optgroup label=\"Maryland\">\n    <option value=\"Ocean City\">Ocean City, Maryland<\/option>\n  <\/optgroup>\n\n  <!-- Delaware -->\n  <optgroup label=\"Delaware\">\n    <option value=\"Rehoboth Beach\">Rehoboth Beach, Delaware<\/option>\n    <option value=\"Bethany Beach\">Bethany Beach, Delaware<\/option>\n    <option value=\"Dewey Beach\">Dewey Beach, Delaware<\/option>\n  <\/optgroup>\n\n  <!-- New Jersey -->\n  <optgroup label=\"New Jersey\">\n    <option value=\"Atlantic City\">Atlantic City, New Jersey<\/option>\n    <option value=\"Ocean City NJ\">Ocean City, New Jersey<\/option>\n    <option value=\"Long Beach Island\">Long Beach Island, New Jersey<\/option>\n    <option value=\"Belmar\">Belmar, New Jersey<\/option>\n    <option value=\"Manasquan Inlet\">Manasquan Inlet, New Jersey<\/option>\n  <\/optgroup>\n\n  <!-- New York -->\n  <optgroup label=\"New York\">\n    <option value=\"Rockaway Beach\">Rockaway Beach, New York<\/option>\n    <option value=\"Long Beach NY\">Long Beach, New York<\/option>\n    <option value=\"Montauk\">Montauk, New York<\/option>\n    <option value=\"Ditch Plains\">Ditch Plains, New York<\/option>\n  <\/optgroup>\n\t\t\t\t<optgroup label=\"Nantucket, Massachusetts\">\n  <option value=\"Cisco Beach\">Cisco Beach, Massachusetts<\/option>\n  <option value=\"Nobadeer Beach\">Nobadeer Beach, Massachusetts<\/option>\n<\/optgroup>\n\t\t\t\t<optgroup label=\"Martha's Vineyard, Massachusetts\">\n  <option value=\"South Beach\">South Beach (Katama), Massachusetts<\/option>\n  <option value=\"Aquinnah\">Aquinnah, Massachusetts<\/option>\n<\/optgroup>\n\n  <!-- Connecticut -->\n  <optgroup label=\"Connecticut\">\n    <option value=\"Westport\">Westport, Connecticut<\/option>\n  <\/optgroup>\n\n  <!-- Rhode Island -->\n  <optgroup label=\"Rhode Island\">\n    <option value=\"Narragansett\">Narragansett, Rhode Island<\/option>\n    <option value=\"Point Judith\">Point Judith, Rhode Island<\/option>\n  <\/optgroup>\n\n  <!-- Massachusetts -->\n  <optgroup label=\"Massachusetts\">\n    <option value=\"Cape Cod\">Cape Cod, Massachusetts<\/option>\n    <option value=\"Nauset Beach\">Nauset Beach, Massachusetts<\/option>\n    <option value=\"Martha's Vineyard\">Martha's Vineyard, Massachusetts<\/option>\n  <\/optgroup>\n\n  <!-- New Hampshire -->\n  <optgroup label=\"New Hampshire\">\n    <option value=\"Hampton Beach\">Hampton Beach, New Hampshire<\/option>\n  <\/optgroup>\n\n  <!-- Maine -->\n  <optgroup label=\"Maine\">\n    <option value=\"York Beach\">York Beach, Maine<\/option>\n    <option value=\"Ogunquit\">Ogunquit, Maine<\/option>\n  <\/optgroup>\n\n<!-- Caribbean Surf Spots by Island -->\n<!-- Aruba -->\n<option value=\"Arashi Beach, Aruba\">Arashi Beach, Aruba<\/option>\n<option value=\"Mangel Halto, Aruba\">Mangel Halto, Aruba<\/option>\n\n<!-- Barbados -->\n<option value=\"Soup Bowl, Bathsheba, Barbados\">Soup Bowl, Bathsheba, Barbados<\/option>\n<option value=\"Freights Bay, Barbados\">Freights Bay, Barbados<\/option>\n<option value=\"Miami Beach, Barbados\">Miami Beach, Barbados<\/option>\n\n<!-- Bonaire -->\n<option value=\"Bonaire, Windsurf Spots\">Bonaire, Windsurf Spots<\/option>\n<option value=\"Kralendijk, Bonaire\">Kralendijk, Bonaire<\/option>\n\n<!-- Cuba -->\n<option value=\"Punta de Maisi, Cuba\">Punta de Mais\u00ed, Cuba<\/option>\n<option value=\"Playa Cajio, Cuba\">Playa Caj\u00edo, Cuba<\/option>\n\n<!-- Cura\u00e7ao -->\n<option value=\"Cura\u00e7ao, Windsurf Spots\">Cura\u00e7ao, Windsurf Spots<\/option>\n<option value=\"Jan Thiel, Cura\u00e7ao\">Jan Thiel, Cura\u00e7ao<\/option>\n<option value=\"Blue Bay, Cura\u00e7ao\">Blue Bay, Cura\u00e7ao<\/option>\n\n<!-- Dominica Republic -->\n<option value=\"Encuentro, Cabarete, Dominican Republic\">Encuentro, Cabarete, Dominican Republic<\/option>\n<option value=\"Playa Encuentro, Cabarete, Dominican Republic\">Playa Encuentro, Cabarete, Dominican Republic<\/option>\n<option value=\"Playa Dorada, Puerto Plata, Dominican Republic\">Playa Dorada, Puerto Plata, Dominican Republic<\/option>\n<option value=\"Playa Sos\u00faa, Sos\u00faa, Dominican Republic\">Playa Sos\u00faa, Sos\u00faa, Dominican Republic<\/option>\n\n<!-- Grenada -->\n<option value=\"Grand Anse Beach, Grenada\">Grand Anse Beach, Grenada<\/option>\n\n<!-- Guadeloupe -->\n<option value=\"Anse Bertrand, Basse-Terre, Guadeloupe\">Anse Bertrand, Basse-Terre, Guadeloupe<\/option>\n<option value=\"Le Moule, Basse-Terre, Guadeloupe\">Le Moule, Basse-Terre, Guadeloupe<\/option>\n<option value=\"Port-Louis, Grande-Terre, Guadeloupe\">Port-Louis, Grande-Terre, Guadeloupe<\/option>\n<option value=\"Saint-Fran\u00e7ois, Grande-Terre, Guadeloupe\">Saint-Fran\u00e7ois, Grande-Terre, Guadeloupe<\/option>\n\n<!-- Haiti -->\n<option value=\"Jacmel Beach, Haiti\">Jacmel Beach, Haiti<\/option>\n\n<!-- Jamaica -->\n<option value=\"Boston Bay, Jamaica\">Boston Bay, Jamaica<\/option>\n<option value=\"Llandovery, Jamaica\">Llandovery, Jamaica<\/option>\n<option value=\"Bull Bay, Jamaica\">Bull Bay, Jamaica<\/option>\n<option value=\"Whitehouse, Jamaica\">Whitehouse, Jamaica<\/option>\n\n<!-- Martinique -->\n<option value=\"Le Carbet, Martinique\">Le Carbet, Martinique<\/option>\n<option value=\"Le Diamant, Martinique\">Le Diamant, Martinique<\/option>\n<option value=\"Sainte-Luce, Martinique\">Sainte-Luce, Martinique<\/option>\n\n<!-- Puerto Rico -->\n<option value=\"Rincon, Puerto Rico\">Rinc\u00f3n, Puerto Rico<\/option>\n<option value=\"Maria's, Puerto Rico\">Maria's, Puerto Rico<\/option>\n<option value=\"Domes, Puerto Rico\">Domes, Puerto Rico<\/option>\n<option value=\"Tres Palmas, Puerto Rico\">Tres Palmas, Puerto Rico<\/option>\n<option value=\"Sandy Beach, Puerto Rico\">Sandy Beach, Puerto Rico<\/option>\n<option value=\"Jobos, Isabela, Puerto Rico\">Jobos, Isabela, Puerto Rico<\/option>\n<option value=\"Middles, Isabela, Puerto Rico\">Middles, Isabela, Puerto Rico<\/option>\n<option value=\"Surfer's Beach, Aguadilla, Puerto Rico\">Surfer's Beach, Aguadilla, Puerto Rico<\/option>\n<option value=\"Wilderness, Aguadilla, Puerto Rico\">Wilderness, Aguadilla, Puerto Rico<\/option>\n<option value=\"La Ocho, San Juan, Puerto Rico\">La Ocho, San Juan, Puerto Rico<\/option>\n<option value=\"Pine Grove, San Juan, Puerto Rico\">Pine Grove, San Juan, Puerto Rico<\/option>\n\n<!-- Saint Barthelemy -->\n<option value=\"Saint Barthelemy, Caribbean\">Saint Barthelemy, Caribbean<\/option>\n\n<!-- Saint Kitts & Nevis -->\n<option value=\"Saint Kitts, Caribbean\">Saint Kitts, Caribbean<\/option>\n<option value=\"Nevis, Caribbean\">Nevis, Caribbean<\/option>\n\n<!-- Saint Lucia -->\n<option value=\"Cas-en-Bas, Anse La Raye, Saint Lucia\">Cas-en-Bas, Anse La Raye, Saint Lucia<\/option>\n<option value=\"Sandy Bay, Vieux Fort, Saint Lucia\">Sandy Bay, Vieux Fort, Saint Lucia<\/option>\n\n<!-- Saint Martin \/ Sint Maarten -->\n<option value=\"Grand Case, Saint Martin\">Grand Case, Saint Martin<\/option>\n<option value=\"Orient Bay, Saint Martin\">Orient Bay, Saint Martin<\/option>\n\n<!-- Saint Vincent & the Grenadines -->\n<option value=\"Fancy, Kingstown, Saint Vincent & the Grenadines\">Fancy, Kingstown, Saint Vincent & the Grenadines<\/option>\n<option value=\"Cumberland Bay, Kingstown, Saint Vincent & the Grenadines\">Cumberland Bay, Kingstown, Saint Vincent & the Grenadines<\/option>\n\n<!-- Sint Eustatius -->\n<option value=\"Sint Eustatius, Surf Spots\">Sint Eustatius, Caribbean<\/option>\n\n<!-- Saba -->\n<option value=\"Saba, Caribbean\">Saba, Caribbean<\/option>\n\n<!-- Trinidad & Tobago -->\n<option value=\"Store Bay, Tobago, Trinidad & Tobago\">Store Bay, Tobago, Trinidad & Tobago<\/option>\n<option value=\"Englishman\u2019s Bay, Tobago, Trinidad & Tobago\">Englishman\u2019s Bay, Tobago, Trinidad & Tobago<\/option>\n<option value=\"Las Cuevas, Trinidad, Trinidad & Tobago\">Las Cuevas, Trinidad, Trinidad & Tobago<\/option>\n<option value=\"Maracas Beach, Trinidad, Trinidad & Tobago\">Maracas Beach, Trinidad, Trinidad & Tobago<\/option>\n\n<!-- US Virgin Islands -->\n<option value=\"Saint Croix, US Virgin Islands\">Saint Croix, US Virgin Islands<\/option>\n<option value=\"Saint John, US Virgin Islands\">Saint John, US Virgin Islands<\/option>\n<option value=\"Saint Thomas, US Virgin Islands\">Saint Thomas, US Virgin Islands<\/option>\n\n<!-- British Virgin Islands -->\n<option value=\"Tortola, British Virgin Islands\">Tortola, British Virgin Islands<\/option>\n<option value=\"Virgin Gorda, British Virgin Islands\">Virgin Gorda, British Virgin Islands<\/option>\n\n\t\t\t\t\n\t\t\t\t<\/optgroup>\n\n                <optgroup label=\"\ud83e\udd98 Australia (60+ spots)\">\n                    <option value=\"Bells Beach\">Bells Beach, Victoria<\/option>\n                    <option value=\"Snapper Rocks\">Snapper Rocks, Queensland<\/option>\n                    <option value=\"Gold Coast\">Gold Coast, Queensland<\/option>\n                    <option value=\"Margaret River\">Margaret River, Western Australia<\/option>\n                    <option value=\"Manly Beach\">Manly Beach, New South Wales<\/option>\n                    <option value=\"Bondi Beach\">Bondi Beach, New South Wales<\/option>\n                    <option value=\"Cronulla\">Cronulla, New South Wales<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udff0 Europe (70+ spots)\">\n                    <option value=\"Nazare\">Nazare, Portugal<\/option>\n                    <option value=\"Peniche\">Peniche, Portugal<\/option>\n                    <option value=\"Ericeira\">Ericeira, Portugal<\/option>\n                    <option value=\"Hossegor\">Hossegor, France<\/option>\n                    <option value=\"Biarritz\">Biarritz, France<\/option>\n                    <option value=\"Mundaka\">Mundaka, Spain<\/option>\n                    <option value=\"San Sebastian\">San Sebastian, Spain<\/option>\n                    <option value=\"Lanzarote\">Lanzarote, Canary Islands<\/option>\n                    <option value=\"Fuerteventura\">Fuerteventura, Canary Islands<\/option>\n                    <option value=\"Newquay\">Newquay, England<\/option>\n                <\/optgroup>\n\t\t\t\t\n\n                <!-- Ski Hills - Europe -->\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Europe\">\n                <option value=\"Chamonix\">\u26f7\ufe0f Chamonix<\/option>\n                <option value=\"Val d'Is\u00e8re\">\u26f7\ufe0f Val d'Is\u00e8re<\/option>\n                <option value=\"Tignes\">\u26f7\ufe0f Tignes<\/option>\n                <option value=\"Courchevel\">\u26f7\ufe0f Courchevel<\/option>\n                <option value=\"M\u00e9ribel\">\u26f7\ufe0f M\u00e9ribel<\/option>\n                <option value=\"Les Trois Vall\u00e9es\">\u26f7\ufe0f Les Trois Vall\u00e9es<\/option>\n                <option value=\"La Plagne\">\u26f7\ufe0f La Plagne<\/option>\n                <option value=\"Les Arcs\">\u26f7\ufe0f Les Arcs<\/option>\n                <option value=\"Alpe d'Huez\">\u26f7\ufe0f Alpe d'Huez<\/option>\n                <option value=\"Val Thorens\">\u26f7\ufe0f Val Thorens<\/option>\n                <option value=\"Les Deux Alpes\">\u26f7\ufe0f Les Deux Alpes<\/option>\n                <option value=\"Avoriaz\">\u26f7\ufe0f Avoriaz<\/option>\n                <option value=\"Zermatt\">\u26f7\ufe0f Zermatt<\/option>\n                <option value=\"Verbier\">\u26f7\ufe0f Verbier<\/option>\n                <option value=\"St. Moritz\">\u26f7\ufe0f St. Moritz<\/option>\n                <option value=\"Davos\">\u26f7\ufe0f Davos<\/option>\n                <option value=\"Grindelwald\">\u26f7\ufe0f Grindelwald<\/option>\n                <option value=\"Crans-Montana\">\u26f7\ufe0f Crans-Montana<\/option>\n                <option value=\"Gstaad\">\u26f7\ufe0f Gstaad<\/option>\n                <option value=\"Saas-Fee\">\u26f7\ufe0f Saas-Fee<\/option>\n                <option value=\"St. Anton\">\u26f7\ufe0f St. Anton<\/option>\n                <option value=\"Innsbruck\">\u26f7\ufe0f Innsbruck<\/option>\n                <option value=\"Kitzb\u00fchel\">\u26f7\ufe0f Kitzb\u00fchel<\/option>\n                <option value=\"Ischgl\">\u26f7\ufe0f Ischgl<\/option>\n                <option value=\"Mayrhofen\">\u26f7\ufe0f Mayrhofen<\/option>\n                <option value=\"S\u00f6lden\">\u26f7\ufe0f S\u00f6lden<\/option>\n                <option value=\"Lech\">\u26f7\ufe0f Lech<\/option>\n                <option value=\"Z\u00fcrs\">\u26f7\ufe0f Z\u00fcrs<\/option>\n                <option value=\"Cortina d'Ampezzo\">\u26f7\ufe0f Cortina d'Ampezzo<\/option>\n                <option value=\"Val Gardena\">\u26f7\ufe0f Val Gardena<\/option>\n                <option value=\"Madonna di Campiglio\">\u26f7\ufe0f Madonna di Campiglio<\/option>\n                <option value=\"Bormio\">\u26f7\ufe0f Bormio<\/option>\n                <option value=\"Livigno\">\u26f7\ufe0f Livigno<\/option>\n                <option value=\"Cervinia\">\u26f7\ufe0f Cervinia<\/option>\n                <option value=\"Courmayeur\">\u26f7\ufe0f Courmayeur<\/option>\n                <option value=\"Sestriere\">\u26f7\ufe0f Sestriere<\/option>\n                <option value=\"Andorra\">\u26f7\ufe0f Andorra<\/option>\n                <option value=\"Grandvalira\">\u26f7\ufe0f Grandvalira<\/option>\n                <option value=\"Sierra Nevada\">\u26f7\ufe0f Sierra Nevada<\/option>\n                <option value=\"Baqueira-Beret\">\u26f7\ufe0f Baqueira-Beret<\/option>\n                <option value=\"Formigal\">\u26f7\ufe0f Formigal<\/option>\n                <option value=\"Flaine\">\u26f7\ufe0f Flaine<\/option>\n                <option value=\"Les Menuires\">\u26f7\ufe0f Les Menuires<\/option>\n                <option value=\"La Rosi\u00e8re\">\u26f7\ufe0f La Rosi\u00e8re<\/option>\n                <option value=\"Serre Chevalier\">\u26f7\ufe0f Serre Chevalier<\/option>\n                <option value=\"Les Gets\">\u26f7\ufe0f Les Gets<\/option>\n                <option value=\"Morzine\">\u26f7\ufe0f Morzine<\/option>\n                <option value=\"Valmorel\">\u26f7\ufe0f Valmorel<\/option>\n                <option value=\"Les Contamines\">\u26f7\ufe0f Les Contamines<\/option>\n                <option value=\"Wengen\">\u26f7\ufe0f Wengen<\/option>\n                <option value=\"M\u00fcrren\">\u26f7\ufe0f M\u00fcrren<\/option>\n                <option value=\"Klosters\">\u26f7\ufe0f Klosters<\/option>\n                <option value=\"Arosa\">\u26f7\ufe0f Arosa<\/option>\n                <option value=\"Lenzerheide\">\u26f7\ufe0f Lenzerheide<\/option>\n                <option value=\"Engelberg\">\u26f7\ufe0f Engelberg<\/option>\n                <option value=\"Obergurgl\">\u26f7\ufe0f Obergurgl<\/option>\n                <option value=\"Hintertux\">\u26f7\ufe0f Hintertux<\/option>\n                <option value=\"Kaprun\">\u26f7\ufe0f Kaprun<\/option>\n                <option value=\"Bad Gastein\">\u26f7\ufe0f Bad Gastein<\/option>\n                <option value=\"Schladming\">\u26f7\ufe0f Schladming<\/option>\n                <option value=\"Saalbach\">\u26f7\ufe0f Saalbach<\/option>\n                <option value=\"Zell am See\">\u26f7\ufe0f Zell am See<\/option>\n                <option value=\"Selva di Val Gardena\">\u26f7\ufe0f Selva di Val Gardena<\/option>\n                <option value=\"Alta Badia\">\u26f7\ufe0f Alta Badia<\/option>\n                <option value=\"Passo Tonale\">\u26f7\ufe0f Passo Tonale<\/option>\n                <option value=\"Arabba\">\u26f7\ufe0f Arabba<\/option>\n                <option value=\"Garmisch-Partenkirchen\">\u26f7\ufe0f Garmisch-Partenkirchen<\/option>\n                <option value=\"Oberstdorf\">\u26f7\ufe0f Oberstdorf<\/option>\n                <option value=\"Zugspitze\">\u26f7\ufe0f Zugspitze<\/option>\n                <option value=\"Hemsedal\">\u26f7\ufe0f Hemsedal<\/option>\n                <option value=\"Trysil\">\u26f7\ufe0f Trysil<\/option>\n                <option value=\"Geilo\">\u26f7\ufe0f Geilo<\/option>\n                <option value=\"\u00c5re\">\u26f7\ufe0f \u00c5re<\/option>\n                <option value=\"S\u00e4len\">\u26f7\ufe0f S\u00e4len<\/option>\n                <option value=\"Vemdalen\">\u26f7\ufe0f Vemdalen<\/option>\n                <option value=\"Levi\">\u26f7\ufe0f Levi<\/option>\n                <option value=\"Ruka\">\u26f7\ufe0f Ruka<\/option>\n                <option value=\"Bansko\">\u26f7\ufe0f Bansko<\/option>\n                <option value=\"Borovets\">\u26f7\ufe0f Borovets<\/option>\n                <option value=\"Poiana Bra\u0219ov\">\u26f7\ufe0f Poiana Bra\u0219ov<\/option>\n                <option value=\"Kranjska Gora\">\u26f7\ufe0f Kranjska Gora<\/option>\n                <option value=\"\u0160pindler\u016fv Ml\u00fdn\">\u26f7\ufe0f \u0160pindler\u016fv Ml\u00fdn<\/option>\n                <\/optgroup>\n\n\n                <!-- Ski Hills by Canada province -->\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Alberta, Canada\">\n                <option value=\"Banff Sunshine\">\u26f7\ufe0f Banff Sunshine<\/option>\n                <option value=\"Castle Mountain\">\u26f7\ufe0f Castle Mountain<\/option>\n                <option value=\"Lake Louise\">\u26f7\ufe0f Lake Louise<\/option>\n                <option value=\"Marmot Basin\">\u26f7\ufe0f Marmot Basin<\/option>\n                <option value=\"Mount Norquay\">\u26f7\ufe0f Mount Norquay<\/option>\n                <option value=\"Nakiska\">\u26f7\ufe0f Nakiska<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 British Columbia, Canada\">\n                <option value=\"Apex Mountain\">\u26f7\ufe0f Apex Mountain<\/option>\n                <option value=\"Big White\">\u26f7\ufe0f Big White<\/option>\n                <option value=\"Cypress Mountain\">\u26f7\ufe0f Cypress Mountain<\/option>\n                <option value=\"Fernie Alpine Resort\">\u26f7\ufe0f Fernie Alpine Resort<\/option>\n                <option value=\"Grouse Mountain\">\u26f7\ufe0f Grouse Mountain<\/option>\n                <option value=\"Kicking Horse\">\u26f7\ufe0f Kicking Horse<\/option>\n                <option value=\"Mount Cain\">\u26f7\ufe0f Mount Cain<\/option>\n                <option value=\"Mount Seymour\">\u26f7\ufe0f Mount Seymour<\/option>\n                <option value=\"Mount Washington\">\u26f7\ufe0f Mount Washington<\/option>\n                <option value=\"Panorama\">\u26f7\ufe0f Panorama<\/option>\n                <option value=\"Red Mountain\">\u26f7\ufe0f Red Mountain<\/option>\n                <option value=\"Revelstoke\">\u26f7\ufe0f Revelstoke<\/option>\n                <option value=\"Silver Star\">\u26f7\ufe0f Silver Star<\/option>\n                <option value=\"Sun Peaks\">\u26f7\ufe0f Sun Peaks<\/option>\n                <option value=\"Whistler Blackcomb\">\u26f7\ufe0f Whistler Blackcomb<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Manitoba, Canada\">\n                <option value=\"Asessippi\">\u26f7\ufe0f Asessippi<\/option>\n                <option value=\"Mystery Mountain\">\u26f7\ufe0f Mystery Mountain<\/option>\n                <option value=\"Springhill Winter Park\">\u26f7\ufe0f Springhill Winter Park<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 New Brunswick, Canada\">\n                <option value=\"Crabbe Mountain\">\u26f7\ufe0f Crabbe Mountain<\/option>\n                <option value=\"Mont Farlagne\">\u26f7\ufe0f Mont Farlagne<\/option>\n                <option value=\"Sugarloaf Provincial Park\">\u26f7\ufe0f Sugarloaf Provincial Park<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Newfoundland and Labrador, Canada\">\n                <option value=\"Marble Mountain\">\u26f7\ufe0f Marble Mountain<\/option>\n                <option value=\"White Hills\">\u26f7\ufe0f White Hills<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Nova Scotia, Canada\">\n                <option value=\"Ski Ben Eoin\">\u26f7\ufe0f Ski Ben Eoin<\/option>\n                <option value=\"Ski Cape Smokey\">\u26f7\ufe0f Ski Cape Smokey<\/option>\n                <option value=\"Ski Martock\">\u26f7\ufe0f Ski Martock<\/option>\n                <option value=\"Ski Wentworth\">\u26f7\ufe0f Ski Wentworth<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Ontario, Canada\">\n                <option value=\"Blue Mountain\">\u26f7\ufe0f Blue Mountain<\/option>\n                <option value=\"Calabogie Peaks\">\u26f7\ufe0f Calabogie Peaks<\/option>\n                <option value=\"Horseshoe Resort\">\u26f7\ufe0f Horseshoe Resort<\/option>\n                <option value=\"Mount St. Louis Moonstone\">\u26f7\ufe0f Mount St. Louis Moonstone<\/option>\n                <option value=\"Searchmont\">\u26f7\ufe0f Searchmont<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Prince Edward Island, Canada\">\n                <option value=\"Brookvale Nordic\">\u26f7\ufe0f Brookvale Nordic<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Quebec, Canada\">\n                <option value=\"Le Massif\">\u26f7\ufe0f Le Massif<\/option>\n                <option value=\"Mont Orford\">\u26f7\ufe0f Mont Orford<\/option>\n                <option value=\"Mont Tremblant\">\u26f7\ufe0f Mont Tremblant<\/option>\n                <option value=\"Mont-Sainte-Anne\">\u26f7\ufe0f Mont-Sainte-Anne<\/option>\n                <option value=\"Mount Sutton\">\u26f7\ufe0f Mount Sutton<\/option>\n                <option value=\"Owl's Head\">\u26f7\ufe0f Owl's Head<\/option>\n                <option value=\"Stoneham\">\u26f7\ufe0f Stoneham<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Saskatchewan, Canada\">\n                <option value=\"Duck Mountain\">\u26f7\ufe0f Duck Mountain<\/option>\n                <option value=\"Mission Ridge\">\u26f7\ufe0f Mission Ridge<\/option>\n                <option value=\"Table Mountain\">\u26f7\ufe0f Table Mountain<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Yukon, Canada\">\n                <option value=\"Mount Sima\">\u26f7\ufe0f Mount Sima<\/option>\n                <\/optgroup>\n                <!-- Ski Hills by USA state -->\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Alaska, USA\">\n                <option value=\"Alyeska\">\u26f7\ufe0f Alyeska<\/option>\n                <option value=\"Eaglecrest\">\u26f7\ufe0f Eaglecrest<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Arizona, USA\">\n                <option value=\"Arizona Snowbowl\">\u26f7\ufe0f Arizona Snowbowl<\/option>\n                <option value=\"Sunrise Park\">\u26f7\ufe0f Sunrise Park<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 California, USA\">\n                <option value=\"Alpine Meadows\">\u26f7\ufe0f Alpine Meadows<\/option>\n                <option value=\"Heavenly\">\u26f7\ufe0f Heavenly<\/option>\n                <option value=\"Kirkwood\">\u26f7\ufe0f Kirkwood<\/option>\n                <option value=\"Mammoth Mountain\">\u26f7\ufe0f Mammoth Mountain<\/option>\n                <option value=\"Northstar\">\u26f7\ufe0f Northstar<\/option>\n                <option value=\"Squaw Valley\">\u26f7\ufe0f Squaw Valley<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Colorado, USA\">\n                <option value=\"Arapahoe Basin\">\u26f7\ufe0f Arapahoe Basin<\/option>\n                <option value=\"Aspen Snowmass\">\u26f7\ufe0f Aspen Snowmass<\/option>\n                <option value=\"Beaver Creek\">\u26f7\ufe0f Beaver Creek<\/option>\n                <option value=\"Breckenridge\">\u26f7\ufe0f Breckenridge<\/option>\n                <option value=\"Copper Mountain\">\u26f7\ufe0f Copper Mountain<\/option>\n                <option value=\"Crested Butte\">\u26f7\ufe0f Crested Butte<\/option>\n                <option value=\"Keystone\">\u26f7\ufe0f Keystone<\/option>\n                <option value=\"Steamboat\">\u26f7\ufe0f Steamboat<\/option>\n                <option value=\"Telluride\">\u26f7\ufe0f Telluride<\/option>\n                <option value=\"Vail\">\u26f7\ufe0f Vail<\/option>\n                <option value=\"Winter Park\">\u26f7\ufe0f Winter Park<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Idaho, USA\">\n                <option value=\"Bogus Basin\">\u26f7\ufe0f Bogus Basin<\/option>\n                <option value=\"Schweitzer\">\u26f7\ufe0f Schweitzer<\/option>\n                <option value=\"Sun Valley\">\u26f7\ufe0f Sun Valley<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Maine, USA\">\n                <option value=\"Sugarloaf\">\u26f7\ufe0f Sugarloaf<\/option>\n                <option value=\"Sunday River\">\u26f7\ufe0f Sunday River<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Michigan, USA\">\n                <option value=\"Boyne Highlands\">\u26f7\ufe0f Boyne Highlands<\/option>\n                <option value=\"Boyne Mountain\">\u26f7\ufe0f Boyne Mountain<\/option>\n                <option value=\"Crystal Mountain MI\">\u26f7\ufe0f Crystal Mountain MI<\/option>\n                <option value=\"Mount Brighton\">\u26f7\ufe0f Mount Brighton<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Minnesota, USA\">\n                <option value=\"Giants Ridge\">\u26f7\ufe0f Giants Ridge<\/option>\n                <option value=\"Lutsen Mountains\">\u26f7\ufe0f Lutsen Mountains<\/option>\n                <option value=\"Spirit Mountain\">\u26f7\ufe0f Spirit Mountain<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Montana, USA\">\n                <option value=\"Big Sky\">\u26f7\ufe0f Big Sky<\/option>\n                <option value=\"Bridger Bowl\">\u26f7\ufe0f Bridger Bowl<\/option>\n                <option value=\"Whitefish Mountain\">\u26f7\ufe0f Whitefish Mountain<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Nevada, USA\">\n                <option value=\"Diamond Peak\">\u26f7\ufe0f Diamond Peak<\/option>\n                <option value=\"Mount Rose\">\u26f7\ufe0f Mount Rose<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 New Hampshire, USA\">\n                <option value=\"Attitash\">\u26f7\ufe0f Attitash<\/option>\n                <option value=\"Bretton Woods\">\u26f7\ufe0f Bretton Woods<\/option>\n                <option value=\"Cannon Mountain\">\u26f7\ufe0f Cannon Mountain<\/option>\n                <option value=\"Loon Mountain\">\u26f7\ufe0f Loon Mountain<\/option>\n                <option value=\"Waterville Valley\">\u26f7\ufe0f Waterville Valley<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 New Mexico, USA\">\n                <option value=\"Taos Ski Valley\">\u26f7\ufe0f Taos Ski Valley<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 New York, USA\">\n                <option value=\"Gore Mountain\">\u26f7\ufe0f Gore Mountain<\/option>\n                <option value=\"Greek Peak\">\u26f7\ufe0f Greek Peak<\/option>\n                <option value=\"Hunter Mountain\">\u26f7\ufe0f Hunter Mountain<\/option>\n                <option value=\"Whiteface Mountain\">\u26f7\ufe0f Whiteface Mountain<\/option>\n                <option value=\"Windham Mountain\">\u26f7\ufe0f Windham Mountain<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 North Carolina, USA\">\n                <option value=\"Beech Mountain\">\u26f7\ufe0f Beech Mountain<\/option>\n                <option value=\"Cataloochee\">\u26f7\ufe0f Cataloochee<\/option>\n                <option value=\"Sugar Mountain\">\u26f7\ufe0f Sugar Mountain<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Oregon, USA\">\n                <option value=\"Mount Bachelor\">\u26f7\ufe0f Mount Bachelor<\/option>\n                <option value=\"Mount Hood Meadows\">\u26f7\ufe0f Mount Hood Meadows<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Pennsylvania, USA\">\n                <option value=\"Blue Mountain PA\">\u26f7\ufe0f Blue Mountain PA<\/option>\n                <option value=\"Camelback\">\u26f7\ufe0f Camelback<\/option>\n                <option value=\"Hidden Valley PA\">\u26f7\ufe0f Hidden Valley PA<\/option>\n                <option value=\"Seven Springs\">\u26f7\ufe0f Seven Springs<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Utah, USA\">\n                <option value=\"Alta\">\u26f7\ufe0f Alta<\/option>\n                <option value=\"Beaver Mountain\">\u26f7\ufe0f Beaver Mountain<\/option>\n                <option value=\"Brian Head\">\u26f7\ufe0f Brian Head<\/option>\n                <option value=\"Brighton\">\u26f7\ufe0f Brighton<\/option>\n                <option value=\"Cherry Peak\">\u26f7\ufe0f Cherry Peak<\/option>\n                <option value=\"Deer Valley\">\u26f7\ufe0f Deer Valley<\/option>\n                <option value=\"Eagle Point\">\u26f7\ufe0f Eagle Point<\/option>\n                <option value=\"Nordic Valley\">\u26f7\ufe0f Nordic Valley<\/option>\n                <option value=\"Park City\">\u26f7\ufe0f Park City<\/option>\n                <option value=\"Powder Mountain\">\u26f7\ufe0f Powder Mountain<\/option>\n                <option value=\"Snowbasin\">\u26f7\ufe0f Snowbasin<\/option>\n                <option value=\"Snowbird\">\u26f7\ufe0f Snowbird<\/option>\n                <option value=\"Solitude\">\u26f7\ufe0f Solitude<\/option>\n                <option value=\"Sundance\">\u26f7\ufe0f Sundance<\/option>\n                <option value=\"Woodward Park City\">\u26f7\ufe0f Woodward Park City<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Vermont, USA\">\n                <option value=\"Killington\">\u26f7\ufe0f Killington<\/option>\n                <option value=\"Mount Snow\">\u26f7\ufe0f Mount Snow<\/option>\n                <option value=\"Okemo\">\u26f7\ufe0f Okemo<\/option>\n                <option value=\"Stowe\">\u26f7\ufe0f Stowe<\/option>\n                <option value=\"Stratton\">\u26f7\ufe0f Stratton<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Washington, USA\">\n                <option value=\"Crystal Mountain\">\u26f7\ufe0f Crystal Mountain<\/option>\n                <option value=\"Mount Baker\">\u26f7\ufe0f Mount Baker<\/option>\n                <option value=\"Snoqualmie Pass\">\u26f7\ufe0f Snoqualmie Pass<\/option>\n                <option value=\"Stevens Pass\">\u26f7\ufe0f Stevens Pass<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 West Virginia, USA\">\n                <option value=\"Snowshoe\">\u26f7\ufe0f Snowshoe<\/option>\n                <option value=\"Timberline WV\">\u26f7\ufe0f Timberline WV<\/option>\n                <option value=\"Winterplace\">\u26f7\ufe0f Winterplace<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Wisconsin, USA\">\n                <option value=\"Granite Peak\">\u26f7\ufe0f Granite Peak<\/option>\n                <option value=\"Tyrol Basin\">\u26f7\ufe0f Tyrol Basin<\/option>\n                <option value=\"Wilmot Mountain\">\u26f7\ufe0f Wilmot Mountain<\/option>\n                <\/optgroup>\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 Wyoming, USA\">\n                <option value=\"Grand Targhee\">\u26f7\ufe0f Grand Targhee<\/option>\n                <option value=\"Jackson Hole\">\u26f7\ufe0f Jackson Hole<\/option>\n                <option value=\"Snow King\">\u26f7\ufe0f Snow King<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 South America\">\n                <option value=\"Portillo\">\u26f7\ufe0f Portillo<\/option>\n                <option value=\"Valle Nevado\">\u26f7\ufe0f Valle Nevado<\/option>\n                <option value=\"La Parva\">\u26f7\ufe0f La Parva<\/option>\n                <option value=\"El Colorado\">\u26f7\ufe0f El Colorado<\/option>\n                <option value=\"Farellones\">\u26f7\ufe0f Farellones<\/option>\n                <option value=\"Corralco\">\u26f7\ufe0f Corralco<\/option>\n                <option value=\"Antillanca\">\u26f7\ufe0f Antillanca<\/option>\n                <option value=\"Volc\u00e1n Villarrica\">\u26f7\ufe0f Volc\u00e1n Villarrica<\/option>\n                <option value=\"Nevados de Chill\u00e1n\">\u26f7\ufe0f Nevados de Chill\u00e1n<\/option>\n                <option value=\"Las Le\u00f1as\">\u26f7\ufe0f Las Le\u00f1as<\/option>\n                <option value=\"Cerro Catedral\">\u26f7\ufe0f Cerro Catedral<\/option>\n                <option value=\"Chapelco\">\u26f7\ufe0f Chapelco<\/option>\n                <option value=\"Cerro Bayo\">\u26f7\ufe0f Cerro Bayo<\/option>\n                <option value=\"Cerro Castor\">\u26f7\ufe0f Cerro Castor<\/option>\n                <option value=\"Caviahue\">\u26f7\ufe0f Caviahue<\/option>\n                <option value=\"Perito Moreno\">\u26f7\ufe0f Perito Moreno<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\u26f7\ufe0f Ski Hills \u2014 World\">\n                <option value=\"Niseko\">\u26f7\ufe0f Niseko<\/option>\n                <option value=\"Furano\">\u26f7\ufe0f Furano<\/option>\n                <option value=\"Rusutsu\">\u26f7\ufe0f Rusutsu<\/option>\n                <option value=\"Kiroro\">\u26f7\ufe0f Kiroro<\/option>\n                <option value=\"Hakuba\">\u26f7\ufe0f Hakuba<\/option>\n                <option value=\"Shiga Kogen\">\u26f7\ufe0f Shiga Kogen<\/option>\n                <option value=\"Nozawa Onsen\">\u26f7\ufe0f Nozawa Onsen<\/option>\n                <option value=\"Zao Onsen\">\u26f7\ufe0f Zao Onsen<\/option>\n                <option value=\"Appi Kogen\">\u26f7\ufe0f Appi Kogen<\/option>\n                <option value=\"Myoko Kogen\">\u26f7\ufe0f Myoko Kogen<\/option>\n                <option value=\"Madarao\">\u26f7\ufe0f Madarao<\/option>\n                <option value=\"Perisher\">\u26f7\ufe0f Perisher<\/option>\n                <option value=\"Thredbo\">\u26f7\ufe0f Thredbo<\/option>\n                <option value=\"Mount Buller\">\u26f7\ufe0f Mount Buller<\/option>\n                <option value=\"Falls Creek\">\u26f7\ufe0f Falls Creek<\/option>\n                <option value=\"Mount Hotham\">\u26f7\ufe0f Mount Hotham<\/option>\n                <option value=\"Charlotte Pass\">\u26f7\ufe0f Charlotte Pass<\/option>\n                <option value=\"Coronet Peak\">\u26f7\ufe0f Coronet Peak<\/option>\n                <option value=\"The Remarkables\">\u26f7\ufe0f The Remarkables<\/option>\n                <option value=\"Cardrona\">\u26f7\ufe0f Cardrona<\/option>\n                <option value=\"Treble Cone\">\u26f7\ufe0f Treble Cone<\/option>\n                <option value=\"Mount Hutt\">\u26f7\ufe0f Mount Hutt<\/option>\n                <option value=\"Whakapapa\">\u26f7\ufe0f Whakapapa<\/option>\n                <option value=\"Turoa\">\u26f7\ufe0f Turoa<\/option>\n                <option value=\"Roundhill\">\u26f7\ufe0f Roundhill<\/option>\n                <option value=\"Yongpyong\">\u26f7\ufe0f Yongpyong<\/option>\n                <option value=\"High1\">\u26f7\ufe0f High1<\/option>\n                <option value=\"Phoenix Park\">\u26f7\ufe0f Phoenix Park<\/option>\n                <option value=\"Yabuli\">\u26f7\ufe0f Yabuli<\/option>\n                <option value=\"Thaiwoo\">\u26f7\ufe0f Thaiwoo<\/option>\n                <option value=\"Gulmarg\">\u26f7\ufe0f Gulmarg<\/option>\n                <option value=\"Mzaar Kfardebian\">\u26f7\ufe0f Mzaar Kfardebian<\/option>\n                <option value=\"Ouka\u00efmeden\">\u26f7\ufe0f Ouka\u00efmeden<\/option>\n                <option value=\"Afriski\">\u26f7\ufe0f Afriski<\/option>\n                <\/optgroup>\n\n\t\t\t\t<!-- Greece Islands -->\n                        <option value=\"Crete - Falassarna\">Crete - Falassarna<\/option>\n                        <option value=\"Crete - Elafonisi\">Crete - Elafonisi<\/option>\n                        <option value=\"Crete - Preveli\">Crete - Preveli<\/option>\n                        <option value=\"Crete - Matala\">Crete - Matala<\/option>\n                        <option value=\"Crete - Agia Galini\">Crete - Agia Galini<\/option>\n                        <option value=\"Mykonos - Paradise Beach\">Mykonos - Paradise Beach<\/option>\n                        <option value=\"Mykonos - Super Paradise\">Mykonos - Super Paradise<\/option>\n                        <option value=\"Mykonos - Ornos Beach\">Mykonos - Ornos Beach<\/option>\n                        <option value=\"Santorini - Perissa\">Santorini - Perissa<\/option>\n                        <option value=\"Santorini - Kamari\">Santorini - Kamari<\/option>\n                        <option value=\"Santorini - Red Beach\">Santorini - Red Beach<\/option>\n                        <option value=\"Rhodes - Prasonisi\">Rhodes - Prasonisi<\/option>\n                        <option value=\"Rhodes - Ialysos\">Rhodes - Ialysos<\/option>\n                        <option value=\"Rhodes - Faliraki\">Rhodes - Faliraki<\/option>\n                        <option value=\"Naxos - Plaka Beach\">Naxos - Plaka Beach<\/option>\n                        <option value=\"Naxos - Agios Prokopios\">Naxos - Agios Prokopios<\/option>\n                        <option value=\"Naxos - Mikri Vigla\">Naxos - Mikri Vigla<\/option>\n                        <option value=\"Paros - Golden Beach\">Paros - Golden Beach<\/option>\n                        <option value=\"Paros - Pounda Beach\">Paros - Pounda Beach<\/option>\n                        <option value=\"Paros - Santa Maria\">Paros - Santa Maria<\/option>\n                        <option value=\"Milos - Firiplaka\">Milos - Firiplaka<\/option>\n                        <option value=\"Milos - Tsigrado\">Milos - Tsigrado<\/option>\n                        <option value=\"Milos - Sarakiniko\">Milos - Sarakiniko<\/option>\n                        <option value=\"Zakynthos - Laganas\">Zakynthos - Laganas<\/option>\n                        <option value=\"Zakynthos - Navagio Beach\">Zakynthos - Navagio Beach<\/option>\n                        <option value=\"Zakynthos - Gerakas\">Zakynthos - Gerakas<\/option>\n                        <option value=\"Kefalonia - Myrtos Beach\">Kefalonia - Myrtos Beach<\/option>\n                        <option value=\"Kefalonia - Petani Beach\">Kefalonia - Petani Beach<\/option>\n                        <option value=\"Kefalonia - Antisamos\">Kefalonia - Antisamos<\/option>\n                        <option value=\"Corfu - Paleokastritsa\">Corfu - Paleokastritsa<\/option>\n                        <option value=\"Corfu - Agios Gordios\">Corfu - Agios Gordios<\/option>\n                        <option value=\"Corfu - Sidari\">Corfu - Sidari<\/option>\n                        <option value=\"Lefkada - Porto Katsiki\">Lefkada - Porto Katsiki<\/option>\n                        <option value=\"Lefkada - Egremni\">Lefkada - Egremni<\/option>\n                        <option value=\"Lefkada - Kathisma\">Lefkada - Kathisma<\/option>\n                        <option value=\"Ios - Mylopotas\">Ios - Mylopotas<\/option>\n                        <option value=\"Ios - Manganari\">Ios - Manganari<\/option>\n                        <option value=\"Ios - Gialos\">Ios - Gialos<\/option>\n                        <option value=\"Kos - Kefalos\">Kos - Kefalos<\/option>\n                        <option value=\"Kos - Paradise Beach\">Kos - Paradise Beach<\/option>\n                        <option value=\"Kos - Mastichari\">Kos - Mastichari<\/option>\n                        <option value=\"Skiathos - Koukounaries\">Skiathos - Koukounaries<\/option>\n                        <option value=\"Skiathos - Lalaria\">Skiathos - Lalaria<\/option>\n                        <option value=\"Skiathos - Banana Beach\">Skiathos - Banana Beach<\/option>\n                        <option value=\"Skopelos - Panormos\">Skopelos - Panormos<\/option>\n                        <option value=\"Skopelos - Kastani\">Skopelos - Kastani<\/option>\n                        <option value=\"Alonissos - Agios Dimitrios\">Alonissos - Agios Dimitrios<\/option>\n                        <option value=\"Samos - Potokaki\">Samos - Potokaki<\/option>\n                        <option value=\"Samos - Psili Ammos\">Samos - Psili Ammos<\/option>\n                        <option value=\"Chios - Karfas\">Chios - Karfas<\/option>\n                        <option value=\"Lesbos - Vatera\">Lesbos - Vatera<\/option>\n                        <option value=\"Lesbos - Skala Eressos\">Lesbos - Skala Eressos<\/option>\n                        <option value=\"Thassos - Golden Beach\">Thassos - Golden Beach<\/option>\n                        <option value=\"Thassos - Paradise Beach\">Thassos - Paradise Beach<\/option>\n                        <option value=\"Thassos - Skala Potamias\">Thassos - Skala Potamias<\/option>\n                        <option value=\"Karpathos - Apella\">Karpathos - Apella<\/option>\n                        <option value=\"Karpathos - Diakoftis\">Karpathos - Diakoftis<\/option>\n                        <option value=\"Karpathos - Achata\">Karpathos - Achata<\/option>\n                        <option value=\"Kassos - Ammoua\">Kassos - Ammoua<\/option>\n                        <option value=\"Astypalaia - Livadi\">Astypalaia - Livadi<\/option>\n                        <option value=\"Tinos - Kolimbithra\">Tinos - Kolimbithra<\/option>\n                        <option value=\"Tinos - Agios Sostis\">Tinos - Agios Sostis<\/option>\n                        <option value=\"Andros - Batsi\">Andros - Batsi<\/option>\n                        <option value=\"Andros - Agios Petros\">Andros - Agios Petros<\/option>\n                        <option value=\"Syros - Galissas\">Syros - Galissas<\/option>\n                        <option value=\"Syros - Kini\">Syros - Kini<\/option>\n                        <option value=\"Folegandros - Agali\">Folegandros - Agali<\/option>\n                        <option value=\"Folegandros - Livadaki\">Folegandros - Livadaki<\/option>\n                        <option value=\"Sifnos - Platis Gialos\">Sifnos - Platis Gialos<\/option>\n                        <option value=\"Sifnos - Vathi\">Sifnos - Vathi<\/option>\n                        <option value=\"Serifos - Livadi\">Serifos - Livadi<\/option>\n                        <option value=\"Serifos - Psili Ammos\">Serifos - Psili Ammos<\/option>\n                        <option value=\"Milos - Pollonia\">Milos - Pollonia<\/option>\n                        <option value=\"Kimolos - Prassa\">Kimolos - Prassa<\/option>\n                        <option value=\"Amorgos - Agia Anna\">Amorgos - Agia Anna<\/option>\n                        <option value=\"Amorgos - Aegiali\">Amorgos - Aegiali<\/option>\n                        <option value=\"Patmos - Psili Ammos\">Patmos - Psili Ammos<\/option>\n                        <option value=\"Patmos - Kambos\">Patmos - Kambos<\/option>\n                        <option value=\"Lipsi - Katsadia\">Lipsi - Katsadia<\/option>\n                        <option value=\"Leros - Alinda\">Leros - Alinda<\/option>\n                        <option value=\"Leros - Xirokambos\">Leros - Xirokambos<\/option>\n                        <option value=\"Kalymnos - Myrties\">Kalymnos - Myrties<\/option>\n                        <option value=\"Kalymnos - Masouri\">Kalymnos - Masouri<\/option>\n                        <option value=\"Patmos - Grikos\">Patmos - Grikos<\/option>\n                        <option value=\"Ikaria - Armenistis\">Ikaria - Armenistis<\/option>\n                        <option value=\"Ikaria - Seychelles\">Ikaria - Seychelles<\/option>\n                        <option value=\"Fournoi - Kamari\">Fournoi - Kamari<\/option>\n                        <option value=\"Agathonisi - Agios Georgios\">Agathonisi - Agios Georgios<\/option>\n                        <option value=\"Kastellorizo - Mandraki\">Kastellorizo - Mandraki<\/option>\n                        <option value=\"Symi - Agios Nikolaos\">Symi - Agios Nikolaos<\/option>\n                        <option value=\"Symi - Pedi\">Symi - Pedi<\/option>\n                        <option value=\"Halki - Pontamos\">Halki - Pontamos<\/option>\n                        <option value=\"Tilos - Eristos\">Tilos - Eristos<\/option>\n                        <option value=\"Tilos - Livadia\">Tilos - Livadia<\/option>\n                        <option value=\"Nisyros - Pali\">Nisyros - Pali<\/option>\n                        <option value=\"Nisyros - Mandraki\">Nisyros - Mandraki<\/option>\n                        <option value=\"Karpathos - Finiki\">Karpathos - Finiki<\/option>\n                        <option value=\"Kassos - Emborios\">Kassos - Emborios<\/option>\n                        <option value=\"Kastellorizo - Agios Stefanos\">Kastellorizo - Agios Stefanos<\/option>\n                        \n\n                <optgroup label=\"\ud83c\udf0e Costa Rica (40+ spots)\">\n                    <option value=\"Witches Rock\">Witches Rock, Costa Rica<\/option>\n                    <option value=\"Puerto Viejo\">Puerto Viejo, Costa Rica<\/option>\n                    <option value=\"Tamarindo\">Tamarindo, Costa Rica<\/option>\n                    <option value=\"Nosara\">Nosara, Costa Rica<\/option>\n                    <option value=\"Santa Teresa\">Santa Teresa, Costa Rica<\/option>\n                    <option value=\"Dominical\">Dominical, Costa Rica<\/option>\n                    <option value=\"Pavones\">Pavones, Costa Rica<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udfef Asia (50+ spots)\">\n                    <option value=\"Uluwatu\">Uluwatu, Bali<\/option>\n                    <option value=\"Padang Padang\">Padang Padang, Bali<\/option>\n                    <option value=\"Canggu\">Canggu, Bali<\/option>\n                    <option value=\"Nias\">Nias, Indonesia<\/option>\n                    <option value=\"G-Land\">G-Land, Java<\/option>\n                    <option value=\"Siargao\">Siargao, Philippines<\/option>\n                    <option value=\"Cloud 9\">Cloud 9, Philippines<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udf0e South America (40+ spots)\">\n                    <option value=\"Punta Rocas\">Punta Rocas, Peru<\/option>\n                    <option value=\"Chicama\">Chicama, Peru<\/option>\n                    <option value=\"Pichilemu\">Pichilemu, Chile<\/option>\n                    <option value=\"Arica\">Arica, Chile<\/option>\n                    <option value=\"Punta del Diablo\">Punta del Diablo, Uruguay<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udf0d Africa (30+ spots)\">\n                    <option value=\"Jeffreys Bay\">Jeffreys Bay, South Africa<\/option>\n                    <option value=\"Durban\">Durban, South Africa<\/option>\n                    <option value=\"Skeleton Bay\">Skeleton Bay, Namibia<\/option>\n                    <option value=\"Taghazout\">Taghazout, Morocco<\/option>\n                    <option value=\"Anchor Point\">Anchor Point, Morocco<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udfdd\ufe0f Central America & Caribbean (35+ spots)\">\n                    <option value=\"Puerto Escondido\">Puerto Escondido, Mexico<\/option>\n                    <option value=\"Sayulita\">Sayulita, Mexico<\/option>\n                    <option value=\"Barra de la Cruz\">Barra de la Cruz, Mexico<\/option>\n                    <option value=\"Popoyo\">Popoyo, Nicaragua<\/option>\n                    <option value=\"El Tunco\">El Tunco, El Salvador<\/option>\n                    <option value=\"Soup Bowl\">Soup Bowl, Barbados<\/option>\n                    <option value=\"Rincon\">Rincon, Puerto Rico<\/option>\n                <\/optgroup>\n\n                <optgroup label=\"\ud83c\udfdd\ufe0f Pacific Islands (25+ spots)\">\n                    <option value=\"Teahupo'o\">Teahupo'o, Tahiti<\/option>\n                    <option value=\"Cloudbreak\">Cloudbreak, Fiji<\/option>\n                    <option value=\"Namotu\">Namotu, Fiji<\/option>\n                <\/optgroup>\n            <\/select>\n            <button type=\"button\" id=\"upwellGetForecastBtn\" onclick=\"upwellShowForecast(); return false;\" class=\"upwell-btn-primary\">Get 7-Day Forecast<\/button>\n            <button type=\"button\" id=\"upwellPro24Btn\" onclick=\"upwellOpenStripeProReportPayment(); return false;\" class=\"upwell-btn-pro\" data-upwell-stripe-pro-report=\"1\">&#11088; Pro Report \u2014 Stripe<\/button>\n        <\/div>\n\n        <div id=\"upwellProGate\" class=\"upwell-pro-gate\" style=\"display:none;\">\n            <h3>&#11088; 24-Hour Pro Report<\/h3>\n            <p>Login or create a free account to unlock the hour-by-hour Pro forecast for your spot (waves, wind, swell &amp; conditions).<\/p>\n            <div class=\"upwell-pro-gate-actions\">\n                <button type=\"button\" onclick=\"upwellOpenStripeProReportPayment(); return false;\">7-day trial \u2014 Pay with Stripe<\/button>\n                <button type=\"button\" onclick=\"upwellOpenLogin('pro'); return false;\">Login<\/button>\n                <button type=\"button\" onclick=\"upwellOpenLogin('register'); return false;\">Create Account<\/button>\n            <\/div>\n        <\/div>\n        <div id=\"upwellPro24Mount\"><\/div>\n\n        <!-- FORECAST OUTPUT -->\n        <div id=\"upwell-forecast-output\"><\/div>\n\n        <!-- SURFDONKEY PODCAST AD \u2014 hoodie + t-shirt \u2192 surfdonkey.net -->\n                <aside class=\"upwell-surfdonkey-podcast\" id=\"upwellSurfdonkeyPodcastAd\" data-upwell-surfdonkey=\"1\">\n            <div class=\"upwell-sd-top\">\n                <p class=\"upwell-sd-kicker\">Podcast \u00b7 Fall Merch<\/p>\n                <h3>Surfdonkey Podcast<\/h3>\n                <p class=\"upwell-sd-sub\">Fall hoodie &amp; tee \u2014 tap a photo to shop at surfdonkey.net<\/p>\n            <\/div>\n            <div class=\"upwell-sd-grid\">\n                <a class=\"upwell-sd-card\" href=\"https:\/\/www.surfdonkey.net\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\">\n                    <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/surfdonkey\/fall-hoodie.jpg\" alt=\"Surfdonkey Fall Hoodie\" loading=\"lazy\" width=\"512\" height=\"512\">\n                    <div class=\"upwell-sd-card-meta\">\n                        <strong>Fall Hoodie<\/strong>\n                        <span>Shop now \u2192<\/span>\n                    <\/div>\n                <\/a>\n                <a class=\"upwell-sd-card\" href=\"https:\/\/www.surfdonkey.net\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\">\n                    <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/surfdonkey\/fall-tshirt.jpg\" alt=\"Surfdonkey Fall T-Shirt\" loading=\"lazy\" width=\"512\" height=\"512\">\n                    <div class=\"upwell-sd-card-meta\">\n                        <strong>Fall T-Shirt<\/strong>\n                        <span>Shop now \u2192<\/span>\n                    <\/div>\n                <\/a>\n            <\/div>\n            <div class=\"upwell-sd-actions\">\n                <p class=\"upwell-sd-note\">New drop \u00b7 Limited fall stock<\/p>\n                <a class=\"upwell-sd-shop\" href=\"https:\/\/www.surfdonkey.net\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\">Shop Surfdonkey<\/a>\n            <\/div>\n        <\/aside>\n\n        <!-- LIVE REPORTS -->\n        <div style=\"background: #e8f5e8; padding: 20px; border-radius: 12px; margin-bottom: 30px; border: 2px solid #22c55e;\">\n            <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;\">\n                <h3 style=\"color: #16a34a; margin: 0;\">&#128225; LIVE SURF REPORTS<\/h3>\n                <div style=\"display:flex; gap:8px; align-items:center;\">\n                    <span id=\"upwellUserBadge\" style=\"display:none; font-size:13px; color:#16a34a; font-weight:bold;\"><\/span>\n                    <button id=\"upwellLoginBtn\" onclick=\"upwellOpenLogin()\" style=\"background:#3b82f6; color:white; padding:8px 14px; border:none; border-radius:6px; font-size:13px; cursor:pointer; font-weight:bold;\">&#128100; Login \/ Create Account<\/button>\n                    <button id=\"upwellAddReportBtn\" onclick=\"upwellOpenModal()\" style=\"display:none; background:#16a34a; color:white; padding:8px 14px; border:none; border-radius:6px; font-size:13px; cursor:pointer; font-weight:bold;\">&#128247; Add Report<\/button>\n                    <button id=\"upwellLogoutBtn\" onclick=\"upwellLogout()\" style=\"display:none; background:#6b7280; color:white; padding:8px 12px; border:none; border-radius:6px; font-size:13px; cursor:pointer;\">Sign Out<\/button>\n                <\/div>\n            <\/div>\n            <p id=\"upwellLoginHint\" style=\"font-size:12px; color:#6b7280; margin:0 0 12px 0;\">&#128274; Login or create an account for <strong>24-Hour Pro<\/strong> (hour-by-hour) and to post live reports.<\/p>\n            <div id=\"liveReportsContainer\" style=\"display:flex; flex-direction:column; gap:0;\"><\/div>\n        <\/div>\n\n        <!-- \u2500\u2500 LOGIN MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n        <div id=\"upwellLoginModal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.75); z-index:99999; justify-content:center; align-items:center; padding:20px; box-sizing:border-box;\">\n            <div style=\"background:white; border-radius:16px; padding:32px; width:100%; max-width:400px; position:relative; text-align:center;\">\n                <button onclick=\"upwellCloseLogin()\" style=\"position:absolute; top:12px; right:14px; background:none; border:none; font-size:22px; cursor:pointer; color:#9ca3af;\">&#10005;<\/button>\n\n                <!-- Icon -->\n                <div style=\"width:64px; height:64px; background:#e8f5e8; border-radius:50%; display:flex; align-items:center; justify-content:center; margin:0 auto 16px; font-size:28px;\">&#127940;<\/div>\n                <h3 id=\"upwellLoginTitle\" style=\"margin:0 0 6px 0; color:#111827; font-size:20px;\">Join Upwell Surf<\/h3>\n                <p id=\"upwellLoginSubtitle\" style=\"margin:0 0 24px 0; font-size:14px; color:#6b7280;\">Sign in or create an account for 24-Hour Pro Reports and to post live surf reports.<\/p>\n\n                <!-- Toggle tabs -->\n                <div style=\"display:flex; background:#f3f4f6; border-radius:8px; padding:3px; margin-bottom:20px;\">\n                    <button id=\"upwellTabSignin\" onclick=\"upwellShowTab('signin')\" style=\"flex:1; padding:8px; border:none; border-radius:6px; font-size:14px; cursor:pointer; font-weight:bold; background:white; color:#111827;\">Sign In<\/button>\n                    <button id=\"upwellTabRegister\" onclick=\"upwellShowTab('register')\" style=\"flex:1; padding:8px; border:none; border-radius:6px; font-size:14px; cursor:pointer; font-weight:bold; background:transparent; color:#6b7280;\">Register<\/button>\n                <\/div>\n\n                <!-- Sign In form -->\n                <div id=\"upwellSigninForm\">\n                    <input type=\"email\" id=\"upwellLoginEmail\" placeholder=\"your@email.com\" style=\"width:100%; padding:11px 14px; border:1px solid #d1d5db; border-radius:8px; font-size:15px; margin-bottom:10px; box-sizing:border-box;\">\n                    <input type=\"password\" id=\"upwellLoginPassword\" placeholder=\"Password\" style=\"width:100%; padding:11px 14px; border:1px solid #d1d5db; border-radius:8px; font-size:15px; margin-bottom:6px; box-sizing:border-box;\">\n                    <div style=\"text-align:right; margin-bottom:16px;\">\n                        <a href=\"#\" onclick=\"upwellForgotPassword(); return false;\" style=\"font-size:13px; color:#3b82f6; text-decoration:none;\">Forgot password?<\/a>\n                    <\/div>\n                    <button onclick=\"upwellDoLogin()\" style=\"width:100%; background:#16a34a; color:white; padding:13px; border:none; border-radius:8px; font-size:16px; font-weight:bold; cursor:pointer; margin-bottom:12px;\">&#128275; Sign In<\/button>\n                    <p style=\"font-size:12px; color:#9ca3af; margin:0;\">Don&#8217;t have an account? <a href=\"#\" onclick=\"upwellShowTab('register'); return false;\" style=\"color:#3b82f6;\">Register free<\/a><\/p>\n                <\/div>\n\n                <!-- Register form -->\n                <div id=\"upwellRegisterForm\" style=\"display:none;\">\n                    <input type=\"text\" id=\"upwellRegName\" placeholder=\"Your name\" style=\"width:100%; padding:11px 14px; border:1px solid #d1d5db; border-radius:8px; font-size:15px; margin-bottom:10px; box-sizing:border-box;\">\n                    <input type=\"email\" id=\"upwellRegEmail\" placeholder=\"your@email.com\" style=\"width:100%; padding:11px 14px; border:1px solid #d1d5db; border-radius:8px; font-size:15px; margin-bottom:10px; box-sizing:border-box;\">\n                    <input type=\"password\" id=\"upwellRegPassword\" placeholder=\"Create password (min 6 chars)\" style=\"width:100%; padding:11px 14px; border:1px solid #d1d5db; border-radius:8px; font-size:15px; margin-bottom:16px; box-sizing:border-box;\">\n                    <button onclick=\"upwellDoRegister()\" style=\"width:100%; background:#3b82f6; color:white; padding:13px; border:none; border-radius:8px; font-size:16px; font-weight:bold; cursor:pointer; margin-bottom:12px;\">&#128640; Create Account<\/button>\n                    <p style=\"font-size:12px; color:#9ca3af; margin:0;\">Already have an account? <a href=\"#\" onclick=\"upwellShowTab('signin'); return false;\" style=\"color:#3b82f6;\">Sign in<\/a><\/p>\n                <\/div>\n\n                <div id=\"upwellLoginError\" style=\"display:none; margin-top:12px; padding:10px; background:#fef2f2; border-radius:8px; color:#dc2626; font-size:13px;\"><\/div>\n            <\/div>\n        <\/div>\n\n        <!-- \u2500\u2500 UPLOAD MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n        <div id=\"upwellModal\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.75); z-index:99999; justify-content:center; align-items:flex-start; overflow-y:auto; padding:40px 16px; box-sizing:border-box;\">\n            <div style=\"background:white; border-radius:14px; padding:28px; width:100%; max-width:480px; position:relative; margin:auto;\">\n                <button onclick=\"upwellCloseModal()\" style=\"position:absolute; top:12px; right:14px; background:none; border:none; font-size:22px; cursor:pointer; color:#9ca3af; line-height:1;\">&#10005;<\/button>\n                <h3 style=\"color:#16a34a; margin:0 0 18px 0; text-align:center;\">&#128247; Submit Live Surf Report<\/h3>\n\n                <div id=\"upwellDropZone\" onclick=\"document.getElementById('upwellFileInput').click()\"\n                     style=\"border:2px dashed #22c55e; border-radius:10px; padding:28px; text-align:center; cursor:pointer; background:#f0fdf4; margin-bottom:14px;\">\n                    <div style=\"font-size:34px; margin-bottom:6px;\">&#128248;<\/div>\n                    <p style=\"margin:0; color:#16a34a; font-weight:bold;\">Click or drop photo here<\/p>\n                    <p style=\"margin:4px 0 0 0; font-size:12px; color:#6b7280;\">JPG, PNG, HEIC up to 10MB<\/p>\n                <\/div>\n                <input type=\"file\" id=\"upwellFileInput\" accept=\"image\/*\" style=\"display:none;\" onchange=\"upwellPreviewPhoto(this)\">\n\n                <div id=\"upwellPhotoPreview\" style=\"display:none; margin-bottom:14px; text-align:center;\">\n                    <img decoding=\"async\" id=\"upwellPreviewImg\" style=\"width:100%; max-height:220px; object-fit:cover; border-radius:8px; display:block;\" src=\"\" alt=\"preview\">\n                    <button onclick=\"upwellClearPhoto()\" style=\"margin-top:8px; background:#dc2626; color:white; border:none; border-radius:6px; padding:5px 14px; font-size:13px; cursor:pointer;\">&#10005; Remove photo<\/button>\n                <\/div>\n\n                <input type=\"text\" id=\"upwellReportLocation\" placeholder=\"Spot \/ Location *\" style=\"width:100%; padding:10px; border:1px solid #d1d5db; border-radius:8px; font-size:14px; margin-bottom:10px; box-sizing:border-box;\">\n                <div style=\"display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px;\">\n                    <input type=\"text\" id=\"upwellReportWaves\" placeholder=\"Waves (e.g. 3-5 ft)\" style=\"padding:10px; border:1px solid #d1d5db; border-radius:8px; font-size:14px; box-sizing:border-box; width:100%;\">\n                    <input type=\"text\" id=\"upwellReportWind\" placeholder=\"Wind (e.g. Offshore)\" style=\"padding:10px; border:1px solid #d1d5db; border-radius:8px; font-size:14px; box-sizing:border-box; width:100%;\">\n                <\/div>\n                <textarea id=\"upwellReportNote\" placeholder=\"Notes (optional)\" rows=\"2\" style=\"width:100%; padding:10px; border:1px solid #d1d5db; border-radius:8px; font-size:14px; margin-bottom:14px; box-sizing:border-box; resize:vertical;\"><\/textarea>\n\n                <button onclick=\"upwellSubmitReport()\" style=\"background:#16a34a; color:white; padding:13px; border:none; border-radius:8px; font-size:16px; font-weight:bold; cursor:pointer; width:100%;\">&#128640; Post Report<\/button>\n            <\/div>\n        <\/div>\n\n        <!-- \u2500\u2500 LIGHTBOX \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n        <div id=\"upwellLightbox\" onclick=\"upwellCloseLightbox()\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.92); z-index:999999; justify-content:center; align-items:center;\">\n            <img decoding=\"async\" id=\"upwellLightboxImg\" src=\"\" alt=\"\" style=\"max-width:95%; max-height:92vh; border-radius:10px; display:block;\">\n            <button onclick=\"upwellCloseLightbox()\" style=\"position:fixed; top:16px; right:20px; background:rgba(255,255,255,0.18); border:none; color:white; font-size:26px; cursor:pointer; border-radius:50%; width:42px; height:42px; line-height:42px; text-align:center;\">&#10005;<\/button>\n        <\/div>\n\n        <!-- \u2500\u2500 SHARE MODAL \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n        <div id=\"upwellShareModal\" onclick=\"upwellCloseShare(event)\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.65); z-index:999998; justify-content:center; align-items:center; padding:20px; box-sizing:border-box;\">\n            <div onclick=\"event.stopPropagation()\" style=\"background:white; border-radius:16px; padding:28px; width:100%; max-width:380px; position:relative; text-align:center;\">\n                <button onclick=\"upwellCloseShare()\" style=\"position:absolute; top:12px; right:14px; background:none; border:none; font-size:22px; cursor:pointer; color:#9ca3af;\">&#10005;<\/button>\n                <h3 style=\"margin:0 0 6px 0; font-size:18px; color:#111827;\">&#128257; Share this report<\/h3>\n                <p id=\"upwellShareDesc\" style=\"font-size:13px; color:#6b7280; margin:0 0 20px 0;\"><\/p>\n                <div style=\"display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:16px;\">\n                    <a id=\"upwellShareFB\"  href=\"#\" target=\"_blank\" style=\"display:flex; align-items:center; justify-content:center; gap:8px; padding:12px; background:#1877f2; color:white; border-radius:10px; text-decoration:none; font-weight:bold; font-size:14px;\">&#128441; Facebook<\/a>\n                    <a id=\"upwellShareTW\"  href=\"#\" target=\"_blank\" style=\"display:flex; align-items:center; justify-content:center; gap:8px; padding:12px; background:#000000; color:white; border-radius:10px; text-decoration:none; font-weight:bold; font-size:14px;\">&#10006; Twitter\/X<\/a>\n                    <a id=\"upwellShareWA\"  href=\"#\" target=\"_blank\" style=\"display:flex; align-items:center; justify-content:center; gap:8px; padding:12px; background:#25d366; color:white; border-radius:10px; text-decoration:none; font-weight:bold; font-size:14px;\">&#128241; WhatsApp<\/a>\n                    <a id=\"upwellShareIG\"  href=\"https:\/\/www.instagram.com\" target=\"_blank\" style=\"display:flex; align-items:center; justify-content:center; gap:8px; padding:12px; background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888); color:white; border-radius:10px; text-decoration:none; font-weight:bold; font-size:14px;\">&#127758; Instagram<\/a>\n                <\/div>\n                <button id=\"upwellCopyLinkBtn\" onclick=\"upwellCopyLink()\" style=\"width:100%; padding:11px; background:#f3f4f6; border:1px solid #e5e7eb; border-radius:8px; font-size:14px; cursor:pointer; color:#374151; font-weight:bold;\">&#128203; Copy Link<\/button>\n                <p id=\"upwellCopiedMsg\" style=\"display:none; margin:8px 0 0 0; font-size:13px; color:#16a34a; font-weight:bold;\">&#10003; Copied to clipboard!<\/p>\n            <\/div>\n        <\/div>\n\n        <!-- SERVICE BUTTONS -->\n        <div style=\"background: #fff; padding: 20px; border-radius: 12px; margin-bottom: 30px; border: 1px solid #e5e7eb;\">\n            <h3 style=\"color: #1e40af; margin-bottom: 15px; text-align: center;\">\ud83d\udecd\ufe0f Global Surf Services<\/h3>\n            <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px;\">\n                <div style=\"text-align: center;\">\n                    <a href=\"mailto:support@upwellsurf.com?subject=Live Here Request\" style=\"display: inline-block; background: #3b82f6; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83d\udcf9 Live Here<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Mark Savoia Costa Rica real estate<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"mailto:support@upwellsurf.com?subject=Rent Request\" style=\"display: inline-block; background: #10b981; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83c\udfc4 Rent<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Equipment rental<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"mailto:support@upwellsurf.com?subject=Webcam Request\" style=\"display: inline-block; background: #f59e0b; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83d\udcf7 Webcam Soon<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Coming soon<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"mailto:support@upwellsurf.com?subject=Mortgage Request\" style=\"display: inline-block; background: #f59e0b; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83c\udfe0 Mortgage<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Beach loans<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"mailto:support@upwellsurf.com?subject=Car Dealer Request\" style=\"display: inline-block; background: #8b5cf6; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83d\ude97 Car Dealer<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">MacPhee Ford<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"https:\/\/www.didijustbuymygrandmothershouse.store\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"display: inline-block; background: #d4a017; color: #111; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83c\udf99\ufe0f Subscribe<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Didijustbuymygrandmothershouse \u00b7 7-day free trial \u00b7 $9.99\/mo<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"https:\/\/buy.stripe.com\/bJe28tbj539f0w07gaew800\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-stripe-pro-report=\"1\" style=\"display: inline-block; background: #8b5cf6; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83d\udcca Pro Report \u2014 7-day free trial on Stripe<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">7-day free trial \u00b7 then $119\/year<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                                        <a href=\"mailto:support@upwellsurf.com?subject=Real%20Estate%20Agent%20Request\" style=\"display: inline-block; background: #dc2626; color: white; padding: 12px 20px; text-decoration: none; border-radius: 8px; font-weight: bold; margin-bottom: 10px; width: 100%; text-align: center; box-sizing: border-box;\">\ud83e\udd1d Agent<\/a>\n                                        <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Mark Maroia<\/p>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- SAMPLE MLS + WEATHER DATA -->\n                    <div style=\"margin: 0 0 22px;\">\n                        <section class=\"upwell-mls-wx\" id=\"upwellMlsWeatherSample\" data-mls=\"NSX-482917\">\n            <div class=\"upwell-mls-wx__banner\">\n                <span class=\"upwell-mls-wx__sample-pill\">Sample MLS + weather<\/span>\n                <span class=\"upwell-mls-wx__mls\">MLS# NSX-482917<\/span>\n            <\/div>\n\n                        <div class=\"upwell-mls-wx__hero\">\n                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/listing-gallery\/listing-02-exterior.jpg\" alt=\"Sample MLS coastal home near Martinique Beach\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"720\">\n                <span class=\"upwell-mls-wx__status\">For sale<\/span>\n            <\/div>\n            \n            <div class=\"upwell-mls-wx__body\">\n                <p class=\"upwell-mls-wx__price\">C$875,000<\/p>\n                <p class=\"upwell-mls-wx__price2\">US$640,000 \u00b7 \u00a3505,000<\/p>\n                <h3 class=\"upwell-mls-wx__addr\">47 Breakwater Lane<\/h3>\n                <p class=\"upwell-mls-wx__city\">Martinique Beach, Nova Scotia<\/p>\n\n                <div class=\"upwell-mls-wx__stats\">\n                    <span><strong>4<\/strong> bd<\/span>\n                    <span><strong>2<\/strong> ba<\/span>\n                    <span><strong>2,180<\/strong> sq ft<\/span>\n                    <span>0.62 acre \u00b7 ocean-front lot<\/span>\n                <\/div>\n\n                <div class=\"upwell-mls-wx__facts\">\n                    <div><dt>Type<\/dt><dd>Single family \u2014 coastal<\/dd><\/div>\n                    <div><dt>Year<\/dt><dd>1998<\/dd><\/div>\n                    <div><dt>Showings<\/dt><dd>By appointment \u00b7 weather window recommended<\/dd><\/div>\n                <\/div>\n\n                <div class=\"upwell-mls-wx__weather\">\n                    <h4 class=\"upwell-mls-wx__wx-title\">Weather data in this listing<\/h4>\n                    <ul class=\"upwell-mls-wx__wx-chips\" role=\"list\">\n                                                    <li class=\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--warn\" role=\"listitem\" data-hazard=\"hurricane\" title=\"Atlantic hurricane season Jun\u2013Nov. Direct landfall rare; tropical remnants can bring 80\u2013120 km\/h winds and 1\u20132 m surge on exposed east-facing shoreline.\">\n                                <span class=\"upwell-mls-wx__wx-chip-icon\" aria-hidden=\"true\">\ud83c\udf00<\/span>\n                                <span class=\"upwell-mls-wx__wx-chip-text\">\n                                    <span class=\"upwell-mls-wx__wx-chip-label\">Hurricane<\/span>\n                                    <span class=\"upwell-mls-wx__wx-chip-level\">Elevated<\/span>\n                                <\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--danger\" role=\"listitem\" data-hazard=\"noreaster\" title=\"Primary winter hazard. Strong NE\u2013E winds drive surge and beach erosion. Plan showings around Pro storm reports; expect road spray and power risk.\">\n                                <span class=\"upwell-mls-wx__wx-chip-icon\" aria-hidden=\"true\">\ud83c\udf28\ufe0f<\/span>\n                                <span class=\"upwell-mls-wx__wx-chip-text\">\n                                    <span class=\"upwell-mls-wx__wx-chip-label\">Nor&#039;easter<\/span>\n                                    <span class=\"upwell-mls-wx__wx-chip-level\">High<\/span>\n                                <\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--good\" role=\"listitem\" data-hazard=\"sunlight\" title=\"Southwest living-room &amp; deck get afternoon sun. Winter day length ~8.5 hrs; summer ~15.5 hrs. Solar-friendly roof pitch on south wing.\">\n                                <span class=\"upwell-mls-wx__wx-chip-icon\" aria-hidden=\"true\">\u2600\ufe0f<\/span>\n                                <span class=\"upwell-mls-wx__wx-chip-text\">\n                                    <span class=\"upwell-mls-wx__wx-chip-label\">Sunlight<\/span>\n                                    <span class=\"upwell-mls-wx__wx-chip-level\">Good SW exposure<\/span>\n                                <\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--warn\" role=\"listitem\" data-hazard=\"fog\" title=\"Harbour fog and sea smoke common spring\u2013fall. Plan coastal showings and boat access for clearer afternoons when possible.\">\n                                <span class=\"upwell-mls-wx__wx-chip-icon\" aria-hidden=\"true\">\ud83c\udf2b\ufe0f<\/span>\n                                <span class=\"upwell-mls-wx__wx-chip-text\">\n                                    <span class=\"upwell-mls-wx__wx-chip-label\">Fog \/ visibility<\/span>\n                                    <span class=\"upwell-mls-wx__wx-chip-level\">Morning banks common<\/span>\n                                <\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--danger\" role=\"listitem\" data-hazard=\"stormwater\" title=\"Storm water &amp; surge can overtop the low berm in major events \u2014 risk of washout to house and driveway. Elevated foundation recommended; verify flood insurance.\">\n                                <span class=\"upwell-mls-wx__wx-chip-icon\" aria-hidden=\"true\">\ud83c\udf0a<\/span>\n                                <span class=\"upwell-mls-wx__wx-chip-text\">\n                                    <span class=\"upwell-mls-wx__wx-chip-label\">Storm water \/ surge<\/span>\n                                    <span class=\"upwell-mls-wx__wx-chip-level\">Take-out risk<\/span>\n                                <\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--warn\" role=\"listitem\" data-hazard=\"land\" title=\"Coastal bank erosion after successive nor\u2019easters. Setback from bluff edge critical. Survey land hazard before purchase; soft armour &amp; drainage advised.\">\n                                <span class=\"upwell-mls-wx__wx-chip-icon\" aria-hidden=\"true\">\u26a0\ufe0f<\/span>\n                                <span class=\"upwell-mls-wx__wx-chip-text\">\n                                    <span class=\"upwell-mls-wx__wx-chip-label\">House \/ land danger<\/span>\n                                    <span class=\"upwell-mls-wx__wx-chip-level\">Erosion watch<\/span>\n                                <\/span>\n                            <\/li>\n                                            <\/ul>\n                            <div class=\"upwell-mls-wx__hur-map-wrap\" aria-labelledby=\"upwell-mls-hur-map-title\">\n            <h5 class=\"upwell-mls-wx__hur-map-title\" id=\"upwell-mls-hur-map-title\">Hurricane history tracks (map)<\/h5>\n            <p class=\"upwell-mls-wx__hur-map-sub\">Sample tracks near Martinique Beach \u2014 illustrative only, not official NHC data.<\/p>\n            <div class=\"upwell-mls-wx__hur-map\" role=\"img\" aria-label=\"Map showing sample hurricane tracks near the listing\">\n                <svg viewBox=\"0 0 360 220\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" preserveAspectRatio=\"xMidYMid meet\">\n                    <rect width=\"100%\" height=\"100%\" fill=\"#dbeafe\"\/>\n                    <rect x=\"0\" y=\"0\" width=\"360\" height=\"220\" fill=\"url(#upwellSeaGrad)\" opacity=\"0.35\"\/>\n                    <defs>\n                        <linearGradient id=\"upwellSeaGrad\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\">\n                            <stop offset=\"0%\" stop-color=\"#93c5fd\"\/>\n                            <stop offset=\"100%\" stop-color=\"#1d4ed8\"\/>\n                        <\/linearGradient>\n                    <\/defs>\n                    <path d=\"M280,40 L320,55 L340,80 L350,110 L345,140 L320,165 L280,180 L240,175 L210,150 L200,120 L215,85 L250,55 Z\" fill=\"#bbf7d0\" stroke=\"#86efac\" stroke-width=\"1\"\/>\n                    <polyline points=\"208,103.4 229.3,81.4 250.7,63.8 272,50.6\" fill=\"none\" stroke=\"#b91c1c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.85\"\/><polyline points=\"186.7,138.6 218.7,99 277.3,59.4 320,22\" fill=\"none\" stroke=\"#ea580c\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.85\"\/><polyline points=\"146.7,154 213.3,110 280,77 333.3,44\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.85\"\/><polyline points=\"26.7,209 133.3,154 226.7,99 293.3,66\" fill=\"none\" stroke=\"#7c3aed\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\"0.85\"\/>                    <circle cx=\"262.3\" cy=\"62.3\" r=\"6\" fill=\"#0f172a\" stroke=\"#fff\" stroke-width=\"2\"\/>                <\/svg>\n                <span class=\"upwell-mls-wx__hur-pin-label\">Listing<\/span>\n            <\/div>\n            <ul class=\"upwell-mls-wx__hur-legend\" role=\"list\">\n                                    <li role=\"listitem\">\n                        <span class=\"upwell-mls-wx__hur-legend-swatch\" style=\"background:#b91c1c;\"><\/span>\n                        Juan (2003)                    <\/li>\n                                    <li role=\"listitem\">\n                        <span class=\"upwell-mls-wx__hur-legend-swatch\" style=\"background:#ea580c;\"><\/span>\n                        Fiona (2022)                    <\/li>\n                                    <li role=\"listitem\">\n                        <span class=\"upwell-mls-wx__hur-legend-swatch\" style=\"background:#2563eb;\"><\/span>\n                        Dorian (2019)                    <\/li>\n                                    <li role=\"listitem\">\n                        <span class=\"upwell-mls-wx__hur-legend-swatch\" style=\"background:#7c3aed;\"><\/span>\n                        Sandy (2012)                    <\/li>\n                            <\/ul>\n        <\/div>\n                            <ul class=\"upwell-mls-wx__wx-notes\" role=\"list\">\n                                                    <li data-hazard=\"hurricane\">\n                                <span class=\"upwell-mls-wx__wx-note-icon\" aria-hidden=\"true\">\ud83c\udf00<\/span>\n                                <span><strong>Hurricane:<\/strong> Atlantic hurricane season Jun\u2013Nov. Direct landfall rare; tropical remnants can bring 80\u2013120 km\/h winds and 1\u20132 m surge on exposed east-facing shoreline.<\/span>\n                            <\/li>\n                                                    <li data-hazard=\"noreaster\">\n                                <span class=\"upwell-mls-wx__wx-note-icon\" aria-hidden=\"true\">\ud83c\udf28\ufe0f<\/span>\n                                <span><strong>Nor&#039;easter:<\/strong> Primary winter hazard. Strong NE\u2013E winds drive surge and beach erosion. Plan showings around Pro storm reports; expect road spray and power risk.<\/span>\n                            <\/li>\n                                                    <li data-hazard=\"sunlight\">\n                                <span class=\"upwell-mls-wx__wx-note-icon\" aria-hidden=\"true\">\u2600\ufe0f<\/span>\n                                <span><strong>Sunlight:<\/strong> Southwest living-room &amp; deck get afternoon sun. Winter day length ~8.5 hrs; summer ~15.5 hrs. Solar-friendly roof pitch on south wing.<\/span>\n                            <\/li>\n                                                    <li data-hazard=\"fog\">\n                                <span class=\"upwell-mls-wx__wx-note-icon\" aria-hidden=\"true\">\ud83c\udf2b\ufe0f<\/span>\n                                <span><strong>Fog \/ visibility:<\/strong> Harbour fog and sea smoke common spring\u2013fall. Plan coastal showings and boat access for clearer afternoons when possible.<\/span>\n                            <\/li>\n                                                    <li data-hazard=\"stormwater\">\n                                <span class=\"upwell-mls-wx__wx-note-icon\" aria-hidden=\"true\">\ud83c\udf0a<\/span>\n                                <span><strong>Storm water \/ surge:<\/strong> Storm water &amp; surge can overtop the low berm in major events \u2014 risk of washout to house and driveway. Elevated foundation recommended; verify flood insurance.<\/span>\n                            <\/li>\n                                                    <li data-hazard=\"land\">\n                                <span class=\"upwell-mls-wx__wx-note-icon\" aria-hidden=\"true\">\u26a0\ufe0f<\/span>\n                                <span><strong>House \/ land danger:<\/strong> Coastal bank erosion after successive nor\u2019easters. Setback from bluff edge critical. Survey land hazard before purchase; soft armour &amp; drainage advised.<\/span>\n                            <\/li>\n                                            <\/ul>\n                <\/div>\n\n                                <div class=\"upwell-mls-wx__activities\">\n                    <h4 class=\"upwell-mls-wx__wx-title\">Outdoor activities nearby<\/h4>\n                    <p class=\"upwell-mls-wx__wx-sub\">Fishing \u00b7 Boating \u00b7 Sailing \u00b7 Windsurfing \u00b7 Biking \u00b7 Paddle boarding \u00b7 Diving \u00b7 Hunting \u00b7 ATV \u00b7 Bird watching<\/p>\n                    <ul class=\"upwell-mls-wx__act-grid\" role=\"list\">\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"fishing\" title=\"Fishing\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83c\udfa3<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Fishing<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"boating\" title=\"Boating\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83d\udea4<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Boating<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"sailing\" title=\"Sailing\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\u26f5<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Sailing<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"windsurfing\" title=\"Windsurfing\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83c\udf2c\ufe0f<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Windsurfing<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"biking\" title=\"Biking\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83d\udeb4<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Biking<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"paddleboarding\" title=\"Paddle boarding\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83c\udfc4<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Paddle boarding<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"diving\" title=\"Diving\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83e\udd3f<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Diving<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"hunting\" title=\"Hunting\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83e\udd8c<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Hunting<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"atv\" title=\"ATV\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83c\udfcd\ufe0f<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">ATV<\/span>\n                            <\/li>\n                                                    <li class=\"upwell-mls-wx__act\" role=\"listitem\" data-activity=\"birdwatching\" title=\"Bird watching\">\n                                <span class=\"upwell-mls-wx__act-logo\" aria-hidden=\"true\">\ud83d\udc26<\/span>\n                                <span class=\"upwell-mls-wx__act-label\">Bird watching<\/span>\n                            <\/li>\n                                            <\/ul>\n                <\/div>\n                \n                <div class=\"upwell-mls-wx__desc\">\n                                                                    <p>Sample MLS listing for Upwell Surf \u2014 coastal home near Martinique Beach with live weather context in the listing.<\/p>\n                                                                    <p>Buyers see hurricane exposure, nor\u2019easter wind\/swell windows, sunlight hours, storm-water \/ surge risk, and land danger (erosion &amp; flood) beside classic MLS facts.<\/p>\n                                                                    <p>This is a demo property for forecast + real-estate pairing. Confirm all hazards with local surveys, flood maps, and your realtor.<\/p>\n                                    <\/div>\n\n                <div class=\"upwell-mls-wx__actions\">\n                    <a class=\"upwell-mls-wx__btn upwell-mls-wx__btn--primary\" href=\"mailto:support@upwellsurf.com?subject=Sample%20MLS%20inquiry%20%E2%80%94%20NSX-482917%20%E2%80%94%20Martinique%20Beach%2C%20Nova%20Scotia&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27m%20interested%20in%20the%20sample%20MLS%20listing%20NSX-482917%20%2847%20Breakwater%20Lane%29.%0A%0ANear%3A%20Martinique%20Beach%2C%20Nova%20Scotia%0AQuestions%20about%20weather%20%2F%20hazard%20data%3A%0A%0AThanks%21\">Email about this listing<\/a>\n                    <a class=\"upwell-mls-wx__btn upwell-mls-wx__btn--ghost\" href=\"mailto:support@upwellsurf.com\">support@upwellsurf.com<\/a>\n                <\/div>\n                <p class=\"upwell-mls-wx__disclaimer\">Sample listing for demo only \u2014 not an active MLS offer. Hazard notes are illustrative; verify with professionals.<\/p>\n            <\/div>\n        <\/section>\n                    <\/div>\n        \n        <!-- BUSINESS PARTNERS -->\n        <div style=\"background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid #e5e7eb;\">\n            <h3 style=\"color: #1e40af; margin-bottom: 15px; text-align: center;\">\ud83e\udd1d Global Business Partners<\/h3>\n            <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px;\">\n                <div style=\"padding: 20px; background: #f8fafc; border-radius: 8px; border: 1px solid #e5e7eb;\">\n                    <h4 style=\"color: #dc2626; margin-bottom: 10px;\">\ud83d\ude97 MacPhee Ford<\/h4>\n                    <p style=\"font-size: 14px; margin-bottom: 10px;\">Nova Scotia's Ford Dealer<\/p>\n                    <a href=\"mailto:support@upwellsurf.com?subject=MacPhee Ford\" style=\"background: #dc2626; color: white; padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; display: inline-block;\">Contact<\/a>\n                <\/div>\n                <div style=\"padding: 20px; background: #f8fafc; border-radius: 8px; border: 1px solid #e5e7eb;\">\n                    <h4 style=\"color: #f59e0b; margin-bottom: 10px;\">\ud83c\udfe0 Costa Rica listings<\/h4>\n                    <p style=\"font-size: 14px; margin-bottom: 10px;\">Mark Savoia \u2014 beach homes & investment properties<\/p>\n                    <a href=\"mailto:support@upwellsurf.com?subject=Real%20Estate\" style=\"background: #f59e0b; color: white; padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; display: inline-block;\">Contact<\/a>\n                <\/div>\n                <div style=\"padding: 20px; background: #f8fafc; border-radius: 8px; border: 1px solid #e5e7eb;\">\n                    <h4 style=\"color: #ea580c; margin-bottom: 10px;\">\ud83c\udf99\ufe0f Surfdonkey Podcast<\/h4>\n                    <p style=\"font-size: 14px; margin-bottom: 10px;\">Fall hoodie &amp; t-shirt<\/p>\n                    <a href=\"https:\/\/www.surfdonkey.net\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\" style=\"display: inline-block; margin-bottom: 10px;\">\n                        <img decoding=\"async\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/surfdonkey\/fall-hoodie.jpg\" alt=\"Surfdonkey hoodie\" style=\"width: 100%; max-height: 120px; object-fit: cover; border-radius: 6px; display: block;\" loading=\"lazy\">\n                    <\/a>\n                    <a href=\"https:\/\/www.surfdonkey.net\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\" style=\"background: #ea580c; color: white; padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; display: inline-block;\">Shop Surfdonkey<\/a>\n                <\/div>\n                <div style=\"padding: 20px; background: #f8fafc; border-radius: 8px; border: 1px solid #e5e7eb;\">\n                    <h4 style=\"color: #3b82f6; margin-bottom: 10px;\">\ud83c\udfc4 North East Used Boards<\/h4>\n                    <p style=\"font-size: 14px; margin-bottom: 10px;\">Quality Used Surfboards<\/p>\n                    <a href=\"mailto:support@upwellsurf.com?subject=Used Boards\" style=\"background: #3b82f6; color: white; padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; display: inline-block;\">Contact<\/a>\n                <\/div>\n                <div style=\"padding: 20px; background: #f8fafc; border-radius: 8px; border: 1px solid #e5e7eb;\">\n                    <h4 style=\"color: #f59e0b; margin-bottom: 10px;\">\ud83c\udfe0 Mark Savoia Costa Rica<\/h4>\n                    <p style=\"font-size: 14px; margin-bottom: 10px;\">Beach Property Specialists<\/p>\n                    <a href=\"mailto:support@upwellsurf.com?subject=Real Estate\" style=\"background: #f59e0b; color: white; padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; text-decoration: none; display: inline-block;\">Contact<\/a>\n                <\/div>\n            <\/div>\n        <\/div>\n\n    <\/div><!-- end #upwell-forecast-wrap -->\n\n    <script>\n    var UPWELL_LISTING_FORECAST_AD_HTML = \"        <div class=\\\"upwell-re-listing-teaser upwell-re-listing-teaser--forecast-between upwell-ocean-view-teaser\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\n            data-spot=\\\"\\\"\\n            aria-label=\\\"Open Ocean View rental with photos\\\"\\n            onclick=\\\"upwellForecastOpenOceanViewModal()\\\"\\n            onkeydown=\\\"if(event.key==='Enter'||event.key===' '){event.preventDefault();upwellForecastOpenOceanViewModal();}\\\">\\n            <div class=\\\"upwell-re-listing-teaser-figure\\\" onclick=\\\"upwellForecastOpenOceanViewModal()\\\" aria-label=\\\"Open Ocean View details\\\">\\n                <img class=\\\"upwell-re-listing-teaser-img\\\" src=\\\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-view-hero.jpg\\\" alt=\\\"Ocean View \\u2014 exterior and ocean outlook\\\" loading=\\\"lazy\\\" decoding=\\\"async\\\" width=\\\"1200\\\" height=\\\"630\\\" onclick=\\\"upwellForecastOpenOceanViewModal()\\\">\\n                <span class=\\\"upwell-re-listing-teaser-listing-hint\\\" aria-hidden=\\\"true\\\">Tap photo for more details<\\\/span>\\n                                <span class=\\\"upwell-re-listing-teaser-photo-pill\\\" aria-hidden=\\\"true\\\">7 more pictures<\\\/span>\\n                            <\\\/div>\\n            <div class=\\\"upwell-re-listing-teaser-body\\\">\\n                <span class=\\\"upwell-re-listing-teaser-badge\\\">\\ud83c\\udfe0 Short-term rental<\\\/span>\\n                <span class=\\\"upwell-listing-status-pill upwell-listing-status-for-sale\\\">Available<\\\/span>\\n                <p class=\\\"upwell-re-listing-teaser-price\\\">$299 \\\/ night<\\\/p>\\n                <p class=\\\"upwell-re-listing-teaser-addr\\\">Ocean View \\u2014 coastal house rental<\\\/p>\\n                <p class=\\\"upwell-re-listing-teaser-addr upwell-ov-spot-line\\\" style=\\\"margin-top:4px;\\\">Starlink \\u00b7 Full kitchen \\u00b7 Sleeps 8\\u201312<\\\/p>\\n                <p class=\\\"upwell-re-listing-teaser-stats\\\">5 bd \\u00b7 1 ba \\u00b7 Short-term rental<\\\/p>\\n                <span class=\\\"upwell-re-listing-teaser-cta\\\">Tap for full listing, description &amp; photo gallery<\\\/span>\\n                <button type=\\\"button\\\" class=\\\"upwell-re-listing-more-btn\\\" onclick=\\\"event.preventDefault();event.stopPropagation();upwellForecastOpenOceanViewModal();\\\" aria-label=\\\"More info for Ocean View\\\">\\n                    More info                <\\\/button>\\n                <a class=\\\"upwell-ov-list-rental\\\" href=\\\"mailto:support@upwellsurf.com?subject=List%20my%20short-term%20rental%20on%20Upwell%20Surf&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27d%20like%20to%20list%20my%20short-term%20rental%20on%20Upwell%20Surf.%0A%0AProperty%20name%20%2F%20title%3A%0ALocation%3A%0ANightly%20rate%3A%0ABedrooms%20%2F%20baths%20%2F%20sleeps%3A%0AInternet%20%2F%20kitchen%20notes%3A%0APhotos%20available%3A%20yes%20%2F%20no%0A%0AThanks%21\\\" onclick=\\\"event.stopPropagation();\\\">\\n                    List your rental today                <\\\/a>\\n            <\\\/div>\\n        <\\\/div>\\n        \";\n    var UPWELL_FORECAST_RE = {\"mailtoHref\":\"mailto:support@upwellsurf.com?subject=Real%20Estate%20inquiry\",\"perSpotEnabled\":false,\"spotListings\":[]};\n    var UPWELL_OCEAN_VIEW_HTML = '';\n    var UPWELL_OCEAN_VIEW_GALLERY = [{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-view-hero.jpg\",\"alt\":\"Ocean View \\u2014 exterior and ocean outlook\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-view-4-laundry.jpg\",\"alt\":\"Ocean View \\u2014 laundry and kitchen area\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-08-water-view.jpg\",\"alt\":\"Ocean View \\u2014 water view from the property\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-09-driveway.jpg\",\"alt\":\"Ocean View \\u2014 driveway and parking\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-10-dining.jpg\",\"alt\":\"Ocean View \\u2014 dining area\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-11-deck-view.jpg\",\"alt\":\"Ocean View \\u2014 deck overlooking the ocean\"},{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/ocean-view\\\/ocean-12-laundry-kitchen.jpg\",\"alt\":\"Ocean View \\u2014 kitchen and laundry\"}];\n    var UPWELL_MLS_WX_HTML = \"        <section class=\\\"upwell-mls-wx\\\" id=\\\"upwellMlsWeatherSample\\\" data-mls=\\\"NSX-482917\\\">\\n            <div class=\\\"upwell-mls-wx__banner\\\">\\n                <span class=\\\"upwell-mls-wx__sample-pill\\\">Sample MLS + weather<\\\/span>\\n                <span class=\\\"upwell-mls-wx__mls\\\">MLS# NSX-482917<\\\/span>\\n            <\\\/div>\\n\\n                        <div class=\\\"upwell-mls-wx__hero\\\">\\n                <img src=\\\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/listing-gallery\\\/listing-02-exterior.jpg\\\" alt=\\\"Sample MLS coastal home near Martinique Beach\\\" loading=\\\"lazy\\\" decoding=\\\"async\\\" width=\\\"1200\\\" height=\\\"720\\\">\\n                <span class=\\\"upwell-mls-wx__status\\\">For sale<\\\/span>\\n            <\\\/div>\\n            \\n            <div class=\\\"upwell-mls-wx__body\\\">\\n                <p class=\\\"upwell-mls-wx__price\\\">C$875,000<\\\/p>\\n                <p class=\\\"upwell-mls-wx__price2\\\">US$640,000 \\u00b7 \\u00a3505,000<\\\/p>\\n                <h3 class=\\\"upwell-mls-wx__addr\\\">47 Breakwater Lane<\\\/h3>\\n                <p class=\\\"upwell-mls-wx__city\\\">Martinique Beach, Nova Scotia<\\\/p>\\n\\n                <div class=\\\"upwell-mls-wx__stats\\\">\\n                    <span><strong>4<\\\/strong> bd<\\\/span>\\n                    <span><strong>2<\\\/strong> ba<\\\/span>\\n                    <span><strong>2,180<\\\/strong> sq ft<\\\/span>\\n                    <span>0.62 acre \\u00b7 ocean-front lot<\\\/span>\\n                <\\\/div>\\n\\n                <div class=\\\"upwell-mls-wx__facts\\\">\\n                    <div><dt>Type<\\\/dt><dd>Single family \\u2014 coastal<\\\/dd><\\\/div>\\n                    <div><dt>Year<\\\/dt><dd>1998<\\\/dd><\\\/div>\\n                    <div><dt>Showings<\\\/dt><dd>By appointment \\u00b7 weather window recommended<\\\/dd><\\\/div>\\n                <\\\/div>\\n\\n                <div class=\\\"upwell-mls-wx__weather\\\">\\n                    <h4 class=\\\"upwell-mls-wx__wx-title\\\">Weather data in this listing<\\\/h4>\\n                    <ul class=\\\"upwell-mls-wx__wx-chips\\\" role=\\\"list\\\">\\n                                                    <li class=\\\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--warn\\\" role=\\\"listitem\\\" data-hazard=\\\"hurricane\\\" title=\\\"Atlantic hurricane season Jun\\u2013Nov. Direct landfall rare; tropical remnants can bring 80\\u2013120 km\\\/h winds and 1\\u20132 m surge on exposed east-facing shoreline.\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-chip-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf00<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__wx-chip-text\\\">\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-label\\\">Hurricane<\\\/span>\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-level\\\">Elevated<\\\/span>\\n                                <\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--danger\\\" role=\\\"listitem\\\" data-hazard=\\\"noreaster\\\" title=\\\"Primary winter hazard. Strong NE\\u2013E winds drive surge and beach erosion. Plan showings around Pro storm reports; expect road spray and power risk.\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-chip-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf28\\ufe0f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__wx-chip-text\\\">\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-label\\\">Nor&#039;easter<\\\/span>\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-level\\\">High<\\\/span>\\n                                <\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--good\\\" role=\\\"listitem\\\" data-hazard=\\\"sunlight\\\" title=\\\"Southwest living-room &amp; deck get afternoon sun. Winter day length ~8.5 hrs; summer ~15.5 hrs. Solar-friendly roof pitch on south wing.\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-chip-icon\\\" aria-hidden=\\\"true\\\">\\u2600\\ufe0f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__wx-chip-text\\\">\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-label\\\">Sunlight<\\\/span>\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-level\\\">Good SW exposure<\\\/span>\\n                                <\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--warn\\\" role=\\\"listitem\\\" data-hazard=\\\"fog\\\" title=\\\"Harbour fog and sea smoke common spring\\u2013fall. Plan coastal showings and boat access for clearer afternoons when possible.\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-chip-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf2b\\ufe0f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__wx-chip-text\\\">\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-label\\\">Fog \\\/ visibility<\\\/span>\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-level\\\">Morning banks common<\\\/span>\\n                                <\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--danger\\\" role=\\\"listitem\\\" data-hazard=\\\"stormwater\\\" title=\\\"Storm water &amp; surge can overtop the low berm in major events \\u2014 risk of washout to house and driveway. Elevated foundation recommended; verify flood insurance.\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-chip-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf0a<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__wx-chip-text\\\">\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-label\\\">Storm water \\\/ surge<\\\/span>\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-level\\\">Take-out risk<\\\/span>\\n                                <\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__wx-chip upwell-mls-wx__wx-chip--warn\\\" role=\\\"listitem\\\" data-hazard=\\\"land\\\" title=\\\"Coastal bank erosion after successive nor\\u2019easters. Setback from bluff edge critical. Survey land hazard before purchase; soft armour &amp; drainage advised.\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-chip-icon\\\" aria-hidden=\\\"true\\\">\\u26a0\\ufe0f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__wx-chip-text\\\">\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-label\\\">House \\\/ land danger<\\\/span>\\n                                    <span class=\\\"upwell-mls-wx__wx-chip-level\\\">Erosion watch<\\\/span>\\n                                <\\\/span>\\n                            <\\\/li>\\n                                            <\\\/ul>\\n                            <div class=\\\"upwell-mls-wx__hur-map-wrap\\\" aria-labelledby=\\\"upwell-mls-hur-map-title\\\">\\n            <h5 class=\\\"upwell-mls-wx__hur-map-title\\\" id=\\\"upwell-mls-hur-map-title\\\">Hurricane history tracks (map)<\\\/h5>\\n            <p class=\\\"upwell-mls-wx__hur-map-sub\\\">Sample tracks near Martinique Beach \\u2014 illustrative only, not official NHC data.<\\\/p>\\n            <div class=\\\"upwell-mls-wx__hur-map\\\" role=\\\"img\\\" aria-label=\\\"Map showing sample hurricane tracks near the listing\\\">\\n                <svg viewBox=\\\"0 0 360 220\\\" xmlns=\\\"http:\\\/\\\/www.w3.org\\\/2000\\\/svg\\\" preserveAspectRatio=\\\"xMidYMid meet\\\">\\n                    <rect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"#dbeafe\\\"\\\/>\\n                    <rect x=\\\"0\\\" y=\\\"0\\\" width=\\\"360\\\" height=\\\"220\\\" fill=\\\"url(#upwellSeaGrad)\\\" opacity=\\\"0.35\\\"\\\/>\\n                    <defs>\\n                        <linearGradient id=\\\"upwellSeaGrad\\\" x1=\\\"0\\\" y1=\\\"0\\\" x2=\\\"1\\\" y2=\\\"1\\\">\\n                            <stop offset=\\\"0%\\\" stop-color=\\\"#93c5fd\\\"\\\/>\\n                            <stop offset=\\\"100%\\\" stop-color=\\\"#1d4ed8\\\"\\\/>\\n                        <\\\/linearGradient>\\n                    <\\\/defs>\\n                    <path d=\\\"M280,40 L320,55 L340,80 L350,110 L345,140 L320,165 L280,180 L240,175 L210,150 L200,120 L215,85 L250,55 Z\\\" fill=\\\"#bbf7d0\\\" stroke=\\\"#86efac\\\" stroke-width=\\\"1\\\"\\\/>\\n                    <polyline points=\\\"208,103.4 229.3,81.4 250.7,63.8 272,50.6\\\" fill=\\\"none\\\" stroke=\\\"#b91c1c\\\" stroke-width=\\\"2.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" opacity=\\\"0.85\\\"\\\/><polyline points=\\\"186.7,138.6 218.7,99 277.3,59.4 320,22\\\" fill=\\\"none\\\" stroke=\\\"#ea580c\\\" stroke-width=\\\"2.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" opacity=\\\"0.85\\\"\\\/><polyline points=\\\"146.7,154 213.3,110 280,77 333.3,44\\\" fill=\\\"none\\\" stroke=\\\"#2563eb\\\" stroke-width=\\\"2.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" opacity=\\\"0.85\\\"\\\/><polyline points=\\\"26.7,209 133.3,154 226.7,99 293.3,66\\\" fill=\\\"none\\\" stroke=\\\"#7c3aed\\\" stroke-width=\\\"2.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" opacity=\\\"0.85\\\"\\\/>                    <circle cx=\\\"262.3\\\" cy=\\\"62.3\\\" r=\\\"6\\\" fill=\\\"#0f172a\\\" stroke=\\\"#fff\\\" stroke-width=\\\"2\\\"\\\/>                <\\\/svg>\\n                <span class=\\\"upwell-mls-wx__hur-pin-label\\\">Listing<\\\/span>\\n            <\\\/div>\\n            <ul class=\\\"upwell-mls-wx__hur-legend\\\" role=\\\"list\\\">\\n                                    <li role=\\\"listitem\\\">\\n                        <span class=\\\"upwell-mls-wx__hur-legend-swatch\\\" style=\\\"background:#b91c1c;\\\"><\\\/span>\\n                        Juan (2003)                    <\\\/li>\\n                                    <li role=\\\"listitem\\\">\\n                        <span class=\\\"upwell-mls-wx__hur-legend-swatch\\\" style=\\\"background:#ea580c;\\\"><\\\/span>\\n                        Fiona (2022)                    <\\\/li>\\n                                    <li role=\\\"listitem\\\">\\n                        <span class=\\\"upwell-mls-wx__hur-legend-swatch\\\" style=\\\"background:#2563eb;\\\"><\\\/span>\\n                        Dorian (2019)                    <\\\/li>\\n                                    <li role=\\\"listitem\\\">\\n                        <span class=\\\"upwell-mls-wx__hur-legend-swatch\\\" style=\\\"background:#7c3aed;\\\"><\\\/span>\\n                        Sandy (2012)                    <\\\/li>\\n                            <\\\/ul>\\n        <\\\/div>\\n                            <ul class=\\\"upwell-mls-wx__wx-notes\\\" role=\\\"list\\\">\\n                                                    <li data-hazard=\\\"hurricane\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-note-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf00<\\\/span>\\n                                <span><strong>Hurricane:<\\\/strong> Atlantic hurricane season Jun\\u2013Nov. Direct landfall rare; tropical remnants can bring 80\\u2013120 km\\\/h winds and 1\\u20132 m surge on exposed east-facing shoreline.<\\\/span>\\n                            <\\\/li>\\n                                                    <li data-hazard=\\\"noreaster\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-note-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf28\\ufe0f<\\\/span>\\n                                <span><strong>Nor&#039;easter:<\\\/strong> Primary winter hazard. Strong NE\\u2013E winds drive surge and beach erosion. Plan showings around Pro storm reports; expect road spray and power risk.<\\\/span>\\n                            <\\\/li>\\n                                                    <li data-hazard=\\\"sunlight\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-note-icon\\\" aria-hidden=\\\"true\\\">\\u2600\\ufe0f<\\\/span>\\n                                <span><strong>Sunlight:<\\\/strong> Southwest living-room &amp; deck get afternoon sun. Winter day length ~8.5 hrs; summer ~15.5 hrs. Solar-friendly roof pitch on south wing.<\\\/span>\\n                            <\\\/li>\\n                                                    <li data-hazard=\\\"fog\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-note-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf2b\\ufe0f<\\\/span>\\n                                <span><strong>Fog \\\/ visibility:<\\\/strong> Harbour fog and sea smoke common spring\\u2013fall. Plan coastal showings and boat access for clearer afternoons when possible.<\\\/span>\\n                            <\\\/li>\\n                                                    <li data-hazard=\\\"stormwater\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-note-icon\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf0a<\\\/span>\\n                                <span><strong>Storm water \\\/ surge:<\\\/strong> Storm water &amp; surge can overtop the low berm in major events \\u2014 risk of washout to house and driveway. Elevated foundation recommended; verify flood insurance.<\\\/span>\\n                            <\\\/li>\\n                                                    <li data-hazard=\\\"land\\\">\\n                                <span class=\\\"upwell-mls-wx__wx-note-icon\\\" aria-hidden=\\\"true\\\">\\u26a0\\ufe0f<\\\/span>\\n                                <span><strong>House \\\/ land danger:<\\\/strong> Coastal bank erosion after successive nor\\u2019easters. Setback from bluff edge critical. Survey land hazard before purchase; soft armour &amp; drainage advised.<\\\/span>\\n                            <\\\/li>\\n                                            <\\\/ul>\\n                <\\\/div>\\n\\n                                <div class=\\\"upwell-mls-wx__activities\\\">\\n                    <h4 class=\\\"upwell-mls-wx__wx-title\\\">Outdoor activities nearby<\\\/h4>\\n                    <p class=\\\"upwell-mls-wx__wx-sub\\\">Fishing \\u00b7 Boating \\u00b7 Sailing \\u00b7 Windsurfing \\u00b7 Biking \\u00b7 Paddle boarding \\u00b7 Diving \\u00b7 Hunting \\u00b7 ATV \\u00b7 Bird watching<\\\/p>\\n                    <ul class=\\\"upwell-mls-wx__act-grid\\\" role=\\\"list\\\">\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"fishing\\\" title=\\\"Fishing\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83c\\udfa3<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Fishing<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"boating\\\" title=\\\"Boating\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83d\\udea4<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Boating<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"sailing\\\" title=\\\"Sailing\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\u26f5<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Sailing<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"windsurfing\\\" title=\\\"Windsurfing\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83c\\udf2c\\ufe0f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Windsurfing<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"biking\\\" title=\\\"Biking\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83d\\udeb4<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Biking<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"paddleboarding\\\" title=\\\"Paddle boarding\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83c\\udfc4<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Paddle boarding<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"diving\\\" title=\\\"Diving\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83e\\udd3f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Diving<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"hunting\\\" title=\\\"Hunting\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83e\\udd8c<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Hunting<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"atv\\\" title=\\\"ATV\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83c\\udfcd\\ufe0f<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">ATV<\\\/span>\\n                            <\\\/li>\\n                                                    <li class=\\\"upwell-mls-wx__act\\\" role=\\\"listitem\\\" data-activity=\\\"birdwatching\\\" title=\\\"Bird watching\\\">\\n                                <span class=\\\"upwell-mls-wx__act-logo\\\" aria-hidden=\\\"true\\\">\\ud83d\\udc26<\\\/span>\\n                                <span class=\\\"upwell-mls-wx__act-label\\\">Bird watching<\\\/span>\\n                            <\\\/li>\\n                                            <\\\/ul>\\n                <\\\/div>\\n                \\n                <div class=\\\"upwell-mls-wx__desc\\\">\\n                                                                    <p>Sample MLS listing for Upwell Surf \\u2014 coastal home near Martinique Beach with live weather context in the listing.<\\\/p>\\n                                                                    <p>Buyers see hurricane exposure, nor\\u2019easter wind\\\/swell windows, sunlight hours, storm-water \\\/ surge risk, and land danger (erosion &amp; flood) beside classic MLS facts.<\\\/p>\\n                                                                    <p>This is a demo property for forecast + real-estate pairing. Confirm all hazards with local surveys, flood maps, and your realtor.<\\\/p>\\n                                    <\\\/div>\\n\\n                <div class=\\\"upwell-mls-wx__actions\\\">\\n                    <a class=\\\"upwell-mls-wx__btn upwell-mls-wx__btn--primary\\\" href=\\\"mailto:support@upwellsurf.com?subject=Sample%20MLS%20inquiry%20%E2%80%94%20NSX-482917%20%E2%80%94%20Martinique%20Beach%2C%20Nova%20Scotia&#038;body=Hi%20Upwell%20Surf%2C%0A%0AI%27m%20interested%20in%20the%20sample%20MLS%20listing%20NSX-482917%20%2847%20Breakwater%20Lane%29.%0A%0ANear%3A%20Martinique%20Beach%2C%20Nova%20Scotia%0AQuestions%20about%20weather%20%2F%20hazard%20data%3A%0A%0AThanks%21\\\">Email about this listing<\\\/a>\\n                    <a class=\\\"upwell-mls-wx__btn upwell-mls-wx__btn--ghost\\\" href=\\\"mailto:support@upwellsurf.com\\\">support@upwellsurf.com<\\\/a>\\n                <\\\/div>\\n                <p class=\\\"upwell-mls-wx__disclaimer\\\">Sample listing for demo only \\u2014 not an active MLS offer. Hazard notes are illustrative; verify with professionals.<\\\/p>\\n            <\\\/div>\\n        <\\\/section>\\n        \";\n    window.upwellOceanViewCurrentSpot = '';\n    var UPWELL_AJAX = {\n        ajax_url: \"https:\\\/\\\/upwellsurf.com\\\/wp-admin\\\/admin-ajax.php\",\n        nonce: \"9b5fda2380\"    };\n    window.upwellForecastListingGallery = [];\n    window.upwellForecastGalleryIdx = 0;\n    window.upwellOceanViewLightbox = function (img) {\n        if (!img || !img.src) return;\n        var existing = document.getElementById('upwellOceanViewLb');\n        if (existing) existing.remove();\n        var overlay = document.createElement('div');\n        overlay.id = 'upwellOceanViewLb';\n        overlay.className = 'upwell-ocean-view-lb';\n        overlay.onclick = function () { overlay.remove(); document.body.style.overflow = ''; };\n        overlay.innerHTML = '<img decoding=\"async\" src=\"' + String(img.src).replace(\/\"\/g, '&quot;') + '\" alt=\"\">';\n        document.body.appendChild(overlay);\n        document.body.style.overflow = 'hidden';\n    };\n    (function () {\n        var wrap = document.getElementById('upwell-forecast-wrap');\n        if (!wrap || wrap.getAttribute('data-upwell-listing-delegate') === '1') return;\n        wrap.setAttribute('data-upwell-listing-delegate', '1');\n        wrap.addEventListener('click', function (ev) {\n            var el = ev.target.closest && ev.target.closest('.upwell-re-listing-teaser--forecast-between');\n            if (!el || !wrap.contains(el)) return;\n            ev.preventDefault();\n            if (typeof upwellForecastOpenListingModal === 'function') upwellForecastOpenListingModal();\n        });\n        wrap.addEventListener('keydown', function (ev) {\n            if (ev.key !== 'Enter' && ev.key !== ' ') return;\n            var el = ev.target.closest && ev.target.closest('.upwell-re-listing-teaser--forecast-between');\n            if (!el || !wrap.contains(el)) return;\n            ev.preventDefault();\n            if (typeof upwellForecastOpenListingModal === 'function') upwellForecastOpenListingModal();\n        });\n    })();\n    function upwellForecastGalleryPick(i) {\n        var g = window.upwellForecastListingGallery || [];\n        if (!g.length) return;\n        var n = g.length;\n        i = ((i % n) + n) % n;\n        window.upwellForecastGalleryIdx = i;\n        var img = document.getElementById('upwellForecastGalleryMain');\n        if (img && g[i]) {\n            img.src = g[i].url;\n            img.alt = g[i].alt || '';\n            img.setAttribute('data-index', String(i));\n        }\n        var c = document.getElementById('upwellForecastGalleryCount');\n        if (c) c.textContent = (i + 1) + ' \/ ' + n;\n        var thumbs = document.querySelectorAll('.upwell-re-gallery-thumb');\n        for (var t = 0; t < thumbs.length; t++) {\n            thumbs[t].classList.toggle('is-active', t === i);\n            thumbs[t].setAttribute('aria-selected', t === i ? 'true' : 'false');\n        }\n    }\n    function upwellForecastGalleryStep(delta) {\n        upwellForecastGalleryPick(window.upwellForecastGalleryIdx + (delta || 0));\n    }\n    function upwellForecastOpenListingModal() {\n        var m = document.getElementById('upwellForecastListingModal');\n        if (!m) {\n            m = document.querySelector('.upwell-re-modal');\n        }\n        if (!m) {\n            if (window.console && typeof window.console.warn === 'function') {\n                window.console.warn('Upwell listing modal not found in DOM.');\n            }\n            return;\n        }\n        m.classList.add('is-open');\n        m.setAttribute('aria-hidden', 'false');\n        document.body.style.overflow = 'hidden';\n        if ((window.upwellForecastListingGallery || []).length) {\n            upwellForecastGalleryPick(0);\n        }\n        document.addEventListener('keydown', upwellForecastListingModalOnKey);\n    }\n    function upwellForecastCloseListingModal() {\n        var m = document.getElementById('upwellForecastListingModal');\n        if (!m) return;\n        m.classList.remove('is-open');\n        m.setAttribute('aria-hidden', 'true');\n        document.body.style.overflow = '';\n        document.removeEventListener('keydown', upwellForecastListingModalOnKey);\n    }\n    function upwellForecastListingModalOnKey(e) {\n        if (e.key === 'Escape') {\n            upwellForecastCloseListingModal();\n        }\n    }\n    \/\/ Expose for inline onclick handlers in forecast\/day cards and storm banner.\n    window.upwellForecastOpenListingModal = upwellForecastOpenListingModal;\n    window.upwellForecastCloseListingModal = upwellForecastCloseListingModal;\n    window.upwellForecastGalleryPick = upwellForecastGalleryPick;\n    window.upwellForecastGalleryStep = upwellForecastGalleryStep;\n\n    function upwellForecastOceanGalleryPick(i) {\n        var list = window.upwellOceanViewListingGallery || [];\n        if (!list.length) return;\n        if (i < 0) i = list.length - 1;\n        if (i >= list.length) i = 0;\n        window.upwellOceanViewGalleryIdx = i;\n        var main = document.getElementById('upwellForecastOceanGalleryMain');\n        var count = document.getElementById('upwellForecastOceanGalleryCount');\n        if (main) {\n            main.src = list[i].url;\n            main.alt = list[i].alt || '';\n            main.setAttribute('data-index', String(i));\n        }\n        if (count) count.textContent = (i + 1) + ' \/ ' + list.length;\n        var thumbs = document.querySelectorAll('#upwellForecastOceanViewModal .upwell-re-gallery-thumb');\n        for (var t = 0; t < thumbs.length; t++) {\n            thumbs[t].classList.toggle('is-active', t === i);\n            thumbs[t].setAttribute('aria-selected', t === i ? 'true' : 'false');\n        }\n    }\n    function upwellForecastOceanGalleryStep(delta) {\n        upwellForecastOceanGalleryPick((window.upwellOceanViewGalleryIdx || 0) + (delta || 0));\n    }\n    function upwellOceanViewBuildTeaserHtml(spot) {\n        var list = (window.upwellOceanViewListingGallery && window.upwellOceanViewListingGallery.length)\n            ? window.upwellOceanViewListingGallery\n            : (UPWELL_OCEAN_VIEW_GALLERY || []);\n        if (!list.length) return '';\n        var hero = list[0];\n        var n = list.length;\n        var spotSafe = upwellHtmlEscape(spot || '');\n        var nearLine = spotSafe\n            ? ('Near ' + spotSafe + ' \u2014 Starlink \u00b7 Full kitchen \u00b7 Sleeps 8\u201312')\n            : 'Starlink \u00b7 Full kitchen \u00b7 Sleeps 8\u201312';\n        var photoPill = n > 1\n            ? ('<span class=\"upwell-re-listing-teaser-photo-pill\" aria-hidden=\"true\">' + n + ' more pictures<\/span>')\n            : '';\n        var listSubject = 'List my short-term rental on Upwell Surf' + (spot ? (' \u2014 ' + spot) : '');\n        var listBody = 'Hi Upwell Surf,\\n\\nI would like to list my short-term rental on Upwell Surf.\\n\\n' +\n            (spot ? ('Near surf spot: ' + spot + '\\n') : '') +\n            'Property name \/ title:\\nLocation:\\nNightly rate:\\nBedrooms \/ baths \/ sleeps:\\n\\nThanks!';\n        var listMailto = 'mailto:support@upwellsurf.com?subject=' + encodeURIComponent(listSubject) +\n            '&body=' + encodeURIComponent(listBody);\n        return '' +\n            '<div class=\"upwell-re-listing-teaser upwell-re-listing-teaser--forecast-between upwell-ocean-view-teaser\" role=\"button\" tabindex=\"0\" data-spot=\"' + spotSafe + '\" ' +\n            'aria-label=\"Open Ocean View rental with photos\" onclick=\"upwellForecastOpenOceanViewModal()\" ' +\n            'onkeydown=\"if(event.key===\\'Enter\\'||event.key===\\' \\'){event.preventDefault();upwellForecastOpenOceanViewModal();}\">' +\n            '<div class=\"upwell-re-listing-teaser-figure\" onclick=\"upwellForecastOpenOceanViewModal()\">' +\n            '<img class=\"upwell-re-listing-teaser-img\" src=\"' + upwellHtmlEscape(hero.url) + '\" alt=\"' + upwellHtmlEscape(hero.alt || '') + '\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\">' +\n            '<span class=\"upwell-re-listing-teaser-listing-hint\" aria-hidden=\"true\">Tap photo for more details<\/span>' +\n            photoPill +\n            '<\/div>' +\n            '<div class=\"upwell-re-listing-teaser-body\">' +\n            '<span class=\"upwell-re-listing-teaser-badge\">\ud83c\udfe0 Short-term rental<\/span> ' +\n            '<span class=\"upwell-listing-status-pill upwell-listing-status-for-sale\">Available<\/span>' +\n            '<p class=\"upwell-re-listing-teaser-price\">$299 \/ night<\/p>' +\n            '<p class=\"upwell-re-listing-teaser-addr\">Ocean View \u2014 coastal house rental<\/p>' +\n            '<p class=\"upwell-re-listing-teaser-addr upwell-ov-spot-line\" style=\"margin-top:4px;\">' + nearLine + '<\/p>' +\n            '<p class=\"upwell-re-listing-teaser-stats\">5 bd \u00b7 1 ba \u00b7 Short-term rental<\/p>' +\n            '<span class=\"upwell-re-listing-teaser-cta\">Tap for full listing, description &amp; photo gallery<\/span>' +\n            '<button type=\"button\" class=\"upwell-re-listing-more-btn\" onclick=\"event.preventDefault();event.stopPropagation();upwellForecastOpenOceanViewModal();\">More info<\/button>' +\n            '<a class=\"upwell-ov-list-rental\" href=\"' + listMailto + '\" onclick=\"event.stopPropagation();\">List your rental today<\/a>' +\n            '<\/div><\/div>';\n    }\n    function upwellOceanViewBuildStormStripHtml(spot) {\n        var list = (window.upwellOceanViewListingGallery && window.upwellOceanViewListingGallery.length)\n            ? window.upwellOceanViewListingGallery\n            : (UPWELL_OCEAN_VIEW_GALLERY || []);\n        if (!list.length) return '';\n        var hero = list[0];\n        var mini = list.slice(0, 4);\n        var spotSafe = upwellHtmlEscape(spot || '');\n        var amen = '<strong>Internet<\/strong> Starlink \u00b7 <strong>Kitchen<\/strong> Full kitchen \u2014 stove, fridge, dining \u00b7 <strong>$299<\/strong> \/ night';\n        if (spotSafe) amen += ' \u00b7 Near <strong>' + spotSafe + '<\/strong>';\n        var thumbs = '';\n        for (var i = 0; i < mini.length; i++) {\n            thumbs += '<button type=\"button\" onclick=\"upwellForecastOpenOceanViewModal();\"><img decoding=\"async\" src=\"' + upwellHtmlEscape(mini[i].url) + '\" alt=\"\" loading=\"lazy\" width=\"64\" height=\"48\"><\/button>';\n        }\n        return '' +\n            '<div class=\"upwell-storm-listing-wrap\" data-spot=\"' + spotSafe + '\">' +\n            '<button type=\"button\" class=\"upwell-storm-listing-btn\" onclick=\"upwellForecastOpenOceanViewModal();\">\ud83c\udfe0 View Ocean View rental &amp; contact' + (spotSafe ? (' \u2014 ' + spotSafe) : '') + '<\/button>' +\n            '<p class=\"upwell-storm-listing-amenities\">' + amen + '<\/p>' +\n            '<div class=\"upwell-storm-listing-thumb-wrap\"><button type=\"button\" class=\"upwell-storm-listing-thumb\" onclick=\"upwellForecastOpenOceanViewModal();\">' +\n            '<img src=\"' + upwellHtmlEscape(hero.url) + '\" alt=\"' + upwellHtmlEscape(hero.alt || '') + '\" loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"254\"><\/button><\/div>' +\n            (mini.length > 1 ? ('<div class=\"upwell-storm-listing-mini-gallery\">' + thumbs + '<\/div>') : '') +\n            '<\/div>';\n    }\n    function upwellOceanViewApplySpot(spot) {\n        window.upwellOceanViewCurrentSpot = spot || '';\n        var teaser = upwellOceanViewBuildTeaserHtml(spot);\n        if (teaser) {\n            UPWELL_LISTING_FORECAST_AD_HTML = teaser;\n        }\n        var stormWrap = document.querySelector('#upwell-forecast-wrap .upwell-storm-listing-wrap');\n        var stormParent = stormWrap && stormWrap.parentNode;\n        if (stormParent) {\n            var next = upwellOceanViewBuildStormStripHtml(spot);\n            if (next) {\n                stormWrap.outerHTML = next;\n            }\n        }\n        var spotLine = document.querySelector('#upwellForecastOceanViewModal .upwell-ov-modal-spot');\n        if (spotLine) {\n            spotLine.textContent = spot\n                ? ('Coastal home near the break \u00b7 ' + spot)\n                : 'Coastal home near the break';\n        }\n        var form = document.getElementById('upwellOceanViewInquiryForm');\n        if (form) {\n            form.setAttribute('data-mail-subject', spot\n                ? ('Ocean View short-term rental inquiry \u2014 ' + spot)\n                : 'Ocean View short-term rental inquiry');\n        }\n    }\n\n    function upwellForecastOpenOceanViewModal() {\n        var m = document.getElementById('upwellForecastOceanViewModal');\n        if (!m) return;\n        upwellOceanViewApplySpot(window.upwellOceanViewCurrentSpot || '');\n        m.classList.add('is-open');\n        m.setAttribute('aria-hidden', 'false');\n        document.body.style.overflow = 'hidden';\n        if ((window.upwellOceanViewListingGallery || []).length) {\n            upwellForecastOceanGalleryPick(0);\n        }\n        document.addEventListener('keydown', upwellForecastOceanViewModalOnKey);\n    }\n    function upwellForecastCloseOceanViewModal() {\n        var m = document.getElementById('upwellForecastOceanViewModal');\n        if (!m) return;\n        m.classList.remove('is-open');\n        m.setAttribute('aria-hidden', 'true');\n        document.body.style.overflow = '';\n        document.removeEventListener('keydown', upwellForecastOceanViewModalOnKey);\n    }\n    function upwellForecastOceanViewModalOnKey(e) {\n        if (e.key === 'Escape') upwellForecastCloseOceanViewModal();\n    }\n    function upwellSendOceanViewInquiry(ev) {\n        ev.preventDefault();\n        var name = (document.getElementById('upwellOceanViewName') || {}).value || '';\n        var email = (document.getElementById('upwellOceanViewEmail') || {}).value || '';\n        var phone = (document.getElementById('upwellOceanViewPhone') || {}).value || '';\n        var message = (document.getElementById('upwellOceanViewMessage') || {}).value || '';\n        name = String(name).trim(); email = String(email).trim(); phone = String(phone).trim(); message = String(message).trim();\n        if (!name || !email) { alert('Please enter your name and email.'); return false; }\n        var formEl = document.getElementById('upwellOceanViewInquiryForm');\n        var toAddr = (formEl && formEl.getAttribute('data-contact-email')) ? formEl.getAttribute('data-contact-email').trim() : 'support@upwellsurf.com';\n        var subjRaw = (formEl && formEl.getAttribute('data-mail-subject')) ? formEl.getAttribute('data-mail-subject').trim() : 'Ocean View short-term rental inquiry';\n        var spot = window.upwellOceanViewCurrentSpot || '';\n        var body = encodeURIComponent(\n            'Name: ' + name + '\\nEmail: ' + email + '\\nPhone: ' + (phone || '\u2014') +\n            (spot ? ('\\nSurf spot: ' + spot) : '') +\n            '\\n\\n' + (message || '(no message)')\n        );\n        window.location.href = 'mailto:' + toAddr + '?subject=' + encodeURIComponent(subjRaw) + '&body=' + body;\n        return false;\n    }\n    window.upwellForecastOpenOceanViewModal = upwellForecastOpenOceanViewModal;\n    window.upwellForecastCloseOceanViewModal = upwellForecastCloseOceanViewModal;\n    window.upwellForecastOceanGalleryPick = upwellForecastOceanGalleryPick;\n    window.upwellForecastOceanGalleryStep = upwellForecastOceanGalleryStep;\n    window.upwellSendOceanViewInquiry = upwellSendOceanViewInquiry;\n    window.upwellOceanViewApplySpot = upwellOceanViewApplySpot;\n    window.upwellOceanViewBuildTeaserHtml = upwellOceanViewBuildTeaserHtml;\n    function upwellSendListingInquiry(ev) {\n        ev.preventDefault();\n        var name = (document.getElementById('upwellListingName') && document.getElementById('upwellListingName').value) ? document.getElementById('upwellListingName').value.trim() : '';\n        var email = (document.getElementById('upwellListingEmail') && document.getElementById('upwellListingEmail').value) ? document.getElementById('upwellListingEmail').value.trim() : '';\n        var phone = (document.getElementById('upwellListingPhone') && document.getElementById('upwellListingPhone').value) ? document.getElementById('upwellListingPhone').value.trim() : '';\n        var showingDate = (document.getElementById('upwellListingShowingDate') && document.getElementById('upwellListingShowingDate').value) ? document.getElementById('upwellListingShowingDate').value.trim() : '';\n        var showingTimeEl = document.getElementById('upwellListingShowingTime');\n        var showingTime = (showingTimeEl && showingTimeEl.value) ? showingTimeEl.value.trim() : '';\n        var message = (document.getElementById('upwellListingMessage') && document.getElementById('upwellListingMessage').value) ? document.getElementById('upwellListingMessage').value.trim() : '';\n        if (!name || !email) {\n            alert('Please enter your name and email.');\n            return false;\n        }\n        var formEl = document.getElementById('upwellListingInquiryForm');\n        var toAddr = (formEl && formEl.getAttribute('data-contact-email')) ? formEl.getAttribute('data-contact-email').trim() : 'support@upwellsurf.com';\n        var subjRaw = (formEl && formEl.getAttribute('data-mail-subject')) ? formEl.getAttribute('data-mail-subject').trim() : 'Schedule a showing \/ inquiry';\n        var subject = encodeURIComponent(subjRaw);\n        var sched = '';\n        if (showingDate || showingTime) {\n            sched = '\\nPreferred showing date: ' + (showingDate || '\u2014') + '\\nPreferred time: ' + (showingTime || '\u2014') + '\\n';\n        }\n        var body = encodeURIComponent('Name: ' + name + '\\nEmail: ' + email + '\\nPhone: ' + (phone || '\u2014') + sched + '\\n' + (message || '(no message)'));\n        window.location.href = 'mailto:' + toAddr + '?subject=' + subject + '&body=' + body;\n        return false;\n    }\n\n    window.upwellReportCardData = window.upwellReportCardData || {};\n    function upwellLiveReportEmailSupport(cardId) {\n        var r = window.upwellReportCardData[cardId];\n        if (!r) return;\n        var subject = encodeURIComponent('Live report \u2014 ' + r.location);\n        var body = encodeURIComponent(\n            'About this live report:\\nLocation: ' + r.location + '\\nPosted by: ' + r.name + ' (' + r.email + ')\\nTime: ' + r.timeStr + '\\nWaves: ' + r.waves + '\\nWind: ' + r.wind + '\\nNotes: ' + (r.note || '\u2014') + '\\n\\n---\\nYour message:\\n\\n'\n        );\n        window.location.href = 'mailto:support@upwellsurf.com?subject=' + subject + '&body=' + body;\n    }\n    function upwellLiveReportOpenChat(cardId) {\n        var r = window.upwellReportCardData[cardId];\n        if (!r) return;\n        if (typeof window.openChatForReport === 'function') {\n            window.openChatForReport(r.location);\n            return;\n        }\n        var subject = encodeURIComponent('Chat \u2014 live report at ' + r.location);\n        var body = encodeURIComponent(\n            'I want to chat about the live report for ' + r.location + ' (waves: ' + r.waves + ', wind: ' + r.wind + ').\\n\\n'\n        );\n        window.location.href = 'mailto:support@upwellsurf.com?subject=' + subject + '&body=' + body;\n    }\n\n    \/\/ \u2500\u2500\u2500 Ad rotation pool \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n        var UPWELL_SURFDONKEY_MERCH = {\n        hoodie: \"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/surfdonkey\\\/fall-hoodie.jpg\",\n        tshirt: \"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/surfdonkey\\\/fall-tshirt.jpg\",\n        shop: 'https:\/\/www.surfdonkey.net'\n    };\n    var upwellAds = [\n        {\n            icon: '\ud83c\udf99\ufe0f',\n            color: '#ea580c',\n            title: 'Surfdonkey Podcast',\n            sub: 'Fall merch \u2014 hoodie &amp; t-shirt. Tap a photo to shop',\n            merch: true,\n            btns: [\n                { label: '\ud83d\udecd\ufe0f Shop Surfdonkey', href: 'https:\/\/www.surfdonkey.net', bg: '#ea580c' }\n            ]\n        },\n        {\n            icon: '\ud83d\ude99',\n            color: '#dc2626',\n            title: 'MacPhee Ford \u2014 2026 Bronco',\n            sub: 'Halifax, NS &bull; What is your car worth?',\n            btns: [\n                { label: '\ud83d\udcde Call Now', href: 'tel:+19024347700', bg: '#10b981' },\n                { label: '\ud83c\udf10 Website', href: 'https:\/\/www.macpheeford.com', bg: '#3b82f6' }\n            ]\n        },\n        {\n            icon: '\ud83d\udcca',\n            color: '#8b5cf6',\n            title: '24 Pro Report',\n            sub: 'Professional surf condition reports',\n            btns: [\n                { label: '\ud83d\udcb3 7-day free trial \u2014 Stripe', href: \"https:\\\/\\\/buy.stripe.com\\\/bJe28tbj539f0w07gaew800\", bg: '#8b5cf6' }\n            ]\n        },\n        {\n            icon: '\ud83c\udfc4',\n            color: '#3b82f6',\n            title: 'North East Used Boards',\n            sub: 'Quality Used Surfboards ding repair 9024788878',\n            btns: [\n\t\t\t\t { label: '\ud83d\udcde Call Now', href: 'tel:+19024788887', bg: '#10b981' },\n            ]\n        },\n        {\n            icon: '\ud83c\udf99\ufe0f',\n            color: '#d4a017',\n            title: 'Podcast: Didijustbuymygrandmothershouse',\n            sub: '7-day free trial \u00b7 $9.99\/month',\n            btns: [\n                { label: 'Subscribe', href: 'https:\/\/www.didijustbuymygrandmothershouse.store', bg: '#d4a017' },\n                { label: '\ud83c\udfa7 Listen', href: 'https:\/\/open.spotify.com\/show\/0U1Pn78J9vV3WGIGyLTX8H', bg: '#1db954' }\n            ]\n        }\n    ];\n\n    \/\/ Didijust podcast \u2014 prefers AWS CloudFront MP4 (same URL as iOS\/Android REST).\n        var UPWELL_DID_PODCAST = {\n        title: \"Didijustbuymygrandmothershouse\",\n        poster: \"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/grandmothers-house-podcast.jpg\",\n        videoUrl: \"\",\n        spotifyEmbed: \"https:\\\/\\\/open.spotify.com\\\/embed\\\/show\\\/0U1Pn78J9vV3WGIGyLTX8H?utm_source=generator&theme=0\",\n        subscribeUrl: \"https:\\\/\\\/www.didijustbuymygrandmothershouse.store\",\n        listenUrl: \"https:\\\/\\\/open.spotify.com\\\/show\\\/0U1Pn78J9vV3WGIGyLTX8H\",\n        trial: \"7-day free trial\",\n        price: \"$9.99\\\/month\",\n        cdn: 'aws-cloudfront'\n    };\n\n    function upwellDidPodcastPromoHtml() {\n        var p = UPWELL_DID_PODCAST || {};\n        var media = '';\n        var kicker = p.videoUrl ? 'Streamed via AWS CloudFront' : 'Podcast video';\n        if (p.videoUrl) {\n            media = '<video controls playsinline preload=\"metadata\" poster=\"' + upwellHtmlEscape(p.poster || '') + '\" crossorigin=\"anonymous\">' +\n                '<source src=\"' + upwellHtmlEscape(p.videoUrl) + '\" type=\"video\/mp4\">' +\n                '<\/video>';\n        } else {\n            media = '<iframe title=\"Didijustbuymygrandmothershouse podcast\" src=\"' + upwellHtmlEscape(p.spotifyEmbed || '') + '\" ' +\n                'allow=\"autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture\" loading=\"lazy\"><\/iframe>';\n        }\n        return '<aside class=\"upwell-did-podcast\" id=\"upwellDidPodcastPromo\" data-upwell-did-podcast=\"1\">' +\n            '<p class=\"upwell-did-kicker\">' + upwellHtmlEscape(kicker) + '<\/p>' +\n            '<h3>\ud83c\udf99\ufe0f ' + upwellHtmlEscape(p.title || 'Didijustbuymygrandmothershouse') + '<\/h3>' +\n            '<p class=\"upwell-did-price\"><strong>' + upwellHtmlEscape(p.trial || '7-day free trial') + '<\/strong> \u00b7 then <strong>' + upwellHtmlEscape(p.price || '$9.99\/month') + '<\/strong><\/p>' +\n            '<div class=\"upwell-did-media\">' + media + '<\/div>' +\n            '<div class=\"upwell-did-actions\">' +\n                '<a class=\"upwell-did-subscribe\" id=\"upwellDidSubscribe\" href=\"' + upwellHtmlEscape(p.subscribeUrl || '#') + '\" target=\"_blank\" rel=\"noopener noreferrer\">Subscribe<\/a>' +\n                '<a class=\"upwell-did-listen\" href=\"' + upwellHtmlEscape(p.listenUrl || '#') + '\" target=\"_blank\" rel=\"noopener noreferrer\">Listen on Spotify<\/a>' +\n            '<\/div>' +\n        '<\/aside>';\n    }\n\n    \/** Compact Surfdonkey + Didijust cards under the 7-day forecast title *\/\n    function upwellForecastPodcastAdsHtml() {\n        var shop = (typeof UPWELL_SURFDONKEY_MERCH === 'object' && UPWELL_SURFDONKEY_MERCH.shop) ? UPWELL_SURFDONKEY_MERCH.shop : 'https:\/\/www.surfdonkey.net';\n        var hoodie = (typeof UPWELL_SURFDONKEY_MERCH === 'object' && UPWELL_SURFDONKEY_MERCH.hoodie) ? UPWELL_SURFDONKEY_MERCH.hoodie : '';\n        var tshirt = (typeof UPWELL_SURFDONKEY_MERCH === 'object' && UPWELL_SURFDONKEY_MERCH.tshirt) ? UPWELL_SURFDONKEY_MERCH.tshirt : '';\n        return '<div id=\"upwell-podcast-ads\" data-upwell-podcast-ads=\"1\" data-upwell-sd-merch=\"1\" style=\"display:grid;gap:12px;margin:16px 0 18px;\">' +\n            '<article data-upwell-surfdonkey=\"1\" style=\"display:flex;flex-direction:column;gap:12px;background:#0f172a;color:#fff;border-radius:14px;padding:14px;border:1px solid rgba(251,146,60,.35);\">' +\n                '<div style=\"display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;\">' +\n                    '<div><div style=\"font-size:11px;font-weight:800;letter-spacing:.08em;color:#fb923c;text-transform:uppercase;\">Fall Merch<\/div>' +\n                    '<div style=\"font-weight:800;font-size:16px;line-height:1.2;\">Surfdonkey Podcast<\/div><\/div>' +\n                    '<a id=\"upwellSurfdonkeySubscribe\" href=\"' + upwellHtmlEscape(shop) + '\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\" style=\"display:inline-block;padding:10px 16px;background:#fb923c;color:#111;border-radius:10px;text-decoration:none;font-weight:800;\">Shop<\/a>' +\n                '<\/div>' +\n                '<div style=\"display:grid;grid-template-columns:1fr 1fr;gap:10px;\">' +\n                    '<a href=\"' + upwellHtmlEscape(shop) + '\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\" style=\"display:block;background:#fff;border-radius:10px;overflow:hidden;text-decoration:none;color:#0f172a;\">' +\n                        '<img decoding=\"async\" src=\"' + upwellHtmlEscape(hoodie) + '\" alt=\"Surfdonkey Fall Hoodie\" width=\"200\" height=\"200\" loading=\"lazy\" style=\"width:100%;height:120px;object-fit:contain;background:#f8fafc;display:block;padding:8px;box-sizing:border-box;\">' +\n                        '<span style=\"display:block;padding:8px 10px 10px;font-size:13px;font-weight:800;color:#ea580c;\">Fall Hoodie \u2192<\/span>' +\n                    '<\/a>' +\n                    '<a href=\"' + upwellHtmlEscape(shop) + '\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\" style=\"display:block;background:#fff;border-radius:10px;overflow:hidden;text-decoration:none;color:#0f172a;\">' +\n                        '<img decoding=\"async\" src=\"' + upwellHtmlEscape(tshirt) + '\" alt=\"Surfdonkey Fall T-Shirt\" width=\"200\" height=\"200\" loading=\"lazy\" style=\"width:100%;height:120px;object-fit:contain;background:#f8fafc;display:block;padding:8px;box-sizing:border-box;\">' +\n                        '<span style=\"display:block;padding:8px 10px 10px;font-size:13px;font-weight:800;color:#ea580c;\">Fall T-Shirt \u2192<\/span>' +\n                    '<\/a>' +\n                '<\/div>' +\n            '<\/article><\/div>';\n    }\n\n    \/** Free home estate signup \u2014 shown on every surf spot forecast. Emails support@upwellsurf.com *\/\n    function upwellFreeHomeEstateHtml(spot) {\n        var spotName = (spot && typeof spot === 'string') ? spot : '';\n        var spotSafe = upwellHtmlEscape(spotName);\n        return '<div class=\"upwell-free-home-estate\" id=\"upwellFreeHomeEstate\">' +\n            '<h3>\ud83c\udfe0 Get Free Home Estate<\/h3>' +\n            '<p class=\"uhe-sub\">Sign up for free home \/ real estate info near this surf spot. We\\'ll email <strong>support@upwellsurf.com<\/strong>.<\/p>' +\n            (spotName ? '<span class=\"uhe-spot\">\ud83d\udccd ' + spotSafe + '<\/span>' : '') +\n            '<form id=\"upwellFreeHomeEstateForm\" onsubmit=\"return upwellSubmitFreeHomeEstate(event);\">' +\n                '<input type=\"hidden\" id=\"uheSpot\" value=\"' + spotSafe + '\">' +\n                '<div class=\"uhe-grid\">' +\n                    '<div class=\"uhe-field\"><label for=\"uheName\">Name<\/label>' +\n                        '<input type=\"text\" id=\"uheName\" name=\"name\" required autocomplete=\"name\" placeholder=\"Your full name\"><\/div>' +\n                    '<div class=\"uhe-field\"><label for=\"uhePhone\">Phone number<\/label>' +\n                        '<input type=\"tel\" id=\"uhePhone\" name=\"phone\" required autocomplete=\"tel\" placeholder=\"Phone number\"><\/div>' +\n                    '<div class=\"uhe-field\"><label for=\"uheLocation\">Location<\/label>' +\n                        '<input type=\"text\" id=\"uheLocation\" name=\"location\" required autocomplete=\"address-level2\" placeholder=\"City \/ region\" value=\"' + spotSafe + '\"><\/div>' +\n                    '<div class=\"uhe-field uhe-full\"><label for=\"uheAddress\">Address<\/label>' +\n                        '<input type=\"text\" id=\"uheAddress\" name=\"address\" required autocomplete=\"street-address\" placeholder=\"Street address\"><\/div>' +\n                '<\/div>' +\n                '<div class=\"uhe-actions\">' +\n                    '<button type=\"submit\" class=\"uhe-submit\">\u2709\ufe0f Sign Up \u2014 Email Support<\/button>' +\n                '<\/div>' +\n                '<p class=\"uhe-note\" id=\"uheStatus\">Sends your signup by email to support@upwellsurf.com.<\/p>' +\n            '<\/form>' +\n        '<\/div>';\n    }\n\n    function upwellSubmitFreeHomeEstate(ev) {\n        if (ev && ev.preventDefault) ev.preventDefault();\n        var name = (document.getElementById('uheName') && document.getElementById('uheName').value || '').trim();\n        var location = (document.getElementById('uheLocation') && document.getElementById('uheLocation').value || '').trim();\n        var address = (document.getElementById('uheAddress') && document.getElementById('uheAddress').value || '').trim();\n        var phone = (document.getElementById('uhePhone') && document.getElementById('uhePhone').value || '').trim();\n        var spot = (document.getElementById('uheSpot') && document.getElementById('uheSpot').value || '').trim();\n        var statusEl = document.getElementById('uheStatus');\n        var btn = document.querySelector('#upwellFreeHomeEstateForm .uhe-submit');\n        if (!name || !location || !address || !phone) {\n            alert('Please fill in name, location, address, and phone number.');\n            return false;\n        }\n        var ajaxUrl = (typeof UPWELL_AJAX !== 'undefined' && UPWELL_AJAX.ajax_url)\n            ? UPWELL_AJAX.ajax_url\n            : ((typeof upwell_ajax !== 'undefined' && upwell_ajax.ajax_url) ? upwell_ajax.ajax_url : '');\n        var nonce = (typeof UPWELL_AJAX !== 'undefined' && UPWELL_AJAX.nonce)\n            ? UPWELL_AJAX.nonce\n            : ((typeof upwell_ajax !== 'undefined' && upwell_ajax.nonce) ? upwell_ajax.nonce : '');\n        if (!ajaxUrl || !nonce) {\n            \/\/ Fallback: open mail client if AJAX is unavailable\n            var subject = encodeURIComponent('Free Home Estate Signup' + (spot ? ' \u2014 ' + spot : ''));\n            var body = encodeURIComponent(\n                'Free Home Estate Signup\\nSurf spot: ' + (spot || '\u2014') +\n                '\\nName: ' + name + '\\nLocation: ' + location +\n                '\\nAddress: ' + address + '\\nPhone: ' + phone + '\\n'\n            );\n            window.location.href = 'mailto:support@upwellsurf.com?subject=' + subject + '&body=' + body;\n            return false;\n        }\n        if (btn) { btn.disabled = true; btn.textContent = 'Sending\u2026'; }\n        if (statusEl) { statusEl.textContent = 'Sending signup to support@upwellsurf.com\u2026'; }\n        var fd = new FormData();\n        fd.append('action', 'upwell_free_home_estate');\n        fd.append('nonce', nonce);\n        fd.append('name', name);\n        fd.append('location', location);\n        fd.append('address', address);\n        fd.append('phone', phone);\n        fd.append('spot', spot);\n        fetch(ajaxUrl, { method: 'POST', body: fd, credentials: 'same-origin' })\n            .then(function (r) { return r.json(); })\n            .then(function (data) {\n                if (data && data.success) {\n                    if (statusEl) statusEl.textContent = (data.data && data.data.message) ? data.data.message : 'Thanks! Emailed to support@upwellsurf.com.';\n                    if (btn) { btn.disabled = false; btn.textContent = '\u2709\ufe0f Sign Up \u2014 Email Support'; }\n                    var form = document.getElementById('upwellFreeHomeEstateForm');\n                    if (form) form.reset();\n                    if (document.getElementById('uheLocation') && spot) document.getElementById('uheLocation').value = spot;\n                    if (document.getElementById('uheSpot')) document.getElementById('uheSpot').value = spot;\n                    alert((data.data && data.data.message) ? data.data.message : 'Thanks! Your signup was emailed to support@upwellsurf.com.');\n                } else {\n                    var err = (data && data.data) ? (typeof data.data === 'string' ? data.data : (data.data.message || 'Send failed')) : 'Send failed';\n                    if (statusEl) statusEl.textContent = err;\n                    if (btn) { btn.disabled = false; btn.textContent = '\u2709\ufe0f Sign Up \u2014 Email Support'; }\n                    alert(err);\n                }\n            })\n            .catch(function () {\n                if (statusEl) statusEl.textContent = 'Could not send. Please email support@upwellsurf.com.';\n                if (btn) { btn.disabled = false; btn.textContent = '\u2709\ufe0f Sign Up \u2014 Email Support'; }\n                alert('Could not send. Please email support@upwellsurf.com.');\n            });\n        return false;\n    }\n\n    function upwellIsNovaScotiaSpot(spot) {\n        var sel = document.getElementById('surfSpot');\n        if (sel && sel.selectedIndex >= 0) {\n            var opt = sel.options[sel.selectedIndex];\n            var group = opt && opt.parentElement;\n            if (group && group.label && String(group.label).indexOf('Nova Scotia') !== -1) return true;\n        }\n        var s = String(spot || '').toLowerCase();\n        var nsHints = ['lawrencetown', 'martinique', 'cow bay', 'halifax', 'seaforth', 'paradise cove', 'queensland', 'white point', 'summerside', 'cherry hill', 'conrads', 'hudsons', 'back beaches', 'terence bay', 'pennant', 'sambro', 'prospect', 'shad bay', 'moose', 'clarke', 'shubie'];\n        for (var i = 0; i < nsHints.length; i++) {\n            if (s.indexOf(nsHints[i]) !== -1) return true;\n        }\n        return false;\n    }\n\n    \/** Efficiency Nova Scotia signup \u2014 shown on Nova Scotia surf spot forecasts. *\/\n    function upwellEfficiencyNsHtml(spot) {\n        var spotName = (spot && typeof spot === 'string') ? spot : '';\n        var spotSafe = upwellHtmlEscape(spotName);\n        return '<div class=\"upwell-efficiency-ns\" id=\"upwellEfficiencyNs\">' +\n            '<h3>Efficiency Nova Scotia<\/h3>' +\n            '<p class=\"ens-sub\">Sign up for home energy rebates, assessments &amp; heat pump info. We email <strong>support@upwellsurf.com<\/strong>.<\/p>' +\n            (spotName ? '<span class=\"ens-spot\">NS Spot \u2014 ' + spotSafe + '<\/span>' : '') +\n            '<form id=\"upwellEfficiencyNsForm\" onsubmit=\"return upwellSubmitEfficiencyNs(event);\">' +\n                '<input type=\"hidden\" id=\"ensSpot\" value=\"' + spotSafe + '\">' +\n                '<div class=\"ens-grid\">' +\n                    '<div class=\"ens-field\"><label for=\"ensName\">Name<\/label>' +\n                        '<input type=\"text\" id=\"ensName\" name=\"name\" required autocomplete=\"name\" placeholder=\"Your full name\"><\/div>' +\n                    '<div class=\"ens-field\"><label for=\"ensPhone\">Phone number<\/label>' +\n                        '<input type=\"tel\" id=\"ensPhone\" name=\"phone\" required autocomplete=\"tel\" placeholder=\"Phone number\"><\/div>' +\n                    '<div class=\"ens-field\"><label for=\"ensLocation\">Location<\/label>' +\n                        '<input type=\"text\" id=\"ensLocation\" name=\"location\" required autocomplete=\"address-level2\" placeholder=\"City \/ region\" value=\"' + spotSafe + '\"><\/div>' +\n                    '<div class=\"ens-field ens-full\"><label for=\"ensAddress\">Address<\/label>' +\n                        '<input type=\"text\" id=\"ensAddress\" name=\"address\" required autocomplete=\"street-address\" placeholder=\"Street address\"><\/div>' +\n                '<\/div>' +\n                '<div class=\"ens-actions\">' +\n                    '<button type=\"submit\" class=\"ens-submit\">Sign Up \u2014 Email Support<\/button>' +\n                    '<a class=\"ens-link\" href=\"https:\/\/www.efficiencyns.ca\/\" target=\"_blank\" rel=\"noopener noreferrer\">Visit efficiencyns.ca<\/a>' +\n                '<\/div>' +\n                '<p class=\"ens-note\" id=\"ensStatus\">Sends your signup by email to support@upwellsurf.com.<\/p>' +\n            '<\/form>' +\n        '<\/div>';\n    }\n\n    function upwellSubmitEfficiencyNs(ev) {\n        if (ev && ev.preventDefault) ev.preventDefault();\n        var name = (document.getElementById('ensName') && document.getElementById('ensName').value || '').trim();\n        var location = (document.getElementById('ensLocation') && document.getElementById('ensLocation').value || '').trim();\n        var address = (document.getElementById('ensAddress') && document.getElementById('ensAddress').value || '').trim();\n        var phone = (document.getElementById('ensPhone') && document.getElementById('ensPhone').value || '').trim();\n        var spot = (document.getElementById('ensSpot') && document.getElementById('ensSpot').value || '').trim();\n        var statusEl = document.getElementById('ensStatus');\n        var btn = document.querySelector('#upwellEfficiencyNsForm .ens-submit');\n        if (!name || !location || !address || !phone) {\n            alert('Please fill in name, location, address, and phone number.');\n            return false;\n        }\n        var ajaxUrl = (typeof UPWELL_AJAX !== 'undefined' && UPWELL_AJAX.ajax_url)\n            ? UPWELL_AJAX.ajax_url\n            : ((typeof upwell_ajax !== 'undefined' && upwell_ajax.ajax_url) ? upwell_ajax.ajax_url : '');\n        var nonce = (typeof UPWELL_AJAX !== 'undefined' && UPWELL_AJAX.nonce)\n            ? UPWELL_AJAX.nonce\n            : ((typeof upwell_ajax !== 'undefined' && upwell_ajax.nonce) ? upwell_ajax.nonce : '');\n        if (!ajaxUrl || !nonce) {\n            var subject = encodeURIComponent('Efficiency Nova Scotia Signup' + (spot ? ' - ' + spot : ''));\n            var body = encodeURIComponent(\n                'Efficiency Nova Scotia Signup\\nSurf spot: ' + (spot || '-') +\n                '\\nName: ' + name + '\\nLocation: ' + location +\n                '\\nAddress: ' + address + '\\nPhone: ' + phone + '\\n'\n            );\n            window.location.href = 'mailto:support@upwellsurf.com?subject=' + subject + '&body=' + body;\n            return false;\n        }\n        if (btn) { btn.disabled = true; btn.textContent = 'Sending...'; }\n        if (statusEl) { statusEl.textContent = 'Sending signup to support@upwellsurf.com...'; }\n        var fd = new FormData();\n        fd.append('action', 'upwell_efficiency_ns');\n        fd.append('nonce', nonce);\n        fd.append('name', name);\n        fd.append('location', location);\n        fd.append('address', address);\n        fd.append('phone', phone);\n        fd.append('spot', spot);\n        fetch(ajaxUrl, { method: 'POST', body: fd, credentials: 'same-origin' })\n            .then(function (r) { return r.json(); })\n            .then(function (data) {\n                if (data && data.success) {\n                    var msg = (data.data && data.data.message) ? data.data.message : 'Thanks! Efficiency Nova Scotia signup emailed to support@upwellsurf.com.';\n                    if (statusEl) statusEl.textContent = msg;\n                    if (btn) { btn.disabled = false; btn.textContent = 'Sign Up \u2014 Email Support'; }\n                    var form = document.getElementById('upwellEfficiencyNsForm');\n                    if (form) form.reset();\n                    if (document.getElementById('ensLocation') && spot) document.getElementById('ensLocation').value = spot;\n                    if (document.getElementById('ensSpot')) document.getElementById('ensSpot').value = spot;\n                    alert(msg);\n                } else {\n                    var err = (data && data.data) ? (typeof data.data === 'string' ? data.data : (data.data.message || 'Send failed')) : 'Send failed';\n                    if (statusEl) statusEl.textContent = err;\n                    if (btn) { btn.disabled = false; btn.textContent = 'Sign Up \u2014 Email Support'; }\n                    alert(err);\n                }\n            })\n            .catch(function () {\n                if (statusEl) statusEl.textContent = 'Could not send. Please email support@upwellsurf.com.';\n                if (btn) { btn.disabled = false; btn.textContent = 'Sign Up \u2014 Email Support'; }\n                alert('Could not send. Please email support@upwellsurf.com.');\n            });\n        return false;\n    }\n\n    \/** Fixed real-estate promo between each day\u2019s forecast table and the rotating sponsor strip. *\/\n    function upwellRealEstateBetweenForecastHtml(spot) {\n        var spotName = (spot && typeof spot === 'string') ? spot : '';\n        var title = spotName ? (spotName + ' \u2014 Free Home Estate') : 'Get Free Home Estate';\n        var subtitle = 'Sign up with name, location, address &amp; phone \u2014 emailed to support@upwellsurf.com';\n        return '<div class=\"upwell-ad-divider\" style=\"background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 50%,#0ea5e9 100%);\">' +\n            '<div style=\"display:flex;align-items:center;gap:14px;\">' +\n                '<span style=\"font-size:30px;\">\ud83c\udfe0<\/span>' +\n                '<div class=\"ad-text\">' +\n                    '<h5>\ud83d\udce2 ' + upwellHtmlEscape(title) + '<\/h5>' +\n                    '<p>' + subtitle + '<\/p>' +\n                '<\/div>' +\n            '<\/div>' +\n            '<div class=\"ad-buttons\">' +\n                '<a href=\"#upwellFreeHomeEstate\" class=\"upwell-ad-btn\" style=\"background:#f59e0b;\" onclick=\"var el=document.getElementById(\\'upwellFreeHomeEstate\\'); if(el){el.scrollIntoView({behavior:\\'smooth\\',block:\\'center\\'});} return false;\">\u2709\ufe0f Sign Up Free<\/a>' +\n            '<\/div>' +\n        '<\/div>';\n    }\n\n    function upwellAdBtnAttrs(href) {\n        if (!href || typeof href !== 'string') return ' target=\"_blank\" rel=\"noopener noreferrer\"';\n        var h = href.toLowerCase();\n        if (h.indexOf('mailto:') === 0 || h.indexOf('tel:') === 0) return '';\n        return ' target=\"_blank\" rel=\"noopener noreferrer\"';\n    }\n\n    function upwellHtmlEscape(value) {\n        return String(value || '')\n            .replace(\/&\/g, '&amp;')\n            .replace(\/<\/g, '&lt;')\n            .replace(\/>\/g, '&gt;')\n            .replace(\/\"\/g, '&quot;')\n            .replace(\/'\/g, '&#39;');\n    }\n\n    function upwellAdHtml(index) {\n        var ad = upwellAds[index % upwellAds.length];\n        var btns = '';\n        for (var i = 0; i < ad.btns.length; i++) {\n            btns += '<a href=\"' + ad.btns[i].href + '\"' + upwellAdBtnAttrs(ad.btns[i].href) + ' class=\"upwell-ad-btn\" style=\"background:' + ad.btns[i].bg + ';\"' +\n                (ad.merch ? ' data-upwell-surfdonkey=\"1\"' : '') + '>' + ad.btns[i].label + '<\/a>';\n        }\n        if (ad.merch && typeof UPWELL_SURFDONKEY_MERCH === 'object') {\n            var shop = UPWELL_SURFDONKEY_MERCH.shop || 'https:\/\/www.surfdonkey.net';\n            return '<div class=\"upwell-ad-divider upwell-sd-forecast-ad\" data-upwell-surfdonkey=\"1\">' +\n                '<div class=\"ad-text\">' +\n                    '<h5 style=\"margin:0 0 4px;color:#fff;\">Surfdonkey Podcast<\/h5>' +\n                    '<p style=\"margin:0;color:#fdba74;\">Fall hoodie &amp; tee \u2014 tap a photo to shop<\/p>' +\n                '<\/div>' +\n                '<div class=\"upwell-sd-merch-row\">' +\n                    '<a href=\"' + shop + '\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\">' +\n                        '<img decoding=\"async\" src=\"' + upwellHtmlEscape(UPWELL_SURFDONKEY_MERCH.hoodie || '') + '\" alt=\"Surfdonkey Fall Hoodie\" loading=\"lazy\">' +\n                        '<span>Fall Hoodie \u2192<\/span>' +\n                    '<\/a>' +\n                    '<a href=\"' + shop + '\" target=\"_blank\" rel=\"noopener noreferrer\" data-upwell-surfdonkey=\"1\">' +\n                        '<img decoding=\"async\" src=\"' + upwellHtmlEscape(UPWELL_SURFDONKEY_MERCH.tshirt || '') + '\" alt=\"Surfdonkey Fall T-Shirt\" loading=\"lazy\">' +\n                        '<span>Fall T-Shirt \u2192<\/span>' +\n                    '<\/a>' +\n                '<\/div>' +\n                '<div class=\"ad-buttons\">' +\n                    '<a href=\"' + shop + '\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"upwell-ad-btn\" style=\"background:#ea580c;\" data-upwell-surfdonkey=\"1\">Shop Surfdonkey<\/a>' +\n                '<\/div>' +\n            '<\/div>';\n        }\n        return '<div class=\"upwell-ad-divider\">' +\n            '<div style=\"display:flex;align-items:center;gap:14px;\">' +\n                '<span style=\"font-size:30px;\">' + ad.icon + '<\/span>' +\n                '<div class=\"ad-text\">' +\n                    '<h5>\ud83d\udce2 Sponsored &mdash; ' + ad.title + '<\/h5>' +\n                    '<p>' + ad.sub + '<\/p>' +\n                '<\/div>' +\n            '<\/div>' +\n            '<div class=\"ad-buttons\">' + btns + '<\/div>' +\n        '<\/div>';\n    }\n\n    \/\/ \u2500\u2500\u2500 Hourly data generators \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    var upwellSpotProfiles = {\n        'Lawrencetown Beach': { baseWave: [1,2], waveRange: 5, windBase: 'Offshore',     temp: '14\u00b0C', period: '10-12s', waterTemp: 14, waterTempFixed: true },\n        'Martinique Beach':   { baseWave: [1,2], waveRange: 4, windBase: 'Variable',     temp: '14\u00b0C', period: '9-11s',  waterTemp: 14, waterTempFixed: true },\n        'Pipeline':           { baseWave: [8,10],waveRange: 8, windBase: 'Trade winds',  temp: '26\u00b0C', period: '14-18s', waterTemp: 24 },\n        'Malibu':             { baseWave: [2,3], waveRange: 4, windBase: 'Offshore AM',  temp: '18\u00b0C', period: '10-14s', waterTemp: 17 },\n        'Bells Beach':        { baseWave: [4,5], waveRange: 5, windBase: 'SW swell',     temp: '16\u00b0C', period: '12-15s', waterTemp: 14 },\n        'Teahupo\\'o':         { baseWave: [6,8], waveRange: 8, windBase: 'Light offshore',temp:'28\u00b0C', period: '15-20s', waterTemp: 27 },\n        'Nazare':             { baseWave: [5,8], waveRange: 12,windBase: 'Variable',     temp: '17\u00b0C', period: '14-18s', waterTemp: 15 },\n        'Witches Rock':       { baseWave: [3,5], waveRange: 5, windBase: 'Offshore',     temp: '28\u00b0C', period: '12-15s', waterTemp: 26 },\n        'Uluwatu':            { baseWave: [3,5], waveRange: 4, windBase: 'Light offshore',temp:'29\u00b0C', period: '10-13s', waterTemp: 28 },\n        'Jeffreys Bay':       { baseWave: [4,6], waveRange: 5, windBase: 'SW offshore',  temp: '18\u00b0C', period: '13-16s', waterTemp: 16 },\n        'Puerto Escondido':   { baseWave: [5,7], waveRange: 6, windBase: 'Offshore AM',  temp: '30\u00b0C', period: '14-18s', waterTemp: 28 },\n        'Sayulita':           { baseWave: [2,4], waveRange: 4, windBase: 'Offshore AM',  temp: '29\u00b0C', period: '11-15s', waterTemp: 26 },\n        'Cloudbreak':         { baseWave: [5,8], waveRange: 8, windBase: 'SE trade',     temp: '29\u00b0C', period: '14-18s', waterTemp: 27 }\n    };\n\n    var upwellWindOptions = ['Light offshore','Moderate offshore','Strong offshore','Cross-shore','Variable','Onshore','Light onshore','Calm'];\n    var upwellRatingMap   = ['Poor','Fair','Fair','Good','Good','Good','Excellent','Excellent','Excellent','Good'];\n    var upwellRatingClass = { 'Excellent':'rating-excellent', 'Good':'rating-good', 'Fair':'rating-fair', 'Poor':'rating-poor' };\n    var upwellWeatherIcons = ['\u2600\ufe0f','\u26c5','\ud83c\udf24\ufe0f','\ud83c\udf25\ufe0f','\ud83c\udf26\ufe0f','\ud83c\udf27\ufe0f','\u26c8\ufe0f','\ud83c\udf0a','\ud83c\udf2c\ufe0f'];\n    var upwellDayNames = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];\n\n    function upwellRandInt(min, max) {\n        return Math.floor(Math.random() * (max - min + 1)) + min;\n    }\n\n    function upwellGenerateHours(profile, dayOffset) {\n        return upwellBuildHourRows(profile, dayOffset, [6, 9, 12, 15, 18, 21]);\n    }\n\n    \/** Pro: full 24-hour \u00d7 1-hour rows for today. *\/\n    function upwellGenerateHourly24(profile, dayOffset) {\n        var hours = [];\n        for (var h = 0; h < 24; h++) hours.push(h);\n        return upwellBuildHourRows(profile, dayOffset || 0, hours);\n    }\n\n    function upwellBuildHourRows(profile, dayOffset, hours) {\n        var rows = [];\n        var base = profile.baseWave || [2, 4];\n        var range = profile.waveRange || 3;\n        var multiplier = 0.7 + (dayOffset * 0.06) + (Math.random() * 0.3);\n        var baseWaterTemp = profile.waterTemp || 18;\n\n        for (var h = 0; h < hours.length; h++) {\n            var hr = hours[h];\n            var hourFactor = 1 + 0.3 * Math.sin(Math.PI * (hr - 6) \/ 12);\n            var wMin = Math.max(1, Math.round((base[0] + upwellRandInt(0, range * 0.4)) * multiplier * hourFactor));\n            var wMax = wMin + upwellRandInt(1, 3);\n            var period = upwellRandInt(8, 18);\n            var wind = upwellWindOptions[upwellRandInt(0, upwellWindOptions.length - 1)];\n            var windSpeed = upwellRandInt(5, 25);\n            var ratingIdx = Math.min(9, Math.round(wMax * multiplier \/ 2));\n            var rating = upwellRatingMap[ratingIdx];\n            var wx = upwellWeatherIcons[upwellRandInt(0, upwellWeatherIcons.length - 1)];\n            var ampm = hr < 12 ? 'AM' : 'PM';\n            var hrDisplay = hr === 0 ? 12 : (hr <= 12 ? hr : hr - 12);\n            var waterTempVariation = (dayOffset * 0.1) + (hr >= 12 && hr <= 15 ? 0.5 : 0);\n            var waterTempVal = profile.waterTempFixed\n                ? String(baseWaterTemp)\n                : (baseWaterTemp + waterTempVariation).toFixed(1);\n            rows.push({\n                hour: hr,\n                time: hrDisplay + ':00 ' + ampm,\n                waves: wMin + '-' + wMax + ' ft',\n                period: period + 's',\n                wind: wind,\n                windSpeed: windSpeed + ' km\/h',\n                wx: wx,\n                rating: rating,\n                ratingClass: upwellRatingClass[rating],\n                waterTemp: waterTempVal + '\u00b0C'\n            });\n        }\n        return rows;\n    }\n\n    function upwellPro24TableHtml(spot, rows) {\n        var nowH = new Date().getHours();\n        var html = '<div id=\"upwellPro24Panel\" style=\"background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 55%,#db2777 100%);border-radius:12px;padding:18px;color:#fff;box-shadow:0 8px 24px rgba(79,70,229,0.25);\">' +\n            '<div style=\"display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px;\">' +\n            '<h3 style=\"margin:0;font-size:20px;\">&#11088; 24-Hour Pro \u2014 Hour by Hour<\/h3>' +\n            '<span style=\"font-size:13px;opacity:0.95;\">' + upwellHtmlEscape(spot) + ' \u00b7 today<\/span><\/div>' +\n            '<p style=\"margin:0 0 12px;font-size:13px;opacity:0.9;\">Logged in \u00b7 24 hours \u00d7 1-hour forecast<\/p>' +\n            '<div style=\"overflow-x:auto;background:rgba(255,255,255,0.12);border-radius:10px;padding:8px;\">' +\n            '<table class=\"upwell-hourly-table\" style=\"width:100%;min-width:720px;background:#fff;color:#111;border-radius:8px;overflow:hidden;\">' +\n            '<thead><tr>' +\n            '<th>\u23f0 Time<\/th><th>\ud83c\udf0a Waves<\/th><th>\u23f1 Period<\/th><th>\ud83d\udca8 Wind<\/th><th>\ud83c\udf2c\ufe0f Speed<\/th><th>\ud83c\udf21\ufe0f Water<\/th><th>\ud83c\udf24 Wx<\/th><th>\u2b50 Rating<\/th>' +\n            '<\/tr><\/thead><tbody>';\n        for (var i = 0; i < rows.length; i++) {\n            var r = rows[i];\n            var isNow = r.hour === nowH;\n            html += '<tr' + (isNow ? ' style=\"background:#dbeafe;\"' : '') + '>' +\n                '<td class=\"time-col\">' + r.time + (isNow ? ' <strong>NOW<\/strong>' : '') + '<\/td>' +\n                '<td>' + r.waves + '<\/td>' +\n                '<td>' + r.period + '<\/td>' +\n                '<td>' + r.wind + '<\/td>' +\n                '<td>' + r.windSpeed + '<\/td>' +\n                '<td style=\"color:#0ea5e9;font-weight:bold;\">' + r.waterTemp + '<\/td>' +\n                '<td>' + r.wx + '<\/td>' +\n                '<td class=\"' + r.ratingClass + '\">' + r.rating + '<\/td><\/tr>';\n        }\n        html += '<\/tbody><\/table><\/div><\/div>';\n        return html;\n    }\n\n    function upwellHourlyTableHtml(rows) {\n        var html = '<div class=\"upwell-hourly-grid open\"><table class=\"upwell-hourly-table\">' +\n            '<thead><tr>' +\n            '<th>\u23f0 Time<\/th>' +\n            '<th>\ud83c\udf0a Wave Height<\/th>' +\n            '<th>\u23f1 Period<\/th>' +\n            '<th>\ud83d\udca8 Wind<\/th>' +\n            '<th>\ud83c\udf2c\ufe0f Wind Speed<\/th>' +\n            '<th>\ud83c\udf24 Weather<\/th>' +\n            '<th>\u2b50 Rating<\/th>' +\n            '<\/tr><\/thead><tbody>';\n        for (var i = 0; i < rows.length; i++) {\n            var r = rows[i];\n            html += '<tr>' +\n                '<td class=\"time-col\">' + r.time + '<\/td>' +\n                '<td>' + r.waves + '<\/td>' +\n                '<td>' + r.period + '<\/td>' +\n                '<td>' + r.wind + '<\/td>' +\n                '<td>' + r.windSpeed + '<\/td>' +\n                '<td>' + r.wx + '<\/td>' +\n                '<td class=\"' + r.ratingClass + '\">' + r.rating + '<\/td>' +\n            '<\/tr>';\n        }\n        html += '<\/tbody><\/table><\/div>';\n        return html;\n    }\n\n    function upwellToggleDay(id) {\n        var grid = document.getElementById('grid-' + id);\n        var header = document.getElementById('hdr-' + id);\n        if (grid.classList.contains('open')) {\n            grid.classList.remove('open');\n            header.classList.remove('open');\n        } else {\n            grid.classList.add('open');\n            header.classList.add('open');\n        }\n    }\n\n\n    \/\/ \u2500\u2500\u2500 Ski hill coordinates + Open-Meteo 7-day forecast \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    var UPWELL_SKI_COORDS = {\"Whistler Blackcomb\":{\"lat\":50.1167,\"lon\":-122.95,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Banff Sunshine\":{\"lat\":51.0833,\"lon\":-115.7833,\"location\":\"Alberta, Canada\",\"country\":\"Canada\"},\"Lake Louise\":{\"lat\":51.4167,\"lon\":-116.1833,\"location\":\"Alberta, Canada\",\"country\":\"Canada\"},\"Mount Norquay\":{\"lat\":51.2167,\"lon\":-115.5833,\"location\":\"Alberta, Canada\",\"country\":\"Canada\"},\"Big White\":{\"lat\":49.7167,\"lon\":-119.0833,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Sun Peaks\":{\"lat\":50.8833,\"lon\":-119.8833,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Revelstoke\":{\"lat\":50.9667,\"lon\":-118.2,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Kicking Horse\":{\"lat\":51.2833,\"lon\":-116.9833,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Fernie Alpine Resort\":{\"lat\":49.5167,\"lon\":-115.0833,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Red Mountain\":{\"lat\":49.1,\"lon\":-117.8167,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Panorama\":{\"lat\":50.45,\"lon\":-116.2333,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Silver Star\":{\"lat\":50.3667,\"lon\":-119.05,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Apex Mountain\":{\"lat\":49.3833,\"lon\":-119.9,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Cypress Mountain\":{\"lat\":49.3833,\"lon\":-123.2,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Grouse Mountain\":{\"lat\":49.3833,\"lon\":-123.0833,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Mount Seymour\":{\"lat\":49.3667,\"lon\":-122.95,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Mont Tremblant\":{\"lat\":46.2167,\"lon\":-74.5833,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Blue Mountain\":{\"lat\":44.5,\"lon\":-80.3333,\"location\":\"Ontario, Canada\",\"country\":\"Canada\"},\"Mount St. Louis Moonstone\":{\"lat\":44.6167,\"lon\":-79.7333,\"location\":\"Ontario, Canada\",\"country\":\"Canada\"},\"Horseshoe Resort\":{\"lat\":44.5167,\"lon\":-79.7333,\"location\":\"Ontario, Canada\",\"country\":\"Canada\"},\"Marmot Basin\":{\"lat\":52.8,\"lon\":-118.0833,\"location\":\"Alberta, Canada\",\"country\":\"Canada\"},\"Nakiska\":{\"lat\":50.9333,\"lon\":-115.15,\"location\":\"Alberta, Canada\",\"country\":\"Canada\"},\"Stoneham\":{\"lat\":47.0167,\"lon\":-71.3833,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Le Massif\":{\"lat\":47.2833,\"lon\":-70.6,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Mont-Sainte-Anne\":{\"lat\":47.0833,\"lon\":-70.9167,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Ski Wentworth\":{\"lat\":45.6167,\"lon\":-63.55,\"location\":\"Wentworth Valley, Nova Scotia, Canada\",\"country\":\"Canada\"},\"Ski Martock\":{\"lat\":45.0167,\"lon\":-64.0167,\"location\":\"Windsor Forks, Nova Scotia, Canada\",\"country\":\"Canada\"},\"Ski Ben Eoin\":{\"lat\":45.9167,\"lon\":-60.2833,\"location\":\"Ben Eoin, Nova Scotia, Canada\",\"country\":\"Canada\"},\"Ski Cape Smokey\":{\"lat\":46.2333,\"lon\":-60.4,\"location\":\"Ingonish Beach, Nova Scotia, Canada\",\"country\":\"Canada\"},\"Vail\":{\"lat\":39.6403,\"lon\":-106.3742,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Aspen Snowmass\":{\"lat\":39.1911,\"lon\":-106.8175,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Breckenridge\":{\"lat\":39.4817,\"lon\":-106.0383,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Keystone\":{\"lat\":39.5792,\"lon\":-105.9347,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Copper Mountain\":{\"lat\":39.5022,\"lon\":-106.1497,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Steamboat\":{\"lat\":40.4547,\"lon\":-106.8047,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Telluride\":{\"lat\":37.9375,\"lon\":-107.8125,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Winter Park\":{\"lat\":39.8867,\"lon\":-105.7625,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Beaver Creek\":{\"lat\":39.6042,\"lon\":-106.5167,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Crested Butte\":{\"lat\":38.8997,\"lon\":-106.9658,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Arapahoe Basin\":{\"lat\":39.6425,\"lon\":-105.8717,\"location\":\"Colorado, USA\",\"country\":\"USA\"},\"Park City\":{\"lat\":40.6461,\"lon\":-111.4981,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Deer Valley\":{\"lat\":40.6375,\"lon\":-111.4708,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Alta\":{\"lat\":40.5883,\"lon\":-111.6378,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Snowbird\":{\"lat\":40.5833,\"lon\":-111.6542,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Brighton\":{\"lat\":40.6,\"lon\":-111.5833,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Solitude\":{\"lat\":40.6208,\"lon\":-111.5917,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Jackson Hole\":{\"lat\":43.5875,\"lon\":-110.8278,\"location\":\"Wyoming, USA\",\"country\":\"USA\"},\"Big Sky\":{\"lat\":45.2833,\"lon\":-111.4,\"location\":\"Montana, USA\",\"country\":\"USA\"},\"Sun Valley\":{\"lat\":43.6803,\"lon\":-114.3514,\"location\":\"Idaho, USA\",\"country\":\"USA\"},\"Mammoth Mountain\":{\"lat\":37.6306,\"lon\":-119.0325,\"location\":\"California, USA\",\"country\":\"USA\"},\"Squaw Valley\":{\"lat\":39.1967,\"lon\":-120.2403,\"location\":\"California, USA\",\"country\":\"USA\"},\"Heavenly\":{\"lat\":38.9353,\"lon\":-119.9392,\"location\":\"California, USA\",\"country\":\"USA\"},\"Northstar\":{\"lat\":39.2653,\"lon\":-120.1203,\"location\":\"California, USA\",\"country\":\"USA\"},\"Kirkwood\":{\"lat\":38.7,\"lon\":-120.0667,\"location\":\"California, USA\",\"country\":\"USA\"},\"Mount Bachelor\":{\"lat\":43.9792,\"lon\":-121.6889,\"location\":\"Oregon, USA\",\"country\":\"USA\"},\"Mount Hood Meadows\":{\"lat\":45.3333,\"lon\":-121.6667,\"location\":\"Oregon, USA\",\"country\":\"USA\"},\"Stowe\":{\"lat\":44.4653,\"lon\":-72.7025,\"location\":\"Vermont, USA\",\"country\":\"USA\"},\"Killington\":{\"lat\":43.6167,\"lon\":-72.7833,\"location\":\"Vermont, USA\",\"country\":\"USA\"},\"Sugarloaf\":{\"lat\":45.0333,\"lon\":-70.3167,\"location\":\"Maine, USA\",\"country\":\"USA\"},\"Sunday River\":{\"lat\":44.4667,\"lon\":-70.85,\"location\":\"Maine, USA\",\"country\":\"USA\"},\"Mount Snow\":{\"lat\":42.9667,\"lon\":-72.9167,\"location\":\"Vermont, USA\",\"country\":\"USA\"},\"Okemo\":{\"lat\":43.4,\"lon\":-72.7167,\"location\":\"Vermont, USA\",\"country\":\"USA\"},\"Stratton\":{\"lat\":43.1167,\"lon\":-72.9167,\"location\":\"Vermont, USA\",\"country\":\"USA\"},\"Taos Ski Valley\":{\"lat\":36.5833,\"lon\":-105.45,\"location\":\"New Mexico, USA\",\"country\":\"USA\"},\"Alpine Meadows\":{\"lat\":39.1667,\"lon\":-120.2333,\"location\":\"California, USA\",\"country\":\"USA\"},\"Chamonix\":{\"lat\":45.9236,\"lon\":6.8694,\"location\":\"France\",\"country\":\"France\"},\"Val d'Is\u00e8re\":{\"lat\":45.45,\"lon\":6.9833,\"location\":\"France\",\"country\":\"France\"},\"Tignes\":{\"lat\":45.4667,\"lon\":6.9167,\"location\":\"France\",\"country\":\"France\"},\"Courchevel\":{\"lat\":45.4167,\"lon\":6.6333,\"location\":\"France\",\"country\":\"France\"},\"M\u00e9ribel\":{\"lat\":45.4,\"lon\":6.5667,\"location\":\"France\",\"country\":\"France\"},\"Les Trois Vall\u00e9es\":{\"lat\":45.4167,\"lon\":6.6333,\"location\":\"France\",\"country\":\"France\"},\"La Plagne\":{\"lat\":45.5,\"lon\":6.6833,\"location\":\"France\",\"country\":\"France\"},\"Les Arcs\":{\"lat\":45.5833,\"lon\":6.7833,\"location\":\"France\",\"country\":\"France\"},\"Alpe d'Huez\":{\"lat\":45.0833,\"lon\":6.0667,\"location\":\"France\",\"country\":\"France\"},\"Val Thorens\":{\"lat\":45.3,\"lon\":6.5833,\"location\":\"France\",\"country\":\"France\"},\"Les Deux Alpes\":{\"lat\":45.0167,\"lon\":6.1167,\"location\":\"France\",\"country\":\"France\"},\"Avoriaz\":{\"lat\":46.2,\"lon\":6.7667,\"location\":\"France\",\"country\":\"France\"},\"Zermatt\":{\"lat\":46.0206,\"lon\":7.7492,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Verbier\":{\"lat\":46.1,\"lon\":7.2167,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"St. Moritz\":{\"lat\":46.4906,\"lon\":9.8356,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Davos\":{\"lat\":46.8,\"lon\":9.8333,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Grindelwald\":{\"lat\":46.6242,\"lon\":8.0344,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Crans-Montana\":{\"lat\":46.3167,\"lon\":7.4833,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Gstaad\":{\"lat\":46.4708,\"lon\":7.2861,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Saas-Fee\":{\"lat\":46.1083,\"lon\":7.9278,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"St. Anton\":{\"lat\":47.1333,\"lon\":10.2667,\"location\":\"Austria\",\"country\":\"Austria\"},\"Innsbruck\":{\"lat\":47.2692,\"lon\":11.4042,\"location\":\"Austria\",\"country\":\"Austria\"},\"Kitzb\u00fchel\":{\"lat\":47.45,\"lon\":12.3833,\"location\":\"Austria\",\"country\":\"Austria\"},\"Ischgl\":{\"lat\":47.0167,\"lon\":10.2833,\"location\":\"Austria\",\"country\":\"Austria\"},\"Mayrhofen\":{\"lat\":47.1667,\"lon\":11.8667,\"location\":\"Austria\",\"country\":\"Austria\"},\"S\u00f6lden\":{\"lat\":46.9667,\"lon\":11.0,\"location\":\"Austria\",\"country\":\"Austria\"},\"Lech\":{\"lat\":47.2,\"lon\":10.1333,\"location\":\"Austria\",\"country\":\"Austria\"},\"Z\u00fcrs\":{\"lat\":47.1833,\"lon\":10.15,\"location\":\"Austria\",\"country\":\"Austria\"},\"Cortina d'Ampezzo\":{\"lat\":46.5369,\"lon\":12.1356,\"location\":\"Italy\",\"country\":\"Italy\"},\"Val Gardena\":{\"lat\":46.5667,\"lon\":11.7167,\"location\":\"Italy\",\"country\":\"Italy\"},\"Madonna di Campiglio\":{\"lat\":46.2333,\"lon\":10.8333,\"location\":\"Italy\",\"country\":\"Italy\"},\"Bormio\":{\"lat\":46.4667,\"lon\":10.3667,\"location\":\"Italy\",\"country\":\"Italy\"},\"Livigno\":{\"lat\":46.5333,\"lon\":10.1333,\"location\":\"Italy\",\"country\":\"Italy\"},\"Cervinia\":{\"lat\":45.9333,\"lon\":7.6167,\"location\":\"Italy\",\"country\":\"Italy\"},\"Courmayeur\":{\"lat\":45.7833,\"lon\":6.9667,\"location\":\"Italy\",\"country\":\"Italy\"},\"Sestriere\":{\"lat\":44.95,\"lon\":6.8833,\"location\":\"Italy\",\"country\":\"Italy\"},\"Andorra\":{\"lat\":42.5667,\"lon\":1.6,\"location\":\"Andorra\",\"country\":\"Andorra\"},\"Grandvalira\":{\"lat\":42.5167,\"lon\":1.7,\"location\":\"Andorra\",\"country\":\"Andorra\"},\"Sierra Nevada\":{\"lat\":37.1,\"lon\":-3.4,\"location\":\"Spain\",\"country\":\"Spain\"},\"Baqueira-Beret\":{\"lat\":42.7,\"lon\":0.9333,\"location\":\"Spain\",\"country\":\"Spain\"},\"Formigal\":{\"lat\":42.7667,\"lon\":-0.3833,\"location\":\"Spain\",\"country\":\"Spain\"},\"Flaine\":{\"lat\":46.0,\"lon\":6.7,\"location\":\"France\",\"country\":\"France\"},\"Les Menuires\":{\"lat\":45.3167,\"lon\":6.5333,\"location\":\"France\",\"country\":\"France\"},\"La Rosi\u00e8re\":{\"lat\":45.65,\"lon\":6.8833,\"location\":\"France\",\"country\":\"France\"},\"Serre Chevalier\":{\"lat\":44.95,\"lon\":6.5667,\"location\":\"France\",\"country\":\"France\"},\"Les Gets\":{\"lat\":46.1667,\"lon\":6.6667,\"location\":\"France\",\"country\":\"France\"},\"Morzine\":{\"lat\":46.1833,\"lon\":6.7167,\"location\":\"France\",\"country\":\"France\"},\"Valmorel\":{\"lat\":45.45,\"lon\":6.4333,\"location\":\"France\",\"country\":\"France\"},\"Les Contamines\":{\"lat\":45.8167,\"lon\":6.7333,\"location\":\"France\",\"country\":\"France\"},\"Wengen\":{\"lat\":46.6083,\"lon\":7.9208,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"M\u00fcrren\":{\"lat\":46.5583,\"lon\":7.8917,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Klosters\":{\"lat\":46.8833,\"lon\":9.8833,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Arosa\":{\"lat\":46.7833,\"lon\":9.6833,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Lenzerheide\":{\"lat\":46.7167,\"lon\":9.5667,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Engelberg\":{\"lat\":46.8167,\"lon\":8.4,\"location\":\"Switzerland\",\"country\":\"Switzerland\"},\"Obergurgl\":{\"lat\":46.8667,\"lon\":11.0167,\"location\":\"Austria\",\"country\":\"Austria\"},\"Hintertux\":{\"lat\":47.0833,\"lon\":11.6667,\"location\":\"Austria\",\"country\":\"Austria\"},\"Kaprun\":{\"lat\":47.2667,\"lon\":12.75,\"location\":\"Austria\",\"country\":\"Austria\"},\"Bad Gastein\":{\"lat\":47.1167,\"lon\":13.1333,\"location\":\"Austria\",\"country\":\"Austria\"},\"Schladming\":{\"lat\":47.4,\"lon\":13.6833,\"location\":\"Austria\",\"country\":\"Austria\"},\"Saalbach\":{\"lat\":47.3833,\"lon\":12.6333,\"location\":\"Austria\",\"country\":\"Austria\"},\"Zell am See\":{\"lat\":47.3167,\"lon\":12.8,\"location\":\"Austria\",\"country\":\"Austria\"},\"Selva di Val Gardena\":{\"lat\":46.55,\"lon\":11.7667,\"location\":\"Italy\",\"country\":\"Italy\"},\"Alta Badia\":{\"lat\":46.6,\"lon\":11.9,\"location\":\"Italy\",\"country\":\"Italy\"},\"Passo Tonale\":{\"lat\":46.2667,\"lon\":10.5833,\"location\":\"Italy\",\"country\":\"Italy\"},\"Arabba\":{\"lat\":46.5,\"lon\":11.8667,\"location\":\"Italy\",\"country\":\"Italy\"},\"Garmisch-Partenkirchen\":{\"lat\":47.5,\"lon\":11.1,\"location\":\"Germany\",\"country\":\"Germany\"},\"Oberstdorf\":{\"lat\":47.4167,\"lon\":10.2833,\"location\":\"Germany\",\"country\":\"Germany\"},\"Zugspitze\":{\"lat\":47.4211,\"lon\":10.9853,\"location\":\"Germany\",\"country\":\"Germany\"},\"Hemsedal\":{\"lat\":60.8667,\"lon\":8.5667,\"location\":\"Norway\",\"country\":\"Norway\"},\"Trysil\":{\"lat\":61.3167,\"lon\":12.2667,\"location\":\"Norway\",\"country\":\"Norway\"},\"Geilo\":{\"lat\":60.5333,\"lon\":8.2167,\"location\":\"Norway\",\"country\":\"Norway\"},\"\u00c5re\":{\"lat\":63.4,\"lon\":13.0833,\"location\":\"Sweden\",\"country\":\"Sweden\"},\"S\u00e4len\":{\"lat\":61.15,\"lon\":13.2333,\"location\":\"Sweden\",\"country\":\"Sweden\"},\"Vemdalen\":{\"lat\":62.45,\"lon\":13.8667,\"location\":\"Sweden\",\"country\":\"Sweden\"},\"Levi\":{\"lat\":67.8,\"lon\":24.8,\"location\":\"Finland\",\"country\":\"Finland\"},\"Ruka\":{\"lat\":66.1667,\"lon\":29.1333,\"location\":\"Finland\",\"country\":\"Finland\"},\"Bansko\":{\"lat\":41.7667,\"lon\":23.4833,\"location\":\"Bulgaria\",\"country\":\"Bulgaria\"},\"Borovets\":{\"lat\":42.2667,\"lon\":23.6,\"location\":\"Bulgaria\",\"country\":\"Bulgaria\"},\"Poiana Bra\u0219ov\":{\"lat\":45.5167,\"lon\":25.5667,\"location\":\"Romania\",\"country\":\"Romania\"},\"Kranjska Gora\":{\"lat\":46.4833,\"lon\":13.7833,\"location\":\"Slovenia\",\"country\":\"Slovenia\"},\"\u0160pindler\u016fv Ml\u00fdn\":{\"lat\":50.7333,\"lon\":15.6167,\"location\":\"Czech Republic\",\"country\":\"Czech Republic\"},\"Sundance\":{\"lat\":40.3933,\"lon\":-111.5883,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Brian Head\":{\"lat\":37.6917,\"lon\":-112.8497,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Beaver Mountain\":{\"lat\":41.9667,\"lon\":-111.55,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Powder Mountain\":{\"lat\":41.3667,\"lon\":-111.7833,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Snowbasin\":{\"lat\":41.2167,\"lon\":-111.8667,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Cherry Peak\":{\"lat\":41.9333,\"lon\":-111.75,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Eagle Point\":{\"lat\":38.3167,\"lon\":-112.3833,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Nordic Valley\":{\"lat\":41.3167,\"lon\":-111.85,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Woodward Park City\":{\"lat\":40.6833,\"lon\":-111.55,\"location\":\"Utah, USA\",\"country\":\"USA\"},\"Portillo\":{\"lat\":-32.8333,\"lon\":-70.1167,\"location\":\"Chile\",\"country\":\"Chile\"},\"Valle Nevado\":{\"lat\":-33.35,\"lon\":-70.25,\"location\":\"Chile\",\"country\":\"Chile\"},\"La Parva\":{\"lat\":-33.3333,\"lon\":-70.2833,\"location\":\"Chile\",\"country\":\"Chile\"},\"El Colorado\":{\"lat\":-33.35,\"lon\":-70.3,\"location\":\"Chile\",\"country\":\"Chile\"},\"Farellones\":{\"lat\":-33.35,\"lon\":-70.3167,\"location\":\"Chile\",\"country\":\"Chile\"},\"Corralco\":{\"lat\":-38.4167,\"lon\":-71.55,\"location\":\"Chile\",\"country\":\"Chile\"},\"Antillanca\":{\"lat\":-40.7833,\"lon\":-72.2,\"location\":\"Chile\",\"country\":\"Chile\"},\"Volc\u00e1n Villarrica\":{\"lat\":-39.4167,\"lon\":-71.95,\"location\":\"Chile\",\"country\":\"Chile\"},\"Nevados de Chill\u00e1n\":{\"lat\":-36.9,\"lon\":-71.4,\"location\":\"Chile\",\"country\":\"Chile\"},\"Las Le\u00f1as\":{\"lat\":-35.15,\"lon\":-70.0833,\"location\":\"Argentina\",\"country\":\"Argentina\"},\"Cerro Catedral\":{\"lat\":-41.1667,\"lon\":-71.4333,\"location\":\"Bariloche, Argentina\",\"country\":\"Argentina\"},\"Chapelco\":{\"lat\":-40.2167,\"lon\":-71.2333,\"location\":\"San Mart\u00edn de los Andes, Argentina\",\"country\":\"Argentina\"},\"Cerro Bayo\":{\"lat\":-40.7833,\"lon\":-71.6,\"location\":\"Villa La Angostura, Argentina\",\"country\":\"Argentina\"},\"Cerro Castor\":{\"lat\":-54.7167,\"lon\":-68.0333,\"location\":\"Ushuaia, Argentina\",\"country\":\"Argentina\"},\"Caviahue\":{\"lat\":-37.8667,\"lon\":-71.0833,\"location\":\"Neuqu\u00e9n, Argentina\",\"country\":\"Argentina\"},\"Perito Moreno\":{\"lat\":-50.3333,\"lon\":-72.2667,\"location\":\"Santa Cruz, Argentina\",\"country\":\"Argentina\"},\"Niseko\":{\"lat\":42.8047,\"lon\":140.6872,\"location\":\"Hokkaido, Japan\",\"country\":\"Japan\"},\"Furano\":{\"lat\":43.3167,\"lon\":142.4,\"location\":\"Hokkaido, Japan\",\"country\":\"Japan\"},\"Rusutsu\":{\"lat\":42.75,\"lon\":140.9,\"location\":\"Hokkaido, Japan\",\"country\":\"Japan\"},\"Kiroro\":{\"lat\":43.0667,\"lon\":141.0,\"location\":\"Hokkaido, Japan\",\"country\":\"Japan\"},\"Hakuba\":{\"lat\":36.6983,\"lon\":137.8617,\"location\":\"Nagano, Japan\",\"country\":\"Japan\"},\"Shiga Kogen\":{\"lat\":36.7167,\"lon\":138.5167,\"location\":\"Nagano, Japan\",\"country\":\"Japan\"},\"Nozawa Onsen\":{\"lat\":36.9167,\"lon\":138.45,\"location\":\"Nagano, Japan\",\"country\":\"Japan\"},\"Zao Onsen\":{\"lat\":38.1667,\"lon\":140.4167,\"location\":\"Yamagata, Japan\",\"country\":\"Japan\"},\"Appi Kogen\":{\"lat\":40.0,\"lon\":140.95,\"location\":\"Iwate, Japan\",\"country\":\"Japan\"},\"Myoko Kogen\":{\"lat\":36.8833,\"lon\":138.1667,\"location\":\"Niigata, Japan\",\"country\":\"Japan\"},\"Madarao\":{\"lat\":36.85,\"lon\":138.2833,\"location\":\"Nagano, Japan\",\"country\":\"Japan\"},\"Perisher\":{\"lat\":-36.4,\"lon\":148.4,\"location\":\"New South Wales, Australia\",\"country\":\"Australia\"},\"Thredbo\":{\"lat\":-36.5,\"lon\":148.3,\"location\":\"New South Wales, Australia\",\"country\":\"Australia\"},\"Mount Buller\":{\"lat\":-37.1333,\"lon\":146.4333,\"location\":\"Victoria, Australia\",\"country\":\"Australia\"},\"Falls Creek\":{\"lat\":-36.8667,\"lon\":147.2833,\"location\":\"Victoria, Australia\",\"country\":\"Australia\"},\"Mount Hotham\":{\"lat\":-36.9833,\"lon\":147.1333,\"location\":\"Victoria, Australia\",\"country\":\"Australia\"},\"Charlotte Pass\":{\"lat\":-36.4333,\"lon\":148.3333,\"location\":\"New South Wales, Australia\",\"country\":\"Australia\"},\"Coronet Peak\":{\"lat\":-44.9167,\"lon\":168.7333,\"location\":\"Queenstown, New Zealand\",\"country\":\"New Zealand\"},\"The Remarkables\":{\"lat\":-45.0667,\"lon\":168.8167,\"location\":\"Queenstown, New Zealand\",\"country\":\"New Zealand\"},\"Cardrona\":{\"lat\":-44.8667,\"lon\":169.15,\"location\":\"Wanaka, New Zealand\",\"country\":\"New Zealand\"},\"Treble Cone\":{\"lat\":-44.6333,\"lon\":168.9,\"location\":\"Wanaka, New Zealand\",\"country\":\"New Zealand\"},\"Mount Hutt\":{\"lat\":-43.4833,\"lon\":171.5333,\"location\":\"Canterbury, New Zealand\",\"country\":\"New Zealand\"},\"Whakapapa\":{\"lat\":-39.2333,\"lon\":175.55,\"location\":\"Ruapehu, New Zealand\",\"country\":\"New Zealand\"},\"Turoa\":{\"lat\":-39.3,\"lon\":175.5333,\"location\":\"Ruapehu, New Zealand\",\"country\":\"New Zealand\"},\"Roundhill\":{\"lat\":-43.8333,\"lon\":170.65,\"location\":\"Mackenzie, New Zealand\",\"country\":\"New Zealand\"},\"Yongpyong\":{\"lat\":37.65,\"lon\":128.6833,\"location\":\"Gangwon, South Korea\",\"country\":\"South Korea\"},\"High1\":{\"lat\":37.2,\"lon\":128.8167,\"location\":\"Gangwon, South Korea\",\"country\":\"South Korea\"},\"Phoenix Park\":{\"lat\":37.5833,\"lon\":128.3333,\"location\":\"Gangwon, South Korea\",\"country\":\"South Korea\"},\"Yabuli\":{\"lat\":44.9333,\"lon\":128.45,\"location\":\"Heilongjiang, China\",\"country\":\"China\"},\"Thaiwoo\":{\"lat\":40.95,\"lon\":115.4333,\"location\":\"Hebei, China\",\"country\":\"China\"},\"Gulmarg\":{\"lat\":34.05,\"lon\":74.3833,\"location\":\"Jammu and Kashmir, India\",\"country\":\"India\"},\"Mzaar Kfardebian\":{\"lat\":33.9833,\"lon\":35.8167,\"location\":\"Lebanon\",\"country\":\"Lebanon\"},\"Ouka\u00efmeden\":{\"lat\":31.2,\"lon\":-7.8667,\"location\":\"Morocco\",\"country\":\"Morocco\"},\"Afriski\":{\"lat\":-28.8167,\"lon\":28.7167,\"location\":\"Lesotho\",\"country\":\"Lesotho\"},\"Asessippi\":{\"lat\":50.9667,\"lon\":-101.35,\"location\":\"Manitoba, Canada\",\"country\":\"Canada\"},\"Springhill Winter Park\":{\"lat\":49.8833,\"lon\":-99.95,\"location\":\"Manitoba, Canada\",\"country\":\"Canada\"},\"Mystery Mountain\":{\"lat\":55.75,\"lon\":-97.8667,\"location\":\"Manitoba, Canada\",\"country\":\"Canada\"},\"Duck Mountain\":{\"lat\":51.65,\"lon\":-101.6667,\"location\":\"Saskatchewan, Canada\",\"country\":\"Canada\"},\"Table Mountain\":{\"lat\":52.8,\"lon\":-108.5,\"location\":\"Saskatchewan, Canada\",\"country\":\"Canada\"},\"Mission Ridge\":{\"lat\":50.7833,\"lon\":-105.2667,\"location\":\"Saskatchewan, Canada\",\"country\":\"Canada\"},\"Crabbe Mountain\":{\"lat\":46.1167,\"lon\":-67.0833,\"location\":\"New Brunswick, Canada\",\"country\":\"Canada\"},\"Mont Farlagne\":{\"lat\":47.4167,\"lon\":-68.3333,\"location\":\"New Brunswick, Canada\",\"country\":\"Canada\"},\"Sugarloaf Provincial Park\":{\"lat\":47.9833,\"lon\":-66.7667,\"location\":\"New Brunswick, Canada\",\"country\":\"Canada\"},\"Marble Mountain\":{\"lat\":48.9333,\"lon\":-57.8333,\"location\":\"Newfoundland and Labrador, Canada\",\"country\":\"Canada\"},\"White Hills\":{\"lat\":48.55,\"lon\":-58.55,\"location\":\"Newfoundland and Labrador, Canada\",\"country\":\"Canada\"},\"Brookvale Nordic\":{\"lat\":46.3167,\"lon\":-63.4333,\"location\":\"Prince Edward Island, Canada\",\"country\":\"Canada\"},\"Mount Cain\":{\"lat\":50.2333,\"lon\":-126.35,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Mount Washington\":{\"lat\":49.75,\"lon\":-125.3,\"location\":\"British Columbia, Canada\",\"country\":\"Canada\"},\"Castle Mountain\":{\"lat\":49.3167,\"lon\":-114.4167,\"location\":\"Alberta, Canada\",\"country\":\"Canada\"},\"Mount Sutton\":{\"lat\":45.0833,\"lon\":-72.55,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Owl's Head\":{\"lat\":45.0667,\"lon\":-72.3,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Mont Orford\":{\"lat\":45.3167,\"lon\":-72.25,\"location\":\"Quebec, Canada\",\"country\":\"Canada\"},\"Calabogie Peaks\":{\"lat\":45.3,\"lon\":-76.75,\"location\":\"Ontario, Canada\",\"country\":\"Canada\"},\"Searchmont\":{\"lat\":46.8667,\"lon\":-84.05,\"location\":\"Ontario, Canada\",\"country\":\"Canada\"},\"Mount Sima\":{\"lat\":60.6,\"lon\":-135.0167,\"location\":\"Yukon, Canada\",\"country\":\"Canada\"},\"Crystal Mountain\":{\"lat\":46.9333,\"lon\":-121.4833,\"location\":\"Washington, USA\",\"country\":\"USA\"},\"Stevens Pass\":{\"lat\":47.75,\"lon\":-121.0833,\"location\":\"Washington, USA\",\"country\":\"USA\"},\"Mount Baker\":{\"lat\":48.85,\"lon\":-121.65,\"location\":\"Washington, USA\",\"country\":\"USA\"},\"Snoqualmie Pass\":{\"lat\":47.4167,\"lon\":-121.4167,\"location\":\"Washington, USA\",\"country\":\"USA\"},\"Schweitzer\":{\"lat\":48.3667,\"lon\":-116.6167,\"location\":\"Idaho, USA\",\"country\":\"USA\"},\"Bogus Basin\":{\"lat\":43.7667,\"lon\":-116.1,\"location\":\"Idaho, USA\",\"country\":\"USA\"},\"Alyeska\":{\"lat\":60.9667,\"lon\":-149.1,\"location\":\"Alaska, USA\",\"country\":\"USA\"},\"Eaglecrest\":{\"lat\":58.2667,\"lon\":-134.5167,\"location\":\"Alaska, USA\",\"country\":\"USA\"},\"Cannon Mountain\":{\"lat\":44.1667,\"lon\":-71.7,\"location\":\"New Hampshire, USA\",\"country\":\"USA\"},\"Loon Mountain\":{\"lat\":44.05,\"lon\":-71.6333,\"location\":\"New Hampshire, USA\",\"country\":\"USA\"},\"Attitash\":{\"lat\":44.0833,\"lon\":-71.2333,\"location\":\"New Hampshire, USA\",\"country\":\"USA\"},\"Bretton Woods\":{\"lat\":44.25,\"lon\":-71.4333,\"location\":\"New Hampshire, USA\",\"country\":\"USA\"},\"Waterville Valley\":{\"lat\":43.95,\"lon\":-71.5167,\"location\":\"New Hampshire, USA\",\"country\":\"USA\"},\"Whiteface Mountain\":{\"lat\":44.3667,\"lon\":-73.9,\"location\":\"New York, USA\",\"country\":\"USA\"},\"Gore Mountain\":{\"lat\":43.6667,\"lon\":-74.0,\"location\":\"New York, USA\",\"country\":\"USA\"},\"Hunter Mountain\":{\"lat\":42.2,\"lon\":-74.2167,\"location\":\"New York, USA\",\"country\":\"USA\"},\"Windham Mountain\":{\"lat\":42.3,\"lon\":-74.2667,\"location\":\"New York, USA\",\"country\":\"USA\"},\"Greek Peak\":{\"lat\":42.5167,\"lon\":-76.15,\"location\":\"New York, USA\",\"country\":\"USA\"},\"Seven Springs\":{\"lat\":40.0167,\"lon\":-79.3,\"location\":\"Pennsylvania, USA\",\"country\":\"USA\"},\"Hidden Valley PA\":{\"lat\":40.05,\"lon\":-79.25,\"location\":\"Pennsylvania, USA\",\"country\":\"USA\"},\"Blue Mountain PA\":{\"lat\":40.8167,\"lon\":-75.5167,\"location\":\"Pennsylvania, USA\",\"country\":\"USA\"},\"Camelback\":{\"lat\":41.05,\"lon\":-75.35,\"location\":\"Pennsylvania, USA\",\"country\":\"USA\"},\"Mount Rose\":{\"lat\":39.3333,\"lon\":-119.8833,\"location\":\"Nevada, USA\",\"country\":\"USA\"},\"Diamond Peak\":{\"lat\":39.25,\"lon\":-119.9167,\"location\":\"Nevada, USA\",\"country\":\"USA\"},\"Arizona Snowbowl\":{\"lat\":35.3333,\"lon\":-111.7,\"location\":\"Arizona, USA\",\"country\":\"USA\"},\"Sunrise Park\":{\"lat\":33.9667,\"lon\":-109.5667,\"location\":\"Arizona, USA\",\"country\":\"USA\"},\"Mount Brighton\":{\"lat\":42.55,\"lon\":-83.8,\"location\":\"Michigan, USA\",\"country\":\"USA\"},\"Boyne Mountain\":{\"lat\":45.1667,\"lon\":-84.9333,\"location\":\"Michigan, USA\",\"country\":\"USA\"},\"Boyne Highlands\":{\"lat\":45.4667,\"lon\":-84.9333,\"location\":\"Michigan, USA\",\"country\":\"USA\"},\"Crystal Mountain MI\":{\"lat\":44.5167,\"lon\":-86.0,\"location\":\"Michigan, USA\",\"country\":\"USA\"},\"Lutsen Mountains\":{\"lat\":47.6,\"lon\":-90.7167,\"location\":\"Minnesota, USA\",\"country\":\"USA\"},\"Giants Ridge\":{\"lat\":47.5667,\"lon\":-92.3,\"location\":\"Minnesota, USA\",\"country\":\"USA\"},\"Spirit Mountain\":{\"lat\":46.7167,\"lon\":-92.2167,\"location\":\"Minnesota, USA\",\"country\":\"USA\"},\"Granite Peak\":{\"lat\":44.9333,\"lon\":-89.6833,\"location\":\"Wisconsin, USA\",\"country\":\"USA\"},\"Wilmot Mountain\":{\"lat\":42.5,\"lon\":-88.1833,\"location\":\"Wisconsin, USA\",\"country\":\"USA\"},\"Tyrol Basin\":{\"lat\":43.05,\"lon\":-89.8667,\"location\":\"Wisconsin, USA\",\"country\":\"USA\"},\"Beech Mountain\":{\"lat\":36.2,\"lon\":-81.8833,\"location\":\"North Carolina, USA\",\"country\":\"USA\"},\"Sugar Mountain\":{\"lat\":36.1333,\"lon\":-81.8667,\"location\":\"North Carolina, USA\",\"country\":\"USA\"},\"Cataloochee\":{\"lat\":35.55,\"lon\":-83.0833,\"location\":\"North Carolina, USA\",\"country\":\"USA\"},\"Snowshoe\":{\"lat\":38.4167,\"lon\":-80.0,\"location\":\"West Virginia, USA\",\"country\":\"USA\"},\"Winterplace\":{\"lat\":37.6,\"lon\":-81.1167,\"location\":\"West Virginia, USA\",\"country\":\"USA\"},\"Timberline WV\":{\"lat\":39.1667,\"lon\":-79.5,\"location\":\"West Virginia, USA\",\"country\":\"USA\"},\"Bridger Bowl\":{\"lat\":45.8167,\"lon\":-110.9333,\"location\":\"Montana, USA\",\"country\":\"USA\"},\"Whitefish Mountain\":{\"lat\":48.4833,\"lon\":-114.35,\"location\":\"Montana, USA\",\"country\":\"USA\"},\"Grand Targhee\":{\"lat\":43.7833,\"lon\":-110.95,\"location\":\"Wyoming, USA\",\"country\":\"USA\"},\"Snow King\":{\"lat\":43.4667,\"lon\":-110.7667,\"location\":\"Wyoming, USA\",\"country\":\"USA\"}};\n\n    function upwellIsSkiHill(spot) {\n        if (!spot) return false;\n        spot = String(spot).replace(\/^\u26f7\ufe0f\\s*\/, '').trim();\n        if (UPWELL_SKI_COORDS[spot]) return true;\n        var sel = document.getElementById('surfSpot') || document.getElementById('forecastLocation');\n        if (sel && sel.selectedIndex >= 0) {\n            var opt = sel.options[sel.selectedIndex];\n            var group = opt && opt.parentElement;\n            if (group && group.label && String(group.label).indexOf('Ski Hills') !== -1) return true;\n        }\n        return false;\n    }\n\n    function upwellSkiWeatherCodeLabel(code) {\n        var c = Number(code);\n        if (c === 0) return 'Clear';\n        if (c === 1 || c === 2) return 'Partly cloudy';\n        if (c === 3) return 'Overcast';\n        if (c === 45 || c === 48) return 'Fog';\n        if (c >= 51 && c <= 67) return 'Rain \/ drizzle';\n        if (c >= 71 && c <= 77) return 'Snow';\n        if (c >= 80 && c <= 82) return 'Showers';\n        if (c >= 85 && c <= 86) return 'Snow showers';\n        if (c >= 95) return 'Storm';\n        return 'Mixed';\n    }\n\n    function upwellSkiWeatherIcon(code, snow) {\n        var c = Number(code);\n        if (snow > 1 || (c >= 71 && c <= 86)) return '\u2744\ufe0f';\n        if (c === 45 || c === 48) return '\ud83c\udf2b\ufe0f';\n        if (c === 0) return '\u2600\ufe0f';\n        if (c <= 2) return '\u26c5';\n        if (c === 3) return '\u2601\ufe0f';\n        if (c >= 95) return '\u26c8\ufe0f';\n        if (c >= 51) return '\ud83c\udf27\ufe0f';\n        return '\ud83c\udf24\ufe0f';\n    }\n\n    function upwellRenderSkiForecast(spot, daily) {\n        var output = document.getElementById('upwell-forecast-output');\n        if (!output) return;\n        var meta = UPWELL_SKI_COORDS[spot] || {};\n        var where = meta.location ? (' \u00b7 ' + meta.location) : '';\n        var html = '<h2 style=\"color:#1e40af;text-align:center;margin-bottom:12px;\">\u26f7\ufe0f ' + upwellHtmlEscape(spot) + ' \u2014 7-Day Ski Forecast<\/h2>';\n        html += '<p style=\"text-align:center;color:#475569;margin:0 0 18px;\">Mountain weather' + upwellHtmlEscape(where) + ' \u00b7 temps, snow &amp; wind<\/p>';\n        html += upwellFreeHomeEstateHtml(spot);\n\n        var times = daily.time || [];\n        var tmax = daily.temperature_2m_max || [];\n        var tmin = daily.temperature_2m_min || [];\n        var snow = daily.snowfall_sum || [];\n        var precip = daily.precipitation_sum || [];\n        var wind = daily.wind_speed_10m_max || [];\n        var codes = daily.weather_code || [];\n\n        for (var d = 0; d < Math.min(7, times.length); d++) {\n            var date = new Date(times[d] + 'T12:00:00');\n            var dayName = upwellDayNames[date.getDay()];\n            var dateStr = (date.getMonth()+1) + '\/' + date.getDate();\n            var sn = Number(snow[d] || 0);\n            var hi = Math.round(Number(tmax[d]));\n            var lo = Math.round(Number(tmin[d]));\n            var wn = Math.round(Number(wind[d] || 0));\n            var pr = Number(precip[d] || 0).toFixed(1);\n            var code = codes[d];\n            var label = upwellSkiWeatherCodeLabel(code);\n            var icon = upwellSkiWeatherIcon(code, sn);\n            var rating = sn >= 10 ? 'Excellent' : (sn >= 3 ? 'Good' : (sn > 0 ? 'Fair' : 'Poor'));\n            var ratingClass = upwellRatingClass[rating] || 'rating-fair';\n            var isOpen = (d === 0) ? ' open' : '';\n\n            html += '<div class=\"upwell-day-block\">';\n            html += '<div class=\"upwell-day-header' + isOpen + '\" id=\"hdr-' + d + '\" onclick=\"upwellToggleDay(' + d + ')\">' +\n                '<h4>' + dayName + ' &mdash; ' + dateStr + ' &nbsp; ' + icon + '<\/h4>' +\n                '<div class=\"day-summary\">High\/Low: ' + hi + '\u00b0\/' + lo + '\u00b0C &bull; Snow: ' + sn.toFixed(1) + ' cm &bull; Wind: ' + wn + ' km\/h &bull; ' + label + ' (' + rating + ')<\/div>' +\n                '<span class=\"toggle-icon\">\u25bc<\/span><\/div>';\n            html += '<div class=\"upwell-hourly-grid' + (d === 0 ? ' open' : '') + '\" id=\"grid-' + d + '\">';\n            html += '<table class=\"upwell-hourly-table\"><thead><tr>' +\n                '<th>\ud83d\udcc5 Day<\/th><th>\ud83c\udf21\ufe0f High<\/th><th>\ud83c\udf21\ufe0f Low<\/th><th>\u2744\ufe0f Snow<\/th><th>\ud83d\udca7 Precip<\/th><th>\ud83d\udca8 Wind<\/th><th>\ud83c\udf24 Conditions<\/th><th>\u2b50 Rating<\/th>' +\n                '<\/tr><\/thead><tbody><tr>' +\n                '<td class=\"time-col\">' + dayName + '<\/td>' +\n                '<td>' + hi + '\u00b0C<\/td>' +\n                '<td>' + lo + '\u00b0C<\/td>' +\n                '<td style=\"color:#0ea5e9;font-weight:bold;\">' + sn.toFixed(1) + ' cm<\/td>' +\n                '<td>' + pr + ' mm<\/td>' +\n                '<td>' + wn + ' km\/h<\/td>' +\n                '<td>' + icon + ' ' + label + '<\/td>' +\n                '<td class=\"' + ratingClass + '\">' + rating + '<\/td>' +\n                '<\/tr><\/tbody><\/table><\/div><\/div>';\n\n            if (typeof UPWELL_LISTING_FORECAST_AD_HTML === 'string' && UPWELL_LISTING_FORECAST_AD_HTML.length) {\n                html += '<div class=\"upwell-forecast-day-listing-wrap\">' + UPWELL_LISTING_FORECAST_AD_HTML + '<\/div>';\n            } else if (typeof upwellRealEstateBetweenForecastHtml === 'function') {\n                html += '<div class=\"upwell-forecast-day-re-wrap\">' + upwellRealEstateBetweenForecastHtml(spot) + '<\/div>';\n                html += '<div class=\"upwell-forecast-day-sponsor-wrap\">' + upwellAdHtml(d) + '<\/div>';\n            }\n        }\n\n        output.innerHTML = html;\n        output.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n\n    function upwellShowSkiForecast(spot) {\n        var output = document.getElementById('upwell-forecast-output');\n        var meta = UPWELL_SKI_COORDS[spot];\n        if (!meta) {\n            \/\/ Unknown ski hill \u2014 still show a mountain-style generated forecast\n            upwellShowSkiForecastGenerated(spot);\n            return;\n        }\n        if (output) {\n            output.innerHTML = '<div style=\"text-align:center;padding:28px;color:#1e40af;\">Loading 7-day ski forecast for <strong>' + upwellHtmlEscape(spot) + '<\/strong>\u2026<\/div>';\n        }\n        var url = 'https:\/\/api.open-meteo.com\/v1\/forecast?latitude=' + meta.lat +\n            '&longitude=' + meta.lon +\n            '&daily=temperature_2m_max,temperature_2m_min,snowfall_sum,precipitation_sum,wind_speed_10m_max,weather_code' +\n            '&timezone=auto&forecast_days=7';\n        fetch(url)\n            .then(function (r) { return r.json(); })\n            .then(function (data) {\n                if (!data || !data.daily || !data.daily.time || !data.daily.time.length) {\n                    throw new Error('No daily data');\n                }\n                upwellRenderSkiForecast(spot, data.daily);\n            })\n            .catch(function (err) {\n                console.warn('Ski forecast API failed, using generated fallback', err);\n                upwellShowSkiForecastGenerated(spot);\n            });\n    }\n\n    function upwellShowSkiForecastGenerated(spot) {\n        var daily = { time: [], temperature_2m_max: [], temperature_2m_min: [], snowfall_sum: [], precipitation_sum: [], wind_speed_10m_max: [], weather_code: [] };\n        var today = new Date();\n        for (var i = 0; i < 7; i++) {\n            var d = new Date(today); d.setDate(today.getDate() + i);\n            daily.time.push(d.toISOString().slice(0, 10));\n            daily.temperature_2m_max.push(-2 + Math.random() * 8);\n            daily.temperature_2m_min.push(-12 + Math.random() * 8);\n            daily.snowfall_sum.push(Math.random() * 12);\n            daily.precipitation_sum.push(Math.random() * 5);\n            daily.wind_speed_10m_max.push(10 + Math.random() * 30);\n            daily.weather_code.push([71, 73, 75, 3, 2, 85][Math.floor(Math.random() * 6)]);\n        }\n        upwellRenderSkiForecast(spot, daily);\n    }\n\n    function upwellNormalizeSpotName(spot) {\n        return String(spot || '').replace(\/^\u26f7\ufe0f\\s*\/, '').trim();\n    }\n\n    function upwellShowForecast() {\n        try {\n        var sel = document.getElementById('surfSpot');\n        if (!sel) { alert('Forecast selector not found.'); return; }\n        var spot = upwellNormalizeSpotName(sel.value);\n        if (!spot) { alert('Please select a spot first!'); return; }\n\n        if (typeof upwellOceanViewApplySpot === 'function') {\n            upwellOceanViewApplySpot(spot);\n        }\n\n        \/\/ Surf + ski use the same 7-day day-block UI for now\n        var isSki = (typeof upwellIsSkiHill === 'function' && upwellIsSkiHill(spot));\n        var profile = upwellSpotProfiles[spot] || upwellSpotProfiles['Lawrencetown Beach'];\n        var output = document.getElementById('upwell-forecast-output');\n        if (!output) { alert('Forecast output area not found.'); return; }\n\n        var today = new Date();\n        var titleIcon = isSki ? '\u26f7\ufe0f' : '\ud83d\udccd';\n        var titleKind = '7-Day Forecast';\n        \/\/ Forecast days FIRST so click always shows the 7-day table (ads\/forms below)\n        var html = '<div id=\"upwellForecastResults\">' +\n            '<h2 style=\"color:#1e40af;text-align:center;margin-bottom:16px;\">' + titleIcon + ' ' + upwellHtmlEscape(spot) + ' \u2014 ' + titleKind + '<\/h2>';\n        \/\/ Surfdonkey hoodie + tee (and Didijust) directly under the forecast title\n        if (typeof upwellForecastPodcastAdsHtml === 'function') {\n            html += upwellForecastPodcastAdsHtml();\n        }\n\n        for (var d = 0; d < 7; d++) {\n            var date = new Date(today);\n            date.setDate(today.getDate() + d);\n            var dayName = upwellDayNames[date.getDay()];\n            var dateStr = (date.getMonth()+1) + '\/' + date.getDate();\n            var rows = upwellGenerateHours(profile, d);\n\n            \/\/ Day header summary (first and last hour snapshot)\n            var firstRow = rows[0];\n            var bestRow = rows[0];\n            for (var r = 0; r < rows.length; r++) {\n                if (rows[r].rating === 'Excellent') { bestRow = rows[r]; break; }\n                if (rows[r].rating === 'Good') bestRow = rows[r];\n            }\n\n            var isOpen = (d === 0) ? ' open' : '';\n            var summaryLine = isSki\n                ? ('Conditions: ' + bestRow.wx + ' &bull; Wind: ' + firstRow.windSpeed + ' &bull; Best: ' + bestRow.time + ' (' + bestRow.rating + ')')\n                : ('Waves: ' + firstRow.waves + ' &bull; Water: ' + firstRow.waterTemp + ' &bull; Best: ' + bestRow.time + ' (' + bestRow.rating + ')');\n\n            html += '<div class=\"upwell-day-block\">';\n            html += '<div class=\"upwell-day-header' + isOpen + '\" id=\"hdr-' + d + '\" onclick=\"upwellToggleDay(' + d + ')\">' +\n                '<h4>' + dayName + ' &mdash; ' + dateStr + ' &nbsp; ' + bestRow.wx + '<\/h4>' +\n                '<div class=\"day-summary\">' + summaryLine + '<\/div>' +\n                '<span class=\"toggle-icon\">\u25bc<\/span>' +\n            '<\/div>';\n\n            \/\/ Hourly table (first day open by default)\n            var gridClass = 'upwell-hourly-grid' + (d === 0 ? ' open' : '');\n            html += '<div class=\"' + gridClass + '\" id=\"grid-' + d + '\">';\n            html += '<table class=\"upwell-hourly-table\"><thead><tr>' +\n                '<th>\u23f0 Time<\/th><th>\ud83c\udf0a Waves<\/th><th>\u23f1 Period<\/th>' +\n                '<th>\ud83d\udca8 Wind<\/th><th>\ud83c\udf2c\ufe0f Speed<\/th><th>\ud83c\udf21\ufe0f Water Temp<\/th><th>\ud83c\udf24 Wx<\/th><th>\u2b50 Rating<\/th>' +\n                '<\/tr><\/thead><tbody>';\n            for (var ri = 0; ri < rows.length; ri++) {\n                var row = rows[ri];\n                html += '<tr>' +\n                    '<td class=\"time-col\">' + row.time + '<\/td>' +\n                    '<td>' + row.waves + '<\/td>' +\n                    '<td>' + row.period + '<\/td>' +\n                    '<td>' + row.wind + '<\/td>' +\n                    '<td>' + row.windSpeed + '<\/td>' +\n                    '<td style=\"color:#0ea5e9;font-weight:bold;\">' + row.waterTemp + '<\/td>' +\n                    '<td>' + row.wx + '<\/td>' +\n                    '<td class=\"' + row.ratingClass + '\">' + row.rating + '<\/td>' +\n                '<\/tr>';\n            }\n            html += '<\/tbody><\/table><\/div>'; \/\/ close grid + table\n            html += '<\/div>'; \/\/ close day-block\n        }\n        html += '<\/div>'; \/\/ #upwellForecastResults\n\n        \/\/ Podcast video + trial\/subscribe (skip if the static page card is already on screen)\n        if (!document.getElementById('upwellDidPodcastPromoStatic')) {\n            html += upwellDidPodcastPromoHtml();\n        }\n\n        \/\/ Ads \/ signup forms AFTER the forecast so the 7-day table is visible on click\n        html += upwellFreeHomeEstateHtml(spot);\n        if (upwellIsNovaScotiaSpot(spot)) {\n            html += upwellEfficiencyNsHtml(spot);\n        }\n        if (typeof UPWELL_LISTING_FORECAST_AD_HTML === 'string' && UPWELL_LISTING_FORECAST_AD_HTML.length) {\n            html += '<div class=\"upwell-forecast-day-listing-wrap\">' + UPWELL_LISTING_FORECAST_AD_HTML + '<\/div>';\n        } else if (typeof upwellRealEstateBetweenForecastHtml === 'function') {\n            html += '<div class=\"upwell-forecast-day-re-wrap\">' + upwellRealEstateBetweenForecastHtml(spot) + '<\/div>';\n            html += '<div class=\"upwell-forecast-day-sponsor-wrap\">' + upwellAdHtml(0) + '<\/div>';\n        }\n        if (typeof UPWELL_OCEAN_VIEW_HTML === 'string' && UPWELL_OCEAN_VIEW_HTML.length) {\n            html += '<div class=\"upwell-forecast-ocean-view-wrap\">' + UPWELL_OCEAN_VIEW_HTML + '<\/div>';\n        }\n        if (typeof UPWELL_MLS_WX_HTML === 'string' && UPWELL_MLS_WX_HTML.length) {\n            html += '<div class=\"upwell-forecast-mls-wx-wrap\" style=\"margin:18px 0 8px;\">' + UPWELL_MLS_WX_HTML + '<\/div>';\n        }\n\n        output.innerHTML = html;\n        var results = document.getElementById('upwellForecastResults') || output;\n        results.scrollIntoView({ behavior: 'smooth', block: 'start' });\n        if (typeof upwellAfterForecastShown === 'function') {\n            upwellAfterForecastShown(spot);\n        }\n        } catch (err) {\n            console.error('upwellShowForecast error', err);\n            var out = document.getElementById('upwell-forecast-output');\n            if (out) {\n                out.innerHTML = '<div style=\"padding:20px;text-align:center;color:#b91c1c;background:#fef2f2;border-radius:8px;\">Could not load forecast. Please try another spot.<\/div>';\n            } else {\n                alert('Could not load forecast. Please try again.');\n            }\n        }\n    }\n    window.upwellShowForecast = upwellShowForecast;\n    window.upwellToggleDay = upwellToggleDay;\n\n    \/\/ Hard-bind Get 7-Day button (survives themes\/plugins stripping inline onclick)\n    function upwellBindForecastButton() {\n        var btn = document.getElementById('upwellGetForecastBtn');\n        if (!btn) btn = document.querySelector('button[onclick*=\"upwellShowForecast\"]');\n        if (!btn || btn.getAttribute('data-upwell-forecast-bound') === '1') return;\n        btn.setAttribute('data-upwell-forecast-bound', '1');\n        btn.addEventListener('click', function (e) {\n            try { e.preventDefault(); } catch (err) {}\n            upwellShowForecast();\n        });\n    }\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', upwellBindForecastButton);\n    } else {\n        upwellBindForecastButton();\n    }\n\n    \/\/ Replace legacy \u201cComing soon?\u201d Surfdonkey card with hoodie + t-shirt merch\n    (function upwellUpgradePodcastAdsMerch() {\n        function run() {\n            var old = document.getElementById('upwell-podcast-ads');\n            if (!old || typeof upwellForecastPodcastAdsHtml !== 'function') return;\n            if (old.getAttribute('data-upwell-sd-merch') === '1') return;\n            if (!\/Coming soon\\?\/i.test(old.textContent || '') && !\/Surfdonkey Podcast\/i.test(old.textContent || '')) return;\n            var wrap = document.createElement('div');\n            wrap.innerHTML = upwellForecastPodcastAdsHtml();\n            if (wrap.firstChild) old.parentNode.replaceChild(wrap.firstChild, old);\n        }\n        function arm() {\n            run();\n            var out = document.getElementById('upwell-forecast-output');\n            if (!out || out.getAttribute('data-upwell-sd-obs') === '1') return;\n            out.setAttribute('data-upwell-sd-obs', '1');\n            var t;\n            var mo = new MutationObserver(function () {\n                clearTimeout(t);\n                t = setTimeout(run, 60);\n            });\n            mo.observe(out, { childList: true, subtree: true });\n        }\n        if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', arm);\n        else arm();\n    })();\n\n    \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n    \/\/ LIVE REPORTS \u2014 auth, upload, delete, share, localStorage persistence\n    \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n    var upwellPhotoDataURL    = null;\n    var upwellLiveSubmitCount = 0;\n    var upwellCurrentUser     = null;   \/\/ { name, email } when logged in\n    var upwellUsers           = JSON.parse(localStorage.getItem('upwellUsers') || '{}');\n    var upwellShareText       = '';\n    var upwellShareUrl        = window.location.href;\n    var upwellCardIndex       = 0;      \/\/ unique ID per card\n\n    \/\/ \u2500\u2500 Report storage helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellLoadReports() {\n        try { return JSON.parse(localStorage.getItem('upwellReports') || '[]'); }\n        catch(e) { return []; }\n    }\n    function upwellSaveReports(reports) {\n        try { localStorage.setItem('upwellReports', JSON.stringify(reports)); }\n        catch(e) {\n            \/\/ localStorage quota exceeded (large photos) \u2014 trim oldest 2 and retry\n            reports.splice(0, 2);\n            try { localStorage.setItem('upwellReports', JSON.stringify(reports)); } catch(e2) {}\n        }\n    }\n    function upwellAddStoredReport(report) {\n        var reports = upwellLoadReports();\n        reports.unshift(report);           \/\/ newest first\n        if (reports.length > 50) reports.length = 50; \/\/ cap at 50\n        upwellSaveReports(reports);\n    }\n    function upwellRemoveStoredReport(cardId) {\n        var reports = upwellLoadReports();\n        reports = reports.filter(function(r){ return r.cardId !== cardId; });\n        upwellSaveReports(reports);\n    }\n\n    \/\/ \u2500\u2500 Auth via WordPress (Pro users table) \u2014 unlocks 24h hour-by-hour \u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    var upwellLoginIntent = 'live'; \/\/ 'live' | 'pro' | 'register'\n    var upwellLastForecastSpot = '';\n\n    function upwellAjaxCfg() {\n        if (window.upwell_ajax && window.upwell_ajax.ajax_url) return window.upwell_ajax;\n        return null;\n    }\n\n    function upwellPostAjax(action, fields) {\n        var cfg = upwellAjaxCfg();\n        if (!cfg) return Promise.reject(new Error('AJAX not configured'));\n        var data = Object.assign({ action: action, nonce: cfg.nonce }, fields || {});\n        return fetch(cfg.ajax_url, {\n            method: 'POST',\n            credentials: 'same-origin',\n            headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n            body: new URLSearchParams(data)\n        }).then(function(r) { return r.json(); });\n    }\n\n    function upwellCheckProAuth() {\n        return upwellPostAjax('upwell_check_auth', {}).then(function(result) {\n            if (result && result.success && result.data && result.data.authenticated) {\n                upwellCurrentUser = {\n                    name: result.data.full_name || result.data.email || 'Pro member',\n                    email: result.data.email || '',\n                    id: result.data.user_id\n                };\n                return true;\n            }\n            upwellCurrentUser = null;\n            return false;\n        }).catch(function() {\n            upwellCurrentUser = null;\n            return false;\n        });\n    }\n\n    function upwellSelectedSpot() {\n        var sel = document.getElementById('surfSpot');\n        var spot = sel ? upwellNormalizeSpotName(sel.value) : '';\n        return spot || upwellLastForecastSpot || '';\n    }\n\n    function upwellSetProGateVisible(show) {\n        var gate = document.getElementById('upwellProGate');\n        if (gate) gate.style.display = show ? 'block' : 'none';\n    }\n\n    function upwellLoadPro24(spot, forceLoggedIn) {\n        spot = upwellNormalizeSpotName(spot || upwellSelectedSpot() || 'Lawrencetown Beach');\n        upwellLastForecastSpot = spot;\n        var mount = document.getElementById('upwellPro24Mount');\n        if (!mount) return;\n\n        function showPro() {\n            upwellUpdateAuthUI();\n            upwellSetProGateVisible(false);\n            \/\/ Always show a real 24\u00d71h table immediately (admin DB often empty).\n            upwellRenderPro24Hourly(spot, mount);\n            mount.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n        }\n\n        \/\/ Right after login\/register, trust local session and render now (cookie check can lag).\n        if (forceLoggedIn || upwellCurrentUser) {\n            showPro();\n            \/\/ Still refresh server auth in background\n            upwellCheckProAuth().then(function(ok) {\n                if (!ok && !forceLoggedIn) {\n                    mount.innerHTML = '';\n                    upwellCurrentUser = null;\n                    upwellUpdateAuthUI();\n                    upwellSetProGateVisible(true);\n                }\n            });\n            return;\n        }\n\n        upwellCheckProAuth().then(function(ok) {\n            if (!ok) {\n                mount.innerHTML = '';\n                upwellSetProGateVisible(true);\n                upwellUpdateAuthUI();\n                return;\n            }\n            showPro();\n        });\n    }\n\n    function upwellHasAdminHourlyData(rows) {\n        if (!rows || !rows.length) return false;\n        for (var i = 0; i < rows.length; i++) {\n            var f = rows[i];\n            if ((f.wave_height && f.wave_height !== '-') ||\n                (f.wind_speed && f.wind_speed !== '-') ||\n                (f.temperature && f.temperature !== '-') ||\n                (f.conditions && f.conditions !== '-')) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    function upwellRenderPro24Hourly(spot, mount) {\n        var profile = upwellSpotProfiles[spot] || upwellSpotProfiles['Lawrencetown Beach'];\n        var rows = upwellGenerateHourly24(profile, 0);\n        mount.innerHTML = upwellPro24TableHtml(spot, rows);\n\n        \/\/ If WP admin hourly exists for this spot, upgrade the table with those values.\n        upwellPostAjax('upwell_get_hourly_forecast', { location: spot }).then(function(result) {\n            if (!result || !result.success || !upwellHasAdminHourlyData(result.data)) return;\n            var html = '<div id=\"upwellPro24Panel\" style=\"background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 55%,#db2777 100%);border-radius:12px;padding:18px;color:#fff;\">' +\n                '<h3 style=\"margin:0 0 8px;\">&#11088; 24-Hour Pro \u2014 Hour by Hour<\/h3>' +\n                '<p style=\"margin:0 0 12px;font-size:13px;opacity:0.9;\">' + upwellHtmlEscape(spot) + ' \u00b7 from Pro admin data<\/p>' +\n                '<div style=\"overflow-x:auto;background:#fff;border-radius:10px;padding:8px;\">' +\n                '<table class=\"upwell-hourly-table\" style=\"width:100%;min-width:720px;color:#111;\"><thead><tr>' +\n                '<th>Time<\/th><th>Waves<\/th><th>Wind<\/th><th>Dir<\/th><th>Period<\/th><th>Temp<\/th><th>Conditions<\/th><\/tr><\/thead><tbody>';\n            var nowH = new Date().getHours();\n            result.data.forEach(function(f) {\n                var isNow = parseInt(f.hour, 10) === nowH;\n                html += '<tr' + (isNow ? ' style=\"background:#dbeafe;\"' : '') + '>' +\n                    '<td class=\"time-col\">' + upwellHtmlEscape(f.time || '') + (isNow ? ' <strong>NOW<\/strong>' : '') + '<\/td>' +\n                    '<td>' + upwellHtmlEscape(f.wave_height || '-') + '<\/td>' +\n                    '<td>' + upwellHtmlEscape(f.wind_speed || '-') + '<\/td>' +\n                    '<td>' + upwellHtmlEscape(f.wind_direction || '-') + '<\/td>' +\n                    '<td>' + upwellHtmlEscape(f.swell_period || '-') + '<\/td>' +\n                    '<td>' + upwellHtmlEscape(f.temperature || '-') + '<\/td>' +\n                    '<td>' + upwellHtmlEscape(f.conditions || '-') + '<\/td><\/tr>';\n            });\n            html += '<\/tbody><\/table><\/div><\/div>';\n            mount.innerHTML = html;\n        }).catch(function() { \/* keep generated table *\/ });\n    }\n\n    function upwellAfterForecastShown(spot) {\n        upwellLastForecastSpot = spot;\n        upwellLoadPro24(spot);\n    }\n\n    function upwellOpenPro24() {\n        var spot = upwellSelectedSpot();\n        if (!spot) { alert('Please select a surf spot first.'); return; }\n        upwellLoginIntent = 'pro';\n        upwellCheckProAuth().then(function(ok) {\n            if (ok) {\n                upwellLoadPro24(spot);\n                var mount = document.getElementById('upwellPro24Mount');\n                if (mount) mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n            } else {\n                if (typeof upwellOpenStripeProReportPayment === 'function') {\n                    upwellOpenStripeProReportPayment();\n                } else {\n                    window.open(\"https:\\\/\\\/buy.stripe.com\\\/bJe28tbj539f0w07gaew800\", '_blank', 'noopener,noreferrer');\n                }\n            }\n        });\n    }\n\n    \/\/ \u2500\u2500 Auth UI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellOpenLogin(intent) {\n        upwellLoginIntent = intent || 'live';\n        var title = document.getElementById('upwellLoginTitle');\n        var sub = document.getElementById('upwellLoginSubtitle');\n        if (upwellLoginIntent === 'register') {\n            if (title) title.textContent = 'Create Pro Account';\n            if (sub) sub.textContent = 'Create a free account to unlock 24-Hour Pro hour-by-hour forecasts and post live reports.';\n            upwellShowTab('register');\n        } else if (upwellLoginIntent === 'pro') {\n            if (title) title.textContent = 'Pro Report Access';\n            if (sub) sub.textContent = 'Login or create an account to unlock the 24-Hour Pro hour-by-hour forecast.';\n            upwellShowTab('signin');\n        } else {\n            if (title) title.textContent = 'Join Upwell Surf';\n            if (sub) sub.textContent = 'Sign in or create an account for 24-Hour Pro Reports and to post live surf reports.';\n            upwellShowTab('signin');\n        }\n        document.getElementById('upwellLoginError').style.display = 'none';\n        document.getElementById('upwellLoginModal').style.display = 'flex';\n        document.body.style.overflow = 'hidden';\n    }\n    function upwellCloseLogin() {\n        document.getElementById('upwellLoginModal').style.display = 'none';\n        document.body.style.overflow = '';\n    }\n    function upwellShowTab(tab) {\n        var isSignin = tab === 'signin';\n        document.getElementById('upwellSigninForm').style.display   = isSignin ? 'block' : 'none';\n        document.getElementById('upwellRegisterForm').style.display  = isSignin ? 'none'  : 'block';\n        document.getElementById('upwellTabSignin').style.background  = isSignin ? 'white' : 'transparent';\n        document.getElementById('upwellTabSignin').style.color       = isSignin ? '#111827' : '#6b7280';\n        document.getElementById('upwellTabRegister').style.background = isSignin ? 'transparent' : 'white';\n        document.getElementById('upwellTabRegister').style.color      = isSignin ? '#6b7280' : '#111827';\n        document.getElementById('upwellLoginError').style.display = 'none';\n    }\n    function upwellShowLoginError(msg) {\n        var el = document.getElementById('upwellLoginError');\n        el.textContent = msg; el.style.display = 'block';\n    }\n    function upwellDoLogin() {\n        var email = (document.getElementById('upwellLoginEmail').value || '').trim().toLowerCase();\n        var pass  = document.getElementById('upwellLoginPassword').value || '';\n        if (!email || !pass) { upwellShowLoginError('Please enter your email and password.'); return; }\n        if (!upwellAjaxCfg()) { upwellShowLoginError('Plugin AJAX not loaded. Refresh the page.'); return; }\n        upwellPostAjax('upwell_login', { email: email, password: pass }).then(function(result) {\n            if (result && result.success) {\n                upwellCurrentUser = { name: (result.data && result.data.full_name) || email, email: email };\n                upwellCloseLogin();\n                upwellUpdateAuthUI();\n                \/\/ Trust login response immediately \u2014 show 24\u00d71h Pro table now.\n                upwellLoadPro24(upwellSelectedSpot() || 'Lawrencetown Beach', true);\n            } else {\n                upwellShowLoginError((result && result.data) ? String(result.data) : 'Login failed');\n            }\n        }).catch(function() {\n            upwellShowLoginError('Login failed. Please try again.');\n        });\n    }\n    function upwellDoRegister() {\n        var name  = (document.getElementById('upwellRegName').value  || '').trim();\n        var email = (document.getElementById('upwellRegEmail').value  || '').trim().toLowerCase();\n        var pass  = document.getElementById('upwellRegPassword').value || '';\n        if (!name)  { upwellShowLoginError('Please enter your name.'); return; }\n        if (!email || email.indexOf('@') < 0) { upwellShowLoginError('Please enter a valid email.'); return; }\n        if (pass.length < 6) { upwellShowLoginError('Password must be at least 6 characters.'); return; }\n        if (!upwellAjaxCfg()) { upwellShowLoginError('Plugin AJAX not loaded. Refresh the page.'); return; }\n        upwellPostAjax('upwell_register', { email: email, password: pass, full_name: name }).then(function(result) {\n            if (result && result.success) {\n                upwellCurrentUser = { name: name, email: email };\n                upwellCloseLogin();\n                upwellUpdateAuthUI();\n                \/\/ After create account: always unlock 24\u00d71h Pro for selected (or default) spot.\n                var spot = upwellSelectedSpot() || 'Lawrencetown Beach';\n                var sel = document.getElementById('surfSpot');\n                if (sel && (!sel.value || sel.selectedIndex === 0)) {\n                    try { sel.value = spot; } catch (e) {}\n                }\n                upwellLoadPro24(spot, true);\n            } else {\n                upwellShowLoginError((result && result.data) ? String(result.data) : 'Registration failed');\n            }\n        }).catch(function() {\n            upwellShowLoginError('Registration failed. Please try again.');\n        });\n    }\n    function upwellForgotPassword() {\n        upwellShowLoginError('Email support@upwellsurf.com to reset your Pro password.');\n    }\n    function upwellLogout() {\n        upwellPostAjax('upwell_logout', {}).finally(function() {\n            upwellCurrentUser = null;\n            upwellUpdateAuthUI();\n            var mount = document.getElementById('upwellPro24Mount');\n            if (mount) mount.innerHTML = '';\n            upwellSetProGateVisible(true);\n        });\n    }\n    function upwellUpdateAuthUI() {\n        var loggedIn = !!upwellCurrentUser;\n        var loginBtn = document.getElementById('upwellLoginBtn');\n        var addBtn = document.getElementById('upwellAddReportBtn');\n        var logoutBtn = document.getElementById('upwellLogoutBtn');\n        var hint = document.getElementById('upwellLoginHint');\n        if (loginBtn) loginBtn.style.display = loggedIn ? 'none' : 'inline-block';\n        if (addBtn) addBtn.style.display = loggedIn ? 'inline-block' : 'none';\n        if (logoutBtn) logoutBtn.style.display = loggedIn ? 'inline-block' : 'none';\n        if (hint) hint.style.display = loggedIn ? 'none' : 'block';\n        var badge = document.getElementById('upwellUserBadge');\n        if (badge) {\n            if (loggedIn) {\n                badge.style.display = 'inline-block';\n                badge.innerHTML = '&#128100; ' + upwellHtmlEscape(upwellCurrentUser.name || 'Pro');\n            } else {\n                badge.style.display = 'none';\n            }\n        }\n        upwellSetProGateVisible(!loggedIn);\n    }\n\n    window.upwellOpenPro24 = upwellOpenPro24;\n    window.upwellLoadPro24 = upwellLoadPro24;\n    window.upwellAfterForecastShown = upwellAfterForecastShown;\n    window.upwellOpenLogin = upwellOpenLogin;\n    window.upwellOpenStripeProReportPayment = window.upwellOpenStripeProReportPayment || function () {\n        var url = (typeof upwell_ajax !== 'undefined' && upwell_ajax.stripe_pro_report_url) || window.UPWELL_STRIPE_PRO_REPORT_URL;\n        if (!url) { return; }\n        var w = window.open(url, '_blank', 'noopener,noreferrer');\n        if (!w) { window.location.assign(url); }\n    };\n    document.addEventListener('click', function (ev) {\n        var btn = ev.target.closest('.storm-noreaster-cta');\n        if (!btn || btn.tagName === 'A') { return; }\n        ev.preventDefault();\n        window.upwellOpenStripeProReportPayment();\n    });\n\n    \/\/ \u2500\u2500 Report modal \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellOpenModal() {\n        if (!upwellCurrentUser) { upwellOpenLogin(); return; }\n        upwellClearPhoto();\n        ['upwellReportLocation','upwellReportWaves','upwellReportWind','upwellReportNote'].forEach(function(id){\n            var el = document.getElementById(id); if (el) el.value = '';\n        });\n        document.getElementById('upwellModal').style.display = 'flex';\n        document.body.style.overflow = 'hidden';\n    }\n    function upwellCloseModal() {\n        document.getElementById('upwellModal').style.display = 'none';\n        document.body.style.overflow = '';\n    }\n    function upwellPreviewPhoto(input) {\n        if (!input.files || !input.files[0]) return;\n        var reader = new FileReader();\n        reader.onload = function(e) {\n            upwellPhotoDataURL = e.target.result;\n            document.getElementById('upwellPreviewImg').src = upwellPhotoDataURL;\n            document.getElementById('upwellPhotoPreview').style.display = 'block';\n            document.getElementById('upwellDropZone').style.display = 'none';\n        };\n        reader.readAsDataURL(input.files[0]);\n    }\n    function upwellClearPhoto() {\n        upwellPhotoDataURL = null;\n        var fi = document.getElementById('upwellFileInput'); if (fi) fi.value = '';\n        var pi = document.getElementById('upwellPreviewImg'); if (pi) pi.src = '';\n        var pp = document.getElementById('upwellPhotoPreview'); if (pp) pp.style.display = 'none';\n        var dz = document.getElementById('upwellDropZone'); if (dz) dz.style.display = 'block';\n    }\n    function upwellSubmitReport() {\n        var location = document.getElementById('upwellReportLocation').value.trim();\n        if (!location) { alert('Please enter a spot or location.'); return; }\n        var waves   = document.getElementById('upwellReportWaves').value.trim() || 'Not reported';\n        var wind    = document.getElementById('upwellReportWind').value.trim()  || 'Not reported';\n        var note    = document.getElementById('upwellReportNote').value.trim();\n        var photo   = upwellPhotoDataURL;\n        var now     = new Date();\n        var timeStr = now.toLocaleTimeString([], {hour:'2-digit', minute:'2-digit'});\n        var cardId  = 'uwcard_' + Date.now() + '_' + Math.floor(Math.random()*9999);\n\n        \/\/ Save to localStorage before rendering\n        var reportData = {\n            cardId:   cardId,\n            name:     upwellCurrentUser.name,\n            email:    upwellCurrentUser.email,\n            location: location,\n            waves:    waves,\n            wind:     wind,\n            note:     note,\n            photo:    photo,\n            timeStr:  timeStr,\n            savedAt:  now.toISOString()\n        };\n        upwellAddStoredReport(reportData);\n\n        upwellCloseModal();\n        upwellLiveSubmitCount++;\n        upwellRenderReportCard(reportData, true);\n        if (upwellLiveSubmitCount % 3 === 0) { setTimeout(upwellInsertAdCard, 200); }\n    }\n\n    \/\/ \u2500\u2500 Build report card from stored data object \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellRenderReportCard(r, prepend) {\n        var container = document.getElementById('liveReportsContainer');\n        var card = document.createElement('div');\n        card.id = r.cardId;\n        card.style.cssText = 'background:white; border-radius:12px; overflow:hidden; margin-bottom:14px; box-shadow:0 2px 8px rgba(0,0,0,0.09); border:1px solid #e5e7eb;';\n\n        window.upwellReportCardData[r.cardId] = r;\n\n        var photoHtml = r.photo\n            ? '<img decoding=\"async\" src=\"'+r.photo+'\" alt=\"surf photo\" style=\"width:100%; max-height:460px; object-fit:cover; display:block; cursor:zoom-in;\" onclick=\"upwellOpenLightbox(this.src)\">'\n            : '';\n        var noteHtml  = r.note ? '<p style=\"font-size:14px;color:#374151;margin:8px 0 0 0;font-style:italic;\">&ldquo;'+r.note+'&rdquo;<\/p>' : '';\n        var photoHint = r.photo ? '<p style=\"font-size:11px;color:#9ca3af;margin:4px 0 0 0;\">Tap photo to view full size<\/p>' : '';\n\n        var shareSnippet = encodeURIComponent('\ud83c\udf0a ' + r.location + ' \u2014 Waves: ' + r.waves + ', Wind: ' + r.wind + (r.note ? '. ' + r.note : '') + ' | Upwell Surf');\n        var fbUrl  = 'https:\/\/www.facebook.com\/sharer\/sharer.php?u='+encodeURIComponent(upwellShareUrl)+'&quote='+encodeURIComponent(r.location+' \u2014 Waves: '+r.waves+' Wind: '+r.wind);\n        var twUrl  = 'https:\/\/twitter.com\/intent\/tweet?text='+encodeURIComponent(r.location+' \u2014 Waves: '+r.waves+' Wind: '+r.wind+' #surfing #upwellsurf')+'&url='+encodeURIComponent(upwellShareUrl);\n        var waUrl  = 'https:\/\/wa.me\/?text='+encodeURIComponent(r.location+' \u2014 Waves: '+r.waves+' Wind: '+r.wind+' '+upwellShareUrl);\n\n        card.innerHTML = photoHtml +\n            '<div style=\"padding:14px 16px;\">' +\n                '<div style=\"display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px;\">' +\n                    '<div>' +\n                        '<h4 style=\"margin:0 0 2px 0;font-size:16px;color:#16a34a;\">&#127754; '+r.location+'<\/h4>' +\n                        '<p style=\"margin:0;font-size:12px;color:#6b7280;\">&#128100; '+r.name+' &bull; '+r.timeStr+'<\/p>' +\n                    '<\/div>' +\n                    '<button onclick=\"upwellDeleteCard(\\''+r.cardId+'\\')\" title=\"Delete report\" ' +\n                        'style=\"background:#fef2f2;border:1px solid #fecaca;color:#dc2626;border-radius:6px;padding:5px 10px;font-size:12px;cursor:pointer;white-space:nowrap;\">&#128465; Delete<\/button>' +\n                '<\/div>' +\n                '<div style=\"display:flex;gap:20px;flex-wrap:wrap;margin-bottom:10px;\">' +\n                    '<span style=\"font-size:14px;\">&#127754; <strong>Waves:<\/strong> '+r.waves+'<\/span>' +\n                    '<span style=\"font-size:14px;\">&#128168; <strong>Wind:<\/strong> '+r.wind+'<\/span>' +\n                '<\/div>' +\n                noteHtml + photoHint +\n                '<div style=\"display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid #f3f4f6;\">' +\n                    '<button type=\"button\" onclick=\"upwellOpenShare(\\''+shareSnippet+'\\')\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:8px;font-size:13px;cursor:pointer;color:#374151;font-weight:bold;\">&#128257; Share<\/button>' +\n                    '<button type=\"button\" onclick=\"upwellLiveReportEmailSupport(\\''+r.cardId+'\\')\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:#eff6ff;border:1px solid #93c5fd;border-radius:8px;font-size:13px;cursor:pointer;color:#1d4ed8;font-weight:bold;\" title=\"Email support about this report\">&#9993; Message<\/button>' +\n                    '<button type=\"button\" onclick=\"upwellLiveReportOpenChat(\\''+r.cardId+'\\')\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:#ecfdf5;border:1px solid #6ee7b7;border-radius:8px;font-size:13px;cursor:pointer;color:#047857;font-weight:bold;\" title=\"Private chat or email\">&#128172; Chat<\/button>' +\n                    '<a href=\"'+fbUrl+'\" target=\"_blank\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:#1877f2;color:white;border-radius:8px;font-size:13px;text-decoration:none;font-weight:bold;\">&#128441; FB<\/a>' +\n                    '<a href=\"'+twUrl+'\" target=\"_blank\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:#000;color:white;border-radius:8px;font-size:13px;text-decoration:none;font-weight:bold;\">&#10006; X<\/a>' +\n                    '<a href=\"'+waUrl+'\" target=\"_blank\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:#25d366;color:white;border-radius:8px;font-size:13px;text-decoration:none;font-weight:bold;\">&#128241; WA<\/a>' +\n                    '<a href=\"https:\/\/www.instagram.com\" target=\"_blank\" style=\"display:flex;align-items:center;gap:5px;padding:7px 13px;background:linear-gradient(45deg,#f09433,#e6683c,#dc2743,#cc2366,#bc1888);color:white;border-radius:8px;font-size:13px;text-decoration:none;font-weight:bold;\">&#127758; IG<\/a>' +\n                '<\/div>' +\n            '<\/div>';\n\n        if (prepend) {\n            container.insertBefore(card, container.firstChild);\n        } else {\n            container.appendChild(card);\n        }\n    }\n\n    \/\/ \u2500\u2500 Delete card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellDeleteCard(cardId) {\n        if (!confirm('Delete this surf report?')) return;\n        upwellRemoveStoredReport(cardId);          \/\/ remove from localStorage\n        try { delete window.upwellReportCardData[cardId]; } catch (e) {}\n        var card = document.getElementById(cardId);\n        if (card) {\n            card.style.transition = 'opacity 0.3s';\n            card.style.opacity = '0';\n            setTimeout(function(){ if (card.parentNode) card.parentNode.removeChild(card); }, 300);\n        }\n    }\n\n    \/\/ \u2500\u2500 Share modal (full-screen panel) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellOpenShare(encodedText) {\n        var text = decodeURIComponent(encodedText);\n        upwellShareText = text;\n        document.getElementById('upwellShareDesc').textContent = text;\n        var enc = encodeURIComponent(text);\n        var urlEnc = encodeURIComponent(upwellShareUrl);\n        document.getElementById('upwellShareFB').href = 'https:\/\/www.facebook.com\/sharer\/sharer.php?u='+urlEnc+'&quote='+enc;\n        document.getElementById('upwellShareTW').href = 'https:\/\/twitter.com\/intent\/tweet?text='+enc+'&url='+urlEnc;\n        document.getElementById('upwellShareWA').href = 'https:\/\/wa.me\/?text='+encodeURIComponent(text+' '+upwellShareUrl);\n        document.getElementById('upwellCopiedMsg').style.display = 'none';\n        document.getElementById('upwellShareModal').style.display = 'flex';\n        document.body.style.overflow = 'hidden';\n    }\n    function upwellCloseShare(e) {\n        if (e && e.target !== document.getElementById('upwellShareModal')) return;\n        document.getElementById('upwellShareModal').style.display = 'none';\n        document.body.style.overflow = '';\n    }\n    function upwellCopyLink() {\n        var textToCopy = upwellShareText + ' ' + upwellShareUrl;\n        if (navigator.clipboard) {\n            navigator.clipboard.writeText(textToCopy).then(function(){\n                document.getElementById('upwellCopiedMsg').style.display = 'block';\n            });\n        } else {\n            var ta = document.createElement('textarea');\n            ta.value = textToCopy; document.body.appendChild(ta); ta.select();\n            document.execCommand('copy'); document.body.removeChild(ta);\n            document.getElementById('upwellCopiedMsg').style.display = 'block';\n        }\n    }\n\n    \/\/ \u2500\u2500 Lightbox \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellOpenLightbox(src) {\n        document.getElementById('upwellLightboxImg').src = src;\n        document.getElementById('upwellLightbox').style.display = 'flex';\n        document.body.style.overflow = 'hidden';\n    }\n    function upwellCloseLightbox() {\n        document.getElementById('upwellLightbox').style.display = 'none';\n        document.body.style.overflow = '';\n    }\n\n    \/\/ \u2500\u2500 Ad card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function upwellInsertAdCard() {\n        var container = document.getElementById('liveReportsContainer');\n        var adPool = [\n            { icon:'&#128665;', color:'#dc2626', title:'MacPhee Ford &mdash; 2026 Bronco', sub:'Halifax, NS &bull; What is your car worth?', href:'https:\/\/www.macpheeford.com', btnLabel:'&#127760; Visit', btnColor:'#3b82f6' },\n            { icon:'&#127968;', color:'#f59e0b', title:'Mark Savoia &mdash; Costa Rica Real Estate', sub:'Beach homes, surf-side listings &amp; land', href:'mailto:support@upwellsurf.com?subject=Real+Estate', btnLabel:'&#9993; Contact', btnColor:'#f59e0b' },\n            { icon:'&#127940;', color:'#3b82f6', title:'North East Used Boards', sub:'Quality used surfboards &amp; ding repair', href:'tel:+19024788887', btnLabel:'&#128222; Call', btnColor:'#10b981' },\n            { icon:'&#127908;', color:'#d4a017', title:'Podcast: Didijustbuymygrandmothershouse', sub:'7-day free trial \u00b7 $9.99\/mo', href:'https:\/\/www.didijustbuymygrandmothershouse.store', btnLabel:'Subscribe', btnColor:'#d4a017' }\n        ];\n        var ad = adPool[Math.floor((upwellLiveSubmitCount \/ 3 - 1)) % adPool.length];\n        var adCard = document.createElement('div');\n        adCard.style.cssText = 'border-radius:12px; padding:18px 20px; margin-bottom:14px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; background:linear-gradient(135deg,#1e40af 0%,#3730a3 50%,'+ad.color+' 100%); color:white;';\n        adCard.innerHTML =\n            '<div style=\"display:flex;align-items:center;gap:14px;\">' +\n                '<span style=\"font-size:28px;\">'+ad.icon+'<\/span>' +\n                '<div><h5 style=\"margin:0 0 3px 0;font-size:15px;font-weight:bold;\">&#128226; Sponsored &mdash; '+ad.title+'<\/h5>' +\n                '<p style=\"margin:0;font-size:13px;opacity:0.9;\">'+ad.sub+'<\/p><\/div>' +\n            '<\/div>' +\n            '<a href=\"'+ad.href+'\" target=\"_blank\" style=\"background:'+ad.btnColor+';color:white;padding:9px 20px;border-radius:8px;font-weight:bold;font-size:14px;text-decoration:none;white-space:nowrap;\">'+ad.btnLabel+'<\/a>';\n        container.insertBefore(adCard, container.firstChild);\n    }\n\n    \/\/ \u2500\u2500 Drag-and-drop + restore saved reports on page load \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    document.addEventListener('DOMContentLoaded', function() {\n\n        \/\/ Restore Pro auth session (cookie\/session) and show login gate if needed\n        upwellCheckProAuth().then(function() {\n            upwellUpdateAuthUI();\n            var spot = upwellSelectedSpot();\n            if (upwellCurrentUser && spot) {\n                upwellLoadPro24(spot);\n            }\n        });\n\n        var proBtn = document.getElementById('upwellPro24Btn');\n        if (proBtn && !proBtn._upwellBound) {\n            proBtn.addEventListener('click', function(e) {\n                e.preventDefault();\n                upwellOpenPro24();\n            });\n            proBtn._upwellBound = true;\n        }\n\n        \/\/ Drag-and-drop\n        var dz = document.getElementById('upwellDropZone');\n        if (dz) {\n            dz.addEventListener('dragover', function(e){ e.preventDefault(); dz.style.background='#dcfce7'; });\n            dz.addEventListener('dragleave', function(){ dz.style.background='#f0fdf4'; });\n            dz.addEventListener('drop', function(e){\n                e.preventDefault(); dz.style.background='#f0fdf4';\n                var files = e.dataTransfer.files;\n                if (files && files[0]) { var fi=document.getElementById('upwellFileInput'); fi.files=files; upwellPreviewPhoto(fi); }\n            });\n        }\n\n        \/\/ Restore persisted reports (newest-first order already in array)\n        var saved = upwellLoadReports();\n        if (saved.length > 0) {\n            \/\/ Render oldest\u2192newest so newest ends up on top after prepend loop\n            for (var i = saved.length - 1; i >= 0; i--) {\n                upwellRenderReportCard(saved[i], true);\n            }\n            upwellLiveSubmitCount = saved.length;\n        }\n    });\n    <\/script>\n    \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-145","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/pages\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":82,"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/pages\/145\/revisions"}],"predecessor-version":[{"id":1374,"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/pages\/145\/revisions\/1374"}],"wp:attachment":[{"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/media?parent=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}