EchoPark Michael Waltrip Truck & Trailer Sweepstakes 2026 — Win a $105,200 Prize Package
:root {
–racing-black: #0a0a0a;
–charcoal: #1a1a1a;
–dark-gray: #2a2a2a;
–mid-gray: #3a3a3a;
–racing-red: #cc0000;
–red-bright: #ff2222;
–gold: #d4a017;
–gold-lt: #f0c040;
–white: #ffffff;
–off-white: #f5f5f5;
–text-light: #cccccc;
–text-muted: #888888;
–border: #333333;
–green-flag: #00aa44;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: ‘Inter’, sans-serif;
background: var(–off-white);
color: var(–charcoal);
font-size: 17px;
line-height: 1.85;
}
/* ── PROGRESS BAR ── */
#xp-bar-container {
position: fixed; top: 0; left: 0; right: 0;
height: 5px; background: #333; z-index: 9999;
}
#xp-bar {
height: 100%; width: 0%;
background: linear-gradient(90deg, var(–racing-red), var(–gold));
transition: width 0.2s ease;
}
/* ── FACT POPUPS ── */
.fact-popup {
display: none;
position: fixed;
top: 50%; left: 50%;
transform: translate(-50%, -50%);
background: #fff;
border: 3px solid var(–racing-red);
border-radius: 14px;
padding: 30px 32px;
width: 88%; max-width: 380px;
box-shadow: 0 30px 80px rgba(0,0,0,0.35);
z-index: 9999;
text-align: center;
font-family: ‘Inter’, sans-serif;
font-size: 0.97rem;
color: var(–charcoal);
line-height: 1.6;
}
.fact-icon {
font-size: 48px;
display: block;
margin-bottom: 10px;
}
.fact-title {
display: block;
font-family: ‘Teko’, sans-serif;
font-weight: 700;
font-size: 1.6rem;
color: var(–charcoal);
margin-bottom: 10px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
/* ── SKIP POPUP ── */
#skip-popup {
display: none;
position: fixed;
top: 50%; left: 50%;
transform: translate(-50%, -50%);
background: var(–charcoal);
border: 2px solid var(–gold);
border-radius: 14px;
padding: 28px 32px;
z-index: 9999;
text-align: center;
min-width: 280px; max-width: 380px;
box-shadow: 0 30px 80px rgba(0,0,0,0.6);
}
#skip-popup h4 {
font-family: ‘Teko’, sans-serif;
font-size: 1.5rem;
font-weight: 700;
color: var(–white);
margin-bottom: 8px;
text-transform: uppercase;
}
#skip-popup p {
font-size: 0.9rem;
color: rgba(255,255,255,0.65);
margin-bottom: 18px;
line-height: 1.5;
}
.popup-btns { display: flex; gap: 10px; justify-content: center; }
.popup-btn-yes {
background: var(–gold);
color: var(–charcoal);
border: none; border-radius: 8px;
padding: 10px 22px;
font-weight: 800; font-size: 0.95rem;
cursor: pointer; font-family: ‘Inter’, sans-serif;
}
.popup-btn-no {
background: rgba(255,255,255,0.1);
color: var(–white);
border: 1px solid rgba(255,255,255,0.2);
border-radius: 8px;
padding: 10px 18px;
font-weight: 600; font-size: 0.95rem;
cursor: pointer; font-family: ‘Inter’, sans-serif;
}
/* ── HEADER / HERO ── */
header {
background: var(–racing-black);
color: var(–white);
padding: 60px 20px 50px;
text-align: center;
position: relative;
overflow: hidden;
}
header::before {
content: ”;
position: absolute; inset: 0;
background: repeating-linear-gradient(
45deg,
transparent,
transparent 20px,
rgba(204,0,0,0.04) 20px,
rgba(204,0,0,0.04) 40px
);
}
.status-tag {
display: inline-block;
background: var(–green-flag);
color: #fff;
font-family: ‘Teko’, sans-serif;
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 2px;
text-transform: uppercase;
padding: 5px 16px;
border-radius: 20px;
margin-bottom: 20px;
}
header h1 {
font-family: ‘Barlow Condensed’, sans-serif;
font-size: clamp(2rem, 6vw, 3.8rem);
font-weight: 900;
line-height: 1.1;
margin-bottom: 14px;
text-transform: uppercase;
letter-spacing: 1px;
}
header h1 span { color: var(–racing-red); }
header p.hero-sub {
font-size: clamp(0.95rem, 2.5vw, 1.15rem);
color: var(–text-light);
max-width: 580px;
margin: 0 auto 30px;
}
/* ── PRIZE VALUE ── */
.prize-value {
font-family: ‘Teko’, sans-serif;
font-size: clamp(3.5rem, 10vw, 6rem);
font-weight: 700;
color: var(–gold);
line-height: 1;
margin-bottom: 6px;
letter-spacing: -1px;
}
.prize-label {
font-size: 0.8rem;
letter-spacing: 3px;
text-transform: uppercase;
color: var(–text-light);
margin-bottom: 30px;
}
/* ── COUNTDOWN ── */
.countdown {
display: flex;
gap: 12px;
justify-content: center;
margin-bottom: 32px;
flex-wrap: wrap;
}
.cd-block {
background: rgba(255,255,255,0.07);
border: 1px solid rgba(255,255,255,0.12);
border-radius: 10px;
padding: 14px 18px;
min-width: 72px;
text-align: center;
}
.cd-num {
font-family: ‘Teko’, sans-serif;
font-size: 2.2rem;
font-weight: 700;
color: var(–white);
line-height: 1;
display: block;
}
.cd-label {
font-size: 0.65rem;
letter-spacing: 2px;
text-transform: uppercase;
color: var(–text-muted);
margin-top: 4px;
display: block;
}
/* ── CTA BUTTON ── */
.cta-btn {
display: inline-block;
background: var(–racing-red);
color: var(–white);
font-family: ‘Barlow Condensed’, sans-serif;
font-size: 1.25rem;
font-weight: 800;
letter-spacing: 1.5px;
text-transform: uppercase;
padding: 18px 40px;
border-radius: 8px;
border: none;
cursor: pointer;
text-decoration: none;
box-shadow: 0 8px 30px rgba(204,0,0,0.4);
transition: transform 0.15s, box-shadow 0.15s;
}
.cta-btn:hover {
transform: translateY(-2px);
box-shadow: 0 12px 40px rgba(204,0,0,0.55);
}
/* ── STAT PILLS ── */
.stat-row {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
margin-top: 28px;
}
.stat-pill {
background: rgba(255,255,255,0.07);
border: 1px solid rgba(255,255,255,0.12);
border-radius: 8px;
padding: 10px 18px;
text-align: center;
min-width: 100px;
}
.stat-pill .sv { font-family: ‘Teko’, sans-serif; font-size: 1.4rem; font-weight: 700; color: var(–gold); display: block; line-height: 1; }
.stat-pill .sl { font-size: 0.65rem; letter-spacing: 2px; text-transform: uppercase; color: var(–text-muted); margin-top: 3px; display: block; }
/* ── CONTAINER ── */
.container {
max-width: 780px;
margin: 0 auto;
padding: 0 20px;
}
/* ── TOC ── */
.toc {
background: #fff;
border: 1px solid #e0e0e0;
border-left: 4px solid var(–racing-red);
border-radius: 8px;
padding: 24px 28px;
margin: 40px 0;
}
.toc-title {
font-family: ‘Teko’, sans-serif;
font-size: 0.8rem;
letter-spacing: 3px;
text-transform: uppercase;
color: var(–text-muted);
margin-bottom: 12px;
}
.toc ol { padding-left: 20px; }
.toc li { margin-bottom: 6px; }
.toc a { color: var(–racing-red); text-decoration: none; font-size: 0.95rem; font-weight: 500; }
.toc a:hover { text-decoration: underline; }
/* ── SECTIONS ── */
section {
padding: 48px 0 32px;
border-bottom: 1px solid #e8e8e8;
}
section:last-of-type { border-bottom: none; }
section h2 {
font-family: ‘Barlow Condensed’, sans-serif;
font-size: clamp(1.6rem, 4vw, 2.2rem);
font-weight: 900;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 18px;
color: var(–charcoal);
}
section h2 span { color: var(–racing-red); }
section p { margin-bottom: 18px; color: #333; }
section p:last-child { margin-bottom: 0; }
/* ── BLOCKQUOTE ── */
.pullquote {
background: var(–charcoal);
color: var(–white);
border-left: 5px solid var(–gold);
border-radius: 8px;
padding: 22px 28px;
margin: 28px 0;
font-style: italic;
font-size: 1.05rem;
line-height: 1.7;
}
.pullquote cite {
display: block;
margin-top: 10px;
font-style: normal;
font-size: 0.8rem;
letter-spacing: 2px;
text-transform: uppercase;
color: var(–gold);
}
/* ── PRIZE CARD ── */
.prize-card {
background: #fff;
border: 1px solid #e0e0e0;
border-top: 5px solid var(–racing-red);
border-radius: 12px;
padding: 32px 28px;
margin: 24px 0;
text-align: center;
}
.prize-card .pc-icon { font-size: 56px; display: block; margin-bottom: 14px; }
.prize-card .pc-name {
font-family: ‘Barlow Condensed’, sans-serif;
font-size: 1.6rem;
font-weight: 900;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 6px;
}
.prize-card .pc-arv {
font-family: ‘Teko’, sans-serif;
font-size: 2.2rem;
font-weight: 700;
color: var(–racing-red);
}
.prize-card .pc-desc {
font-size: 0.95rem;
color: #555;
margin-top: 12px;
line-height: 1.6;
}
/* ── RULES TABLE ── */
.rules-table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
font-size: 0.95rem;
}
.rules-table th {
background: var(–charcoal);
color: var(–white);
padding: 12px 16px;
text-align: left;
font-family: ‘Teko’, sans-serif;
font-size: 1rem;
letter-spacing: 1px;
text-transform: uppercase;
}
.rules-table td {
padding: 12px 16px;
border-bottom: 1px solid #e8e8e8;
vertical-align: top;
}
.rules-table tr:nth-child(even) td { background: #f9f9f9; }
.rules-table td:first-child { font-weight: 600; color: var(–charcoal); white-space: nowrap; }
.rules-table td:last-child { color: #444; }
.badge {
display: inline-block;
padding: 3px 10px;
border-radius: 20px;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 1px;
text-transform: uppercase;
}
.badge-red { background: #ffeaea; color: var(–racing-red); }
.badge-green { background: #eafff0; color: var(–green-flag); }
.badge-gold { background: #fff8e1; color: #b8860b; }
/* ── STEPS ── */
.steps { margin: 24px 0; }
.step {
display: flex;
gap: 18px;
align-items: flex-start;
margin-bottom: 20px;
}
.step-num {
background: var(–racing-red);
color: var(–white);
font-family: ‘Teko’, sans-serif;
font-size: 1.4rem;
font-weight: 700;
width: 42px; height: 42px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
margin-top: 2px;
}
.step-body strong {
display: block;
font-size: 1rem;
margin-bottom: 4px;
color: var(–charcoal);
}
.step-body span { font-size: 0.9rem; color: #555; }
/* ── ALERT BOX ── */
.alert {
background: #fff8e1;
border: 1px solid #f0c040;
border-left: 4px solid var(–gold);
border-radius: 8px;
padding: 18px 22px;
margin: 24px 0;
font-size: 0.95rem;
}
.alert strong { color: #7a5c00; }
.alert-red {
background: #fff0f0;
border-color: #ffaaaa;
border-left-color: var(–racing-red);
}
.alert-red strong { color: var(–racing-red); }
/* ── EXCLUSION BOX ── */
.exclusion-box {
background: #1a1a1a;
color: #ccc;
border-radius: 10px;
padding: 20px 24px;
margin: 20px 0;
font-size: 0.9rem;
line-height: 1.7;
}
.exclusion-box strong { color: var(–gold); }
/* ── FAQ ── */
.faq-item {
border: 1px solid #e0e0e0;
border-radius: 8px;
margin-bottom: 10px;
overflow: hidden;
background: #fff;
}
.faq-q {
width: 100%;
background: none;
border: none;
padding: 18px 20px;
text-align: left;
font-family: ‘Inter’, sans-serif;
font-size: 0.97rem;
font-weight: 600;
color: var(–charcoal);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
}
.faq-q::after {
content: ‘+’;
font-size: 1.4rem;
font-weight: 300;
color: var(–racing-red);
flex-shrink: 0;
transition: transform 0.2s;
}
.faq-item.open .faq-q::after { transform: rotate(45deg); }
.faq-a {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease, padding 0.3s ease;
padding: 0 20px;
font-size: 0.93rem;
color: #444;
line-height: 1.75;
}
.faq-item.open .faq-a {
max-height: 400px;
padding: 0 20px 18px;
}
/* ── RELATED ── */
.related-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 14px;
margin-top: 20px;
}
.related-card {
background: #fff;
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 16px;
text-decoration: none;
color: var(–charcoal);
transition: border-color 0.2s, box-shadow 0.2s;
}
.related-card:hover { border-color: var(–racing-red); box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
.related-card .rc-cat {
font-size: 0.7rem;
letter-spacing: 2px;
text-transform: uppercase;
color: var(–racing-red);
font-weight: 700;
margin-bottom: 6px;
}
.related-card .rc-title { font-weight: 700; font-size: 0.92rem; line-height: 1.4; }
/* ── FINAL CTA ── */
#final-cta {
background: var(–charcoal);
color: var(–white);
border-radius: 14px;
padding: 40px 32px;
text-align: center;
margin: 40px 0;
}
#final-cta h2 {
font-family: ‘Barlow Condensed’, sans-serif;
font-size: clamp(1.6rem, 4vw, 2.4rem);
font-weight: 900;
text-transform: uppercase;
color: var(–white);
margin-bottom: 10px;
}
#final-cta p { color: rgba(255,255,255,0.7); margin-bottom: 24px; font-size: 0.97rem; }
.cta-btn-gold {
display: inline-block;
background: var(–gold);
color: var(–charcoal);
font-family: ‘Barlow Condensed’, sans-serif;
font-size: 1.25rem;
font-weight: 900;
letter-spacing: 1.5px;
text-transform: uppercase;
padding: 18px 40px;
border-radius: 8px;
text-decoration: none;
box-shadow: 0 8px 30px rgba(212,160,23,0.4);
transition: transform 0.15s, box-shadow 0.15s;
}
.cta-btn-gold:hover {
transform: translateY(-2px);
box-shadow: 0 12px 40px rgba(212,160,23,0.55);
}
/* ── FOOTER ── */
footer {
background: var(–racing-black);
color: rgba(255,255,255,0.4);
text-align: center;
padding: 28px 20px;
font-size: 0.8rem;
line-height: 1.7;
}
footer a { color: rgba(255,255,255,0.5); }
/* ── AD WRAPPER ── */
.ad-wrap {
text-align: center;
margin: 32px 0;
overflow: hidden;
}
.ad-label {
font-size: 0.65rem;
letter-spacing: 2px;
text-transform: uppercase;
color: #bbb;
margin-bottom: 6px;
}
@media (max-width: 600px) {
header { padding: 44px 16px 36px; }
.container { padding: 0 16px; }
.rules-table { font-size: 0.85rem; }
.rules-table th, .rules-table td { padding: 10px 12px; }
}
Win Michael Waltrip’s
Truck & Trailer
EchoPark Automotive is giving one lucky NASCAR fan the keys to a $105,200 prize package — Michael Waltrip’s personal Truck & Trailer. One entry. One winner. Free to enter.
What Is the EchoPark Michael Waltrip Sweepstakes?
Every NASCAR season, EchoPark Automotive — the used car dealership chain that sponsors EchoPark Speedway in Concord, North Carolina — runs a sweepstakes for fans. This year, they’ve outdone themselves. Instead of tickets or merchandise, they’re giving away something that stops traffic: Michael Waltrip’s personal Truck & Trailer, valued at a combined $105,200.
Michael Waltrip is one of the most recognizable names in NASCAR history — a two-time Daytona 500 champion, longtime team owner, and beloved ambassador for the sport. The truck and trailer being given away are the real deal: his personal rig, the kind of setup that lets you haul to the track in style and live the NASCAR lifestyle year-round.
— EchoPark Automotive / Speedway Motorsports
The sweepstakes is administered by Speedway GLOBE, LLC — the promotional arm of Speedway Motorsports, the company that owns and operates eight NASCAR tracks including Charlotte Motor Speedway, Bristol Motor Speedway, and EchoPark Speedway. This is a legitimate, well-run promotion from one of the biggest names in motorsports.
Entry is completely free. No purchase required. No payment of any kind. You simply fill out a short form at the official entry page, and you’re in. One entry per person, one grand prize winner.
The Prize: Truck & Trailer Breakdown
There is one grand prize in this sweepstakes, and it is genuinely extraordinary. The total approximate retail value is $105,200 — making this one of the highest-value single-prize sweepstakes in the NASCAR world right now.
To put the $105,200 value in perspective: a fully loaded pickup truck with a premium trailer package easily reaches this price point. The combination of a heavy-duty truck capable of towing a large trailer, plus the trailer itself, represents a complete motorsports lifestyle package. Whether you use it to haul a race car, a boat, a camper, or just travel in style, this is a life-changing prize.
Unlike sweepstakes with multiple smaller prizes, this is a single grand prize drawing. One entry, one winner, one $105,200 package. The odds are determined entirely by how many eligible entries are received before August 24, 2026.
How to Enter — Step by Step
Entering this sweepstakes takes under two minutes. Here’s exactly what to do:
Go to speedwaymotorsports.com/echoparkr/ — this is the only official entry point for the sweepstakes.
Provide your first name, last name, zip code, phone number, and email address. You’ll also be asked if you’re in the market for a used car and the year, make, and model of your current vehicle.
Check the box confirming you agree to the Official Rules and Conditions. You must also have a valid U.S. driver’s license issued by your state of residence.
Click Submit. You’re entered. That’s it — no purchase, no payment, no follow-up required. You’ll receive a confirmation, and then you wait for the drawing.
The drawing will be conducted after the sweepstakes closes on August 24, 2026. If you win, you’ll be notified by email or phone. Respond promptly — winners who don’t respond in time forfeit the prize.
Unlike daily-entry sweepstakes, this one allows only a single entry per person for the entire promotion period. You get one shot. Make sure your contact information is accurate so you can be reached if you win.
Who Can Enter — Eligibility & Restrictions
This sweepstakes has some specific eligibility requirements that are stricter than most. Read carefully before entering to make sure you qualify.
This sweepstakes is NOT open to residents of: Alaska, Hawaii, Florida, Louisiana, New York, Rhode Island, or Puerto Rico. If you live in any of these states or territories, you are not eligible to enter.
| Requirement | Details |
|---|---|
| Age | Must be 21 years of age or older at time of entry |
| Residency | Legal resident of the United States or Washington, D.C. |
| Excluded States | Excluded AK, HI, FL, LA, NY, RI, and Puerto Rico |
| Driver’s License | Must have a valid U.S. driver’s license issued by your state of residence |
| Entry Limit | 1 Entry per person for the entire promotion |
| Purchase Required | No Purchase necessary to enter or win |
| Sponsor Employees | Employees of Speedway GLOBE, LLC and EchoPark are not eligible |
The driver’s license requirement is notable — it’s not just about age verification. The sponsor wants to confirm that the winner can actually use the prize (i.e., legally drive the truck). Make sure your license is current and valid at the time of entry.
Timeline & Key Dates
Here is the complete schedule for the EchoPark Michael Waltrip Truck & Trailer Sweepstakes:
| Date | Event | Status |
|---|---|---|
| February 19, 2026 | Sweepstakes opens — 9:00 AM EST | Open |
| Feb 19 – Aug 24 | Entry period — submit your single entry | Active |
| August 24, 2026 | Entry deadline — 11:59 PM EDT | Deadline |
| After Aug 24 | Random drawing conducted | Upcoming |
| After Drawing | Winner notified by email or phone | Upcoming |
The sweepstakes runs for over six months — from February 19 through August 24, 2026. But since you only get one entry, there’s no reason to wait. Enter now and you’re done. The drawing happens after the deadline closes.
Official Rules Decoded
Here is the fine print from the official rules, translated into plain English:
| Rule | Plain English |
|---|---|
| No Purchase Necessary | Completely free to enter. No payment of any kind required or accepted. |
| Odds of Winning | Depend on total number of eligible entries received. The fewer people who enter, the better your odds. |
| Age Requirement | Must be 21 or older — stricter than most sweepstakes due to the vehicle prize. |
| Driver’s License | Must have a valid U.S. driver’s license from your state of residence at time of entry. |
| Excluded States | AK, HI, FL, LA, NY, RI, and Puerto Rico are excluded due to state sweepstakes laws. |
| Entry Limit | One entry per person, period. No daily entries, no bonus entries. |
| Prize Substitution | Sponsor may substitute a prize of equal or greater value if the stated prize becomes unavailable. |
| Taxes | Winner is responsible for all applicable federal, state, and local taxes on the prize. |
| Winner Notification | Winner contacted by email or phone. Must respond promptly or an alternate winner is selected. |
| Sponsor | Speedway GLOBE, LLC, 5555 Concord Parkway South, Concord, NC 28027 |
One important note on taxes: a $105,200 prize will generate a significant tax liability. The IRS treats sweepstakes prizes as ordinary income. At a 22% federal tax bracket, you’d owe roughly $23,000 in federal taxes alone, plus state taxes depending on where you live. Make sure you’re prepared for this before accepting the prize.
Frequently Asked Questions
More Free Sweepstakes to Enter
Ready to Enter? It’s Free.
One entry. One winner. $105,200 in prize value. Takes under 2 minutes to enter — and it costs nothing.
Enter Free at SpeedwayMotorsports.com →
$105,200 Prize!
Michael Waltrip’s personal Truck & Trailer is worth over $105,000 — one of the biggest single-prize sweepstakes in NASCAR right now.
One Entry Only!
Unlike daily-entry sweepstakes, you only get one shot here. Make sure your contact info is accurate — winners are notified by email or phone.
NASCAR Legend’s Rig!
This is Michael Waltrip’s actual personal truck and trailer — not a branded replica. A two-time Daytona 500 champion’s real-deal setup.
Check Your Email!
Winners are notified after August 24, 2026. Check your spam folder — if you don’t respond in time, an alternate winner is chosen.
Ready to Enter? 🏁
Skip to the entry button now?
document.addEventListener(‘DOMContentLoaded’, function() {
// ── Countdown to August 24, 2026 11:59 PM EDT = August 25 03:59 UTC ──
function updateCountdown() {
var end = new Date(“2026-08-25T03:59:59Z”);
var now = new Date();
var diff = end – now;
if (diff <= 0) {
['cd-days','cd-hours','cd-mins','cd-secs'].forEach(function(id) {
document.getElementById(id).textContent = '00';
});
return;
}
var days = Math.floor(diff / 86400000);
var hours = Math.floor((diff % 86400000) / 3600000);
var mins = Math.floor((diff % 3600000) / 60000);
var secs = Math.floor((diff % 60000) / 1000);
function pad(n) { return n 0 ? (scrollTop / docHeight) * 100 : 0;
var bar = document.getElementById(‘xp-bar’);
if (bar) bar.style.width = Math.min(pct, 100) + ‘%’;
}, { passive: true });
// ── FAQ accordion ──
document.querySelectorAll(‘.faq-q’).forEach(function(btn) {
btn.addEventListener(‘click’, function() {
var item = btn.closest(‘.faq-item’);
var wasOpen = item.classList.contains(‘open’);
document.querySelectorAll(‘.faq-item’).forEach(function(i) { i.classList.remove(‘open’); });
if (!wasOpen) item.classList.add(‘open’);
});
});
// ── Smooth scroll TOC ──
document.querySelectorAll(‘a[href^=”#”]’).forEach(function(a) {
a.addEventListener(‘click’, function(e) {
var target = document.querySelector(a.getAttribute(‘href’));
if (target) {
e.preventDefault();
window.scrollTo({ top: target.getBoundingClientRect().top + window.scrollY – 30, behavior: ‘smooth’ });
}
});
});
// ── Auto-scroll system ──
var isAutoScrolling = false;
var autoScrollRAF = null;
var skipShown = false;
var skipPopup = document.getElementById(‘skip-popup’);
var scrollSpeed = 3;
var factTimers = [];
function triggerFact(id) {
if (!isAutoScrolling) return;
var el = document.getElementById(id);
if (el) {
el.style.display = ‘block’;
setTimeout(function() { el.style.display = ‘none’; }, 4500);
}
}
function stopAutoScroll() {
if (autoScrollRAF) { cancelAnimationFrame(autoScrollRAF); autoScrollRAF = null; }
isAutoScrolling = false;
factTimers.forEach(function(t) { clearTimeout(t); });
factTimers = [];
document.querySelectorAll(‘.fact-popup’).forEach(function(el) { el.style.display = ‘none’; });
}
function autoScrollStep() {
if (!isAutoScrolling) return;
var scrollTop = window.scrollY;
var docHeight = document.documentElement.scrollHeight – window.innerHeight;
var pct = docHeight > 0 ? scrollTop / docHeight : 0;
if (!skipShown && pct >= 0.50 && skipPopup) {
skipShown = true;
skipPopup.style.display = ‘block’;
stopAutoScroll();
return;
}
if (scrollTop >= docHeight – 5) {
stopAutoScroll();
return;
}
window.scrollBy(0, scrollSpeed);
autoScrollRAF = requestAnimationFrame(autoScrollStep);
}
function startAutoScroll() {
if (isAutoScrolling) return;
isAutoScrolling = true;
skipShown = false;
factTimers.forEach(function(t) { clearTimeout(t); });
factTimers = [];
factTimers.push(setTimeout(function() { triggerFact(‘fact1’); }, 6000));
factTimers.push(setTimeout(function() { triggerFact(‘fact2’); }, 16000));
factTimers.push(setTimeout(function() { triggerFact(‘fact3’); }, 28000));
factTimers.push(setTimeout(function() { triggerFact(‘fact4’); }, 40000));
autoScrollRAF = requestAnimationFrame(autoScrollStep);
}
// Start scroll button
var startBtn = document.getElementById(‘scroll-start-btn’);
if (startBtn) {
startBtn.addEventListener(‘click’, function(e) {
e.preventDefault();
stopAutoScroll();
skipShown = false;
startAutoScroll();
});
}
// Click anywhere stops scroll
document.addEventListener(‘click’, function(e) {
if (e.target.id === ‘scroll-start-btn’ || e.target.id === ‘skip-yes’ || e.target.id === ‘skip-no’ || e.target.id === ‘final-cta-btn’) return;
if (skipPopup && skipPopup.style.display === ‘block’) return;
if (isAutoScrolling) stopAutoScroll();
});
document.addEventListener(‘touchstart’, function() {
if (skipPopup && skipPopup.style.display !== ‘block’) stopAutoScroll();
}, { passive: true });
// Skip popup — Yes
var skipYes = document.getElementById(‘skip-yes’);
if (skipYes) {
skipYes.addEventListener(‘click’, function() {
if (skipPopup) skipPopup.style.display = ‘none’;
stopAutoScroll();
var target = document.getElementById(‘final-cta’);
if (target) {
target.scrollIntoView({ behavior: ‘smooth’, block: ‘center’ });
setTimeout(function() {
var btn = document.getElementById(‘final-cta-btn’);
if (btn) {
btn.style.transition = ‘box-shadow 0.3s’;
btn.style.boxShadow = ‘0 0 0 8px rgba(212,160,23,0.4), 0 0 0 16px rgba(212,160,23,0.2)’;
setTimeout(function() { btn.style.boxShadow = ”; }, 1500);
}
}, 800);
}
});
}
// Skip popup — No (resume scroll)
var skipNo = document.getElementById(‘skip-no’);
if (skipNo) {
skipNo.addEventListener(‘click’, function() {
if (skipPopup) skipPopup.style.display = ‘none’;
isAutoScrolling = true;
autoScrollRAF = requestAnimationFrame(autoScrollStep);
});
}
});
Helpful Freebie Mom Guides
Keep going