.twb-bulk-form-wrapper * {
margin: 0;
padding: 0;
box-sizing: border-box;
}.twb-bulk-form-wrapper {
font-family: inherit;
max-width: 520px;
margin: 0 auto;
}.twb-bulk-form-box {
background: #ffffff;
border: 1px solid #e8e0d4;
border-radius: 14px;
padding: 36px 30px 32px;
position: relative;
overflow: hidden;
}.twb-bulk-form-header {
text-align: center;
margin-bottom: 26px;
}.twb-bulk-form-header h3 {
font-weight: 700;
font-size: 21px;
color: #2c2017;
margin-bottom: 5px;
}.twb-bulk-form-header p {
font-size: 13px;
color: #9a8d7f;
}.twb-bulk-field {
margin-bottom: 16px;
}.twb-bulk-field label {
display: block;
font-size: 12px;
font-weight: 600;
color: #6b5d4f;
margin-bottom: 5px;
text-transform: uppercase;
letter-spacing: 0.8px;
}.twb-bulk-field input {
width: 100%;
padding: 12px 14px;
background: #faf8f5;
border: 1px solid #ddd5ca;
border-radius: 8px;
color: #2c2017;
font-family: inherit;
font-size: 14px;
transition: border-color 0.2s, box-shadow 0.2s;
outline: none;
-webkit-appearance: none;
}.twb-bulk-field input::placeholder {
color: #bfb5a7;
}.twb-bulk-field input:focus {
border-color: #c19153;
box-shadow: 0 0 0 3px rgba(193, 145, 83, 0.1);
}.twb-bulk-submit-btn {
width: 100%;
padding: 14px;
background: #c19153;
border: none;
border-radius: 8px;
color: #fff;
font-family: inherit;
font-size: 15px;
font-weight: 700;
letter-spacing: 0.5px;
cursor: pointer;
transition: background 0.2s, transform 0.15s;
margin-top: 4px;
}.twb-bulk-submit-btn:hover { background: #a87b44; transform: translateY(-1px); }
.twb-bulk-submit-btn:active { transform: translateY(0); }
.twb-bulk-submit-btn:disabled { opacity: 0.55; cursor: not-allowed; transform: none; }.twb-bulk-field-error input {
border-color: #d9534f !important;
background: #fef7f7 !important;
}.twb-bulk-error-msg {
font-size: 11px;
color: #d9534f;
margin-top: 4px;
display: none;
}.twb-bulk-field-error .twb-bulk-error-msg { display: block; }.twb-bulk-success {
text-align: center;
padding: 44px 24px;
display: none;
}.twb-bulk-success-icon {
width: 64px;
height: 64px;
border-radius: 50%;
background: #c19153;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 18px;
animation: twb-bulk-pop 0.45s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}.twb-bulk-success-icon svg { width: 32px; height: 32px; }@keyframes twb-bulk-pop {
0% { transform: scale(0); opacity: 0; }
100% { transform: scale(1); opacity: 1; }
}.twb-bulk-success h3 {
font-weight: 700;
font-size: 22px;
color: #2c2017;
margin-bottom: 10px;
}.twb-bulk-success p {
font-size: 14px;
color: #7a6e60;
line-height: 1.7;
max-width: 360px;
margin: 0 auto;
}@media (max-width: 480px) {
.twb-bulk-form-box { padding: 28px 18px 24px; }
}
(function() {
// ── WordPress REST endpoint — change only if your site URL changes ──
var PHP_RELAY_URL = 'https://www.theweddingbiryani.com/wp-json/twb/v1/submit';var form = document.getElementById('twbBulkForm');
var formView = document.getElementById('twbBulkFormView');
var successView = document.getElementById('twbBulkSuccess');
var userName = document.getElementById('twbBulkUserName');// ── Phone: digits only, max 10 ──
document.getElementById('twb-blk-phone').addEventListener('input', function() {
this.value = this.value.replace(/\D/g, '').slice(0, 10);
});// ── Name: letters, spaces, dots only ──
document.getElementById('twb-blk-name').addEventListener('input', function() {
this.value = this.value.replace(/[^a-zA-Z\s.]/g, '');
});// ── Disposable email domains ──
var blockedDomains = [
'mailinator.com','guerrillamail.com','tempmail.com','throwaway.email',
'yopmail.com','sharklasers.com','dispostable.com','trashmail.com',
'fakeinbox.com','10minutemail.com','getnada.com','maildrop.cc'
];var validTLDs = [
'com','in','co.in','org','net','edu','gov','io','co','info','biz',
'me','us','uk','co.uk','ca','au','com.au','de','fr','ae','sg',
'tech','dev','app','ai','xyz','online','store','shop','site','live',
'ac.in','edu.in','org.in','net.in'
];function isValidEmail(email) {
if (!/^[a-zA-Z0-9](?:[a-zA-Z0-9._+-]*[a-zA-Z0-9])?@[a-zA-Z0-9](?:[a-zA-Z0-9.-]*[a-zA-Z0-9])?\.[a-zA-Z]{2,}$/.test(email)) return false;
if (/\.{2,}/.test(email)) return false;
var domain = email.split('@')[1].toLowerCase();
if (blockedDomains.indexOf(domain) !== -1) return false;
var parts = domain.split('.');
var tld2 = parts.slice(-2).join('.');
var tld1 = parts[parts.length - 1];
return validTLDs.indexOf(tld2) !== -1 || validTLDs.indexOf(tld1) !== -1;
}function isValidPhone(phone) {
if (!/^[6-9]\d{9}$/.test(phone)) return false;
if (/^(\d)\1{9}$/.test(phone)) return false;
if (/^(0123456789|1234567890|9876543210)$/.test(phone)) return false;
return true;
}function setError(field, msg) {
var parent = field.closest('.twb-bulk-field');
var errEl = parent.querySelector('.twb-bulk-error-msg');
if (msg) {
parent.classList.add('twb-bulk-field-error');
if (errEl) errEl.textContent = msg;
return false;
} else {
parent.classList.remove('twb-bulk-field-error');
return true;
}
}function validateField(field) {
var val = (field.value || '').trim();if (field.hasAttribute('required') && !val) return setError(field, 'This field is required');
if (!val) return setError(field, null);if (field.name === 'name') {
if (val.length 60) return setError(field, 'Name is too long');
if (!/[a-zA-Z]{2,}/.test(val)) return setError(field, 'Please enter a valid name');
}if (field.type === 'tel') {
if (val.length < 10) return setError(field, 'Enter all 10 digits');
if (!/^[6-9]/.test(val)) return setError(field, 'Indian numbers start with 6, 7, 8 or 9');
if (!isValidPhone(val)) return setError(field, 'This doesn\'t look like a real number');
}if (field.type === 'email') {
if (!isValidEmail(val)) {
var domain = val.split('@')[1] || '';
if (blockedDomains.indexOf(domain.toLowerCase()) !== -1)
return setError(field, 'Please use a real email, not a temporary one');
return setError(field, 'Enter a valid email address');
}
}return setError(field, null);
}form.querySelectorAll('input').forEach(function(el) {
el.addEventListener('blur', function() { validateField(this); });
});var formLoadTime = Date.now();form.addEventListener('submit', function(e) {
e.preventDefault();if (Date.now() - formLoadTime < 2500) return;var allValid = true;
form.querySelectorAll('[required]').forEach(function(field) {
if (!validateField(field)) allValid = false;
});if (!allValid) {
var firstErr = form.querySelector('.twb-bulk-field-error');
if (firstErr) firstErr.scrollIntoView({ behavior: 'smooth', block: 'center' });
return;
}var data = {
formName: 'Bulk Order Form',
name: form.name.value.trim(),
phone: form.phone.value.trim(),
email: form.email.value.trim()
};// Show success immediately — backend runs in background
userName.textContent = data.name.split(' ')[0];
formView.style.display = 'none';
successView.style.display = 'block';// Fire and forget
fetch(PHP_RELAY_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
}).catch(function() {});
});
})();