Initial AI-generated site
This commit is contained in:
+95
@@ -0,0 +1,95 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="he" dir="rtl">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>עמוד תשלום | Emaillion</title>
|
||||||
|
<meta name="description" content="עמוד תשלום מאובטח לרכישת אתר מבית Emaillion">
|
||||||
|
<meta property="og:title" content="עמוד תשלום | Emaillion">
|
||||||
|
<meta property="og:description" content="רכישת אתר מקצועי מבית Emaillion - תשלום מאובטח">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><defs><linearGradient id='g' x1='0%25' y1='0%25' x2='100%25' y2='100%25'><stop offset='0%25' stop-color='%235B4CE0'/><stop offset='100%25' stop-color='%237C3AED'/></linearGradient></defs><circle cx='50' cy='50' r='45' fill='url(%23g)'/><text x='50' y='68' font-family='Arial' font-size='50' font-weight='600' fill='white' text-anchor='middle'>E</text></svg>">
|
||||||
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
|
<link href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;500;600&display=swap" rel="stylesheet">
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="page-wrapper">
|
||||||
|
<header class="header">
|
||||||
|
<div class="logo">
|
||||||
|
<svg class="logo-icon" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="logoGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||||
|
<stop offset="0%" stop-color="#5B4CE0"/>
|
||||||
|
<stop offset="100%" stop-color="#7C3AED"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<circle cx="20" cy="20" r="18" fill="url(#logoGrad)"/>
|
||||||
|
<text x="20" y="27" font-family="Arial, sans-serif" font-size="20" font-weight="600" fill="white" text-anchor="middle">E</text>
|
||||||
|
</svg>
|
||||||
|
<span class="logo-text" lang="en">Emaillion</span>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="main">
|
||||||
|
<div class="checkout-card" id="checkoutCard">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="business-badge">
|
||||||
|
<svg class="badge-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||||
|
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
|
||||||
|
<polyline points="9,22 9,12 15,12 15,22"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h1 class="business-title" id="businessTitle">רכישת אתר</h1>
|
||||||
|
<p class="business-subtitle" id="businessSubtitle"></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="plan-section" id="planSection">
|
||||||
|
<div class="plan-badge" id="planBadge"></div>
|
||||||
|
<div class="plan-details">
|
||||||
|
<h2 class="plan-title" id="planTitle"></h2>
|
||||||
|
<div class="plan-price" id="planPrice"></div>
|
||||||
|
</div>
|
||||||
|
<ul class="plan-features" id="planFeatures"></ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="iframe-container" id="iframeContainer">
|
||||||
|
<div class="iframe-loading" id="iframeLoading" role="status" aria-live="polite">
|
||||||
|
<div class="spinner" aria-hidden="true"></div>
|
||||||
|
<span>טוען טופס תשלום...</span>
|
||||||
|
</div>
|
||||||
|
<iframe
|
||||||
|
id="paymentFrame"
|
||||||
|
title="טופס תשלום מאובטח SmartPay"
|
||||||
|
allow="payment"
|
||||||
|
></iframe>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="error-state" id="errorState" style="display: none;">
|
||||||
|
<svg class="error-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
||||||
|
<circle cx="12" cy="12" r="10"/>
|
||||||
|
<line x1="12" y1="8" x2="12" y2="12"/>
|
||||||
|
<circle cx="12" cy="16" r="0.5" fill="currentColor"/>
|
||||||
|
</svg>
|
||||||
|
<h2 class="error-title">קישור לא תקין</h2>
|
||||||
|
<p class="error-message">יש לחזור לדף העסק ולבחור חבילה מחדש</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<footer class="footer">
|
||||||
|
<div class="security-badge">
|
||||||
|
<svg class="lock-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||||
|
<rect x="3" y="11" width="18" height="11" rx="2" ry="2"/>
|
||||||
|
<path d="M7 11V7a5 5 0 0 1 10 0v4"/>
|
||||||
|
</svg>
|
||||||
|
<span>תשלום מאובטח דרך <span lang="en">SmartPay</span></span>
|
||||||
|
</div>
|
||||||
|
<div class="footer-brand"><span lang="en">Emaillion Ltd</span> © 2025</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="script.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,265 @@
|
|||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Business configuration with SmartPay iframe URLs
|
||||||
|
var BUSINESSES = {
|
||||||
|
sarit: {
|
||||||
|
name: 'שרית הספרית',
|
||||||
|
lang: 'he',
|
||||||
|
plans: {
|
||||||
|
code: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/af5cb955-8620-57fa-3b5a-61916e5f',
|
||||||
|
price: '₪1,490',
|
||||||
|
title: 'קוד האתר בלבד',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'עיצוב מותאם אישית',
|
||||||
|
'תמיכה טכנית בהעלאת האתר'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
full: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/5ca5e359-9fc8-504b-ce08-6181d906',
|
||||||
|
price: '₪2,390',
|
||||||
|
title: 'חבילה מלאה',
|
||||||
|
badge: 'החבילה המומלצת',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'אחסון לשנה',
|
||||||
|
'דומיין בהתאמה אישית',
|
||||||
|
'תיבת מייל עסקית'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
kobi: {
|
||||||
|
name: 'מספרת קובי שריקי',
|
||||||
|
lang: 'he',
|
||||||
|
plans: {
|
||||||
|
code: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/0472462e-8673-5f88-5329-5c54164c',
|
||||||
|
price: '₪1,490',
|
||||||
|
title: 'קוד האתר בלבד',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'עיצוב מותאם אישית',
|
||||||
|
'תמיכה טכנית בהעלאת האתר'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
full: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/188c95d1-e760-5640-f05a-562be8fc',
|
||||||
|
price: '₪2,390',
|
||||||
|
title: 'חבילה מלאה',
|
||||||
|
badge: 'החבילה המומלצת',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'אחסון לשנה',
|
||||||
|
'דומיין בהתאמה אישית',
|
||||||
|
'תיבת מייל עסקית'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
orly: {
|
||||||
|
name: 'אורלי חן עיצוב שיער',
|
||||||
|
lang: 'he',
|
||||||
|
plans: {
|
||||||
|
code: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/08825e84-c73d-5737-c77e-950be56e',
|
||||||
|
price: '₪1,490',
|
||||||
|
title: 'קוד האתר בלבד',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'עיצוב מותאם אישית',
|
||||||
|
'תמיכה טכנית בהעלאת האתר'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
full: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/56604ea6-6729-51f8-f421-9c3e88c1',
|
||||||
|
price: '₪2,390',
|
||||||
|
title: 'חבילה מלאה',
|
||||||
|
badge: 'החבילה המומלצת',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'אחסון לשנה',
|
||||||
|
'דומיין בהתאמה אישית',
|
||||||
|
'תיבת מייל עסקית'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hairontop: {
|
||||||
|
name: 'Hair On Top',
|
||||||
|
lang: 'en',
|
||||||
|
plans: {
|
||||||
|
code: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/eb9b2b7a-95f9-5e1c-917c-513bfd99',
|
||||||
|
price: '₪1,490',
|
||||||
|
title: 'קוד האתר בלבד',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'עיצוב מותאם אישית',
|
||||||
|
'תמיכה טכנית בהעלאת האתר'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
full: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/ec156279-f214-516e-fe3d-6d462a65',
|
||||||
|
price: '₪2,390',
|
||||||
|
title: 'חבילה מלאה',
|
||||||
|
badge: 'החבילה המומלצת',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'אחסון לשנה',
|
||||||
|
'דומיין בהתאמה אישית',
|
||||||
|
'תיבת מייל עסקית'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
itzik: {
|
||||||
|
name: 'איציק בכר - אינסטלטור',
|
||||||
|
lang: 'he',
|
||||||
|
plans: {
|
||||||
|
code: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/08e71a36-b51a-592f-7b9e-d2ef0668',
|
||||||
|
price: '₪1,490',
|
||||||
|
title: 'קוד האתר בלבד',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'עיצוב מותאם אישית',
|
||||||
|
'תמיכה טכנית בהעלאת האתר'
|
||||||
|
]
|
||||||
|
},
|
||||||
|
full: {
|
||||||
|
url: 'https://pay.smartpay.co.il/v1/iframe/049867df-8717-5a0b-ca2c-5ae47d74',
|
||||||
|
price: '₪2,390',
|
||||||
|
title: 'חבילה מלאה',
|
||||||
|
badge: 'החבילה המומלצת',
|
||||||
|
features: [
|
||||||
|
'קוד מקור מלא של האתר',
|
||||||
|
'אחסון לשנה',
|
||||||
|
'דומיין בהתאמה אישית',
|
||||||
|
'תיבת מייל עסקית'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// DOM elements
|
||||||
|
var elements = {
|
||||||
|
businessTitle: document.getElementById('businessTitle'),
|
||||||
|
businessSubtitle: document.getElementById('businessSubtitle'),
|
||||||
|
planSection: document.getElementById('planSection'),
|
||||||
|
planBadge: document.getElementById('planBadge'),
|
||||||
|
planTitle: document.getElementById('planTitle'),
|
||||||
|
planPrice: document.getElementById('planPrice'),
|
||||||
|
planFeatures: document.getElementById('planFeatures'),
|
||||||
|
iframeContainer: document.getElementById('iframeContainer'),
|
||||||
|
iframeLoading: document.getElementById('iframeLoading'),
|
||||||
|
paymentFrame: document.getElementById('paymentFrame'),
|
||||||
|
errorState: document.getElementById('errorState')
|
||||||
|
};
|
||||||
|
|
||||||
|
// Parse URL parameters
|
||||||
|
function getUrlParams() {
|
||||||
|
var params = new URLSearchParams(window.location.search);
|
||||||
|
return {
|
||||||
|
biz: params.get('biz'),
|
||||||
|
plan: params.get('plan')
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate parameters
|
||||||
|
function validateParams(biz, plan) {
|
||||||
|
if (!biz || !plan) return false;
|
||||||
|
if (!BUSINESSES[biz]) return false;
|
||||||
|
if (!BUSINESSES[biz].plans[plan]) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show error state
|
||||||
|
function showError() {
|
||||||
|
elements.planSection.style.display = 'none';
|
||||||
|
elements.iframeContainer.style.display = 'none';
|
||||||
|
elements.errorState.style.display = 'block';
|
||||||
|
elements.businessTitle.textContent = 'שגיאה';
|
||||||
|
elements.businessSubtitle.textContent = '';
|
||||||
|
|
||||||
|
document.title = 'שגיאה | Emaillion';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Escape HTML to prevent XSS
|
||||||
|
function escapeHtml(text) {
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.textContent = text;
|
||||||
|
return div.innerHTML;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render checkout page
|
||||||
|
function renderCheckout(bizKey, planKey) {
|
||||||
|
var business = BUSINESSES[bizKey];
|
||||||
|
var plan = business.plans[planKey];
|
||||||
|
|
||||||
|
// Update header
|
||||||
|
elements.businessTitle.textContent = 'רכישת אתר עבור:';
|
||||||
|
|
||||||
|
// Handle business name with proper lang attribute
|
||||||
|
if (business.lang === 'en') {
|
||||||
|
elements.businessSubtitle.innerHTML = '<span lang="en">' + escapeHtml(business.name) + '</span>';
|
||||||
|
} else {
|
||||||
|
elements.businessSubtitle.textContent = business.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update plan section - only show badge for full plans
|
||||||
|
if (plan.badge) {
|
||||||
|
elements.planBadge.textContent = plan.badge;
|
||||||
|
} else {
|
||||||
|
elements.planBadge.textContent = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
elements.planTitle.textContent = plan.title;
|
||||||
|
elements.planPrice.textContent = plan.price;
|
||||||
|
|
||||||
|
// Render features
|
||||||
|
elements.planFeatures.innerHTML = plan.features
|
||||||
|
.map(function(feature) { return '<li>' + escapeHtml(feature) + '</li>'; })
|
||||||
|
.join('');
|
||||||
|
|
||||||
|
// Load iframe
|
||||||
|
elements.paymentFrame.src = plan.url;
|
||||||
|
|
||||||
|
// Hide loading when iframe loads
|
||||||
|
function handleLoad() {
|
||||||
|
elements.iframeLoading.classList.add('hidden');
|
||||||
|
elements.paymentFrame.removeEventListener('load', handleLoad);
|
||||||
|
}
|
||||||
|
elements.paymentFrame.addEventListener('load', handleLoad);
|
||||||
|
|
||||||
|
// Fallback: hide loading after timeout
|
||||||
|
setTimeout(function() {
|
||||||
|
elements.iframeLoading.classList.add('hidden');
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
// Update page title
|
||||||
|
document.title = 'רכישת אתר - ' + business.name + ' | Emaillion';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize
|
||||||
|
function init() {
|
||||||
|
var params = getUrlParams();
|
||||||
|
|
||||||
|
if (!validateParams(params.biz, params.plan)) {
|
||||||
|
showError();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderCheckout(params.biz, params.plan);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run on DOM ready
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', init);
|
||||||
|
} else {
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
})();
|
||||||
@@ -0,0 +1,468 @@
|
|||||||
|
:root {
|
||||||
|
--color-primary: #5B4CE0;
|
||||||
|
--color-primary-dark: #4A3BC9;
|
||||||
|
--color-secondary: #7C3AED;
|
||||||
|
--color-accent: #A78BFA;
|
||||||
|
--color-bg: #FAFBFC;
|
||||||
|
--color-surface: #FFFFFF;
|
||||||
|
--color-text: #1A1A2E;
|
||||||
|
--color-text-muted: #4A5568;
|
||||||
|
--color-text-subtle: #6B7280;
|
||||||
|
--color-border: #E5E7EB;
|
||||||
|
--color-success: #10B981;
|
||||||
|
--color-error: #EF4444;
|
||||||
|
|
||||||
|
--font-family: 'Heebo', -apple-system, BlinkMacSystemFont, sans-serif;
|
||||||
|
|
||||||
|
--space-xs: 0.25rem;
|
||||||
|
--space-sm: 0.5rem;
|
||||||
|
--space-md: 1rem;
|
||||||
|
--space-lg: 1.5rem;
|
||||||
|
--space-xl: 2rem;
|
||||||
|
--space-2xl: 3rem;
|
||||||
|
--space-3xl: 4rem;
|
||||||
|
|
||||||
|
--radius-sm: 0.375rem;
|
||||||
|
--radius-md: 0.75rem;
|
||||||
|
--radius-lg: 1rem;
|
||||||
|
--radius-xl: 1.5rem;
|
||||||
|
|
||||||
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||||
|
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
||||||
|
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
||||||
|
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
||||||
|
|
||||||
|
--transition-fast: 150ms ease;
|
||||||
|
--transition-base: 250ms ease;
|
||||||
|
--transition-slow: 350ms ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*::before,
|
||||||
|
*::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 16px;
|
||||||
|
-webkit-text-size-adjust: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: var(--font-family);
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: var(--color-text);
|
||||||
|
background: var(--color-bg);
|
||||||
|
min-height: 100vh;
|
||||||
|
min-height: 100dvh;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
min-height: 100vh;
|
||||||
|
min-height: 100dvh;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header */
|
||||||
|
.header {
|
||||||
|
padding: var(--space-lg) var(--space-xl);
|
||||||
|
background: var(--color-surface);
|
||||||
|
border-block-end: 1px solid var(--color-border);
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--space-sm);
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-icon {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-text {
|
||||||
|
font-size: 1.375rem;
|
||||||
|
font-weight: 600;
|
||||||
|
background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
background-clip: text;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Main */
|
||||||
|
.main {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: center;
|
||||||
|
padding: var(--space-xl);
|
||||||
|
padding-block-start: var(--space-2xl);
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkout-card {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 600px;
|
||||||
|
background: var(--color-surface);
|
||||||
|
border-radius: var(--radius-xl);
|
||||||
|
box-shadow: var(--shadow-xl);
|
||||||
|
overflow: hidden;
|
||||||
|
animation: cardSlideIn 0.4s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes cardSlideIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(16px);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.checkout-card {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner {
|
||||||
|
animation: none;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iframe-loading .loading-text {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
|
||||||
|
padding: var(--space-xl);
|
||||||
|
text-align: center;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 56px;
|
||||||
|
height: 56px;
|
||||||
|
background: rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-block-end: var(--space-md);
|
||||||
|
backdrop-filter: blur(10px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-icon {
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-title {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
font-weight: 400;
|
||||||
|
margin-block-end: var(--space-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-subtitle {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Plan Section */
|
||||||
|
.plan-section {
|
||||||
|
padding: var(--space-xl);
|
||||||
|
border-block-end: 1px solid var(--color-border);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-badge {
|
||||||
|
display: inline-block;
|
||||||
|
padding: var(--space-xs) var(--space-md);
|
||||||
|
background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
|
||||||
|
color: white;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
font-weight: 500;
|
||||||
|
border-radius: 999px;
|
||||||
|
margin-block-end: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-badge:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-details {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--space-md);
|
||||||
|
margin-block-end: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-title {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--color-text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-price {
|
||||||
|
font-size: 1.75rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--color-primary);
|
||||||
|
unicode-bidi: isolate;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-features {
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-features li {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--space-sm);
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: var(--color-text-muted);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-features li::before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background: var(--color-success);
|
||||||
|
border-radius: 50%;
|
||||||
|
flex-shrink: 0;
|
||||||
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3'%3E%3Cpolyline points='20,6 9,17 4,12'/%3E%3C/svg%3E");
|
||||||
|
background-size: 12px;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Iframe Container */
|
||||||
|
.iframe-container {
|
||||||
|
position: relative;
|
||||||
|
min-height: 700px;
|
||||||
|
background: var(--color-bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.iframe-loading {
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
gap: var(--space-md);
|
||||||
|
color: var(--color-text-muted);
|
||||||
|
font-size: 0.9375rem;
|
||||||
|
background: var(--color-bg);
|
||||||
|
z-index: 1;
|
||||||
|
transition: opacity var(--transition-base);
|
||||||
|
}
|
||||||
|
|
||||||
|
.iframe-loading.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
border: 3px solid var(--color-border);
|
||||||
|
border-block-start-color: var(--color-primary);
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: spin 0.8s linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spin {
|
||||||
|
to { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
|
#paymentFrame {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 700px;
|
||||||
|
border: none;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error State */
|
||||||
|
.error-state {
|
||||||
|
padding: var(--space-3xl) var(--space-xl);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-icon {
|
||||||
|
width: 64px;
|
||||||
|
height: 64px;
|
||||||
|
color: var(--color-error);
|
||||||
|
margin-block-end: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-title {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--color-text);
|
||||||
|
margin-block-end: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-message {
|
||||||
|
font-size: 1rem;
|
||||||
|
color: var(--color-text-muted);
|
||||||
|
max-width: 320px;
|
||||||
|
margin-inline: auto;
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Footer */
|
||||||
|
.footer {
|
||||||
|
padding: var(--space-lg) var(--space-xl);
|
||||||
|
background: var(--color-surface);
|
||||||
|
border-block-start: 1px solid var(--color-border);
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.security-badge {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--space-sm);
|
||||||
|
padding: var(--space-sm) var(--space-lg);
|
||||||
|
background: var(--color-bg);
|
||||||
|
border-radius: var(--radius-md);
|
||||||
|
font-size: 0.875rem;
|
||||||
|
color: var(--color-text-muted);
|
||||||
|
margin-block-end: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lock-icon {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
color: var(--color-success);
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer-brand {
|
||||||
|
font-size: 0.8125rem;
|
||||||
|
color: var(--color-text-subtle);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Responsive */
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.main {
|
||||||
|
padding: var(--space-md);
|
||||||
|
padding-block-start: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.checkout-card {
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-badge {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-icon {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-title {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.business-subtitle {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-section {
|
||||||
|
padding: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-details {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
gap: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-title {
|
||||||
|
font-size: 1.125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.plan-price {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iframe-container {
|
||||||
|
min-height: 700px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#paymentFrame {
|
||||||
|
min-height: 700px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
padding: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.security-badge {
|
||||||
|
font-size: 0.8125rem;
|
||||||
|
padding: var(--space-xs) var(--space-md);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 360px) {
|
||||||
|
html {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
padding: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-icon {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-text {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Focus styles for accessibility */
|
||||||
|
*:focus-visible {
|
||||||
|
outline: 2px solid var(--color-primary);
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide content visually but keep accessible */
|
||||||
|
.sr-only {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user