← back to Fantasea Consulting
sections collapse by default (accordion + expand/collapse-all); add Social Media Audit (IG/TikTok/YouTube) with handle-inconsistency flag + suggestions
75a8f51f9502e86b24f991628a068882113cd338 · 2026-07-16 11:42:06 -0700 · steve@designerwallcoverings.com
Files touched
M build.mjsM public/index.htmlA videos-src/drone.webm
Diff
commit 75a8f51f9502e86b24f991628a068882113cd338
Author: steve@designerwallcoverings.com <steve@designerwallcoverings.com>
Date: Thu Jul 16 11:42:06 2026 -0700
sections collapse by default (accordion + expand/collapse-all); add Social Media Audit (IG/TikTok/YouTube) with handle-inconsistency flag + suggestions
---
build.mjs | 101 +++++++++++++++++++++++++++++++++++++++++++++++---
public/index.html | 101 +++++++++++++++++++++++++++++++++++++++++++++++---
videos-src/drone.webm | Bin 0 -> 20185333 bytes
3 files changed, 192 insertions(+), 10 deletions(-)
diff --git a/build.mjs b/build.mjs
index d6b05fb..150b2c5 100644
--- a/build.mjs
+++ b/build.mjs
@@ -282,7 +282,7 @@ const realVidTiles = REAL_VIDEOS.map(v=>`
const CATS = [
['summary','Executive Summary'],['reputation','Reputation & Yelp'],['competitors','Competitors'],
- ['advertising','Where to Advertise'],['timing','Timing & Cadence'],['audit','Website Audit'],
+ ['advertising','Where to Advertise'],['timing','Timing & Cadence'],['audit','Website Audit'],['social','Social Media Audit'],
['suggested','Suggested New Websites'],['partners','Unlikely Partners'],['videos','Their Videos + Brand Films'],['roadmap','90-Day Roadmap'],
];
const navLinks = CATS.map(c=>`<a href="#${c[0]}">${c[1]}</a>`).join('');
@@ -400,6 +400,25 @@ td.act{color:var(--ink);opacity:.9}
.heybox .copy p{color:var(--dim);font-size:15px}
.heybox .copy .spec{margin-top:20px;display:flex;flex-wrap:wrap;gap:10px}
.heybox .copy .spec span{font-size:10px;letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--line);padding:6px 12px;color:var(--gold)}
+.flagbox{display:flex;gap:22px;margin-top:40px;padding:30px 32px;border:1px solid var(--gold);background:rgba(200,161,90,.07)}
+.flagicon{font-size:30px;color:var(--gold);line-height:1}
+.flagbox h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:25px;color:var(--gold);margin-bottom:10px}
+.flagbox p{color:var(--ink);opacity:.92;font-size:16.5px;line-height:1.65}
+.tc{display:inline-block;margin-top:10px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);opacity:.7}
+/* accordion — every section starts collapsed */
+section.acc{padding-top:0;padding-bottom:0}
+.acchead{width:100%;text-align:left;background:none;border:0;cursor:pointer;display:flex;align-items:flex-start;gap:22px;padding:36px 0;color:var(--ink)}
+.acchead .htext{flex:1}
+.acchead .htext .eyebrow{margin-bottom:12px}
+.acchead .chev{font-family:'Cormorant Garamond',serif;font-size:36px;color:var(--gold);line-height:.6;transition:.3s;margin-top:8px}
+section.acc.open .acchead .chev{transform:rotate(45deg)}
+.acchead:hover .htext h2{color:var(--gold);transition:.25s}
+.accbody{display:none;padding-bottom:60px}
+section.acc.open .accbody{display:block;animation:accfade .45s ease}
+@keyframes accfade{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
+.accbar{display:flex;gap:12px;justify-content:flex-end;padding:14px clamp(24px,7vw,120px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
+.accbar button{background:none;border:1px solid var(--line);color:var(--gold);font-family:'Jost';font-size:11px;letter-spacing:.18em;text-transform:uppercase;padding:9px 18px;cursor:pointer;transition:.25s}
+.accbar button:hover{background:var(--gold);color:var(--bg)}
@media(max-width:640px){.heybox{grid-template-columns:1fr}}
.road{list-style:none;margin-top:44px}
.road li{padding:22px 0 22px 0;border-bottom:1px solid var(--line);display:flex;gap:26px}
@@ -491,22 +510,55 @@ ${DUO}
<p class="lead">Six ready-to-review redesign concepts below — each in a Rodeo Drive luxury-house palette, with the hero-video + hamburger pattern already built.</p>
</section>
+<section id="social">
+ <div class="eyebrow">06 · Social Media Audit</div>
+ <h2 class="disp">Great footage, fragmented brand, under-posting.</h2>
+ <p class="lead">FantaSea is a <b>visual</b> business — sunsets, weddings, aerials. Social should be its top-of-funnel engine. Today the accounts are inconsistent and posting below cadence. The single biggest fix is free: <b>one handle, everywhere.</b></p>
+
+ <div class="flagbox">
+ <div class="flagicon">⚠</div>
+ <div>
+ <h3 class="disp">Handle inconsistency is costing you discovery</h3>
+ <p>Instagram, Facebook & YouTube read <b>fantaseayachts</b> — but TikTok is <b>@fantaseayachtllc</b> and YouTube carries a <b>7902</b> suffix. The “LLC” handle is the legal-entity name, almost certainly grabbed because the clean one was taken or set up in a hurry. The cost: fans can’t guess it, you can’t be tagged consistently, and it reads as unofficial. <b>Action: unify to @fantaseayachts (or @fantaseayachtsmdr) across every platform</b> — the highest-ROI, zero-dollar brand fix on this list.</p>
+ </div>
+ </div>
+
+ <div class="cards2" style="margin-top:38px">
+ <div class="c"><h3>Instagram — @fantaseayachts</h3><p>The hub for a venue brand. <b>Fix:</b> Reels 4–5×/wk (sunset · weddings · BTS · proposals), Story Highlights per service (Weddings / Corporate / Dining), geotag Marina del Rey, a booking link-in-bio, and repost guest UGC. <span class="tc">Followers — confirm live</span></p></div>
+ <div class="c"><h3>TikTok — @fantaseayachtllc</h3><p class="flag">Off-brand handle (see flag). <b>Fix:</b> secure @fantaseayachts, cross-link from IG. Content that wins here: POV proposals, timelapses, “what $6k gets you,” trending audio. Lowest cost / highest viral upside. <span class="tc">Followers — confirm live</span></p></div>
+ <div class="c"><h3>YouTube — @fantaseayachts7902</h3><p>Strong film library (drone, weddings, NCIS) but a numbered handle. <b>Fix:</b> claim the clean handle, cut the long films into 15–30s Shorts, and use the drone reel as the new site hero.</p></div>
+ <div class="c"><h3>Facebook / X</h3><p>FB (/FantaSeaYachtsMDR) still matters for the wedding demographic + reviews — keep it current. X (@FantaSeaYachts) is low priority; auto-syndicate, don’t invest.</p></div>
+ </div>
+
+ <div style="margin-top:44px"></div>
+ <div class="eyebrow">Suggestions</div>
+ <h2 class="disp">One content engine, five platforms.</h2>
+ <div class="sugg">
+ <div class="s"><div class="p">Fix #1 · Brand</div><h4>Unify the handle</h4><p>@fantaseayachts everywhere. Consistency = discoverability = tags. Free.</p></div>
+ <div class="s"><div class="p">Fix #2 · Workflow</div><h4>Shoot once, cut five ways</h4><p>Every event → IG Reel + TikTok + YT Short + FB + Story. One shoot, a week of content.</p></div>
+ <div class="s"><div class="p">Fix #3 · Cadence</div><h4>4–5× / week, Thu–Sat 5–8pm</h4><p>Post in the planning window when couples & planners browse.</p></div>
+ <div class="s"><div class="p">Fix #4 · Conversion</div><h4>Link-in-bio → inquiry</h4><p>Every profile drives to a booking/inquiry page, not the homepage.</p></div>
+ <div class="s"><div class="p">Fix #5 · Proof</div><h4>Turn guests into creators</h4><p>Incentivize tagging @fantaseayachts; repost UGC — authentic, free, high-trust.</p></div>
+ <div class="s"><div class="p">Fix #6 · Highlights</div><h4>Pin the money services</h4><p>Story Highlights + pinned posts for Weddings, Corporate, Sunset Dining.</p></div>
+ </div>
+</section>
+
<section id="suggested">
- <div class="eyebrow">06 · Suggested New Websites</div>
+ <div class="eyebrow">07 · Suggested New Websites</div>
<h2 class="disp">Six luxury directions. One is live-clickable each.</h2>
<p class="lead">Sophisticated, few-colored, wedding-grade — modeled on the great Rodeo Drive fashion houses. Each opens as a working full-screen concept with a cinematic hero video and hamburger navigation. Pick a direction; we build it out.</p>
<div class="vgrid">${houseTiles}</div>
</section>
<section id="partners">
- <div class="eyebrow">07 · Unlikely Partners</div>
+ <div class="eyebrow">08 · Unlikely Partners</div>
<h2 class="disp">Ten referral engines hiding in plain sight.</h2>
<p class="lead">Your buyer is already spending at these brands. Co-marketing swaps a $0-CAC stream of high-net-worth referrals for a few hosted events a year.</p>
${partnerRows}
</section>
<section id="videos">
- <div class="eyebrow">08 · Their Videos + Brand Films</div>
+ <div class="eyebrow">09 · Their Videos + Brand Films</div>
<h2 class="disp">You already own beautiful footage. Let’s use it.</h2>
<p class="lead">FantaSea’s real films from <a href="https://www.youtube.com/@fantaseayachts7902" target="_blank" style="color:var(--gold)">@fantaseayachts7902</a> — a drone reel, wedding stories, even an NCIS shoot. This is premium content sitting under-leveraged. Repurpose it into Reels, ads, and the new homepage hero.</p>
<div class="rgrid">${realVidTiles}</div>
@@ -548,7 +600,7 @@ fetch('/videos/heygen-brandfilm.mp4',{method:'HEAD'}).then(r=>{if(r.ok){var v=do
</script>
<section id="roadmap">
- <div class="eyebrow">09 · 90-Day Roadmap</div>
+ <div class="eyebrow">10 · 90-Day Roadmap</div>
<h2 class="disp">What to do, in order.</h2>
<ul class="road">
<li><div class="w">Weeks 1–2</div><div class="d">Turn on review automation (Yelp/Google/Knot) + reply to all past reviews. Claim/optimize Google Business Profile. Pick a website direction.</div></li>
@@ -563,6 +615,45 @@ fetch('/videos/heygen-brandfilm.mp4',{method:'HEAD'}).then(r=>{if(r.ok){var v=do
<span>Prepared for the ${new Date().getFullYear()} consulting review</span>
<span>Confidential — for discussion</span>
</footer>
+<script>
+(function(){
+ var secs=[].slice.call(document.querySelectorAll('section[id]'));
+ var accs=[];
+ secs.forEach(function(sec){
+ var eb=sec.querySelector(':scope > .eyebrow');
+ var h2=sec.querySelector(':scope > h2');
+ if(!eb && !h2) return;
+ sec.classList.add('acc'); accs.push(sec);
+ var head=document.createElement('button'); head.type='button'; head.className='acchead';
+ var txt=document.createElement('div'); txt.className='htext';
+ var rest=[].slice.call(sec.children).filter(function(c){return c!==eb && c!==h2;});
+ if(eb) txt.appendChild(eb);
+ if(h2) txt.appendChild(h2);
+ var chev=document.createElement('span'); chev.className='chev'; chev.textContent='+';
+ head.appendChild(txt); head.appendChild(chev);
+ var body=document.createElement('div'); body.className='accbody';
+ rest.forEach(function(c){ body.appendChild(c); });
+ sec.appendChild(head); sec.appendChild(body);
+ head.addEventListener('click', function(){
+ var open=sec.classList.toggle('open');
+ chev.textContent=open?'\\u2013':'+';
+ });
+ });
+ // Expand / Collapse all — handy while presenting
+ if(accs.length){
+ var bar=document.createElement('div'); bar.className='accbar';
+ bar.innerHTML='<button id="xall">Expand all</button><button id="call">Collapse all</button>';
+ accs[0].parentNode.insertBefore(bar, accs[0]);
+ function setAll(open){ accs.forEach(function(s){ s.classList.toggle('open',open); var c=s.querySelector('.chev'); if(c)c.textContent=open?'\\u2013':'+'; }); }
+ document.getElementById('xall').onclick=function(){ setAll(true); };
+ document.getElementById('call').onclick=function(){ setAll(false); };
+ }
+ // Open (and scroll to) a section when a hamburger link targets it
+ function openSec(id){ var s=document.getElementById(id); if(s && s.classList.contains('acc') && !s.classList.contains('open')){ s.querySelector('.acchead').click(); } if(s){ setTimeout(function(){ s.scrollIntoView({behavior:'smooth',block:'start'}); },70); } }
+ document.querySelectorAll('.menu a[href^="#"]').forEach(function(a){ a.addEventListener('click', function(){ var id=a.getAttribute('href').slice(1); setTimeout(function(){ openSec(id); },70); }); });
+ if(location.hash) setTimeout(function(){ openSec(location.hash.slice(1)); },140);
+})();
+</script>
</body></html>`;
writeFileSync(`${OUT}/index.html`, mainApp);
diff --git a/public/index.html b/public/index.html
index 33c8449..3bfadc2 100644
--- a/public/index.html
+++ b/public/index.html
@@ -111,6 +111,25 @@ td.act{color:var(--ink);opacity:.9}
.heybox .copy p{color:var(--dim);font-size:15px}
.heybox .copy .spec{margin-top:20px;display:flex;flex-wrap:wrap;gap:10px}
.heybox .copy .spec span{font-size:10px;letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--line);padding:6px 12px;color:var(--gold)}
+.flagbox{display:flex;gap:22px;margin-top:40px;padding:30px 32px;border:1px solid var(--gold);background:rgba(200,161,90,.07)}
+.flagicon{font-size:30px;color:var(--gold);line-height:1}
+.flagbox h3{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:25px;color:var(--gold);margin-bottom:10px}
+.flagbox p{color:var(--ink);opacity:.92;font-size:16.5px;line-height:1.65}
+.tc{display:inline-block;margin-top:10px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);opacity:.7}
+/* accordion — every section starts collapsed */
+section.acc{padding-top:0;padding-bottom:0}
+.acchead{width:100%;text-align:left;background:none;border:0;cursor:pointer;display:flex;align-items:flex-start;gap:22px;padding:36px 0;color:var(--ink)}
+.acchead .htext{flex:1}
+.acchead .htext .eyebrow{margin-bottom:12px}
+.acchead .chev{font-family:'Cormorant Garamond',serif;font-size:36px;color:var(--gold);line-height:.6;transition:.3s;margin-top:8px}
+section.acc.open .acchead .chev{transform:rotate(45deg)}
+.acchead:hover .htext h2{color:var(--gold);transition:.25s}
+.accbody{display:none;padding-bottom:60px}
+section.acc.open .accbody{display:block;animation:accfade .45s ease}
+@keyframes accfade{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
+.accbar{display:flex;gap:12px;justify-content:flex-end;padding:14px clamp(24px,7vw,120px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
+.accbar button{background:none;border:1px solid var(--line);color:var(--gold);font-family:'Jost';font-size:11px;letter-spacing:.18em;text-transform:uppercase;padding:9px 18px;cursor:pointer;transition:.25s}
+.accbar button:hover{background:var(--gold);color:var(--bg)}
@media(max-width:640px){.heybox{grid-template-columns:1fr}}
.road{list-style:none;margin-top:44px}
.road li{padding:22px 0 22px 0;border-bottom:1px solid var(--line);display:flex;gap:26px}
@@ -127,7 +146,7 @@ footer{padding:60px clamp(24px,7vw,120px);border-top:1px solid var(--line);color
<div class="scrim" onclick="document.body.classList.remove('nav')"></div>
<nav class="menu" onclick="if(event.target.tagName==='A')document.body.classList.remove('nav')">
<div class="mh">Contents</div>
- <a href="#summary">Executive Summary</a><a href="#reputation">Reputation & Yelp</a><a href="#competitors">Competitors</a><a href="#advertising">Where to Advertise</a><a href="#timing">Timing & Cadence</a><a href="#audit">Website Audit</a><a href="#suggested">Suggested New Websites</a><a href="#partners">Unlikely Partners</a><a href="#videos">Their Videos + Brand Films</a><a href="#roadmap">90-Day Roadmap</a>
+ <a href="#summary">Executive Summary</a><a href="#reputation">Reputation & Yelp</a><a href="#competitors">Competitors</a><a href="#advertising">Where to Advertise</a><a href="#timing">Timing & Cadence</a><a href="#audit">Website Audit</a><a href="#social">Social Media Audit</a><a href="#suggested">Suggested New Websites</a><a href="#partners">Unlikely Partners</a><a href="#videos">Their Videos + Brand Films</a><a href="#roadmap">90-Day Roadmap</a>
<div class="minfo">
<div class="mh">Visit FantaSea</div>
<p>4215 Admiralty Way, Marina del Rey, CA 90292</p>
@@ -205,8 +224,41 @@ footer{padding:60px clamp(24px,7vw,120px);border-top:1px solid var(--line);color
<p class="lead">Six ready-to-review redesign concepts below — each in a Rodeo Drive luxury-house palette, with the hero-video + hamburger pattern already built.</p>
</section>
+<section id="social">
+ <div class="eyebrow">06 · Social Media Audit</div>
+ <h2 class="disp">Great footage, fragmented brand, under-posting.</h2>
+ <p class="lead">FantaSea is a <b>visual</b> business — sunsets, weddings, aerials. Social should be its top-of-funnel engine. Today the accounts are inconsistent and posting below cadence. The single biggest fix is free: <b>one handle, everywhere.</b></p>
+
+ <div class="flagbox">
+ <div class="flagicon">⚠</div>
+ <div>
+ <h3 class="disp">Handle inconsistency is costing you discovery</h3>
+ <p>Instagram, Facebook & YouTube read <b>fantaseayachts</b> — but TikTok is <b>@fantaseayachtllc</b> and YouTube carries a <b>7902</b> suffix. The “LLC” handle is the legal-entity name, almost certainly grabbed because the clean one was taken or set up in a hurry. The cost: fans can’t guess it, you can’t be tagged consistently, and it reads as unofficial. <b>Action: unify to @fantaseayachts (or @fantaseayachtsmdr) across every platform</b> — the highest-ROI, zero-dollar brand fix on this list.</p>
+ </div>
+ </div>
+
+ <div class="cards2" style="margin-top:38px">
+ <div class="c"><h3>Instagram — @fantaseayachts</h3><p>The hub for a venue brand. <b>Fix:</b> Reels 4–5×/wk (sunset · weddings · BTS · proposals), Story Highlights per service (Weddings / Corporate / Dining), geotag Marina del Rey, a booking link-in-bio, and repost guest UGC. <span class="tc">Followers — confirm live</span></p></div>
+ <div class="c"><h3>TikTok — @fantaseayachtllc</h3><p class="flag">Off-brand handle (see flag). <b>Fix:</b> secure @fantaseayachts, cross-link from IG. Content that wins here: POV proposals, timelapses, “what $6k gets you,” trending audio. Lowest cost / highest viral upside. <span class="tc">Followers — confirm live</span></p></div>
+ <div class="c"><h3>YouTube — @fantaseayachts7902</h3><p>Strong film library (drone, weddings, NCIS) but a numbered handle. <b>Fix:</b> claim the clean handle, cut the long films into 15–30s Shorts, and use the drone reel as the new site hero.</p></div>
+ <div class="c"><h3>Facebook / X</h3><p>FB (/FantaSeaYachtsMDR) still matters for the wedding demographic + reviews — keep it current. X (@FantaSeaYachts) is low priority; auto-syndicate, don’t invest.</p></div>
+ </div>
+
+ <div style="margin-top:44px"></div>
+ <div class="eyebrow">Suggestions</div>
+ <h2 class="disp">One content engine, five platforms.</h2>
+ <div class="sugg">
+ <div class="s"><div class="p">Fix #1 · Brand</div><h4>Unify the handle</h4><p>@fantaseayachts everywhere. Consistency = discoverability = tags. Free.</p></div>
+ <div class="s"><div class="p">Fix #2 · Workflow</div><h4>Shoot once, cut five ways</h4><p>Every event → IG Reel + TikTok + YT Short + FB + Story. One shoot, a week of content.</p></div>
+ <div class="s"><div class="p">Fix #3 · Cadence</div><h4>4–5× / week, Thu–Sat 5–8pm</h4><p>Post in the planning window when couples & planners browse.</p></div>
+ <div class="s"><div class="p">Fix #4 · Conversion</div><h4>Link-in-bio → inquiry</h4><p>Every profile drives to a booking/inquiry page, not the homepage.</p></div>
+ <div class="s"><div class="p">Fix #5 · Proof</div><h4>Turn guests into creators</h4><p>Incentivize tagging @fantaseayachts; repost UGC — authentic, free, high-trust.</p></div>
+ <div class="s"><div class="p">Fix #6 · Highlights</div><h4>Pin the money services</h4><p>Story Highlights + pinned posts for Weddings, Corporate, Sunset Dining.</p></div>
+ </div>
+</section>
+
<section id="suggested">
- <div class="eyebrow">06 · Suggested New Websites</div>
+ <div class="eyebrow">07 · Suggested New Websites</div>
<h2 class="disp">Six luxury directions. One is live-clickable each.</h2>
<p class="lead">Sophisticated, few-colored, wedding-grade — modeled on the great Rodeo Drive fashion houses. Each opens as a working full-screen concept with a cinematic hero video and hamburger navigation. Pick a direction; we build it out.</p>
<div class="vgrid">
@@ -249,14 +301,14 @@ footer{padding:60px clamp(24px,7vw,120px);border-top:1px solid var(--line);color
</section>
<section id="partners">
- <div class="eyebrow">07 · Unlikely Partners</div>
+ <div class="eyebrow">08 · Unlikely Partners</div>
<h2 class="disp">Ten referral engines hiding in plain sight.</h2>
<p class="lead">Your buyer is already spending at these brands. Co-marketing swaps a $0-CAC stream of high-net-worth referrals for a few hosted events a year.</p>
<div class="pcard"><div class="pnum">01</div><div><h4>Rodeo Drive luxury boutiques (Gucci, Chanel, Dior)</h4><p>Co-host aboard trunk shows & styling soirées; cross-refer VIP clienteling lists. Their client is your client.</p></div></div><div class="pcard"><div class="pnum">02</div><div><h4>Beverly Hills exotic-car dealers (Rolls-Royce, Ferrari, Bentley)</h4><p>“Arrive by yacht, leave by Rolls” proposal & anniversary packages; shared affluent CRM and event swaps.</p></div></div><div class="pcard"><div class="pnum">03</div><div><h4>High-end jewelers (engagement rings)</h4><p>Bundle a private sunset proposal charter with the ring purchase — the jeweler closes the ring, you own the moment.</p></div></div><div class="pcard"><div class="pnum">04</div><div><h4>Private jet & helicopter charters (Blade, JSX, Clay Lacy)</h4><p>“Jet-to-yacht” luxury itineraries; reciprocal referral fees between two high-net-worth travel brands.</p></div></div><div class="pcard"><div class="pnum">05</div><div><h4>Beverly Hills / MDR luxury hotels & concierges (Waldorf, Ritz-Carlton)</h4><p>Concierge referral commission for guest charters; be the on-water excursion every five-star front desk recommends.</p></div></div><div class="pcard"><div class="pnum">06</div><div><h4>Luxury wedding planners & couture florists</h4><p>Preferred-vendor pacts — weddings are your core revenue; own the planner rolodex before competitors do.</p></div></div><div class="pcard"><div class="pnum">07</div><div><h4>Beverly Hills med-spas, cosmetic surgeons & celeb dentists</h4><p>Client-appreciation & influencer cruises; their glossy patient base is prime for milestone charters.</p></div></div><div class="pcard"><div class="pnum">08</div><div><h4>VC firms, law firms & commercial real-estate brokers</h4><p>Deal-closing dinners, investor galas and summer offsites — recurring corporate contracts, not one-offs.</p></div></div><div class="pcard"><div class="pnum">09</div><div><h4>Film/TV production & location scouts</h4><p>Yacht as a filming location + wrap parties; Marina del Rey is film-permit friendly = a steady B2B line.</p></div></div><div class="pcard"><div class="pnum">10</div><div><h4>Champagne houses, wineries & celebrity chefs</h4><p>Co-branded pairing dinner cruises — a marquee recurring event series that sells itself on the name.</p></div></div>
</section>
<section id="videos">
- <div class="eyebrow">08 · Their Videos + Brand Films</div>
+ <div class="eyebrow">09 · Their Videos + Brand Films</div>
<h2 class="disp">You already own beautiful footage. Let’s use it.</h2>
<p class="lead">FantaSea’s real films from <a href="https://www.youtube.com/@fantaseayachts7902" target="_blank" style="color:var(--gold)">@fantaseayachts7902</a> — a drone reel, wedding stories, even an NCIS shoot. This is premium content sitting under-leveraged. Repurpose it into Reels, ads, and the new homepage hero.</p>
<div class="rgrid">
@@ -322,7 +374,7 @@ fetch('/videos/heygen-brandfilm.mp4',{method:'HEAD'}).then(r=>{if(r.ok){var v=do
</script>
<section id="roadmap">
- <div class="eyebrow">09 · 90-Day Roadmap</div>
+ <div class="eyebrow">10 · 90-Day Roadmap</div>
<h2 class="disp">What to do, in order.</h2>
<ul class="road">
<li><div class="w">Weeks 1–2</div><div class="d">Turn on review automation (Yelp/Google/Knot) + reply to all past reviews. Claim/optimize Google Business Profile. Pick a website direction.</div></li>
@@ -337,4 +389,43 @@ fetch('/videos/heygen-brandfilm.mp4',{method:'HEAD'}).then(r=>{if(r.ok){var v=do
<span>Prepared for the 2026 consulting review</span>
<span>Confidential — for discussion</span>
</footer>
+<script>
+(function(){
+ var secs=[].slice.call(document.querySelectorAll('section[id]'));
+ var accs=[];
+ secs.forEach(function(sec){
+ var eb=sec.querySelector(':scope > .eyebrow');
+ var h2=sec.querySelector(':scope > h2');
+ if(!eb && !h2) return;
+ sec.classList.add('acc'); accs.push(sec);
+ var head=document.createElement('button'); head.type='button'; head.className='acchead';
+ var txt=document.createElement('div'); txt.className='htext';
+ var rest=[].slice.call(sec.children).filter(function(c){return c!==eb && c!==h2;});
+ if(eb) txt.appendChild(eb);
+ if(h2) txt.appendChild(h2);
+ var chev=document.createElement('span'); chev.className='chev'; chev.textContent='+';
+ head.appendChild(txt); head.appendChild(chev);
+ var body=document.createElement('div'); body.className='accbody';
+ rest.forEach(function(c){ body.appendChild(c); });
+ sec.appendChild(head); sec.appendChild(body);
+ head.addEventListener('click', function(){
+ var open=sec.classList.toggle('open');
+ chev.textContent=open?'\u2013':'+';
+ });
+ });
+ // Expand / Collapse all — handy while presenting
+ if(accs.length){
+ var bar=document.createElement('div'); bar.className='accbar';
+ bar.innerHTML='<button id="xall">Expand all</button><button id="call">Collapse all</button>';
+ accs[0].parentNode.insertBefore(bar, accs[0]);
+ function setAll(open){ accs.forEach(function(s){ s.classList.toggle('open',open); var c=s.querySelector('.chev'); if(c)c.textContent=open?'\u2013':'+'; }); }
+ document.getElementById('xall').onclick=function(){ setAll(true); };
+ document.getElementById('call').onclick=function(){ setAll(false); };
+ }
+ // Open (and scroll to) a section when a hamburger link targets it
+ function openSec(id){ var s=document.getElementById(id); if(s && s.classList.contains('acc') && !s.classList.contains('open')){ s.querySelector('.acchead').click(); } if(s){ setTimeout(function(){ s.scrollIntoView({behavior:'smooth',block:'start'}); },70); } }
+ document.querySelectorAll('.menu a[href^="#"]').forEach(function(a){ a.addEventListener('click', function(){ var id=a.getAttribute('href').slice(1); setTimeout(function(){ openSec(id); },70); }); });
+ if(location.hash) setTimeout(function(){ openSec(location.hash.slice(1)); },140);
+})();
+</script>
</body></html>
\ No newline at end of file
diff --git a/videos-src/drone.webm b/videos-src/drone.webm
new file mode 100644
index 0000000..1fa25bb
Binary files /dev/null and b/videos-src/drone.webm differ
← 93d2b4f type: bump base/lead/table/card font sizes for legibility (d
·
back to Fantasea Consulting
·
add Unlikely Revenue Streams section (merch/DTLA/membership/ 746d72f →