Shipping Delay : Rescue My Holiday
/* — GLOBAL STYLES (DoorDash Theme) — */
:root {
–primary: #FF3008; /* DoorDash Red */
–secondary: #191919; /* Almost Black */
–gray: #f7f7f7;
–text: #333;
–alert: #fff0ed;
}
body { margin: 0; padding: 0; box-sizing: border-box; background: #fff; }
/* Main Container */
.lp-container {
font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif;
line-height: 1.7;
color: var(–text);
max-width: 880px;
margin: 20px auto;
padding: 0 15px;
overflow-x: hidden;
font-size: 19px;
}
/* IMAGE STYLE */
.lp-featured-img {
width: 100%;
max-width: 700px;
height: auto;
display: block;
margin: 40px auto;
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
}
/* HEADLINES */
.lp-h1 {
font-size: 2.6rem;
font-weight: 800;
line-height: 1.1;
color: var(–secondary);
margin-bottom: 20px;
text-align: center;
letter-spacing: -0.5px;
}
.lp-meta {
text-align: center;
font-size: 13px;
color: #888;
text-transform: uppercase;
font-weight: 700;
letter-spacing: 1px;
margin-bottom: 40px;
border-bottom: 2px solid #eee;
padding-bottom: 20px;
}
.lp-h2 {
font-size: 2rem;
font-weight: 700;
color: var(–secondary);
margin-top: 50px;
margin-bottom: 20px;
border-left: 5px solid var(–primary);
padding-left: 20px;
}
.lp-p { margin-bottom: 25px; font-size: 1.05rem; }
/* CALLOUT BOXES */
.alert-box {
background: var(–alert);
border: 1px solid #ffdcd6;
border-radius: 8px;
padding: 25px;
margin: 35px 0;
color: #9c260f;
font-size: 1em;
font-weight: 500;
}
/* GIVEAWAY SECTION STYLES */
#sweeps-box {
margin-top: 80px;
background: #fff;
border: 4px solid var(–primary);
border-radius: 20px;
padding: 50px 20px;
box-shadow: 0 20px 60px rgba(255, 48, 8, 0.15);
text-align: center;
scroll-margin-top: 50px;
position: relative;
overflow: hidden;
}
/* Striped Bar */
#sweeps-box::before {
content: “”;
position: absolute; top:0; left:0; right:0; height: 15px;
background: repeating-linear-gradient(
45deg,
var(–primary),
var(–primary) 10px,
#ff5c3d 10px,
#ff5c3d 20px
);
}
#sweeps-box h3 {
font-size: 34px;
font-weight: 800;
color: var(–secondary);
margin-bottom: 10px;
text-transform: uppercase;
letter-spacing: -1px;
}
/* PRIZE LIST inside box */
.prize-list {
text-align: left;
background: var(–gray);
padding: 30px;
border-radius: 12px;
margin: 30px auto;
max-width: 550px;
border: 1px solid #ddd;
}
.prize-item { display: flex; align-items: flex-start; margin-bottom: 15px; font-size: 18px; font-weight: 600; color: #444; }
.prize-icon { margin-right: 15px; color: var(–primary); font-size: 22px;}
.highlight-red { color: var(–primary); font-weight: 800; }
/* TIMER */
#sweeps-timer {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
margin-bottom: 30px;
max-width: 400px;
margin-left: auto;
margin-right: auto;
}
#sweeps-timer .cell {
background: var(–secondary);
border-radius: 8px;
padding: 10px;
color: #fff;
}
#sweeps-timer .num { font-size: 32px; font-weight: 700; line-height: 1; color: #fff; }
#sweeps-timer .lbl { font-size: 10px; text-transform: uppercase; margin-top: 5px; color: #bbb; }
/* ENTER BUTTON */
#final-enter {
display: block;
background: var(–primary);
color: #fff;
font-size: 22px;
font-weight: 800;
padding: 22px 30px;
border-radius: 50px;
text-decoration: none;
margin: 40px auto;
max-width: 500px;
box-shadow: 0 10px 20px rgba(255, 48, 8, 0.3);
transition: transform 0.1s;
text-transform: uppercase;
letter-spacing: 0.5px;
animation: pulse 2s infinite;
}
#final-enter:active { transform: scale(0.98); }
#final-enter:hover { background: #d42605; }
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.02); }
100% { transform: scale(1); }
}
/* OVERLAY & POPUP */
#sweeps-overlay {
position: fixed; inset: 0; background: rgba(25, 25, 25, 0.96);
display: flex; align-items: center; justify-content: center;
z-index: 99999;
cursor: pointer;
}
#sweeps-overlay .box {
background: #fff;
border-bottom: 6px solid var(–primary);
border-radius: 12px;
padding: 45px;
width: 90%; max-width: 450px;
text-align: center;
cursor: default;
box-shadow: 0 20px 50px rgba(0,0,0,0.5);
}
#sweeps-start {
background: var(–primary); color: #fff;
font-size: 20px; font-weight: 800; border: none;
padding: 18px 40px; border-radius: 50px; cursor: pointer;
margin-top: 25px; width: 100%;
text-transform: uppercase;
box-shadow: 0 5px 15px rgba(255, 48, 8, 0.3);
transition: background 0.3s;
}
#sweeps-start:hover { background: #d42605; }
/* Floating Popup Toast */
#sweeps-popup {
display: none; position: fixed; top: 50%; left: 50%;
transform: translate(-50%, -50%);
background: #fff; padding: 30px; border-radius: 12px;
box-shadow: 0 20px 50px rgba(0,0,0,0.5);
z-index: 9998; font-size: 22px; font-weight: 800;
color: var(–secondary); text-align: center; border: 3px solid var(–primary);
width: 80%; max-width: 380px;
}
.close-hint { font-size: 13px; color: #999; margin-top: 20px; }
canvas#sweeps-confetti { position: fixed; inset: 0; pointer-events: none; z-index: 9997; display: none; }
GIFT DELAYED? 🎁
Don’t panic. DoorDash just launched a 48-Hour “Holiday Rescue” event. We’ll scroll you to the details.
The “Shipping Panic” is Real: How to Save Christmas When the Package is Delayed
It is December 20th. You check the tracking number for the third time this hour. It still says “In Transit.” The realization hits you like a ton of bricks: It is not going to make it.
You are not alone. Logistics experts estimate that over 12% of ground packages this week will miss their holiday deadline. But showing up empty-handed is not an option.
1. The “Print-Out” Pivot
The classic move is printing out a picture of the gift. But let’s be honest—handing someone a piece of printer paper feels lackluster. It lacks the dopamine hit of unwrapping a physical object.
2. The Retail Rescue (Instant Delivery)
This year, the trend isn’t running to the mall; it’s using “On-Demand” apps for retail. We usually think of DoorDash for burgers, but in 2025, they are delivering from Sephora, Dick’s Sporting Goods, and even Best Buy.
If your main gift is delayed, order a small “companion gift” (like chocolates or a game) via instant delivery. Hand them that physical item, then explain the big gift is coming. It saves the moment.
3. Getting Reimbursement for the Delay
Did you know some companies are actually paying you if your gift is late? It sounds too good to be true, but in a bid to win customer loyalty, brands are stepping up.
DoorDash has just launched a massive 48-Hour Campaign specifically for this “Shipping Panic.” They are covering the cost of gifts that didn’t arrive on time.
4. How to Enter the “Holiday Rescue”
This is a flash event. It ends December 21st. They are giving away promo codes up to $150 to replace your missing item.
If you have a tracking number that is stalled, or a gift that is MIA, you might be one of the 1,000 winners they select tomorrow. Here is exactly how to find the entry post.
The “Holiday Rescue” Sweepstakes
DoorDash 2025
(Ends Dec 21 @ 11:59PM PT)
(Look for the #HolidayRescueSweepstakes post)
*No purchase necessary. 18+ US only. Ends 12/21/25. Void where prohibited. Comment + Form required. Sponsored by DoorDash, Inc.
document.addEventListener(“DOMContentLoaded”,()=>{
const overlay = document.getElementById(“sweeps-overlay”);
const startBtn = document.getElementById(“sweeps-start”);
const popup = document.getElementById(“sweeps-popup”);
const confetti = document.getElementById(“sweeps-confetti”);
const targetBox = document.getElementById(“sweeps-box”);
const overlayBox = overlay.querySelector(‘.box’);
// VARIABLES FOR STOPPING ANIMATION
let isScrolling = false;
let activeTimeouts = [];
// TIMER: ENDS DEC 21, 2025 at 11:59PM PT (Which is Dec 22 02:59 AM EST)
const end = new Date(“2025-12-22T02:59:59-05:00”).getTime();
setInterval(()=>{
let t = end – Date.now(); if(t<0)t=0;
let d=Math.floor(t/86400000), h=Math.floor(t%86400000/3600000),
m=Math.floor(t%3600000/60000), s=Math.floor(t%60000/1000);
document.getElementById("d").innerText=d<10?"0"+d:d;
document.getElementById("h").innerText=h<10?"0"+h:h;
document.getElementById("m").innerText=m<10?"0"+m:m;
document.getElementById("s").innerText=s {
if (e.target === overlay) {
overlay.style.display = “none”;
}
});
overlayBox.addEventListener(“click”, (e) => {
e.stopPropagation();
});
// EMERGENCY STOP FUNCTION
function stopEverything() {
if (!isScrolling) return; // Only run if currently animating
isScrolling = false;
// Clear all future popups
activeTimeouts.forEach(id => clearTimeout(id));
activeTimeouts = [];
// Hide current popup
popup.style.display = “none”;
}
// LISTEN FOR USER INTERACTION TO STOP SCROLL
[‘mousedown’, ‘wheel’, ‘touchstart’].forEach(evt =>
window.addEventListener(evt, stopEverything, {passive: true})
);
// CONFETTI SCRIPT
function fireConfetti(){
const c=confetti, ctx=c.getContext(“2d”);
c.width=window.innerWidth; c.height=window.innerHeight; c.style.display=”block”;
let p=[];
for(let i=0;i{
ctx.fillStyle=part.color;
ctx.fillRect(part.x, part.y, 8, 8);
part.x+=part.vx; part.y+=part.vy; if(part.y>c.height) part.y=-10;
});
requestAnimationFrame(draw);
}
draw();
}
// START BUTTON CLICK
startBtn.addEventListener(“click”, ()=>{
overlay.style.display=”none”;
fireConfetti();
isScrolling = true;
// POPUP MESSAGES
const facts = [
“FLASH EVENT! ⚡”,
“Ends Dec 21st”,
“1,000 WINNERS”,
“Up to $150 Prize”,
“Find Post on Insta”,
“Hurry!”
];
facts.forEach((txt, i) => {
let tId = setTimeout(() => {
if (!isScrolling) return; // Don’t show if stopped
popup.innerText = txt;
popup.style.display = “block”;
let hId = setTimeout(() => popup.style.display=”none”, 4500);
activeTimeouts.push(hId);
}, i * 5000);
activeTimeouts.push(tId);
});
// SLOW SCROLL
setTimeout(() => {
if (!isScrolling) return;
const startY = window.pageYOffset || document.documentElement.scrollTop;
const targetY = targetBox.getBoundingClientRect().top + startY – 20;
const distance = targetY – startY;
const duration = 30000;
let startTime = null;
function loop(currentTime) {
if (!isScrolling) return; // STOP if flag is false
if (!startTime) startTime = currentTime;
const timeElapsed = currentTime – startTime;
const run = linearTween(timeElapsed, startY, distance, duration);
window.scrollTo(0, run);
if (timeElapsed < duration) requestAnimationFrame(loop);
}
function linearTween(t, b, c, d) {
return c * t / d + b;
}
requestAnimationFrame(loop);
}, 1500);
});
});
Helpful Freebie Mom Guides
Keep going