All Prompts
All Prompts

pricingtailwindresponsiveanimationinteractivelanding-pagesaascardssection
Interactive SaaS Pricing & Feature Showcase Section
Интерактивный блок цен SaaS: выбор тарифа, анимация фич. Адаптивный дизайн, Tailwind CSS. Идеален для лендингов SaaS.
Prompt
<section class="z-10 sm:px-6 lg:px-8 [animation:fadeSlideIn_0.8s_ease-out_0.1s_both] animate-on-scroll max-w-7xl mr-auto ml-auto pt-20 pr-4 pb-16 pl-4 relative" id="pricing">
<div class="relative overflow-hidden rounded-3xl ring-1 ring-white/10 bg-neutral-950 backdrop-blur">
<!-- Subtle decor (neutral) -->
<div class="pointer-events-none absolute -right-24 -top-24 h-72 w-72 rounded-full bg-white/6 blur-3xl"></div>
<div class="pointer-events-none absolute -left-24 -bottom-24 h-72 w-72 rounded-full bg-white/5 blur-3xl"></div>
<div class="grid grid-cols-1 lg:grid-cols-2 items-stretch">
<!-- LEFT -->
<div class="sm:p-10 flex flex-col pt-6 pr-6 pb-6 pl-6">
<!-- Eyebrow -->
<span class="inline-flex items-center gap-2 text-[11px] text-zinc-300/90 bg-white/5 w-fit border-white/10 border rounded-full pt-1.5 pr-3 pb-1.5 pl-3">// FEATURE</span>
<!-- Heading -->
<h2 class="sm:text-5xl md:text-5xl text-4xl font-semibold text-white tracking-tight mt-4">
Everything you need<span class="block">to build smarter</span>
</h2>
<p class="md:text-lg text-base text-zinc-300/90 max-w-2xl mt-4">
AI-powered tools designed to accelerate your workflow and unlock your creative potential.
</p>
<!-- Cards (neutral) -->
<div class="mt-10 space-y-6">
<!-- Card 1: AI Assistant -->
<section class="group overflow-hidden md:p-6 ring-white/10 ring-1 rounded-3xl pt-5 pr-5 pb-5 pl-5 relative" id="card-ai">
<div class="absolute inset-0 pointer-events-none bg-gradient-to-b from-white/5 to-transparent"></div>
<div class="rounded-2xl bg-gradient-to-b from-white/5 to-white/[0.03] p-4 ring-1 ring-white/10 backdrop-blur">
<div class="flex items-center gap-2 text-white/80 text-sm mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" style="color: rgb(255, 255, 255); width: 16px; height: 16px" class="lucide lucide-sparkles text-white/80 w-[16px] h-[16px]" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" data-solar="star-outline" data-icon-set="solar" data-icon-replaced="true" stroke-width="1.5"><path fill="#ffffff" fill-rule="evenodd" d="M11.292 3.308c-.394.514-.838 1.308-1.484 2.466l-.327.587l-.059.106c-.3.54-.555.998-.964 1.308c-.413.314-.917.427-1.503.559l-.114.026l-.636.144c-1.255.284-2.11.479-2.694.71c-.571.224-.691.409-.737.556c-.049.156-.05.395.29.937c.347.55.932 1.236 1.786 2.236l.434.507l.075.087c.403.47.739.862.893 1.358c.153.493.102 1.01.04 1.638l-.01.117l-.066.677c-.13 1.332-.216 2.25-.187 2.91c.03.66.169.842.28.926c.098.075.28.157.873-.013c.603-.172 1.405-.539 2.58-1.08l.596-.274l.109-.05c.545-.253 1.017-.471 1.533-.471s.988.218 1.533.47q.053.026.11.05l.595.275c1.175.541 1.977.908 2.58 1.08c.593.17.775.088.873.013c.111-.084.25-.267.28-.926c.03-.66-.058-1.578-.187-2.91l-.066-.677l-.01-.117c-.062-.628-.113-1.145.04-1.638c.154-.496.49-.888.893-1.358l.075-.087l.434-.507c.854-1 1.439-1.686 1.785-2.236c.341-.542.34-.78.291-.937c-.046-.147-.166-.332-.737-.556c-.585-.231-1.439-.426-2.694-.71l-.636-.144l-.114-.026c-.586-.132-1.09-.245-1.503-.559c-.41-.31-.663-.767-.964-1.308l-.058-.106l-.328-.587c-.646-1.158-1.09-1.952-1.484-2.466S12.114 2.75 12 2.75s-.315.044-.708.558m-1.19-.912C10.577 1.774 11.166 1.25 12 1.25s1.422.524 1.899 1.146c.468.612.965 1.503 1.572 2.592l.359.643c.392.704.493.854.619.95c.12.091.277.143 1.04.316l.7.158c1.176.266 2.145.485 2.85.763c.732.289 1.373.714 1.62 1.507c.244.785-.03 1.507-.454 2.18c-.412.655-1.07 1.425-1.874 2.365l-.475.555c-.517.604-.625.752-.676.915c-.051.167-.047.36.032 1.165l.071.738c.122 1.256.221 2.28.186 3.06c-.035.795-.215 1.557-.87 2.055c-.668.506-1.445.45-2.195.234c-.727-.208-1.633-.625-2.733-1.132l-.656-.302c-.718-.33-.871-.383-1.015-.383s-.297.053-1.015.383l-.655.302c-1.101.507-2.007.924-2.734 1.132c-.75.215-1.527.272-2.194-.234c-.656-.498-.836-1.26-.871-2.054c-.035-.78.064-1.805.186-3.06l.072-.739c.078-.806.082-.998.03-1.165c-.05-.163-.158-.31-.675-.915l-.475-.555c-.803-.94-1.461-1.71-1.873-2.364c-.425-.674-.699-1.396-.455-2.181c.247-.793.888-1.218 1.62-1.507c.705-.278 1.674-.497 2.85-.763l.063-.014l.636-.144c.764-.173.92-.225 1.041-.317c.126-.095.227-.245.62-.949l.358-.643c.607-1.09 1.104-1.98 1.572-2.592" clip-rule="evenodd" class=""></path></svg>
<span class="font-medium">AI Writing Assistant</span>
</div>
<div class="space-y-3">
<div class="rounded-xl bg-white/[0.04] p-3 ring-1 ring-white/10">
<div class="flex items-start gap-3">
<div class="flex-1">
<p class="text-sm text-white/90 mb-2">Generate content instantly</p>
<div id="typing-demo" class="text-xs text-white/60 font-mono h-8">B</div>
</div>
</div>
</div>
</div>
</div>
<h3 class="mt-5 text-xl md:text-2xl font-semibold tracking-tight">Smart AI Assistant</h3>
<p class="mt-1.5 text-sm text-white/70">
Let AI handle the heavy lifting. Generate content, refine ideas, and boost productivity in seconds.
</p>
<script type="module">
const rootAI = document.querySelector('#card-ai');
const demoEl = rootAI.querySelector('#typing-demo');
const textStr = "Building the future...";
let idx = 0;
const typeLoop = () => {
if (idx < textStr.length) {
demoEl.textContent += textStr.charAt(idx++);
setTimeout(typeLoop, 100);
} else {
setTimeout(() => { demoEl.textContent = ''; idx = 0; typeLoop(); }, 2000);
}
};
typeLoop();
</script>
</section>
<!-- Card 2: Analytics -->
<section class="group overflow-hidden md:p-6 rounded-3xl ring-white/10 ring-1 pt-5 pr-5 pb-5 pl-5 relative" id="card-analytics">
<div class="absolute inset-0 pointer-events-none bg-gradient-to-b from-white/5 to-transparent"></div>
<div class="rounded-2xl bg-gradient-to-b from-white/5 to-white/[0.03] p-4 ring-1 ring-white/10 backdrop-blur">
<div class="flex items-center gap-2 text-white/80 text-sm mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-trending-up h-4 w-4 text-white/80">
<path d="M16 7h6v6" class=""></path><path d="m22 7-8.5 8.5-5-5L2 17" class=""></path>
</svg>
<span class="font-medium">Performance Insights</span>
</div>
<div class="grid grid-cols-2 gap-3">
<div class="rounded-xl bg-white/[0.04] p-3 ring-1 ring-white/10">
<p class="text-xs text-white/60 mb-1">Projects</p>
<p class="text-2xl font-semibold text-white">142</p>
<p class="text-xs mt-1 text-white/70">+12% this week</p>
</div>
<div class="rounded-xl bg-white/[0.04] p-3 ring-1 ring-white/10">
<p class="text-xs text-white/60 mb-1">Efficiency</p>
<p class="text-2xl font-semibold text-white">94%</p>
<p class="text-xs mt-1 text-white/70">+8% improvement</p>
</div>
</div>
</div>
<h3 class="mt-5 text-xl md:text-2xl font-semibold tracking-tight">Advanced Analytics</h3>
<p class="mt-1.5 text-sm text-white/70">
Track your progress with detailed insights. Make data-driven decisions to optimize your workflow.
</p>
</section>
</div>
<div class="mt-auto"></div>
</div>
<!-- RIGHT (3 cards) -->
<div class="flex flex-col gap-6 p-6 sm:p-10 lg:col-start-2">
<!-- Card 3: Collaboration -->
<section id="card-collab" class="group relative overflow-hidden rounded-3xl bg-white/[0.04] ring-1 ring-white/10 p-5 md:p-6">
<div class="absolute inset-0 pointer-events-none bg-gradient-to-b from-white/5 to-transparent"></div>
<div class="rounded-2xl bg-gradient-to-b from-white/5 to-white/[0.03] p-4 ring-1 ring-white/10 backdrop-blur">
<div class="flex items-center gap-2 text-white/80 text-sm mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-users h-4 w-4 text-white/80">
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" class=""></path>
<path d="M16 3.128a4 4 0 0 1 0 7.744" class=""></path>
<path d="M22 21v-2a4 4 0 0 0-3-3.87" class=""></path>
<circle cx="9" cy="7" r="4" class=""></circle>
</svg>
<span class="font-medium">Team Collaboration</span>
</div>
<div class="flex items-center gap-2">
<img src="https://hoirqrkdgbmvpwutwuwj-all.supabase.co/storage/v1/object/public/assets/assets/4c9aa348-4474-47a8-8f1e-3fe52ac8d2b9_320w.webp" class="w-8 h-8 rounded-full ring-white/20 ring-2 object-cover" alt="user">
<img src="https://hoirqrkdgbmvpwutwuwj-all.supabase.co/storage/v1/object/public/assets/assets/ca687bcc-f3d6-4ed6-9efe-e0fd4cbe69a9_320w.webp" class="h-8 w-8 rounded-full ring-2 ring-white/20 -ml-3 object-cover" alt="user">
<img src="https://hoirqrkdgbmvpwutwuwj-all.supabase.co/storage/v1/object/public/assets/assets/39e15168-9f77-4837-9a4b-89c74b8bc38b_320w.webp" class="h-8 w-8 rounded-full ring-2 ring-white/20 -ml-3 object-cover" alt="user">
<div class="flex items-center justify-center h-8 w-8 rounded-full bg-white/10 ring-2 ring-white/20 -ml-3">
<span class="text-xs text-white/80">+5</span>
</div>
</div>
<div class="mt-3 space-y-2">
<div class="h-2 w-full rounded-full bg-white/10 overflow-hidden">
<div class="h-full rounded-full bg-white/60" style="width: 68%"></div>
</div>
<p class="text-xs text-white/60">8 team members active</p>
</div>
</div>
<h3 class="mt-5 text-xl md:text-2xl font-semibold tracking-tight">Real-Time Collaboration</h3>
<p class="mt-1.5 text-sm text-white/70">Work together seamlessly with your team. Share, edit, and create in real-time from anywhere.</p>
</section>
<!-- Card 4: Workflow Automation -->
<section class="group overflow-hidden md:p-6 ring-1 ring-white/10 rounded-3xl pt-5 pr-5 pb-5 pl-5 relative" id="card-automation">
<div class="absolute inset-0 pointer-events-none bg-gradient-to-b from-white/5 to-transparent"></div>
<div class="rounded-2xl bg-gradient-to-b from-white/5 to-white/[0.03] p-4 ring-1 ring-white/10 backdrop-blur">
<div class="flex items-center gap-2 text-white/80 text-sm mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-workflow h-4 w-4 text-white/80">
<rect width="8" height="8" x="3" y="3" rx="2" class=""></rect>
<path d="M7 11v4a2 2 0 0 0 2 2h4" class=""></path>
<rect width="8" height="8" x="13" y="13" rx="2" class=""></rect>
</svg>
<span class="font-medium">Smart Workflows</span>
</div>
<div class="space-y-2">
<div class="flex items-center gap-2 text-xs text-white/70">
<div class="h-2 w-2 rounded-full bg-white/60"></div>
<span class="">Auto-save enabled</span>
</div>
<div class="flex items-center gap-2 text-xs text-white/70">
<div class="h-2 w-2 rounded-full bg-white/50"></div>
<span class="">Cloud sync active</span>
</div>
<div class="flex items-center gap-2 text-xs text-white/70">
<div class="h-2 w-2 rounded-full bg-white/40"></div>
<span class="">AI backup running</span>
</div>
</div>
</div>
<h3 class="mt-5 text-xl md:text-2xl font-semibold tracking-tight">Workflow Automation</h3>
<p class="mt-1.5 text-sm text-white/70">Automate repetitive tasks and focus on what matters. Set it once and let Runlyx handle the rest.</p>
</section>
<!-- Card 5: Security & Compliance (NEW) -->
<section class="group overflow-hidden md:p-6 ring-1 ring-white/10 rounded-3xl pt-5 pr-5 pb-5 pl-5 relative" id="card-security">
<div class="absolute inset-0 pointer-events-none bg-gradient-to-b from-white/5 to-transparent"></div>
<div class="rounded-2xl bg-gradient-to-b from-white/5 to-white/[0.03] p-4 ring-1 ring-white/10 backdrop-blur">
<div class="flex items-center gap-2 text-white/80 text-sm mb-3">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check h-4 w-4 text-white/80">
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10" class=""></path>
<path d="m9 12 2 2 4-4" class=""></path>
</svg>
<span class="font-medium">Security & Compliance</span>
</div>
<ul class="space-y-2 text-sm text-white/80">
<li class="flex items-start gap-2">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 text-white/70"><path d="M20 6 9 17l-5-5" class=""></path></svg>
<span>Role-based access controls</span>
</li>
<li class="flex items-start gap-2">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 text-white/70"><path d="M20 6 9 17l-5-5" class=""></path></svg>
<span class="">Data encryption at rest & in transit</span>
</li>
<li class="flex items-start gap-2">
<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check mt-0.5 text-white/70"><path d="M20 6 9 17l-5-5" class=""></path></svg>
<span class="">Audit logs & export</span>
</li>
</ul>
</div>
<h3 class="mt-5 text-xl md:text-2xl font-semibold tracking-tight">Enterprise-grade Protection</h3>
<p class="mt-1.5 text-sm text-white/70">Keep your data safe with built-in controls and transparent auditing.</p>
</section>
</div>
</div>
<!-- Behavior (unchanged core, only visuals/cards updated) -->
<script>
(function () {
const root = document.getElementById('pricing');
if (!root) return;
const state = { plan: 'starter', billing: 'monthly' };
const plans = {
starter: {
name: 'Starter',
tagline: 'Perfect for solo/small teams validating a first pilot.',
priceMonthly: 499,
priceAnnual: 5490,
cta: { label: 'Get Started', href: '#join' },
features: [
'ONE PILOT (AUTO/CHAT/VOICE)',
'LIGHT WORKFLOW REVIEW',
'UP TO 2 INTEGRATIONS',
'KB PREP (BASIC)',
'CORE GUARDRAILS & PROMPTS',
'ANALYTICS LITE (USAGE/KPIS)',
'EMAIL SUPPORT (48H) + 1 TRAINING'
]
},
pro: {
name: 'Pro',
tagline: 'For teams scaling pilots into production systems.',
priceMonthly: 2499,
priceAnnual: 26990,
cta: { label: 'Start Pro', href: '#join' },
features: [
'UP TO 5 PILOTS',
'FULL WORKFLOW REVIEW',
'UP TO 10 INTEGRATIONS',
'KB PREP (ADVANCED)',
'CUSTOM GUARDRAILS & PROMPTS',
'ANALYTICS PRO + DASHBOARDS',
'PRIORITY SUPPORT (24H) + 2 TRAININGS'
]
},
enterprise: {
name: 'Enterprise',
tagline: 'Custom, secure, enterprise-grade with SLAs.',
priceMonthly: null,
priceAnnual: null,
cta: { label: 'Contact Sales', href: '#contact' },
features: [
'UNLIMITED PILOTS',
'DEDICATED SOLUTIONS ENGINEER',
'UNLIMITED INTEGRATIONS',
'SSO / SOC2 / DPA / SLAS',
'ADVANCED ANALYTICS + CUSTOM KPIS',
'24/7 SUPPORT & ONBOARDING',
'CUSTOM TRAINING PROGRAMS'
]
}
};
const els = {
tabs: root.querySelectorAll('.billing-tab'),
planButtons: root.querySelectorAll('[data-plan-select]'),
planName: root.querySelector('#planName'),
planPrice: root.querySelector('#planPrice'),
planPriceSuffix: root.querySelector('#planPriceSuffix'),
planTagline: root.querySelector('#planTagline'),
featureList: root.querySelector('#featureList'),
ctaBtn: root.querySelector('#ctaBtn')
};
const checkSVG =
'<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check text-white/70 mt-0.5"><path d="M20 6 9 17l-5-5"></path></svg>';
function formatPrice(v) {
return (typeof v === 'number') ? `$${v.toLocaleString()}` : 'Custom';
}
function setSelectedPlanButton() {
els.planButtons.forEach(btn => {
const isActive = btn.getAttribute('data-plan-select') === state.plan;
btn.classList.toggle('bg-white/[0.05]', isActive);
btn.classList.toggle('ring-white/10', true);
});
}
function setBillingTabs() {
els.tabs.forEach(tab => {
const active = tab.getAttribute('data-billing') === state.billing;
tab.classList.toggle('text-white', active);
tab.classList.toggle('text-zinc-300', !active);
tab.classList.toggle('bg-white/[0.08]', active);
tab.classList.toggle('ring-1', active);
tab.classList.toggle('ring-white/20', active);
});
}
function render() {
const cfg = plans[state.plan];
els.planName.textContent = cfg.name;
els.planTagline.textContent = cfg.tagline.toUpperCase();
const price = (state.billing === 'monthly') ? cfg.priceMonthly : cfg.priceAnnual;
els.planPrice.textContent = formatPrice(price);
els.planPriceSuffix.textContent =
(typeof price === 'number')
? (state.billing === 'monthly' ? '/month' : '/yr')
: '';
els.ctaBtn.textContent = cfg.cta.label;
els.ctaBtn.setAttribute('href', cfg.cta.href);
els.featureList.innerHTML = cfg.features
.map(f => `<li class="flex items-start gap-2">${checkSVG}<span>${f}</span></li>`)
.join('');
setSelectedPlanButton();
setBillingTabs();
}
els.planButtons.forEach(btn => {
btn.addEventListener('click', () => {
state.plan = btn.getAttribute('data-plan-select');
render();
});
});
els.tabs.forEach(tab => {
btn => {};
tab.addEventListener('click', () => {
state.billing = tab.getAttribute('data-billing');
render();
});
});
render();
})();
</script>
</div>
</section>