{"id":207,"date":"2026-03-25T07:53:08","date_gmt":"2026-03-25T07:53:08","guid":{"rendered":"https:\/\/freedomfest.visiondesigning.com\/?page_id=207"},"modified":"2026-06-11T10:08:32","modified_gmt":"2026-06-11T10:08:32","slug":"home","status":"publish","type":"page","link":"https:\/\/sandbarvibes.us\/","title":{"rendered":"FREEDOM FEST"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"207\" class=\"elementor elementor-207\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eec06a9 e-flex e-con-boxed e-con e-parent\" data-id=\"eec06a9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c6705d elementor-widget-tablet__width-initial elementor-widget elementor-widget-image\" data-id=\"6c6705d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/sandbarvibes.us\/\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"874\" height=\"285\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_r3qnvor3qnvor3qn-removebg-preview.png\" class=\"attachment-full size-full wp-image-10\" alt=\"\" srcset=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_r3qnvor3qnvor3qn-removebg-preview.png 874w, https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_r3qnvor3qnvor3qn-removebg-preview-300x98.png 300w, https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/Gemini_Generated_Image_r3qnvor3qnvor3qn-removebg-preview-768x250.png 768w\" sizes=\"(max-width: 874px) 100vw, 874px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9cb8cb3 e-con-full e-flex e-con e-parent\" data-id=\"9cb8cb3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5138a991 e-flex e-con-boxed e-con e-parent\" data-id=\"5138a991\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-485372b0 elementor-widget__width-initial elementor-widget-mobile__width-inherit elementor-countdown--label-block elementor-widget elementor-widget-countdown\" data-id=\"485372b0\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation_tablet&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"countdown.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-countdown-wrapper\" data-date=\"1783123140\">\r\n\t\t\t<div class=\"elementor-countdown-item\"><span class=\"elementor-countdown-digits elementor-countdown-days\"><\/span> <span class=\"elementor-countdown-label\">Days<\/span><\/div><div class=\"elementor-countdown-item\"><span class=\"elementor-countdown-digits elementor-countdown-hours\"><\/span> <span class=\"elementor-countdown-label\">Hours<\/span><\/div><div class=\"elementor-countdown-item\"><span class=\"elementor-countdown-digits elementor-countdown-minutes\"><\/span> <span class=\"elementor-countdown-label\">Minutes<\/span><\/div><div class=\"elementor-countdown-item\"><span class=\"elementor-countdown-digits elementor-countdown-seconds\"><\/span> <span class=\"elementor-countdown-label\">Seconds<\/span><\/div>\t\t<\/div>\r\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3c06962 e-flex e-con-boxed e-con e-parent\" data-id=\"3c06962\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5ddce40 elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-html\" data-id=\"5ddce40\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation_mobile&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/@tabler\/icons-webfont@latest\/tabler-icons.min.css\">\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Syne:wght@400;500;600;700;800&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n.event-bar { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 14px; font-family: 'Syne', sans-serif; }\r\n.event-item { display: flex; align-items: center; gap: 6px; }\r\n.event-item span { font-size: 22px; color: #ffffff; font-weight: 600; white-space: nowrap; text-transform: uppercase; }\r\n.event-item i { font-size: 20px; color: #ef4444; }\r\n.event-divider { width: 1px; height: 18px; background: rgba(255,255,255,0.25); flex-shrink: 0; }\r\n@media (min-width: 481px) and (max-width: 1024px) {\r\n  .event-item span { font-size: 18.3px; }\r\n}\r\n@media (max-width: 480px) {\r\n  .event-bar { flex-direction: column; gap: 5px; align-items: center; }\r\n  .event-divider { width: 30px; height: 1px; }\r\n  .event-item span { font-size: 16px; }\r\n  .event-item i { font-size: 15px; }\r\n}\r\n<\/style>\r\n<div class=\"event-bar\">\r\n  <div class=\"event-item\">\r\n    <i class=\"ti ti-map-pin\"><\/i>\r\n    <span>Boca Grande Sand Bar<\/span>\r\n  <\/div>\r\n  <div class=\"event-divider\"><\/div>\r\n  <div class=\"event-item\">\r\n    <i class=\"ti ti-calendar-event\"><\/i>\r\n    <span>July 4th, 2026<\/span>\r\n  <\/div>\r\n  <div class=\"event-divider\"><\/div>\r\n  <div class=\"event-item\">\r\n    <i class=\"ti ti-clock\"><\/i>\r\n    <span>10:00 AM \u2013 3:00 PM<\/span>\r\n  <\/div>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7e193b1 e-flex e-con-boxed e-con e-parent\" data-id=\"7e193b1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-28bc971 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"28bc971\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>2026 Festival Supporters<\/title>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Syne:wght@400;700;800&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n  body {\r\n    margin: 0; padding: 0;\r\n    font-family: 'Syne', sans-serif;\r\n    color: white;\r\n    background: transparent;\r\n  }\r\n\r\n  .sponsors-container {\r\n    padding: 20px 10px;\r\n    max-width: 1400px;\r\n    margin: 0 auto;\r\n    text-align: center;\r\n  }\r\n\r\n  \/* \u2500\u2500 HEADING \u2500\u2500 *\/\r\n  .main-heading {\r\n    font-size: 32px;\r\n    font-weight: 800;\r\n    color: white;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    margin-bottom: 25px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 15px;\r\n  }\r\n  .main-heading::before,\r\n  .main-heading::after {\r\n    content: '';\r\n    flex: 0 0 50px;\r\n    height: 3px;\r\n    background: rgba(255, 255, 255, 0.3); \r\n  }\r\n\r\n  \/* \u2500\u2500 TIER LABEL \u2500\u2500 *\/\r\n  .grid-label {\r\n    display: inline-block;\r\n    font-size: 20px;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    color: white;\r\n    margin-bottom: 15px;\r\n  }\r\n  .grid-label::after {\r\n    content: '';\r\n    display: block;\r\n    width: 50px;\r\n    height: 4px;\r\n    background: #BF0A30;\r\n    margin: 8px auto 0;\r\n  }\r\n\r\n  .brand-group {\r\n    margin-bottom: 40px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    width: 100%;\r\n  }\r\n\r\n  \/* \u2500\u2500 FLEX GRID ROW \u2500\u2500 *\/\r\n  .bento-row {\r\n    display: flex;\r\n    flex-wrap: wrap; \/* Allows cards to wrap to the next line *\/\r\n    justify-content: center;\r\n    gap: 20px;\r\n    width: 100%;\r\n    padding: 15px 0;\r\n  }\r\n\r\n  \/* \u2500\u2500 CARD WRAPPER \u2500\u2500 *\/\r\n  .brand-card {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 15px;\r\n    \/* Default Desktop: 6 cards per line (100% width minus 5 gaps of 20px, divided by 6) *\/\r\n    width: calc((100% - 100px) \/ 6); \r\n    -webkit-tap-highlight-color: transparent;\r\n  }\r\n\r\n  \/* \u2500\u2500 STATIC IMAGE BOX \u2500\u2500 *\/\r\n  .brand-box {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 100%;\r\n    height: 180px;    \r\n    border-radius: 15px; \r\n    overflow: hidden;\r\n    background: #ffffff;\r\n    border: 2px solid #e2e8f0;\r\n    box-shadow: 0 8px 20px rgba(0,0,0,0.06);\r\n    padding: 20px;\r\n    transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), box-shadow 0.3s ease; \r\n  }\r\n\r\n  \/* \u2500\u2500 BUTTON STYLING \u2500\u2500 *\/\r\n  .sponsor-btn {\r\n    text-decoration: none;\r\n    color: #ffffff;\r\n    background: rgba(255, 255, 255, 0.05);\r\n    border: 1px solid rgba(255, 255, 255, 0.3);\r\n    padding: 10px 24px;\r\n    border-radius: 50px;\r\n    font-size: 13px;\r\n    font-weight: 700;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1.5px;\r\n    transition: all 0.3s ease;\r\n    white-space: nowrap; \r\n    -webkit-tap-highlight-color: transparent;\r\n  }\r\n\r\n  \/* \u2500\u2500 HOVER & TOUCH STATES \u2500\u2500 *\/\r\n  .brand-card:hover .brand-box,\r\n  .brand-card.is-touched .brand-box {\r\n    transform: scale(1.05);\r\n    box-shadow: 0 12px 25px rgba(0,0,0,0.15); \r\n  }\r\n\r\n  .brand-card:hover .sponsor-btn,\r\n  .brand-card.is-touched .sponsor-btn,\r\n  .sponsor-btn:focus {\r\n    background: red;\r\n    border-color: red;\r\n    color: #ffffff;\r\n    box-shadow: 0 5px 15px rgba(255, 0, 0, 0.4);\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  \/* \u2500\u2500 LOGO \u2500\u2500 *\/\r\n  .brand-logo {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: contain;\r\n    display: block;\r\n  }\r\n\r\n  \/* =========================================\r\n     RESPONSIVE MEDIA QUERIES\r\n     ========================================= *\/\r\n\r\n  \/* Remove heading lines on smaller screens *\/\r\n  @media (max-width: 1250px) {\r\n    .main-heading::before, .main-heading::after { display: none; }\r\n  }\r\n\r\n  \/* TABLET: 3 Cards per line *\/\r\n  @media (max-width: 1024px) {\r\n    .brand-card {\r\n      \/* 100% width minus 2 gaps of 20px, divided by 3 *\/\r\n      width: calc((100% - 40px) \/ 3);\r\n    }\r\n  }\r\n\r\n  \/* MOBILE: 1 Card per line *\/\r\n  @media (max-width: 600px) {\r\n    .bento-row {\r\n      gap: 30px; \/* A bit more breathing room when stacked *\/\r\n    }\r\n    .brand-card {\r\n      width: 100%; \r\n      max-width: 300px; \/* Stops them from stretching too wide on sideways phones *\/\r\n    }\r\n    .brand-box { height: 160px; }\r\n    .main-heading { font-size: 24px; margin-bottom: 20px; }\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<section class=\"sponsors-container\">\r\n\r\n  <h1 class=\"main-heading\">Festival Supporters<\/h1>\r\n\r\n  <div class=\"brand-group\">\r\n    <span class=\"grid-label\">Hosted By<\/span>\r\n    <div class=\"bento-row\">\r\n      <div class=\"brand-card\" style=\"width: 100%; max-width: 300px;\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/01Artboard-1.jpg\"\r\n               alt=\"Boca Grande Sandbar Associates\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"https:\/\/www.facebook.com\/groups\/bocasandbar\/\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"brand-group\" style=\"margin-bottom: 0;\">\r\n    <span class=\"grid-label\">Sponsors of the Fest<\/span>\r\n    <div class=\"bento-row\">\r\n      \r\n      <div class=\"brand-card\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/01Artboard-3.jpg\"\r\n               alt=\"Harborside Realty\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"https:\/\/www.harborsiderealtyfl.com\/\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"brand-card\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/03\/01Artboard-4.jpg\"\r\n               alt=\"Skipjack\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"https:\/\/skipjackoutfitters.com\/\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"brand-card\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/04\/Untitled-design-1.png\"\r\n               alt=\"Handy Guy Home Services\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"https:\/\/www.thehandyguyhomeservices.com\/\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"brand-card\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/04\/Untitled-design-2.png\"\r\n               alt=\"Vision Designing\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"https:\/\/visiondesigning.com\/\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"brand-card\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/04\/Untitled-design-3.png\"\r\n               alt=\"Festival Sponsor\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"https:\/\/www.facebook.com\/share\/1Ct2DBss46\/?mibextid=wwXIfr\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"brand-card\">\r\n        <div class=\"brand-box\">\r\n          <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/04\/Untitled-design-4.png\"\r\n               alt=\"Festival Sponsor\" class=\"brand-logo\">\r\n        <\/div>\r\n        <a href=\"#\" target=\"_blank\" class=\"sponsor-btn\">Visit Site<\/a> <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/section>\r\n\r\n<script>\r\n  document.addEventListener('DOMContentLoaded', () => {\r\n    const brandCards = document.querySelectorAll('.brand-card');\r\n\r\n    brandCards.forEach(card => {\r\n      card.addEventListener('touchstart', () => {\r\n        card.classList.add('is-touched');\r\n      }, { passive: true });\r\n\r\n      card.addEventListener('touchend', () => {\r\n        card.classList.remove('is-touched');\r\n      });\r\n\r\n      card.addEventListener('touchcancel', () => {\r\n        card.classList.remove('is-touched');\r\n      });\r\n    });\r\n  });\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c58bca9 elementor-widget-mobile__width-initial elementor-widget elementor-widget-html\" data-id=\"c58bca9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n  \/* Base Reset for the container *\/\r\n  .premium-song-request, .premium-song-request * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  \/* Premium Dark Container *\/\r\n  .premium-song-request {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    background: linear-gradient(135deg, #0A192F 0%, #061124 100%);\r\n    border: 1px solid rgba(255, 255, 255, 0.1);\r\n    border-radius: 16px; \r\n    padding: 35px 45px;\r\n    width: 100%; \r\n    max-width: 680px; \r\n    margin: 40px auto;\r\n    font-family: 'Montserrat', 'Segoe UI', Helvetica, Arial, sans-serif;\r\n    position: relative;\r\n    \/* Animation is active here for all devices *\/\r\n    animation: zoomInOutPulse 4s infinite ease-in-out;\r\n  }\r\n\r\n  \/* Zoom In and Out Keyframes *\/\r\n  @keyframes zoomInOutPulse {\r\n    0% { transform: scale(1); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); }\r\n    50% { transform: scale(1.03); box-shadow: 0 15px 40px rgba(211, 47, 47, 0.25); }\r\n    100% { transform: scale(1); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); }\r\n  }\r\n\r\n  \/* Left column *\/\r\n  .psr-left {\r\n    flex: 1;\r\n    text-align: left;\r\n    padding-right: 30px; \r\n  }\r\n\r\n  .psr-left h3 {\r\n    color: #ffffff;\r\n    font-size: 26px;\r\n    font-weight: 700;\r\n    margin: 0 0 8px 0;\r\n    letter-spacing: 0.5px;\r\n  }\r\n\r\n  .psr-left p {\r\n    color: #A8B2C1; \r\n    font-size: 15px;\r\n    margin: 0 0 25px 0;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  \/* Modern button styling *\/\r\n  .psr-btn {\r\n    display: inline-block;\r\n    background-color: #D32F2F; \r\n    color: #ffffff !important;\r\n    padding: 14px 32px;\r\n    text-decoration: none;\r\n    border-radius: 6px; \r\n    font-weight: 700;\r\n    font-size: 14px;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    transition: all 0.3s ease;\r\n    box-shadow: 0 4px 15px rgba(211, 47, 47, 0.3);\r\n    text-align: center;\r\n  }\r\n\r\n  .psr-btn:hover {\r\n    background-color: #E53935;\r\n    box-shadow: 0 6px 20px rgba(211, 47, 47, 0.6);\r\n  }\r\n\r\n  \/* Right column *\/\r\n  .psr-right {\r\n    position: relative;\r\n    display: flex;\r\n    justify-content: center;\r\n  }\r\n\r\n  \/* QR Code styling *\/\r\n  .psr-qr {\r\n    width: 140px !important;\r\n    height: 140px !important;\r\n    max-width: 140px !important;\r\n    display: block;\r\n    border-radius: 8px;\r\n    background: #ffffff;\r\n    padding: 6px; \r\n    transition: transform 0.3s ease;\r\n  }\r\n\r\n  .psr-qr:hover {\r\n    transform: scale(1.05);\r\n  }\r\n\r\n  \/* --- RESPONSIVE BREAKPOINTS --- *\/\r\n\r\n  \/* Tablets and smaller screens (under 768px) *\/\r\n  @media (max-width: 768px) {\r\n    .premium-song-request {\r\n      max-width: 560px;\r\n      flex-direction: column;\r\n      padding: 30px 25px;\r\n      margin: 20px auto;\r\n      \/* The animation rule has been removed from here so it keeps running! *\/\r\n      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);\r\n    }\r\n    \r\n    .psr-left {\r\n      text-align: center;\r\n      padding-right: 0;\r\n      margin-bottom: 25px;\r\n      width: 100%;\r\n    }\r\n\r\n    .psr-left h3 {\r\n      font-size: 22px; \r\n    }\r\n\r\n    .psr-left p {\r\n      font-size: 14px; \r\n    }\r\n\r\n    .psr-btn {\r\n      width: 100%; \r\n      padding: 16px 20px;\r\n    }\r\n\r\n    .psr-right {\r\n      width: 100%;\r\n      padding-top: 25px;\r\n      border-top: 1px solid rgba(255, 255, 255, 0.1); \r\n    }\r\n  }\r\n\r\n  \/* Very small mobile phones (under 400px) *\/\r\n  @media (max-width: 400px) {\r\n    .premium-song-request {\r\n      padding: 25px 15px;\r\n    }\r\n    .psr-qr {\r\n      width: 120px !important; \r\n      height: 120px !important;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"premium-song-request\">\r\n  \r\n  <div class=\"psr-left\">\r\n    <h3>Set the Vibe<\/h3>\r\n    <p>Want to hear your favorite track? Scan the QR code or click below to submit your request directly to the DJ.<\/p>\r\n    <a href=\"https:\/\/djrequests.com\/songRequest?access_code=3169\" target=\"_blank\" class=\"psr-btn\">\r\n      Request Songs\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <div class=\"psr-right\">\r\n    <img decoding=\"async\" src=\"https:\/\/sandbarvibes.us\/wp-content\/uploads\/2026\/04\/SongQR.jpg\" alt=\"Scan to Request Songs\" class=\"psr-qr\">\r\n  <\/div>\r\n\r\n<\/div>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-79e1e31 e-con-full e-flex e-con e-child\" data-id=\"79e1e31\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-edc542c e-grid e-con-full e-con e-child\" data-id=\"edc542c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-851cc86 elementor-widget elementor-widget-html\" data-id=\"851cc86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n.ff-rf1-card {\r\n  border-radius: 18px; overflow: hidden;\r\n  border: 2px solid rgba(255,215,0,.28);\r\n  background: rgba(255,255,255,.05);\r\n  max-width: 560px; margin: 0 auto;\r\n}\r\n.ff-rf1-img { position: relative; height: 180px; }\r\n.ff-rf1-img img {\r\n  width: 100%; height: 100%; object-fit: cover;\r\n  display: block; filter: brightness(.55) saturate(1.2);\r\n}\r\n.ff-rf1-img-ov {\r\n  position: absolute; inset: 0;\r\n  background: linear-gradient(180deg, rgba(0,0,0,.1), rgba(0,24,74,.85));\r\n  display: flex; flex-direction: column;\r\n  justify-content: flex-end; padding: 1.2rem 1.3rem;\r\n}\r\n.ff-rf1-img-ov h3 {\r\n  font-family: 'Bebas Neue', sans-serif;\r\n  font-size: 1.9rem; color: #FFD700; line-height: 1; margin: 0;\r\n}\r\n.ff-rf1-spn {\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: .8rem; letter-spacing: .14em;\r\n  text-transform: uppercase; color: rgba(255,255,255,.6); margin-top: .15rem;\r\n}\r\n.ff-rf1-body { padding: 1.5rem; }\r\n.ff-rf1-prize {\r\n  background: rgba(255,215,0,.1); border: 1px solid rgba(255,215,0,.22);\r\n  border-radius: 9px; padding: .7rem .9rem;\r\n  font-size: .9rem; margin-bottom: 1.2rem; line-height: 1.5; color: #fff;\r\n}\r\n.ff-rf1-prize strong {\r\n  color: #FFD700; display: block;\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: .72rem; letter-spacing: .2em;\r\n  text-transform: uppercase; margin-bottom: .18rem;\r\n}\r\n.ff-rf1-form { display: flex; flex-direction: column; gap: .7rem; }\r\n\r\n.ff-rf1-field { display: flex; flex-direction: column; gap: .3rem; }\r\n.ff-rf1-field input {\r\n  background: rgba(255,255,255,.08);\r\n  border: 1px solid rgba(255,255,255,.2);\r\n  border-radius: 7px; padding: .7rem .9rem;\r\n  color: #fff; font-family: 'Barlow', sans-serif;\r\n  font-size: 16px !important; \/* <--- MOBILE ZOOM FIX APPLIED HERE *\/\r\n  outline: none;\r\n  transition: border-color .2s, background .2s; width: 100%;\r\n}\r\n.ff-rf1-field input:focus { border-color: #FFD700; }\r\n.ff-rf1-field input::placeholder { color: rgba(255,255,255,.38); }\r\n.ff-rf1-field input.err {\r\n  border-color: #ff4466 !important;\r\n  background: rgba(255,68,102,.1) !important;\r\n}\r\n.ff-rf1-field .ff-field-err {\r\n  display: none; font-size: .78rem;\r\n  color: #ff8899; padding-left: .3rem;\r\n  font-family: 'Barlow', sans-serif;\r\n}\r\n.ff-rf1-field .ff-field-err.show { display: block; }\r\n\r\n.ff-rf1-btn {\r\n  background: linear-gradient(90deg, #C8102E, #e8243f);\r\n  color: #fff; border: none; border-radius: 7px;\r\n  padding: .82rem; font-family: 'Barlow Condensed', sans-serif;\r\n  font-weight: 700; font-size: 1.05rem; letter-spacing: .1em;\r\n  text-transform: uppercase; cursor: pointer;\r\n  transition: transform .2s, box-shadow .2s; width: 100%;\r\n}\r\n.ff-rf1-btn:hover  { transform: scale(1.03); box-shadow: 0 5px 18px rgba(200,16,46,.5); }\r\n.ff-rf1-btn:disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }\r\n\r\n.ff-rf1-msg {\r\n  display: none; border-radius: 9px;\r\n  padding: .9rem 1rem; margin-top: .75rem;\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: .95rem; line-height: 1.55; text-align: center;\r\n}\r\n.ff-rf1-msg.show    { display: block; }\r\n.ff-rf1-msg.success { background: rgba(0,200,100,.1);  border: 1px solid rgba(0,200,100,.3);  color: #6effa0; }\r\n.ff-rf1-msg.error   { background: rgba(200,16,46,.1);  border: 1px solid rgba(200,16,46,.3);  color: #ff8899; }\r\n.ff-rf1-msg.warning { background: rgba(255,165,0,.1);  border: 1px solid rgba(255,165,0,.35); color: #ffc966; }\r\n.ff-rf1-msg.loading { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12); color: rgba(255,255,255,.6); }\r\n\r\n.ff-sp1 {\r\n  display: inline-block; width: 13px; height: 13px;\r\n  border: 2px solid rgba(255,255,255,.3); border-top-color: #fff;\r\n  border-radius: 50%; animation: ffs1 .7s linear infinite;\r\n  vertical-align: middle; margin-right: .4rem;\r\n}\r\n@keyframes ffs1 { to { transform: rotate(360deg); } }\r\n<\/style>\r\n\r\n<div class=\"ff-rf1-card\">\r\n  <div class=\"ff-rf1-img\">\r\n    <img decoding=\"async\" src=\"https:\/\/skipjackoutfitters.com\/wp-content\/uploads\/2023\/11\/MicrosoftTeams-image-4.png\" alt=\"Raffle 1\" loading=\"lazy\">\r\n    <div class=\"ff-rf1-img-ov\">\r\n      <h3>Raffle #1<\/h3>\r\n      <p class=\"ff-rf1-spn\">BY SKIPJACK OUTFITTERS<\/p>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"ff-rf1-body\">\r\n    <div class=\"ff-rf1-prize\">\r\n      <strong>\ud83c\udfc6 Prize<\/strong>\r\n      Update this with Sponsor #1's actual prize details!\r\n    <\/div>\r\n\r\n    <div class=\"ff-rf1-form\" id=\"ff-r1-form\">\r\n      <div class=\"ff-rf1-field\">\r\n        <input type=\"text\" id=\"ff-r1-name\" placeholder=\"Your Full Name\" maxlength=\"80\">\r\n        <span class=\"ff-field-err\" id=\"ff-r1-name-err\"><\/span>\r\n      <\/div>\r\n      <div class=\"ff-rf1-field\">\r\n        <input type=\"email\" id=\"ff-r1-email\" placeholder=\"Your Email Address\" maxlength=\"100\">\r\n        <span class=\"ff-field-err\" id=\"ff-r1-email-err\"><\/span>\r\n      <\/div>\r\n      <div class=\"ff-rf1-field\">\r\n        <input type=\"tel\" id=\"ff-r1-phone\" placeholder=\"Phone Number\" maxlength=\"20\">\r\n        <span class=\"ff-field-err\" id=\"ff-r1-phone-err\"><\/span>\r\n      <\/div>\r\n      <div class=\"ff-rf1-field\">\r\n        <input type=\"text\" id=\"ff-r1-address\" placeholder=\"Your Address\" maxlength=\"150\">\r\n        <span class=\"ff-field-err\" id=\"ff-r1-address-err\"><\/span>\r\n      <\/div>\r\n      <button class=\"ff-rf1-btn\" id=\"ff-r1-btn\" onclick=\"ffSubmitR1()\">\r\n        \ud83c\udf9f\ufe0f Enter Raffle #1\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div class=\"ff-rf1-msg\" id=\"ff-r1-msg\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u2500\u2500 PASTE YOUR CORRECT WEB APP URL HERE \u2500\u2500\r\nvar FF_URL = 'https:\/\/script.google.com\/macros\/s\/AKfycbwwm3WWfKKQwq_TeAxd8Mju6rPfkb09Y5O7Iu-GGCWPZWiQhsShSJD0DIKOmIvkSIYu\/exec';\r\n\r\nvar FF_RAFFLE_1 = 'Raffle #1 \u2013 SKIPJACK OUTFITTERS';\r\n\r\nfunction ffClearR1() {\r\n  ['name','email','phone','address'].forEach(function(f) {\r\n    document.getElementById('ff-r1-' + f).classList.remove('err');\r\n    var errEl = document.getElementById('ff-r1-' + f + '-err');\r\n    if (errEl) { errEl.textContent = ''; errEl.classList.remove('show'); }\r\n  });\r\n  var msg = document.getElementById('ff-r1-msg');\r\n  msg.className = 'ff-rf1-msg';\r\n  msg.innerHTML = '';\r\n}\r\n\r\nfunction ffMarkR1Field(field, msg) {\r\n  var input = document.getElementById('ff-r1-' + field);\r\n  var errEl = document.getElementById('ff-r1-' + field + '-err');\r\n  if (input) input.classList.add('err');\r\n  if (errEl) { errEl.textContent = '\u26a0 ' + msg; errEl.classList.add('show'); }\r\n}\r\n\r\nfunction ffShowR1Msg(type, html) {\r\n  var el = document.getElementById('ff-r1-msg');\r\n  el.className = 'ff-rf1-msg show ' + type;\r\n  el.innerHTML = html;\r\n}\r\n\r\nfunction ffSubmitR1() {\r\n  var name    = document.getElementById('ff-r1-name').value.trim();\r\n  var email   = document.getElementById('ff-r1-email').value.trim();\r\n  var phone   = document.getElementById('ff-r1-phone').value.trim();\r\n  var address = document.getElementById('ff-r1-address').value.trim();\r\n  var btn     = document.getElementById('ff-r1-btn');\r\n\r\n  ffClearR1();\r\n\r\n  \/\/ \u2500\u2500 Strict Client-side validation \u2500\u2500\r\n  var hasError = false;\r\n  \r\n  if (!name || name.length < 2) {\r\n    ffMarkR1Field('name', 'Please enter your full name.');\r\n    hasError = true;\r\n  }\r\n  \r\n  var emailRegex = \/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/;\r\n  if (!email || !emailRegex.test(email)) {\r\n    ffMarkR1Field('email', 'Please enter a valid email address.');\r\n    hasError = true;\r\n  }\r\n  \r\n  var digitsOnly = phone.replace(\/\\D\/g, ''); \r\n  if (!phone || digitsOnly.length !== 10) {\r\n    ffMarkR1Field('phone', 'Please enter a valid 10-digit phone number.');\r\n    hasError = true;\r\n  }\r\n\r\n  if (!address || address.length < 5) {\r\n    ffMarkR1Field('address', 'Please enter a valid address.');\r\n    hasError = true;\r\n  }\r\n\r\n  if (hasError) return;\r\n\r\n  \/\/ \u2500\u2500 Disable button + show loading \u2500\u2500\r\n  btn.disabled = true;\r\n  ffShowR1Msg('loading', '<span class=\"ff-sp1\"><\/span> Checking & submitting your entry\u2026');\r\n\r\n  \/\/ \u2500\u2500 Build GET URL with params \u2500\u2500\r\n  var url = FF_URL\r\n    + '?action=submit'\r\n    + '&name='    + encodeURIComponent(name)\r\n    + '&email='   + encodeURIComponent(email)\r\n    + '&phone='   + encodeURIComponent(phone)\r\n    + '&address=' + encodeURIComponent(address)\r\n    + '&raffle='  + encodeURIComponent(FF_RAFFLE_1);\r\n\r\n  \/\/ \u2500\u2500 GET request \u2014 fully readable response \u2500\u2500\r\n  fetch(url)\r\n    .then(function(res) { return res.json(); })\r\n    .then(function(data) {\r\n\r\n      if (data.result === 'success') {\r\n        document.getElementById('ff-r1-form').style.display = 'none';\r\n        ffShowR1Msg('success',\r\n          '\ud83c\udf89 You\\'re entered in Raffle #1!<br>' +\r\n          '<span style=\"font-size:.85rem;opacity:.8\">Winner announced live at the Sandbar. Good luck!<\/span>'\r\n        );\r\n      } else if (data.result === 'duplicate') {\r\n        btn.disabled = false;\r\n        ffMarkR1Field(data.field, data.message);\r\n        ffShowR1Msg('warning',\r\n          '\ud83d\udeab ' + data.message + '<br>' +\r\n          '<span style=\"font-size:.82rem;opacity:.75\">Each person may only enter each raffle once.<\/span>'\r\n        );\r\n      } else {\r\n        btn.disabled = false;\r\n        ffShowR1Msg('error', '\u26a0\ufe0f ' + (data.message || 'Something went wrong. Please try again.'));\r\n      }\r\n    })\r\n    .catch(function(err) {\r\n      btn.disabled = false;\r\n      ffShowR1Msg('error', '\u26a0\ufe0f Could not connect. Please check your connection and try again.');\r\n    });\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-92493de elementor-widget elementor-widget-html\" data-id=\"92493de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n.ff-rf2-card {\r\n  border-radius: 18px; overflow: hidden;\r\n  border: 2px solid rgba(255,215,0,.28);\r\n  background: rgba(255,255,255,.05);\r\n  max-width: 560px; margin: 0 auto;\r\n}\r\n.ff-rf2-img { position: relative; height: 180px; }\r\n.ff-rf2-img img {\r\n  width: 100%; height: 100%; object-fit: cover;\r\n  display: block; filter: brightness(.55) saturate(1.2);\r\n}\r\n.ff-rf2-img-ov {\r\n  position: absolute; inset: 0;\r\n  background: linear-gradient(180deg, rgba(0,0,0,.1), rgba(0,24,74,.85));\r\n  display: flex; flex-direction: column;\r\n  justify-content: flex-end; padding: 1.2rem 1.3rem;\r\n}\r\n.ff-rf2-img-ov h3 {\r\n  font-family: 'Bebas Neue', sans-serif;\r\n  font-size: 1.9rem; color: #FFD700; line-height: 1; margin: 0;\r\n}\r\n.ff-rf2-spn {\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: .8rem; letter-spacing: .14em;\r\n  text-transform: uppercase; color: rgba(255,255,255,.6); margin-top: .15rem;\r\n}\r\n.ff-rf2-body { padding: 1.5rem; }\r\n.ff-rf2-prize {\r\n  background: rgba(255,215,0,.1); border: 1px solid rgba(255,215,0,.22);\r\n  border-radius: 9px; padding: .7rem .9rem;\r\n  font-size: .9rem; margin-bottom: 1.2rem; line-height: 1.5; color: #fff;\r\n}\r\n.ff-rf2-prize strong {\r\n  color: #FFD700; display: block;\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: .72rem; letter-spacing: .2em;\r\n  text-transform: uppercase; margin-bottom: .18rem;\r\n}\r\n.ff-rf2-form { display: flex; flex-direction: column; gap: .7rem; }\r\n\r\n.ff-rf2-field { display: flex; flex-direction: column; gap: .3rem; }\r\n.ff-rf2-field input {\r\n  background: rgba(255,255,255,.08);\r\n  border: 1px solid rgba(255,255,255,.2);\r\n  border-radius: 7px; padding: .7rem .9rem;\r\n  color: #fff; font-family: 'Barlow', sans-serif;\r\n  font-size: 16px !important; \/* <--- MOBILE ZOOM FIX APPLIED HERE *\/\r\n  outline: none;\r\n  transition: border-color .2s, background .2s; width: 100%;\r\n}\r\n.ff-rf2-field input:focus { border-color: #FFD700; }\r\n.ff-rf2-field input::placeholder { color: rgba(255,255,255,.38); }\r\n.ff-rf2-field input.err {\r\n  border-color: #ff4466 !important;\r\n  background: rgba(255,68,102,.1) !important;\r\n}\r\n.ff-rf2-field .ff-field-err {\r\n  display: none; font-size: .78rem;\r\n  color: #ff8899; padding-left: .3rem;\r\n  font-family: 'Barlow', sans-serif;\r\n}\r\n.ff-rf2-field .ff-field-err.show { display: block; }\r\n\r\n.ff-rf2-btn {\r\n  background: linear-gradient(90deg, #002868, #0050a0);\r\n  color: #FFD700; border: none; border-radius: 7px;\r\n  padding: .82rem; font-family: 'Barlow Condensed', sans-serif;\r\n  font-weight: 700; font-size: 1.05rem; letter-spacing: .1em;\r\n  text-transform: uppercase; cursor: pointer;\r\n  transition: transform .2s, box-shadow .2s; width: 100%;\r\n}\r\n.ff-rf2-btn:hover  { transform: scale(1.03); box-shadow: 0 5px 18px rgba(0,40,104,.6); }\r\n.ff-rf2-btn:disabled { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; }\r\n\r\n.ff-rf2-msg {\r\n  display: none; border-radius: 9px;\r\n  padding: .9rem 1rem; margin-top: .75rem;\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: .95rem; line-height: 1.55; text-align: center;\r\n}\r\n.ff-rf2-msg.show    { display: block; }\r\n.ff-rf2-msg.success { background: rgba(0,200,100,.1);  border: 1px solid rgba(0,200,100,.3);  color: #6effa0; }\r\n.ff-rf2-msg.error   { background: rgba(200,16,46,.1);  border: 1px solid rgba(200,16,46,.3);  color: #ff8899; }\r\n.ff-rf2-msg.warning { background: rgba(255,165,0,.1);  border: 1px solid rgba(255,165,0,.35); color: #ffc966; }\r\n.ff-rf2-msg.loading { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12); color: rgba(255,255,255,.6); }\r\n\r\n.ff-sp2 {\r\n  display: inline-block; width: 13px; height: 13px;\r\n  border: 2px solid rgba(255,255,255,.3); border-top-color: #fff;\r\n  border-radius: 50%; animation: ffs2 .7s linear infinite;\r\n  vertical-align: middle; margin-right: .4rem;\r\n}\r\n@keyframes ffs2 { to { transform: rotate(360deg); } }\r\n<\/style>\r\n\r\n<div class=\"ff-rf2-card\">\r\n  <div class=\"ff-rf2-img\">\r\n    <img decoding=\"async\" src=\"https:\/\/oqulo-aix.s3.us-west-2.amazonaws.com\/staging\/images\/cml19mwcl00mom2fb0z6xh3zf\/mKGIPmlI5rrZLrC8NU9RU\" alt=\"Raffle 2\" loading=\"lazy\">\r\n    <div class=\"ff-rf2-img-ov\">\r\n      <h3>Raffle #2<\/h3>\r\n      <p class=\"ff-rf2-spn\">BY Harborside Realty &amp; Rental Management<\/p>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"ff-rf2-body\">\r\n    <div class=\"ff-rf2-prize\">\r\n      <strong>\ud83c\udfc6 Prize<\/strong>\r\n      Update this with Sponsor #2's actual prize details!\r\n    <\/div>\r\n\r\n    <div class=\"ff-rf2-form\" id=\"ff-r2-form\">\r\n      <div class=\"ff-rf2-field\">\r\n        <input type=\"text\" id=\"ff-r2-name\" placeholder=\"Your Full Name\" maxlength=\"80\">\r\n        <span class=\"ff-field-err\" id=\"ff-r2-name-err\"><\/span>\r\n      <\/div>\r\n      <div class=\"ff-rf2-field\">\r\n        <input type=\"email\" id=\"ff-r2-email\" placeholder=\"Your Email Address\" maxlength=\"100\">\r\n        <span class=\"ff-field-err\" id=\"ff-r2-email-err\"><\/span>\r\n      <\/div>\r\n      <div class=\"ff-rf2-field\">\r\n        <input type=\"tel\" id=\"ff-r2-phone\" placeholder=\"Phone Number\" maxlength=\"20\">\r\n        <span class=\"ff-field-err\" id=\"ff-r2-phone-err\"><\/span>\r\n      <\/div>\r\n      <div class=\"ff-rf2-field\">\r\n        <input type=\"text\" id=\"ff-r2-address\" placeholder=\"Your Address\" maxlength=\"150\">\r\n        <span class=\"ff-field-err\" id=\"ff-r2-address-err\"><\/span>\r\n      <\/div>\r\n      <button class=\"ff-rf2-btn\" id=\"ff-r2-btn\" onclick=\"ffSubmitR2()\">\r\n        \ud83c\udf9f\ufe0f Enter Raffle #2\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div class=\"ff-rf2-msg\" id=\"ff-r2-msg\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u2500\u2500 PASTE YOUR CORRECT WEB APP URL HERE \u2500\u2500\r\nvar FF_URL_2 = 'https:\/\/script.google.com\/macros\/s\/AKfycbwwm3WWfKKQwq_TeAxd8Mju6rPfkb09Y5O7Iu-GGCWPZWiQhsShSJD0DIKOmIvkSIYu\/exec';\r\n\r\nvar FF_RAFFLE_2 = 'Raffle #2 \u2013 Harborside Realty & Rental Management';\r\n\r\nfunction ffClearR2() {\r\n  ['name','email','phone','address'].forEach(function(f) {\r\n    document.getElementById('ff-r2-' + f).classList.remove('err');\r\n    var errEl = document.getElementById('ff-r2-' + f + '-err');\r\n    if (errEl) { errEl.textContent = ''; errEl.classList.remove('show'); }\r\n  });\r\n  var msg = document.getElementById('ff-r2-msg');\r\n  msg.className = 'ff-rf2-msg';\r\n  msg.innerHTML = '';\r\n}\r\n\r\nfunction ffMarkR2Field(field, msg) {\r\n  var input = document.getElementById('ff-r2-' + field);\r\n  var errEl = document.getElementById('ff-r2-' + field + '-err');\r\n  if (input) input.classList.add('err');\r\n  if (errEl) { errEl.textContent = '\u26a0 ' + msg; errEl.classList.add('show'); }\r\n}\r\n\r\nfunction ffShowR2Msg(type, html) {\r\n  var el = document.getElementById('ff-r2-msg');\r\n  el.className = 'ff-rf2-msg show ' + type;\r\n  el.innerHTML = html;\r\n}\r\n\r\nfunction ffSubmitR2() {\r\n  var name    = document.getElementById('ff-r2-name').value.trim();\r\n  var email   = document.getElementById('ff-r2-email').value.trim();\r\n  var phone   = document.getElementById('ff-r2-phone').value.trim();\r\n  var address = document.getElementById('ff-r2-address').value.trim();\r\n  var btn     = document.getElementById('ff-r2-btn');\r\n\r\n  ffClearR2();\r\n\r\n  \/\/ \u2500\u2500 Strict Client-side validation \u2500\u2500\r\n  var hasError = false;\r\n  \r\n  if (!name || name.length < 2) {\r\n    ffMarkR2Field('name', 'Full name is required.');\r\n    hasError = true;\r\n  }\r\n  \r\n  var emailRegex = \/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/;\r\n  if (!email || !emailRegex.test(email)) {\r\n    ffMarkR2Field('email', 'Please enter a valid email address.');\r\n    hasError = true;\r\n  }\r\n  \r\n  var digitsOnly = phone.replace(\/\\D\/g, ''); \r\n  if (!phone || digitsOnly.length !== 10) {\r\n    ffMarkR2Field('phone', 'Please enter a valid 10-digit phone number.');\r\n    hasError = true;\r\n  }\r\n\r\n  if (!address || address.length < 5) {\r\n    ffMarkR2Field('address', 'Please enter a valid address.');\r\n    hasError = true;\r\n  }\r\n\r\n  if (hasError) return;\r\n\r\n  btn.disabled = true;\r\n  ffShowR2Msg('loading', '<span class=\"ff-sp2\"><\/span> Checking & submitting your entry\u2026');\r\n\r\n  \/\/ \u2500\u2500 Build GET URL with params \u2500\u2500\r\n  var url = FF_URL_2\r\n    + '?action=submit'\r\n    + '&name='    + encodeURIComponent(name)\r\n    + '&email='   + encodeURIComponent(email)\r\n    + '&phone='   + encodeURIComponent(phone)\r\n    + '&address=' + encodeURIComponent(address)\r\n    + '&raffle='  + encodeURIComponent(FF_RAFFLE_2);\r\n\r\n  fetch(url)\r\n    .then(function(res) { return res.json(); })\r\n    .then(function(data) {\r\n\r\n      if (data.result === 'success') {\r\n        document.getElementById('ff-r2-form').style.display = 'none';\r\n        ffShowR2Msg('success',\r\n          '\ud83c\udf89 You\\'re entered in Raffle #2!<br>' +\r\n          '<span style=\"font-size:.85rem;opacity:.8\">Winner announced live at the Sandbar. Good luck!<\/span>'\r\n        );\r\n      } else if (data.result === 'duplicate') {\r\n        btn.disabled = false;\r\n        ffMarkR2Field(data.field, data.message);\r\n        ffShowR2Msg('warning',\r\n          '\ud83d\udeab ' + data.message + '<br>' +\r\n          '<span style=\"font-size:.82rem;opacity:.75\">Each person may only enter each raffle once.<\/span>'\r\n        );\r\n      } else {\r\n        btn.disabled = false;\r\n        ffShowR2Msg('error', '\u26a0\ufe0f ' + (data.message || 'Something went wrong. Please try again.'));\r\n      }\r\n    })\r\n    .catch(function() {\r\n      btn.disabled = false;\r\n      ffShowR2Msg('error', '\u26a0\ufe0f Could not connect. Please check your connection and try again.');\r\n    });\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7be8797 e-con-full e-flex e-con e-child\" data-id=\"7be8797\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-29b9368 elementor-widget elementor-widget-html\" data-id=\"29b9368\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\"\/>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n<title>Admin \u2013 Raffle Control Panel<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;700&family=Source+Sans+3:wght@300;400;600&display=swap\" rel=\"stylesheet\"\/>\r\n<style>\r\n  \/* \u2500\u2500 1. ELEMENTOR-PROOF SCOPING \u2500\u2500 *\/\r\n  #ff-admin-fs {\r\n    --red:    #B22234;\r\n    --red-d:  #8B1A27;\r\n    --blue:   #3C3B6E;\r\n    --blue-l: #5558A0;\r\n    --white:  #FFFFFF;\r\n    --bg:     #12111f;\r\n    --card:   #1b1a2e;\r\n    --surf:   #22203a;\r\n    --bord:   rgba(255,255,255,0.08);\r\n    --text:   #e8e6f0;\r\n    --muted:  #6b6b9a;\r\n    --green:  #2e7d52;\r\n    --green-l:#4caf7d;\r\n\r\n    display: none; \r\n    position: fixed;\r\n    inset: 0;\r\n    z-index: 999999;\r\n    background: var(--bg);\r\n    color: var(--text);\r\n    font-family: 'Source Sans 3', sans-serif !important;\r\n    overflow-x: hidden;\r\n    overflow-y: auto;\r\n    text-align: left;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  #ff-admin-fs *, #ff-admin-fs *::before, #ff-admin-fs *::after { \r\n    box-sizing: border-box !important; \r\n    margin: 0; \r\n    padding: 0; \r\n  }\r\n\r\n  #ff-admin-fs h1, #ff-admin-fs h2, #ff-admin-fs h3, \r\n  #ff-admin-fs .oswald-font {\r\n    font-family: 'Oswald', sans-serif !important;\r\n    line-height: 1.2 !important;\r\n    color: var(--white) !important;\r\n    margin: 0 !important;\r\n  }\r\n\r\n  #ff-admin-fs button {\r\n    font-family: 'Oswald', sans-serif !important;\r\n    cursor: pointer !important;\r\n    border: none;\r\n  }\r\n\r\n  \/* \u2500\u2500 2. GLOBAL COMPONENTS \u2500\u2500 *\/\r\n  #ff-admin-fs .usa-bar {\r\n    height: 8px; width: 100%;\r\n    background: repeating-linear-gradient(90deg, var(--red) 0, var(--red) 50px, var(--white) 50px, var(--white) 100px, var(--blue) 100px, var(--blue) 150px);\r\n  }\r\n\r\n  #ff-admin-fs .close-admin-btn {\r\n    position: absolute; top: 15px; right: 20px;\r\n    background: rgba(255,255,255,0.1) !important; color: #fff !important;\r\n    font-size: 1.2rem !important; width: 40px !important; height: 40px !important;\r\n    border-radius: 50% !important; z-index: 1000000;\r\n    transition: background 0.2s;\r\n    display: flex; align-items: center; justify-content: center;\r\n  }\r\n  #ff-admin-fs .close-admin-btn:hover { background: var(--red) !important; }\r\n\r\n  \/* \u2500\u2500 3. LOGIN SCREEN \u2500\u2500 *\/\r\n  #ff-admin-fs .login-wrapper {\r\n    display: flex; align-items: center; justify-content: center;\r\n    min-height: calc(100vh - 8px); padding: 2rem 1rem; width: 100%;\r\n  }\r\n  #ff-admin-fs .login-card-container { width: 100%; max-width: 380px; animation: ffFadeUp 0.4s ease both; }\r\n  \r\n  @keyframes ffFadeUp {\r\n    from { opacity: 0; transform: translateY(18px); }\r\n    to   { opacity: 1; transform: translateY(0); }\r\n  }\r\n\r\n  #ff-admin-fs .login-icon { text-align: center; font-size: 3rem; margin-bottom: 0.5rem; }\r\n  #ff-admin-fs .login-box {\r\n    background: var(--card) !important; border: 1px solid var(--bord) !important;\r\n    border-radius: 8px !important; overflow: hidden; box-shadow: 0 24px 60px rgba(0,0,0,0.5);\r\n  }\r\n  #ff-admin-fs .login-head { background: var(--blue) !important; padding: 1.5rem !important; text-align: center; }\r\n  #ff-admin-fs .login-head h2 { font-size: 1.5rem !important; letter-spacing: 0.1em !important; text-transform: uppercase; }\r\n  #ff-admin-fs .login-head p { font-size: 0.8rem !important; color: rgba(255,255,255,0.7) !important; margin-top: 0.2rem !important; letter-spacing: 0.05em; }\r\n  \r\n  #ff-admin-fs .login-body { padding: 1.5rem !important; }\r\n  #ff-admin-fs .login-body label {\r\n    font-size: 0.75rem !important; font-weight: 600 !important; letter-spacing: 0.1em !important;\r\n    text-transform: uppercase; color: var(--muted) !important; display: block; margin-bottom: 0.4rem;\r\n  }\r\n  #ff-admin-fs .login-body input {\r\n    background: rgba(255,255,255,0.05) !important; border: 1.5px solid rgba(255,255,255,0.1) !important;\r\n    border-radius: 6px !important; color: var(--text) !important;\r\n    font-family: 'Source Sans 3', sans-serif !important; font-size: 16px !important; \r\n    padding: 0.8rem 1rem !important; width: 100% !important; margin-bottom: 1rem !important;\r\n    outline: none; transition: all 0.2s;\r\n  }\r\n  #ff-admin-fs .login-body input:focus { border-color: var(--red) !important; box-shadow: 0 0 0 3px rgba(178,34,52,0.2) !important; }\r\n  \r\n  #ff-admin-fs .btn-submit {\r\n    width: 100% !important; padding: 1rem !important; background: var(--red) !important; border-radius: 6px !important;\r\n    color: var(--white) !important; font-size: 1.1rem !important; letter-spacing: 0.1em !important;\r\n    text-transform: uppercase; transition: all 0.2s; box-shadow: 0 4px 16px rgba(178,34,52,0.35);\r\n  }\r\n  #ff-admin-fs .btn-submit:hover { background: var(--red-d) !important; transform: translateY(-2px); }\r\n  \r\n  #ff-admin-fs .login-err {\r\n    display: none; margin-top: 1rem !important; padding: 0.8rem !important;\r\n    background: rgba(178,34,52,0.15) !important; border: 1px solid rgba(178,34,52,0.3) !important;\r\n    border-radius: 6px !important; color: #ff8899 !important; font-size: 0.9rem !important;\r\n    font-weight: 600 !important; text-align: center;\r\n  }\r\n\r\n  \/* \u2500\u2500 4. DASHBOARD LAYOUT \u2500\u2500 *\/\r\n  #ff-admin-fs .dashboard-wrapper { display: none; padding: 2rem 1.5rem 5rem; animation: ffFadeUp 0.5s ease both; max-width: 1000px; margin: 0 auto; }\r\n  \r\n  #ff-admin-fs .dash-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; margin-bottom: 2rem; }\r\n  #ff-admin-fs .dash-header h1 { font-size: 2rem !important; letter-spacing: 0.05em !important; }\r\n  #ff-admin-fs .dash-header h1 span { color: var(--red) !important; }\r\n  \r\n  #ff-admin-fs .logout-btn {\r\n    padding: 0.6rem 1.2rem !important; background: rgba(178,34,52,0.15) !important;\r\n    border: 1px solid rgba(178,34,52,0.3) !important; border-radius: 6px !important;\r\n    color: #ff8899 !important; font-size: 0.9rem !important; font-family: 'Source Sans 3', sans-serif !important;\r\n    font-weight: 600 !important; transition: all 0.2s;\r\n  }\r\n  #ff-admin-fs .logout-btn:hover { background: rgba(178,34,52,0.3) !important; }\r\n\r\n  #ff-admin-fs .tab-container {\r\n    display: flex; gap: 0.5rem; margin-bottom: 1.5rem; flex-wrap: wrap;\r\n    background: var(--surf) !important; border-radius: 8px !important;\r\n    padding: 0.4rem !important; border: 1px solid var(--bord) !important;\r\n  }\r\n  #ff-admin-fs .tab-btn {\r\n    flex: 1; padding: 0.8rem 1rem !important; border-radius: 6px !important; min-width: 140px;\r\n    background: transparent !important; color: var(--muted) !important;\r\n    font-size: 0.95rem !important; letter-spacing: 0.08em !important; text-transform: uppercase;\r\n    transition: all 0.2s; text-align: center;\r\n  }\r\n  #ff-admin-fs .tab-btn.active-blue { background: rgba(60,59,110,0.8) !important; color: var(--white) !important; }\r\n  #ff-admin-fs .tab-btn.active-red { background: rgba(178,34,52,0.8) !important; color: var(--white) !important; }\r\n  #ff-admin-fs .tab-btn:hover:not(.active-blue):not(.active-red) { background: rgba(255,255,255,0.05) !important; color: var(--text) !important; }\r\n\r\n  #ff-admin-fs .data-panel { display: none; }\r\n  #ff-admin-fs .data-panel.active { display: block; }\r\n\r\n  #ff-admin-fs .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }\r\n  #ff-admin-fs .stat-card {\r\n    background: var(--surf) !important; border: 1px solid var(--bord) !important;\r\n    border-radius: 8px !important; padding: 1.5rem !important; text-align: center;\r\n  }\r\n  #ff-admin-fs .stat-card .num { font-size: 2.5rem !important; margin-bottom: 0.2rem !important; }\r\n  #ff-admin-fs .stat-card .lbl { font-size: 0.75rem !important; letter-spacing: 0.1em !important; text-transform: uppercase; color: var(--muted) !important; }\r\n\r\n  #ff-admin-fs .draw-box {\r\n    background: var(--surf) !important; border: 1px solid var(--bord) !important;\r\n    border-radius: 8px !important; padding: 1.5rem !important; margin-bottom: 1.5rem;\r\n  }\r\n  #ff-admin-fs .draw-box-header { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }\r\n  #ff-admin-fs .draw-lbl { font-size: 0.75rem !important; font-weight: 600 !important; letter-spacing: 0.15em !important; text-transform: uppercase; color: var(--muted) !important; }\r\n  #ff-admin-fs .draw-title { font-size: 1.2rem !important; margin-top: 0.2rem !important; }\r\n  \r\n  #ff-admin-fs .btn-roll {\r\n    padding: 0.8rem 1.5rem !important; border-radius: 6px !important; font-size: 1rem !important;\r\n    letter-spacing: 0.1em !important; text-transform: uppercase; transition: all 0.2s; white-space: nowrap;\r\n  }\r\n  #ff-admin-fs .btn-roll.blue { background: var(--blue) !important; color: var(--white) !important; box-shadow: 0 4px 16px rgba(60,59,110,0.4); }\r\n  #ff-admin-fs .btn-roll.red { background: var(--red) !important; color: var(--white) !important; box-shadow: 0 4px 16px rgba(178,34,52,0.4); }\r\n  #ff-admin-fs .btn-roll:hover:not(:disabled) { opacity: 0.9 !important; transform: translateY(-2px); }\r\n  #ff-admin-fs .btn-roll:disabled { opacity: 0.5 !important; cursor: not-allowed !important; }\r\n\r\n  #ff-admin-fs .winner-display {\r\n    display: none; margin-top: 1.5rem !important; padding: 1.5rem !important; border-radius: 8px !important;\r\n    border: 2px solid; animation: ffPopIn 0.5s cubic-bezier(0.34,1.56,0.64,1) both;\r\n  }\r\n  @keyframes ffPopIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } }\r\n  \r\n  #ff-admin-fs .winner-display.blue-theme { border-color: var(--blue-l) !important; background: rgba(60,59,110,0.18) !important; }\r\n  #ff-admin-fs .winner-display.red-theme { border-color: var(--red) !important; background: rgba(178,34,52,0.12) !important; }\r\n  \r\n  #ff-admin-fs .wd-badge { font-size: 0.75rem !important; font-weight: 700 !important; letter-spacing: 0.15em !important; text-transform: uppercase; margin-bottom: 0.5rem !important; }\r\n  #ff-admin-fs .blue-theme .wd-badge { color: var(--blue-l) !important; }\r\n  #ff-admin-fs .red-theme .wd-badge { color: #ff8899 !important; }\r\n  \r\n  #ff-admin-fs .wd-name { font-size: 2rem !important; margin-bottom: 1rem !important; }\r\n  #ff-admin-fs .wd-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.8rem; }\r\n  #ff-admin-fs .wd-grid > div { background: rgba(255,255,255,0.05) !important; border-radius: 6px !important; padding: 0.8rem !important; font-family: 'Source Sans 3', sans-serif !important; }\r\n  #ff-admin-fs .wd-grid .lbl { font-size: 0.7rem !important; letter-spacing: 0.1em !important; text-transform: uppercase; color: var(--muted) !important; margin-bottom: 0.2rem !important; font-weight: 600; }\r\n\r\n  #ff-admin-fs .table-container { background: var(--surf) !important; border: 1px solid var(--bord) !important; border-radius: 8px !important; overflow: hidden; }\r\n  #ff-admin-fs .table-header { padding: 1.2rem !important; border-bottom: 1px solid var(--bord) !important; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }\r\n  #ff-admin-fs .table-header h3 { font-size: 0.9rem !important; letter-spacing: 0.15em !important; text-transform: uppercase; color: var(--muted) !important; }\r\n  \r\n  #ff-admin-fs .table-actions { display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap; width: 100%; max-width: 400px; }\r\n  #ff-admin-fs .table-actions input {\r\n    flex: 1; min-width: 150px; background: rgba(255,255,255,0.05) !important; border: 1px solid rgba(255,255,255,0.1) !important;\r\n    border-radius: 6px !important; color: var(--text) !important; padding: 0.6rem 0.8rem !important; outline: none;\r\n    font-family: 'Source Sans 3', sans-serif !important; font-size: 16px !important;\r\n  }\r\n  #ff-admin-fs .table-actions input:focus { border-color: var(--blue-l) !important; }\r\n  #ff-admin-fs .btn-refresh {\r\n    padding: 0.6rem 1rem !important; background: rgba(255,255,255,0.05) !important; border: 1px solid var(--bord) !important;\r\n    border-radius: 6px !important; color: var(--text) !important; font-size: 0.85rem !important;\r\n    font-family: 'Source Sans 3', sans-serif !important; font-weight: 600 !important; transition: all 0.2s;\r\n  }\r\n  #ff-admin-fs .btn-refresh:hover { background: rgba(255,255,255,0.1) !important; }\r\n\r\n  #ff-admin-fs .table-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }\r\n  #ff-admin-fs table { width: 100% !important; border-collapse: collapse !important; font-size: 0.9rem !important; min-width: 850px; }\r\n  #ff-admin-fs th {\r\n    padding: 1rem !important; text-align: left !important; font-size: 0.75rem !important;\r\n    font-weight: 700 !important; letter-spacing: 0.1em !important; text-transform: uppercase !important;\r\n    color: var(--muted) !important; border-bottom: 1px solid var(--bord) !important; white-space: nowrap !important;\r\n  }\r\n  #ff-admin-fs td {\r\n    padding: 1rem !important; border-bottom: 1px solid rgba(255,255,255,0.04) !important;\r\n    white-space: nowrap !important; color: var(--text) !important;\r\n  }\r\n  #ff-admin-fs tbody tr:hover td { background: rgba(255,255,255,0.03) !important; }\r\n\r\n  #ff-admin-fs .status-msg { padding: 3rem !important; text-align: center !important; color: var(--muted) !important; font-size: 1rem !important; font-family: 'Source Sans 3', sans-serif !important; }\r\n  \r\n  #ff-admin-fs .loader {\r\n    display: inline-block; width: 16px; height: 16px; border: 2px solid rgba(255,255,255,0.15);\r\n    border-top-color: var(--text); border-radius: 50%; animation: ffSpin 0.6s linear infinite; vertical-align: middle;\r\n  }\r\n  @keyframes ffSpin { to { transform: rotate(360deg); } }\r\n\r\n  #ff-confetti { position: fixed; inset: 0; pointer-events: none; z-index: 1000000; }\r\n\r\n  #ff-secret-trigger {\r\n    position: fixed; bottom: 0; right: 0;\r\n    width: 70px; height: 70px;\r\n    z-index: 999998; opacity: 0; cursor: default;\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div id=\"ff-secret-trigger\"><\/div>\r\n\r\n<div id=\"ff-admin-fs\">\r\n  <button onclick=\"closeAdmin()\" class=\"close-admin-btn\" title=\"Close Admin Panel\">\u2715<\/button>\r\n  <canvas id=\"ff-confetti\"><\/canvas>\r\n  <div class=\"usa-bar\"><\/div>\r\n\r\n  <div id=\"loginScreen\" class=\"login-wrapper\">\r\n    <div class=\"login-card-container\">\r\n      <div class=\"login-box\">\r\n        <div class=\"login-head\">\r\n          <h2 class=\"oswald-font\">Admin Control Panel<\/h2>\r\n          <p>Authorized Personnel Only<\/p>\r\n        <\/div>\r\n        <div class=\"login-body\">\r\n          <label>Password<\/label>\r\n          <input type=\"password\" id=\"pwInput\" placeholder=\"Enter admin password\" onkeydown=\"if(event.key==='Enter') login()\"\/>\r\n          <button class=\"btn-submit\" onclick=\"login()\">Unlock Panel<\/button>\r\n          <div class=\"login-err\" id=\"loginErr\">\u26a0\ufe0f Incorrect password. Try again.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"dashboard\" class=\"dashboard-wrapper\">\r\n    \r\n    <div class=\"dash-header\">\r\n      <h1 class=\"oswald-font\">Raffle <span>Admin<\/span><\/h1>\r\n      <button class=\"logout-btn\" onclick=\"logout()\">\u2b05 Logout<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"tab-container\">\r\n      <button class=\"tab-btn active-blue oswald-font\" onclick=\"switchTab(1)\" id=\"tab1\">\ud83c\udfaf Raffle #1<\/button>\r\n      <button class=\"tab-btn oswald-font\" onclick=\"switchTab(2)\" id=\"tab2\">\ud83c\udf81 Raffle #2<\/button>\r\n    <\/div>\r\n\r\n    <div class=\"data-panel active\" id=\"panel1\">\r\n      <div class=\"stats-grid\">\r\n        <div class=\"stat-card\">\r\n          <div class=\"num oswald-font\" id=\"count1\" style=\"color:#7B7FC4\">\u2013<\/div>\r\n          <div class=\"lbl\">Total Entries<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n          <div class=\"num oswald-font\" style=\"color:var(--green-l)\">\u2713<\/div>\r\n          <div class=\"lbl\">Duplicates Blocked<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n          <div class=\"num oswald-font\" style=\"color:#f0c97a\">\ud83c\udfaf<\/div>\r\n          <div class=\"lbl\">Active System<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"draw-box\">\r\n        <div class=\"draw-box-header\">\r\n          <div>\r\n            <div class=\"draw-lbl\">Winner Selection \u2014 Raffle #1<\/div>\r\n            <h3 class=\"draw-title oswald-font\">Pick a random winner from Raffle #1<\/h3>\r\n          <\/div>\r\n          <button class=\"btn-roll blue\" id=\"drawBtn1\" onclick=\"drawWinner(1)\">\ud83c\udfb2 Draw Winner<\/button>\r\n        <\/div>\r\n        <div class=\"winner-display blue-theme\" id=\"winner1\">\r\n          <div class=\"wd-badge\">\ud83c\udfc6 Raffle #1 Winner<\/div>\r\n          <div class=\"wd-name oswald-font\" id=\"wName1\"><\/div>\r\n          <div class=\"wd-grid\">\r\n            <div><div class=\"lbl\">Email<\/div><div id=\"wEmail1\"><\/div><\/div>\r\n            <div><div class=\"lbl\">Phone<\/div><div id=\"wPhone1\"><\/div><\/div>\r\n            <div style=\"grid-column: 1 \/ -1;\"><div class=\"lbl\">Address<\/div><div id=\"wAddress1\"><\/div><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"table-container\">\r\n        <div class=\"table-header\">\r\n          <h3 class=\"oswald-font\" id=\"table-title-1\">Recent Entries (Latest 15)<\/h3>\r\n          <div class=\"table-actions\">\r\n            <input type=\"text\" placeholder=\"Search entries...\" oninput=\"filterTable(1, this.value)\"\/>\r\n            <button class=\"btn-refresh\" onclick=\"loadEntries(1)\">\u21bb Refresh<\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"table-scroll\">\r\n          <div class=\"status-msg\" id=\"loading1\"><span class=\"loader\"><\/span>&nbsp; Loading entries\u2026<\/div>\r\n          <table id=\"table1\" style=\"display:none\">\r\n            <thead><tr><th>#<\/th><th>Name<\/th><th>Email<\/th><th>Phone<\/th><th>Address<\/th><th>Timestamp<\/th><\/tr><\/thead>\r\n            <tbody id=\"tbody1\"><\/tbody>\r\n          <\/table>\r\n          <div class=\"status-msg\" id=\"empty1\" style=\"display:none\">No entries yet.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"data-panel\" id=\"panel2\">\r\n      <div class=\"stats-grid\">\r\n        <div class=\"stat-card\">\r\n          <div class=\"num oswald-font\" id=\"count2\" style=\"color:#e07070\">\u2013<\/div>\r\n          <div class=\"lbl\">Total Entries<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n          <div class=\"num oswald-font\" style=\"color:var(--green-l)\">\u2713<\/div>\r\n          <div class=\"lbl\">Duplicates Blocked<\/div>\r\n        <\/div>\r\n        <div class=\"stat-card\">\r\n          <div class=\"num oswald-font\" style=\"color:#7fc47f\">\ud83c\udf81<\/div>\r\n          <div class=\"lbl\">Active System<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"draw-box\">\r\n        <div class=\"draw-box-header\">\r\n          <div>\r\n            <div class=\"draw-lbl\">Winner Selection \u2014 Raffle #2<\/div>\r\n            <h3 class=\"draw-title oswald-font\">Pick a random winner from Raffle #2<\/h3>\r\n          <\/div>\r\n          <button class=\"btn-roll red\" id=\"drawBtn2\" onclick=\"drawWinner(2)\">\ud83c\udfb2 Draw Winner<\/button>\r\n        <\/div>\r\n        <div class=\"winner-display red-theme\" id=\"winner2\">\r\n          <div class=\"wd-badge\">\u2b50 Raffle #2 Winner<\/div>\r\n          <div class=\"wd-name oswald-font\" id=\"wName2\"><\/div>\r\n          <div class=\"wd-grid\">\r\n            <div><div class=\"lbl\">Email<\/div><div id=\"wEmail2\"><\/div><\/div>\r\n            <div><div class=\"lbl\">Phone<\/div><div id=\"wPhone2\"><\/div><\/div>\r\n            <div style=\"grid-column: 1 \/ -1;\"><div class=\"lbl\">Address<\/div><div id=\"wAddress2\"><\/div><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"table-container\">\r\n        <div class=\"table-header\">\r\n          <h3 class=\"oswald-font\" id=\"table-title-2\">Recent Entries (Latest 15)<\/h3>\r\n          <div class=\"table-actions\">\r\n            <input type=\"text\" placeholder=\"Search entries...\" oninput=\"filterTable(2, this.value)\"\/>\r\n            <button class=\"btn-refresh\" onclick=\"loadEntries(2)\">\u21bb Refresh<\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"table-scroll\">\r\n          <div class=\"status-msg\" id=\"loading2\"><span class=\"loader\"><\/span>&nbsp; Loading entries\u2026<\/div>\r\n          <table id=\"table2\" style=\"display:none\">\r\n            <thead><tr><th>#<\/th><th>Name<\/th><th>Email<\/th><th>Phone<\/th><th>Address<\/th><th>Timestamp<\/th><\/tr><\/thead>\r\n            <tbody id=\"tbody2\"><\/tbody>\r\n          <\/table>\r\n          <div class=\"status-msg\" id=\"empty2\" style=\"display:none\">No entries yet.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  const SCRIPT_URL = \"https:\/\/script.google.com\/macros\/s\/AKfycbwwm3WWfKKQwq_TeAxd8Mju6rPfkb09Y5O7Iu-GGCWPZWiQhsShSJD0DIKOmIvkSIYu\/exec\";\r\n  const ADMIN_PASSWORD = \"Admin@2026\"; \r\n\r\n  let entries = { 1: [], 2: [] };\r\n\r\n  document.addEventListener('keydown', function(e) {\r\n    if (e.ctrlKey && e.shiftKey && (e.key === 'Q' || e.key === 'q')) {\r\n      const wrapper = document.getElementById('ff-admin-fs');\r\n      if (wrapper.style.display === 'block') { closeAdmin(); } \r\n      else { wrapper.style.display = 'block'; document.body.style.overflow = 'hidden'; }\r\n    }\r\n  });\r\n\r\n  let secretTapCount = 0;\r\n  let secretTapTimer;\r\n  document.getElementById('ff-secret-trigger').addEventListener('click', function(e) {\r\n    e.preventDefault();\r\n    secretTapCount++;\r\n    clearTimeout(secretTapTimer);\r\n    if (secretTapCount >= 3) {\r\n      document.getElementById('ff-admin-fs').style.display = 'block'; \r\n      document.body.style.overflow = 'hidden';\r\n      secretTapCount = 0; \r\n    } else {\r\n      secretTapTimer = setTimeout(() => { secretTapCount = 0; }, 1500);\r\n    }\r\n  });\r\n\r\n  function closeAdmin() {\r\n    document.getElementById('ff-admin-fs').style.display = 'none';\r\n    document.body.style.overflow = ''; \r\n  }\r\n\r\n  function login() {\r\n    const pw = document.getElementById('pwInput').value;\r\n    if (pw === ADMIN_PASSWORD) {\r\n      document.getElementById('loginScreen').style.display = 'none';\r\n      document.getElementById('dashboard').style.display = 'block';\r\n      loadEntries(1); loadEntries(2);\r\n    } else {\r\n      document.getElementById('loginErr').style.display = 'block';\r\n    }\r\n  }\r\n\r\n  function logout() {\r\n    document.getElementById('loginScreen').style.display = 'flex';\r\n    document.getElementById('dashboard').style.display = 'none';\r\n    document.getElementById('pwInput').value = '';\r\n    document.getElementById('loginErr').style.display = 'none';\r\n  }\r\n\r\n  function switchTab(n) {\r\n    document.querySelectorAll('#ff-admin-fs .data-panel').forEach(p => p.classList.remove('active'));\r\n    document.getElementById('panel' + n).classList.add('active');\r\n    document.getElementById('tab1').className = 'tab-btn oswald-font' + (n === 1 ? ' active-blue' : '');\r\n    document.getElementById('tab2').className = 'tab-btn oswald-font' + (n === 2 ? ' active-red'  : '');\r\n  }\r\n\r\n  async function loadEntries(raffle) {\r\n    const loadEl = document.getElementById('loading' + raffle);\r\n    const tableEl = document.getElementById('table' + raffle);\r\n    const emptyEl = document.getElementById('empty' + raffle);\r\n    loadEl.style.display = 'block'; tableEl.style.display = 'none'; emptyEl.style.display = 'none';\r\n    try {\r\n      const res = await fetch(SCRIPT_URL + '?action=entries&raffle=' + raffle);\r\n      const data = await res.json();\r\n      if (data.result === 'success') {\r\n        entries[raffle] = data.entries || [];\r\n        renderTable(raffle, entries[raffle], false);\r\n      } else {\r\n        loadEl.innerHTML = '\u274c Error loading data.';\r\n      }\r\n    } catch {\r\n      loadEl.innerHTML = '\u274c Failed to connect.';\r\n    }\r\n  }\r\n\r\n  function renderTable(raffle, data, isSearch = false) {\r\n    const tableEl = document.getElementById('table' + raffle);\r\n    const emptyEl = document.getElementById('empty' + raffle);\r\n    const countEl = document.getElementById('count' + raffle);\r\n    const tbody = document.getElementById('tbody' + raffle);\r\n    const titleEl = document.getElementById('table-title-' + raffle);\r\n\r\n    countEl.textContent = entries[raffle].length;\r\n    if (data.length === 0) { \r\n      emptyEl.style.display = 'block'; tableEl.style.display = 'none'; \r\n      emptyEl.textContent = isSearch ? 'No matching entries found.' : 'No entries yet.';\r\n      return; \r\n    }\r\n\r\n    let displayData = [...data];\r\n    if (!isSearch) {\r\n      displayData = displayData.reverse().slice(0, 15);\r\n      titleEl.textContent = 'Recent Entries (Latest ' + displayData.length + ')';\r\n    } else {\r\n      if (displayData.length > 50) displayData = displayData.slice(0, 50);\r\n      titleEl.textContent = 'Search Results (' + displayData.length + ')';\r\n    }\r\n\r\n    tbody.innerHTML = displayData.map((e, i) => `\r\n      <tr>\r\n        <td style=\"color:var(--muted)\">${isSearch ? i + 1 : entries[raffle].length - i}<\/td>\r\n        <td style=\"font-weight:600\">${esc(e.name)}<\/td>\r\n        <td>${esc(e.email)}<\/td>\r\n        <td>${esc(e.phone || 'N\/A')}<\/td>\r\n        <td style=\"font-size:.85rem\">${esc(e.address || 'N\/A')}<\/td>\r\n        <td style=\"color:var(--muted);font-size:.8rem\">${fmt(e.timestamp)}<\/td>\r\n      <\/tr>\r\n    `).join('');\r\n    tableEl.style.display = 'table'; emptyEl.style.display = 'none';\r\n  }\r\n\r\n  function filterTable(raffle, q) {\r\n    const ql = q.trim().toLowerCase();\r\n    if (!ql) { renderTable(raffle, entries[raffle], false); return; }\r\n    const pool = [...entries[raffle]].reverse();\r\n    renderTable(raffle, pool.filter(e =>\r\n      (e.name && e.name.toLowerCase().includes(ql)) || \r\n      (e.email && e.email.toLowerCase().includes(ql)) || \r\n      (e.phone && e.phone.includes(ql)) ||\r\n      (e.address && e.address.toLowerCase().includes(ql))\r\n    ), true);\r\n  }\r\n\r\n  function drawWinner(raffle) {\r\n    const pool = entries[raffle];\r\n    if (!pool || pool.length === 0) { alert('No entries loaded yet.'); return; }\r\n    const btn = document.getElementById('drawBtn' + raffle);\r\n    btn.disabled = true; btn.textContent = '\ud83c\udfb2 Drawing\u2026';\r\n    let ticks = 0;\r\n    const id = setInterval(() => {\r\n      const r = pool[Math.floor(Math.random() * pool.length)];\r\n      displayWinner(raffle, r, false);\r\n      ticks++;\r\n      if (ticks >= 20) {\r\n        clearInterval(id);\r\n        const winner = pool[Math.floor(Math.random() * pool.length)];\r\n        displayWinner(raffle, winner, true);\r\n        btn.disabled = false; btn.textContent = '\ud83c\udfb2 Redraw';\r\n        triggerConfetti(raffle);\r\n      }\r\n    }, 80);\r\n  }\r\n\r\n  function displayWinner(raffle, e, final) {\r\n    const card = document.getElementById('winner' + raffle);\r\n    card.style.display = 'block';\r\n    if (final) { card.style.animation = 'none'; card.offsetHeight; card.style.animation = 'ffPopIn 0.5s cubic-bezier(0.34,1.56,0.64,1) both'; }\r\n    document.getElementById('wName' + raffle).textContent = e.name;\r\n    document.getElementById('wEmail' + raffle).textContent = e.email;\r\n    document.getElementById('wPhone' + raffle).textContent = e.phone || 'N\/A';\r\n    document.getElementById('wAddress' + raffle).textContent = e.address || 'N\/A';\r\n  }\r\n\r\n  function triggerConfetti(raffle) {\r\n    const canvas = document.getElementById('ff-confetti');\r\n    const ctx = canvas.getContext('2d');\r\n    canvas.width = window.innerWidth; canvas.height = window.innerHeight;\r\n    const colors = raffle === 1 ? ['#B22234','#FFFFFF','#3C3B6E','#7B7FC4'] : ['#B22234','#FFFFFF','#3C3B6E','#e07070'];\r\n    const pieces = Array.from({length: 150}, () => ({\r\n      x: Math.random() * canvas.width, y: -20, r: 4 + Math.random() * 5, d: 2 + Math.random() * 4,\r\n      drift: (Math.random() - 0.5) * 3, rot: Math.random() * 360, rs: (Math.random() - 0.5) * 8,\r\n      color: colors[Math.floor(Math.random() * colors.length)]\r\n    }));\r\n    let frame = 0;\r\n    (function animate() {\r\n      if (frame > 200) { ctx.clearRect(0, 0, canvas.width, canvas.height); return; }\r\n      ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n      pieces.forEach(p => {\r\n        p.y += p.d; p.x += p.drift; p.rot += p.rs;\r\n        ctx.save(); ctx.translate(p.x, p.y); ctx.rotate(p.rot * Math.PI \/ 180);\r\n        ctx.fillStyle = p.color; ctx.globalAlpha = Math.max(0, 1 - frame \/ 180);\r\n        ctx.fillRect(-p.r \/ 2, -p.r \/ 2, p.r, p.r * 1.5); ctx.restore();\r\n      });\r\n      frame++; requestAnimationFrame(animate);\r\n    })();\r\n  }\r\n\r\n  function esc(s) { return String(s || '').replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); }\r\n  function fmt(iso) { \r\n    if (!iso) return 'N\/A';\r\n    try { \r\n      const d = new Date(iso); \r\n      if (isNaN(d)) return String(iso); \r\n      return d.toLocaleDateString() + ' ' + d.toLocaleTimeString([],{hour:'2-digit',minute:'2-digit'}); \r\n    } catch { return String(iso); } \r\n  }\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-374d3dd3 e-flex e-con-boxed e-con e-parent\" data-id=\"374d3dd3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-10e93cfc elementor-widget elementor-widget-heading\" data-id=\"10e93cfc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Turn up for Independence Day ! <BR><br>Drop anchor for live DJs, epic vibes, and your chance to win massive prizes<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-228e57f8 e-flex e-con-boxed e-con e-parent\" data-id=\"228e57f8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a172e94 elementor-widget elementor-widget-text-editor\" data-id=\"a172e94\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Copyright \u00a9 2026 Freedom Fest | Website by <a href=\"https:\/\/visiondesigning.com\">Vision Designing<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Days Hours Minutes Seconds Boca Grande Sand Bar July 4th, 2026 10:00 AM \u2013 3:00 PM 2026 Festival Supporters Festival Supporters Hosted By Visit Site Sponsors of the Fest Visit Site Visit Site Visit Site Visit Site Visit Site Visit Site Set the Vibe Want to hear your favorite track? Scan the QR code or [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-207","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=\/wp\/v2\/pages\/207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=207"}],"version-history":[{"count":419,"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=\/wp\/v2\/pages\/207\/revisions"}],"predecessor-version":[{"id":711,"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=\/wp\/v2\/pages\/207\/revisions\/711"}],"wp:attachment":[{"href":"https:\/\/sandbarvibes.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}