| | |
| | AOS.init({ |
| | duration: 1000, |
| | once: true, |
| | offset: 100 |
| | }); |
| |
|
| | |
| | window.addEventListener('scroll', () => { |
| | const scrolled = window.pageYOffset; |
| | const parallaxElements = document.querySelectorAll('.parallax-layer'); |
| | |
| | parallaxElements.forEach(element => { |
| | const speed = element.dataset.speed || 0.5; |
| | const yPos = -(scrolled * speed); |
| | element.style.transform = `translateY(${yPos}px)`; |
| | }); |
| | }); |
| |
|
| | |
| | function openModal(modalId) { |
| | const modal = document.getElementById(`${modalId}-modal`); |
| | modal.classList.remove('hidden'); |
| | document.body.style.overflow = 'hidden'; |
| | |
| | if (modalId === 'coa') { |
| | setTimeout(() => initCharts(), 100); |
| | } |
| | } |
| |
|
| | function closeModal(modalId) { |
| | const modal = document.getElementById(`${modalId}-modal`); |
| | modal.classList.add('hidden'); |
| | document.body.style.overflow = 'auto'; |
| | } |
| |
|
| | function showProductDetails(productId) { |
| | const productData = { |
| | '7OH-Coffee': { |
| | title: '7OH-COFFEE TABLETS', |
| | content: ` |
| | <div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
| | <div> |
| | <img src="https://static.photos/technology/640x360/123" alt="7OH Coffee" class="w-full rounded-lg mb-6"> |
| | <div class="glass-border p-6 rounded-xl"> |
| | <h3 class="font-bebas text-2xl text-primary-400 mb-4">SPECIFICATIONS</h3> |
| | <div class="space-y-2"> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Active Compound</span> |
| | <span class="text-primary-400">7-Hydroxymitragynine</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Dosage</span> |
| | <span class="text-primary-400">100mg per tablet</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Tablets per Bottle</span> |
| | <span class="text-primary-400">60 tablets</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Flavor</span> |
| | <span class="text-primary-400">Premium Coffee</span> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | <div> |
| | <h3 class="font-bebas text-2xl text-primary-400 mb-4">PRODUCT ANALYSIS</h3> |
| | <canvas id="productChart" class="mb-6"></canvas> |
| | <div class="glass-border p-6 rounded-xl"> |
| | <h4 class="font-bebas text-xl text-primary-400 mb-3">BATCH DATA</h4> |
| | <div class="space-y-2"> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Purity</span> |
| | <span class="text-primary-400">99.8%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Potency</span> |
| | <span class="text-primary-400">98.5%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Dissolution Rate</span> |
| | <span class="text-primary-400">95%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Stability</span> |
| | <span class="text-primary-400">24 months</span> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | ` |
| | }, |
| | 'Focus-Blend': { |
| | title: 'FOCUS BLEND', |
| | content: ` |
| | <div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
| | <div> |
| | <img src="https://static.photos/technology/640x360/456" alt="Focus Blend" class="w-full rounded-lg mb-6"> |
| | <div class="glass-border p-6 rounded-xl"> |
| | <h3 class="font-bebas text-2xl text-primary-400 mb-4">SPECIFICATIONS</h3> |
| | <div class="space-y-2"> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Active Compounds</span> |
| | <span class="text-primary-400">Multi-blend</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Dosage</span> |
| | <span class="text-primary-400">200mg per capsule</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Capsules per Bottle</span> |
| | <span class="text-primary-400">90 capsules</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Type</span> |
| | <span class="text-primary-400">Cognitive Enhancer</span> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | <div> |
| | <h3 class="font-bebas text-2xl text-primary-400 mb-4">PRODUCT ANALYSIS</h3> |
| | <canvas id="productChart" class="mb-6"></canvas> |
| | <div class="glass-border p-6 rounded-xl"> |
| | <h4 class="font-bebas text-xl text-primary-400 mb-3">BATCH DATA</h4> |
| | <div class="space-y-2"> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Purity</span> |
| | <span class="text-primary-400">99.2%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Potency</span> |
| | <span class="text-primary-400">97.8%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Bioavailability</span> |
| | <span class="text-primary-400">92%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Stability</span> |
| | <span class="text-primary-400">18 months</span> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | ` |
| | }, |
| | 'Recovery-Plus': { |
| | title: 'RECOVERY PLUS', |
| | content: ` |
| | <div class="grid grid-cols-1 lg:grid-cols-2 gap-8"> |
| | <div> |
| | <img src="https://static.photos/technology/640x360/789" alt="Recovery Plus" class="w-full rounded-lg mb-6"> |
| | <div class="glass-border p-6 rounded-xl"> |
| | <h3 class="font-bebas text-2xl text-primary-400 mb-4">SPECIFICATIONS</h3> |
| | <div class="space-y-2"> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Active Compounds</span> |
| | <span class="text-primary-400">Recovery Matrix</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Dosage</span> |
| | <span class="text-primary-400">300mg per serving</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Servings per Container</span> |
| | <span class="text-primary-400">30 servings</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Form</span> |
| | <span class="text-primary-400">Powder</span> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | <div> |
| | <h3 class="font-bebas text-2xl text-primary-400 mb-4">PRODUCT ANALYSIS</h3> |
| | <canvas id="productChart" class="mb-6"></canvas> |
| | <div class="glass-border p-6 rounded-xl"> |
| | <h4 class="font-bebas text-xl text-primary-400 mb-3">BATCH DATA</h4> |
| | <div class="space-y-2"> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Purity</span> |
| | <span class="text-primary-400">98.9%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Potency</span> |
| | <span class="text-primary-400">96.5%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Absorption Rate</span> |
| | <span class="text-primary-400">88%</span> |
| | </div> |
| | <div class="flex justify-between"> |
| | <span class="text-gray-400">Stability</span> |
| | <span class="text-primary-400">24 months</span> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | ` |
| | } |
| | }; |
| |
|
| | const product = productData[productId]; |
| | document.getElementById('product-title').textContent = product.title; |
| | document.getElementById('product-content').innerHTML = product.content; |
| | |
| | openModal('product'); |
| | setTimeout(() => initProductChart(), 100); |
| | } |
| |
|
| | |
| | function initCharts() { |
| | |
| | const purityCtx = document.getElementById('purityChart').getContext('2d'); |
| | new Chart(purityCtx, { |
| | type: 'doughnut', |
| | data: { |
| | labels: ['Pure Compound', 'Other'], |
| | datasets: [{ |
| | data: [99.8, 0.2], |
| | backgroundColor: ['#22c55e', '#4a5568'], |
| | borderWidth: 0 |
| | }] |
| | }, |
| | options: { |
| | responsive: true, |
| | plugins: { |
| | legend: { |
| | labels: { color: '#ffffff' } |
| | }, |
| | title: { |
| | display: true, |
| | text: 'PURITY ANALYSIS', |
| | color: '#22c55e', |
| | font: { size: 16, family: 'Bebas Neue' } |
| | } |
| | } |
| | } |
| | }); |
| |
|
| | |
| | const compoundCtx = document.getElementById('compoundChart').getContext('2d'); |
| | new Chart(compoundCtx, { |
| | type: 'bar', |
| | data: { |
| | labels: ['7OH', 'MG', 'Alkaloids', 'Flavonoids'], |
| | datasets: [{ |
| | label: 'Concentration (%)', |
| | data: [45, 25, 20, 10], |
| | backgroundColor: '#22c55e', |
| | borderWidth: 0 |
| | }] |
| | }, |
| | options: { |
| | responsive: true, |
| | plugins: { |
| | legend: { |
| | labels: { color: '#ffffff' } |
| | }, |
| | title: { |
| | display: true, |
| | text: 'COMPOUND BREAKDOWN', |
| | color: '#22c55e', |
| | font: { size: 16, family: 'Bebas Neue' } |
| | } |
| | }, |
| | scales: { |
| | y: { |
| | ticks: { color: '#ffffff' }, |
| | grid: { color: 'rgba(255, 255, 255, 0.1)' } |
| | }, |
| | x: { |
| | ticks: { color: '#ffffff' }, |
| | grid: { color: 'rgba(255, 255, 255, 0.1)' } |
| | } |
| | } |
| | } |
| | }); |
| | } |
| |
|
| | function initProductChart() { |
| | const productCtx = document.getElementById('productChart'); |
| | if (!productCtx) return; |
| | |
| | new Chart(productCtx.getContext('2d'), { |
| | type: 'radar', |
| | data: { |
| | labels: ['Purity', 'Potency', 'Bioavailability', 'Stability', 'Efficacy'], |
| | datasets: [{ |
| | label: 'Product Metrics', |
| | data: [99, 98, 95, 97, 96], |
| | backgroundColor: 'rgba(34, 197, 94, 0.2)', |
| | borderColor: '#22c55e', |
| | borderWidth: 2 |
| | }] |
| | }, |
| | options: { |
| | responsive: true, |
| | plugins: { |
| | legend: { |
| | labels: { color: '#ffffff' } |
| | } |
| | }, |
| | scales: { |
| | r: { |
| | angleLines: { color: 'rgba(255, 255, 255, 0.1)' }, |
| | grid: { color: 'rgba(255, 255, 255, 0.1)' }, |
| | pointLabels: { color: '#ffffff' }, |
| | ticks: { |
| | color: '#ffffff', |
| | backdropColor: 'transparent' |
| | } |
| | } |
| | } |
| | } |
| | }); |
| | } |
| |
|
| | |
| | feather.replace(); |
| |
|
| | |
| | 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' }); |
| | } |
| | }); |
| | }); |