<div class="pricing-calculator-container">
  <div class="pricing-calculator-demo">
    <div class="calculator-header">
      <h2>Calculadora de Precios</h2>
      <p>Personaliza tu plan según tus necesidades</p>
    </div>
    
    <div class="calculator-controls">
      <div class="control-group">
        <label for="users">Número de Usuarios</label>
        <div class="slider-container">
          <input type="range" id="users" min="1" max="1000" value="10" class="slider">
          <div class="slider-value" id="usersValue">10 usuarios</div>
        </div>
      </div>
      
      <div class="control-group">
        <label for="storage">Almacenamiento (GB)</label>
        <div class="slider-container">
          <input type="range" id="storage" min="10" max="1000" value="100" class="slider">
          <div class="slider-value" id="storageValue">100 GB</div>
        </div>
      </div>
      
      <div class="control-group">
        <label for="plan">Tipo de Plan</label>
        <div class="plan-selector">
          <button class="plan-btn active" data-plan="basic">Básico</button>
          <button class="plan-btn" data-plan="pro">Pro</button>
          <button class="plan-btn" data-plan="enterprise">Empresarial</button>
        </div>
      </div>
    </div>
    
    <div class="pricing-result">
      <div class="price-display">
        <div class="price-amount">$<span id="priceAmount">29</span></div>
        <div class="price-period">por mes</div>
      </div>
      <div class="price-breakdown">
        <div class="breakdown-item">
          <span class="breakdown-label">Usuarios:</span>
          <span class="breakdown-value" id="usersCost">$10</span>
        </div>
        <div class="breakdown-item">
          <span class="breakdown-label">Almacenamiento:</span>
          <span class="breakdown-value" id="storageCost">$15</span>
        </div>
        <div class="breakdown-item">
          <span class="breakdown-label">Plan:</span>
          <span class="breakdown-value" id="planCost">$4</span>
        </div>
      </div>
      <button class="btn btn-primary" id="getStartedBtn">Comenzar</button>
    </div>
  </div>
</div>
     .pricing-calculator-container {
  background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%);
  padding: 30px;
  border-radius: 20px;
  max-width: 600px;
  margin: 0 auto;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}
.calculator-header {
  text-align: center;
  margin-bottom: 30px;
}
.calculator-header h2 {
  margin: 0 0 10px 0;
  color: #333;
  font-size: 2rem;
  font-weight: 700;
}
.calculator-header p {
  color: #666;
  font-size: 1.1rem;
  margin: 0;
}
.calculator-controls {
  background: white;
  border-radius: 15px;
  padding: 25px;
  margin-bottom: 30px;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}
.control-group {
  margin-bottom: 25px;
}
.control-group:last-child {
  margin-bottom: 0;
}
.control-group label {
  display: block;
  margin-bottom: 15px;
  font-weight: 600;
  color: #333;
  font-size: 1.1rem;
}
.slider-container {
  display: flex;
  align-items: center;
  gap: 15px;
}
.slider {
  flex: 1;
  height: 8px;
  border-radius: 4px;
  background: #e2e8f0;
  outline: none;
  -webkit-appearance: none;
}
.slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(102, 126, 234, 0.3);
}
.slider::-moz-range-thumb {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  cursor: pointer;
  border: none;
  box-shadow: 0 2px 6px rgba(102, 126, 234, 0.3);
}
.slider-value {
  min-width: 80px;
  padding: 8px 12px;
  background: #f1f5f9;
  border-radius: 20px;
  font-weight: 600;
  color: #333;
  text-align: center;
}
.plan-selector {
  display: flex;
  gap: 10px;
}
.plan-btn {
  flex: 1;
  padding: 12px;
  background: #f1f5f9;
  border: 2px solid #e2e8f0;
  border-radius: 10px;
  font-weight: 600;
  color: #666;
  cursor: pointer;
  transition: all 0.3s ease;
}
.plan-btn:hover {
  background: #e2e8f0;
}
.plan-btn.active {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
  border-color: transparent;
  transform: translateY(-2px);
  box-shadow: 0 5px 15px rgba(102, 126, 234, 0.3);
}
.pricing-result {
  background: white;
  border-radius: 15px;
  padding: 30px;
  text-align: center;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
}
.price-display {
  margin-bottom: 25px;
}
.price-amount {
  font-size: 3rem;
  font-weight: 700;
  color: #333;
  margin-bottom: 5px;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.price-period {
  color: #666;
  font-size: 1.1rem;
}
.price-breakdown {
  background: #f8fafc;
  border-radius: 12px;
  padding: 20px;
  margin-bottom: 25px;
  text-align: left;
}
.breakdown-item {
  display: flex;
  justify-content: space-between;
  padding: 10px 0;
  border-bottom: 1px solid #e2e8f0;
}
.breakdown-item:last-child {
  border-bottom: none;
}
.breakdown-label {
  color: #666;
}
.breakdown-value {
  font-weight: 600;
  color: #333;
}
.btn {
  padding: 15px 30px;
  border: none;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  width: 100%;
}
.btn-primary {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: white;
}
.btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
}
/* Animaciones */
.price-amount {
  transition: all 0.3s ease;
}
.breakdown-value {
  transition: all 0.3s ease;
}
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.breakdown-item {
  animation: fadeIn 0.3s ease;
}
.breakdown-item:nth-child(1) { animation-delay: 0.1s; }
.breakdown-item:nth-child(2) { animation-delay: 0.2s; }
.breakdown-item:nth-child(3) { animation-delay: 0.3s; }
/* Responsivo */
@media (max-width: 768px) {
  .pricing-calculator-container {
    padding: 20px;
  }
  
  .calculator-header h2 {
    font-size: 1.7rem;
  }
  
  .calculator-controls,
  .pricing-result {
    padding: 20px;
  }
  
  .price-amount {
    font-size: 2.5rem;
  }
  
  .plan-selector {
    flex-direction: column;
  }
}
     document.addEventListener('DOMContentLoaded', function() {
  // Obtener elementos del DOM
  const usersSlider = document.getElementById('users');
  const storageSlider = document.getElementById('storage');
  const usersValue = document.getElementById('usersValue');
  const storageValue = document.getElementById('storageValue');
  const planButtons = document.querySelectorAll('.plan-btn');
  const priceAmount = document.getElementById('priceAmount');
  const usersCost = document.getElementById('usersCost');
  const storageCost = document.getElementById('storageCost');
  const planCost = document.getElementById('planCost');
  const getStartedBtn = document.getElementById('getStartedBtn');
  
  // Configuración de precios
  const pricing = {
    basic: { base: 0, userRate: 1, storageRate: 0.15 },
    pro: { base: 10, userRate: 0.9, storageRate: 0.12 },
    enterprise: { base: 50, userRate: 0.8, storageRate: 0.1 }
  };
  
  let currentPlan = 'basic';
  
  // Inicializar
  updateValues();
  updatePricing();
  
  // Agregar escuchadores de eventos
  usersSlider.addEventListener('input', () => {
    usersValue.textContent = `${usersSlider.value} usuarios`;
    updatePricing();
  });
  
  storageSlider.addEventListener('input', () => {
    storageValue.textContent = `${storageSlider.value} GB`;
    updatePricing();
  });
  
  planButtons.forEach(button => {
    button.addEventListener('click', () => {
      planButtons.forEach(btn => btn.classList.remove('active'));
      button.classList.add('active');
      currentPlan = button.getAttribute('data-plan');
      updatePricing();
    });
  });
  
  getStartedBtn.addEventListener('click', () => {
    const users = usersSlider.value;
    const storage = storageSlider.value;
    const total = priceAmount.textContent;
    alert(`Iniciando plan ${currentPlan} con ${users} usuarios y ${storage}GB de almacenamiento. Total: $${total}/mes`);
  });
  
  // Actualizar valores mostrados
  function updateValues() {
    usersValue.textContent = `${usersSlider.value} usuarios`;
    storageValue.textContent = `${storageSlider.value} GB`;
  }
  
  // Calcular y actualizar precios
  function updatePricing() {
    const users = parseInt(usersSlider.value);
    const storage = parseInt(storageSlider.value);
    const plan = pricing[currentPlan];
    
    // Calcular costos
    const userCost = users * plan.userRate;
    const storageCostValue = storage * plan.storageRate;
    const total = plan.base + userCost + storageCostValue;
    
    // Actualizar UI con animaciones
    animateValue(priceAmount, parseFloat(priceAmount.textContent), total, 300);
    animateValue(usersCost, parseFloat(usersCost.textContent.replace('$', '')), userCost, 300);
    animateValue(storageCost, parseFloat(storageCost.textContent.replace('$', '')), storageCostValue, 300);
    animateValue(planCost, parseFloat(planCost.textContent.replace('$', '')), plan.base, 300);
    
    // Actualizar visualización de costos
    usersCost.textContent = `$${userCost.toFixed(2)}`;
    storageCost.textContent = `$${storageCostValue.toFixed(2)}`;
    planCost.textContent = `$${plan.base.toFixed(2)}`;
  }
  
  // Animar cambios de valor
  function animateValue(element, start, end, duration) {
    const range = end - start;
    const increment = range / (duration / 16);
    let current = start;
    const timer = setInterval(() => {
      current += increment;
      if ((increment > 0 && current >= end) || (increment < 0 && current <= end)) {
        clearInterval(timer);
        current = end;
      }
      element.textContent = Math.abs(current).toFixed(2);
    }, 16);
  }
});