{"id":1389,"date":"2026-03-27T16:57:06","date_gmt":"2026-03-27T16:57:06","guid":{"rendered":"https:\/\/upwellsurf.com\/?page_id=1389"},"modified":"2026-03-27T16:57:20","modified_gmt":"2026-03-27T16:57:20","slug":"upwellsurf-forecast","status":"publish","type":"page","link":"https:\/\/upwellsurf.com\/testapp","title":{"rendered":"upwellsurf forecast"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">    <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    .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-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-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    <\/style>\n\n    <div id=\"upwell-forecast-wrap\">\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 style=\"margin: 0; font-size: 20px; font-weight: 600;\">Rain showers<\/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=\"upwellForecastOpenListingModal();\" aria-label=\"View property listing and contact\">\n                            \ud83c\udfe0 View listing &amp; contact                        <\/button>\n                                                <div class=\"upwell-storm-listing-thumb-wrap\">\n                            <button type=\"button\" class=\"upwell-storm-listing-thumb\" onclick=\"upwellForecastOpenListingModal();\" aria-label=\"Open property listing\">\n                                <img src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/Upwellsurf-maison-a-vendre.png\" alt=\"Upwellsurf \u2014 6 bedroom investment (maison \u00e0 vendre)\" loading=\"lazy\" decoding=\"async\" width=\"380\" height=\"254\">\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=\"upwellForecastListingModal\" class=\"upwell-re-modal\" aria-hidden=\"true\">\n    <div class=\"upwell-re-modal-backdrop\" onclick=\"upwellForecastCloseListingModal()\"><\/div>\n    <div class=\"upwell-re-modal-panel\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"upwell-re-modal-title\">\n        <button type=\"button\" class=\"upwell-re-modal-close\" onclick=\"upwellForecastCloseListingModal()\" aria-label=\"Close\">\u00d7<\/button>\n        <div class=\"upwell-re-modal-scroll\">\n                        <div class=\"upwell-re-gallery\" data-count=\"1\">\n                <div class=\"upwell-re-gallery-stage\">\n                                        <img id=\"upwellForecastGalleryMain\" class=\"upwell-re-gallery-main\" src=\"https:\/\/upwellsurf.com\/wp-content\/plugins\/upwell-surf\/assets\/Upwellsurf-maison-a-vendre.png\" alt=\"Upwellsurf \u2014 6 bedroom investment (maison \u00e0 vendre)\" 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\">For sale<\/span>\n                                            <\/div>\n                <\/div>\n                            <\/div>\n                                                <div class=\"upwell-re-video-wrap\">\n                <p class=\"upwell-re-video-title\">Video tour<\/p>\n                <iframe class=\"upwell-re-video-iframe\" src=\"https:\/\/www.youtube.com\/embed\/XbuF7V_MVoU\" title=\"Listing video tour\" loading=\"lazy\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n            <\/div>\n            \n            <div class=\"youtube-support-listing-card upwell-re-modal-card\">\n                                <h3 class=\"upwell-listing-card-price\" id=\"upwell-re-modal-title\">C$1,299,000<\/h3>\n                <p class=\"upwell-listing-card-price-secondary\">\u00a3735,000 GBP \u00b7 US$905,000<\/p>                <p class=\"upwell-listing-card-address\">Upwellsurf listing 6 bedroom investment \u00b7 maison \u00e0 vendre<\/p>                <div class=\"upwell-listing-card-stats\">\n                    <span>6 bd<\/span>                                                        <\/div>\n                <div style=\"display:grid; grid-template-columns:1fr; gap:8px; margin-top:10px; font-size:14px;\">\n                    <div><strong>Property<\/strong> \u2014 Single family \/ investment<\/div>                    <div><strong>Showings<\/strong> \u2014 By appointment<\/div>                                    <\/div>\n                <h4 style=\"margin:18px 0 8px;font-size:15px;color:#0f172a;\">What&#039;s special<\/h4><ul style=\"margin:0 0 12px 1.1em;padding:0;font-size:14px;line-height:1.55;color:#334155;\"><li style=\"margin:4px 0;\">6 bedroom investment property<\/li><li style=\"margin:4px 0;\">Large shingle home with wraparound porch<\/li><li style=\"margin:4px 0;\">Rural \/ coastal setting \u2014 mature trees<\/li><li style=\"margin:4px 0;\">Modern railing &amp; exterior updates<\/li><li style=\"margin:4px 0;\">Ideal for multi-generational or rental income<\/li><li style=\"margin:4px 0;\">Contact Upwell Surf for details<\/li><\/ul>                <div class=\"upwell-listing-card-desc\"><p>Upwellsurf | 6 Bedroom Investment \u2014 pricing shown in GBP, USD, and CAD on listing artwork. Replace this copy and facts in WordPress Property listing settings after you connect listing or your brochure.<\/p>\n<\/div>                                <p style=\"margin:14px 0 0 0; font-size:14px;\"><a href=\"mailto:support%40upwellsurf.com?subject=Inquiry%20%E2%80%94%20Upwellsurf%206%20bedroom%20investment&#038;body=Hi%2C%0A%0AI%27d%20like%20to%20schedule%20a%20showing.%0A%0AProperty%3A%20Single%20family%20%2F%20investment%0AAddress%3A%20Upwellsurf%20listing%206%20bedroom%20investment%20%C2%B7%20maison%20%C3%A0%20vendre%0A%0APreferred%20date%3A%0APreferred%20time%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;\">Schedule a showing (email)<\/a><\/p>\n            <\/div>\n\n            <form id=\"upwellListingInquiryForm\" class=\"upwell-re-modal-form\" onsubmit=\"return upwellSendListingInquiry(event);\"\n                data-contact-email=\"support@upwellsurf.com\"\n                data-mail-subject=\"Inquiry \u2014 Upwellsurf 6 bedroom investment\"\n                style=\"font-family:sans-serif;\">\n\n                <h2 style=\"margin-top:0;\">Schedule a showing \/ request info<\/h2>\n\n                <input type=\"text\" name=\"Name\" id=\"upwellListingName\" placeholder=\"Your Name\" required\n                    style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\">\n\n                <input type=\"email\" name=\"Email\" id=\"upwellListingEmail\" placeholder=\"Your Email\" required\n                    style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\">\n\n                <input type=\"tel\" name=\"Phone\" id=\"upwellListingPhone\" placeholder=\"Phone Number\"\n                    style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\">\n\n                <fieldset style=\"margin:12px 0; padding:12px 14px; border:1px solid #e5e7eb; border-radius:10px; background:#fafafa;\">\n                    <legend style=\"font-weight:700; color:#1e40af; padding:0 6px;\">Schedule a showing<\/legend>\n                    <p style=\"margin:0 0 10px 0; font-size:13px; color:#57534e;\">Optional \u2014 we will confirm by email.<\/p>\n                    <div class=\"upwell-listing-showing-grid\">\n                        <label style=\"display:block; font-size:14px; font-weight:600;\">Preferred date<br>\n                            <input type=\"date\" id=\"upwellListingShowingDate\" style=\"width:100%; padding:10px; margin-top:4px; border-radius:8px; border:1px solid #ccc;\">\n                        <\/label>\n                        <label style=\"display:block; font-size:14px; font-weight:600;\">Preferred time<br>\n                            <select id=\"upwellListingShowingTime\" style=\"width:100%; padding:10px; margin-top:4px; border-radius:8px; border:1px solid #ccc;\">\n                                <option value=\"\">Select\u2026<\/option>\n                                <option value=\"Morning (before noon)\">Morning (before noon)<\/option>\n                                <option value=\"Afternoon (noon\u20135pm)\">Afternoon (noon\u20135pm)<\/option>\n                                <option value=\"Evening (after 5pm)\">Evening (after 5pm)<\/option>\n                                <option value=\"Flexible\">Flexible<\/option>\n                            <\/select>\n                        <\/label>\n                    <\/div>\n                <\/fieldset>\n\n                <textarea name=\"Message\" id=\"upwellListingMessage\" placeholder=\"Questions or details about the listing\u2026\"\n                    rows=\"5\"\n                    style=\"width:100%; padding:12px; margin:8px 0; border-radius:8px; border:1px solid #ccc;\"><\/textarea>\n\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        <\/div>\n    <\/div>\n<\/div>\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        <!-- 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\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 onclick=\"upwellShowForecast()\" class=\"upwell-btn-primary\">Get 7-Day Forecast<\/button>\n        <\/div>\n\n        <!-- FORECAST OUTPUT -->\n        <div id=\"upwell-forecast-output\"><\/div>\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 to Post<\/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 with your email to post live surf reports, photos &amp; conditions.<\/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 style=\"margin:0 0 6px 0; color:#111827; font-size:20px;\">Join Upwell Surf<\/h3>\n                <p style=\"margin:0 0 24px 0; font-size:14px; color:#6b7280;\">Sign in with your email to post live reports, upload photos &amp; share conditions with the surf community.<\/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:\/\/open.spotify.com\/show\/0U1Pn78J9vV3WGIGyLTX8H?si=8Oxu7qkHS2m7lYgSkt_o5Q\" target=\"_blank\" style=\"display: inline-block; background: #1db954; 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\udf99\ufe0f Podcast<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Didijustbuymygrandmothershouse<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                    <a href=\"mailto:support@upwellsurf.com?subject=24 Pro Report 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\udcca 24 Pro Report<\/a>\n                    <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Professional reports<\/p>\n                <\/div>\n                <div style=\"text-align: center;\">\n                                        <button type=\"button\" onclick=\"upwellForecastOpenListingModal();\" 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; border: none; cursor: pointer; font-size: inherit; font-family: inherit;\">\ud83e\udd1d Agent<\/button>\n                                        <p style=\"font-size: 12px; color: #666; margin-top: 5px;\">Mark Maroia<\/p>\n                <\/div>\n            <\/div>\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: #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\\\" role=\\\"button\\\" tabindex=\\\"0\\\"\\n    aria-label=\\\"Open property listing with photos\\\"\\n    onclick=\\\"upwellForecastOpenListingModal()\\\"\\n    onkeydown=\\\"if(event.key==='Enter'||event.key===' '){event.preventDefault();upwellForecastOpenListingModal();}\\\">\\n    <div class=\\\"upwell-re-listing-teaser-figure\\\" onclick=\\\"upwellForecastOpenListingModal()\\\" aria-label=\\\"Open property details\\\">\\n        <img class=\\\"upwell-re-listing-teaser-img\\\" src=\\\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/Upwellsurf-maison-a-vendre.png\\\" alt=\\\"Upwellsurf \\u2014 6 bedroom investment (maison \\u00e0 vendre)\\\" loading=\\\"lazy\\\" decoding=\\\"async\\\" width=\\\"1200\\\" height=\\\"630\\\" onclick=\\\"upwellForecastOpenListingModal()\\\">\\n        <span class=\\\"upwell-re-listing-teaser-listing-hint\\\" aria-hidden=\\\"true\\\">Tap photo for more details<\\\/span>\\n            <\\\/div>\\n    <div class=\\\"upwell-re-listing-teaser-body\\\">\\n        <span class=\\\"upwell-re-listing-teaser-badge\\\">\\ud83c\\udfe0 Featured listing<\\\/span>\\n        <span class=\\\"upwell-listing-status-pill upwell-listing-status-for-sale\\\">For sale<\\\/span>\\n        <p class=\\\"upwell-re-listing-teaser-price\\\">C$1,299,000<\\\/p>\\n        <p class=\\\"upwell-re-listing-teaser-addr\\\">Upwellsurf listing 6 bedroom investment \\u00b7 maison \\u00e0 vendre<\\\/p>        <p class=\\\"upwell-re-listing-teaser-addr\\\" style=\\\"margin-top:4px;\\\">Upwellsurf | 6 Bedroom Investment \\u00b7 735,000 GBP \\u00b7 905,000 USD \\u00b7 1,299,000 CAD<\\\/p>        <p class=\\\"upwell-re-listing-teaser-stats\\\">6 bd<\\\/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();upwellForecastOpenListingModal();\\\" aria-label=\\\"More info for this listing\\\">\\n            More info        <\\\/button>\\n    <\\\/div>\\n<\\\/div>\\n\";\n    var UPWELL_FORECAST_RE = {\"mailtoHref\":\"mailto:support@upwellsurf.com?subject=Real%20Estate%20inquiry\",\"perSpotEnabled\":false,\"spotListings\":[]};\n    window.upwellForecastListingGallery = [{\"url\":\"https:\\\/\\\/upwellsurf.com\\\/wp-content\\\/plugins\\\/upwell-surf\\\/assets\\\/Upwellsurf-maison-a-vendre.png\",\"alt\":\"Upwellsurf \\u2014 6 bedroom investment (maison \\u00e0 vendre)\"}];\n    window.upwellForecastGalleryIdx = 0;\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    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 upwellAds = [\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: '\u2709\ufe0f Request', href: 'mailto:support@upwellsurf.com?subject=24+Pro+Report+Request', 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: '#1db954',\n            title: 'Podcast: Didijustbuymygrandmothershouse',\n            sub: 'Boat drama on Spotify',\n            btns: [\n                { label: '\ud83c\udfa7 Listen', href: 'https:\/\/open.spotify.com\/show\/0U1Pn78J9vV3WGIGyLTX8H', bg: '#1db954' }\n            ]\n        }\n    ];\n\n    \/** Fixed real-estate promo between each day\u2019s forecast table and the rotating sponsor strip. *\/\n    function upwellRealEstateBetweenForecastHtml(spot) {\n        var cfg = (typeof UPWELL_FORECAST_RE === 'object' && UPWELL_FORECAST_RE) ? UPWELL_FORECAST_RE : {};\n        var href = (cfg.mailtoHref && String(cfg.mailtoHref)) || 'mailto:support@upwellsurf.com?subject=Real%20Estate%20inquiry';\n        var spotName = (spot && typeof spot === 'string') ? spot : '';\n        var usePerSpot = !!cfg.perSpotEnabled;\n        var listing = null;\n        if (usePerSpot && cfg.spotListings && typeof cfg.spotListings === 'object' && spotName && cfg.spotListings[spotName]) {\n            listing = cfg.spotListings[spotName];\n        }\n        var title = 'Costa Rica real estate';\n        var subtitle = 'Mark Savoia - beach homes, surf-side listings and land';\n        if (listing && typeof listing === 'object') {\n            var addr = [listing.address || '', listing.city_region || ''].join(' ').trim();\n            var price = listing.price_primary || '';\n            if (price || addr) {\n                title = (spotName || 'Selected spot') + ' listing';\n                subtitle = [price, addr].filter(Boolean).join(' - ');\n            } else if (spotName) {\n                title = spotName + ' real estate';\n                subtitle = 'Beach homes, surf-side listings and land near ' + spotName;\n            }\n            if (listing.contact_email && String(listing.contact_email).indexOf('@') > 0) {\n                href = 'mailto:' + String(listing.contact_email) + '?subject=' + encodeURIComponent('Listing inquiry \u2014 ' + (spotName || 'Forecast spot'));\n            }\n        } else if (spotName) {\n            title = spotName + ' real estate';\n            subtitle = 'Beach homes, surf-side listings and land near ' + spotName;\n        }\n        return '<div class=\"upwell-ad-divider\" style=\"background:linear-gradient(135deg,#0f172a 0%,#92400e 50%,#f59e0b 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 Featured &mdash; ' + upwellHtmlEscape(title) + '<\/h5>' +\n                    '<p>' + upwellHtmlEscape(subtitle) + '<\/p>' +\n                '<\/div>' +\n            '<\/div>' +\n            '<div class=\"ad-buttons\">' +\n                '<a href=\"' + href + '\" class=\"upwell-ad-btn\" style=\"background:#f59e0b;\">\u2709\ufe0f Contact<\/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 + ';\">' + ad.btns[i].label + '<\/a>';\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: '10\u00b0C', period: '10-12s', waterTemp: 1 },\n        'Martinique Beach':   { baseWave: [1,2], waveRange: 4, windBase: 'Variable',     temp: '10\u00b0C', period: '9-11s',  waterTemp: 1  },\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        var rows = [];\n        var hours = [6,9,12,15,18,21];\n        var base = profile.baseWave;\n        var range = profile.waveRange;\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            \/\/ Water temp: slight rise midday (solar heating), small daily drift\n            var waterTempVariation = (dayOffset * 0.1) + (hr >= 12 && hr <= 15 ? 0.5 : 0);\n            var waterTempVal = (baseWaterTemp + waterTempVariation).toFixed(1);\n            rows.push({\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 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    function upwellShowForecast() {\n        var spot = document.getElementById('surfSpot').value;\n        if (!spot) { alert('Please select a surf spot first!'); return; }\n\n        var profile = upwellSpotProfiles[spot] || upwellSpotProfiles['Lawrencetown Beach'];\n        var output = document.getElementById('upwell-forecast-output');\n\n        var today = new Date();\n        var html = '<h2 style=\"color:#1e40af;text-align:center;margin-bottom:20px;\">\ud83d\udccd ' + spot + ' \u2014 7-Day Hourly Forecast<\/h2>';\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\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\">Waves: ' + firstRow.waves + ' &bull; Water: ' + firstRow.waterTemp + ' &bull; Best: ' + bestRow.time + ' (' + bestRow.rating + ')<\/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\n            html += '<\/div>'; \/\/ close day-block\n\n            \/\/ \u2500\u2500 After each day: listing teaser only when configured; else fixed RE strip + rotating sponsor \u2500\u2500\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 {\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    \/\/ \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 Persist users to localStorage \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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 upwellSaveUsers() {\n        localStorage.setItem('upwellUsers', JSON.stringify(upwellUsers));\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() {\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 (!upwellUsers[email]) { upwellShowLoginError('No account found. Please register first.'); return; }\n        if (upwellUsers[email].password !== btoa(pass)) { upwellShowLoginError('Incorrect password.'); return; }\n        upwellCurrentUser = { name: upwellUsers[email].name, email: email };\n        upwellCloseLogin();\n        upwellUpdateAuthUI();\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 (upwellUsers[email]) { upwellShowLoginError('An account with this email already exists.'); return; }\n        upwellUsers[email] = { name: name, password: btoa(pass) };\n        upwellSaveUsers();\n        upwellCurrentUser = { name: name, email: email };\n        upwellCloseLogin();\n        upwellUpdateAuthUI();\n    }\n    function upwellForgotPassword() {\n        var email = (document.getElementById('upwellLoginEmail').value || '').trim().toLowerCase();\n        if (!email) { upwellShowLoginError('Enter your email above, then click Forgot password.'); return; }\n        if (!upwellUsers[email]) { upwellShowLoginError('No account found for that email.'); return; }\n        alert('Password reset link would be sent to: ' + email + '\\n\\n(Connect to your mail server to enable real resets.)');\n    }\n    function upwellLogout() {\n        upwellCurrentUser = null;\n        upwellUpdateAuthUI();\n    }\n    function upwellUpdateAuthUI() {\n        var loggedIn = !!upwellCurrentUser;\n        document.getElementById('upwellLoginBtn').style.display    = loggedIn ? 'none'  : 'inline-block';\n        document.getElementById('upwellAddReportBtn').style.display = loggedIn ? 'inline-block' : 'none';\n        document.getElementById('upwellLogoutBtn').style.display   = loggedIn ? 'inline-block' : 'none';\n        document.getElementById('upwellLoginHint').style.display   = loggedIn ? 'none'  : 'block';\n        var badge = document.getElementById('upwellUserBadge');\n        if (loggedIn) {\n            badge.textContent = '&#128100; ' + upwellCurrentUser.name;\n            badge.style.display = 'inline-block';\n            badge.innerHTML = '&#128100; ' + upwellCurrentUser.name;\n        } else {\n            badge.style.display = 'none';\n        }\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:'#1db954', title:'Podcast: Didijustbuymygrandmothershouse', sub:'Boat drama &mdash; Spotify', href:'https:\/\/open.spotify.com\/show\/0U1Pn78J9vV3WGIGyLTX8H', btnLabel:'&#127911; Listen', btnColor:'#1db954' }\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        \/\/ 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    <\/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,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-1389","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\/1389","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=1389"}],"version-history":[{"count":2,"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/pages\/1389\/revisions"}],"predecessor-version":[{"id":1392,"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/pages\/1389\/revisions\/1392"}],"wp:attachment":[{"href":"https:\/\/upwellsurf.com\/index.php\/wp-json\/wp\/v2\/media?parent=1389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}