diff --git a/src/script.js b/src/script.js index 2e5b879..77f084f 100644 --- a/src/script.js +++ b/src/script.js @@ -1,308 +1,307 @@ // Smooth scrolling for anchor links -document.querySelectorAll('a[href^="#"]').forEach(anchor => { - anchor.addEventListener('click', function(e) { - e.preventDefault(); - const target = document.querySelector(this.getAttribute('href')); - if (target) { - target.scrollIntoView({ behavior: 'smooth' }); - } - }); +document.querySelectorAll('a[href^="#"]').forEach((anchor) => { + anchor.addEventListener("click", function (e) { + e.preventDefault(); + const target = document.querySelector(this.getAttribute("href")); + if (target) { + target.scrollIntoView({ behavior: "smooth" }); + } + }); }); // Scroll progress bar -const progressBar = document.getElementById('progress-bar'); +const progressBar = document.getElementById("progress-bar"); -window.addEventListener('scroll', () => { - const scrollTop = window.scrollY; - const docHeight = document.documentElement.scrollHeight - window.innerHeight; - const progress = (scrollTop / docHeight) * 100; - progressBar.style.width = progress + '%'; +window.addEventListener("scroll", () => { + const scrollTop = window.scrollY; + const docHeight = document.documentElement.scrollHeight - window.innerHeight; + const progress = (scrollTop / docHeight) * 100; + progressBar.style.width = progress + "%"; }); // Student discount logic -const studentCheckbox = document.getElementById('student'); +const studentCheckbox = document.getElementById("student"); const plans = { - normal: { full: 10, label: 'Normal' }, - premium: { full: 15, label: 'Premium' } + normal: { full: 10, label: "Normal" }, + premium: { full: 15, label: "Premium" }, }; function updatePrices() { - const isStudent = studentCheckbox.checked; + const isStudent = studentCheckbox.checked; - document.querySelectorAll('.radio-group label').forEach(lbl => { - const input = lbl.querySelector('input[type="radio"]'); - if (!input) return; + document.querySelectorAll(".radio-group label").forEach((lbl) => { + const input = lbl.querySelector('input[type="radio"]'); + if (!input) return; - const plan = plans[input.value]; - if (!plan) return; + const plan = plans[input.value]; + if (!plan) return; - const discounted = (plan.full * 0.7).toFixed(2); + const discounted = (plan.full * 0.7).toFixed(2); - if (isStudent) { - lbl.innerHTML = ` - + if (isStudent) { + lbl.innerHTML = ` + ${plan.label} — $${plan.full}/mes 20% OFF $${discounted}/mes `; - } else { - lbl.innerHTML = ` - + } else { + lbl.innerHTML = ` + ${plan.label} — $${plan.full}/mes `; - } - }); + } + }); } -studentCheckbox.addEventListener('change', updatePrices); +studentCheckbox.addEventListener("change", updatePrices); // Character counter for textarea -const textarea = document.getElementById('reason'); -const counter = document.getElementById('reason-counter'); +const textarea = document.getElementById("reason"); +const counter = document.getElementById("reason-counter"); const MAX_CHARS = 300; -textarea.addEventListener('input', () => { - const len = textarea.value.length; - counter.textContent = `${len} / ${MAX_CHARS}`; +textarea.addEventListener("input", () => { + const len = textarea.value.length; + counter.textContent = `${len} / ${MAX_CHARS}`; - counter.classList.remove('near-limit', 'at-limit'); + counter.classList.remove("near-limit", "at-limit"); - if (len >= MAX_CHARS) { - textarea.value = textarea.value.slice(0, MAX_CHARS); - counter.classList.add('at-limit'); - } else if (len >= MAX_CHARS * 0.8) { - counter.classList.add('near-limit'); - } + if (len >= MAX_CHARS) { + textarea.value = textarea.value.slice(0, MAX_CHARS); + counter.classList.add("at-limit"); + } else if (len >= MAX_CHARS * 0.8) { + counter.classList.add("near-limit"); + } }); // Form validation function setFieldState(input, isValid) { - const group = input.closest('.field-group'); - if (!group) return; - group.classList.remove('error', 'success'); - if (input.value.trim() === '') return; - group.classList.add(isValid ? 'success' : 'error'); + const group = input.closest(".field-group"); + if (!group) return; + group.classList.remove("error", "success"); + if (input.value.trim() === "") return; + group.classList.add(isValid ? "success" : "error"); } // Name and Lastname -['name', 'lastname'].forEach(id => { - document.getElementById(id).addEventListener('input', function() { - setFieldState(this, this.value.trim().length >= 2); - }); +["name", "lastname"].forEach((id) => { + document.getElementById(id).addEventListener("input", function () { + setFieldState(this, this.value.trim().length >= 2); + }); }); // Email -document.getElementById('email').addEventListener('input', function() { - const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.value); - setFieldState(this, valid); +document.getElementById("email").addEventListener("input", function () { + const valid = /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.value); + setFieldState(this, valid); }); // MMAA validation -document.getElementById('expiry').addEventListener('input', function() { - this.value = this.value.replace(/[^\d]/g, '').slice(0, 4); - if (this.value.length > 2) { - this.value = this.value.slice(0, 2) + '/' + this.value.slice(2); - } - const valid = /^(0[1-9]|1[0-2])\/\d{2}$/.test(this.value); - setFieldState(this, valid); +document.getElementById("expiry").addEventListener("input", function () { + this.value = this.value.replace(/[^\d]/g, "").slice(0, 4); + if (this.value.length > 2) { + this.value = this.value.slice(0, 2) + "/" + this.value.slice(2); + } + const valid = /^(0[1-9]|1[0-2])\/\d{2}$/.test(this.value); + setFieldState(this, valid); }); // CVV -document.getElementById('cvv').addEventListener('input', function() { - this.value = this.value.replace(/\D/g, '').slice(0, 4); - setFieldState(this, this.value.length >= 3); +document.getElementById("cvv").addEventListener("input", function () { + this.value = this.value.replace(/\D/g, "").slice(0, 4); + setFieldState(this, this.value.length >= 3); }); - // Plan preview logic const planData = { - normal: { - name: 'Normal', - price: '$10/mes', - priceStudent: '$7.00/mes', - features: [ - '250 g por envío', - '1 café de origen único por mes', - 'Envío gratuito', - 'Guía de preparación' - ] - }, - premium: { - name: 'Premium', - price: '$15/mes', - priceStudent: '$10.50/mes', - features: [ - '500 g por envío', - '2 cafés de origen único por mes', - 'Envío gratuito', - 'Guía de preparación', - 'Acceso a lotes exclusivos' - ] - } + normal: { + name: "Normal", + price: "$10/mes", + priceStudent: "$7.00/mes", + features: [ + "250 g por envío", + "1 café de origen único por mes", + "Envío gratuito", + "Guía de preparación", + ], + }, + premium: { + name: "Premium", + price: "$15/mes", + priceStudent: "$10.50/mes", + features: [ + "500 g por envío", + "2 cafés de origen único por mes", + "Envío gratuito", + "Guía de preparación", + "Acceso a lotes exclusivos", + ], + }, }; -const planPreview = document.getElementById('plan-preview'); -const planPreviewName = document.getElementById('plan-preview-name'); -const planPreviewPrice = document.getElementById('plan-preview-price'); -const planPreviewFeatures = document.getElementById('plan-preview-features'); +const planPreview = document.getElementById("plan-preview"); +const planPreviewName = document.getElementById("plan-preview-name"); +const planPreviewPrice = document.getElementById("plan-preview-price"); +const planPreviewFeatures = document.getElementById("plan-preview-features"); function updatePlanPreview() { - const selected = document.querySelector('input[name="plan"]:checked'); - if (!selected) { - planPreview.classList.remove('visible'); - return; - } + const selected = document.querySelector('input[name="plan"]:checked'); + if (!selected) { + planPreview.classList.remove("visible"); + return; + } - const plan = planData[selected.value]; - const isStudent = document.getElementById('student').checked; + const plan = planData[selected.value]; + const isStudent = document.getElementById("student").checked; - planPreviewName.textContent = plan.name; - planPreviewPrice.textContent = isStudent ? plan.priceStudent : plan.price; + planPreviewName.textContent = plan.name; + planPreviewPrice.textContent = isStudent ? plan.priceStudent : plan.price; - planPreviewFeatures.innerHTML = plan.features - .map(f => `
  • ${f}
  • `) - .join(''); + planPreviewFeatures.innerHTML = plan.features + .map((f) => `
  • ${f}
  • `) + .join(""); - planPreview.classList.add('visible'); + planPreview.classList.add("visible"); } -document.querySelectorAll('input[name="plan"]').forEach(radio => { - radio.addEventListener('change', updatePlanPreview); +document.querySelectorAll('input[name="plan"]').forEach((radio) => { + radio.addEventListener("change", updatePlanPreview); }); // Update prices and preview when student checkbox changes -studentCheckbox.addEventListener('change', () => { - updatePrices(); - updatePlanPreview(); +studentCheckbox.addEventListener("change", () => { + updatePrices(); + updatePlanPreview(); }); // Credit card validation and brand detection -const cardInput = document.getElementById('card'); -const cardBrand = document.getElementById('card-brand'); +const cardInput = document.getElementById("card"); +const cardBrand = document.getElementById("card-brand"); const cardPatterns = { - Visa: /^4/, - Mastercard: /^5[1-5]|^2[2-7]/, - Amex: /^3[47]/, - Naranja: /^589562/, - Cabal: /^604201|^589657/, + Visa: /^4/, + Mastercard: /^5[1-5]|^2[2-7]/, + Amex: /^3[47]/, + Naranja: /^589562/, + Cabal: /^604201|^589657/, }; function detectCardBrand(number) { - const clean = number.replace(/\s/g, ''); - for (const [brand, pattern] of Object.entries(cardPatterns)) { - if (pattern.test(clean)) return brand; - } - return null; + const clean = number.replace(/\s/g, ""); + for (const [brand, pattern] of Object.entries(cardPatterns)) { + if (pattern.test(clean)) return brand; + } + return null; } function validateCard(number) { - const clean = number.replace(/\s/g, ''); - if (clean.length < 13) return false; + const clean = number.replace(/\s/g, ""); + if (clean.length < 13) return false; - // Luhn algorithm - let sum = 0; - let alternate = false; - for (let i = clean.length - 1; i >= 0; i--) { - let n = parseInt(clean[i]); - if (alternate) { - n *= 2; - if (n > 9) n -= 9; - } - sum += n; - alternate = !alternate; + // Luhn algorithm + let sum = 0; + let alternate = false; + for (let i = clean.length - 1; i >= 0; i--) { + let n = parseInt(clean[i]); + if (alternate) { + n *= 2; + if (n > 9) n -= 9; } - return sum % 10 === 0; + sum += n; + alternate = !alternate; + } + return sum % 10 === 0; } -cardInput.addEventListener('input', function() { - // Remove non-digits and limit to 16 characters - let val = this.value.replace(/\D/g, '').slice(0, 16); - this.value = val.replace(/(.{4})/g, '$1 ').trim(); +cardInput.addEventListener("input", function () { + // Remove non-digits and limit to 16 characters + let val = this.value.replace(/\D/g, "").slice(0, 16); + this.value = val.replace(/(.{4})/g, "$1 ").trim(); - const brand = detectCardBrand(this.value); - const valid = validateCard(this.value); + const brand = detectCardBrand(this.value); + const valid = validateCard(this.value); - if (brand) { - cardBrand.textContent = brand; - cardBrand.classList.add('visible'); - } else { - cardBrand.classList.remove('visible'); - } + if (brand) { + cardBrand.textContent = brand; + cardBrand.classList.add("visible"); + } else { + cardBrand.classList.remove("visible"); + } - setFieldState(this, valid); + setFieldState(this, valid); }); // Payment cuotas logic -const paymentSelect = document.getElementById('payment'); -const cuotasGroup = document.getElementById('cuotas-group'); -const cuotasInput = document.getElementById('cuotas'); +const paymentSelect = document.getElementById("payment"); +const cuotasGroup = document.getElementById("cuotas-group"); +const cuotasInput = document.getElementById("cuotas"); -paymentSelect.addEventListener('change', function() { - if (this.value === 'credit') { - cuotasGroup.style.display = 'flex'; - cuotasInput.setAttribute('required', ''); - } else { - cuotasGroup.style.display = 'none'; - cuotasInput.removeAttribute('required'); - cuotasInput.value = ''; - } +paymentSelect.addEventListener("change", function () { + if (this.value === "credit") { + cuotasGroup.style.display = "flex"; + cuotasInput.setAttribute("required", ""); + } else { + cuotasGroup.style.display = "none"; + cuotasInput.removeAttribute("required"); + cuotasInput.value = ""; + } }); // Cuotas validation -cuotasInput.addEventListener('input', function() { - const val = parseInt(this.value); - setFieldState(this, val >= 1 && val <= 12); +cuotasInput.addEventListener("input", function () { + const val = parseInt(this.value); + setFieldState(this, val >= 1 && val <= 12); }); // Form submission logic -const form = document.querySelector('form'); +const form = document.querySelector("form"); const submitBtn = document.querySelector('.cta-button[type="submit"]'); -const confirmation = document.getElementById('form-confirmation'); -const confirmDate = document.getElementById('confirm-date'); -const subsCounter = document.querySelector('.hero-stats .stat-item:last-child .stat-number'); +const confirmation = document.getElementById("form-confirmation"); +const confirmDate = document.getElementById("confirm-date"); +const subsCounter = document.querySelector( + ".hero-stats .stat-item:last-child .stat-number", +); -form.addEventListener('submit', function(e) { - e.preventDefault(); +form.addEventListener("submit", function (e) { + e.preventDefault(); - // loading state - submitBtn.classList.add('loading'); - submitBtn.innerHTML = ' Procesando...'; + // loading state + submitBtn.classList.add("loading"); + submitBtn.innerHTML = ' Procesando...'; + + setTimeout(() => { + // Hidden form + form.style.transition = "opacity 0.3s ease"; + form.style.opacity = "0"; setTimeout(() => { - // Hidden form - form.style.transition = 'opacity 0.3s ease'; - form.style.opacity = '0'; + form.style.display = "none"; - setTimeout(() => { - form.style.display = 'none'; + // Calculate delivery date (7 days from now) + const delivery = new Date(); + delivery.setDate(delivery.getDate() + 7); + confirmDate.textContent = delivery.toLocaleDateString("es-AR", { + day: "numeric", + month: "long", + year: "numeric", + }); - // Calculate delivery date (7 days from now) - const delivery = new Date(); - delivery.setDate(delivery.getDate() + 7); - confirmDate.textContent = delivery.toLocaleDateString('es-AR', { - day: 'numeric', - month: 'long', - year: 'numeric' - }); + // Show confirmation + confirmation.style.display = "flex"; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + confirmation.classList.add("visible"); + }); + }); - // Show confirmation - confirmation.style.display = 'flex'; - requestAnimationFrame(() => { - requestAnimationFrame(() => { - confirmation.classList.add('visible'); - }); - }); - - // +1 to subscriber counter - if (subsCounter) { - const current = parseInt(subsCounter.textContent); - subsCounter.textContent = current + 1; - } - - }, 300); - - }, 2000); // simulate processing delay -}); \ No newline at end of file + // +1 to subscriber counter + if (subsCounter) { + const current = parseInt(subsCounter.textContent); + subsCounter.textContent = current + 1; + } + }, 300); + }, 2000); // simulate processing delay +}); diff --git a/src/styles.css b/src/styles.css index ddfbb33..29f6251 100644 --- a/src/styles.css +++ b/src/styles.css @@ -1,548 +1,565 @@ /* Global Styles */ * { - margin: 0; - padding: 0; - box-sizing: border-box; + margin: 0; + padding: 0; + box-sizing: border-box; } body { - background: #0a0a0a; - color: #f5f0e8; - font-family: Georgia, serif; + background: #0a0a0a; + color: #f5f0e8; + font-family: Georgia, serif; } -html, body { - height: 100%; - margin: 0; - padding: 0; +html, +body { + height: 100%; + margin: 0; + padding: 0; } a { - text-decoration: none; - color: inherit; + text-decoration: none; + color: inherit; } input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { - -webkit-appearance: none; - margin: 0; + -webkit-appearance: none; + margin: 0; } input[type="number"] { - -moz-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; } /* Navbar */ #site-header { - position: sticky; - top: 0; - z-index: 1000; - background-color: rgba(10, 10, 10, 0.95); - backdrop-filter: blur(12px); - border-bottom: 1px solid rgba(255, 255, 255, 0.7); + position: sticky; + top: 0; + z-index: 1000; + background-color: rgba(10, 10, 10, 0.95); + backdrop-filter: blur(12px); + border-bottom: 1px solid rgba(255, 255, 255, 0.7); } #main-nav { - max-width: 1100px; - margin: 0 auto; - padding: 0 2rem; - height: 60px; - display: flex; - align-items: center; - justify-content: space-between; + max-width: 1100px; + margin: 0 auto; + padding: 0 2rem; + height: 60px; + display: flex; + align-items: center; + justify-content: space-between; } .nav-logo { - font-family: Georgia, serif; - font-size: 1.2rem; - letter-spacing: 0.12rem; - text-transform: uppercase; - color: #f5f0e8; - text-decoration: none; + font-family: Georgia, serif; + font-size: 1.2rem; + letter-spacing: 0.12rem; + text-transform: uppercase; + color: #f5f0e8; + text-decoration: none; } .nav-logo span { - color: #c8a96e; + color: #c8a96e; } #main-nav ul { - list-style: none; - display: flex; - gap: 2rem; - align-items: center; - margin: 0; - padding: 0; + list-style: none; + display: flex; + gap: 2rem; + align-items: center; + margin: 0; + padding: 0; } #main-nav ul a { - font-family: Georgia, serif; - font-size: 0.78rem; - letter-spacing: 0.1em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.425); - text-decoration: none; - transition: color 0.2s; - position: relative; + font-family: Georgia, serif; + font-size: 0.78rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.425); + text-decoration: none; + transition: color 0.2s; + position: relative; } #main-nav ul a::after { - content: ''; - position: absolute; - bottom: -3px; - left: 0; - width: 0; - height: 1px; - background-color: #c8a96e; - transition: width 0.25s; + content: ""; + position: absolute; + bottom: -3px; + left: 0; + width: 0; + height: 1px; + background-color: #c8a96e; + transition: width 0.25s; } #main-nav ul a:hover { - color: #f5f0e8; + color: #f5f0e8; } #main-nav ul a:hover::after { - width: 100%; + width: 100%; } #main-nav ul li:last-child a { - color: #0a0a0a; - background: #c8a96e; - padding: 0.45rem 1.1rem; - border-radius: 2px; - transition: background 0.2s; + color: #0a0a0a; + background: #c8a96e; + padding: 0.45rem 1.1rem; + border-radius: 2px; + transition: background 0.2s; } #main-nav ul li:last-child a::after { - display: none; + display: none; } #main-nav ul li:last-child a:hover { - background: #b8946a; - color: #0a0a0a; + background: #b8946a; + color: #0a0a0a; } /* Hero Section */ #hero { - position: relative; - height: calc(100vh - 60px); - display: flex; - align-items: flex-end; - background-image: url('/public/assets/bg-1.jpg'); - background-size: cover; - background-position: center; - overflow: hidden; + position: relative; + height: calc(100vh - 60px); + display: flex; + align-items: flex-end; + background-image: url("/public/assets/bg-1.jpg"); + background-size: cover; + background-position: center; + overflow: hidden; } #hero::before { - content: ''; - position: absolute; - inset: 0; - background: linear-gradient( - to bottom, - rgba(10, 10, 10, 0.6) 0%, - rgba(10, 10, 10, 0.5) 40%, - rgba(10, 10, 10, 0.75) 70%, - rgba(10, 10, 10, 0.97) 100% - ); - z-index: 1; + content: ""; + position: absolute; + inset: 0; + background: linear-gradient( + to bottom, + rgba(10, 10, 10, 0.6) 0%, + rgba(10, 10, 10, 0.5) 40%, + rgba(10, 10, 10, 0.75) 70%, + rgba(10, 10, 10, 0.97) 100% + ); + z-index: 1; } .hero-content { - position: relative; - z-index: 2; - max-width: 1100px; - margin: 0 auto; - padding: 0 2rem 10rem; - width: 100%; + position: relative; + z-index: 2; + max-width: 1100px; + margin: 0 auto; + padding: 0 2rem 10rem; + width: 100%; } .hero-eyebrow { - display: inline-block; - font-size: 0.72rem; - letter-spacing: 0.2em; - text-transform: uppercase; - color: #c8a96e; - margin-bottom: 1.2rem; - border-left: 2px solid #c8a96e; - padding-left: 0.75rem; + display: inline-block; + font-size: 0.72rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: #c8a96e; + margin-bottom: 1.2rem; + border-left: 2px solid #c8a96e; + padding-left: 0.75rem; } #hero h1 { - font-size: clamp(2.8rem, 6vw, 5.5rem); - font-weight: normal; - line-height: 1.05; - color: #f5f0e8; - letter-spacing: -0.01em; - max-width: 14ch; - margin-bottom: 1.5rem; + font-size: clamp(2.8rem, 6vw, 5.5rem); + font-weight: normal; + line-height: 1.05; + color: #f5f0e8; + letter-spacing: -0.01em; + max-width: 14ch; + margin-bottom: 1.5rem; } #hero h1 em { - font-style: italic; - color: #c8a96e; + font-style: italic; + color: #c8a96e; } #hero p { - font-size: 1rem; - line-height: 1.7; - color: rgba(245, 240, 232, 0.55); - max-width: 42ch; - margin-bottom: 2.5rem; + font-size: 1rem; + line-height: 1.7; + color: rgba(245, 240, 232, 0.55); + max-width: 42ch; + margin-bottom: 2.5rem; } .hero-actions { - display: flex; - align-items: center; - gap: 2rem; + display: flex; + align-items: center; + gap: 2rem; } .cta-button { - font-size: 0.8rem; - letter-spacing: 0.12em; - text-transform: uppercase; - color: #0a0a0a; - background: #c8a96e; - padding: 0.85rem 2rem; - border-radius: 2px; - text-decoration: none; - transition: background 0.2s; + font-size: 0.8rem; + letter-spacing: 0.12em; + text-transform: uppercase; + color: #0a0a0a; + background: #c8a96e; + padding: 0.85rem 2rem; + border-radius: 2px; + text-decoration: none; + transition: background 0.2s; } .cta-button:hover { - background: #b8946a; + background: #b8946a; } .hero-secondary { - font-size: 0.78rem; - letter-spacing: 0.08em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.4); - text-decoration: none; - border-bottom: 1px solid rgba(245, 240, 232, 0.2); - padding-bottom: 1px; - transition: color 0.2s, border-color 0.2s; + font-size: 0.78rem; + letter-spacing: 0.08em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.4); + text-decoration: none; + border-bottom: 1px solid rgba(245, 240, 232, 0.2); + padding-bottom: 1px; + transition: + color 0.2s, + border-color 0.2s; } .hero-secondary:hover { - color: #f5f0e8; - border-color: rgba(245, 240, 232, 0.5); + color: #f5f0e8; + border-color: rgba(245, 240, 232, 0.5); } .hero-stats { - position: absolute; - bottom: 6rem; - right: 2rem; - z-index: 2; - display: flex; - flex-direction: column; - gap: 1.5rem; - text-align: right; + position: absolute; + bottom: 6rem; + right: 2rem; + z-index: 2; + display: flex; + flex-direction: column; + gap: 1.5rem; + text-align: right; } .stat-number { - display: block; - font-size: 1.6rem; - color: #f5f0e8; - line-height: 1; + display: block; + font-size: 1.6rem; + color: #f5f0e8; + line-height: 1; } .stat-label { - display: block; - font-size: 0.65rem; - letter-spacing: 0.12em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.35); - margin-top: 0.2rem; + display: block; + font-size: 0.65rem; + letter-spacing: 0.12em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.35); + margin-top: 0.2rem; } .hero-scroll { - position: absolute; - bottom: 2.5rem; - left: 50%; - transform: translateX(-50%); - right: auto; - z-index: 2; - display: flex; - flex-direction: column; - align-items: center; - gap: 0.5rem; - color: rgba(245, 240, 232, 0.25); - font-size: 0.65rem; - letter-spacing: 0.15em; - text-transform: uppercase; + position: absolute; + bottom: 2.5rem; + left: 50%; + transform: translateX(-50%); + right: auto; + z-index: 2; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + color: rgba(245, 240, 232, 0.25); + font-size: 0.65rem; + letter-spacing: 0.15em; + text-transform: uppercase; } .scroll-line { - width: 1px; - height: 40px; - background: linear-gradient(to bottom, rgba(245, 240, 232, 0.25), transparent); - animation: scrollpulse 2s ease-in-out infinite; + width: 1px; + height: 40px; + background: linear-gradient( + to bottom, + rgba(245, 240, 232, 0.25), + transparent + ); + animation: scrollpulse 2s ease-in-out infinite; } @keyframes scrollpulse { - 0%, 100% { opacity: 0.3; } - 50% { opacity: 0.8; } + 0%, + 100% { + opacity: 0.3; + } + 50% { + opacity: 0.8; + } } /* Benefits Section */ #beneficios { - max-width: 1100px; - margin: 0 auto; - padding: 6rem 2rem; - display: grid; - grid-template-columns: 1fr 1fr; - gap: 2px; + max-width: 1100px; + margin: 0 auto; + padding: 6rem 2rem; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2px; } #beneficios .card { - background: #111; - padding: 3rem; - border: 1px solid rgba(255, 255, 255, 0.06); - transition: border-color 0.3s; + background: #111; + padding: 3rem; + border: 1px solid rgba(255, 255, 255, 0.06); + transition: border-color 0.3s; } #beneficios .card:first-child { - border-right: none; + border-right: none; } #beneficios .card:hover { - border-color: rgba(200, 169, 110, 0.25); + border-color: rgba(200, 169, 110, 0.25); } .card-eyebrow { - display: inline-block; - font-size: 0.68rem; - letter-spacing: 0.2em; - text-transform: uppercase; - color: #c8a96e; - margin-bottom: 1.5rem; + display: inline-block; + font-size: 0.68rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: #c8a96e; + margin-bottom: 1.5rem; } #beneficios h2 { - font-size: 1.6rem; - font-weight: normal; - line-height: 1.2; - color: #f5f0e8; - margin-bottom: 1.25rem; - letter-spacing: -0.01em; + font-size: 1.6rem; + font-weight: normal; + line-height: 1.2; + color: #f5f0e8; + margin-bottom: 1.25rem; + letter-spacing: -0.01em; } #beneficios p { - font-size: 0.95rem; - line-height: 1.8; - color: rgba(245, 240, 232, 0.5); + font-size: 0.95rem; + line-height: 1.8; + color: rgba(245, 240, 232, 0.5); } #beneficios ul { - list-style: none; - display: flex; - flex-direction: column; - gap: 1rem; - margin-top: 0.25rem; + list-style: none; + display: flex; + flex-direction: column; + gap: 1rem; + margin-top: 0.25rem; } #beneficios ul li { - display: flex; - align-items: flex-start; - gap: 1rem; - font-size: 0.92rem; - line-height: 1.5; - color: rgba(245, 240, 232, 0.6); + display: flex; + align-items: flex-start; + gap: 1rem; + font-size: 0.92rem; + line-height: 1.5; + color: rgba(245, 240, 232, 0.6); } #beneficios ul li::before { - content: ''; - display: block; - width: 16px; - min-width: 16px; - height: 1px; - background: #c8a96e; - margin-top: 0.75em; + content: ""; + display: block; + width: 16px; + min-width: 16px; + height: 1px; + background: #c8a96e; + margin-top: 0.75em; } @media (max-width: 768px) { - #beneficios { - grid-template-columns: 1fr; - } + #beneficios { + grid-template-columns: 1fr; + } - #beneficios .card:first-child { - border-right: 1px solid rgba(255, 255, 255, 0.06); - border-bottom: none; - } + #beneficios .card:first-child { + border-right: 1px solid rgba(255, 255, 255, 0.06); + border-bottom: none; + } } /* Plans section */ #planes { - max-width: 1100px; - margin: 0 auto; - padding: 6rem 2rem; + max-width: 1100px; + margin: 0 auto; + padding: 6rem 2rem; } .section-header { - margin-bottom: 3rem; + margin-bottom: 3rem; } .section-eyebrow { - display: inline-block; - font-size: 0.68rem; - letter-spacing: 0.2em; - text-transform: uppercase; - color: #c8a96e; - margin-bottom: 1rem; + display: inline-block; + font-size: 0.68rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: #c8a96e; + margin-bottom: 1rem; } #planes h2 { - font-size: 2.2rem; - font-weight: normal; - color: #f5f0e8; - letter-spacing: -0.01em; + font-size: 2.2rem; + font-weight: normal; + color: #f5f0e8; + letter-spacing: -0.01em; } #planes table { - width: 100%; - border-collapse: collapse; + width: 100%; + border-collapse: collapse; } #planes thead tr { - border-bottom: 1px solid rgba(255, 255, 255, 0.08); + border-bottom: 1px solid rgba(255, 255, 255, 0.08); } #planes thead th { - padding: 1.25rem 1.5rem; - font-size: 0.72rem; - letter-spacing: 0.15em; - text-transform: uppercase; - font-weight: normal; - color: rgba(245, 240, 232, 0.35); - text-align: left; + padding: 1.25rem 1.5rem; + font-size: 0.72rem; + letter-spacing: 0.15em; + text-transform: uppercase; + font-weight: normal; + color: rgba(245, 240, 232, 0.35); + text-align: left; } #planes thead th.col-premium { - color: #c8a96e; - border-top: 1px solid rgba(200, 169, 110, 0.12); + color: #c8a96e; + border-top: 1px solid rgba(200, 169, 110, 0.12); } #planes tbody tr { - border-bottom: 1px solid rgba(255, 255, 255, 0.04); - transition: background 0.2s; + border-bottom: 1px solid rgba(255, 255, 255, 0.04); + transition: background 0.2s; } #planes tbody tr:hover { - background: rgba(255, 255, 255, 0.02); + background: rgba(255, 255, 255, 0.02); } #planes tbody td { - padding: 1.1rem 1.5rem; - font-size: 0.9rem; + padding: 1.1rem 1.5rem; + font-size: 0.9rem; } #planes tbody td:first-child { - color: rgba(245, 240, 232, 0.4); - font-size: 0.82rem; - letter-spacing: 0.04em; + color: rgba(245, 240, 232, 0.4); + font-size: 0.82rem; + letter-spacing: 0.04em; } #planes tbody td:not(:first-child) { - color: #f5f0e8; - font-size: 0.95rem; + color: #f5f0e8; + font-size: 0.95rem; } .col-premium { - background: rgba(200, 169, 110, 0.04); - border-left: 1px solid rgba(200, 169, 110, 0.12); - border-right: 1px solid rgba(200, 169, 110, 0.12); + background: rgba(200, 169, 110, 0.04); + border-left: 1px solid rgba(200, 169, 110, 0.12); + border-right: 1px solid rgba(200, 169, 110, 0.12); } -.check { color: #c8a96e; } -.dash { color: rgba(245, 240, 232, 0.15); } +.check { + color: #c8a96e; +} +.dash { + color: rgba(245, 240, 232, 0.15); +} /* Subscription Form */ #formulario { - max-width: 1100px; - margin: 0 auto; - padding: 6rem 2rem; - display: grid; - grid-template-columns: 1fr 2fr; - gap: 6rem; - align-items: start; + max-width: 1100px; + margin: 0 auto; + padding: 6rem 2rem; + display: grid; + grid-template-columns: 1fr 2fr; + gap: 6rem; + align-items: start; } .formulario-header { - position: sticky; - top: 80px; + position: sticky; + top: 80px; } .formulario-header .section-eyebrow { - display: inline-block; - font-size: 0.68rem; - letter-spacing: 0.2em; - text-transform: uppercase; - color: #c8a96e; - margin-bottom: 1rem; + display: inline-block; + font-size: 0.68rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: #c8a96e; + margin-bottom: 1rem; } .formulario-header h2 { - font-size: 2.2rem; - font-weight: normal; - line-height: 1.15; - color: #f5f0e8; - letter-spacing: -0.01em; - margin-bottom: 1.25rem; + font-size: 2.2rem; + font-weight: normal; + line-height: 1.15; + color: #f5f0e8; + letter-spacing: -0.01em; + margin-bottom: 1.25rem; } .formulario-header p { - font-size: 0.9rem; - line-height: 1.8; - color: rgba(245, 240, 232, 0.4); + font-size: 0.9rem; + line-height: 1.8; + color: rgba(245, 240, 232, 0.4); } form { - display: flex; - flex-direction: column; - gap: 0; + display: flex; + flex-direction: column; + gap: 0; } fieldset { - border: none; - border-top: 1px solid rgba(255, 255, 255, 0.06); - padding: 2rem 0; - display: flex; - flex-direction: column; - gap: 1.25rem; + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.06); + padding: 2rem 0; + display: flex; + flex-direction: column; + gap: 1.25rem; } legend { - font-size: 0.68rem; - letter-spacing: 0.2em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.25); - margin-bottom: 1.25rem; - padding: 0; - float: left; - width: 100%; + font-size: 0.68rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.25); + margin-bottom: 1.25rem; + padding: 0; + float: left; + width: 100%; } .field-group { - display: flex; - flex-direction: column; - gap: 0.5rem; + display: flex; + flex-direction: column; + gap: 0.5rem; } .field-row { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 1rem; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; } label { - font-size: 0.72rem; - letter-spacing: 0.1em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.35); + font-size: 0.72rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.35); } input[type="text"], @@ -550,510 +567,525 @@ input[type="email"], input[type="number"], textarea, select { - background: rgba(255, 255, 255, 0.04); - border: none; - border-bottom: 1px solid rgba(255, 255, 255, 0.15); - color: #f5f0e8; - font-family: Georgia, serif; - font-size: 0.95rem; - padding: 0.6rem 0.75rem; - outline: none; - transition: border-color 0.2s, background 0.2s; - width: 100%; + background: rgba(255, 255, 255, 0.04); + border: none; + border-bottom: 1px solid rgba(255, 255, 255, 0.15); + color: #f5f0e8; + font-family: Georgia, serif; + font-size: 0.95rem; + padding: 0.6rem 0.75rem; + outline: none; + transition: + border-color 0.2s, + background 0.2s; + width: 100%; } input[type="text"]:focus, input[type="email"]:focus, textarea:focus, select:focus { - border-bottom-color: #c8a96e; - background: rgba(255, 255, 255, 0.07); + border-bottom-color: #c8a96e; + background: rgba(255, 255, 255, 0.07); } input::placeholder { - color: rgba(245, 240, 232, 0.2); - font-family: Georgia, serif; + color: rgba(245, 240, 232, 0.2); + font-family: Georgia, serif; } select { - cursor: pointer; - appearance: none; - -webkit-appearance: none; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='rgba(245,240,232,0.3)' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); - background-repeat: no-repeat; - background-position: right 0.75rem center; - padding-right: 2.5rem; + cursor: pointer; + appearance: none; + -webkit-appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='rgba(245,240,232,0.3)' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + padding-right: 2.5rem; } select option { - background: #111; - color: #f5f0e8; + background: #111; + color: #f5f0e8; } textarea { - resize: vertical; - min-height: 100px; - line-height: 1.6; + resize: vertical; + min-height: 100px; + line-height: 1.6; } .radio-group { - display: flex; - gap: 2rem; - padding: 0.5rem 0; + display: flex; + gap: 2rem; + padding: 0.5rem 0; } .radio-group label { - display: flex; - align-items: center; - gap: 0.6rem; - flex-wrap: wrap; - font-size: 0.88rem; - letter-spacing: 0.03em; - text-transform: none; - color: rgba(245, 240, 232, 0.6); - cursor: pointer; + display: flex; + align-items: center; + gap: 0.6rem; + flex-wrap: wrap; + font-size: 0.88rem; + letter-spacing: 0.03em; + text-transform: none; + color: rgba(245, 240, 232, 0.6); + cursor: pointer; } .radio-group input[type="radio"] { - appearance: none; - -webkit-appearance: none; - width: 16px; - min-width: 16px; - height: 16px; - border: 1px solid rgba(245, 240, 232, 0.25); - border-radius: 50%; - cursor: pointer; - position: relative; - transition: border-color 0.2s; + appearance: none; + -webkit-appearance: none; + width: 16px; + min-width: 16px; + height: 16px; + border: 1px solid rgba(245, 240, 232, 0.25); + border-radius: 50%; + cursor: pointer; + position: relative; + transition: border-color 0.2s; } .radio-group input[type="radio"]:checked { - border-color: #c8a96e; + border-color: #c8a96e; } .radio-group input[type="radio"]::after { - content: ''; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%) scale(0); - width: 7px; - height: 7px; - border-radius: 50%; - background: #c8a96e; - transition: transform 0.15s ease; + content: ""; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%) scale(0); + width: 7px; + height: 7px; + border-radius: 50%; + background: #c8a96e; + transition: transform 0.15s ease; } .radio-group input[type="radio"]:checked::after { - transform: translate(-50%, -50%) scale(1); + transform: translate(-50%, -50%) scale(1); } .checkbox-group { - flex-direction: row; - align-items: center; - gap: 0.75rem; + flex-direction: row; + align-items: center; + gap: 0.75rem; } .checkbox-group input[type="checkbox"] { - appearance: none; - -webkit-appearance: none; - width: 15px; - min-width: 15px; - height: 15px; - border: 1px solid rgba(245, 240, 232, 0.25); - border-radius: 2px; - cursor: pointer; - position: relative; - transition: border-color 0.2s, background 0.2s; + appearance: none; + -webkit-appearance: none; + width: 15px; + min-width: 15px; + height: 15px; + border: 1px solid rgba(245, 240, 232, 0.25); + border-radius: 2px; + cursor: pointer; + position: relative; + transition: + border-color 0.2s, + background 0.2s; } .checkbox-group input[type="checkbox"]:checked { - background: #c8a96e; - border-color: #c8a96e; + background: #c8a96e; + border-color: #c8a96e; } .checkbox-group input[type="checkbox"]::after { - content: ''; - position: absolute; - top: 2px; - left: 5px; - width: 4px; - height: 7px; - border: 1px solid #0a0a0a; - border-top: none; - border-left: none; - transform: rotate(45deg) scale(0); - transition: transform 0.15s ease; + content: ""; + position: absolute; + top: 2px; + left: 5px; + width: 4px; + height: 7px; + border: 1px solid #0a0a0a; + border-top: none; + border-left: none; + transform: rotate(45deg) scale(0); + transition: transform 0.15s ease; } .checkbox-group input[type="checkbox"]:checked::after { - transform: rotate(45deg) scale(1); + transform: rotate(45deg) scale(1); } .checkbox-group label { - font-size: 0.85rem; - letter-spacing: 0.02em; - text-transform: none; - color: rgba(245, 240, 232, 0.5); - cursor: pointer; + font-size: 0.85rem; + letter-spacing: 0.02em; + text-transform: none; + color: rgba(245, 240, 232, 0.5); + cursor: pointer; } .student-badge { - font-size: 0.7rem; - letter-spacing: 0.05em; - color: #c8a96e; - border: 1px solid rgba(200, 169, 110, 0.3); - padding: 0.1rem 0.4rem; - border-radius: 2px; - margin-left: 0.4rem; - vertical-align: middle; + font-size: 0.7rem; + letter-spacing: 0.05em; + color: #c8a96e; + border: 1px solid rgba(200, 169, 110, 0.3); + padding: 0.1rem 0.4rem; + border-radius: 2px; + margin-left: 0.4rem; + vertical-align: middle; } .form-submit { - padding-top: 2rem; - border-top: 1px solid rgba(255, 255, 255, 0.06); + padding-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.06); } .input-icon-wrapper { - position: relative; - display: flex; - align-items: center; + position: relative; + display: flex; + align-items: center; } .input-icon { - position: absolute; - left: 0.75rem; - color: rgba(245, 240, 232, 0.25); - pointer-events: none; - transition: color 0.2s; + position: absolute; + left: 0.75rem; + color: rgba(245, 240, 232, 0.25); + pointer-events: none; + transition: color 0.2s; } .input-icon-wrapper input { - padding-left: 2.5rem; + padding-left: 2.5rem; } .input-icon-wrapper:focus-within .input-icon { - color: #c8a96e; + color: #c8a96e; } @media (max-width: 768px) { - #formulario { - grid-template-columns: 1fr; - gap: 3rem; - } + #formulario { + grid-template-columns: 1fr; + gap: 3rem; + } - .formulario-header { - position: static; - } + .formulario-header { + position: static; + } } .price-original { - text-decoration: line-through; - color: rgba(245, 240, 232, 0.25); - font-size: 0.85rem; + text-decoration: line-through; + color: rgba(245, 240, 232, 0.25); + font-size: 0.85rem; } .price-discount { - color: #c8a96e; - font-size: 0.72rem; - letter-spacing: 0.1em; - border: 1px solid rgba(200, 169, 110, 0.3); - padding: 0.1rem 0.4rem; - border-radius: 2px; - white-space: nowrap; + color: #c8a96e; + font-size: 0.72rem; + letter-spacing: 0.1em; + border: 1px solid rgba(200, 169, 110, 0.3); + padding: 0.1rem 0.4rem; + border-radius: 2px; + white-space: nowrap; } .price-new { - color: #f5f0e8; - font-size: 0.95rem; + color: #f5f0e8; + font-size: 0.95rem; } .char-counter { - font-size: 0.68rem; - letter-spacing: 0.08em; - color: rgba(245, 240, 232, 0.2); - text-align: right; - transition: color 0.2s; + font-size: 0.68rem; + letter-spacing: 0.08em; + color: rgba(245, 240, 232, 0.2); + text-align: right; + transition: color 0.2s; } .char-counter.near-limit { - color: #c8a96e; + color: #c8a96e; } .char-counter.at-limit { - color: rgba(220, 80, 80, 0.7); + color: rgba(220, 80, 80, 0.7); } .field-group.error input, .field-group.error textarea, .field-group.error select { - border-bottom-color: rgba(220, 80, 80, 0.6); - background: rgba(220, 80, 80, 0.04); + border-bottom-color: rgba(220, 80, 80, 0.6); + background: rgba(220, 80, 80, 0.04); } .field-group.success input, .field-group.success textarea, .field-group.success select { - border-bottom-color: rgba(100, 200, 130, 0.5); - background: rgba(100, 200, 130, 0.03); + border-bottom-color: rgba(100, 200, 130, 0.5); + background: rgba(100, 200, 130, 0.03); } .field-error-msg { - font-size: 0.68rem; - letter-spacing: 0.05em; - color: rgba(220, 80, 80, 0.7); - margin-top: 0.25rem; - display: none; + font-size: 0.68rem; + letter-spacing: 0.05em; + color: rgba(220, 80, 80, 0.7); + margin-top: 0.25rem; + display: none; } .field-group.error .field-error-msg { - display: block; + display: block; } .plan-preview { - margin-top: 2rem; - border-top: 1px solid rgba(255, 255, 255, 0.06); - padding-top: 1.5rem; - opacity: 0; - transform: translateY(8px); - transition: opacity 0.3s ease, transform 0.3s ease; - pointer-events: none; + margin-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.06); + padding-top: 1.5rem; + opacity: 0; + transform: translateY(8px); + transition: + opacity 0.3s ease, + transform 0.3s ease; + pointer-events: none; } .plan-preview.visible { - opacity: 1; - transform: translateY(0); - pointer-events: auto; + opacity: 1; + transform: translateY(0); + pointer-events: auto; } .plan-preview-label { - display: block; - font-size: 0.65rem; - letter-spacing: 0.2em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.25); - margin-bottom: 0.5rem; + display: block; + font-size: 0.65rem; + letter-spacing: 0.2em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.25); + margin-bottom: 0.5rem; } .plan-preview-name { - display: block; - font-size: 1.3rem; - font-weight: normal; - color: #f5f0e8; - margin-bottom: 0.25rem; + display: block; + font-size: 1.3rem; + font-weight: normal; + color: #f5f0e8; + margin-bottom: 0.25rem; } .plan-preview-price { - display: block; - font-size: 0.85rem; - color: #c8a96e; - margin-bottom: 1.25rem; - letter-spacing: 0.05em; + display: block; + font-size: 0.85rem; + color: #c8a96e; + margin-bottom: 1.25rem; + letter-spacing: 0.05em; } .plan-preview-features { - list-style: none; - display: flex; - flex-direction: column; - gap: 0.6rem; + list-style: none; + display: flex; + flex-direction: column; + gap: 0.6rem; } .plan-preview-features li { - display: flex; - align-items: flex-start; - gap: 0.75rem; - font-size: 0.8rem; - color: rgba(245, 240, 232, 0.45); - line-height: 1.4; + display: flex; + align-items: flex-start; + gap: 0.75rem; + font-size: 0.8rem; + color: rgba(245, 240, 232, 0.45); + line-height: 1.4; } .plan-preview-features li::before { - content: ''; - display: block; - width: 12px; - min-width: 12px; - height: 1px; - background: #c8a96e; - margin-top: 0.65em; + content: ""; + display: block; + width: 12px; + min-width: 12px; + height: 1px; + background: #c8a96e; + margin-top: 0.65em; } .card-brand { - position: absolute; - right: 0.75rem; - font-size: 0.65rem; - letter-spacing: 0.1em; - text-transform: uppercase; - color: #c8a96e; - opacity: 0; - transition: opacity 0.2s; - pointer-events: none; + position: absolute; + right: 0.75rem; + font-size: 0.65rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: #c8a96e; + opacity: 0; + transition: opacity 0.2s; + pointer-events: none; } .card-brand.visible { - opacity: 1; + opacity: 1; } /* Loading State */ .spinner { - width: 18px; - height: 18px; - border: 2px solid rgba(10, 10, 10, 0.3); - border-top-color: #0a0a0a; - border-radius: 50%; - animation: spin 0.7s linear infinite; - display: inline-block; - vertical-align: middle; - margin-right: 0.5rem; + width: 18px; + height: 18px; + border: 2px solid rgba(10, 10, 10, 0.3); + border-top-color: #0a0a0a; + border-radius: 50%; + animation: spin 0.7s linear infinite; + display: inline-block; + vertical-align: middle; + margin-right: 0.5rem; } @keyframes spin { - to { transform: rotate(360deg); } + to { + transform: rotate(360deg); + } } .cta-button.loading { - opacity: 0.8; - cursor: not-allowed; - pointer-events: none; - display: flex; - align-items: center; - justify-content: center; - gap: 0.5rem; + opacity: 0.8; + cursor: not-allowed; + pointer-events: none; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; } /* Confirmación */ #form-confirmation { - display: none; - flex-direction: column; - gap: 1.5rem; - padding: 3rem 0; - opacity: 0; - transform: translateY(12px); - transition: opacity 0.4s ease, transform 0.4s ease; + display: none; + flex-direction: column; + gap: 1.5rem; + padding: 3rem 0; + opacity: 0; + transform: translateY(12px); + transition: + opacity 0.4s ease, + transform 0.4s ease; } #form-confirmation.visible { - opacity: 1; - transform: translateY(0); + opacity: 1; + transform: translateY(0); } .confirmation-icon { - width: 48px; - height: 48px; - border: 1px solid rgba(200, 169, 110, 0.3); - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; + width: 48px; + height: 48px; + border: 1px solid rgba(200, 169, 110, 0.3); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; } .confirmation-icon svg { - color: #c8a96e; + color: #c8a96e; } .confirmation-title { - font-size: 1.8rem; - font-weight: normal; - color: #f5f0e8; - letter-spacing: -0.01em; - line-height: 1.2; + font-size: 1.8rem; + font-weight: normal; + color: #f5f0e8; + letter-spacing: -0.01em; + line-height: 1.2; } .confirmation-text { - font-size: 0.9rem; - line-height: 1.8; - color: rgba(245, 240, 232, 0.4); - max-width: 38ch; + font-size: 0.9rem; + line-height: 1.8; + color: rgba(245, 240, 232, 0.4); + max-width: 38ch; } .confirmation-detail { - font-size: 0.72rem; - letter-spacing: 0.1em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.2); - border-top: 1px solid rgba(255, 255, 255, 0.06); - padding-top: 1.5rem; + font-size: 0.72rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.2); + border-top: 1px solid rgba(255, 255, 255, 0.06); + padding-top: 1.5rem; } .confirmation-detail span { - color: #c8a96e; + color: #c8a96e; } - /* Footer */ #site-footer { - border-top: 1px solid rgba(255, 255, 255, 0.06); - margin-top: 6rem; + border-top: 1px solid rgba(255, 255, 255, 0.06); + margin-top: 6rem; } .footer-inner { - max-width: 1100px; - margin: 0 auto; - padding: 2.5rem 2rem; - display: flex; - align-items: center; - justify-content: space-between; + max-width: 1100px; + margin: 0 auto; + padding: 2.5rem 2rem; + display: flex; + align-items: center; + justify-content: space-between; } .footer-logo { - font-size: 1rem; - letter-spacing: 0.12em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.3); - text-decoration: none; - transition: color 0.2s; + font-size: 1rem; + letter-spacing: 0.12em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.3); + text-decoration: none; + transition: color 0.2s; } .footer-logo span { - color: rgba(200, 169, 110, 0.4); - transition: color 0.2s; + color: rgba(200, 169, 110, 0.4); + transition: color 0.2s; } -.footer-logo:hover { color: rgba(245, 240, 232, 0.6); } -.footer-logo:hover span { color: #c8a96e; } +.footer-logo:hover { + color: rgba(245, 240, 232, 0.6); +} +.footer-logo:hover span { + color: #c8a96e; +} .footer-links { - display: flex; - gap: 2rem; - list-style: none; + display: flex; + gap: 2rem; + list-style: none; } .footer-links a { - font-size: 0.72rem; - letter-spacing: 0.1em; - text-transform: uppercase; - color: rgba(245, 240, 232, 0.2); - text-decoration: none; - transition: color 0.2s; + font-size: 0.72rem; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(245, 240, 232, 0.2); + text-decoration: none; + transition: color 0.2s; } -.footer-links a:hover { color: rgba(245, 240, 232, 0.6); } +.footer-links a:hover { + color: rgba(245, 240, 232, 0.6); +} .footer-copy { - font-size: 0.72rem; - letter-spacing: 0.05em; - color: rgba(245, 240, 232, 0.15); + font-size: 0.72rem; + letter-spacing: 0.05em; + color: rgba(245, 240, 232, 0.15); } @media (max-width: 768px) { - .footer-inner { - flex-direction: column; - gap: 1.5rem; - text-align: center; - } + .footer-inner { + flex-direction: column; + gap: 1.5rem; + text-align: center; + } - .footer-links { - gap: 1.25rem; - } + .footer-links { + gap: 1.25rem; + } } #progress-bar { - position: fixed; - top: 0; - left: 0; - width: 0%; - height: 2px; - background: #c8a96e; - z-index: 9999; - transition: width 0.1s linear; -} \ No newline at end of file + position: fixed; + top: 0; + left: 0; + width: 0%; + height: 2px; + background: #c8a96e; + z-index: 9999; + transition: width 0.1s linear; +}