Upload 6 files
Browse files- templates/admin_dashboard.html +164 -0
- templates/admin_login.html +70 -0
- templates/contact.html +209 -0
- templates/index.html +303 -0
- templates/instructions.html +320 -0
- templates/success.html +85 -0
templates/admin_dashboard.html
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8"/>
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 6 |
+
<title>RECOM — Admin Dashboard</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 10 |
+
:root { --orange: #F26419; --peach: #F9A87E; --cream: #FFF3EC; --deep: #3D1A00; --mid: #7A3B10; --light-orange: #FDDCC4; }
|
| 11 |
+
body { font-family: 'DM Sans', sans-serif; background: var(--cream); min-height: 100vh; padding-bottom: 60px; }
|
| 12 |
+
|
| 13 |
+
header {
|
| 14 |
+
background: #fff; border-bottom: 1.5px solid var(--light-orange);
|
| 15 |
+
padding: 18px 32px; display: flex; align-items: center; justify-content: space-between;
|
| 16 |
+
position: sticky; top: 0; z-index: 10;
|
| 17 |
+
box-shadow: 0 2px 16px rgba(242,100,25,0.07);
|
| 18 |
+
}
|
| 19 |
+
.logo { display: flex; align-items: center; gap: 12px; }
|
| 20 |
+
.logo-mark {
|
| 21 |
+
width: 38px; height: 38px; background: var(--orange); border-radius: 10px;
|
| 22 |
+
display: flex; align-items: center; justify-content: center;
|
| 23 |
+
color: #fff; font-family: 'Playfair Display', serif; font-size: 18px; font-weight: 700;
|
| 24 |
+
}
|
| 25 |
+
.logo-text { font-family: 'Playfair Display', serif; font-size: 18px; font-weight: 700; color: var(--deep); }
|
| 26 |
+
.logo-text span { color: var(--orange); }
|
| 27 |
+
.admin-badge {
|
| 28 |
+
background: var(--light-orange); color: var(--orange);
|
| 29 |
+
font-size: 11px; font-weight: 600; letter-spacing: 1.5px;
|
| 30 |
+
text-transform: uppercase; padding: 4px 12px; border-radius: 100px;
|
| 31 |
+
border: 1px solid var(--peach);
|
| 32 |
+
}
|
| 33 |
+
.logout {
|
| 34 |
+
background: none; border: 1.5px solid var(--light-orange); color: var(--mid);
|
| 35 |
+
padding: 8px 16px; border-radius: 10px; font-family: 'DM Sans', sans-serif;
|
| 36 |
+
font-size: 13px; cursor: pointer; text-decoration: none;
|
| 37 |
+
transition: border-color 0.2s, color 0.2s;
|
| 38 |
+
}
|
| 39 |
+
.logout:hover { border-color: var(--orange); color: var(--orange); }
|
| 40 |
+
|
| 41 |
+
.container { max-width: 900px; margin: 0 auto; padding: 32px 20px; }
|
| 42 |
+
|
| 43 |
+
.stats {
|
| 44 |
+
display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
|
| 45 |
+
gap: 16px; margin-bottom: 32px;
|
| 46 |
+
}
|
| 47 |
+
.stat-card {
|
| 48 |
+
background: #fff; border: 1.5px solid var(--light-orange); border-radius: 16px;
|
| 49 |
+
padding: 20px 22px; animation: fadeUp 0.4s ease both;
|
| 50 |
+
}
|
| 51 |
+
.stat-label { font-size: 12px; letter-spacing: 1px; text-transform: uppercase; color: var(--mid); margin-bottom: 8px; font-weight: 500; }
|
| 52 |
+
.stat-value { font-family: 'Playfair Display', serif; font-size: 32px; color: var(--orange); font-weight: 700; }
|
| 53 |
+
|
| 54 |
+
.section-title {
|
| 55 |
+
font-family: 'Playfair Display', serif; font-size: 20px; color: var(--deep);
|
| 56 |
+
margin-bottom: 16px; display: flex; align-items: center; gap: 10px;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
/* Empty state */
|
| 60 |
+
.empty {
|
| 61 |
+
background: #fff; border: 1.5px solid var(--light-orange); border-radius: 18px;
|
| 62 |
+
padding: 60px 20px; text-align: center; color: var(--mid);
|
| 63 |
+
}
|
| 64 |
+
.empty-icon { font-size: 40px; margin-bottom: 12px; }
|
| 65 |
+
.empty p { font-size: 15px; font-weight: 300; }
|
| 66 |
+
|
| 67 |
+
/* Cards grid */
|
| 68 |
+
.cards-grid { display: grid; gap: 16px; }
|
| 69 |
+
.reg-card {
|
| 70 |
+
background: #fff; border: 1.5px solid var(--light-orange); border-radius: 18px;
|
| 71 |
+
padding: 22px 24px; animation: fadeUp 0.4s ease both;
|
| 72 |
+
transition: box-shadow 0.2s;
|
| 73 |
+
}
|
| 74 |
+
.reg-card:hover { box-shadow: 0 8px 28px rgba(242,100,25,0.12); }
|
| 75 |
+
.reg-header {
|
| 76 |
+
display: flex; align-items: flex-start; justify-content: space-between;
|
| 77 |
+
margin-bottom: 14px; flex-wrap: wrap; gap: 8px;
|
| 78 |
+
}
|
| 79 |
+
.reg-name { font-family: 'Playfair Display', serif; font-size: 20px; color: var(--deep); }
|
| 80 |
+
.reg-id {
|
| 81 |
+
background: var(--light-orange); color: var(--orange);
|
| 82 |
+
font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 100px;
|
| 83 |
+
}
|
| 84 |
+
.reg-chips { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
|
| 85 |
+
.chip {
|
| 86 |
+
background: var(--cream); border: 1px solid var(--light-orange);
|
| 87 |
+
border-radius: 100px; padding: 4px 12px; font-size: 13px; color: var(--mid);
|
| 88 |
+
}
|
| 89 |
+
.chip strong { color: var(--deep); }
|
| 90 |
+
.reg-details { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
|
| 91 |
+
.detail { display: flex; align-items: flex-start; gap: 8px; font-size: 14px; color: var(--mid); }
|
| 92 |
+
.detail-icon { font-size: 16px; flex-shrink: 0; }
|
| 93 |
+
.detail-text { line-height: 1.5; }
|
| 94 |
+
.reg-date { font-size: 12px; color: var(--mid); margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--light-orange); font-weight: 300; }
|
| 95 |
+
|
| 96 |
+
@keyframes fadeUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
|
| 97 |
+
</style>
|
| 98 |
+
</head>
|
| 99 |
+
<body>
|
| 100 |
+
|
| 101 |
+
<header>
|
| 102 |
+
<div class="logo">
|
| 103 |
+
<div class="logo-mark">R</div>
|
| 104 |
+
<div class="logo-text">RE<span>COM</span></div>
|
| 105 |
+
<div class="admin-badge">Admin</div>
|
| 106 |
+
</div>
|
| 107 |
+
<a href="/admin/logout" class="logout">Logout</a>
|
| 108 |
+
</header>
|
| 109 |
+
|
| 110 |
+
<div class="container">
|
| 111 |
+
|
| 112 |
+
<div class="stats">
|
| 113 |
+
<div class="stat-card" style="animation-delay:0.1s">
|
| 114 |
+
<div class="stat-label">Total Registrations</div>
|
| 115 |
+
<div class="stat-value">{{ students|length }}</div>
|
| 116 |
+
</div>
|
| 117 |
+
<div class="stat-card" style="animation-delay:0.2s">
|
| 118 |
+
<div class="stat-label">Total Revenue</div>
|
| 119 |
+
<div class="stat-value">₹{{ students|length * 200 }}</div>
|
| 120 |
+
</div>
|
| 121 |
+
</div>
|
| 122 |
+
|
| 123 |
+
<div class="section-title">📋 All Registrations</div>
|
| 124 |
+
|
| 125 |
+
{% if students|length == 0 %}
|
| 126 |
+
<div class="empty">
|
| 127 |
+
<div class="empty-icon">📭</div>
|
| 128 |
+
<p>No registrations yet. They'll appear here once students sign up.</p>
|
| 129 |
+
</div>
|
| 130 |
+
{% else %}
|
| 131 |
+
<div class="cards-grid">
|
| 132 |
+
{% for s in students|reverse %}
|
| 133 |
+
<div class="reg-card" style="animation-delay: {{ loop.index0 * 0.05 }}s">
|
| 134 |
+
<div class="reg-header">
|
| 135 |
+
<div class="reg-name">{{ s.name }}</div>
|
| 136 |
+
<div class="reg-id">#{{ s.id }}</div>
|
| 137 |
+
</div>
|
| 138 |
+
<div class="reg-chips">
|
| 139 |
+
<div class="chip">Class <strong>{{ s.class }}</strong></div>
|
| 140 |
+
<div class="chip">Section <strong>{{ s.section }}</strong></div>
|
| 141 |
+
</div>
|
| 142 |
+
<div class="reg-details">
|
| 143 |
+
<div class="detail">
|
| 144 |
+
<span class="detail-icon">📞</span>
|
| 145 |
+
<div class="detail-text">{{ s.get('phone', '—') }}</div>
|
| 146 |
+
</div>
|
| 147 |
+
<div class="detail">
|
| 148 |
+
<span class="detail-icon">💬</span>
|
| 149 |
+
<div class="detail-text">{{ s.get('whatsapp', '—') }}</div>
|
| 150 |
+
</div>
|
| 151 |
+
<div class="detail" style="grid-column: 1 / -1">
|
| 152 |
+
<span class="detail-icon">📍</span>
|
| 153 |
+
<div class="detail-text">{{ s.get('address', '—') }}</div>
|
| 154 |
+
</div>
|
| 155 |
+
</div>
|
| 156 |
+
<div class="reg-date">🕐 Registered on {{ s.get('registered_at', '—') }}</div>
|
| 157 |
+
</div>
|
| 158 |
+
{% endfor %}
|
| 159 |
+
</div>
|
| 160 |
+
{% endif %}
|
| 161 |
+
|
| 162 |
+
</div>
|
| 163 |
+
</body>
|
| 164 |
+
</html>
|
templates/admin_login.html
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8"/>
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 6 |
+
<title>RECOM — Admin</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 10 |
+
:root { --orange: #F26419; --peach: #F9A87E; --cream: #FFF3EC; --deep: #3D1A00; --mid: #7A3B10; --light-orange: #FDDCC4; }
|
| 11 |
+
body {
|
| 12 |
+
font-family: 'DM Sans', sans-serif; background: var(--cream);
|
| 13 |
+
min-height: 100vh; display: flex; align-items: center; justify-content: center;
|
| 14 |
+
}
|
| 15 |
+
body::before {
|
| 16 |
+
content: ''; position: fixed; top: -100px; right: -100px;
|
| 17 |
+
width: 400px; height: 400px; border-radius: 50%;
|
| 18 |
+
background: radial-gradient(circle, var(--peach) 0%, transparent 70%);
|
| 19 |
+
opacity: 0.4; pointer-events: none;
|
| 20 |
+
}
|
| 21 |
+
.card {
|
| 22 |
+
background: #fff; border: 1.5px solid var(--light-orange);
|
| 23 |
+
border-radius: 24px; padding: 44px 40px 40px;
|
| 24 |
+
width: min(400px, 92vw);
|
| 25 |
+
box-shadow: 0 12px 48px rgba(242,100,25,0.10);
|
| 26 |
+
animation: fadeUp 0.5s ease both;
|
| 27 |
+
}
|
| 28 |
+
.lock { font-size: 36px; margin-bottom: 16px; }
|
| 29 |
+
h2 { font-family: 'Playfair Display', serif; font-size: 26px; color: var(--deep); margin-bottom: 6px; }
|
| 30 |
+
.sub { font-size: 14px; color: var(--mid); font-weight: 300; margin-bottom: 28px; }
|
| 31 |
+
label { display: block; font-size: 12px; font-weight: 500; letter-spacing: 1px; text-transform: uppercase; color: var(--mid); margin-bottom: 8px; }
|
| 32 |
+
input {
|
| 33 |
+
width: 100%; padding: 13px 16px; border: 1.5px solid var(--light-orange);
|
| 34 |
+
border-radius: 12px; font-family: 'DM Sans', sans-serif; font-size: 15px;
|
| 35 |
+
color: var(--deep); background: var(--cream); outline: none;
|
| 36 |
+
transition: border 0.2s, box-shadow 0.2s; margin-bottom: 20px;
|
| 37 |
+
}
|
| 38 |
+
input:focus { border-color: var(--orange); box-shadow: 0 0 0 3px rgba(242,100,25,0.12); background: #fff; }
|
| 39 |
+
.error {
|
| 40 |
+
background: #fff0f0; border: 1.5px solid #ffcccc; border-radius: 10px;
|
| 41 |
+
padding: 10px 14px; font-size: 13px; color: #cc3300;
|
| 42 |
+
margin-bottom: 16px;
|
| 43 |
+
}
|
| 44 |
+
.btn {
|
| 45 |
+
width: 100%; padding: 14px; background: var(--orange); color: #fff;
|
| 46 |
+
border: none; border-radius: 12px; font-family: 'DM Sans', sans-serif;
|
| 47 |
+
font-size: 15px; font-weight: 500; cursor: pointer;
|
| 48 |
+
box-shadow: 0 6px 20px rgba(242,100,25,0.28);
|
| 49 |
+
transition: background 0.2s, transform 0.15s;
|
| 50 |
+
}
|
| 51 |
+
.btn:hover { background: #d6540f; transform: translateY(-1px); }
|
| 52 |
+
@keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
|
| 53 |
+
</style>
|
| 54 |
+
</head>
|
| 55 |
+
<body>
|
| 56 |
+
<div class="card">
|
| 57 |
+
<div class="lock">🔐</div>
|
| 58 |
+
<h2>Admin Access</h2>
|
| 59 |
+
<p class="sub">Enter your password to view registrations.</p>
|
| 60 |
+
{% if error %}
|
| 61 |
+
<div class="error">{{ error }}</div>
|
| 62 |
+
{% endif %}
|
| 63 |
+
<form method="POST">
|
| 64 |
+
<label>Password</label>
|
| 65 |
+
<input type="password" name="password" placeholder="Enter admin password" required autofocus/>
|
| 66 |
+
<button type="submit" class="btn">Login →</button>
|
| 67 |
+
</form>
|
| 68 |
+
</div>
|
| 69 |
+
</body>
|
| 70 |
+
</html>
|
templates/contact.html
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8"/>
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 6 |
+
<title>RECOM — Contact Details</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 10 |
+
:root {
|
| 11 |
+
--orange: #F26419; --peach: #F9A87E; --cream: #FFF3EC;
|
| 12 |
+
--deep: #3D1A00; --mid: #7A3B10; --light-orange: #FDDCC4;
|
| 13 |
+
}
|
| 14 |
+
body {
|
| 15 |
+
font-family: 'DM Sans', sans-serif;
|
| 16 |
+
background: var(--cream);
|
| 17 |
+
min-height: 100vh;
|
| 18 |
+
display: flex; flex-direction: column; align-items: center;
|
| 19 |
+
overflow-x: hidden;
|
| 20 |
+
}
|
| 21 |
+
body::before {
|
| 22 |
+
content: '';
|
| 23 |
+
position: fixed; top: -120px; right: -120px;
|
| 24 |
+
width: 480px; height: 480px; border-radius: 50%;
|
| 25 |
+
background: radial-gradient(circle, var(--peach) 0%, transparent 70%);
|
| 26 |
+
opacity: 0.4; pointer-events: none;
|
| 27 |
+
}
|
| 28 |
+
header {
|
| 29 |
+
width: 100%; padding: 28px 40px 20px;
|
| 30 |
+
display: flex; align-items: center; gap: 14px;
|
| 31 |
+
}
|
| 32 |
+
.logo-mark {
|
| 33 |
+
width: 44px; height: 44px; background: var(--orange);
|
| 34 |
+
border-radius: 12px; display: flex; align-items: center; justify-content: center;
|
| 35 |
+
color: #fff; font-family: 'Playfair Display', serif;
|
| 36 |
+
font-size: 22px; font-weight: 900; box-shadow: 0 4px 14px rgba(242,100,25,0.35);
|
| 37 |
+
}
|
| 38 |
+
.logo-text { font-family: 'Playfair Display', serif; font-size: 22px; font-weight: 700; color: var(--deep); letter-spacing: 1px; }
|
| 39 |
+
.logo-text span { color: var(--orange); }
|
| 40 |
+
|
| 41 |
+
.steps {
|
| 42 |
+
display: flex; align-items: center; gap: 10px;
|
| 43 |
+
margin: 10px 0 30px; animation: fadeUp 0.5s ease both;
|
| 44 |
+
}
|
| 45 |
+
.step {
|
| 46 |
+
display: flex; align-items: center; gap: 6px;
|
| 47 |
+
font-size: 13px; font-weight: 500;
|
| 48 |
+
}
|
| 49 |
+
.step-dot {
|
| 50 |
+
width: 26px; height: 26px; border-radius: 50%;
|
| 51 |
+
display: flex; align-items: center; justify-content: center;
|
| 52 |
+
font-size: 12px; font-weight: 700;
|
| 53 |
+
}
|
| 54 |
+
.step.done .step-dot { background: var(--orange); color: #fff; }
|
| 55 |
+
.step.done .step-label { color: var(--orange); }
|
| 56 |
+
.step.active .step-dot { background: var(--deep); color: #fff; }
|
| 57 |
+
.step.active .step-label { color: var(--deep); }
|
| 58 |
+
.step.inactive .step-dot { background: var(--light-orange); color: var(--mid); }
|
| 59 |
+
.step.inactive .step-label { color: var(--mid); }
|
| 60 |
+
.step-line { width: 30px; height: 2px; background: var(--light-orange); border-radius: 2px; }
|
| 61 |
+
|
| 62 |
+
.greeting {
|
| 63 |
+
text-align: center; padding: 0 20px;
|
| 64 |
+
animation: fadeUp 0.6s 0.1s ease both;
|
| 65 |
+
}
|
| 66 |
+
.greeting .hi { font-size: 13px; letter-spacing: 2px; text-transform: uppercase; color: var(--mid); margin-bottom: 8px; }
|
| 67 |
+
.greeting h2 { font-family: 'Playfair Display', serif; font-size: 28px; color: var(--deep); margin-bottom: 6px; }
|
| 68 |
+
.greeting h2 span { color: var(--orange); }
|
| 69 |
+
.greeting p { font-size: 14px; color: var(--mid); font-weight: 300; margin-bottom: 28px; }
|
| 70 |
+
|
| 71 |
+
.info-bar {
|
| 72 |
+
display: flex; gap: 10px; justify-content: center;
|
| 73 |
+
flex-wrap: wrap; margin-bottom: 32px;
|
| 74 |
+
animation: fadeUp 0.6s 0.2s ease both;
|
| 75 |
+
}
|
| 76 |
+
.chip {
|
| 77 |
+
background: #fff; border: 1.5px solid var(--light-orange);
|
| 78 |
+
border-radius: 100px; padding: 6px 16px;
|
| 79 |
+
font-size: 13px; color: var(--mid); font-weight: 500;
|
| 80 |
+
}
|
| 81 |
+
.chip strong { color: var(--deep); }
|
| 82 |
+
|
| 83 |
+
.card {
|
| 84 |
+
background: #fff; border: 1.5px solid var(--light-orange);
|
| 85 |
+
border-radius: 24px; padding: 38px 40px 34px;
|
| 86 |
+
width: min(440px, 92vw); box-shadow: 0 12px 48px rgba(242,100,25,0.10);
|
| 87 |
+
animation: fadeUp 0.6s 0.3s ease both; margin-bottom: 60px;
|
| 88 |
+
}
|
| 89 |
+
.card-title { font-family: 'Playfair Display', serif; font-size: 20px; color: var(--deep); margin-bottom: 6px; }
|
| 90 |
+
.card-sub { font-size: 13px; color: var(--mid); margin-bottom: 28px; font-weight: 300; }
|
| 91 |
+
|
| 92 |
+
.field { margin-bottom: 20px; }
|
| 93 |
+
label { display: block; font-size: 12px; font-weight: 500; letter-spacing: 1px; text-transform: uppercase; color: var(--mid); margin-bottom: 8px; }
|
| 94 |
+
input, textarea {
|
| 95 |
+
width: 100%; padding: 13px 16px;
|
| 96 |
+
border: 1.5px solid var(--light-orange); border-radius: 12px;
|
| 97 |
+
font-family: 'DM Sans', sans-serif; font-size: 15px; color: var(--deep);
|
| 98 |
+
background: var(--cream); outline: none;
|
| 99 |
+
transition: border 0.2s, box-shadow 0.2s;
|
| 100 |
+
}
|
| 101 |
+
input:focus, textarea:focus {
|
| 102 |
+
border-color: var(--orange); box-shadow: 0 0 0 3px rgba(242,100,25,0.12); background: #fff;
|
| 103 |
+
}
|
| 104 |
+
textarea { resize: none; height: 80px; }
|
| 105 |
+
|
| 106 |
+
.note {
|
| 107 |
+
background: var(--light-orange); border-radius: 12px;
|
| 108 |
+
padding: 14px 16px; margin-bottom: 22px;
|
| 109 |
+
font-size: 13px; color: var(--mid); line-height: 1.6;
|
| 110 |
+
}
|
| 111 |
+
.note strong { color: var(--orange); }
|
| 112 |
+
|
| 113 |
+
.btn {
|
| 114 |
+
width: 100%; padding: 15px; background: var(--orange); color: #fff;
|
| 115 |
+
border: none; border-radius: 14px; font-family: 'DM Sans', sans-serif;
|
| 116 |
+
font-size: 16px; font-weight: 500; cursor: pointer; margin-top: 4px;
|
| 117 |
+
transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
|
| 118 |
+
box-shadow: 0 6px 20px rgba(242,100,25,0.28);
|
| 119 |
+
display: flex; align-items: center; justify-content: center; gap: 8px;
|
| 120 |
+
}
|
| 121 |
+
.btn:hover { background: #d6540f; transform: translateY(-2px); }
|
| 122 |
+
.btn:active { transform: translateY(0); }
|
| 123 |
+
.btn:disabled { background: var(--peach); cursor: not-allowed; transform: none; }
|
| 124 |
+
|
| 125 |
+
@keyframes fadeUp {
|
| 126 |
+
from { opacity: 0; transform: translateY(20px); }
|
| 127 |
+
to { opacity: 1; transform: translateY(0); }
|
| 128 |
+
}
|
| 129 |
+
</style>
|
| 130 |
+
</head>
|
| 131 |
+
<body>
|
| 132 |
+
|
| 133 |
+
<header>
|
| 134 |
+
<div class="logo-mark">R</div>
|
| 135 |
+
<div class="logo-text">RE<span>COM</span></div>
|
| 136 |
+
</header>
|
| 137 |
+
|
| 138 |
+
<div class="steps">
|
| 139 |
+
<div class="step done"><div class="step-dot">✓</div><div class="step-label">Basic Info</div></div>
|
| 140 |
+
<div class="step-line"></div>
|
| 141 |
+
<div class="step active"><div class="step-dot">2</div><div class="step-label">Contact</div></div>
|
| 142 |
+
<div class="step-line"></div>
|
| 143 |
+
<div class="step inactive"><div class="step-dot">3</div><div class="step-label">Done</div></div>
|
| 144 |
+
</div>
|
| 145 |
+
|
| 146 |
+
<div class="greeting">
|
| 147 |
+
<div class="hi">Almost there</div>
|
| 148 |
+
<h2>Hey, <span>{{ name }}!</span></h2>
|
| 149 |
+
<p>Just a couple more details and you're all set.</p>
|
| 150 |
+
</div>
|
| 151 |
+
|
| 152 |
+
<div class="info-bar">
|
| 153 |
+
<div class="chip">Class <strong>{{ cls }}</strong></div>
|
| 154 |
+
<div class="chip">Section <strong>{{ section }}</strong></div>
|
| 155 |
+
</div>
|
| 156 |
+
|
| 157 |
+
<div class="card">
|
| 158 |
+
<div class="card-title">Contact Details</div>
|
| 159 |
+
<div class="card-sub">We'll use this to coordinate pick-up & drop</div>
|
| 160 |
+
|
| 161 |
+
<div class="note">
|
| 162 |
+
<strong>📞 Our contact numbers will be shared here soon.</strong><br/>
|
| 163 |
+
You can also reach us once your booking is confirmed.
|
| 164 |
+
</div>
|
| 165 |
+
|
| 166 |
+
<form id="contactForm">
|
| 167 |
+
<div class="field">
|
| 168 |
+
<label>Phone Number</label>
|
| 169 |
+
<input type="tel" id="phone" placeholder="+91 98765 43210" maxlength="15" required/>
|
| 170 |
+
</div>
|
| 171 |
+
<div class="field">
|
| 172 |
+
<label>WhatsApp Number</label>
|
| 173 |
+
<input type="tel" id="whatsapp" placeholder="Same as above or different" maxlength="15"/>
|
| 174 |
+
</div>
|
| 175 |
+
<div class="field">
|
| 176 |
+
<label>Pick-up Address</label>
|
| 177 |
+
<textarea id="address" placeholder="Your area / locality in Hyderabad" required></textarea>
|
| 178 |
+
</div>
|
| 179 |
+
<button type="submit" class="btn" id="submitBtn">Confirm Booking ✓</button>
|
| 180 |
+
</form>
|
| 181 |
+
</div>
|
| 182 |
+
|
| 183 |
+
<script>
|
| 184 |
+
document.getElementById("contactForm").addEventListener("submit", async function(e) {
|
| 185 |
+
e.preventDefault();
|
| 186 |
+
const btn = document.getElementById("submitBtn");
|
| 187 |
+
btn.disabled = true;
|
| 188 |
+
btn.textContent = "Booking...";
|
| 189 |
+
|
| 190 |
+
const data = {
|
| 191 |
+
name: "{{ name }}",
|
| 192 |
+
class: "{{ cls }}",
|
| 193 |
+
section: "{{ section }}",
|
| 194 |
+
phone: document.getElementById("phone").value.trim(),
|
| 195 |
+
whatsapp: document.getElementById("whatsapp").value.trim(),
|
| 196 |
+
address: document.getElementById("address").value.trim()
|
| 197 |
+
};
|
| 198 |
+
|
| 199 |
+
const res = await fetch("/submit", {
|
| 200 |
+
method: "POST",
|
| 201 |
+
headers: { "Content-Type": "application/json" },
|
| 202 |
+
body: JSON.stringify(data)
|
| 203 |
+
});
|
| 204 |
+
const result = await res.json();
|
| 205 |
+
if (result.success) window.location.href = "/success";
|
| 206 |
+
});
|
| 207 |
+
</script>
|
| 208 |
+
</body>
|
| 209 |
+
</html>
|
templates/index.html
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8"/>
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 6 |
+
<title>RECOM — Record Completion Service</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 10 |
+
|
| 11 |
+
:root {
|
| 12 |
+
--orange: #F26419;
|
| 13 |
+
--peach: #F9A87E;
|
| 14 |
+
--cream: #FFF3EC;
|
| 15 |
+
--deep: #3D1A00;
|
| 16 |
+
--mid: #7A3B10;
|
| 17 |
+
--light-orange: #FDDCC4;
|
| 18 |
+
}
|
| 19 |
+
|
| 20 |
+
body {
|
| 21 |
+
font-family: 'DM Sans', sans-serif;
|
| 22 |
+
background: var(--cream);
|
| 23 |
+
min-height: 100vh;
|
| 24 |
+
display: flex;
|
| 25 |
+
flex-direction: column;
|
| 26 |
+
align-items: center;
|
| 27 |
+
overflow-x: hidden;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
/* Decorative blob background */
|
| 31 |
+
body::before {
|
| 32 |
+
content: '';
|
| 33 |
+
position: fixed;
|
| 34 |
+
top: -120px; right: -120px;
|
| 35 |
+
width: 480px; height: 480px;
|
| 36 |
+
border-radius: 50%;
|
| 37 |
+
background: radial-gradient(circle, var(--peach) 0%, transparent 70%);
|
| 38 |
+
opacity: 0.45;
|
| 39 |
+
pointer-events: none;
|
| 40 |
+
}
|
| 41 |
+
body::after {
|
| 42 |
+
content: '';
|
| 43 |
+
position: fixed;
|
| 44 |
+
bottom: -100px; left: -100px;
|
| 45 |
+
width: 380px; height: 380px;
|
| 46 |
+
border-radius: 50%;
|
| 47 |
+
background: radial-gradient(circle, var(--orange) 0%, transparent 70%);
|
| 48 |
+
opacity: 0.18;
|
| 49 |
+
pointer-events: none;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
header {
|
| 53 |
+
width: 100%;
|
| 54 |
+
padding: 28px 40px 20px;
|
| 55 |
+
display: flex;
|
| 56 |
+
align-items: center;
|
| 57 |
+
gap: 14px;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
.logo-mark {
|
| 61 |
+
width: 44px; height: 44px;
|
| 62 |
+
background: var(--orange);
|
| 63 |
+
border-radius: 12px;
|
| 64 |
+
display: flex; align-items: center; justify-content: center;
|
| 65 |
+
color: #fff;
|
| 66 |
+
font-family: 'Playfair Display', serif;
|
| 67 |
+
font-size: 22px;
|
| 68 |
+
font-weight: 900;
|
| 69 |
+
box-shadow: 0 4px 14px rgba(242,100,25,0.35);
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
.logo-text {
|
| 73 |
+
font-family: 'Playfair Display', serif;
|
| 74 |
+
font-size: 22px;
|
| 75 |
+
font-weight: 700;
|
| 76 |
+
color: var(--deep);
|
| 77 |
+
letter-spacing: 1px;
|
| 78 |
+
}
|
| 79 |
+
.logo-text span { color: var(--orange); }
|
| 80 |
+
|
| 81 |
+
.hero {
|
| 82 |
+
margin-top: 20px;
|
| 83 |
+
text-align: center;
|
| 84 |
+
padding: 0 20px;
|
| 85 |
+
animation: fadeUp 0.7s ease both;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
.badge {
|
| 89 |
+
display: inline-block;
|
| 90 |
+
background: var(--light-orange);
|
| 91 |
+
color: var(--orange);
|
| 92 |
+
font-size: 12px;
|
| 93 |
+
font-weight: 500;
|
| 94 |
+
letter-spacing: 2px;
|
| 95 |
+
text-transform: uppercase;
|
| 96 |
+
padding: 6px 18px;
|
| 97 |
+
border-radius: 100px;
|
| 98 |
+
margin-bottom: 18px;
|
| 99 |
+
border: 1.5px solid var(--peach);
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
h1 {
|
| 103 |
+
font-family: 'Playfair Display', serif;
|
| 104 |
+
font-size: clamp(32px, 6vw, 56px);
|
| 105 |
+
color: var(--deep);
|
| 106 |
+
line-height: 1.15;
|
| 107 |
+
margin-bottom: 14px;
|
| 108 |
+
}
|
| 109 |
+
h1 em { color: var(--orange); font-style: normal; }
|
| 110 |
+
|
| 111 |
+
.sub {
|
| 112 |
+
color: var(--mid);
|
| 113 |
+
font-size: 16px;
|
| 114 |
+
font-weight: 300;
|
| 115 |
+
max-width: 420px;
|
| 116 |
+
margin: 0 auto 10px;
|
| 117 |
+
line-height: 1.7;
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
/* Price pill */
|
| 121 |
+
.price-pill {
|
| 122 |
+
display: inline-flex;
|
| 123 |
+
align-items: center;
|
| 124 |
+
gap: 8px;
|
| 125 |
+
background: var(--orange);
|
| 126 |
+
color: #fff;
|
| 127 |
+
font-size: 15px;
|
| 128 |
+
font-weight: 500;
|
| 129 |
+
padding: 10px 22px;
|
| 130 |
+
border-radius: 100px;
|
| 131 |
+
margin: 16px 0 32px;
|
| 132 |
+
box-shadow: 0 6px 20px rgba(242,100,25,0.3);
|
| 133 |
+
animation: pulse 2.5s ease-in-out infinite;
|
| 134 |
+
}
|
| 135 |
+
.price-pill .rupee { font-size: 20px; font-weight: 700; }
|
| 136 |
+
|
| 137 |
+
@keyframes pulse {
|
| 138 |
+
0%, 100% { box-shadow: 0 6px 20px rgba(242,100,25,0.3); }
|
| 139 |
+
50% { box-shadow: 0 6px 28px rgba(242,100,25,0.55); }
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
/* Features strip */
|
| 143 |
+
.features {
|
| 144 |
+
display: flex;
|
| 145 |
+
gap: 12px;
|
| 146 |
+
justify-content: center;
|
| 147 |
+
flex-wrap: wrap;
|
| 148 |
+
margin-bottom: 40px;
|
| 149 |
+
animation: fadeUp 0.7s 0.2s ease both;
|
| 150 |
+
}
|
| 151 |
+
.feat {
|
| 152 |
+
background: #fff;
|
| 153 |
+
border: 1.5px solid var(--light-orange);
|
| 154 |
+
border-radius: 12px;
|
| 155 |
+
padding: 12px 18px;
|
| 156 |
+
font-size: 13px;
|
| 157 |
+
color: var(--mid);
|
| 158 |
+
display: flex;
|
| 159 |
+
align-items: center;
|
| 160 |
+
gap: 8px;
|
| 161 |
+
font-weight: 500;
|
| 162 |
+
}
|
| 163 |
+
.feat-icon { font-size: 18px; }
|
| 164 |
+
|
| 165 |
+
/* Card */
|
| 166 |
+
.card {
|
| 167 |
+
background: #fff;
|
| 168 |
+
border: 1.5px solid var(--light-orange);
|
| 169 |
+
border-radius: 24px;
|
| 170 |
+
padding: 40px 40px 36px;
|
| 171 |
+
width: min(440px, 92vw);
|
| 172 |
+
box-shadow: 0 12px 48px rgba(242,100,25,0.10);
|
| 173 |
+
animation: fadeUp 0.7s 0.3s ease both;
|
| 174 |
+
margin-bottom: 60px;
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
.card-title {
|
| 178 |
+
font-family: 'Playfair Display', serif;
|
| 179 |
+
font-size: 20px;
|
| 180 |
+
color: var(--deep);
|
| 181 |
+
margin-bottom: 6px;
|
| 182 |
+
}
|
| 183 |
+
.card-sub {
|
| 184 |
+
font-size: 13px;
|
| 185 |
+
color: var(--mid);
|
| 186 |
+
margin-bottom: 28px;
|
| 187 |
+
font-weight: 300;
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
.field { margin-bottom: 20px; }
|
| 191 |
+
label {
|
| 192 |
+
display: block;
|
| 193 |
+
font-size: 12px;
|
| 194 |
+
font-weight: 500;
|
| 195 |
+
letter-spacing: 1px;
|
| 196 |
+
text-transform: uppercase;
|
| 197 |
+
color: var(--mid);
|
| 198 |
+
margin-bottom: 8px;
|
| 199 |
+
}
|
| 200 |
+
input, select {
|
| 201 |
+
width: 100%;
|
| 202 |
+
padding: 13px 16px;
|
| 203 |
+
border: 1.5px solid var(--light-orange);
|
| 204 |
+
border-radius: 12px;
|
| 205 |
+
font-family: 'DM Sans', sans-serif;
|
| 206 |
+
font-size: 15px;
|
| 207 |
+
color: var(--deep);
|
| 208 |
+
background: var(--cream);
|
| 209 |
+
outline: none;
|
| 210 |
+
transition: border 0.2s, box-shadow 0.2s;
|
| 211 |
+
appearance: none;
|
| 212 |
+
}
|
| 213 |
+
input:focus, select:focus {
|
| 214 |
+
border-color: var(--orange);
|
| 215 |
+
box-shadow: 0 0 0 3px rgba(242,100,25,0.12);
|
| 216 |
+
background: #fff;
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
+
.row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
|
| 220 |
+
|
| 221 |
+
.btn {
|
| 222 |
+
width: 100%;
|
| 223 |
+
padding: 15px;
|
| 224 |
+
background: var(--orange);
|
| 225 |
+
color: #fff;
|
| 226 |
+
border: none;
|
| 227 |
+
border-radius: 14px;
|
| 228 |
+
font-family: 'DM Sans', sans-serif;
|
| 229 |
+
font-size: 16px;
|
| 230 |
+
font-weight: 500;
|
| 231 |
+
cursor: pointer;
|
| 232 |
+
margin-top: 8px;
|
| 233 |
+
transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
|
| 234 |
+
box-shadow: 0 6px 20px rgba(242,100,25,0.28);
|
| 235 |
+
display: flex; align-items: center; justify-content: center; gap: 8px;
|
| 236 |
+
}
|
| 237 |
+
.btn:hover { background: #d6540f; transform: translateY(-2px); box-shadow: 0 10px 28px rgba(242,100,25,0.38); }
|
| 238 |
+
.btn:active { transform: translateY(0); }
|
| 239 |
+
|
| 240 |
+
@keyframes fadeUp {
|
| 241 |
+
from { opacity: 0; transform: translateY(24px); }
|
| 242 |
+
to { opacity: 1; transform: translateY(0); }
|
| 243 |
+
}
|
| 244 |
+
</style>
|
| 245 |
+
</head>
|
| 246 |
+
<body>
|
| 247 |
+
|
| 248 |
+
<header>
|
| 249 |
+
<div class="logo-mark">R</div>
|
| 250 |
+
<div class="logo-text">RE<span>COM</span></div>
|
| 251 |
+
</header>
|
| 252 |
+
|
| 253 |
+
<div class="hero">
|
| 254 |
+
<div class="badge">✦ Record Completion Service</div>
|
| 255 |
+
<h1>Your records,<br/><em>completed.</em></h1>
|
| 256 |
+
<p class="sub">We pick up your school records anywhere in Hyderabad, complete them, and drop them back — hassle-free.</p>
|
| 257 |
+
<div class="price-pill">
|
| 258 |
+
<span class="rupee">₹200</span>
|
| 259 |
+
<span>per record · Pick & Drop included · No extra charges</span>
|
| 260 |
+
</div>
|
| 261 |
+
</div>
|
| 262 |
+
|
| 263 |
+
<div class="features">
|
| 264 |
+
<div class="feat"><span class="feat-icon">🛵</span> Free Pick-up & Drop</div>
|
| 265 |
+
<div class="feat"><span class="feat-icon">📍</span> Anywhere in Hyderabad</div>
|
| 266 |
+
<div class="feat"><span class="feat-icon">⚡</span> Fast Turnaround</div>
|
| 267 |
+
</div>
|
| 268 |
+
|
| 269 |
+
<div class="card">
|
| 270 |
+
<div class="card-title">Let's get started</div>
|
| 271 |
+
<div class="card-sub">Enter your basic details to proceed</div>
|
| 272 |
+
|
| 273 |
+
<form id="basicForm">
|
| 274 |
+
<div class="field">
|
| 275 |
+
<label>Full Name</label>
|
| 276 |
+
<input type="text" id="name" placeholder="e.g. Arjun Reddy" required/>
|
| 277 |
+
</div>
|
| 278 |
+
<div class="row">
|
| 279 |
+
<div class="field">
|
| 280 |
+
<label>Class</label>
|
| 281 |
+
<input type="text" id="class" placeholder="e.g. MBBS, 10th" required/>
|
| 282 |
+
</div>
|
| 283 |
+
<div class="field">
|
| 284 |
+
<label>Section</label>
|
| 285 |
+
<input type="text" id="section" placeholder="e.g. A, B" required/>
|
| 286 |
+
</div>
|
| 287 |
+
</div>
|
| 288 |
+
<button type="submit" class="btn">Continue →</button>
|
| 289 |
+
</form>
|
| 290 |
+
</div>
|
| 291 |
+
|
| 292 |
+
<script>
|
| 293 |
+
document.getElementById("basicForm").addEventListener("submit", function(e) {
|
| 294 |
+
e.preventDefault();
|
| 295 |
+
const name = document.getElementById("name").value.trim();
|
| 296 |
+
const cls = document.getElementById("class").value;
|
| 297 |
+
const section = document.getElementById("section").value;
|
| 298 |
+
if (!name || !cls || !section) return;
|
| 299 |
+
window.location.href = `/instructions?name=${encodeURIComponent(name)}&class=${encodeURIComponent(cls)}§ion=${encodeURIComponent(section)}`;
|
| 300 |
+
});
|
| 301 |
+
</script>
|
| 302 |
+
</body>
|
| 303 |
+
</html>
|
templates/instructions.html
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8"/>
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 6 |
+
<title>RECOM — How It Works</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 10 |
+
:root {
|
| 11 |
+
--orange: #F26419; --peach: #F9A87E; --cream: #FFF3EC;
|
| 12 |
+
--deep: #3D1A00; --mid: #7A3B10; --light-orange: #FDDCC4;
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
body {
|
| 16 |
+
font-family: 'DM Sans', sans-serif;
|
| 17 |
+
background: var(--cream);
|
| 18 |
+
min-height: 100vh;
|
| 19 |
+
display: flex; flex-direction: column; align-items: center;
|
| 20 |
+
overflow-x: hidden; padding-bottom: 60px;
|
| 21 |
+
}
|
| 22 |
+
body::before {
|
| 23 |
+
content: ''; position: fixed; top: -100px; right: -100px;
|
| 24 |
+
width: 420px; height: 420px; border-radius: 50%;
|
| 25 |
+
background: radial-gradient(circle, var(--peach) 0%, transparent 70%);
|
| 26 |
+
opacity: 0.4; pointer-events: none;
|
| 27 |
+
}
|
| 28 |
+
body::after {
|
| 29 |
+
content: ''; position: fixed; bottom: -80px; left: -80px;
|
| 30 |
+
width: 320px; height: 320px; border-radius: 50%;
|
| 31 |
+
background: radial-gradient(circle, var(--orange) 0%, transparent 70%);
|
| 32 |
+
opacity: 0.13; pointer-events: none;
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
header {
|
| 36 |
+
width: 100%; padding: 28px 40px 0;
|
| 37 |
+
display: flex; align-items: center; gap: 14px;
|
| 38 |
+
}
|
| 39 |
+
.logo-mark {
|
| 40 |
+
width: 44px; height: 44px; background: var(--orange); border-radius: 12px;
|
| 41 |
+
display: flex; align-items: center; justify-content: center;
|
| 42 |
+
color: #fff; font-family: 'Playfair Display', serif; font-size: 22px; font-weight: 900;
|
| 43 |
+
box-shadow: 0 4px 14px rgba(242,100,25,0.35);
|
| 44 |
+
}
|
| 45 |
+
.logo-text { font-family: 'Playfair Display', serif; font-size: 22px; font-weight: 700; color: var(--deep); letter-spacing: 1px; }
|
| 46 |
+
.logo-text span { color: var(--orange); }
|
| 47 |
+
|
| 48 |
+
/* Steps */
|
| 49 |
+
.steps {
|
| 50 |
+
display: flex; align-items: center; gap: 10px;
|
| 51 |
+
margin: 24px 0 28px; animation: fadeUp 0.5s ease both;
|
| 52 |
+
}
|
| 53 |
+
.step { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; }
|
| 54 |
+
.step-dot {
|
| 55 |
+
width: 26px; height: 26px; border-radius: 50%;
|
| 56 |
+
display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700;
|
| 57 |
+
}
|
| 58 |
+
.step.done .step-dot { background: var(--orange); color: #fff; }
|
| 59 |
+
.step.done .step-label { color: var(--orange); }
|
| 60 |
+
.step.active .step-dot { background: var(--deep); color: #fff; }
|
| 61 |
+
.step.active .step-label { color: var(--deep); }
|
| 62 |
+
.step.inactive .step-dot { background: var(--light-orange); color: var(--mid); }
|
| 63 |
+
.step.inactive .step-label { color: var(--mid); }
|
| 64 |
+
.step-line { width: 30px; height: 2px; background: var(--light-orange); border-radius: 2px; }
|
| 65 |
+
|
| 66 |
+
/* Hero */
|
| 67 |
+
.page-hero {
|
| 68 |
+
text-align: center; padding: 0 20px 28px;
|
| 69 |
+
animation: fadeUp 0.5s 0.1s ease both;
|
| 70 |
+
}
|
| 71 |
+
.badge {
|
| 72 |
+
display: inline-block; background: var(--light-orange); color: var(--orange);
|
| 73 |
+
font-size: 12px; font-weight: 500; letter-spacing: 2px; text-transform: uppercase;
|
| 74 |
+
padding: 6px 18px; border-radius: 100px; margin-bottom: 14px;
|
| 75 |
+
border: 1.5px solid var(--peach);
|
| 76 |
+
}
|
| 77 |
+
.page-hero h2 {
|
| 78 |
+
font-family: 'Playfair Display', serif; font-size: 30px; color: var(--deep); margin-bottom: 8px;
|
| 79 |
+
}
|
| 80 |
+
.page-hero p { font-size: 14px; color: var(--mid); font-weight: 300; }
|
| 81 |
+
|
| 82 |
+
/* Main card */
|
| 83 |
+
.main-card {
|
| 84 |
+
background: #fff; border: 1.5px solid var(--light-orange); border-radius: 24px;
|
| 85 |
+
padding: 36px 36px 32px; width: min(500px, 92vw);
|
| 86 |
+
box-shadow: 0 12px 48px rgba(242,100,25,0.10);
|
| 87 |
+
animation: fadeUp 0.5s 0.2s ease both;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
/* Timeline section */
|
| 91 |
+
.section-label {
|
| 92 |
+
font-size: 11px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase;
|
| 93 |
+
color: var(--orange); margin-bottom: 16px; display: flex; align-items: center; gap: 8px;
|
| 94 |
+
}
|
| 95 |
+
.section-label::after {
|
| 96 |
+
content: ''; flex: 1; height: 1.5px; background: var(--light-orange); border-radius: 2px;
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
.timeline { display: flex; flex-direction: column; gap: 0; margin-bottom: 28px; }
|
| 100 |
+
.tl-item {
|
| 101 |
+
display: flex; gap: 16px; align-items: stretch;
|
| 102 |
+
animation: fadeUp 0.4s ease both;
|
| 103 |
+
}
|
| 104 |
+
.tl-left {
|
| 105 |
+
display: flex; flex-direction: column; align-items: center; width: 36px; flex-shrink: 0;
|
| 106 |
+
}
|
| 107 |
+
.tl-dot {
|
| 108 |
+
width: 36px; height: 36px; border-radius: 50%; background: var(--light-orange);
|
| 109 |
+
display: flex; align-items: center; justify-content: center;
|
| 110 |
+
font-size: 16px; flex-shrink: 0; border: 2px solid var(--peach);
|
| 111 |
+
}
|
| 112 |
+
.tl-line { width: 2px; background: var(--light-orange); flex: 1; min-height: 16px; margin: 4px 0; }
|
| 113 |
+
.tl-item:last-child .tl-line { display: none; }
|
| 114 |
+
.tl-body { padding: 6px 0 20px; flex: 1; }
|
| 115 |
+
.tl-pages {
|
| 116 |
+
display: inline-block; background: var(--orange); color: #fff;
|
| 117 |
+
font-size: 12px; font-weight: 600; padding: 3px 10px; border-radius: 100px;
|
| 118 |
+
margin-bottom: 6px; letter-spacing: 0.5px;
|
| 119 |
+
}
|
| 120 |
+
.tl-days { font-size: 18px; font-weight: 700; color: var(--deep); margin-bottom: 3px; }
|
| 121 |
+
.tl-desc { font-size: 13px; color: var(--mid); font-weight: 300; line-height: 1.5; }
|
| 122 |
+
|
| 123 |
+
/* Rules */
|
| 124 |
+
.rules { display: flex; flex-direction: column; gap: 12px; margin-bottom: 28px; }
|
| 125 |
+
.rule {
|
| 126 |
+
display: flex; gap: 12px; align-items: flex-start;
|
| 127 |
+
padding: 14px 16px; border-radius: 14px;
|
| 128 |
+
border: 1.5px solid var(--light-orange); background: var(--cream);
|
| 129 |
+
font-size: 14px; color: var(--mid); line-height: 1.6;
|
| 130 |
+
animation: fadeUp 0.4s ease both;
|
| 131 |
+
}
|
| 132 |
+
.rule-icon { font-size: 18px; flex-shrink: 0; margin-top: 1px; }
|
| 133 |
+
.rule strong { color: var(--deep); font-weight: 600; }
|
| 134 |
+
|
| 135 |
+
/* Payment warning */
|
| 136 |
+
.payment-box {
|
| 137 |
+
background: linear-gradient(135deg, var(--orange) 0%, #e0520d 100%);
|
| 138 |
+
border-radius: 18px; padding: 22px 24px; margin-bottom: 28px; color: #fff;
|
| 139 |
+
animation: fadeUp 0.4s ease both;
|
| 140 |
+
}
|
| 141 |
+
.payment-box .pay-icon { font-size: 28px; margin-bottom: 10px; }
|
| 142 |
+
.payment-box h3 {
|
| 143 |
+
font-family: 'Playfair Display', serif; font-size: 18px;
|
| 144 |
+
margin-bottom: 8px; letter-spacing: 0.3px;
|
| 145 |
+
}
|
| 146 |
+
.payment-box p { font-size: 13px; opacity: 0.92; line-height: 1.65; font-weight: 300; }
|
| 147 |
+
|
| 148 |
+
/* Mistake policy */
|
| 149 |
+
.policy-box {
|
| 150 |
+
background: var(--light-orange); border: 1.5px solid var(--peach);
|
| 151 |
+
border-radius: 14px; padding: 16px 18px; margin-bottom: 28px;
|
| 152 |
+
font-size: 14px; color: var(--mid); line-height: 1.65;
|
| 153 |
+
animation: fadeUp 0.4s ease both;
|
| 154 |
+
}
|
| 155 |
+
.policy-box strong { color: var(--deep); }
|
| 156 |
+
|
| 157 |
+
/* Contact / WhatsApp block */
|
| 158 |
+
.contact-block {
|
| 159 |
+
background: #fff; border: 2px solid var(--orange); border-radius: 18px;
|
| 160 |
+
padding: 22px 24px; text-align: center; margin-bottom: 28px;
|
| 161 |
+
animation: fadeUp 0.4s ease both;
|
| 162 |
+
box-shadow: 0 6px 24px rgba(242,100,25,0.12);
|
| 163 |
+
}
|
| 164 |
+
.contact-block .ct-label {
|
| 165 |
+
font-size: 12px; letter-spacing: 2px; text-transform: uppercase;
|
| 166 |
+
color: var(--mid); font-weight: 600; margin-bottom: 10px;
|
| 167 |
+
}
|
| 168 |
+
.contact-block .ct-sub {
|
| 169 |
+
font-size: 13px; color: var(--mid); font-weight: 300; margin-bottom: 16px; line-height: 1.6;
|
| 170 |
+
}
|
| 171 |
+
.wa-btn {
|
| 172 |
+
display: inline-flex; align-items: center; gap: 10px;
|
| 173 |
+
background: #25D366; color: #fff; text-decoration: none;
|
| 174 |
+
padding: 13px 28px; border-radius: 14px; font-size: 16px; font-weight: 600;
|
| 175 |
+
box-shadow: 0 6px 20px rgba(37,211,102,0.3);
|
| 176 |
+
transition: background 0.2s, transform 0.15s;
|
| 177 |
+
margin-bottom: 10px;
|
| 178 |
+
}
|
| 179 |
+
.wa-btn:hover { background: #1ebe5d; transform: translateY(-2px); }
|
| 180 |
+
.wa-number { font-size: 18px; font-weight: 700; color: var(--deep); margin-top: 10px; letter-spacing: 1px; }
|
| 181 |
+
.wa-note { font-size: 12px; color: var(--mid); margin-top: 6px; font-weight: 300; }
|
| 182 |
+
|
| 183 |
+
/* Footer note */
|
| 184 |
+
.footer-note {
|
| 185 |
+
text-align: center; font-size: 13px; color: var(--mid);
|
| 186 |
+
font-weight: 300; margin-bottom: 28px; line-height: 1.7;
|
| 187 |
+
}
|
| 188 |
+
.footer-note strong { color: var(--deep); }
|
| 189 |
+
|
| 190 |
+
/* CTA */
|
| 191 |
+
.btn {
|
| 192 |
+
width: 100%; padding: 15px; background: var(--orange); color: #fff;
|
| 193 |
+
border: none; border-radius: 14px; font-family: 'DM Sans', sans-serif;
|
| 194 |
+
font-size: 16px; font-weight: 500; cursor: pointer;
|
| 195 |
+
transition: background 0.2s, transform 0.15s, box-shadow 0.2s;
|
| 196 |
+
box-shadow: 0 6px 20px rgba(242,100,25,0.28);
|
| 197 |
+
display: flex; align-items: center; justify-content: center; gap: 8px;
|
| 198 |
+
}
|
| 199 |
+
.btn:hover { background: #d6540f; transform: translateY(-2px); box-shadow: 0 10px 28px rgba(242,100,25,0.38); }
|
| 200 |
+
|
| 201 |
+
@keyframes fadeUp {
|
| 202 |
+
from { opacity: 0; transform: translateY(18px); }
|
| 203 |
+
to { opacity: 1; transform: translateY(0); }
|
| 204 |
+
}
|
| 205 |
+
</style>
|
| 206 |
+
</head>
|
| 207 |
+
<body>
|
| 208 |
+
|
| 209 |
+
<header>
|
| 210 |
+
<div class="logo-mark">R</div>
|
| 211 |
+
<div class="logo-text">RE<span>COM</span></div>
|
| 212 |
+
</header>
|
| 213 |
+
|
| 214 |
+
<div class="steps">
|
| 215 |
+
<div class="step done"><div class="step-dot">✓</div><div class="step-label">Basic Info</div></div>
|
| 216 |
+
<div class="step-line"></div>
|
| 217 |
+
<div class="step active"><div class="step-dot">2</div><div class="step-label">How It Works</div></div>
|
| 218 |
+
<div class="step-line"></div>
|
| 219 |
+
<div class="step inactive"><div class="step-dot">3</div><div class="step-label">Contact</div></div>
|
| 220 |
+
<div class="step-line"></div>
|
| 221 |
+
<div class="step inactive"><div class="step-dot">4</div><div class="step-label">Done</div></div>
|
| 222 |
+
</div>
|
| 223 |
+
|
| 224 |
+
<div class="page-hero">
|
| 225 |
+
<div class="badge">✦ Please Read Carefully</div>
|
| 226 |
+
<h2>Before You Submit</h2>
|
| 227 |
+
<p>Here's everything you need to know about our service.</p>
|
| 228 |
+
</div>
|
| 229 |
+
|
| 230 |
+
<div class="main-card">
|
| 231 |
+
|
| 232 |
+
<!-- Timeline -->
|
| 233 |
+
<div class="section-label">⏱ Completion Timeline</div>
|
| 234 |
+
<div class="timeline">
|
| 235 |
+
<div class="tl-item" style="animation-delay:0.1s">
|
| 236 |
+
<div class="tl-left"><div class="tl-dot">📄</div><div class="tl-line"></div></div>
|
| 237 |
+
<div class="tl-body">
|
| 238 |
+
<div class="tl-pages">Up to 30 pages</div>
|
| 239 |
+
<div class="tl-days">1 Day</div>
|
| 240 |
+
<div class="tl-desc">Quick turnaround for shorter records.</div>
|
| 241 |
+
</div>
|
| 242 |
+
</div>
|
| 243 |
+
<div class="tl-item" style="animation-delay:0.2s">
|
| 244 |
+
<div class="tl-left"><div class="tl-dot">📋</div><div class="tl-line"></div></div>
|
| 245 |
+
<div class="tl-body">
|
| 246 |
+
<div class="tl-pages">Up to 50 pages</div>
|
| 247 |
+
<div class="tl-days">2 Days</div>
|
| 248 |
+
<div class="tl-desc">Medium-length records completed in 2 days.</div>
|
| 249 |
+
</div>
|
| 250 |
+
</div>
|
| 251 |
+
<div class="tl-item" style="animation-delay:0.3s">
|
| 252 |
+
<div class="tl-left"><div class="tl-dot">📚</div></div>
|
| 253 |
+
<div class="tl-body">
|
| 254 |
+
<div class="tl-pages">50+ pages</div>
|
| 255 |
+
<div class="tl-days">3 – 7 Days</div>
|
| 256 |
+
<div class="tl-desc">Exact duration depends on the total page count. You'll be informed on submission day.</div>
|
| 257 |
+
</div>
|
| 258 |
+
</div>
|
| 259 |
+
</div>
|
| 260 |
+
|
| 261 |
+
<!-- Rules -->
|
| 262 |
+
<div class="section-label">📌 Important Rules</div>
|
| 263 |
+
<div class="rules">
|
| 264 |
+
<div class="rule" style="animation-delay:0.1s">
|
| 265 |
+
<span class="rule-icon">📎</span>
|
| 266 |
+
<div>The <strong>PDF file shared to our number will be written as-is.</strong> Nothing extra will be added, and nothing will be removed or cut off.</div>
|
| 267 |
+
</div>
|
| 268 |
+
<div class="rule" style="animation-delay:0.15s">
|
| 269 |
+
<span class="rule-icon">🖊️</span>
|
| 270 |
+
<div>If your record contains <strong>complex diagrams or drawings</strong>, an additional <strong>₹50 will be charged</strong> on top of the base price.</div>
|
| 271 |
+
</div>
|
| 272 |
+
<div class="rule" style="animation-delay:0.2s">
|
| 273 |
+
<span class="rule-icon">📅</span>
|
| 274 |
+
<div>The <strong>exact submission date</strong> will be announced to you at the time of record pick-up itself.</div>
|
| 275 |
+
</div>
|
| 276 |
+
</div>
|
| 277 |
+
|
| 278 |
+
<!-- Payment warning -->
|
| 279 |
+
<div class="payment-box" style="animation-delay:0.25s">
|
| 280 |
+
<div class="pay-icon">💳</div>
|
| 281 |
+
<h3>Payment Before Submission</h3>
|
| 282 |
+
<p>The payment must be completed <strong>before handing over your record.</strong> We do not accept post-completion payments. This ensures a smooth, problem-free process for both parties. Please pay first, then give your record for writing.</p>
|
| 283 |
+
</div>
|
| 284 |
+
|
| 285 |
+
<!-- Mistake policy -->
|
| 286 |
+
<div class="policy-box" style="animation-delay:0.3s">
|
| 287 |
+
<strong>🔍 Mistake Policy</strong><br/>
|
| 288 |
+
If you feel there was a mistake from our side, let us know. We'll review it carefully — and if we find there is actually a mistake, we'll correct it without any problem, free of charge.
|
| 289 |
+
</div>
|
| 290 |
+
|
| 291 |
+
<!-- Contact / WhatsApp -->
|
| 292 |
+
<div class="section-label">📞 Contact & Orders</div>
|
| 293 |
+
<div class="contact-block" style="animation-delay:0.35s">
|
| 294 |
+
<div class="ct-label">Available Anytime</div>
|
| 295 |
+
<div class="ct-sub">All orders must be placed to this number only.<br/>Send your PDF and confirm your pick-up here.</div>
|
| 296 |
+
<a href="https://wa.me/91XXXXXXXXXX" class="wa-btn" id="waLink">
|
| 297 |
+
<span>💬</span> Order on WhatsApp
|
| 298 |
+
</a>
|
| 299 |
+
<div class="wa-number" id="waNumber">+91 XXXXX XXXXX</div>
|
| 300 |
+
<div class="wa-note">Number will be updated shortly</div>
|
| 301 |
+
</div>
|
| 302 |
+
|
| 303 |
+
<div class="footer-note">
|
| 304 |
+
Thank you for choosing <strong>RECOM</strong>.<br/>Have a great day! 😊
|
| 305 |
+
</div>
|
| 306 |
+
|
| 307 |
+
<!-- CTA to next step -->
|
| 308 |
+
<button class="btn" onclick="goContact()">Proceed to Book →</button>
|
| 309 |
+
|
| 310 |
+
</div>
|
| 311 |
+
|
| 312 |
+
<script>
|
| 313 |
+
// Pass name/class/section through to next page
|
| 314 |
+
const params = new URLSearchParams(window.location.search);
|
| 315 |
+
function goContact() {
|
| 316 |
+
window.location.href = `/contact?${params.toString()}`;
|
| 317 |
+
}
|
| 318 |
+
</script>
|
| 319 |
+
</body>
|
| 320 |
+
</html>
|
templates/success.html
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8"/>
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
| 6 |
+
<title>RECOM — Booking Confirmed!</title>
|
| 7 |
+
<link href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=DM+Sans:wght@300;400;500&display=swap" rel="stylesheet"/>
|
| 8 |
+
<style>
|
| 9 |
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
| 10 |
+
:root { --orange: #F26419; --peach: #F9A87E; --cream: #FFF3EC; --deep: #3D1A00; --mid: #7A3B10; --light-orange: #FDDCC4; }
|
| 11 |
+
body {
|
| 12 |
+
font-family: 'DM Sans', sans-serif; background: var(--cream);
|
| 13 |
+
min-height: 100vh; display: flex; flex-direction: column;
|
| 14 |
+
align-items: center; justify-content: center; overflow-x: hidden; padding: 40px 20px;
|
| 15 |
+
}
|
| 16 |
+
body::before {
|
| 17 |
+
content: ''; position: fixed; top: -100px; right: -100px;
|
| 18 |
+
width: 400px; height: 400px; border-radius: 50%;
|
| 19 |
+
background: radial-gradient(circle, var(--peach) 0%, transparent 70%);
|
| 20 |
+
opacity: 0.45; pointer-events: none;
|
| 21 |
+
}
|
| 22 |
+
.icon-wrap {
|
| 23 |
+
width: 90px; height: 90px; background: var(--orange); border-radius: 50%;
|
| 24 |
+
display: flex; align-items: center; justify-content: center;
|
| 25 |
+
font-size: 40px; margin-bottom: 24px;
|
| 26 |
+
box-shadow: 0 12px 36px rgba(242,100,25,0.35);
|
| 27 |
+
animation: pop 0.5s cubic-bezier(0.34,1.56,0.64,1) both;
|
| 28 |
+
}
|
| 29 |
+
@keyframes pop {
|
| 30 |
+
from { transform: scale(0); opacity: 0; }
|
| 31 |
+
to { transform: scale(1); opacity: 1; }
|
| 32 |
+
}
|
| 33 |
+
h2 {
|
| 34 |
+
font-family: 'Playfair Display', serif; font-size: 34px;
|
| 35 |
+
color: var(--deep); margin-bottom: 12px; text-align: center;
|
| 36 |
+
animation: fadeUp 0.5s 0.3s ease both;
|
| 37 |
+
}
|
| 38 |
+
p {
|
| 39 |
+
font-size: 15px; color: var(--mid); font-weight: 300;
|
| 40 |
+
max-width: 340px; text-align: center; line-height: 1.7;
|
| 41 |
+
margin-bottom: 8px; animation: fadeUp 0.5s 0.4s ease both;
|
| 42 |
+
}
|
| 43 |
+
.price-note {
|
| 44 |
+
display: inline-flex; align-items: center; gap: 8px;
|
| 45 |
+
background: var(--orange); color: #fff;
|
| 46 |
+
padding: 10px 24px; border-radius: 100px; font-size: 15px;
|
| 47 |
+
margin: 20px 0; font-weight: 500; animation: fadeUp 0.5s 0.5s ease both;
|
| 48 |
+
box-shadow: 0 6px 20px rgba(242,100,25,0.28);
|
| 49 |
+
}
|
| 50 |
+
.steps-done {
|
| 51 |
+
display: flex; flex-direction: column; gap: 10px;
|
| 52 |
+
background: #fff; border: 1.5px solid var(--light-orange);
|
| 53 |
+
border-radius: 18px; padding: 24px 28px; margin: 20px 0;
|
| 54 |
+
width: min(360px, 90vw); animation: fadeUp 0.5s 0.6s ease both;
|
| 55 |
+
}
|
| 56 |
+
.step-row { display: flex; align-items: center; gap: 12px; font-size: 14px; color: var(--mid); }
|
| 57 |
+
.step-row .dot { width: 28px; height: 28px; background: var(--light-orange); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
|
| 58 |
+
a.back {
|
| 59 |
+
font-size: 14px; color: var(--orange); text-decoration: none;
|
| 60 |
+
font-weight: 500; margin-top: 10px; animation: fadeUp 0.5s 0.7s ease both;
|
| 61 |
+
}
|
| 62 |
+
a.back:hover { text-decoration: underline; }
|
| 63 |
+
@keyframes fadeUp {
|
| 64 |
+
from { opacity: 0; transform: translateY(16px); }
|
| 65 |
+
to { opacity: 1; transform: translateY(0); }
|
| 66 |
+
}
|
| 67 |
+
</style>
|
| 68 |
+
</head>
|
| 69 |
+
<body>
|
| 70 |
+
<div class="icon-wrap">🎉</div>
|
| 71 |
+
<h2>Booking Confirmed!</h2>
|
| 72 |
+
<p>We've received your details. Our team will reach out to you shortly to arrange pick-up.</p>
|
| 73 |
+
|
| 74 |
+
<div class="price-note">₹200 total · No hidden charges</div>
|
| 75 |
+
|
| 76 |
+
<div class="steps-done">
|
| 77 |
+
<div class="step-row"><div class="dot">📋</div> We'll call/WhatsApp you to confirm</div>
|
| 78 |
+
<div class="step-row"><div class="dot">🛵</div> Record picked up from your address</div>
|
| 79 |
+
<div class="step-row"><div class="dot">✏️</div> Record completed by our team</div>
|
| 80 |
+
<div class="step-row"><div class="dot">🏠</div> Dropped back at your doorstep</div>
|
| 81 |
+
</div>
|
| 82 |
+
|
| 83 |
+
<a href="/" class="back">← Submit another record</a>
|
| 84 |
+
</body>
|
| 85 |
+
</html>
|