1 estrella en GitHub = 1 componente nuevo.

Dar una estrella
Tablas de Precios

Pricing Comparison Matrix

Matriz detallada de comparación de precios con desglose exhaustivo de funcionalidades por plan.

pricingmatrixcomparisontogglesaas
Vista Previa en Vivo
Flexible Plans

Transparent Pricing for High-Growth Teams

Choose the right plan to scale your digital products. No hidden fees, cancel anytime.

Monthly Annual Save 20%
Starter

For indie developers and personal experiments.

$ 19 /mo
Get Started
  • ✓ Up to 3 Astro Projects
  • ✓ All 200+ UI Components
  • ✓ Community Discord Support
  • ✕ Private Component Registry
  • ✕ Dedicated Priority Support
Enterprise

For organizations requiring custom SLAs and bespoke design systems.

$ 149 /mo
Contact Sales
  • ✓ Everything in Pro Plan
  • ✓ Custom Component Engineering
  • ✓ 99.99% Guaranteed SLA
  • ✓ Dedicated Security Audit Support
  • ✓ Dedicated Account Manager

Uso

Copia y pega este código directamente en tu página de Astro:

astro
---
import { PricingComparisonMatrix } from 'astro-component-kit';
---

<PricingComparisonMatrix />
--- import { PricingComparisonMatrix } from 'astro-component-kit'; --- <PricingComparisonMatrix />

Instalación Manual

Si no estás usando el paquete npm, crea un archivo nuevo y pega el siguiente código: src/components/sections/PricingComparisonMatrix.astro:

astro
---
/**
 * PricingComparisonMatrix — Full-page interactive pricing matrix with billing toggle and feature comparison.
 * 
 * @param {string} badge - Eyebrow badge text.
 * @param {string} title - Section main heading.
 * @param {string} subtitle - Supporting description text.
 */
interface Props {
  badge?: string;
  title?: string;
  subtitle?: string;
  className?: string;
}

const {
  badge = "Flexible Plans",
  title = "Transparent Pricing for High-Growth Teams",
  subtitle = "Choose the right plan to scale your digital products. No hidden fees, cancel anytime.",
  className = ""
} = Astro.props;
---

<div class="cq-pricing-comparison-matrix-cq">
<section class={`pricing-section ${className}`} aria-labelledby="pricing-title">
  <div class="pricing-bg" aria-hidden="true">
    <div class="pricing-glow"></div>
  </div>

  <div class="container">
    <!-- Header -->
    <div class="section-header">
      {badge && <span class="section-badge">{badge}</span>}
      <h2 id="pricing-title" class="section-title">{title}</h2>
      <p class="section-subtitle">{subtitle}</p>

      <!-- Interactive Billing Toggle -->
      <div class="billing-toggle-wrap">
        <span class="toggle-label" id="label-monthly">Monthly</span>
        <button 
          type="button" 
          class="billing-toggle" 
          id="billingToggleBtn" 
          role="switch" 
          aria-checked="false" 
          aria-label="Toggle annual billing"
        >
          <span class="toggle-slider"></span>
        </button>
        <span class="toggle-label" id="label-annual">
          Annual <span class="discount-pill">Save 20%</span>
        </span>
      </div>
    </div>

    <!-- Pricing Cards Grid -->
    <div class="pricing-cards">
      <!-- 1. Starter Tier -->
      <div class="plan-card">
        <div class="plan-card__header">
          <span class="plan-name">Starter</span>
          <p class="plan-desc">For indie developers and personal experiments.</p>
          <div class="plan-price">
            <span class="price-currency">$</span>
            <span class="price-val" data-monthly="19" data-annual="15">19</span>
            <span class="price-period">/mo</span>
          </div>
          <a href="#get-started" class="plan-btn plan-btn--ghost">Get Started</a>
        </div>
        <div class="plan-divider"></div>
        <ul class="plan-features" aria-label="Starter Plan Features">
          <li><span class="check-icon">✓</span> Up to 3 Astro Projects</li>
          <li><span class="check-icon">✓</span> All 200+ UI Components</li>
          <li><span class="check-icon">✓</span> Community Discord Support</li>
          <li class="feature-disabled"><span class="cross-icon">✕</span> Private Component Registry</li>
          <li class="feature-disabled"><span class="cross-icon">✕</span> Dedicated Priority Support</li>
        </ul>
      </div>

      <!-- 2. Pro Tier (Featured / Most Popular) -->
      <div class="plan-card plan-card--popular">
        <div class="popular-ribbon">Most Popular</div>
        <div class="plan-card__header">
          <span class="plan-name plan-name--popular">Professional</span>
          <p class="plan-desc">For fast-moving teams and production web applications.</p>
          <div class="plan-price">
            <span class="price-currency">$</span>
            <span class="price-val" data-monthly="49" data-annual="39">49</span>
            <span class="price-period">/mo</span>
          </div>
          <a href="#get-pro" class="plan-btn plan-btn--primary">Start 14-Day Free Trial</a>
        </div>
        <div class="plan-divider"></div>
        <ul class="plan-features" aria-label="Professional Plan Features">
          <li><span class="check-icon">✓</span> Unlimited Astro Projects</li>
          <li><span class="check-icon">✓</span> All 200+ UI & 3D Components</li>
          <li><span class="check-icon">✓</span> Figma UI Kit & Design Tokens</li>
          <li><span class="check-icon">✓</span> Private NPM Team Access</li>
          <li><span class="check-icon">✓</span> Priority Email & Chat Support</li>
        </ul>
      </div>

      <!-- 3. Enterprise Tier -->
      <div class="plan-card">
        <div class="plan-card__header">
          <span class="plan-name">Enterprise</span>
          <p class="plan-desc">For organizations requiring custom SLAs and bespoke design systems.</p>
          <div class="plan-price">
            <span class="price-currency">$</span>
            <span class="price-val" data-monthly="149" data-annual="119">149</span>
            <span class="price-period">/mo</span>
          </div>
          <a href="#contact-sales" class="plan-btn plan-btn--ghost">Contact Sales</a>
        </div>
        <div class="plan-divider"></div>
        <ul class="plan-features" aria-label="Enterprise Plan Features">
          <li><span class="check-icon">✓</span> Everything in Pro Plan</li>
          <li><span class="check-icon">✓</span> Custom Component Engineering</li>
          <li><span class="check-icon">✓</span> 99.99% Guaranteed SLA</li>
          <li><span class="check-icon">✓</span> Dedicated Security Audit Support</li>
          <li><span class="check-icon">✓</span> Dedicated Account Manager</li>
        </ul>
      </div>
    </div>

    <!-- Money-back guarantee footer note -->
    <div class="pricing-footer">
      <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="guarantee-icon"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"/><path d="m9 12 2 2 4-4"/></svg>
      <span>30-Day unconditional money-back guarantee. No questions asked.</span>
    </div>
  </div>
</section>
</div>
<script>
  const toggleBtn = document.getElementById('billingToggleBtn');
  const priceVals = document.querySelectorAll('.price-val');

  if (toggleBtn) {
    toggleBtn.addEventListener('click', () => {
      const isAnnual = toggleBtn.getAttribute('aria-checked') === 'true';
      const newState = !isAnnual;
      toggleBtn.setAttribute('aria-checked', String(newState));

      priceVals.forEach((el) => {
        const val = newState ? el.getAttribute('data-annual') : el.getAttribute('data-monthly');
        if (val) el.textContent = val;
      });
    });
  }
</script>

<style>
  .cq-pricing-comparison-matrix-cq { container-type: inline-size; }
  .pricing-section {
    position: relative;
    padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem);
    background: var(--c-bg-primary, #030712);
    overflow: hidden;
  }

  .pricing-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    z-index: 0;
  }

  .pricing-glow {
    position: absolute;
    top: 20%;
    left: 50%;
    transform: translateX(-50%);
    width: 600px;
    height: 500px;
    background: radial-gradient(circle, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent), transparent 70%);
    filter: blur(100px);
  }

  .container {
    position: relative;
    z-index: 1;
    max-width: 1200px;
    margin: 0 auto;
  }

  .section-header {
    text-align: center;
    max-width: 760px;
    margin: 0 auto var(--sp-12, 3rem);
  }

  .section-badge {
    display: inline-flex;
    padding: 0.35rem 0.9rem;
    border-radius: 9999px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent);
    color: #eab308;
    border: 1px solid rgba(234, 179, 8, 0.25);
    margin-bottom: var(--sp-4, 1rem);
  }

  .section-title {
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 900;
    color: #fff;
    line-height: 1.15;
    letter-spacing: -0.02em;
    margin: 0 0 var(--sp-4, 1rem);
  }

  .section-subtitle {
    font-size: 1.1rem;
    color: #94a3b8;
    line-height: 1.6;
    margin: 0 0 2rem;
  }

  /* Billing Toggle */
  .billing-toggle-wrap {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.4rem 0.8rem;
    background: rgba(15, 23, 42, 0.8);
    border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1);
    border-radius: 9999px;
  }

  .toggle-label {
    font-size: 0.88rem;
    font-weight: 600;
    color: #cbd5e1;
  }

  .discount-pill {
    padding: 0.15rem 0.5rem;
    background: rgba(16, 185, 129, 0.15);
    color: #34d399;
    border: 1px solid rgba(16, 185, 129, 0.3);
    border-radius: 9999px;
    font-size: 0.72rem;
    font-weight: 700;
  }

  .billing-toggle {
    width: 44px;
    height: 24px;
    border-radius: 9999px;
    background: rgb(var(--ink-rgb, 255 255 255) / 0.15);
    border: none;
    position: relative;
    cursor: pointer;
    padding: 2px;
    transition: background 0.3s ease;
  }

  .toggle-slider {
    display: block;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #fff;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  }

  .billing-toggle[aria-checked="true"] {
    background: #eab308;
  }

  .billing-toggle[aria-checked="true"] .toggle-slider {
    transform: translateX(20px);
  }

  /* Pricing Cards */
  .pricing-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.5rem;
    align-items: stretch;
  }

  .plan-card {
    position: relative;
    background: rgba(15, 23, 42, 0.6);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08);
    border-radius: var(--r-xl, 20px);
    padding: 2.25rem 2rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
  }

  .plan-card:hover {
    transform: translateY(-4px);
    border-color: rgb(var(--ink-rgb, 255 255 255) / 0.18);
  }

  .plan-card--popular {
    background: rgba(20, 25, 45, 0.85);
    border-color: rgba(234, 179, 8, 0.4);
    box-shadow: 0 0 30px -10px rgba(234, 179, 8, 0.25);
    transform: scale(1.03);
  }

  .plan-card--popular:hover {
    transform: scale(1.03) translateY(-4px);
  }

  .popular-ribbon {
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    padding: 0.25rem 0.85rem;
    background: linear-gradient(135deg, #eab308, #ca8a04);
    color: #000;
    font-weight: 800;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border-radius: 9999px;
    box-shadow: 0 4px 12px rgba(234, 179, 8, 0.4);
  }

  .plan-name {
    font-size: 1.25rem;
    font-weight: 800;
    color: #fff;
  }

  .plan-name--popular {
    color: #facc15;
  }

  .plan-desc {
    font-size: 0.88rem;
    color: #94a3b8;
    line-height: 1.5;
    margin: 0.4rem 0 1.5rem;
    min-height: 40px;
  }

  .plan-price {
    display: flex;
    align-items: baseline;
    gap: 0.2rem;
    margin-bottom: 1.5rem;
  }

  .price-currency {
    font-size: 1.5rem;
    font-weight: 700;
    color: #94a3b8;
  }

  .price-val {
    font-size: 3rem;
    font-weight: 900;
    color: #fff;
    line-height: 1;
  }

  .price-period {
    font-size: 0.9rem;
    color: #64748b;
  }

  .plan-btn {
    display: block;
    text-align: center;
    padding: 0.85rem 1.5rem;
    border-radius: var(--r-md, 10px);
    font-size: 0.95rem;
    font-weight: 700;
    text-decoration: none;
    transition: all 0.25s ease;
  }

  .plan-btn--primary {
    background: linear-gradient(135deg, #eab308, #d97706);
    color: #000;
    box-shadow: 0 4px 15px rgba(234, 179, 8, 0.3);
  }

  .plan-btn--primary:hover {
    filter: brightness(1.1);
    box-shadow: 0 6px 20px rgba(234, 179, 8, 0.45);
  }

  .plan-btn--ghost {
    background: rgb(var(--ink-rgb, 255 255 255) / 0.05);
    color: #fff;
    border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12);
  }

  .plan-btn--ghost:hover {
    background: rgb(var(--ink-rgb, 255 255 255) / 0.1);
    border-color: rgb(var(--ink-rgb, 255 255 255) / 0.25);
  }

  .plan-divider {
    height: 1px;
    background: rgb(var(--ink-rgb, 255 255 255) / 0.08);
    margin: 1.5rem 0;
  }

  .plan-features {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
  }

  .plan-features li {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    font-size: 0.88rem;
    color: #cbd5e1;
  }

  .check-icon {
    color: #10b981;
    font-weight: 900;
  }

  .cross-icon {
    color: #64748b;
    font-weight: 700;
  }

  .feature-disabled {
    color: #64748b;
  }

  .pricing-footer {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    margin-top: 3rem;
    color: #94a3b8;
    font-size: 0.9rem;
  }

  .guarantee-icon {
    color: #10b981;
  }

  @container (max-width: 960px) {
    .pricing-cards {
      grid-template-columns: 1fr;
    }
    .plan-card--popular {
      transform: none;
    }
    .plan-card--popular:hover {
      transform: translateY(-4px);
    }
  }
</style>
--- /** * PricingComparisonMatrix — Full-page interactive pricing matrix with billing toggle and feature comparison. * * @param {string} badge - Eyebrow badge text. * @param {string} title - Section main heading. * @param {string} subtitle - Supporting description text. */ interface Props { badge?: string; title?: string; subtitle?: string; className?: string; } const { badge = "Flexible Plans", title = "Transparent Pricing for High-Growth Teams", subtitle = "Choose the right plan to scale your digital products. No hidden fees, cancel anytime.", className = "" } = Astro.props; --- <div class="cq-pricing-comparison-matrix-cq"> <section class={`pricing-section ${className}`} aria-labelledby="pricing-title"> <div class="pricing-bg" aria-hidden="true"> <div class="pricing-glow"></div> </div> <div class="container"> <!-- Header --> <div class="section-header"> {badge && <span class="section-badge">{badge}</span>} <h2 id="pricing-title" class="section-title">{title}</h2> <p class="section-subtitle">{subtitle}</p> <!-- Interactive Billing Toggle --> <div class="billing-toggle-wrap"> <span class="toggle-label" id="label-monthly">Monthly</span> <button type="button" class="billing-toggle" id="billingToggleBtn" role="switch" aria-checked="false" aria-label="Toggle annual billing" > <span class="toggle-slider"></span> </button> <span class="toggle-label" id="label-annual"> Annual <span class="discount-pill">Save 20%</span> </span> </div> </div> <!-- Pricing Cards Grid --> <div class="pricing-cards"> <!-- 1. Starter Tier --> <div class="plan-card"> <div class="plan-card__header"> <span class="plan-name">Starter</span> <p class="plan-desc">For indie developers and personal experiments.</p> <div class="plan-price"> <span class="price-currency">$</span> <span class="price-val" data-monthly="19" data-annual="15">19</span> <span class="price-period">/mo</span> </div> <a href="#get-started" class="plan-btn plan-btn--ghost">Get Started</a> </div> <div class="plan-divider"></div> <ul class="plan-features" aria-label="Starter Plan Features"> <li><span class="check-icon">✓</span> Up to 3 Astro Projects</li> <li><span class="check-icon">✓</span> All 200+ UI Components</li> <li><span class="check-icon">✓</span> Community Discord Support</li> <li class="feature-disabled"><span class="cross-icon">✕</span> Private Component Registry</li> <li class="feature-disabled"><span class="cross-icon">✕</span> Dedicated Priority Support</li> </ul> </div> <!-- 2. Pro Tier (Featured / Most Popular) --> <div class="plan-card plan-card--popular"> <div class="popular-ribbon">Most Popular</div> <div class="plan-card__header"> <span class="plan-name plan-name--popular">Professional</span> <p class="plan-desc">For fast-moving teams and production web applications.</p> <div class="plan-price"> <span class="price-currency">$</span> <span class="price-val" data-monthly="49" data-annual="39">49</span> <span class="price-period">/mo</span> </div> <a href="#get-pro" class="plan-btn plan-btn--primary">Start 14-Day Free Trial</a> </div> <div class="plan-divider"></div> <ul class="plan-features" aria-label="Professional Plan Features"> <li><span class="check-icon">✓</span> Unlimited Astro Projects</li> <li><span class="check-icon">✓</span> All 200+ UI & 3D Components</li> <li><span class="check-icon">✓</span> Figma UI Kit & Design Tokens</li> <li><span class="check-icon">✓</span> Private NPM Team Access</li> <li><span class="check-icon">✓</span> Priority Email & Chat Support</li> </ul> </div> <!-- 3. Enterprise Tier --> <div class="plan-card"> <div class="plan-card__header"> <span class="plan-name">Enterprise</span> <p class="plan-desc">For organizations requiring custom SLAs and bespoke design systems.</p> <div class="plan-price"> <span class="price-currency">$</span> <span class="price-val" data-monthly="149" data-annual="119">149</span> <span class="price-period">/mo</span> </div> <a href="#contact-sales" class="plan-btn plan-btn--ghost">Contact Sales</a> </div> <div class="plan-divider"></div> <ul class="plan-features" aria-label="Enterprise Plan Features"> <li><span class="check-icon">✓</span> Everything in Pro Plan</li> <li><span class="check-icon">✓</span> Custom Component Engineering</li> <li><span class="check-icon">✓</span> 99.99% Guaranteed SLA</li> <li><span class="check-icon">✓</span> Dedicated Security Audit Support</li> <li><span class="check-icon">✓</span> Dedicated Account Manager</li> </ul> </div> </div> <!-- Money-back guarantee footer note --> <div class="pricing-footer"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="guarantee-icon"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10"/><path d="m9 12 2 2 4-4"/></svg> <span>30-Day unconditional money-back guarantee. No questions asked.</span> </div> </div> </section> </div> <script> const toggleBtn = document.getElementById('billingToggleBtn'); const priceVals = document.querySelectorAll('.price-val'); if (toggleBtn) { toggleBtn.addEventListener('click', () => { const isAnnual = toggleBtn.getAttribute('aria-checked') === 'true'; const newState = !isAnnual; toggleBtn.setAttribute('aria-checked', String(newState)); priceVals.forEach((el) => { const val = newState ? el.getAttribute('data-annual') : el.getAttribute('data-monthly'); if (val) el.textContent = val; }); }); } </script> <style> .cq-pricing-comparison-matrix-cq { container-type: inline-size; } .pricing-section { position: relative; padding: var(--sp-20, 5rem) var(--sp-6, 1.5rem); background: var(--c-bg-primary, #030712); overflow: hidden; } .pricing-bg { position: absolute; inset: 0; pointer-events: none; z-index: 0; } .pricing-glow { position: absolute; top: 20%; left: 50%; transform: translateX(-50%); width: 600px; height: 500px; background: radial-gradient(circle, color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent), transparent 70%); filter: blur(100px); } .container { position: relative; z-index: 1; max-width: 1200px; margin: 0 auto; } .section-header { text-align: center; max-width: 760px; margin: 0 auto var(--sp-12, 3rem); } .section-badge { display: inline-flex; padding: 0.35rem 0.9rem; border-radius: 9999px; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; background: color-mix(in srgb, var(--c-primary, #b8860b) 12%, transparent); color: #eab308; border: 1px solid rgba(234, 179, 8, 0.25); margin-bottom: var(--sp-4, 1rem); } .section-title { font-size: clamp(2rem, 4vw, 3rem); font-weight: 900; color: #fff; line-height: 1.15; letter-spacing: -0.02em; margin: 0 0 var(--sp-4, 1rem); } .section-subtitle { font-size: 1.1rem; color: #94a3b8; line-height: 1.6; margin: 0 0 2rem; } /* Billing Toggle */ .billing-toggle-wrap { display: inline-flex; align-items: center; gap: 0.75rem; padding: 0.4rem 0.8rem; background: rgba(15, 23, 42, 0.8); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.1); border-radius: 9999px; } .toggle-label { font-size: 0.88rem; font-weight: 600; color: #cbd5e1; } .discount-pill { padding: 0.15rem 0.5rem; background: rgba(16, 185, 129, 0.15); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.3); border-radius: 9999px; font-size: 0.72rem; font-weight: 700; } .billing-toggle { width: 44px; height: 24px; border-radius: 9999px; background: rgb(var(--ink-rgb, 255 255 255) / 0.15); border: none; position: relative; cursor: pointer; padding: 2px; transition: background 0.3s ease; } .toggle-slider { display: block; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .billing-toggle[aria-checked="true"] { background: #eab308; } .billing-toggle[aria-checked="true"] .toggle-slider { transform: translateX(20px); } /* Pricing Cards */ .pricing-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; align-items: stretch; } .plan-card { position: relative; background: rgba(15, 23, 42, 0.6); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.08); border-radius: var(--r-xl, 20px); padding: 2.25rem 2rem; display: flex; flex-direction: column; justify-content: space-between; transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; } .plan-card:hover { transform: translateY(-4px); border-color: rgb(var(--ink-rgb, 255 255 255) / 0.18); } .plan-card--popular { background: rgba(20, 25, 45, 0.85); border-color: rgba(234, 179, 8, 0.4); box-shadow: 0 0 30px -10px rgba(234, 179, 8, 0.25); transform: scale(1.03); } .plan-card--popular:hover { transform: scale(1.03) translateY(-4px); } .popular-ribbon { position: absolute; top: -12px; left: 50%; transform: translateX(-50%); padding: 0.25rem 0.85rem; background: linear-gradient(135deg, #eab308, #ca8a04); color: #000; font-weight: 800; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; border-radius: 9999px; box-shadow: 0 4px 12px rgba(234, 179, 8, 0.4); } .plan-name { font-size: 1.25rem; font-weight: 800; color: #fff; } .plan-name--popular { color: #facc15; } .plan-desc { font-size: 0.88rem; color: #94a3b8; line-height: 1.5; margin: 0.4rem 0 1.5rem; min-height: 40px; } .plan-price { display: flex; align-items: baseline; gap: 0.2rem; margin-bottom: 1.5rem; } .price-currency { font-size: 1.5rem; font-weight: 700; color: #94a3b8; } .price-val { font-size: 3rem; font-weight: 900; color: #fff; line-height: 1; } .price-period { font-size: 0.9rem; color: #64748b; } .plan-btn { display: block; text-align: center; padding: 0.85rem 1.5rem; border-radius: var(--r-md, 10px); font-size: 0.95rem; font-weight: 700; text-decoration: none; transition: all 0.25s ease; } .plan-btn--primary { background: linear-gradient(135deg, #eab308, #d97706); color: #000; box-shadow: 0 4px 15px rgba(234, 179, 8, 0.3); } .plan-btn--primary:hover { filter: brightness(1.1); box-shadow: 0 6px 20px rgba(234, 179, 8, 0.45); } .plan-btn--ghost { background: rgb(var(--ink-rgb, 255 255 255) / 0.05); color: #fff; border: 1px solid rgb(var(--ink-rgb, 255 255 255) / 0.12); } .plan-btn--ghost:hover { background: rgb(var(--ink-rgb, 255 255 255) / 0.1); border-color: rgb(var(--ink-rgb, 255 255 255) / 0.25); } .plan-divider { height: 1px; background: rgb(var(--ink-rgb, 255 255 255) / 0.08); margin: 1.5rem 0; } .plan-features { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.85rem; } .plan-features li { display: flex; align-items: center; gap: 0.65rem; font-size: 0.88rem; color: #cbd5e1; } .check-icon { color: #10b981; font-weight: 900; } .cross-icon { color: #64748b; font-weight: 700; } .feature-disabled { color: #64748b; } .pricing-footer { display: flex; align-items: center; justify-content: center; gap: 0.6rem; margin-top: 3rem; color: #94a3b8; font-size: 0.9rem; } .guarantee-icon { color: #10b981; } @container (max-width: 960px) { .pricing-cards { grid-template-columns: 1fr; } .plan-card--popular { transform: none; } .plan-card--popular:hover { transform: translateY(-4px); } } </style>