Initial commit: Luftglanz drone website with integrated AI chat assistant

Features:
- Complete Luftglanz drone cleaning website
- AI chat assistant integrated with OpenAI API
- Expert product advice for AGO Quart and Mellerud cleaning products
- Formal German language support (Sie form)
- Secure PHP backend for API calls
- Responsive design with mobile support
- Product-specific knowledge base
- Safety statements from manufacturers
- Multi-page integration (index, products, services, contact)

Technical components:
- AI chat widget (js/ai-chat.js)
- Chat styling (css/components/ai-chat.css)
- Backend API (ai-chat-api.php)
- Product knowledge base with detailed specifications
- Demo and documentation files
This commit is contained in:
Luftglanz
2025-07-08 11:54:37 +02:00
commit ac7088c5ca
72 changed files with 7936 additions and 0 deletions

86
js/dark-mode.js Normal file
View File

@@ -0,0 +1,86 @@
/**
* Enhanced Styling Controller for Balancer.fi-inspired Theme
*/
(function() {
// Run on page load and after small delay to ensure all elements are available
document.addEventListener('DOMContentLoaded', function() {
enhanceCosmicStyles();
// Apply once more after a slight delay to handle dynamically loaded elements
setTimeout(enhanceCosmicStyles, 500);
});
function enhanceCosmicStyles() {
// Add subtle animations to cards
const cards = document.querySelectorAll('.service-card, .step-card, .contact-method, .gallery-item');
cards.forEach(function(card) {
card.style.transition = 'all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1)';
// Add hover effects if not already present
card.addEventListener('mouseenter', function() {
this.style.transform = 'translateY(-10px)';
this.style.boxShadow = '0 15px 30px rgba(0, 0, 0, 0.4), 0 0 15px rgba(0, 194, 255, 0.5)';
});
card.addEventListener('mouseleave', function() {
this.style.transform = 'translateY(0)';
this.style.boxShadow = '0 5px 15px rgba(0, 0, 0, 0.2)';
});
});
// Enhance form inputs for cosmic theme
const formElements = document.querySelectorAll('input:not(#chatInput), textarea, select');
formElements.forEach(function(element) {
element.style.backgroundColor = 'rgba(0, 0, 0, 0.2)';
element.style.color = 'var(--text-light)';
element.style.border = '1px solid rgba(255, 255, 255, 0.1)';
element.style.borderRadius = '6px';
element.style.padding = '1rem';
// Add focus effects
element.addEventListener('focus', function() {
this.style.borderColor = 'var(--accent-color)';
this.style.boxShadow = '0 0 0 2px rgba(0, 194, 255, 0.2)';
});
element.addEventListener('blur', function() {
this.style.borderColor = 'rgba(255, 255, 255, 0.1)';
this.style.boxShadow = 'none';
});
});
// Enhance buttons
const buttons = document.querySelectorAll('button[type="submit"], .btn-primary, .cta-button');
buttons.forEach(function(button) {
// Only apply if not already styled
if (!button.hasAttribute('data-cosmic-styled')) {
button.setAttribute('data-cosmic-styled', 'true');
// Apply gradient background if not already set
if (!button.style.background.includes('gradient')) {
button.style.background = 'linear-gradient(90deg, #5846f9, #00c2ff)';
}
button.style.color = 'white';
button.style.border = 'none';
button.style.borderRadius = '6px';
button.style.fontWeight = '600';
button.style.padding = '0.8rem 1.5rem';
button.style.cursor = 'pointer';
button.style.transition = 'all 0.3s ease';
button.style.boxShadow = '0 0 15px rgba(0, 194, 255, 0.5)';
// Add hover effects
button.addEventListener('mouseenter', function() {
this.style.transform = 'translateY(-2px)';
this.style.boxShadow = '0 0 25px rgba(0, 194, 255, 0.7)';
});
button.addEventListener('mouseleave', function() {
this.style.transform = 'translateY(0)';
this.style.boxShadow = '0 0 15px rgba(0, 194, 255, 0.5)';
});
}
});
}
})();