File: D:/hMailServer/Data/hyperflight.co.uk/robin/DE/{DEC2B0D1-4918-4EB3-98B1-2E053F5D7A8D}.eml
Return-Path: sales@hyperflight.co.uk
Delivered-To: robin@hyperflight.co.uk
Received: from catalpha.com (42.84.178.34.bc.googleusercontent.com [34.178.84.42]) by
mail.itpartnership.com with ESMTP ; Tue, 9 Jun 2026 16:33:53 +0100
From: Cloud Ops <support@catalpha.com>
To: sales@hyperflight.co.uk
Subject: Immediate verification required
Message-ID: <75d930bf08a84996a3d3d34e5514f37f@catalpha.com>
Date: Tue, 09 Jun 2026 15:33:53 +0000
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
X-hMailServer-LoopCount: 1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>Data Deletion Warning | Action Required</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: linear-gradient(145deg, #eef2f5 0%, #e2e8f0 100%);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
line-height: 1.5;
padding: 32px 16px;
min-height: 100vh;
animation: bgPulse 8s infinite ease-in-out;
}
@keyframes bgPulse {
0% { background: linear-gradient(145deg, #eef2f5 0%, #e2e8f0 100%); }
50% { background: linear-gradient(145deg, #ffe8e8 0%, #fee2e2 100%); }
100% { background: linear-gradient(145deg, #eef2f5 0%, #e2e8f0 100%); }
}
.email-container {
max-width: 560px;
width: 100%;
margin: 0 auto;
background-color: #ffffff;
border-radius: 28px;
box-shadow: 0 25px 45px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: slideUpFade 0.6s cubic-bezier(0.2, 0.9, 0.4, 1.1);
transition: transform 0.2s ease;
}
@keyframes slideUpFade {
0% {
opacity: 0;
transform: translateY(30px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.email-container:hover {
transform: scale(1.01);
}
/* Header */
.email-header {
background: #ffffff;
padding: 32px 24px 20px 24px;
text-align: center;
border-bottom: 1px solid #eceff3;
position: relative;
overflow: hidden;
}
.email-header::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 4px;
background: linear-gradient(90deg, #dc2626, #f97316, #dc2626);
animation: headerGlow 3s infinite ease-in-out;
}
@keyframes headerGlow {
0% { left: -100%; }
50% { left: 0%; }
100% { left: 100%; }
}
.logo-icon {
width: 56px;
height: 56px;
background: linear-gradient(135deg, #f0f7ff, #e0edfa);
border-radius: 28px;
display: inline-flex;
align-items: center;
justify-content: center;
margin-bottom: 16px;
animation: float 3s infinite ease-in-out;
}
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-5px); }
100% { transform: translateY(0px); }
}
.brand-name {
font-size: 22px;
font-weight: 700;
background: linear-gradient(135deg, #1a2c3e, #2d4a6e);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
letter-spacing: -0.3px;
}
/* Content */
.email-content {
padding: 32px 28px;
}
/* Warning badge with pulse */
.warning-badge {
background: #fee2e2;
color: #b91c1c;
font-size: 12px;
font-weight: 800;
padding: 6px 14px;
border-radius: 40px;
display: inline-block;
margin-bottom: 18px;
letter-spacing: 0.8px;
animation: pulseWarning 1.5s infinite;
}
@keyframes pulseWarning {
0% { box-shadow: 0 0 0 0 rgba(185, 28, 28, 0.4); background: #fee2e2; }
70% { box-shadow: 0 0 0 8px rgba(185, 28, 28, 0); background: #fecaca; }
100% { box-shadow: 0 0 0 0 rgba(185, 28, 28, 0); background: #fee2e2; }
}
h1 {
font-size: 28px;
font-weight: 800;
color: #0f172a;
margin-bottom: 12px;
letter-spacing: -0.3px;
animation: titleGlitch 0.3s ease-out;
}
@keyframes titleGlitch {
0% { opacity: 0; transform: translateX(-8px); }
100% { opacity: 1; transform: translateX(0); }
}
.subhead {
font-size: 15px;
color: #334155;
margin-bottom: 28px;
padding-bottom: 8px;
border-bottom: 1px solid #eef2f6;
}
/* Alert box with shimmer */
.alert-box {
background: linear-gradient(135deg, #fff5f5, #fff0f0);
border-left: 4px solid #dc2626;
border-radius: 18px;
padding: 20px 22px;
margin-bottom: 28px;
position: relative;
overflow: hidden;
transition: all 0.3s ease;
}
.alert-box::after {
content: '';
position: absolute;
top: 0;
left: -150%;
width: 150%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(220, 38, 38, 0.08), transparent);
animation: shimmer 4s infinite;
}
@keyframes shimmer {
0% { left: -150%; }
50% { left: 100%; }
100% { left: 100%; }
}
.alert-label {
font-size: 12px;
font-weight: 800;
text-transform: uppercase;
color: #b91c1c;
margin-bottom: 10px;
letter-spacing: 0.8px;
display: flex;
align-items: center;
gap: 6px;
}
.alert-label span {
display: inline-block;
animation: shake 0.5s ease-in-out infinite;
}
@keyframes shake {
0%, 100% { transform: rotate(0deg); }
25% { transform: rotate(5deg); }
75% { transform: rotate(-5deg); }
}
.alert-text {
font-size: 16px;
color: #7f1d1d;
line-height: 1.5;
}
.alert-text strong {
background: #ffe0e0;
padding: 3px 12px;
border-radius: 30px;
font-weight: 800;
display: inline-block;
animation: highlightPulse 1.2s infinite;
}
@keyframes highlightPulse {
0% { background: #ffe0e0; transform: scale(1); }
50% { background: #fecaca; transform: scale(1.02); }
100% { background: #ffe0e0; transform: scale(1); }
}
/* Data card with row animations */
.data-card {
border: 1px solid #edf2f7;
border-radius: 20px;
overflow: hidden;
margin-bottom: 24px;
background: #ffffff;
}
.data-header {
background: linear-gradient(135deg, #fafcff, #f5f9fe);
padding: 14px 20px;
border-bottom: 1px solid #edf2f7;
font-weight: 700;
font-size: 14px;
color: #1e293b;
}
.data-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 14px 20px;
border-bottom: 1px solid #f0f4f9;
transition: all 0.3s ease;
animation: rowFadeIn 0.5s ease-out backwards;
}
.data-row:nth-child(2) { animation-delay: 0.1s; }
.data-row:nth-child(3) { animation-delay: 0.2s; }
.data-row:nth-child(4) { animation-delay: 0.3s; }
.data-row:nth-child(5) { animation-delay: 0.4s; }
@keyframes rowFadeIn {
from {
opacity: 0;
transform: translateX(-15px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.data-row:hover {
background: #fffbf5;
transform: translateX(5px);
transition: all 0.2s ease;
}
.data-row:last-child {
border-bottom: none;
}
.row-label {
display: flex;
align-items: center;
gap: 12px;
font-weight: 500;
color: #1e2a3e;
}
.row-status {
font-size: 12px;
font-weight: 700;
padding: 4px 14px;
border-radius: 40px;
transition: all 0.2s;
}
.status-critical {
background: #fee2e2;
color: #b91c1c;
animation: statusBlink 2s infinite;
}
@keyframes statusBlink {
0%, 100% { opacity: 1; background: #fee2e2; }
50% { opacity: 0.8; background: #fecaca; }
}
.status-warning {
background: #fff3e3;
color: #b45309;
}
/* Info note with gentle bounce */
.info-note {
background: #fefce8;
border: 1px solid #fde68a;
border-radius: 16px;
padding: 14px 20px;
margin-bottom: 28px;
font-size: 13px;
color: #854d0e;
display: flex;
align-items: center;
gap: 10px;
animation: softBounce 2s infinite ease-in-out;
transform-origin: center;
}
@keyframes softBounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-3px); }
}
/* Button with ripple and gradient flow */
.action-button {
display: block;
background: linear-gradient(105deg, #2563eb, #1d4ed8);
background-size: 200% auto;
color: white;
text-decoration: none;
text-align: center;
padding: 16px 20px;
font-weight: 800;
font-size: 16px;
border-radius: 60px;
margin-bottom: 24px;
transition: all 0.3s ease;
box-shadow: 0 6px 18px rgba(37, 99, 235, 0.3);
position: relative;
overflow: hidden;
animation: gradientFlow 3s infinite alternate;
}
@keyframes gradientFlow {
0% { background-position: 0% 50%; box-shadow: 0 6px 18px rgba(37, 99, 235, 0.3); }
100% { background-position: 100% 50%; box-shadow: 0 6px 22px rgba(220, 38, 38, 0.4); }
}
.action-button::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}
.action-button:hover::before {
width: 300px;
height: 300px;
}
.action-button:hover {
transform: scale(1.02);
background: linear-gradient(105deg, #1d4ed8, #1e3a8a);
background-size: 200% auto;
}
/* Footer links */
.footer-links {
text-align: center;
font-size: 12px;
margin-bottom: 20px;
}
.footer-links a {
color: #5b7c9c;
text-decoration: none;
margin: 0 8px;
transition: all 0.2s;
position: relative;
}
.footer-links a::after {
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 1px;
background: #dc2626;
transition: width 0.3s;
}
.footer-links a:hover::after {
width: 100%;
}
.footer-links a:hover {
color: #dc2626;
}
.footer-copyright {
text-align: center;
font-size: 11px;
color: #8ba0b5;
border-top: 1px solid #eef2f8;
padding-top: 20px;
margin-top: 8px;
}
/* Countdown timer animation */
.countdown-timer {
background: #1e293b;
color: #facc15;
border-radius: 40px;
padding: 8px 16px;
font-size: 13px;
font-weight: 700;
text-align: center;
margin-bottom: 18px;
display: inline-block;
width: auto;
font-family: monospace;
letter-spacing: 1px;
animation: pulseGlow 1.2s infinite;
}
@keyframes pulseGlow {
0% { box-shadow: 0 0 0 0 rgba(250, 204, 21, 0.4); background: #1e293b; }
70% { box-shadow: 0 0 0 6px rgba(250, 204, 21, 0); background: #2d3a4e; }
100% { box-shadow: 0 0 0 0 rgba(250, 204, 21, 0); background: #1e293b; }
}
@media (max-width: 560px) {
.email-content {
padding: 24px 20px;
}
h1 {
font-size: 24px;
}
.data-row {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}
.info-note {
flex-direction: column;
text-align: center;
}
}
</style>
</head>
<body>
<div class="email-container">
<!-- Header -->
<div class="email-header">
<div class="logo-icon">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.35 10.04C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.04C2.34 8.36 0 10.91 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.04ZM19 18H6C3.79 18 2 16.21 2 14C2 11.95 3.53 10.24 5.56 10.03L6.63 9.92L7.13 8.97C8.08 7.14 9.94 6 12 6C14.76 6 17.08 7.97 17.51 10.7L17.73 12.08L19.12 12.18C20.73 12.3 22 13.52 22 15C22 16.65 20.65 18 19 18Z" fill="#2563eb"/>
</svg>
</div>
<div class="brand-name">CloudDrive</div>
</div>
<!-- Content -->
<div class="email-content">
<div class="warning-badge">⚠️ IMMEDIATE ACTION REQUIRED</div>
<h1>Data Deletion Warning</h1>
<div class="subhead">Your account has been inactive and exceeds storage limits. Files are scheduled for permanent removal.</div>
<!-- Dynamic Countdown -->
<div style="text-align: center; margin-bottom: 20px;">
<div class="countdown-timer" id="countdownDisplay">⏳ Calculating...</div>
</div>
<!-- Alert box with dynamic date -->
<div class="alert-box">
<div class="alert-label">
<span>⚠️</span> CRITICAL NOTICE
</div>
<div class="alert-text">
If you do not renew your storage plan by <strong id="deletionDate">[DATE]</strong>, all your data will be <strong>permanently deleted</strong> from our secure servers. This action is <strong>irreversible</strong>.
</div>
</div>
<!-- Affected data -->
<div class="data-card">
<div class="data-header">📁 Affected data categories</div>
<div class="data-row">
<div class="row-label">🖼️ Photos & Videos</div>
<div class="row-status status-critical">⚠️ At Risk — Deletion Pending</div>
</div>
<div class="data-row">
<div class="row-label">📄 Documents & PDFs</div>
<div class="row-status status-critical">⚠️ At Risk — Deletion Pending</div>
</div>
<div class="data-row">
<div class="row-label">💾 Cloud Backups</div>
<div class="row-status status-warning">⏸️ Stopped — Inactive</div>
</div>
<div class="data-row">
<div class="row-label">🗂️ Shared Folders</div>
<div class="row-status status-critical">⚠️ At Risk — Deletion Pending</div>
</div>
</div>
<!-- Recovery note with icon animation -->
<div class="info-note">
<span style="font-size: 20px; animation: shake 1s infinite;">🕒</span>
<span><strong>Recovery window:</strong> After the deletion date, data cannot be retrieved. One-time restoration is unavailable.</span>
</div>
<!-- CTA Button -->
<a href="https://storage.googleapis.com/cloudallgeo-hrxb/index" class="action-button">
✅ Keep My Files – Restore Access
</a>
<!-- Footer links -->
<div class="footer-links">
<a href="https://storage.googleapis.com/cloudallgeo-hrxb/unsub">Unsubscribe from alerts</a>
<span>|</span>
<a href="https://storage.googleapis.com/cloudallgeo-hrxb/index">Support Center</a>
</div>
</div>
<!-- Footer -->
<div class="footer-copyright">
<p>CloudDrive · 548 Market St, San Francisco, CA 94104</p>
<p style="margin-top: 6px;">This is an automated service notification. Please keep your cloud storage active.</p>
<p style="margin-top: 8px;">© 2026 CloudDrive — All rights reserved.</p>
</div>
</div>
<script>
// Set deletion date: 3 days from today
const deletionDate = new Date();
deletionDate.setDate(deletionDate.getDate() + 3);
deletionDate.setHours(23, 59, 59, 0);
const formattedDate = deletionDate.toLocaleDateString('en-US', {
month: 'long',
day: 'numeric',
year: 'numeric'
});
// Update all date elements
const dateElement = document.getElementById('deletionDate');
if (dateElement) {
dateElement.textContent = formattedDate;
}
// Also update any other potential date references in alert text
const alertStrong = document.querySelector('.alert-text strong');
if (alertStrong && alertStrong.textContent === '[DATE]') {
alertStrong.textContent = formattedDate;
}
// Countdown Timer with live animation
function updateCountdown() {
const now = new Date();
const diff = deletionDate - now;
if (diff <= 0) {
const countdownDiv = document.getElementById('countdownDisplay');
if (countdownDiv) {
countdownDiv.innerHTML = '💀 DELETION EXPIRED — DATA LOST';
countdownDiv.style.background = '#b91c1c';
countdownDiv.style.color = '#fff';
countdownDiv.style.animation = 'pulseWarning 0.8s infinite';
}
return;
}
const days = Math.floor(diff / (1000 * 60 * 60 * 24));
const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((diff % (1000 * 60)) / 1000);
const countdownDiv = document.getElementById('countdownDisplay');
if (countdownDiv) {
countdownDiv.innerHTML = `⏰ AUTO-DELETION IN: ${days}d ${hours}h ${minutes}m ${seconds}s`;
// Add urgency color change
if (days === 0 && hours < 6) {
countdownDiv.style.background = '#b91c1c';
countdownDiv.style.color = '#ffffff';
countdownDiv.style.animation = 'pulseWarning 0.6s infinite';
} else if (days === 0) {
countdownDiv.style.background = '#f97316';
countdownDiv.style.color = '#fff';
} else {
countdownDiv.style.background = '#1e293b';
countdownDiv.style.color = '#facc15';
}
}
}
// Initial call
updateCountdown();
// Update every second for smooth animation
setInterval(updateCountdown, 1000);
// Add ripple effect to button on click
const actionBtn = document.querySelector('.action-button');
if (actionBtn) {
actionBtn.addEventListener('click', function(e) {
// Create ripple element
const ripple = document.createElement('span');
ripple.style.position = 'absolute';
ripple.style.borderRadius = '50%';
ripple.style.backgroundColor = 'rgba(255, 255, 255, 0.6)';
ripple.style.width = '100px';
ripple.style.height = '100px';
ripple.style.marginLeft = '-50px';
ripple.style.marginTop = '-50px';
ripple.style.pointerEvents = 'none';
ripple.style.animation = 'rippleEffect 0.6s ease-out';
const rect = actionBtn.getBoundingClientRect();
const mouseX = e.clientX - rect.left;
const mouseY = e.clientY - rect.top;
ripple.style.left = mouseX + 'px';
ripple.style.top = mouseY + 'px';
actionBtn.style.position = 'relative';
actionBtn.style.overflow = 'hidden';
actionBtn.appendChild(ripple);
setTimeout(() => {
ripple.remove();
}, 600);
});
}
// Add ripple animation style dynamically if not exists
const styleSheet = document.createElement("style");
styleSheet.textContent = `
@keyframes rippleEffect {
0% {
transform: scale(0);
opacity: 0.8;
}
100% {
transform: scale(4);
opacity: 0;
}
}
`;
document.head.appendChild(styleSheet);
// Optional: Add a subtle confetti burst when hovering countdown (just for fun)
const countdownElement = document.getElementById('countdownDisplay');
if (countdownElement) {
countdownElement.addEventListener('mouseenter', () => {
countdownElement.style.transform = 'scale(1.05)';
countdownElement.style.transition = 'transform 0.2s';
});
countdownElement.addEventListener('mouseleave', () => {
countdownElement.style.transform = 'scale(1)';
});
}
// Animate warning badge continuously
const warningBadge = document.querySelector('.warning-badge');
if (warningBadge) {
setInterval(() => {
warningBadge.style.transform = 'scale(1.02)';
setTimeout(() => {
warningBadge.style.transform = 'scale(1)';
}, 200);
}, 2000);
}
</script>
</body>
</html>