PageSourceSearch

https://www.coastlineboatliftcovers.com/hurricane-program/

html coastlineboatliftcovers.com collected 2026-10-08 21:10:40 UTC 63,450 bytes, 948 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<title>Hurricane Removal Program — Coastline Boat Lift Covers</title>
7<meta name="description" content="Pre-book professional boat lift canopy removal and reinstallation in Southwest Florida before spots fill. Coastline handles removal and reinstall.">
8<link rel="preconnect" href="https://fonts.googleapis.com">
9<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10<link href="https://fonts.googleapis.com/css2?family=Albert+Sans:wght@400;600;700;800&display=swap" rel="stylesheet">
11<!-- Tabler Icons 3.19.0 outline (jsdelivr host so it renders in preview; brief specifies cloudflare — either works in the Divi build) -->
12<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/[email protected]/dist/tabler-icons.min.css">
13<style>
14/* ---------- Hard reset so the page is true edge-to-edge (kills theme/browser white border) ---------- */
15html,body{margin:0!important;padding:0!important;width:100%;max-width:100%;overflow-x:hidden;background:#021E3A}
16/* ---------- Tokens ---------- */
17#clb-hrp{
18  --blue:#0C71C3; --blue-mid:#0A5FA3; --blue-deep:#042C53; --blue-ink:#021E3A;
19  --text:#0F172A; --text-2:#4B5563; --text-3:#9CA3AF;
20  --white:#FFFFFF; --off:#F7F8FA; --border:#E5E7EB;
21  --maxw:100%; --pad:clamp(20px,5vw,72px);
22  font-family:'Albert Sans',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
23  color:var(--text); line-height:1.75; -webkit-font-smoothing:antialiased;
24  text-rendering:optimizeLegibility;
25}
26#clb-hrp *,#clb-hrp *::before,#clb-hrp *::after{box-sizing:border-box;margin:0;padding:0}
27/* Let the HubSpot guide form keep its own native spacing (exempt from the reset above) */
28#clb-hrp img,#clb-hrp video{display:block;max-width:100%}
29
30/* ---------- Type roles ---------- */
31#clb-hrp .h1{font-weight:800;font-size:clamp(40px,6vw,58px);letter-spacing:-0.03em;line-height:1.0}
32#clb-hrp .h2{font-weight:800;font-size:clamp(22px,3vw,34px);letter-spacing:-0.025em;line-height:1.1}
33#clb-hrp .sub{font-weight:700;font-size:16px;line-height:1.4}
34#clb-hrp .body{font-weight:400;font-size:16px;line-height:1.72;color:var(--text-2)}
35#clb-hrp .kicker{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:0.14em;color:var(--blue)}
36#clb-hrp .cap{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:0.14em;color:var(--text-3)}
37
38/* ---------- Layout helpers ---------- */
39#clb-hrp .wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
40#clb-hrp .sec{padding-top:clamp(64px,9vw,112px);padding-bottom:clamp(64px,9vw,112px)}
41#clb-hrp .bg-off{background:var(--off)}
42#clb-hrp .bg-white{background:var(--white)}
43#clb-hrp .bg-deep{background:var(--blue-deep);color:var(--white)}
44#clb-hrp .bg-ink{background:var(--blue-ink);color:var(--white)}
45
46/* ---------- Buttons ---------- */
47#clb-hrp .btn{
48  display:inline-flex;align-items:center;gap:9px;
49  font-weight:600;font-size:14px;letter-spacing:0.03em;
50  padding:14px 26px;border-radius:8px;border:1px solid transparent;
51  cursor:pointer;text-decoration:none;transition:background 130ms ease,transform 130ms ease,border-color 130ms ease;
52}
53#clb-hrp .btn-primary{background:var(--blue);color:var(--white)}
54#clb-hrp .btn-primary:hover{background:var(--blue-mid)}
55#clb-hrp .btn:active{transform:scale(0.97)}
56#clb-hrp .btn-ghost{background:transparent;color:var(--white);border-color:rgba(255,255,255,0.35)}
57#clb-hrp .btn-ghost:hover{border-color:rgba(255,255,255,0.7)}
58#clb-hrp .btn-light{background:var(--white);color:var(--blue-deep)}
59#clb-hrp .btn-light:hover{background:var(--off)}
60
61/* ---------- Reveal motion ---------- */
62#clb-hrp [data-reveal]{opacity:0;transform:translateY(16px);transition:opacity 450ms cubic-bezier(0.25,1,0.5,1),transform 450ms cubic-bezier(0.25,1,0.5,1)}
63#clb-hrp [data-reveal].in{opacity:1;transform:none}
64/* failsafe: lock final state even if a throttled compositor stalls the fade */
65#clb-hrp [data-reveal].in.done{opacity:1 !important;transform:none !important;transition:none !important}
66
67/* ===== 1 HERO ===== */
68#clb-hrp .hero{position:relative;min-height:100dvh;display:flex;align-items:flex-end;overflow:hidden;background:var(--blue-ink) center/cover no-repeat}
69#clb-hrp .hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
70#clb-hrp .hero .scrim{position:absolute;inset:0;background:linear-gradient(180deg,rgba(2,30,58,0.55) 0%,rgba(2,30,58,0.25) 38%,rgba(2,30,58,0.82) 100%)}
71#clb-hrp .hero .wrap{position:relative;z-index:2;padding-bottom:clamp(56px,8vw,104px);padding-top:120px;width:100%}
72/* Top bar: transparent, sits at very top of hero, scrolls away with the page */
73#clb-hrp .hero-topbar{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px clamp(20px,5vw,72px)}
74#clb-hrp .hero-logo{display:inline-flex;align-items:center}
75#clb-hrp .hero-logo img{height:46px;width:auto;display:block;filter:brightness(0) invert(1);transition:opacity 130ms ease}
76#clb-hrp .hero-logo:hover img{opacity:0.8}
77#clb-hrp .hero-phone{display:inline-flex;align-items:center;gap:8px;color:var(--white);text-decoration:none;font-weight:700;font-size:15px;letter-spacing:0.01em}
78#clb-hrp .hero-phone i{font-size:18px}
79#clb-hrp .hero-phone:hover{opacity:0.82}
80/* Scroll-in sticky bar: hidden until scrolled past hero, then slides down + pins */
81#clb-hrp .stickybar{position:fixed;top:0;left:0;right:0;z-index:60;background:rgba(2,30,58,0.94);backdrop-filter:blur(10px);box-shadow:0 1px 0 rgba(255,255,255,0.08);transform:translateY(-100%);opacity:0;pointer-events:none;transition:transform 260ms ease,opacity 260ms ease}
82#clb-hrp .stickybar.show{transform:translateY(0);opacity:1;pointer-events:auto}
83#clb-hrp .stickybar .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;height:66px;padding-top:0;padding-bottom:0}
84#clb-hrp .sb-logo{display:inline-flex;align-items:center}
85#clb-hrp .sb-logo img{height:36px;width:auto;display:block;filter:brightness(0) invert(1);transition:opacity 130ms ease}
86#clb-hrp .sb-logo:hover img{opacity:0.8}
87#clb-hrp .sb-cta{padding:9px 20px;font-size:13px}
88@media (max-width:640px){#clb-hrp .hero-logo img{height:38px}
88#clb-hrp .hero-phone span{display:none}#clb-hrp .sb-logo img{height:30px}}
89#clb-hrp .hero-inner{max-width:780px;color:var(--white)}
90#clb-hrp .hero .kicker{color:#7FBDEC;margin-bottom:18px}
91#clb-hrp .hero .h1{color:var(--white);margin-bottom:18px}
92#clb-hrp .hero .lede{font-weight:400;font-size:clamp(16px,2vw,19px);line-height:1.65;color:rgba(255,255,255,0.72);max-width:48ch;margin-bottom:30px}
93#clb-hrp .hero .actions{display:flex;flex-wrap:wrap;gap:12px}
94
95/* trust strip */
96#clb-hrp .trust .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border)}
97#clb-hrp .trust .cell{background:var(--white);display:flex;align-items:center;gap:14px;padding:26px clamp(18px,3vw,34px)}
98#clb-hrp .trust .cell i{font-size:26px;color:var(--blue);flex-shrink:0}
99#clb-hrp .trust .cell .t{font-weight:700;font-size:15px;line-height:1.2}
100#clb-hrp .trust .cell .d{font-size:13px;color:var(--text-2);line-height:1.35}
101
102/* ===== 2 SPLIT ===== */
103#clb-hrp .split{display:grid;grid-template-columns:1fr 1fr;align-items:stretch}
104#clb-hrp .split .media{position:relative;min-height:440px;overflow:hidden;background:var(--blue-deep)}
105#clb-hrp .split .media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 600ms cubic-bezier(0.25,1,0.5,1)}
106#clb-hrp .split .media:hover img{transform:scale(1.03)}
107#clb-hrp .split .panel{display:flex;flex-direction:column;justify-content:center;padding:clamp(40px,6vw,84px)}
108#clb-hrp .panel-ink{background:var(--blue-ink);color:var(--white)}
109#clb-hrp .panel-ink .kicker{color:#7FBDEC}
110#clb-hrp .panel-ink .h2{color:var(--white);margin:14px 0 18px}
111#clb-hrp .panel-ink .body{color:rgba(255,255,255,0.7)}
112#clb-hrp .panel-ink .body+.body{margin-top:14px}
113#clb-hrp .panel-ink .impact-rule{height:1px;background:rgba(255,255,255,0.1);margin:22px 0}
114#clb-hrp .panel-ink .impact-sub{font-weight:700;font-size:16px;color:var(--white);margin-bottom:8px}
115#clb-hrp .panel-ink .impact-sub-body{font-size:15px;line-height:1.7;color:rgba(255,255,255,0.6)}
116
117/* ===== 3 QUOTES ===== */
118#clb-hrp .quotes .head{max-width:60ch;margin-bottom:40px}
119#clb-hrp .quotes .head .h2{margin:12px 0 12px}
120#clb-hrp .qgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
121#clb-hrp .qbox{display:flex;flex-direction:column;background:var(--off);border:1px solid var(--border);border-radius:14px;padding:30px 28px;transition:box-shadow 200ms ease,transform 200ms ease}
122#clb-hrp .qbox:hover{box-shadow:0 16px 40px -28px rgba(4,44,83,0.4);transform:translateY(-2px)}
123#clb-hrp .qbox .qmark{font-family:Georgia,'Times New Roman',serif;font-size:46px;line-height:0.7;color:var(--blue);opacity:0.28;margin-bottom:14px;user-select:none}
124#clb-hrp .qbox blockquote{font-size:16px;font-weight:600;line-height:1.55;letter-spacing:-0.01em;color:var(--text)}
125#clb-hrp .qbox .src{margin-top:auto;padding-top:22px;font-size:11.5px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;color:var(--text-3);display:flex;align-items:center;gap:10px}
126#clb-hrp .qbox .src::before{content:'';width:22px;height:1.5px;background:var(--blue);flex-shrink:0}
127
128/* ===== 2 CLAIM-DENIED (dark, with quotes) ===== */
129#clb-hrp .claim .claim-head{max-width:62ch;margin-bottom:46px}
130#clb-hrp .claim .ckicker{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:0.14em;color:#7FBDEC;margin-bottom:16px}
131#clb-hrp .claim .claim-h2{font-weight:800;font-size:clamp(30px,4.8vw,54px);letter-spacing:-0.03em;line-height:1.03;color:#fff;margin-bottom:22px}
132#clb-hrp .claim .claim-lead{font-size:clamp(16px,1.7vw,19px);line-height:1.62;color:rgba(255,255,255,0.72);max-width:60ch}
133#clb-hrp .claim .claim-lead strong{color:#fff;font-weight:700}
134#clb-hrp .claim .qbox{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.14)}
135#clb-hrp .claim .qbox:hover{transform:translateY(-2px);box-shadow:0 18px 40px -28px rgba(0,0,0,0.6)}
136#clb-hrp .claim .qbox blockquote{color:rgba(255,255,255,0.94)}
137#clb-hrp .claim .qbox .qmark{color:#7FBDEC;opacity:0.55}
138#clb-hrp .claim .qbox .src{color:rgba(255,255,255,0.55)}
139#clb-hrp .claim .qbox .src::before{background:#7FBDEC}
140
141/* ===== BIG STATEMENT ===== */
142#clb-hrp .statement{padding-top:clamp(64px,9vw,112px);padding-bottom:clamp(64px,9vw,112px);background:var(--white)}
143#clb-hrp .statement .si{max-width:1000px;margin:0 auto;text-align:center}
144#clb-hrp .statement .kicker{margin-bottom:20px}
145#clb-hrp .statement .statement-h{font-weight:800;font-size:clamp(24px,3.4vw,40px);letter-spacing:-0.028em;line-height:1.08;color:var(--blue-deep);max-width:22ch;margin:0 auto 22px;text-wrap:balance}
146#clb-hrp .statement .statement-body{font-size:clamp(16px,1.7vw,19px);line-height:1.62;color:var(--text-2);max-width:58ch;margin:0 auto 32px}
147#clb-hrp .statement .statement-cta{display:flex;justify-content:center;gap:14px;flex-wrap:wrap}
148#clb-hrp .btn-line{background:transparent;color:var(--blue-deep);border-color:var(--border)}
149#clb-hrp .btn-line:hover{border-color:var(--blue);color:var(--blue)}
150
151/* ===== 4 OPTIONS ===== */
152#clb-hrp .options{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:44px}
153#clb-hrp .opt{border:1px solid var(--border);border-radius:14px;padding:clamp(28px,4vw,40px);background:var(--white);display:flex;flex-direction:column}
154#clb-hrp .opt.feat{border-color:var(--blue);box-shadow:0 18px 48px -28px rgba(12,113,195,0.45)}
155#clb-hrp .opt .tag{align-self:flex-start;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:0.14em;padding:5px 11px;border-radius:6px;margin-bottom:18px}
156#clb-hrp .opt.feat .tag{background:var(--blue);color:var(--white)}
157#clb-hrp .opt:not(.feat) .tag{background:var(--off);color:var(--text-2)}
158#clb-hrp .opt .name{font-weight:800;font-size:23px;letter-spacing:-0.02em;line-height:1.1}
159#clb-hrp .opt .desc{margin:10px 0 22px;font-size:15px;color:var(--text-2);line-height:1.6}
160#clb-hrp .opt ul{list-style:none;display:grid;gap:13px;margin-bottom:28px}
161#clb-hrp .opt li{display:flex;gap:11px;font-size:15px;line-height:1.5}
162#clb-hrp .opt li i{color:var(--blue);font-size:19px;flex-shrink:0;margin-top:1px}
163#clb-hrp .opt .foot{margin-top:auto}
164
165/* ===== 5 URGENCY ===== */
166#clb-hrp .urgency .wrap{display:flex;align-items:center;gap:clamp(20px,4vw,48px);flex-wrap:wrap}
167#clb-hrp .urgency i.lead{font-size:54px;color:#7FBDEC;flex-shrink:0}
168#clb-hrp .urgency .txt{flex:1;min-width:260px}
169#clb-hrp .urgency .h2{color:var(--white);margin-bottom:8px}
170#clb-hrp .urgency .body{color:rgba(255,255,255,0.7);max-width:58ch}
171#clb-hrp .urgency .foot{flex-shrink:0}
172
173/* ===== 6 STRIP ===== */
174#clb-hrp .strip{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
175#clb-hrp .strip figure{position:relative;height:240px;overflow:hidden;background:var(--blue-deep)}
176#clb-hrp .strip img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 500ms cubic-bezier(0.25,1,0.5,1)}
177#clb-hrp .strip figure:hover img{transform:scale(1.06)}
178
179/* ===== 7 FORECAST ===== */
180#clb-hrp .forecast .head{max-width:58ch;margin-bottom:44px}
181#clb-hrp .forecast .head .h2{margin:12px 0 14px}
182#clb-hrp .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:14px;overflow:hidden;margin-bottom:20px}
183#clb-hrp .stat{background:var(--white);padding:clamp(26px,3.5vw,38px)}
184#clb-hrp .stat .n{font-weight:800;font-size:clamp(34px,4.5vw,46px);letter-spacing:-0.03em;line-height:1;color:var(--blue-deep)}
185#clb-hrp .stat .l{margin-top:10px;font-size:14px;color:var(--text-2);line-height:1.4}
186#clb-hrp .noaa{display:flex;gap:14px;align-items:flex-start;max-width:70ch;margin-top:28px}
187#clb-hrp .noaa i{color:var(--blue);font-size:24px;flex-shrink:0;margin-top:3px}
188#clb-hrp .noaa .q{font-weight:700;font-size:17px;line-height:1.5;color:var(--text)}
189#clb-hrp .noaa .s{margin-top:6px;font-size:13px;color:var(--text-3);font-weight:700;letter-spacing:0.02em}
190#clb-hrp .srcline{font-size:11px;color:var(--text-3)}
191
192/* ===== 8 TRACKER ===== */
193#clb-hrp .tracker .head{max-width:58ch;margin-bottom:34px}
194#clb-hrp .tracker .kicker{color:#7FBDEC}
195#clb-hrp .tracker .h2{color:var(--white);margin:12px 0 14px}
196#clb-hrp .tracker .body{color:rgba(255,255,255,0.7)}
197#clb-hrp .tracker .frame{border:1px solid rgba(255,255,255,0.14);border-radius:16px;overflow:hidden;background:#0a1f38;box-shadow:0 30px 70px -40px rgba(0,0,0,0.7)}
198#clb-hrp .track-wrap{position:relative;min-height:520px}
199#clb-hrp .tracker iframe{display:block;width:100%;height:520px;border:0;background:#0a1f38}
200#clb-hrp .track-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:16px;padding:40px;background:#0a1f38}
201#clb-hrp .track-fallback i{font-size:46px;color:#7FBDEC}
202#clb-hrp .track-fallback .tf-t{font-weight:800;font-size:20px;letter-spacing:-0.02em;color:#fff}
203#clb-hrp .track-fallback p{font-size:14px;color:rgba(255,255,255,0.62);max-width:42ch;line-height:1.6}
204#clb-hrp .track-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:18px 22px;background:rgba(255,255,255,0.04);border-top:1px solid rgba(255,255,255,0.1)}
205#clb-hrp .track-bar .tb-live{display:flex;align-items:center;gap:11px;font-weight:700;font-size:13px;letter-spacing:0.02em;color:#fff}
206#clb-hrp .track-bar .dot{width:9px;height:9px;border-radius:50%;background:#3FBF6A;box-shadow:0 0 0 0 rgba(63,191,106,0.6);animation:clbPulse 2s infinite}
207@keyframes clbPulse{0%{box-shadow:0 0 0 0 rgba(63,191,106,0.55)}70%{box-shadow:0 0 0 9px rgba(63,191,106,0)}100%{box-shadow:0 0 0 0 rgba(63,191,106,0)}}
208#clb-hrp .track-bar .tb-meta{font-weight:400;color:rgba(255,255,255,0.5);font-size:12.5px;letter-spacing:0}
209#clb-hrp .track-bar .tb-link{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:13px;color:#7FBDEC;text-decoration:none;letter-spacing:0.01em}
210#clb-hrp .track-bar .tb-link:hover{color:#fff}
211#clb-hrp .tracker .attr{margin-top:14px;font-size:12px;color:rgba(255,255,255,0.5);font-weight:700;letter-spacing:0.06em;text-transform:uppercase}
212@media (prefers-reduced-motion:reduce){#clb-hrp .track-bar .dot{animation:none}}
213
214/* ===== 9 HOW ===== */
215#clb-hrp .steps.how{display:flex;flex-direction:column;justify-content:center;padding:clamp(40px,6vw,84px)}
216#clb-hrp .how .kicker{margin-bottom:12px}
217#clb-hrp .how .h2{margin-bottom:30px}
218#clb-hrp .stepline{display:flex;gap:18px;padding:18px 0;border-top:1px solid var(--border)}
219#clb-hrp .stepline:first-of-type{border-top:0}
220#clb-hrp .stepnum{flex-shrink:0;width:34px;height:34px;border-radius:50%;background:var(--off);color:var(--blue-deep);font-weight:800;font-size:15px;
220display:flex;align-items:center;justify-content:center;letter-spacing:-0.02em}
221#clb-hrp .stepline .st{font-weight:700;font-size:16px;line-height:1.3}
222#clb-hrp .stepline .sb{margin-top:5px;font-size:15px;color:var(--text-2);line-height:1.55}
223
224/* ===== 10 QUIZ ===== */
225#clb-hrp .quiz-head{max-width:56ch;margin-bottom:36px}
226#clb-hrp .quiz-head .h2{margin:12px 0 14px}
227#clb-hrp .quiz{max-width:760px;border:1px solid var(--border);border-radius:16px;background:var(--white);overflow:hidden}
228#clb-hrp .quiz .bar{height:4px;background:var(--border)}
229#clb-hrp .quiz .bar .fill{height:100%;width:0%;background:var(--blue);transition:width 250ms ease-in-out}
230#clb-hrp .quiz .stage{padding:clamp(28px,4vw,44px)}
231#clb-hrp .quiz .qnum{font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:0.14em;color:var(--text-3);margin-bottom:12px}
232#clb-hrp .quiz .qtext{font-weight:800;font-size:clamp(20px,2.6vw,26px);letter-spacing:-0.02em;line-height:1.2;margin-bottom:26px}
233#clb-hrp .quiz .answers{display:grid;gap:12px}
234#clb-hrp .quiz .ans{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;padding:17px 20px;border:1px solid var(--border);border-radius:10px;background:var(--white);font-family:inherit;font-weight:700;font-size:16px;color:var(--text);cursor:pointer;transition:border-color 130ms ease,background 130ms ease}
235#clb-hrp .quiz .ans:hover{border-color:var(--blue);background:var(--off)}
236#clb-hrp .quiz .ans i{color:var(--text-3);font-size:20px;transition:color 130ms ease}
237#clb-hrp .quiz .ans:hover i{color:var(--blue)}
238#clb-hrp .quiz .result .badge{display:inline-flex;align-items:center;gap:9px;font-weight:700;font-size:13px;letter-spacing:0.04em;padding:8px 15px;border-radius:8px;margin-bottom:18px}
239#clb-hrp .quiz .result.r-high .badge{background:#FDECEC;color:#B42318}
240#clb-hrp .quiz .result.r-mid .badge{background:#FEF6E7;color:#B25E09}
241#clb-hrp .quiz .result.r-low .badge{background:#E7F4EC;color:#1A7F45}
242#clb-hrp .quiz .result .rt{font-weight:800;font-size:clamp(20px,2.6vw,26px);letter-spacing:-0.02em;line-height:1.2;margin-bottom:12px}
243#clb-hrp .quiz .result .rb{font-size:16px;color:var(--text-2);line-height:1.6;max-width:54ch;margin-bottom:26px}
244#clb-hrp .quiz .restart{background:none;border:0;color:var(--blue);font-family:inherit;font-weight:700;font-size:14px;cursor:pointer;padding:0;margin-left:14px}
245
246/* ===== 11 GUIDE ===== */
247#clb-hrp .copy.guide{display:flex;flex-direction:column;justify-content:center;padding:clamp(40px,6vw,84px)}
248#clb-hrp .copy.guide .body{text-align:justify}
249#clb-hrp .guide .kicker{margin-bottom:12px}
250#clb-hrp .guide .h2{margin-bottom:16px}
251#clb-hrp .guide ul{list-style:none;display:grid;gap:12px;margin:6px 0 28px}
252#clb-hrp .guide li{display:flex;gap:11px;font-size:15px;line-height:1.5;color:var(--text-2)}
253#clb-hrp .guide li i{color:var(--blue);font-size:19px;flex-shrink:0;margin-top:1px}
254/* ===== 12 TESTIMONIALS ===== */
255#clb-hrp .tst .head{max-width:54ch;margin-bottom:40px}
256#clb-hrp .tst .head .h2{margin-top:12px}
257#clb-hrp .tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
258#clb-hrp .tcell{padding:clamp(26px,3vw,38px);border-left:1px solid var(--border)}
259#clb-hrp .tcell:first-child{border-left:0;padding-left:0}
260#clb-hrp .tcell:last-child{padding-right:0}
261#clb-hrp .tcell blockquote{font-weight:600;font-size:16px;font-style:italic;line-height:1.6;color:var(--text);letter-spacing:-0.01em}
262#clb-hrp .tcell .who{margin-top:16px;font-size:13px;color:var(--text-3);font-weight:700;letter-spacing:0.02em}
263#clb-hrp .tst .pending{margin-top:34px;display:flex;gap:11px;align-items:center;font-size:13px;color:var(--text-3);font-weight:700;letter-spacing:0.02em}
264#clb-hrp .tst .pending i{font-size:18px}
265
266/* ===== 13 FORM ===== */
267#clb-hrp .form-card{max-width:900px;margin:0 auto;background:var(--white);border:1px solid var(--border);border-radius:16px;padding:clamp(28px,4vw,52px)}
268#clb-hrp .form-head{margin-bottom:30px}
269#clb-hrp .form-head .h2{margin:12px 0 12px}
270#clb-hrp .form-head .body{max-width:62ch}
271#clb-hrp .price-row{margin-top:22px;padding-top:22px;border-top:1px solid var(--border);display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}
272#clb-hrp .price{display:flex;align-items:baseline;gap:9px}
273#clb-hrp .price .pn{font-weight:800;font-size:30px;letter-spacing:-0.03em;color:var(--blue-deep)}
274#clb-hrp .price .pl{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-3)}
275#clb-hrp .price-detail{font-size:14px;color:var(--text-2);line-height:1.5;flex:1;min-width:240px}
276#clb-hrp .fgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
277#clb-hrp .field{display:flex;flex-direction:column;gap:7px}
278#clb-hrp .field.full{grid-column:1/-1}
279#clb-hrp .field label{font-weight:700;font-size:12.5px;color:var(--text);letter-spacing:0.01em}
280#clb-hrp .field input,#clb-hrp .field select,#clb-hrp .field textarea{font-family:inherit;font-size:15px;color:var(--text);padding:13px 14px;border:1px solid var(--border);border-radius:8px;background:var(--white);transition:border-color 130ms ease,box-shadow 130ms ease}
281#clb-hrp .field input:focus,#clb-hrp .field select:focus,#clb-hrp .field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(12,113,195,0.12)}
282#clb-hrp .field textarea{resize:vertical;min-height:90px}
283#clb-hrp .field .ferr{display:none;color:#B42318;font-size:12px;font-weight:700}
284#clb-hrp .field.bad input,#clb-hrp .field.bad select{border-color:#B42318}
285#clb-hrp .field.bad .ferr{display:block}
286#clb-hrp .fset{grid-column:1/-1;border:0;margin-top:2px}
287#clb-hrp .fset legend{font-weight:700;font-size:12.5px;color:var(--text);margin-bottom:10px;line-height:1.45}
288#clb-hrp .fset.bad legend{color:#B42318}
289#clb-hrp .fopts{display:flex;flex-direction:column;gap:9px}
290#clb-hrp .fopt{display:flex;align-items:flex-start;gap:11px;padding:13px 15px;border:1px solid var(--border);border-radius:9px;cursor:pointer;font-size:14.5px;line-height:1.45;transition:border-color 130ms ease,background 130ms ease}
291#clb-hrp .fopt:hover{border-color:var(--blue);background:var(--off)}
292#clb-hrp .fopt input{margin-top:2px;accent-color:var(--blue);flex-shrink:0}
293#clb-hrp .form-actions{grid-column:1/-1;display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:6px}
294#clb-hrp .fnote{font-size:13px;color:var(--text-3);max-width:46ch}
295#clb-hrp .form-success{display:none;flex-direction:column;align-items:center;text-align:center;gap:14px;padding:32px 10px}
296#clb-hrp .form-success.show{display:flex}
297#clb-hrp .form-success i{font-size:52px;color:var(--blue)}
298#clb-hrp .form-success .rt{font-weight:800;font-size:26px;letter-spacing:-0.02em}
299#clb-hrp .form-success p{font-size:15px;color:var(--text-2);max-width:48ch;line-height:1.6}
300
301/* ===== 14 FAQ ===== */
302#clb-hrp .faq .head{max-width:54ch;margin-bottom:36px}
303#clb-hrp .faq .head .h2{margin-top:12px}
304#clb-hrp .faqlist{max-width:840px}
305#clb-hrp .faqitem{border-top:1px solid var(--border)}
306#clb-hrp .faqitem:last-child{border-bottom:1px solid var(--border)}
307#clb-hrp .faqq{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;background:none;border:0;padding:24px 0;font-family:inherit;font-weight:700;font-size:clamp(16px,1.9vw,18px);letter-spacing:-0.01em;color:var(--text);text-align:left;cursor:pointer}
308#clb-hrp .faqq i{font-size:22px;color:var(--blue);flex-shrink:0;transition:transform 200ms ease-out}
309#clb-hrp .faqitem.open .faqq i{transform:rotate(180deg)}
310#clb-hrp .faqa{overflow:hidden;height:0;transition:height 240ms ease-out}
311#clb-hrp .faqa .inner{padding:0 0 24px;font-size:16px;line-height:1.7;color:var(--text-2);max-width:68ch}
312
313/* footer */
314#clb-hrp .ftr{padding:48px 0;border-top:1px solid var(--border);background:var(--white)}
315#clb-hrp .ftr .wrap{display:flex;align-items:flex-start;justify-content:space-between;gap:28px;flex-wrap:wrap}
316#clb-hrp .ftr .logo{height:34px;width:auto;margin-bottom:14px}
317#clb-hrp .ftr .meta{font-size:13px;color:var(--text-3);line-height:1.7}
318#clb-hrp .ftr .fcontact{font-size:14px;line-height:1.8}
319#clb-hrp .ftr .fcontact a{color:var(--text);text-decoration:none;font-weight:700}
320#clb-hrp .ftr .fcontact a:hover{color:var(--blue)}
321#clb-hrp .ftr .fcontact .lbl{display:block;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:0.14em;color:var(--text-3);margin-bottom:6px}
322#clb-hrp .ftr .fsocials{display:flex;gap:16px;margin-top:10px}
323#clb-hrp .ftr .fsocials a{color:var(--text-2);font-size:20px;text-decoration:none}
324#clb-hrp .ftr .fsocials a:hover{color:var(--blue)}
325
326/* responsive */
327@media (max-width:860px){
328  #clb-hrp .split,#clb-hrp .how-split,#clb-hrp .guide-split{grid-template-columns:1fr}
329  #clb-hrp .split .media{min-height:300px;order:-1}
330  #clb-hrp .how-split .media{min-height:300px}
331  #clb-hrp .guide-split .media{min-height:300px;order:-1}
332  #clb-hrp .options{grid-template-columns:1fr}
333  #clb-hrp .qgrid{grid-template-columns:1fr}
334  #clb-hrp .trust .grid{grid-template-columns:1fr}
335  #clb-hrp .stats{grid-template-columns:1fr}
336  #clb-hrp .strip{grid-template-columns:1fr}
337  #clb-hrp .tgrid{grid-template-columns:1fr}
338  #clb-hrp .tcell{border-left:0;border-top:1px solid var(--border);padding-left:0;padding-right:0}
339  #clb-hrp .tcell:first-child{border-top:0}
340  #clb-hrp .urgency .foot{width:100%}
341}
342@media (max-width:640px){
343  #clb-hrp .fgrid{grid-template-columns:1fr}
344    #clb-hrp .hero .actions .btn{flex:1;justify-content:center}
345}
345
346@media (prefers-reduced-motion:reduce){
347  #clb-hrp *,#clb-hrp *::before,#clb-hrp *::after{transition-duration:0.01ms !important;animation-duration:0.01ms !important}
348  #clb-hrp [data-reveal]{opacity:1;transform:none}
349}
350</style>
351</head>
352<body>
353<template id="__bundler_thumbnail" data-bg-color="#021E3A">
354  <svg viewBox="0 0 1200 800" xmlns="http://www.w3.org/2000/svg">
355    <rect width="1200" height="800" fill="#021E3A"/>
356    <path d="M350 432 L600 300 L850 432 Z" fill="none" stroke="#7FBDEC" stroke-width="18" stroke-linejoin="round"/>
357    <path d="M392 432 L600 322 L808 432 Z" fill="#0C71C3" opacity="0.28"/>
358    <line x1="392" y1="432" x2="392" y2="548" stroke="#7FBDEC" stroke-width="14" stroke-linecap="round"/>
359    <line x1="808" y1="432" x2="808" y2="548" stroke="#7FBDEC" stroke-width="14" stroke-linecap="round"/>
360    <path d="M250 566 q60 -28 120 0 t120 0 t120 0 t120 0 t120 0 t120 0" fill="none" stroke="#0C71C3" stroke-width="13" stroke-linecap="round" opacity="0.85"/>
361    <path d="M250 618 q60 -28 120 0 t120 0 t120 0 t120 0 t120 0 t120 0" fill="none" stroke="#0A5FA3" stroke-width="11" stroke-linecap="round" opacity="0.6"/>
362  </svg>
363</template>
364<div id="clb-hrp">
365  <!-- SCROLL-IN STICKY BAR (hidden until scrolled; logo left, reserve right) -->
366  <div class="stickybar" id="clbSticky">
367    <div class="wrap">
368      <a class="sb-logo" href="https://www.coastlineboatliftcovers.com/" aria-label="Coastline Boat Lift Covers home">
369        <img src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2025/05/Coastline-Boat-Lift-Covers-in-Florida.png" alt="Coastline Boat Lift Covers">
370      </a>
371      <a class="btn btn-primary sb-cta" href="#form">Reserve your spot<i class="ti ti-arrow-right"></i></a>
372    </div>
373  </div>
374  <!-- 1 HERO -->
375  <section class="hero" style="background-image:url('https://www.coastlineboatliftcovers.com/wp-content/uploads/2025/06/Hurricane-Removal-Coastline-Boat-Lift-Covers-in-Fort-Myers.jpg')">
376    <video autoplay muted loop playsinline poster="https://www.coastlineboatliftcovers.com/wp-content/uploads/2025/06/Hurricane-Removal-Coastline-Boat-Lift-Covers-in-Fort-Myers.jpg">
377      <source src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2025/06/Coastline-Reversed-1.mp4" type="video/mp4">
378      <source src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2025/06/Coastline-Boatlift-Covers-Florida-1.mov">
379    </video>
380    <div class="scrim"></div>
381    <div class="hero-topbar">
382      <a class="hero-logo" href="https://www.coastlineboatliftcovers.com/" aria-label="Coastline Boat Lift Covers home">
383        <img src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2025/05/Coastline-Boat-Lift-Covers-in-Florida.png" alt="Coastline Boat Lift Covers">
384      </a>
385      <a class="hero-phone" href="tel:2399943047"><i class="ti ti-phone"></i><span>(239) 994-3047</span></a>
386    </div>
387    <div class="wrap">
388      <div class="hero-inner">
389        <div class="kicker">Don't wait for a named storm</div>
390        <h1 class="h1">Hurricane Removal Program</h1>
391        <p class="lede">Professional boat lift canopy removal and reinstallation for Southwest Florida owners. Secure your spot before demand spikes, spots fill, and prices go up.</p>
392        <div class="actions">
393          <a class="btn btn-primary" href="#program">See program options<i class="ti ti-arrow-right"></i></a>
394          <a class="btn btn-ghost" href="#guide">Get the free hurricane guide</a>
395        </div>
396      </div>
397    </div>
398  </section>
399
400  <!-- TRUST STRIP -->
401  <section class="trust bg-white">
402    <div class="grid">
403      <div class="cell" data-reveal><i class="ti ti-shield-check"></i><div><div class="t">Protect your coverage</div><div class="d">Follow the plan your insurer expects</div></div></div>
404      <div class="cell" data-reveal><i class="ti ti-wind"></i><div><div class="t">Reduce storm damage</div><div class="d">Remove windage before the storm arrives</div></div></div>
405      <div class="cell" data-reveal><i class="ti ti-calendar-check"></i><div><div class="t">Beat the rush</div><div class="d">Early enrollment locks your spot and rate</div></div></div>
406    </div>
407  </section>
408
409  <!-- 2 CLAIM DENIED + INSURER QUOTES -->
410  <section class="sec bg-ink claim">
411    <div class="wrap">
412      <div class="claim-head" data-reveal>
413        <div class="ckicker">Coverage protection</div>
414        <h2 class="claim-h2">No hurricane plan?<br>Your claim can be denied.</h2>
415        <p class="claim-lead">Insurers studied post-storm data and reached one conclusion: how an owner prepares determines how much damage a boat sustains. So they began requiring written hurricane plans — and tying coverage to whether you followed one. <strong>Skip a step, and the claim can be denied — no matter how severe the storm was.</strong> Here's how the industry puts it.</p>
416      </div>
417      <div class="qgrid">
418        <div class="qbox" data-reveal>
419          <div class="qmark" aria-hidden="true">"</div>
420          <blockquote>Damage directly resulting from a failure to follow a hurricane plan will almost always result in denial of coverage.</blockquote>
421          <div class="src">Marlin Magazine</div>
422        </div>
423        <div class="qbox" data-reveal>
424          <div class="qmark" aria-hidden="true">"</div>
425          <blockquote>The difference between a covered and a denied hurricane claim often comes down to whether you followed your policy's requirements.</blockquote>
426          <div class="src">Casey Insurance</div>
427        </div>
428        <div class="qbox" data-reveal>
429          <div class="qmark" aria-hidden="true">"</div>
430          <blockquote>This is usually the most important thing boat insurance companies look at when reviewing your hurricane plan.</blockquote>
431          <div class="src">Hanham Insurance Agency</div>
432        </div>
433      </div>
434    </div>
435  </section>
436
437  <!-- 3 BIG STATEMENT -->
438  <section class="sec statement">
439    <div class="wrap">
440      <div class="si" data-reveal>
441        <div class="kicker">The step that matters</div>
442        <h2 class="statement-h">Canopy removal is part of that plan.</h2>
443        <p class="statement-body">Reducing windage — taking down canvas, covers, and canopies before a storm arrives — is one of the documented preparation steps insurers and storm-prep experts expect. It's the step Coastline handles for you, start to finish.</p>
444        <div class="statement-cta">
445          <a class="btn btn-primary" href="#program">See program options<i class="ti ti-arrow-right"></i></a>
446          <a class="btn btn-line" href="#how">How it works</a>
447        </div>
448      </div>
449    </div>
450  </section>
451
452  <!-- 4 PROGRAM OPTIONS -->
453  <section class="sec bg-off" id="program">
454    <div class="wrap">
455      <div class="head" data-reveal style="max-width:58ch">
456        <div class="kicker">The program</div>
457        <h2 class="h2" style="margin:12px 0 14px">Two ways to stay covered</h2>
458        <p class="body">Both options include professional removal and reinstallation after the storm passes. You do not need to be home. We invoice after the work is complete.</p>
459      </div>
460      <div class="options">
461        <div class="opt feat" data-reveal>
462          <span class="tag">Most chosen</span>
463          <div class="name">Annual Program</div>
464          <div class="desc">Enroll once and never think about it again. We track the season and reach out when it's time — no calls, no scheduling stress.</div>
465          <ul>
466            <li><i class="ti ti-check"></i>Priority scheduling ahead of one-time requests</li>
467            <li><i class="ti ti-check"></i>We reach out automatically when it's time</li>
468            <li><i class="ti ti-check"></i>Removal and reinstallation included</li>
469            <li><i class="ti ti-check"></i>Locked seasonal rate, no rush pricing — cancel anytime</li>
470          </ul>
471          <div class="foot"><a class="btn btn-primary" href="#form">Enroll in the annual program<i class="ti ti-arrow-right"></i></a></div>
472        </div>
473        <div class="opt" data-reveal>
474          <span class="tag">As needed</span>
475          <div class="name">One-Time Service</div>
476          <div class="desc">Request removal and reinstallation for a single season, scheduled around crew availability before the rush.</div>
477          <ul>
478            <li><i class="ti ti-check"></i>Single removal and reinstallation</li>
479            <li><i class="ti ti-check"></i>Scheduled as the season allows</li>
480            <li><i class="ti ti-check"></i>Removal and reinstall for a single season</li>
481            <li><i class="ti ti-check"></i>Invoiced after the work is done</li>
482          </ul>
483          <div class="foot"><a class="btn btn-light" style="border:1px solid var(--border)" href="#form">Request one-time service<i class="ti ti-arrow-right"></i></a></div>
484        </div>
485      </div>
486    </div>
487  </section>
488
489  <!-- 5 URGENCY -->
490  <section class="sec bg-deep urgency">
491    <div class="wrap">
492      <i class="ti ti-clock-exclamation lead"></i>
493      <div class="txt" data-reveal>
494        <h2 class="h2">Once a hurricane's in the forecast, removal requests spike and spots fill fast</h2>
495        <p class="body">If a storm is announced before your scheduled removal, we'll bump you to the front of the line — but we can't promise we'll reach everyone. Pricing also goes up once a named storm is headed our way. Booking early locks your spot and your rate.</p>
496      </div>
497      <div class="foot" data-reveal><a class="btn btn-light" href="#program">Lock your spot now<i class="ti ti-arrow-right"></i></a></div>
498    </div>
499  </section>
500
501  <!-- 6 PHOTO STRIP -->
502  <section class="strip" aria-hidden="true">
503    <figure><img loading="lazy" src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2026/01/Copy-of-4M7A9006.jpg" alt=""></figure>
504    <figure><img loading="lazy" src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2026/01/Copy-of-4M7A8999.jpg" alt=""></figure>
505    <figure><img loading="lazy" src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2026/01/IMG_7711.jpg" alt=""></figure>
506  </section>
507
508  <!-- 7 FORECAST -->
509  <section class="sec bg-off forecast">
510    <div class="wrap">
511      <div class="head" data-reveal>
512        <div class="kicker">2026 season outlook</div>
513        <h2 class="h2">Below-normal forecast. It only takes one.</h2>
514        <p class="body">NOAA's 2026 Atlantic hurricane season outlook predicts a below-normal season. But a quiet forecast is not a safe forecast. One storm making landfall in Southwest Florida is all it takes.</p>
515      </div>
516      <div class="stats">
517        <div class="stat" data-reveal><div class="n">8–14</div><div class="l">Named storms forecast for the 2026 Atlantic season</div></div>
518        <div class="stat" data-reveal><div class="n">3–6</div><div class="l">Expected to reach hurricane strength</div></div>
519        <div class="stat" data-reveal><div class="n">1–3</div><div class="l">Forecast to become major hurricanes (Category 3 or higher)</div></div>
520      </div>
521      <p class="srcline" data-reveal>NOAA 2026 Atlantic Hurricane Season Outlook (May 2026) · Colorado State University Tropical Meteorology Project (April 2026)</p>
522      <div class="noaa" data-reveal>
523        <i class="ti ti-alert-triangle"></i>
524        <div>
525          <div class="q">"It only takes one." A below-average season still means a damaging storm can reach the SW Florida coast.</div>
526          <div class="s">NOAA, 2026 Atlantic Hurricane Season Outlook</div>
527        </div>
528      </div>
529    </div>
530  </section>
531
532  <!-- 8 NHC TRACKER -->
533  <section class="sec bg-ink tracker">
534    <div class="wrap">
535      <div class="head" data-reveal>
536        <div class="kicker">Live tracking</div>
537        <h2 class="h2">Watch the tropics in real time</h2>
538        <p class="body">A live wind and storm map of the Gulf and Atlantic — pan, zoom, and watch systems develop. When something forms out here, we're already planning routes for our annual members.</p>
539      </div>
540      <div class="frame" data-reveal>
541        <div class="track-wrap">
542          <iframe id="clbNHC" title="Live wind and tropical storm tracker — Gulf and Atlantic" loading="lazy"
543            src="https://embed.windy.com/embed2.html?lat=25.5&lon=-78&detailLat=26.64&detailLon=-81.87&width=100%25&height=520&zoom=4&level=surface&overlay=wind&product=ecmwf&menu=&message=true&marker=true&calendar=now&pressure=&type=map&location=coordinates&detail=&metricWind=mph&metricTemp=%C2%B0F&radarRange=-1"></iframe>
544          <div class="track-fallback" id="clbNHCfb">
545            <i class="ti ti-radar-2"></i>
546            <div class="tf-t">Live tracker</div>
547            <p>The live map can't load right now. View the current Atlantic tropical outlook directly at the National Hurricane Center.</p>
548            <a class="btn btn-light" href="https://www.nhc.noaa.gov/" target="_blank" rel="noopener">Open the NHC outlook<i class="ti ti-external-link"></i></a>
549          </div>
550        </div>
551        <div class="track-bar">
552          <span class="tb-live"><span class="dot" aria-hidden="true"></span>Live · Gulf &amp; Atlantic<span class="tb-meta">&nbsp;— wind, pressure &amp; active systems</span></span>
553          <a class="tb-link" href="https://www.nhc.noaa.gov/" target="_blank" rel="noopener">Official NHC outlook<i class="ti ti-external-link"></i></a>
554        </div>
555      </div>
556      <div class="attr">Live map: Windy.com · Authoritative outlook: National Hurricane Center, NOAA</div>
557    </div>
558  </section>
559
560  <!-- 9 HOW IT WORKS -->
561  <section class="bg-white">
562    <div class="split how-split">
563      <div class="steps how" data-reveal>
564        <div class="kicker">How it works</div>
565        <h2 class="h2">Four steps, none of them yours</h2>
566        <div class="stepline"><div class="stepnum">1</div><div><div class="st">You enroll or request</div><div class="sb">Pick the annual program or a one-time removal. A few details about your lift and we're set.</div></div></div>
567        <div class="stepline"><div class="stepnum">2</div><div><div class="st">We follow up to schedule</div><div class="sb">A member of our team reaches out to schedule your removal and discuss when you'd like the canopy reinstalled.</div></div></div>
568        <div class="stepline"><div class="stepnum">3</div><div><div class="st">We remove the canopy</div><div class="sb">Our crew takes the canopy down. You don't need to be home for any of it.</div></div></div>
569        <div class="stepline"><div class="stepnum">4</div><div><div class="st">We reinstall and invoice</div><div class="sb">Once it's safe, we reinstall the canopy and invoice you after the work is complete.</div></div></div>
570      </div>
571      <div class="media" data-reveal>
572        <img loading="lazy" src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2026/05/Coastline-protective-gear.jpg" alt="Coastline crew in protective gear removing a boat lift canopy in Southwest Florida">
573      </div>
574    </div>
575  </section>
576
577  <!-- 10 QUIZ -->
578  <section class="sec bg-off">
579    <div class="wrap">
580      <div class="quiz-head" data-reveal>
581        <div class="kicker">Quick check</div>
582        <h2 class="h2">Is your boat ready for the season?</h2>
583        <p class="body">Three questions. A straight read on where you stand before the next system forms.</p>
584      </div>
585      <div class="quiz" data-reveal id="clb-quiz">
586        <div class="bar"><div class="fill" id="quizFill"></div></div>
587        <div class="stage" id="quizStage"></div>
588      </div>
589    </div>
590  </section>
591
592  <!-- 11 FREE GUIDE -->
593  <section class="bg-white" id="guide">
594    <div class="split guide-split">
595      <div class="media" data-reveal>
596        <img loading="lazy" src="https://www.coastlineboatliftcovers.com/wp-content/uploads/2026/01/Copy-of-4M7A9011.jpg" alt="Detail of a finished Coastline boat lift canopy">
597      </div>
598      <div class="copy guide" data-reveal>
599        <div class="kicker">Free guide</div>
600        <h2 class="h2">The Boat Hurricane Plan Guide</h2>
601        <p class="body" style="margin-bottom:6px">A plain-language walkthrough of what a responsible hurricane plan includes — the kind insurers expect to see on file.</p>
602        <ul>
603          <li><i class="ti ti-file-description"></i>What belongs in a documented plan</li>
604          <li><i class="ti ti-file-description"></i>Where canopy removal fits in the steps</li>
605          <li><i class="ti ti-file-description"></i>Questions to ask your marine insurer</li>
606          <li><i class="ti ti-file-description"></i>A fill-in checklist you can keep on hand</li>
607        </ul>
608        <p class="body" style="font-size:14px;color:var(--text-3);margin-bottom:14px">Enter your email and we'll send the guide straight over — free, no obligation.</p>
609        <div class="guide-form">
610          
610<script src="https://js.hsforms.net/forms/embed/23475116.js" defer></script>
610
611          <div class="hs-form-frame" data-region="na1" data-form-id="26377c88-6cf0-458b-b1c2-960a8c202baa" data-portal-id="23475116"></div>
612        </div>
613      </div>
614    </div>
615  </section>
616
617  <!-- 12 TESTIMONIALS -->
618  <section class="sec bg-white tst">
619    <div class="wrap">
620      <div class="head" data-reveal>
621        <div class="kicker">From the docks</div>
622        <h2 class="h2">What local owners say</h2>
623      </div>
624      <div class="tgrid">
625        <div class="tcell" data-reveal>
626          <blockquote>"The purchasing process was very detailed and professional. The install was quick and thorough — they did a great job."</blockquote>
627          <div class="who">Ken · Google review</div>
628        </div>
629        <div class="tcell" data-reveal>
630          <blockquote>"Nick and his team did a fantastic job from start to finish with our boat lift cover. It looks fantastic. I would highly recommend this company."</blockquote>
631          <div class="who">John · Google review</div>
632        </div>
633        <div class="tcell" data-reveal>
634          <blockquote>"We highly recommend Coastline Boat Lift Covers. Professional, courteous staff, on time."</blockquote>
635          <div class="who">Peggy · Google review</div>
636        </div>
637      </div>
638    </div>
639  </section>
640
641  <!-- 13 FORM -->
642  <section class="sec bg-off" id="form">
643    <div class="wrap">
644      <div class="form-card" data-reveal>
645        <div class="form-head" id="clbFormHead">
646          <div class="kicker">Get started</div>
647          <h2 class="h2">Reserve your removal for the season</h2>
648          <p class="body">Tell us about your lift and we'll follow up with scheduling details once we receive your request. You don't need to be home — we invoice after each visit.</p>
649          <div class="price-row">
650            <div class="price"><span class="pn">$600</span><span class="pl">for the program</span></div>
651            <div class="price-detail">$300 for removal · $300 to reinstall after the storm passes. Invoiced after each visit. Bungee replacement, if needed, is $100 with re-install.</div>
652          </div>
653        </div>
654        <form id="clbForm" novalidate>
655          <div class="fgrid">
656            <div class="field full"><label for="cf-name">First &amp; last name *</label><input id="cf-name" name="name" type="text" autocomplete="name"><span class="ferr">Please enter your name.</span></div>
657            <div class="field"><label for="cf-email">Email *</label><input id="cf-email" name="email" type="email" autocomplete="email"><span class="ferr">Please enter a valid email.</span></div>
658            <div class="field"><label for="cf-phone">Phone number *</label><input id="cf-phone" name="phone" type="tel" autocomplete="tel"><span class="ferr">Please enter your phone.</span></div>
659            <div class="field full"><label for="cf-address">Service address *</label><input id="cf-address" name="address" type="text" placeholder="Street, community, or dock location"><span class="ferr">Please enter your service address.</span></div>
660            <div class="field full"><label for="cf-window">Scheduling window *</label>
661              <select id="cf-window" name="window"><option value="">Select…</option><option value="June Removal --&gt; October/November Re-Install">June Removal → October/November Re-Install</option><option value="July Removal --&gt; October/November Re-Install">July Removal → October/November Re-Install</option><option value="August Removal --&gt; October/November Re-Install">August Removal → October/November Re-Install</option><option value="September Removal --&gt; October/November Re-Install">September Removal → October/November Re-Install</option></select>
662              <span class="ferr">Please choose a scheduling window.</span>
663            </div>
664            <fieldset class="fset" id="fs-bungee">
665              <legend>Have your bungees been replaced in the past 18 months? If no, we recommend replacement to protect your canopy — $100 with re-install. *</legend>
666              <div class="fopts">
667                <label class="fopt"><input type="radio" name="bungee" value="Yes"><span>Yes</span></label>
668                <label class="fopt"><input type="radio" name="bungee" value="No"><span>No — please replace them ($100 with re-install).</span></label>
669                <label class="fopt"><input type="radio" name="bungee" value="Not Interested"><span>Not interested</span></label>
670              </div>
671              <span class="ferr" style="margin-top:8px">Please pick one.</span>
672            </fieldset>
673            <fieldset class="fset" id="fs-auto">
674              <legend>Would you like to opt into our hurricane removal program on an annual basis? If yes, we'll make sure your canopy gets taken down and put back up every year. *</legend>
675              <div class="fopts">
676                <label class="fopt"><input type="radio" name="auto" value="Yes"><span>Yes</span></label>
677                <label class="fopt"><input type="radio" name="auto" value="No"><span>No</span></label>
678              </div>
679              <span class="ferr" style="margin-top:8px">Please pick one.</span>
680            </fieldset>
681            <div class="form-actions">
682              <button class="btn btn-primary" type="submit">Reserve my spot<i class="ti ti-arrow-right"></i></button>
683              <p class="fnote" id="clbFormNote">No charge today. Our team follows up to confirm scheduling.</p>
684            </div>
685          </div>
686        </form>
687        <div class="form-success" id="clbSuccess">
688          <i class="ti ti-circle-check"></i>
689          <div class="rt">You're on the list.</div>
690          <p>Thanks — we've got your request. A member of our Southwest Florida team will reach out to confirm scheduling and reinstall timing. Nothing's due today.</p>
691        </div>
692      </div>
693    </div>
694    <iframe name="clb-gform-sink" id="clb-gform-sink" style="display:none" title="form sink" aria-hidden="true"></iframe>
695  </section>
696
697  <!-- 14 FAQ -->
698  <section class="sec bg-white faq">
699    <div class="wrap">
700      <div class="head" data-reveal>
701        <div class="kicker">Good to know</div>
702        <h2 class="h2">Frequently asked questions about hurricane canopy removal</h2>
703      </div>
704      <div class="faqlist" id="clb-faq">
705        <div class="faqitem">
706          <button class="faqq"><span>When should I book hurricane boat lift cover removal?</span><i class="ti ti-chevron-down"></i></button>
707          <div class="faqa"><div class="inner">Book before a named storm whenever possible. Removal requests spike once a hurricane is in the forecast, and reserving early helps secure your spot before availability becomes limited.</div></div>
708        </div>
709        <div class="faqitem">
710          <button class="faqq"><span>Does early booking help avoid emergency surcharges?</span><i class="ti ti-chevron-down"></i></button>
711          <div class="faqa"><div class="inner">Yes. Last-minute removals may incur additional fees, while booking early locks in standard pricing before storm-related demand increases.</div></div>
712        </div>
713        <div class="faqitem">
714          <button class="faqq"><span>Will Coastline reinstall my canopy after removal?</span><i class="ti ti-chevron-down"></i></button>
715          <div class="faqa"><div class="inner">Yes. After you sign up, a Coastline team member will contact you to schedule removal and discuss when you would like your canopy reinstalled.</div></div>
716        </div>
717        <div class="faqitem">
718          <button class="faqq"><span>What happens if I'm not home when the work is completed?</span><i class="ti ti-chevron-down"></i></button>
719          <div class="faqa"><div class="inner">No worries. Coastline can complete the job and invoice you after the work is done — most removals happen while owners are out of town.</div></div>
720        </div>
721        <div class="faqitem">
722          <button class="faqq"><span>Does canopy removal affect my insurance claim?</span><i class="ti ti-chevron-down"></i></button>
723          <div class="faqa"><div class="inner">Canopy removal is part of a responsible hurricane plan — the kind insurers expect to see followed. For the specific requirements on your policy, check with your marine insurance agent.</div></div>
724        </div>
725      </div>
726    </div>
727  </section>
728
729  <!-- FOOTER -->
730  <footer class="ftr">
731    <div class="wrap">
732      <div>
733        <div class="meta">Custom boat lift canopies, built and serviced in Southwest Florida since 2010.<br>Serving Charlotte, Lee, and Collier Counties.</div>
734        <div class="fsocials">
735          <a href="https://www.facebook.com/CoastLineBoatLiftCovers" target="_blank" rel="noopener" aria-label="Facebook"><i class="ti ti-brand-facebook"></i></a>
736          <a href="https://www.youtube.com/@coastlineboatliftcovers" target="_blank" rel="noopener" aria-label="YouTube"><i class="ti ti-brand-youtube"></i></a>
737          <a href="https://maps.app.goo.gl/hk2o1Jbv8DvXDLar9" target="_blank" rel="noopener" aria-label="Google"><i class="ti ti-brand-google"></i></a>
738          <a href="https://www.yelp.com/biz/coastline-boatlift-covers-fort-myers" target="_blank" rel="noopener" aria-label="Yelp"><i class="ti ti-brand-yelp"></i></a>
739        </div>
740      </div>
741      <div class="fcontact">
742        <span class="lbl">Call us</span>
743        <a href="tel:2399943047">(239) 994-3047</a>
744        <div style="margin-top:18px"><span class="lbl">Visit</span>
745          <a href="https://maps.app.goo.gl/hk2o1Jbv8DvXDLar9" target="_blank" rel="noopener">6201 Arc Way<br>Fort Myers, FL 33966</a>
746        </div>
747      </div>
748    </div>
749  </footer>
750</div>
751<script>
752(function(){
753  var root = document.getElementById('clb-hrp');
754  if(!root) return;
755  var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
756
757  /* ---- Scroll reveal (scroll-position based; IO can stall in embedded iframes) ---- */
758  var revealEls = Array.prototype.slice.call(root.querySelectorAll('[data-reveal]'));
759  if(reduce){
760    revealEls.forEach(function(el){ el.classList.add('in','done'); });
761  } else {
762    var check = function(){
763      var trig = window.innerHeight * 0.92, newly = [];
764      revealEls.forEach(function(el){
765        if(el.classList.contains('in')) return;
766        if(el.getBoundingClientRect().top < trig) newly.push(el);
767      });
768      if(!newly.length) return;
769      var byParent = new Map();
770      newly.forEach(function(el){ var p=el.parentNode; if(!byParent.has(p)) byParent.set(p,[]); byParent.get(p).push(el); });
771      byParent.forEach(function(els){
772        els.forEach(function(el,i){
773          setTimeout(function(){ el.classList.add('in'); setTimeout(function(){ el.classList.add('done'); }, 700); }, i*80);
774        });
775      });
776    };
777    var ticking=false, onScroll=function(){ if(ticking) return; ticking=true; requestAnimationFrame(function(){ check(); ticking=false; }); };
778    window.addEventListener('scroll', onScroll, {passive:true});
779    window.addEventListener('resize', onScroll, {passive:true});
780    window.addEventListener('load', check);
781    check(); setTimeout(check, 300);
782  }
783
784  /* ---- Sticky bar: slide in after the top bar has scrolled out of view ---- */
785  var sticky = document.getElementById('clbSticky');
786  if(sticky){
787    var syncSticky = function(){ sticky.classList.toggle('show', window.scrollY > 140); };
788    window.addEventListener('scroll', syncSticky, {passive:true});
789    syncSticky();
790  }
791
792  /* ---- Live tracker fallback (iframe) ---- */
793  var nhc = document.getElementById('clbNHC'), nhcfb = document.getElementById('clbNHCfb');
794  if(nhc && nhcfb){
795    nhcfb.style.display = 'none';           // assume the embed works; only show on failure
796    var nhcLoaded = false;
797    nhc.addEventListener('load', function(){ nhcLoaded = true; nhcfb.style.display = 'none'; });
798    nhc.addEventListener('error', function(){ nhcfb.style.display = 'flex'; });
799    setTimeout(function(){ if(!nhcLoaded){ nhcfb.style.display = 'flex'; } }, 6000);
800  }
801
802  /* ---- FAQ accordion ---- */
803  var faq = document.getElementById('clb-faq');
804  if(faq){
805    faq.querySelectorAll('.faqitem').forEach(function(item){
806      var btn = item.querySelector('.faqq'), ans = item.querySelector('.faqa');
807      btn.addEventListener('click', function(){
808        var isOpen = item.classList.contains('open');
809        faq.querySelectorAll('.faqitem.open').forEach(function(o){ o.classList.remove('open'); o.querySelector('.faqa').style.height='0px'; });
810        if(!isOpen){ item.classList.add('open'); ans.style.height = ans.firstElementChild.offsetHeight + 'px'; }
811      });
812    });
813  }
814
815  /* ---- Quiz ---- */
816  var quizData = [
817    { q:'Do you have a hurricane plan documented for your boat?',
818      a:[ {t:'No, nothing written down', s:2}, {t:'Sort of, but not documented', s:1}, {t:'Yes, on file with my insurer', s:0} ] },
819    { q:'When a storm is named, who removes your lift canopy?',
820      a:[ {t:'No plan for that yet', s:2}, {t:'I do it myself, if I am in town', s:1}, {t:'A service handles it for me', s:0} ] },
821    { q:'How confident are you a claim would be paid after a storm?',
822      a:[ {t:'Not confident at all', s:2}, {t:'Somewhat, I think so', s:1}, {t:'Confident, I follow my policy', s:0} ] }
823  ];
824  var results = {
825    high:{ cls:'r-high', icon:'ti-alert-circle', badge:'Exposed', t:'There are real gaps to close before the next system.',
826           b:'Without a documented plan and a removal arrangement, a storm could put both your canopy and a future claim at risk. The annual program covers both in one step.' },
827    mid:{ cls:'r-mid', icon:'ti-alert-triangle', badge:'Partly ready', t:'You are thinking ahead, but a few pieces are loose.',
828          b:'You have some habits in place, yet they depend on you being available. Letting us handle removal removes the weak links.' },
829    low:{ cls:'r-low', icon:'ti-shield-check', badge:'Well prepared', t:'You are in good shape for the season.',
830          b:'You are doing the right things. If you would rather not handle removal yourself every time, the annual program keeps the same outcome without the effort.' }
831  };
832  var stage = document.getElementById('quizStage'), fill = document.getElementById('quizFill'), step=0, score=0;
833  function renderQ(){
834    var item = quizData[step];
835    fill.style.width = (step / quizData.length * 100) + '%';
836    var h = '<div class="qnum">Question '+(step+1)+' of '+quizData.length+'</div><div class="qtext">'+item.q+'</div><div class="answers">';
837    item.a.forEach(function(a){ h += '<button class="ans" data-score="'+a.s+'">'+a.t+'<i class="ti ti-arrow-right"></i></button>'; });
838    h += '</div>';
839    stage.innerHTML = h;
840    stage.querySelectorAll('.ans').forEach(function(b){
841      b.addEventListener('click', function(){ score += parseInt(b.getAttribute('data-score'),10); step++; (step<quizData.length)?renderQ():renderResult(); });
842    });
843  }
844  function renderResult(){
845    fill.style.width = '100%';
846    var r = score>=4 ? results.high : (score>=2 ? results.mid : results.low);
847    stage.innerHTML = '<div class="result '+r.cls+'"><span class="badge"><i class="ti '+r.icon+'"></i>'+r.badge+'</span>'+
848      '<div class="rt">'+r.t+'</div><div class="rb">'+r.b+'</div>'+
849      '<a class="btn btn-primary" href="#form">Reserve my spot<i class="ti ti-arrow-right"></i></a>'+
850      '<button class="restart" type="button">Start over</button></div>';
851    stage.querySelector('.restart').addEventListener('click', function(){ step=0; score=0; renderQ(); });
852  }
853  if(stage) renderQ();
854
855  /* ---- Reserve form: posts silently into the Coastline Canopy Hurricane Removal Request form ---- */
856  var GFORM = {
857    configured: true,
858    action: 'https://docs.google.com/forms/d/e/1FAIpQLSciJaChYwJqb2v2AH4CaqOkrnMQozq3nrvn7yA_Oisuy1oWqg/formResponse',
859    viewform: 'https://docs.google.com/forms/d/e/1FAIpQLSciJaChYwJqb2v2AH4CaqOkrnMQozq3nrvn7yA_Oisuy1oWqg/viewform',
860    entries: {
861      name:'entry.1963190921', email:'entry.573398266', phone:'entry.596950075',
862      address:'entry.1080847523', window:'entry.1853128253',
863      bungee:'entry.850179927', auto:'entry.1437107518'
864    }
865  };
866  var form = document.getElementById('clbForm');
867  if(form){
868    var note = document.getElementById('clbFormNote');
869    var clearBad = function(el){ var f = el.closest('.field, .fset'); if(f) f.classList.remove('bad'); };
870    form.querySelectorAll('input, select, textarea').forEach(function(el){
871      el.addEventListener('input', function(){ clearBad(el); });
872      el.addEventListener('change', function(){ clearBad(el); });
873    });
874    function val(n){ var el = form.elements[n]; if(!el) return ''; if(el.length && el[0] && el[0].type==='radio'){ var c=form.querySelector('[name="'+n+'"]:checked'); return c?c.value:''; } return (el.value||'').trim(); }
875    function validate(){
876      var ok = true;
877      var checks = [
878        ['#cf-name', val('name').length >= 2],
879        ['#cf-email', /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(val('email'))],
880        ['#cf-phone', val('phone').replace(/[^\d]/g,'').length >= 7],
881        ['#cf-address', val('address').length >= 3],
882        ['#cf-window', val('window') !== '']
883      ];
884      checks.forEach(function(c){ var f = form.querySelector(c[0]).closest('.field'); if(c[1]) f.classList.remove('bad'); else { f.classList.add('bad'); ok=false; } });
885      [['fs-bungee','bungee'],['fs-auto','auto']].forEach(function(p){
886        var fs = document.getElementById(p[0]); if(val(p[1])!==''){ fs.classList.remove('bad'); } else { fs.classList.add('bad'); ok=false; }
887      });
888      return ok;
889    }
890    function postToGoogle(){
891      var hidden = document.createElement('form');
892      hidden.action = GFORM.action; hidden.method = 'POST'; hidden.target = 'clb-gform-sink'; hidden.style.display = 'none';
893      Object.keys(GFORM.entries).forEach(function(k){
894        var i = document.createElement('input'); i.type='hidden'; i.name = GFORM.entries[k]; i.value = val(k); hidden.appendChild(i);
895      });
896      document.body.appendChild(hidden); hidden.submit(); setTimeout(function(){ hidden.remove(); }, 1200);
897    }
898    function showSuccess(){
899      var formSection = document.getElementById('form');
900      document.getElementById('clbFormHead').style.display = 'none';
901      form.style.display = 'none';
902      var success = document.getElementById('clbSuccess');
903      success.classList.add('show');
904      /* Direct page (served as index.html, no iframe): scroll the window to the top of the
905         form section so the confirmation is front and centre. Done after layout settles. */
906      requestAnimationFrame(function(){
907        setTimeout(function(){
908          var y = formSection.getBoundingClientRect().top + window.pageYOffset - 80;
909          try{ window.scrollTo({ top:y, behavior:'smooth' }); }catch(e){ window.scrollTo(0, y); }
910        }, 50);
911      });
912    }
913    form.addEventListener('submit', function(e){
914      e.preventDefault();
915      if(!validate()){
916        var first = form.querySelector('.field.bad input, .field.bad select, .fset.bad input');
917        if(first) first.focus();
918        return;
919      }
920      if(GFORM.configured){
921        postToGoogle();
922        showSuccess();
923      } else {
924        // Not yet wired to the live form — open it so the request still goes through.
925        window.open(GFORM.viewform, '_blank', 'noopener');
926        if(note){ note.textContent = "We've opened the reservation form in a new tab — finish there and you're all set."; note.style.color = 'var(--blue)'; }
927      }
928    });
929  }
930
931  /* ---- Auto-resize the parent iframe (same-origin: works with NO script in WordPress) ---- */
932  function postHeight(){
933    var h = document.documentElement.scrollHeight;
934    /* Same-origin direct resize: find our own <iframe> in the parent and set its height. */
935    try{
936      if(window.frameElement){ window.frameElement.style.height = h + 'px'; }
937    }catch(e){}
938    /* Fallback for cross-origin parents that DO have a listener. */
939    if(window.parent && window.parent !== window){
940      try{ window.parent.postMessage({ clbHeight: h }, '*'); }catch(e){}
941    }
942  }
943  window.addEventListener('load', postHeight);
944  window.addEventListener('resize', postHeight);
945})();
946</script>
946
947</body>
948</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.