<!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Google Fonts - Roboto -->
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700;900&display=swap" rel="stylesheet">
<!-- Ionicons -->
<script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script>
<script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script>
<style>
body {
font-family: 'Roboto', sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 60px 0;
}
.pricing-section {
max-width: 1200px;
margin: 0 auto;
}
.pricing-header {
text-align: center;
color: white;
margin-bottom: 50px;
}
.pricing-header h1 {
font-weight: 900;
font-size: 3rem;
margin-bottom: 15px;
}
.pricing-header p {
font-weight: 300;
font-size: 1.2rem;
opacity: 0.9;
}
/* Toggle Switch */
.pricing-toggle {
display: flex;
justify-content: center;
align-items: center;
gap: 20px;
margin-bottom: 50px;
}
.toggle-label {
color: white;
font-weight: 500;
font-size: 1.1rem;
transition: opacity 0.3s ease;
}
.toggle-label.active {
opacity: 1;
font-weight: 700;
}
.toggle-label.inactive {
opacity: 0.6;
}
.toggle-switch {
position: relative;
width: 70px;
height: 34px;
background: rgba(255, 255, 255, 0.3);
border-radius: 50px;
cursor: pointer;
transition: background 0.3s ease;
}
.toggle-switch:hover {
background: rgba(255, 255, 255, 0.4);
}
.toggle-slider {
position: absolute;
top: 3px;
left: 3px;
width: 28px;
height: 28px;
background: white;
border-radius: 50%;
transition: transform 0.3s ease;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
}
.toggle-switch.yearly .toggle-slider {
transform: translateX(36px);
}
.save-badge {
background: #10b981;
color: white;
padding: 5px 15px;
border-radius: 20px;
font-size: 0.9rem;
font-weight: 600;
margin-left: 10px;
}
/* Pricing Cards */
.pricing-card {
background: white;
border-radius: 20px;
padding: 40px 30px;
margin-bottom: 30px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
height: 100%;
}
.pricing-card:hover {
transform: translateY(-10px);
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
}
.pricing-card.featured {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
transform: scale(1.05);
position: relative;
}
.pricing-card.featured:hover {
transform: scale(1.08) translateY(-10px);
}
.featured-badge {
position: absolute;
top: -15px;
right: 30px;
background: #10b981;
color: white;
padding: 8px 20px;
border-radius: 20px;
font-weight: 600;
font-size: 0.9rem;
}
.plan-icon {
font-size: 48px;
margin-bottom: 20px;
display: block;
}
.pricing-card.featured .plan-icon {
color: white;
}
.plan-name {
font-size: 1.8rem;
font-weight: 700;
margin-bottom: 15px;
}
.plan-description {
font-size: 1rem;
opacity: 0.8;
margin-bottom: 25px;
min-height: 50px;
}
.plan-price {
font-size: 3.5rem;
font-weight: 900;
margin-bottom: 5px;
display: flex;
align-items: baseline;
justify-content: center;
}
.plan-price .currency {
font-size: 2rem;
margin-right: 5px;
}
.plan-price .period {
font-size: 1.2rem;
font-weight: 400;
margin-left: 5px;
}
.plan-price-annually {
display: none;
}
.billing-period {
font-size: 0.95rem;
opacity: 0.7;
margin-bottom: 30px;
}
.plan-features {
list-style: none;
padding: 0;
margin: 30px 0;
text-align: left;
}
.plan-features li {
padding: 12px 0;
display: flex;
align-items: center;
gap: 12px;
font-size: 1rem;
}
.plan-features ion-icon {
font-size: 24px;
color: #10b981;
flex-shrink: 0;
}
.pricing-card.featured .plan-features ion-icon {
color: white;
}
.plan-button {
width: 100%;
padding: 15px;
border-radius: 50px;
font-weight: 600;
font-size: 1.1rem;
border: none;
cursor: pointer;
transition: all 0.3s ease;
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
}
.plan-button.btn-primary-plan {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
}
.plan-button.btn-primary-plan:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(102, 126, 234, 0.4);
}
.plan-button.btn-featured-plan {
background: white;
color: #667eea;
}
.plan-button.btn-featured-plan:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}
/* Responsive */
@media (max-width: 768px) {
.pricing-header h1 {
font-size: 2rem;
}
.pricing-card.featured {
transform: scale(1);
}
.plan-price {
font-size: 2.5rem;
}
}
</style>
<body>
<div class="container pricing-section">
<!-- Header -->
<div class="pricing-header">
<h1>Choose Your Plan</h1>
<p>Select the perfect plan for your needs. Cancel anytime.</p>
</div>
<!-- Toggle Switch -->
<div class="pricing-toggle">
<span class="toggle-label active" id="monthlyLabel">Monthly</span>
<div class="toggle-switch" id="toggleSwitch" onclick="togglePricing()">
<div class="toggle-slider"></div>
</div>
<span class="toggle-label inactive" id="yearlyLabel">
Yearly
<span class="save-badge">Save 20%</span>
</span>
</div>
<!-- Pricing Cards -->
<div class="row">
<!-- Basic Plan -->
<div class="col-lg-4 col-md-6">
<div class="pricing-card">
<ion-icon name="paper-plane" class="plan-icon"></ion-icon>
<h3 class="plan-name">Basic</h3>
<p class="plan-description">Perfect for individuals and small projects</p>
<div class="plan-price plan-price-monthly">
<span class="currency">$</span>
<span class="amount">9</span>
<span class="period">/mo</span>
</div>
<div class="plan-price plan-price-annually">
<span class="currency">$</span>
<span class="amount">7</span>
<span class="period">/mo</span>
</div>
<p class="billing-period billing-annually" style="display: none;">Billed annually ($84/year)</p>
<ul class="plan-features">
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>5 Projects</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>10 GB Storage</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Basic Support</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Mobile App Access</span>
</li>
</ul>
<button class="plan-button btn-primary-plan">
Get Started
<ion-icon name="arrow-forward"></ion-icon>
</button>
</div>
</div>
<!-- Pro Plan (Featured) -->
<div class="col-lg-4 col-md-6">
<div class="pricing-card featured">
<span class="featured-badge">Most Popular</span>
<ion-icon name="rocket" class="plan-icon"></ion-icon>
<h3 class="plan-name">Pro</h3>
<p class="plan-description">Ideal for growing businesses and teams</p>
<div class="plan-price plan-price-monthly">
<span class="currency">$</span>
<span class="amount">29</span>
<span class="period">/mo</span>
</div>
<div class="plan-price plan-price-annually">
<span class="currency">$</span>
<span class="amount">23</span>
<span class="period">/mo</span>
</div>
<p class="billing-period billing-annually" style="display: none;">Billed annually ($276/year)</p>
<ul class="plan-features">
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Unlimited Projects</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>100 GB Storage</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Priority Support</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Advanced Analytics</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Team Collaboration</span>
</li>
</ul>
<button class="plan-button btn-featured-plan">
Get Started
<ion-icon name="arrow-forward"></ion-icon>
</button>
</div>
</div>
<!-- Enterprise Plan -->
<div class="col-lg-4 col-md-6">
<div class="pricing-card">
<ion-icon name="business" class="plan-icon"></ion-icon>
<h3 class="plan-name">Enterprise</h3>
<p class="plan-description">For large organizations with custom needs</p>
<div class="plan-price plan-price-monthly">
<span class="currency">$</span>
<span class="amount">79</span>
<span class="period">/mo</span>
</div>
<div class="plan-price plan-price-annually">
<span class="currency">$</span>
<span class="amount">63</span>
<span class="period">/mo</span>
</div>
<p class="billing-period billing-annually" style="display: none;">Billed annually ($756/year)</p>
<ul class="plan-features">
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Unlimited Everything</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Unlimited Storage</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>24/7 Premium Support</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Custom Integrations</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>Dedicated Account Manager</span>
</li>
<li>
<ion-icon name="checkmark-circle"></ion-icon>
<span>SLA Guarantee</span>
</li>
</ul>
<button class="plan-button btn-primary-plan">
Contact Sales
<ion-icon name="arrow-forward"></ion-icon>
</button>
</div>
</div>
</div>
</div>
<!-- Bootstrap 5 JS Bundle -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
function togglePricing() {
const toggle = document.getElementById('toggleSwitch');
const monthlyLabel = document.getElementById('monthlyLabel');
const yearlyLabel = document.getElementById('yearlyLabel');
const monthlyPrices = document.querySelectorAll('.plan-price-monthly');
const annuallyPrices = document.querySelectorAll('.plan-price-annually');
const billingPeriods = document.querySelectorAll('.billing-annually');
toggle.classList.toggle('yearly');
if (toggle.classList.contains('yearly')) {
// Switch to yearly
monthlyLabel.classList.remove('active');
monthlyLabel.classList.add('inactive');
yearlyLabel.classList.remove('inactive');
yearlyLabel.classList.add('active');
monthlyPrices.forEach(price => price.style.display = 'none');
annuallyPrices.forEach(price => price.style.display = 'flex');
billingPeriods.forEach(period => period.style.display = 'block');
} else {
// Switch to monthly
monthlyLabel.classList.remove('inactive');
monthlyLabel.classList.add('active');
yearlyLabel.classList.remove('active');
yearlyLabel.classList.add('inactive');
monthlyPrices.forEach(price => price.style.display = 'flex');
annuallyPrices.forEach(price => price.style.display = 'none');
billingPeriods.forEach(period => period.style.display = 'none');
}
}
</script>
No comments yet. Be the first!