1<!DOCTYPE html> 2<!--[if IE 8]> <html lang="en" class="ie8 no-js"> <![endif]--> 3<!--[if IE 9]> <html lang="en" class="ie9 no-js"> <![endif]--> 4<!--[if !IE]><!--> 5<html lang="en"> 6<!--<![endif]--> 7<head> 8<meta charset="utf-8"> 9<meta content="IE=edge" http-equiv="X-UA-Compatible"> 10<meta content="width=device-width, initial-scale=1" name="viewport">
11<script> 12 (function () { 13 try { 14 if (typeof window._AutofillCallbackHandler === 'undefined') { 15 var noop = function () {}; 16 window._AutofillCallbackHandler = (typeof Proxy === 'function') 17 ? new Proxy(noop, { get: function () { return noop; }, apply: function () {} }) 18 : noop; 19 } 20 } catch (e) {} 21 })(); 22</script>
22 23<meta name="csrf-param" content="authenticity_token" /> 24<meta name="csrf-token" content="YxRq0_6S56pWPKWyBWADcexy40mlZvwizTzWUn39vgxvtBtcjqm9J-whnn2Y-ZVa3Bg0n_W7r5mJmYbeb348Sg" /> 25<meta content="East Coast Sailing Association â Shop" name="description"> 26<meta content="TidyHQ" property="og:site_name"> 27<meta content="website" property="og:type"> 28<meta content="East Coast Sailing Association â Shop" property="og:title"> 29<meta content="East Coast Sailing Association â Shop" property="og:description"> 30<meta content="https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/small/Burgee_small.png" property="og:image"> 31
32<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"East Coast Sailing Association","url":"https://ecsasail.com/","logo":"https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/large/Burgee_small.png","address":{"streetAddress":"P. O. Box 372124\r\nSatellite Beach, Florida, 32937-0124\r\n","addressLocality":"Satellite Beach","addressRegion":"FL","postalCode":"32937-0124","addressCountry":"US","@type":"PostalAddress"}}</script>
32 33<title>Shop | East Coast Sailing Association | TidyHQ</title> 34 <link rel="icon" type="image/png" href="https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/medium/Burgee_small.png" sizes="100x100" /> 35 <link rel="apple-touch-icon" sizes="400x400" href="https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/large/Burgee_small.png" /> 36 <meta name="apple-mobile-web-app-title" content="East Coast Sailing Association - TidyHQ" /> 37<link rel="manifest" href="https://cdn.tidyhq.com/assets/favicon/webmanifest-b92c1dfe764285525bb693fa61a865d888685c9e1e565afa360c043b3ce20db5.json" /> 38 39<link href="https://ecsasail.com/public/shop/products" rel="canonical"> 40<link crossorigin="anonymous" href="https://fonts.tidyhq.com" rel="preconnect"> 41<link href="https://fonts.googleapis.com" rel="preconnect"> 42<link crossorigin="anonymous" href="https://fonts.gstatic.com" rel="preconnect"> 43<link rel="stylesheet" href="https://cdn.tidyhq.com/assets/shared/bootstrap/bootstrap-24-12a7411a428fbb3e97e37856966a170cf4bc7dbe7d3539824c35e6073f396db9.css" media="screen, print" /> 44<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,700,300,600,400&subset=all&display=swap" media="print" onload="this.media='all'" /> 45<noscript> 46<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,700,300,600,400&subset=all&display=swap" /> 47</noscript> 48<link rel="stylesheet" href="https://cdn.tidyhq.com/assets/club/public/base-2baecff89b5756363a0f107a5249e8d48771869c2ebe81d6fb5ab0731bd0811b.css" /> 49<link rel="stylesheet" href="https://cdn.tidyhq.com/assets/tailwind-958e356e5fc69fdda32487cad997a5a7cfacf5ddd95716c5d2
4908ddd18fd4fb1d.css" /> 50<link rel="stylesheet" href="https://cdn.tidyhq.com/assets/club/public/print-2d3fb11f29ebbe3afb1268c4804fc646ff6f97e7d8903f8f8761c872819c528e.css" media="print" /> 51<link rel="stylesheet" href="https://ecsasail.tidyhq.com/public/styles/034B8A.css?v=4" /> 52<link rel="stylesheet" href="https://ecsasail.tidyhq.com/public/styles/atomic/034B8A.css" media="print" onload="this.media='all'" /> 53<noscript> 54<link rel="stylesheet" href="https://ecsasail.tidyhq.com/public/styles/atomic/034B8A.css" /> 55</noscript>
56<script src="https://cdn.tidyhq.com/packs/js/runtime-67ef6de353ae2d863876.js" defer="defer"></script>
vendor: 1 bytes, line 56
56
57<script src="https://cdn.tidyhq.com/packs/js/755-a074147f00cfbeb89e60.js" defer="defer"></script>
vendor: 1 bytes, line 57
57
58<script src="https://cdn.tidyhq.com/packs/js/public-bundle-9bd6c154d944a265722f.js" defer="defer"></script>
vendor: 1 bytes, line 58
58
59<script type="application/ld+json"> 60{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"Product","name":"Brochure","image":"https://s3.tidyhq.com/orgs/eaea3d243de6/product/image/ca2940730a74df5c625de5c07495f177d1ee2a84/medium/Brochure_cover.png","url":"https://ecsasail.com/public/shop/products/brochure","brand":{"@type":"Organization","name":"East Coast Sailing Association"},"offers":{"@type":"Offer","priceCurrency":"USD","price":0.0,"availability":"https://schema.org/InStock"}}}],"numberOfItems":1} 61</script>
61 62 63 64
65<script> 66 var resetIdentity = false; 67 !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]); 68 69 posthog.init("phc_1SveAgbDBKi3U9T8oOfQVW99Dc5ogeJrbWkAUV7orCL", {defaults: '2025-05-24', api_host: "https://at.tidyhq.com", bootstrap: {}, person_profiles: 'identified_only', autocapture: false, capture_pageview: false, capture_pageleave: false, capture_performance: false, disable_session_recording: true, session_recording: {blockSelector: 'iframe[src*="frill.co"]', maskAllInputs: true}, opt_out_capturing_by_default: true, capture_exceptions: {"capture_unhandled_errors":false,"capture_unhandled_rejections":false,"capture_console_errors":false}}); 70 posthog.register_for_session({'imp_by': null}); 71 72 if (resetIdentity) { 73 posthog.reset(); 74 } 75 76 window.passkeySupportChecked = new Promise(function(resolve) { 77 var pk_api_supported = typeof window.PublicKeyCredential === 'function'; 78 79 var data = { 80 pk_api_supported: pk_api_supported, 81 pk_conditional_mediation_available: false, 82 pk_user_verifying_platform_authenticator_available: false, 83 }; 84 85 var mediationPromise = pk_api_supported && typeof window.PublicKeyCredential.isConditionalMediationAvailable === 'function' 86 ? window.PublicKeyCredential.isConditionalMediationAvailable().catch(function() { return false }) 87 : Promise.resolve(false); 88 89 var authenticatorPromise = pk_api_supported && typeof window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable === 'function' 90 ? window.PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable().catch(function() { return false }) 91 : Promise.resolve(false); 92 93 Promise.all([mediationPromise, authenticatorPromise]) 94 .then(([mediationAvailable, authenticatorAvailable]) => { 95 data.pk_conditional_mediation_available = mediationAvailable; 96 data.pk_user_verifying_platform_authenticator_available = authenticatorAvailable; 97 }) 98 .finally(function() { 99 posthog.register_for_session(data) 100 resolve() 101 }); 102 }); 103 104 // COST OPT: disabled manual $pageview capture 105 // window.passkeySupportChecked.finally(function() { 106 // posthog.capture('$pageview') 107 // }) 108 109 function syncSessionWithBackend(new_session_id, new_distinct_id) { 110 $.removeCookie('ph_sessionid'); 111 $.cookie('ph_sessionid', new_session_id, { 112 path: '/', // Available across entire site 113 secure: true // Only transmitted over HTTPS 114 }); 115 $.removeCookie('ph_anon_distinctid'); 116 $.cookie('ph_anon_distinctid', new_distinct_id, { 117 path: '/', // Available across entire site 118 secure: true // Only transmitted over HTTPS 119 }); 120 } 121 122 document.addEventListener('DOMContentLoaded', function() {
123 syncSessionWithBackend(posthog.get_session_id(), posthog.get_distinct_id()); // always set the session id cookie on load so it's in sync with backend on all subsequent events 124 125 posthog.onSessionId(function(id, w_id) { 126 syncSessionWithBackend(id, posthog.get_distinct_id()); 127 }); 128 129 // COST OPT: only identify once per session instead of every page load 130 if ($.cookie("logged_in") === "1" && typeof posthog._isIdentified === 'function' && !posthog._isIdentified()) { 131 posthog.identify($.cookie("logged_in_user_distinct_id")) 132 } 133 }); 134</script>
134 135 136</head> 137<body class="flex-body">
138<script src="https://cdn.tidyhq.com/assets/club/public/base-4e8d3f81b5fef5c6c4bebd915c16521b20a56d4235587b3d3ec54820c1bceb60.js"></script>
138 139
140<script> 141 var _rollbarConfig = { 142 accessToken: "c1310a8a22b44cc4abd5ed9034d81b9b", 143 captureUncaught: true, 144 captureUnhandledRejections: true, 145 itemsPerMinute: 10, 146 payload: {environment: "production"}, 147 checkIgnore: (function () { 148 const MAX_PER_SIG = 3; 149 const RESET_MS = 600000; // 10 min 150 const seen = {}; 151 return function (isUncaught, args, payload) { 152 try { 153 const body = payload && payload.body; 154 const trace = body && (body.trace || (body.trace_chain && body.trace_chain[0])); 155 const exc = trace && trace.exception; 156 const frames = trace && trace.frames; 157 const frame = frames && frames[frames.length - 1]; 158 const key = [ 159 exc && exc.class, 160 exc && exc.message, 161 frame && frame.filename, 162 frame && frame.lineno 163 ].join('|'); 164 const now = Date.now(); 165 const entry = seen[key]; 166 if (!entry || now - entry.firstSeen > RESET_MS) { 167 seen[key] = { count: 1, firstSeen: now }; 168 return false; 169 } 170 entry.count += 1; 171 if (entry.count === MAX_PER_SIG + 1) { 172 console.debug('[Rollbar] suppressing further reports of:', key); 173 } 174 if (entry.count > MAX_PER_SIG) return true; 175 } catch (e) {} 176 return false; 177 }; 178 })() 179 }; 180 // Rollbar Snippet 181 !function(){"use strict";var r=function(){},n={debug:0,info:1,warn:2,error:3,disable:4},o={error:function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return r("error",o)},warn:function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return r("warn",o)},info:function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return r("info",o)},debug:function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return r("debug",o)},log:function(){for(var n=arguments.length,o=new Array(n),e=0;e<n;e++)o[e]=arguments[e];return r("info",o)},init:function(o){var e=o.logLevel;r=function(r,o){n[r]<n[e]||(o.unshift("Rollbar:"),console[r].apply(console,o))}}},e=o;function t(r,n){return null!=r&&(Object.hasOwn?Object.hasOwn(r,n):Object.prototype.hasOwnProperty.call(r,n))}function a(r,n){(null==n||n>r.length)&&(n=r.length);for(var o=0,e=Array(n);o<n;o++)e[o]=r[o];return e}function l(r,n){this.impl=r(n,this),this.options=n,function(r){var n,o=function(r){return function(){var n=Array.prototype.slice.call(arguments,0);if(this.impl[r])return this.impl[r].apply(this.impl,n)}},e=function(r,n){var o="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!o){if(Array.isArray(r)||(o=function(r,n){if(r){if("string"==typeof r)return a(r,n);var o={}.toString.call(r).slice(8,-1);return"Object"===o&&r.constructor&&(o=r.constructor.name),"Map"===o||"Set"===o?Array.from(r):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?a(r,n):void 0}}(r))||n&&r&&"number"==typeof r.length){o&&(r=o);var e=0,t=function(){};return{s:t,n:function(){return e>=r.length?{done:!0}:{done:!1,value:r[e++]}},e:function(r){throw r},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,i=!0,c=!1;return{s:function(){o=o.call(r)},n:function(){var r=o.next();return i=r.done,r},e:function(r){c=!0,l=r},f:function(){try{i||null==o.return||o.return()}finally{if(c)throw l}}}}("log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,_createItem,wrap,loadFull,shimId,captureEvent,captureDomContentLoaded,captureLoad".split(","));try{for(e.s();!(n=e.n()).done;){var t=n.value;r[t]=o(t)}}catch(r){e.e(r)}finally{e.f()}}(l.prototype)}l.prototype._swapAndProcessMessages=function(r,n){var o,e,t;for(this.impl=r(this.options);o=n.shift();)e=o.method,t=o.args,this[e]&&"function"==typeof this[e]&&("captureDomContentLoaded"===e||"captureLoad"===e?this[e].apply(this,[t[0],o.ts]):this[e].apply(this,t));return this};var i=l;function c(r,n,o){if(t(n,"addEventListener")){for(var e=n.addEventListener;e._rollbarOldAdd&&e.belongsToShim;)e=e._rollbarOldAdd;var a=function(n,o,t){e.call(this,n,r.wrap(o),t)};a._rollbarOldAdd=e,a.belongsToShim=o,n.addEventListener=a;for(var l=n.removeEventListener;l._rollbarOldRemove&&l.belongsToShim;)l=l._rollbarOldRemove;var i=function(r,n,o){l.call(this,r,n&&n._rollbar_wrapped||n,o)};i._rollbarOldRemove=l,i.belongsToShim=o,n.removeEventListener=i}}function u(r,n){(null==n||n>r.length)&&(n=r.length);for(var o=0,e=Array(n);o<n;o++)e[o]=r[o];return e}function s(r){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},s(r)}function d(r){return function(){try{return r.apply(this,arguments)}catch(r){try{e.error("[Rollbar]: Internal error",r)}catch(r){}}}}var f=0;function p(r,n){this.options=r,this._rollbarOldOnError=null;var o=f++;this.shimId=function(){return o},"undefined"!=typeof window&&window._rollbarShims&&(window._rollbarShims[o]={handler:n,messages:[]})}var b=function(r,n){return new p(r,n)},h=function(r){return new i(b,r)};function y(r){return d(function(){var n=Array.prototype.slice.call(arguments,0),o={shim:this,method:r,args:n,ts:new Date};window._rollbarShims[this.shimId()].messages.push(o)})}p.prototype.loadFull=function(r,n,o,e,t){var a=!1,l=n.createElement("script"),i=n.getElementsByTagName("script")[0],c=i.parentNode;l.crossOrigin="",l.src=e.rollbarJsUrl,o||(l.async=!0),l.onload=l.onreadystatechange=d(function(){if(!(a||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState)){l.onload=l.onreadystatechange=null;try{c.removeChild(l)}catch(r){}a=!0,function(){var n;if(void 0===r._rollbarDidLoad){n=new Error("rollbar.js did not load");for(var o,e,a,l,i=0;o=r._rollbarShims[i++];)for(o=o.messages||[];e=o.shift();)for(a=e.args||[],i=0;i<a.length;++i)if("function"==typeof(l=a[i])){l(n);break}}"function"==typeof t&&t(n)}()}}),c.insertBefore(l,i)},p.prototype.wrap=function(r,n,o){try{var e;if(e="function"==typeof n?n:function(){return n||{}},"function"!=typeof r)return r;if(r._isWrap)return r;if(!r._rollbar_wrapped)for(var a in r._rollbar_wrapped=function(){o&&"function"==typeof o&&o.apply(this,arguments);try{return r.apply(this,arguments)}catch(o){var n=o;throw n&&("string"==typeof n&&(n=new String(n)),n._rollbarContext=e()||{},n._rollbarContext._wrappedSource=r.toString(),window._rollbarWrappedError=n),n}},r._rollbar_wrapped._isWrap=!0,r)t(r,a)&&(r._rollbar_wrapped[a]=r[a]);return r._rollbar_wrapped}catch(n){return r}};var v,m=function(r){var n="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];
181if(!n){if(Array.isArray(r)||(n=function(r,n){if(r){if("string"==typeof r)return u(r,n);var o={}.toString.call(r).slice(8,-1);return"Object"===o&&r.constructor&&(o=r.constructor.name),"Map"===o||"Set"===o?Array.from(r):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?u(r,n):void 0}}(r))){n&&(r=n);var o=0,e=function(){};return{s:e,n:function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}},e:function(r){throw r},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var t,a=!0,l=!1;return{s:function(){n=n.call(r)},n:function(){var r=n.next();return a=r.done,r},e:function(r){l=!0,t=r},f:function(){try{a||null==n.return||n.return()}finally{if(l)throw t}}}}("log,debug,info,warn,warning,error,critical,global,configure,handleUncaughtException,handleAnonymousErrors,handleUnhandledRejection,captureEvent,captureDomContentLoaded,captureLoad".split(","));try{for(m.s();!(v=m.n()).done;){var g=v.value;p.prototype[g]=y(g)}}catch(r){m.e(r)}finally{m.f()}var w="https://cdn.rollbar.com/rollbarjs/refs/tags/v3.1.0/rollbar.min.js";if(_rollbarConfig=_rollbarConfig||{},!_rollbarConfig.rollbarJsUrl){var _="replay"in _rollbarConfig;_rollbarConfig.rollbarJsUrl=_?w.replace("rollbar.min.js","rollbar.replay.min.js"):w}_rollbarConfig.async=void 0===_rollbarConfig.async||_rollbarConfig.async;var E,S=function(r,n){if(r){var o=n.globalAlias||"Rollbar";if("object"===s(r[o]))return r[o];r._rollbarShims={},r._rollbarWrappedError=null;var e=new h(n);return d(function(){n.captureUncaught&&(e._rollbarOldOnError=r.onerror,function(r,n){if(r){var o;if("function"==typeof n._rollbarOldOnError)o=n._rollbarOldOnError;else if(r.onerror){for(o=r.onerror;o._rollbarOldOnError;)o=o._rollbarOldOnError;n._rollbarOldOnError=o}n.handleAnonymousErrors();var e=function(){var e=Array.prototype.slice.call(arguments,0);!function(r,n,o,e){r._rollbarWrappedError&&(e[4]||(e[4]=r._rollbarWrappedError),e[5]||(e[5]=r._rollbarWrappedError._rollbarContext),r._rollbarWrappedError=null);var t=n.handleUncaughtException.apply(n,e);o&&o.apply(r,e),"anonymous"===t&&(n.anonymousErrorsPending+=1)}(r,n,o,e)};e._rollbarOldOnError=o,r.onerror=e}}(r,e),n.wrapGlobalEventHandlers&&function(r,n,o){if(r){var e,t,a="EventTarget,Window,Node,ApplicationCache,AudioTrackList,ChannelMergerNode,CryptoOperation,EventSource,FileReader,HTMLUnknownElement,IDBDatabase,IDBRequest,IDBTransaction,KeyOperation,MediaController,MessagePort,ModalWindow,Notification,SVGElementInstance,Screen,TextTrack,TextTrackCue,TextTrackList,WebSocket,WebSocketWorker,Worker,XMLHttpRequest,XMLHttpRequestEventTarget,XMLHttpRequestUpload".split(",");for(e=0;e<a.length;++e)r[t=a[e]]&&r[t].prototype&&c(n,r[t].prototype,o)}}(r,e,!0)),n.captureUnhandledRejections&&function(r,n){if(r){"function"==typeof r._rollbarURH&&r._rollbarURH.belongsToShim&&r.removeEventListener("unhandledrejection",r._rollbarURH);var o=function(r){var o,e,t;try{o=r.reason}catch(r){o=void 0}try{e=r.promise}catch(r){e="[unhandledrejection] error getting `promise` from event"}try{t=r.detail,!o&&t&&(o=t.reason,e=t.promise)}catch(r){}o||(o="[unhandledrejection] error getting `reason` from event"),n&&n.handleUnhandledRejection&&n.handleUnhandledRejection(o,e)};o.belongsToShim=!0,r._rollbarURH=o,r.addEventListener("unhandledrejection",o)}}(r,e);var t=n.autoInstrument;return!1!==n.enabled&&(void 0===t||!0===t||function(r){return!("object"!==s(r)||void 0!==r.page&&!r.page)}(t))&&r.addEventListener&&(r.addEventListener("load",e.captureLoad.bind(e)),r.addEventListener("DOMContentLoaded",e.captureDomContentLoaded.bind(e))),r[o]=e,e})()}}(window,_rollbarConfig),O=(E=_rollbarConfig,function(r){if(!r&&!window._rollbarInitialized){for(var n,o,e=(E=E||{}).globalAlias||"Rollbar",t=window.rollbar,a=function(r){return new t(r)},l=0;n=window._rollbarShims[l++];)o||(o=n.handler),n.handler._swapAndProcessMessages(a,n.messages);window[e]=o,window._rollbarInitialized=!0}});window.rollbar=h,S.loadFull(window,document,!_rollbarConfig.async,_rollbarConfig,O)}(); 182 // End Rollbar Snippet 183 184 // Rollbar jQuery Plugin Snippet 185 if (typeof jQuery !== 'undefined') { 186 !function(r){function t(n){if(e[n])return e[n].exports;var a=e[n]={exports:{},id:n,loaded:!1};return r[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var e={};return t.m=r,t.c=e,t.p="",t(0)}([function(r,t,e){"use strict";!function(r,t,e){var n=t.Rollbar;if(n){var a="0.0.8";n.configure({payload:{notifier:{plugins:{jquery:{version:a}}}}});var o=function(r){if(n.error(r),t.console){var e="[reported to Rollbar]";n.options&&!n.options.enabled&&(e="[Rollbar not enabled]"),t.console.log(r.message+" "+e)}};r(e).ajaxError(function(r,t,e,a){var o=t.status,u=e.url,i=e.type;if(o){var s={status:o,url:u,type:i,isAjax:!0,data:e.data,jqXHR_responseText:t.responseText,jqXHR_statusText:t.statusText},d=a?a:"jQuery ajax error for "+i;n.warning(d,s)}});var u=r.fn.ready;r.fn.ready=function(r){return u.call(this,function(t){try{r(t)}catch(r){o(r)}})};var i=r.event.add;r.event.add=function(t,e,n,a,u){var s,d=function(r){return function(){try{return r.apply(this,arguments)}catch(r){o(r)}}};return n.handler?(s=n.handler,n.handler=d(n.handler)):(s=n,n=d(n)),s.guid?n.guid=s.guid:n.guid=s.guid=r.guid++,i.call(this,t,e,n,a,u)}}}(jQuery,window,document)}]); 187 } 188 // End Rollbar jQuery Plugin Snippet 189 190 // TODO: How do we warn about jquery migrate -> rollber errors. 191 (function() { 192 var rollbarWarnedMigrations = {}; 193 194 function warnRollbarAboutMigrationError(msg) { 195 if(rollbarWarnedMigrations[msg]) return; 196 rollbarWarnedMigrations[msg] = true; 197 var fullMessage = "jQuery Migrate Warned: " + msg; 198 // console.warn(fullMessage); 199 if(Rollbar && Rollbar.warning) Rollbar.warning(fullMessage); 200 } 201 202 function warnAllCurrentMigrationIssues() { 203 console.log("Sending all jquery migrate warnings to rollbar."); 204 if(!$ || !$.migrateWarnings) return;
205 $.migrateWarnings.forEach(function(warning) { 206 warnRollbarAboutMigrationError(warning); 207 }); 208 } 209 210 // Use the native handling, to ensure we have jquery loaded. 211 // window.addEventListener('load', function() { 212 // setTimeout(warnAllCurrentMigrationIssues, 15000); 213 // }); 214 })(); 215</script>
215 216 217 218<div class="thq-tw-application" data-controller="header"> 219<nav aria-label="Main navigation" class="bg-white border-b border-gray-200 shadow-sm print:hidden"> 220<div class="mx-auto px-4 sm:px-6 lg:px-12"> 221<div class="relative flex justify-between items-center h-[70px]"> 222<!-- Mobile menu toggle + Logo + Org name --> 223<div class="flex items-center flex-shrink-0 max-w-[320px]" data-header-target="org"> 224<!-- Burger menu (visibility controlled by Stimulus) --> 225<button aria-label="Open menu" class="hidden items-center justify-center w-10 h-10 rounded-lg text-gray-500 mr-3 hover:bg-gray-100 focus:outline-none focus:ring-1 focus:ring-gray-200 ml-[-5px]" data-action="click->header#openDrawer" data-header-target="mobileToggle" type="button"> 226<i class="fa-solid fa-bars text-2xl"></i> 227</button> 228<!-- Logo â centered on mobile via absolute, static on desktop --> 229<a aria-label="East Coast Sailing Association" class="flex-shrink-0 mr-3 absolute sm:static sm:relative left-1/2 sm:left-auto -translate-x-1/2 sm:translate-x-0" href="https://ecsasail.com/"><img class="h-10 w-auto object-contain rounded-lg" alt="East Coast Sailing Association" src="https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/medjpg/Burgee_small.jpg" /> 230</a><!-- Club name â hidden on mobile --> 231<div class="hidden sm:!block min-w-0"> 232<a class="text-base font-medium text-gray-900 hover:text-gray-700 line-clamp-2 leading-tight" href="https://ecsasail.com/">East Coast Sailing Association</a> 233</div> 234</div> 235<!-- Desktop navigation (visibility controlled by Stimulus) --> 236<div class="absolute flex items-center space-x-1 flex-nowrap z-30 left-1/2 -translate-x-1/2" data-header-target="desktopNav"> 237<a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0" href="https://ecsasail.com/public/pages/about">About</a> 238<div class="relative group" data-dropdown-id="nav-menu-club"><a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0 inline-flex items-center" data-action="click->header#toggleDropdown" href="#">Club<i class="fa fa-chevron-down ml-1 text-xs"></i></a><div class="hidden absolute left-0 mt-1 w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 py-1 z-50" data-dropdown-menu="nav-menu-club"><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/join-us">Join Us - or Renew your Existing Membership!</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/advertise-with-us">Advertise with us!</a></div></div> 239<div class="relative group" data-dropdown-id="nav-menu-local"><a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0 inline-flex items-center" data-action="click->header#toggleDropdown" href="#">Local<i class="fa fa-chevron-down ml-1 text-xs"></i></a><div class="hidden absolute left-0 mt-1 w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 py-1 z-50" data-dropdown-menu="nav-menu-local"><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/weather-links">Weather</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/bridge-and-lock-schedules">Bridge and Lock Schedules</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/protect-our-waterways">Protect Our Waterways</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/navigation-alerts">Navigation Alerts</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/laws-regulations--safety">Laws, Regulations, & Safety</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/boat--ship-trackers">Boat & Ship Trackers</a><a class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50" href="https://ecsasail.com/public/pages/navigation-what3words">Navigation: What3Words</a></div></div> 240<a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0" href="https://ecsasail.com/public/membership_levels">Memberships</a> 241<a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0" href="https://ecsasail.com/public/schedule/events">Events</a> 242<a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0" href="https://ecsasail.com/public/schedule/meetings">Meetings</a> 243<a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0 bg-gray-100 text-gray-900 fg-club-colour" href="https://ecsasail.com/public/shop/products">Shop</a> 244<a class="px-3 py-2 text-sm font-medium text-gray-700 hover:text-gray-900 rounded-md hover:bg-gray-50 transition-colors whitespace-nowrap flex-shrink-0" href="https://ecsasail.com/public/contact_us">Contact Us</a> 245</div> 246<!-- Right side: cart + user + mobile toggle --> 247<div class="flex items-center space-x-3"> 248<div id="shopping_cart_header_badge"> 249<button aria-label="Shopping cart" class="inline-flex items-center justify-center p-2 rounded-lg text-sm font-medium leading-none text-gray-900 hover:bg-gray-100" data-modal-target="shopping_cart" data-modal-toggle="shopping_cart" type="button"> 250<span class="sr-only">
250Cart</span> 251<div class="relative sm:mr-2"> 252<i class="fa-solid fa-cart-shopping text-lg"></i> 253</div> 254<span class="hidden text-sm font-medium sm:!inline">$0.00</span> 255</button> 256</div> 257 258<a data-dismiss="modal" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-blue-700 hover:bg-blue-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" href="/users/sign_in">Log in 259</a></div> 260</div> 261</div> 262</nav> 263<!-- Sidebar drawer (mobile menu) --> 264<!-- Backdrop --> 265<div class="hidden fixed inset-0 bg-black bg-opacity-50 z-50 transition-opacity" data-action="click->header#closeDrawer" data-header-target="drawerBackdrop"></div> 266<!-- Drawer panel --> 267<div class="fixed top-0 left-0 h-full w-72 bg-white shadow-xl z-50 transform -translate-x-full transition-transform duration-300" data-header-target="drawer"> 268<div class="flex items-center justify-between p-4 border-b border-gray-200"> 269<a class="flex items-center gap-3 min-w-0" href="https://ecsasail.com/"><img class="h-8 w-auto object-contain rounded-lg flex-shrink-0" alt="East Coast Sailing Association" src="https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/medjpg/Burgee_small.jpg" /> 270<div class="text-sm font-semibold text-gray-900 truncate">East Coast Sailing Association</div> 271</a><button aria-label="Close menu" class="flex-shrink-0 text-gray-400 rounded-lg w-10 h-10 flex items-center justify-center hover:text-gray-600 hover:bg-gray-100 -mr-2" data-action="click->header#closeDrawer" type="button"> 272<i class="fa-solid fa-xmark text-lg"></i> 273</button> 274</div> 275<div class="overflow-y-auto p-4 h-[calc(100%-65px)]"> 276<div class="space-y-1"> 277<a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors" href="https://ecsasail.com/public/pages/about">About</a> 278<div><button type="button" class="flex items-center justify-between w-full px-3 py-2 text-base text-gray-500 hover:text-gray-900 hover:bg-gray-50 rounded-md" data-action="click->header#toggleSection"><span>Club</span><i class="fa-solid fa-chevron-down text-xs transition-transform duration-200 "></i></button><div class="space-y-1 overflow-hidden hidden"><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/join-us">Join Us - or Renew your Existing Membership!</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/advertise-with-us">Advertise with us!</a></div></div> 279<div><button type="button" class="flex items-center justify-between w-full px-3 py-2 text-base text-gray-500 hover:text-gray-900 hover:bg-gray-50 rounded-md" data-action="click->header#toggleSection"><span>Local</span><i class="fa-solid fa-chevron-down text-xs transition-transform duration-200 "></i></button><div class="space-y-1 overflow-hidden hidden"><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/weather-links">Weather</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/bridge-and-lock-schedules">Bridge and Lock Schedules</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/protect-our-waterways">Protect Our Waterways</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/navigation-alerts">Navigation Alerts</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/laws-regulations--safety">Laws, Regulations, & Safety</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/boat--ship-trackers">Boat & Ship Trackers</a><a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors pl-6" href="https://ecsasail.com/public/pages/navigation-what3words">Navigation: What3Words</a></div></div> 280<a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors" href="https://ecsasail.com/public/membership_levels">Memberships</a> 281<a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors" href="https://ecsasail.com/public/schedule/events">Events</a> 282<a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors" href="https://ecsasail.com/public/schedule/meetings">Meetings</a> 283<a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors bg-gray-100 text-gray-900 fg-club-colour" href="https://ecsasail.com/public/shop/products">Shop</a> 284<a class="block px-3 py-2 text-base text-gray-600 hover:text-gray-900 hover:bg-gray-50 rounded-md transition-colors" href="https://ecsasail.com/public/contact_us">Contact Us</a> 285</div> 286</div> 287</div> 288</div> 289 290<div class="thq-tw-application"> 291<div class="mx-auto px-4 sm:px-6 lg:px-12 max-w-6xl" id="flash"> 292<noscript> 293<div class="flex items-center justify-between px-4 py-3 my-4 roun
293ded-lg text-sm bg-red-50 text-red-800 border border-red-200"> 294<span>JavaScript must be enabled. <a href='http://activatejavascript.org' target='_blank'>How to enable JavaScript</a> 295</span> 296</div> 297</noscript> 298<div class="hidden flex items-center justify-between px-4 py-3 my-4 rounded-lg text-sm bg-red-50 text-red-800 border border-red-200" id="cookies_error"> 299<span>Cookies must be enabled. <a href='http://www.whatarecookies.com/enable.asp' target='_blank'>How to enable cookies</a> 300</span> 301</div> 302</div> 303</div> 304 305<main class="page-container flex-container" role="main"> 306<div class="page-content flex-content default"> 307<div class="thq-tw-application"> 308<div class="hidden mx-auto px-4 py-4 sm:px-6 lg:px-12 max-w-6xl print:!block"> 309<div class="flex items-center justify-between rounded-lg border border-gray-200 p-4"> 310<div class="flex items-center gap-3"> 311<img class="h-10 w-auto object-contain rounded-lg" src="https://s3.tidyhq.com/orgs/eaea3d243de6/org/logo/5e822659a89e296e35eb7de50c80322d2a96c050/small/Burgee_small.png" /> 312<div> 313<div class="text-sm font-semibold text-gray-900">East Coast Sailing Association</div> 314<div class="flex items-center gap-1 text-xs text-gray-400"> 315Powered by 316<svg class="h-3 w-auto" fill="currentColor" version="1.1" viewBox="0 0 853.3 265.4" xmlns="http://www.w3.org/2000/svg"> 317<ellipse cx="126.9" cy="131.5" rx="29.6" ry="28.8"></ellipse> 318<ellipse cx="126.9" cy="33" rx="29.6" ry="28.8"></ellipse> 319<ellipse cx="34.6" cy="131.5" rx="29.6" ry="28.8"></ellipse> 320<ellipse cx="34.6" cy="229.9" rx="29.6" ry="28.8"></ellipse> 321<path d="M273.4,98v-35.6h-32.7v35.6h-19.8v21.9h19.8v70.1c0,6,1,10.8,3,14.5s4.7,6.5,8.2,8.5,7.4,3.3,12,4c4.5.7,9.3,1,14.4,1s6.5,0,9.9-.2,6.4-.5,9.2-.9v-25.3c-1.5.3-3.1.5-4.8.7s-3.4.2-5.3.2c-5.5,0-9.2-.9-11-2.8-1.8-1.8-2.8-5.5-2.8-11v-58.9h23.9v-21.9h-24ZM343.6,79.6v-26.9h-32.7v26.9h32.7ZM310.9,98v118.9h32.7v-118.9h-32.7ZM450.8,157.1c0,4.9-.5,9.7-1.4,14.3s-2.5,8.7-4.6,12.3-5,6.5-8.6,8.6-8.1,3.2-13.5,3.2-9.4-1.1-13-3.3-6.6-5.1-9-8.7-4.1-7.7-5.2-12.3-1.6-9.2-1.6-13.8.5-9.6,1.5-14.1,2.6-8.5,4.8-12.1c2.2-3.5,5.2-6.4,8.9-8.5,3.7-2.1,8.2-3.2,13.6-3.2s9.8,1.1,13.3,3.2,6.4,4.9,8.6,8.4c2.2,3.4,3.8,7.4,4.7,12,.9,4.5,1.4,9.2,1.4,14.1h.1ZM451.3,201.7v15.2h31.1V52.6h-32.7v59.8h-.5c-3.7-5.8-8.7-10.2-15.1-13.2s-13.1-4.5-20.1-4.5-16.4,1.7-23,5.2-12.1,8-16.4,13.7c-4.4,5.7-7.7,12.2-9.9,19.7-2.2,7.4-3.3,15.1-3.3,23.1s1.1,16.3,3.3,23.9c2.2,7.7,5.5,14.5,9.9,20.4s9.9,10.6,16.7,14c6.7,3.4,14.6,5.2,23.5,5.2s14.8-1.4,21-4.3c6.2-2.8,11.2-7.5,15.1-13.9h.5-.1ZM562.6,231.6l49.7-133.6h-33.8l-26,81.4h-.5l-26.9-81.4h-34.7l41.6,111.6c.9,2.3,1.4,4.8,1.4,7.4s-1,6.7-3.1,9.7-5.3,4.6-9.5,5.1c-3.2.2-6.4,0-9.7-.2-3.2-.3-6.4-.6-9.4-.9v26.9c3.4.3,6.7.6,10,.8,3.3.2,6.6.3,10,.3,11.2,0,19.9-2.1,26.2-6.2,6.3-4.1,11.2-11,14.7-20.7v-.2ZM621.5,52.6v164.2h14.5v-69.2c.2-5.8,1.1-11.2,2.9-16.2,1.8-5,4.2-9.3,7.4-12.9s7-6.4,11.5-8.5,9.7-3.1,15.5-3.1,10.7.9,14.6,2.8c3.9,1.8,7,4.4,9.3,7.6s3.9,7,4.8,11.4c.9,4.4,1.4,9.1,1.4,14.1v74.1h14.5v-76.4c0-7.1-.7-13.4-2.1-19.1-1.4-5.7-3.8-10.5-7.1-14.4-3.4-3.9-7.9-6.9-13.5-9.1-5.6-2.1-12.5-3.2-20.8-3.2s-16.2,2.2-23.2,6.6c-7.1,4.4-12,10.2-14.7,17.4h-.5V52.6h-14.5ZM846.7,260.6V98.2h-13.3v22.5h-.5c-1.5-4-3.8-7.6-6.8-10.7s-6.4-5.9-10.2-8.2c-3.8-2.3-7.9-4.1-12.3-5.3s-8.7-1.8-13-1.8c-9,0-16.9,1.7-23.6,5.1-6.7,3.4-12.2,7.9-16.7,13.7s-7.7,12.4-9.9,20-3.2,15.6-3.2,24,1.1,16.4,3.2,24c2.1,7.6,5.4,14.3,9.9,20s10,10.3,16.7,13.6,14.5,4.9,23.6,4.9,8.8-.5,13-1.6,8.2-2.7,11.8-4.8,6.9-4.8,9.8-8.1,5-7,6.6-11.3h.5v66.2h14.5v.2ZM751.7,157.5c0-6.1.7-12.2,2.2-18.3s3.8-11.5,6.9-16.2c3.1-4.8,7.2-8.6,12.1-11.6,4.9-3,10.8-4.5,17.7-4.5s14.1,1.5,19.4,4.5c5.3,3,9.6,6.9,12.9,11.6,3.3,4.8,5.7,10.2,7.1,16.2s2.2,12.2,2.2,18.3-.7,12.2-2.2,18.3-3.8,11.5-7.1,16.2c-3.3,4.8-7.6,8.6-12.9,11.6-5.3,3-11.8,4.5-19.4,4.5s-12.8-1.5-17.7-4.5-8.9-6.9-12.1-11.6c-3.1-4.8-5.4-10.2-6.9-16.2-1.5-6.1-2.2-12.2-2.2-18.3Z"></path> 322</svg> 323 324</div> 325</div> 326</div> 327<div class="text-sm font-medium text-gray-700">Shop</div> 328</div> 329</div> 330</div> 331 332<div class="thq-tw-application"> 333<div class="mx-auto px-4 py-8 sm:px-6 lg:px-12 max-w-6xl"> 334<!-- Product grid --> 335<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3"> 336<a class="group rounded-lg border border-gray-200 bg-white shadow-sm transition-all hover:shadow-md" href="/public/shop/products/brochure"><!-- Product image with floating badges --> 337<div class="relative w-full flex items-center justify-center overflow-hidden p-4 h-[340px] [&_img]:max-h-full [&_img]:max-w-full [&_img]:object-contain"> 338<img class="img-responsive" src="https://s3.tidyhq.com/orgs/eaea3d243de6/product/image/ca2940730a74df5c625de5c07495f177d1ee2a84/medium/Brochure_cover.png" /> 339<div class="absolute top-3 right-3 flex flex-col gap-1 items-end"> 340</div> 341</div> 342<!-- Product info --> 343<div class="p-4 pt-0"> 344<!-- Product name --> 345<div class="text-base font-semibold text-gray-900 leading-tight line-clamp-2 group-hover:text-blue-700">Brochure</div> 346<!-- Price + Shop Now --> 347<div class="mt-3 flex items-center justify-between gap-2"> 348<div class="min-w-0 flex flex-wrap items-center gap-1"> 349<span class="text-lg font-bold text-green-600">Free</span> 350</div> 351<span class="inline-flex items-center rounded-lg bg-blue-700 text-sm font-medium text-white flex-shrink-0 whitespace-nowrap px-5 py-2.5 group-hover:bg-blue-800"> 352<i class="fa-solid fa-cart-plus mr-2 -ms-1"></i> 353Shop Now 354</span> 355</div> 356</div> 357</a> 358</div> 359</div> 360</div> 361 362</div> 363</main> 364<div class="thq-tw-application" id="flowbite_container_pickers" style="position: absolute;"></div> 365<div class="thq-tw-application"> 366<footer class="print:hidden"> 367<div class="mx-auto px-4 sm:px-6 lg:px-12"> 368<hr class="border-gray-200"> 369<div class="py-10 md:py-12"> 370<div class="flex flex-col gap-8 md:flex-row md:justify-between"> 371<!-- Left: Club info --> 372<div class="flex-1 text-center md:text-left"> 373<div class="text-lg font-semibold text-gray-900">East Coast Sailing Association</div> 374<div class="text-sm text-gray-500 mt-3">P. O. Box 372124<br>Satellite Beach, Florida, 32937-0124<br>United States</div> 375</div> 376<!-- Right: Social links + attribution --> 377<div class="flex-1 text-center md:flex-none md:w-[416px] md:text-right"> 378<div class="grid gap-4 justify-center justify-items-center mx-auto md:justify-end md:ml-auto md:mr-0" style="grid-template-columns: repeat(auto-fit, 20px); width: 100%; max-width: 416px;"> 379<a target="_blank" rel="noopener noreferrer" title="http://ecsasail.com" class="text-gray-400 hover:text-gray-600 transition-colors" href="http://ecsasail.com"><i class="fa-solid fa-globe text-xl"></i> 380</a><a target="_blank" rel="noopener noreferrer" title="341130779747518" class="text-gray-400 hover:text-gray-600 transition-colors" href="https://facebook.com/groups/341130779747518/"><i class="fa-brands fa-facebook text-xl"></i> 381</a></div> 382<div class="mt-6 flex items-center gap-2 justify-center md:justify-end"> 383<span class="text-xs text-gray-500">Powered by</span> 384<a target="_blank" aria-label="TidyHQ" class="opacity-50 hover:!opacity-80 transition-opacity" href="https://tidyhq.com/"><svg aria-label="TidyHQ" class="h-4 w-auto" fill="currentColor" role="img" version="1.1" viewBox="0 0 853.3 265.4" xmlns="http://www.w3.org/2000/svg"> 385<ellipse cx="126.9" cy="131.5" rx="29.6" ry="28.8"></ellipse> 386<ellipse cx="126.9" cy="33" rx="29.6" ry="28.8"></ellipse> 387<ellipse cx="34.6" cy="131.5" rx="29.6" ry="28.8"></ellipse> 388<ellipse cx="34.6" cy="229.9" rx="29.6" ry="28.8"></ellipse> 389<path d="M273.4,98v-35.6h-32.7v35.6h-19.8v21.9h19.8v70.1c0,6,1,10.8,3,14.5s4.7,6.5,8.2,8.5,7.4,3.3,12,4c4.5.7,9.3,1,14.4,1s6.5,0,9.9-.2,6.4-.5,9.2-.9v-25.3c-1.5.3-3.1.5-4.8.7s-3.4.2-5.3.2c-5.5,0-9.2-.9-11-2.8-1.8-1.8-2.8-5.5-2.8-11v-58.9h23.9v-21.9h-24ZM343.6,79.6v-26.9h-32.7v26.9h32.7ZM310.9,98v118.9h32.7v-118.9h-32.7ZM450.8,157.1c0,4.9-.5,9.7-1.4,14.3s-2.5,8.7-4.6,12.3-5,6.5-8.6,8.6-8.1,3.2-13.5,3.2-9.4-1.1-13-3.3-6.6-5.1-9-8.7-4.1-7.7-5.2-12.3-1.6-9.2-1.6-13.8.5-9.6,1.5-14.1,2.6-8.5,4.8-12.1c2.2-3.5,5.2-6.4,8.9-8.5,3.7-2.1,8.2-3.2,13.6-3.2s9.8,1.1,13.3,3.2,6.4,4.9,8.6,8.4c2.2,3.4,3.8,7.4,4.7,
38912,.9,4.5,1.4,9.2,1.4,14.1h.1ZM451.3,201.7v15.2h31.1V52.6h-32.7v59.8h-.5c-3.7-5.8-8.7-10.2-15.1-13.2s-13.1-4.5-20.1-4.5-16.4,1.7-23,5.2-12.1,8-16.4,13.7c-4.4,5.7-7.7,12.2-9.9,19.7-2.2,7.4-3.3,15.1-3.3,23.1s1.1,16.3,3.3,23.9c2.2,7.7,5.5,14.5,9.9,20.4s9.9,10.6,16.7,14c6.7,3.4,14.6,5.2,23.5,5.2s14.8-1.4,21-4.3c6.2-2.8,11.2-7.5,15.1-13.9h.5-.1ZM562.6,231.6l49.7-133.6h-33.8l-26,81.4h-.5l-26.9-81.4h-34.7l41.6,111.6c.9,2.3,1.4,4.8,1.4,7.4s-1,6.7-3.1,9.7-5.3,4.6-9.5,5.1c-3.2.2-6.4,0-9.7-.2-3.2-.3-6.4-.6-9.4-.9v26.9c3.4.3,6.7.6,10,.8,3.3.2,6.6.3,10,.3,11.2,0,19.9-2.1,26.2-6.2,6.3-4.1,11.2-11,14.7-20.7v-.2ZM621.5,52.6v164.2h14.5v-69.2c.2-5.8,1.1-11.2,2.9-16.2,1.8-5,4.2-9.3,7.4-12.9s7-6.4,11.5-8.5,9.7-3.1,15.5-3.1,10.7.9,14.6,2.8c3.9,1.8,7,4.4,9.3,7.6s3.9,7,4.8,11.4c.9,4.4,1.4,9.1,1.4,14.1v74.1h14.5v-76.4c0-7.1-.7-13.4-2.1-19.1-1.4-5.7-3.8-10.5-7.1-14.4-3.4-3.9-7.9-6.9-13.5-9.1-5.6-2.1-12.5-3.2-20.8-3.2s-16.2,2.2-23.2,6.6c-7.1,4.4-12,10.2-14.7,17.4h-.5V52.6h-14.5ZM846.7,260.6V98.2h-13.3v22.5h-.5c-1.5-4-3.8-7.6-6.8-10.7s-6.4-5.9-10.2-8.2c-3.8-2.3-7.9-4.1-12.3-5.3s-8.7-1.8-13-1.8c-9,0-16.9,1.7-23.6,5.1-6.7,3.4-12.2,7.9-16.7,13.7s-7.7,12.4-9.9,20-3.2,15.6-3.2,24,1.1,16.4,3.2,24c2.1,7.6,5.4,14.3,9.9,20s10,10.3,16.7,13.6,14.5,4.9,23.6,4.9,8.8-.5,13-1.6,8.2-2.7,11.8-4.8,6.9-4.8,9.8-8.1,5-7,6.6-11.3h.5v66.2h14.5v.2ZM751.7,157.5c0-6.1.7-12.2,2.2-18.3s3.8-11.5,6.9-16.2c3.1-4.8,7.2-8.6,12.1-11.6,4.9-3,10.8-4.5,17.7-4.5s14.1,1.5,19.4,4.5c5.3,3,9.6,6.9,12.9,11.6,3.3,4.8,5.7,10.2,7.1,16.2s2.2,12.2,2.2,18.3-.7,12.2-2.2,18.3-3.8,11.5-7.1,16.2c-3.3,4.8-7.6,8.6-12.9,11.6-5.3,3-11.8,4.5-19.4,4.5s-12.8-1.5-17.7-4.5-8.9-6.9-12.1-11.6c-3.1-4.8-5.4-10.2-6.9-16.2-1.5-6.1-2.2-12.2-2.2-18.3Z"></path> 390</svg> 391 392</a></div> 393</div> 394</div> 395</div> 396</div> 397</footer> 398</div> 399 400<div id="feedback_modal"></div> 401<div id="login_modal"></div> 402<div class="modal public-modal" id="get_started"> 403<div class="modal-dialog modal-500"> 404<div class="modal-content" style="overflow: hidden"> 405<div class="modal-body tc_desc"> 406<a aria-hidden="true" class="close" data-dismiss="modal" href="#"> 407<i class="fa fa-times"></i> 408</a> 409<div class="logo"> 410<svg fill="white" style="height: 40px; width: auto;" version="1.1" viewBox="0 0 853.3 265.4" xmlns="http://www.w3.org/2000/svg"> 411<ellipse cx="126.9" cy="131.5" rx="29.6" ry="28.8"></ellipse> 412<ellipse cx="126.9" cy="33" rx="29.6" ry="28.8"></ellipse> 413<ellipse cx="34.6" cy="131.5" rx="29.6" ry="28.8"></ellipse> 414<ellipse cx="34.6" cy="229.9" rx="29.6" ry="28.8"></ellipse> 415<path d="M273.4,98v-35.6h-32.7v35.6h-19.8v21.9h19.8v70.1c0,6,1,10.8,3,14.5s4.7,6.5,8.2,8.5,7.4,3.3,12,4c4.5.7,9.3,1,14.4,1s6.5,0,9.9-.2,6.4-.5,9.2-.9v-25.3c-1.5.3-3.1.5-4.8.7s-3.4.2-5.3.2c-5.5,0-9.2-.9-11-2.8-1.8-1.8-2.8-5.5-2.8-11v-58.9h23.9v-21.9h-24ZM343.6,79.6v-26.9h-32.7v26.9h32.7ZM310.9,98v118.9h32.7v-118.9h-32.7ZM450.8,157.1c0,4.9-.5,9.7-1.4,14.3s-2.5,8.7-4.6,12.3-5,6.5-8.6,8.6-8.1,3.2-13.5,3.2-9.4-1.1-13-3.3-6.6-5.1-9-8.7-4.1-7.7-5.2-12.3-1.6-9.2-1.6-13.8.5-9.6,1.5-14.1,2.6-8.5,4.8-12.1c2.2-3.5,5.2-6.4,8.9-8.5,3.7-2.1,8.2-3.2,13.6-3.2s9.8,1.1,13.3,3.2,6.4,4.9,8.6,8.4c2.2,3.4,3.8,7.4,4.7,12,.9,4.5,1.4,9.2,1.4,14.1h.1ZM451.3,201.7v15.2h31.1V52.6h-32.7v59.8h-.5c-3.7-5.8-8.7-10.2-15.1-13.2s-13.1-4.5-20.1-4.5-16.4,1.7-23,5.2-12.1,8-16.4,13.7c-4.4,5.7-7.7,12.2-9.9,19.7-2.2,7.4-3.3,15.1-3.3,23.1s1.1,16.3,3.3,23.9c2.2,7.7,5.5,14.5,9.9,20.4s9.9,10.6,16.7,14c6.7,3.4,14.6,5.2,23.5,5.2s14.8-1.4,21-4.3c6.2-2.8,11.2-7.5,15.1-13.9h.5-.1ZM562.6,231.6l49.7-133.6h-33.8l-26,81.4h-.5l-26.9-81.4h-34.7l41.6,111.6c.9,2.3,1.4,4.8,1.4,7.4s-1,6.7-3.1,9.7-5.3,4.6-9.5,5.1c-3.2.2-6.4,0-9.7-.2-3.2-.3-6.4-.6-9.4-.9v26.9c3.4.3,6.7.6,10,.8,3.3.2,6.6.3,10,.3,11.2,0,19.9-2.1,26.2-6.2,6.3-4.1,11.2-11,14.7-20.7v-.2ZM621.5,52.6v164.2h14.5v-69.2c.2-5.8,1.1-11.2,2.9-16.2,1.8-5,4.2-9.3,7.4-12.9s7-6.4,11.5-8.5,9.7-3.1,15.5-3.1,10.7.9,14.6,2.8c3.9,1.8,7,4.4,9.3,7.6s3.9,7,4.8,11.4c.9,4.4,1.4,9.1,1.4,14.1v74.1h14.5v-76.4c0-7.1-.7-13.4-2.1-19.1-1.4-5.7-3.8-10.5-7.1-14.4-3.4-3.9-7.9-6.9-13.5-9.1-5.6-2.1-12.5-3.2-20.8-3.2s-16.2,2.2-23.2,6.6c-7.1,4.4-12,10.2-14.7,17.4h-.5V52.6h-14.5ZM846.7,260.6V98.2h-13.3v22.5h-.5c-1.5-4-3.8-7.6-6.8-10.7s-6.4-5.9-10.2-8.2c-3.8-2.3-7.9-4.1-12.3-5.3s-8.7-1.8-13-1.8c-9,0-16.9,1.7-23.6,5.1-6.7,3.4-12.2,7.9-16.7,13.7s-7.7,12.4-9.9,20-3.2,15.6-3.2,24,1.1,16.4,3.2,24c2.1,7.6,5.4,14.3,9.9,20s10,10.3,16.7,13.6,14.5,4.9,23.6,4.9,8.8-.5,13-1.6,8.2-2.7,11.8-4.8,6.9-4.8,9.8-8.1,5-7,6.6-11.3h.5v66.2h14.5v.2ZM751.7,157.5c0-6.1.7-12.2,2.2-18.3s3.8-11.5,6.9-16.2c3.1-4.8,7.2-8.6,12.1-11.6,4.9-3,10.8-4.5,17.7-4.5s14.1,1.5,19.4,4.5c5.3,3,9.6,6.9,12.9,11.6,3.3,4.8,5.7,10.2,7.1,16.2s2.2,12.2,2.2,18.3-.7,12.2-2.2,18.3-3.8,11.5-7.1,16.2c-3.3,4.8-7.6,8.6-12.9,11.6-5.3,3-11.8,4.5-19.4,4.5s-12.8-1.5-17.7-4.5-8.9-6.9-12.1-11.6c-3.1-4.8-5.4-10.2-6.9-16.2-1.5-6.1-2.2-12.2-2.2-18.3Z"></path> 416</svg> 417 418</div> 419<div class="text-section"><h4>Why do I need a TidyHQ Account?</h4> 420<p>You need a TidyHQ to buy tickets, register for memberships and interact with your organisation. Having a TidyHQ Account lets us remember who you are so we can keep everything in one place for you ready to access and update at any time.</p> 421<h4>Got it, but what is a TidyHQ Account?</h4> 422<p>A TidyHQ Account is the personal account you use to access organisations that use TidyHQ to run their back office. This includes: Events, Memberships, Meetings, Finances, Online Shop, Communications and more. Your TidyHQ Account includes the email address and password you use to log in, as well as all the contact, payment and security details that you will use for this organisation and across all TidyHQ services.</p> 423</div> 424<div class="text-section"> 425<div class="row"> 426<div class="col-xs-12"> 427<strong>Find out more</strong> 428<a target="_blank" href="https://tidyhq.com/?ref=East+Coast+Sailing+Association-TidyHQLogo">tidyhq.com</a> 429</div> 430<div class="col-xs-12 text-right social"> 431<a target="_blank" href="https://facebook.com/tidyhq"><i class="fa fa-facebook-official"></i> 432</a><a target="_blank" href="https://x.com/tidyhqapp"><i class="fa fa-brands fa-x-twitter"></i> 433</a></div> 434</div> 435</div> 436</div> 437<div class="modal-body"> 438<div class="title-section">Create an Account</div> 439<div class="text-section text-center">Get started now for free. It only takes a few seconds!</div> 440<div class="actions-section"> 441<a class="btn blue" data-dismiss="modal" data-remote="true" href="/signup/new"><img style="width: 14px" class="vmiddle" src="https://cdn.tidyhq.com/assets/tc/thq-white-icon-10191781d5b36fdd3ca00140e63d87c5b660c06e728ad0975128c92db51737bb.png" /> 442<span class="vmiddle">Create Account</span> 443</a><a class="btn default btn-login" data-dismiss="modal" data-remote="true" href="/users/sign_in"><i class="icon-arrow-right vmiddle"></i> 444 445<span class="vmiddle">Log in</span> 446</a></div> 447</div> 448</div> 449</div> 450 451</div> 452 453<!--[if lt IE 9]>
454<script src="https://cdn.tidyhq.com/assets/shared/respond.min-d35c35ecbf22fe6dea6313ee1c2224acdeb7cf9fd65faa66ab432d7add240974.js"></script>
vendor: 1 bytes, line 454
454
455<script src="https://cdn.tidyhq.com/assets/shared/excanvas.min-2e33b50bccea16c8ea0ae1bc14b825bd6dc117b7c813fce6be7f07767d719415.js"></script>
455 456<![endif]--> 457
458<script> 459 var date_options = { 460 autoclose: true, 461 format: "yyyy-mm-dd", 462 minView: 2, 463 startDate: new Date('1900-01-01'), 464 todayBtn: true 465 }; 466 var datetime_options = { 467 autoclose: true, 468 format: "yyyy-mm-dd h:ii", 469 showMeridian: false, 470 minView: 0 471 }; 472 var contact_colors = ["bd323f", "5629a1", "247495", "3fb55b", "d1cd46", "e2be31", "ed473a", "66c1d2", "94a1b7", "a52589", "84001f", "294ea1", "24955c", "8bce23", "e1d61a", "ea7e36", "0b88f1", "28adc7", "9758cc", "732e64"]; 473</script>
473 474 475<div class="thq-tw-application" data-controller="shopping-cart" data-shopping-cart-clear-url-value="/public/shop/shopping_cart" data-shopping-cart-update-url-value="/public/shop/shopping_cart/item" id="shopping_cart_wrapper"> 476<div aria-hidden="true" class="hidden fixed inset-0 justify-center overflow-y-auto overflow-x-hidden p-4 z-[60] pt-[90px] !items-start" id="shopping_cart" tabindex="-1"> 477<div class="relative w-full max-w-2xl mx-auto"> 478<div class="relative rounded-lg bg-white shadow-xl p-4 sm:p-5" id="cart_content"> 479<!-- Header --> 480<div class="flex items-center justify-between mb-4 border-b border-gray-200 pb-4 sm:mb-5"> 481<h3 class="text-lg font-semibold text-gray-900">Shopping Cart</h3> 482<button class="inline-flex items-center justify-center w-8 h-8 rounded-md bg-transparent text-sm text-gray-400 hover:bg-gray-200 hover:text-gray-900" data-modal-hide="shopping_cart" type="button"> 483<i class="fa-solid fa-xmark text-lg"></i> 484<span class="sr-only">Close</span> 485</button> 486</div> 487<div class="py-12 text-center"> 488<i class="fa-solid fa-cart-shopping text-4xl text-gray-300 mb-4"></i> 489<p class="text-sm text-gray-500">Your cart is empty</p> 490</div> 491<div class="border-t border-gray-200 pt-4 mt-4"> 492<button class="inline-flex items-center justify-center rounded-lg border border-gray-200 bg-white text-sm font-medium text-gray-900 w-full px-5 py-2.5 hover:bg-gray-100 hover:text-blue-700" data-modal-hide="shopping_cart" type="button"> 493Continue Shopping 494</button> 495</div> 496</div> 497 498</div> 499</div> 500</div> 501
502<script> 503 $(function() { 504 $.cookie('check_cookies', 'enabled'); 505 if($.cookie('check_cookies')) { 506 $.removeCookie('check_cookies') 507 } else { 508 $("#cookies_error").removeClass('hidden').addClass('flex'); 509 } 510 }); 511</script>
511 512 513 514</body> 515</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.