Загрузить файлы в «sk1/src/public»

This commit is contained in:
Yan Kasabutski 2025-05-11 09:57:59 +00:00
parent 2758088ce5
commit 9cf4cc8dfd
9 changed files with 2154 additions and 0 deletions

304
sk1/src/public/auth.css Normal file
View File

@ -0,0 +1,304 @@
/* Authentication Styles for Brabus Website */
/* Auth Container */
.auth-container {
padding: 150px 20px 80px;
min-height: calc(100vh - 70px);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(to bottom, var(--light-bg), #ffffff);
}
.auth-card {
width: 100%;
max-width: 480px;
background-color: white;
border-radius: 20px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08);
padding: 40px;
transition: var(--transition);
}
.auth-header {
text-align: center;
margin-bottom: 30px;
}
.auth-header h2 {
font-size: 32px;
font-weight: 600;
color: var(--text-dark);
margin-bottom: 10px;
letter-spacing: -0.02em;
}
.auth-header p {
color: var(--secondary-text);
font-size: 16px;
}
/* Auth Forms */
.auth-form {
display: none;
}
.auth-form.active {
display: block;
}
.form-group {
margin-bottom: 24px;
position: relative;
}
.form-group.half {
width: calc(50% - 10px);
display: inline-block;
}
.form-group.half:first-of-type {
margin-right: 16px;
}
.form-group label {
display: block;
font-size: 14px;
font-weight: 500;
margin-bottom: 8px;
color: var(--text-dark);
}
.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="password"] {
width: 100%;
padding: 14px 16px;
font-size: 16px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #ffffff;
transition: var(--transition);
}
.form-group input:focus {
border-color: var(--primary-color);
outline: none;
box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.2);
}
/* Password field with toggle */
.password-field {
position: relative;
}
.toggle-password {
position: absolute;
right: 16px;
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
cursor: pointer;
color: var(--secondary-text);
transition: var(--transition);
padding: 0;
}
.toggle-password:hover {
color: var(--text-dark);
}
/* Password strength indicator */
.password-strength {
margin-top: 10px;
display: flex;
flex-direction: column;
}
.strength-bar {
height: 4px;
width: 100%;
background-color: #e0e0e0;
border-radius: 2px;
overflow: hidden;
position: relative;
}
.strength-bar::before {
content: '';
position: absolute;
height: 100%;
width: 0;
background-color: #ff3b30;
transition: var(--transition);
}
.strength-bar.weak::before {
width: 33%;
background-color: #ff3b30;
}
.strength-bar.medium::before {
width: 66%;
background-color: #ff9500;
}
.strength-bar.strong::before {
width: 100%;
background-color: #28cd41;
}
.strength-text {
font-size: 12px;
color: var(--secondary-text);
margin-top: 5px;
}
/* Checkbox styling */
.checkbox-container {
display: flex;
align-items: flex-start;
}
.checkbox-container input[type="checkbox"] {
width: 18px;
height: 18px;
margin-right: 10px;
margin-top: 2px;
accent-color: var(--primary-color);
}
.checkbox-container label {
margin-bottom: 0;
font-size: 14px;
line-height: 1.4;
}
.checkbox-container a {
color: var(--primary-color);
text-decoration: none;
}
.checkbox-container a:hover {
text-decoration: underline;
}
/* Form actions and buttons */
.form-actions {
margin-top: 32px;
}
.btn-auth {
width: 100%;
padding: 14px;
background-color: var(--primary-color);
color: white;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: var(--transition);
}
.btn-auth:hover {
background-color: var(--primary-hover);
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.btn-auth:active {
transform: translateY(0);
}
/* Auth links */
.auth-links {
margin-top: 20px;
text-align: center;
font-size: 14px;
color: var(--secondary-text);
}
.auth-links a {
color: var(--primary-color);
text-decoration: none;
font-weight: 500;
transition: var(--transition);
}
.auth-links a:hover {
text-decoration: underline;
}
.auth-links p:not(:last-child) {
margin-bottom: 10px;
}
/* Error message */
.error-message {
background-color: rgba(255, 59, 48, 0.1);
color: #ff3b30;
padding: 12px;
border-radius: 8px;
margin-bottom: 20px;
font-size: 14px;
display: none;
}
.error-message.show {
display: block;
}
/* Social login */
.social-login {
margin: 30px 0;
text-align: center;
position: relative;
}
.social-login::before {
content: '';
position: absolute;
top: 50%;
left: 0;
right: 0;
height: 1px;
background-color: #e0e0e0;
z-index: 1;
}
.social-login span {
position: relative;
z-index: 2;
background-color: white;
padding: 0 15px;
color: var(--secondary-text);
font-size: 14px;
}
.social-buttons {
display: flex;
justify-content: center;
gap: 15px;
margin-top: 20px;
}
.social-btn {
width: 50px;
height: 50px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background-color: #f5f5f7;
border: none;
cursor: pointer;
transition: var(--transition);
}
.social-btn i {
font-size: 20px;
}
.social-btn

35
sk1/src/public/cart.html Normal file
View File

@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cart</title>
</head>
<body>
<h2>Your Cart</h2>
<table>
<thead>
<tr>
<th>Vehicle</th>
<th>Price</th>
<th>Quantity</th>
<th>Total</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
{% for item in cart_items %}
<tr>
<td>{{ item.vehicle.name }}</td>
<td>${{ item.vehicle.price }}</td>
<td>{{ item.quantity }}</td>
<td>${{ item.vehicle.price * item.quantity }}</td>
<td><a href="{{ url_for('remove_from_cart', item_id=item.id) }}">Remove</a></td>
</tr>
{% endfor %}
</tbody>
</table>
<h3>Total Price: ${{ total_price }}</h3>
<button>Proceed to Checkout</button>
</body>
</html>

198
sk1/src/public/index.html Normal file
View File

@ -0,0 +1,198 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Brabus Premium Automotive | Official Site</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<meta name="description" content="Discover the ultimate luxury performance vehicles at Brabus. Explore our exclusive collection of premium automobiles engineered for excellence.">
</head>
<body>
<header>
<div class="header-container">
<div class="logo">
<a href="index.html">
<img src="images/logo.png" alt="Brabus Logo">
</a>
</div>
<nav>
<ul>
<li><a href="index.html" class="nav-link active">Home</a></li>
<li><a href="vehicles.html" class="nav-link">Vehicles</a></li>
<li><a href="#heritage" class="nav-link">Heritage</a></li>
<li><a href="#experience" class="nav-link">Experience</a></li>
<li><a href="#" class="nav-link" id="cart-link"><i class="fas fa-shopping-cart"></i> <span id="cart-count">0</span></a></li>
<li><a href="login.html" class="nav-link" id="login-link">Sign In</a></li>
</ul>
</nav>
</div>
</header>
<!-- Hero Section -->
<section class="intro">
<img src="images/intro.png" alt="Brabus Premium Vehicle" class="intro-image">
<div class="hero-content">
<h1>Elevate Your Drive</h1>
<a href="vehicles.html" class="btn-main">Explore the Collection</a>
</div>
</section>
<!-- Vehicle Gallery -->
<section class="vehicle-gallery">
<div class="container">
<h2>Masterpieces of Engineering</h2>
<div class="carousel-container">
<button class="carousel-btn left" id="prev-btn" aria-label="Previous car">
<i class="fas fa-chevron-left"></i>
</button>
<div class="carousel">
<div class="carousel-item" id="car1">
<img src="images/car1carusel.png" alt="Brabus Sport Model">
</div>
<div class="carousel-item" id="car2">
<img src="images/car2carusel.png" alt="Brabus SUV Model">
</div>
<div class="carousel-item" id="car3">
<img src="images/car3carusel.png" alt="Brabus Luxury Model">
</div>
</div>
<button class="carousel-btn right" id="next-btn" aria-label="Next car">
<i class="fas fa-chevron-right"></i>
</button>
</div>
<div class="carousel-indicators" id="indicators">
<div class="indicator active" data-index="0"></div>
<div class="indicator" data-index="1"></div>
<div class="indicator" data-index="2"></div>
</div>
<a href="vehicles.html" class="btn-buy">Configure Yours</a>
</div>
</section>
<!-- Vehicle Categories -->
<section class="advertisement" id="heritage">
<div class="container">
<div class="advertisement-item">
<div class="advertisement-img-container">
<img src="images/car1.png" alt="Sport Class" class="advertisement-img">
</div>
<div class="advertisement-text">
<h3>Sport Class</h3>
<p>Unparalleled performance engineered for those who demand the extraordinary. Experience the perfect fusion of power and precision.</p>
</div>
</div>
<div class="advertisement-item">
<div class="advertisement-img-container">
<img src="images/car2.png" alt="Off-road Class" class="advertisement-img">
</div>
<div class="advertisement-text">
<h3>Off-road Class</h3>
<p>Conquer any terrain with confidence. Built with rugged sophistication and uncompromising capability for adventurous spirits.</p>
</div>
</div>
<div class="advertisement-item">
<div class="advertisement-img-container">
<img src="images/car3.png" alt="Luxury Class" class="advertisement-img">
</div>
<div class="advertisement-text">
<h3>Luxury Class</h3>
<p>The pinnacle of automotive refinement. Where meticulous craftsmanship meets innovative technology for an unmatched driving experience.</p>
</div>
</div>
</div>
</section>
<!-- Call to Action -->
<section class="cta-section" id="experience">
<div class="container">
<h2>Customize Your Brabus</h2>
<p>Work with our expert designers to create a vehicle that's as unique as you are.</p>
<a href="vehicles.html" class="btn-main">Start Customization</a>
</div>
</section>
<!-- Cart Overlay -->
<div class="cart-overlay" id="cart-overlay">
<div class="cart-content">
<div class="cart-header">
<h2>Your Cart</h2>
<button class="close-cart"><i class="fas fa-times"></i></button>
</div>
<div class="cart-items" id="cart-items">
<!-- Cart items will be added here dynamically -->
</div>
<div class="cart-footer">
<div class="cart-total">
<span>Total:</span>
<span id="cart-total-price">$0</span>
</div>
<button class="btn-checkout" id="checkout-btn">Proceed to Checkout</button>
</div>
</div>
</div>
<!-- Footer -->
<footer>
<div class="container">
<div class="footer-content">
<div class="footer-column">
<h4>Models</h4>
<ul>
<li><a href="vehicles.html?category=sport">Sport Series</a></li>
<li><a href="vehicles.html?category=offroad">Off-road Series</a></li>
<li><a href="vehicles.html?category=luxury">Luxury Series</a></li>
<li><a href="vehicles.html">Limited Editions</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Services</h4>
<ul>
<li><a href="#">Financing</a></li>
<li><a href="#">Maintenance</a></li>
<li><a href="#">Customization</a></li>
<li><a href="#">Warranty</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Company</h4>
<ul>
<li><a href="#">About Us</a></li>
<li><a href="#">Careers</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Legal</h4>
<ul>
<li><a href="#">Privacy Policy</a></li>
<li><a href="#">Terms of Service</a></li>
<li><a href="#">Cookie Policy</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2025 Brabus Automotive. All rights reserved.</p>
<div class="social-icons">
<a href="#" class="social-icon" aria-label="Facebook"><i class="fab fa-facebook-f"></i></a>
<a href="#" class="social-icon" aria-label="Instagram"><i class="fab fa-instagram"></i></a>
<a href="#" class="social-icon" aria-label="Twitter"><i class="fab fa-twitter"></i></a>
<a href="#" class="social-icon" aria-label="YouTube"><i class="fab fa-youtube"></i></a>
</div>
</div>
</div>
</footer>
<script src="script.js"></script>
<script src="cart.js"></script>
</body>
</html>

108
sk1/src/public/login.html Normal file
View File

@ -0,0 +1,108 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login - Brabus Premium Automotive</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="auth.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
<header>
<div class="header-container">
<div class="logo">
<a href="index.html">
<img src="images/logo.png" alt="Brabus Logo">
</a>
</div>
<nav>
<ul>
<li><a href="index.html" class="nav-link">Home</a></li>
<li><a href="vehicles.html" class="nav-link">Vehicles</a></li>
<li><a href="index.html#heritage" class="nav-link">Heritage</a></li>
<li><a href="index.html#experience" class="nav-link">Experience</a></li>
<li><a href="#" class="nav-link" id="cart-link"><i class="fas fa-shopping-cart"></i> <span id="cart-count">0</span></a></li>
<li><a href="login.html" class="nav-link active" id="login-link">Sign In</a></li>
</ul>
</nav>
</div>
</header>
<main class="auth-container">
<div class="auth-card">
<div class="auth-header">
<h2 id="auth-title">Sign In</h2>
<p id="auth-subtitle">Use your Brabus account</p>
</div>
<div id="error-message" class="error-message"></div>
<!-- Login Form -->
<form id="login-form" class="auth-form active">
<div class="form-group">
<label for="login-email">Email</label>
<input type="email" id="login-email" required>
</div>
<div class="form-group">
<label for="login-password">Password</label>
<div class="password-field">
<input type="password" id="login-password" required>
<button type="button" class="toggle-password" aria-label="Toggle password visibility">
<i class="far fa-eye"></i>
</button>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn-auth">Sign In</button>
</div>
<div class="auth-links">
<p>Don't have an account? <a href="#" id="to-register">Create one</a></p>
<p><a href="#" class="forgot-password">Forgot password?</a></p>
</div>
</form>
<!-- Register Form -->
<form id="register-form" class="auth-form">
<div class="form-group half">
<label for="reg-first-name">First Name</label>
<input type="text" id="reg-first-name" required>
</div>
<div class="form-group half">
<label for="reg-last-name">Last Name</label>
<input type="text" id="reg-last-name" required>
</div>
<div class="form-group">
<label for="reg-email">Email</label>
<input type="email" id="reg-email" required>
</div>
<div class="form-group">
<label for="reg-password">Password</label>
<div class="password-field">
<input type="password" id="reg-password" required>
<button type="button" class="toggle-password" aria-label="Toggle password visibility">
<i class="far fa-eye"></i>
</button>
</div>
<div class="password-strength">
<div class="strength-bar"></div>
<span class="strength-text">Password strength</span>
</div>
</div>
<div class="form-group">
<label for="reg-confirm-password">Confirm Password</label>
<div class="password-field">
<input type="password" id="reg-confirm-password" required>
<button type="button" class="toggle-password" aria-label="Toggle password visibility">
<i class="far fa-eye"></i>
</button>
</div>
</div>
<div class="form-group">
<div class="checkbox-container">
<input type="checkbox" id="terms" required>
<label for="terms">I agree to the <a href="#">Terms and Conditions</a></label>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn-auth">

169
sk1/src/public/script.js Normal file
View File

@ -0,0 +1,169 @@
// Modern JavaScript for Brabus website
document.addEventListener('DOMContentLoaded', function() {
// Elements
const header = document.querySelector('header');
const cars = document.querySelectorAll('.carousel-item');
const indicators = document.querySelectorAll('.indicator');
const totalCars = cars.length;
const prevBtn = document.getElementById('prev-btn');
const nextBtn = document.getElementById('next-btn');
// Initial state
let currentIndex = 0;
let isAnimating = false;
// Header scroll effect
function handleHeaderScroll() {
if (window.scrollY > 50) {
header.style.backgroundColor = 'rgba(29, 29, 31, 0.95)';
header.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.1)';
} else {
header.style.backgroundColor = 'rgba(29, 29, 31, 0.8)';
header.style.boxShadow = 'none';
}
}
window.addEventListener('scroll', handleHeaderScroll);
// Carousel navigation
function showCar(index) {
if (isAnimating) return;
isAnimating = true;
// Update carousel position
cars.forEach((car, i) => {
car.style.transform = `translateX(${(i - index) * 100}%)`;
});
// Update indicators
indicators.forEach((indicator, i) => {
indicator.classList.toggle('active', i === index);
});
// Reset animation lock after transition finishes
setTimeout(() => {
isAnimating = false;
}, 800); // Match CSS transition time
currentIndex = index;
}
// Event listeners for buttons
prevBtn.addEventListener('click', () => {
const newIndex = (currentIndex - 1 + totalCars) % totalCars;
showCar(newIndex);
});
nextBtn.addEventListener('click', () => {
const newIndex = (currentIndex + 1) % totalCars;
showCar(newIndex);
});
// Event listeners for indicators
indicators.forEach(indicator => {
indicator.addEventListener('click', () => {
const index = parseInt(indicator.dataset.index);
showCar(index);
});
});
// Auto-rotate carousel
let carouselInterval = setInterval(() => {
showCar((currentIndex + 1) % totalCars);
}, 5000);
// Pause auto-rotation when user interacts with carousel
const carouselContainer = document.querySelector('.carousel-container');
carouselContainer.addEventListener('mouseenter', () => {
clearInterval(carouselInterval);
});
carouselContainer.addEventListener('mouseleave', () => {
carouselInterval = setInterval(() => {
showCar((currentIndex + 1) % totalCars);
}, 5000);
});
// Button hover effects
const buttons = document.querySelectorAll('.btn-main, .btn-buy');
buttons.forEach(button => {
button.addEventListener('mouseenter', () => {
button.style.transform = 'translateY(-2px)';
button.style.boxShadow = '0 4px 12px rgba(0, 0, 0, 0.15)';
});
button.addEventListener('mouseleave', () => {
button.style.transform = '';
button.style.boxShadow = '';
});
});
// Smooth scroll for navigation links
const navLinks = document.querySelectorAll('.nav-link');
navLinks.forEach(link => {
link.addEventListener('click', (e) => {
e.preventDefault();
// Add smooth scroll logic here when sections are added
});
});
// Touch support for carousel
let touchStartX = 0;
let touchEndX = 0;
const carousel = document.querySelector('.carousel');
carousel.addEventListener('touchstart', (e) => {
touchStartX = e.changedTouches[0].screenX;
}, { passive: true });
carousel.addEventListener('touchend', (e) => {
touchEndX = e.changedTouches[0].screenX;
handleSwipe();
}, { passive: true });
function handleSwipe() {
const threshold = 50; // Minimum swiping distance
if (touchStartX - touchEndX > threshold) {
// Swipe left -> next
showCar((currentIndex + 1) % totalCars);
} else if (touchEndX - touchStartX > threshold) {
// Swipe right -> prev
showCar((currentIndex - 1 + totalCars) % totalCars);
}
}
// Initialize carousel
showCar(currentIndex);
handleHeaderScroll(); // Set initial header state
// Reveal animations on scroll
const animatedElements = document.querySelectorAll('.advertisement-item');
function checkScroll() {
animatedElements.forEach(element => {
const elementTop = element.getBoundingClientRect().top;
const windowHeight = window.innerHeight;
if (elementTop < windowHeight - 100) {
element.style.opacity = 1;
element.style.transform = 'translateY(0)';
}
});
}
// Set initial state for animation
animatedElements.forEach(element => {
element.style.opacity = 0;
element.style.transform = 'translateY(30px)';
element.style.transition = 'opacity 0.8s ease, transform 0.8s ease';
});
// Check elements' position on load and scroll
window.addEventListener('load', checkScroll);
window.addEventListener('scroll', checkScroll);
});

505
sk1/src/public/styles.css Normal file
View File

@ -0,0 +1,505 @@
/* Modern Apple-style CSS */
@import url('https://fonts.googleapis.com/css2?family=SF+Pro+Display:wght@300;400;500;600;700&display=swap');
:root {
--primary-color: #0071e3;
--primary-hover: #0077ed;
--dark-bg: #1d1d1f;
--light-bg: #f5f5f7;
--text-dark: #1d1d1f;
--text-light: #f5f5f7;
--secondary-text: #86868b;
--transition: all 0.3s cubic-bezier(0.42, 0, 0.58, 1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, sans-serif;
margin: 0;
padding: 0;
color: var(--text-dark);
background-color: var(--light-bg);
line-height: 1.5;
overflow-x: hidden;
}
.container {
width: 100%;
max-width: 1280px;
margin: 0 auto;
padding: 0 20px;
}
/* Header styles */
header {
background-color: rgba(29, 29, 31, 0.8);
backdrop-filter: saturate(180%) blur(20px);
position: fixed;
width: 100%;
top: 0;
z-index: 1000;
transition: var(--transition);
}
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
height: 70px;
padding: 0 40px;
}
.logo img {
width: 120px;
height: auto;
transition: var(--transition);
}
nav ul {
list-style: none;
display: flex;
gap: 30px;
}
nav a {
color: var(--text-light);
text-decoration: none;
font-size: 16px;
font-weight: 400;
letter-spacing: -0.01em;
position: relative;
transition: var(--transition);
}
nav a:hover {
color: var(--primary-color);
}
nav a::after {
content: '';
position: absolute;
bottom: -5px;
left: 0;
width: 0;
height: 2px;
background-color: var(--primary-color);
transition: var(--transition);
}
nav a:hover::after {
width: 100%;
}
/* Hero section */
.intro {
position: relative;
width: 100%;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
margin-top: 70px;
}
.intro-image {
width: 100%;
height: 100%;
object-fit: cover;
filter: brightness(0.8);
transition: transform 8s ease;
}
.intro:hover .intro-image {
transform: scale(1.05);
}
.hero-content {
position: absolute;
text-align: center;
max-width: 800px;
padding: 0 20px;
z-index: 2;
}
.hero-content h1 {
font-size: 56px;
font-weight: 600;
color: var(--text-light);
margin-bottom: 20px;
letter-spacing: -0.02em;
line-height: 1.1;
}
.btn-main {
padding: 12px 30px;
font-size: 17px;
background-color: var(--primary-color);
border: none;
color: white;
cursor: pointer;
border-radius: 30px;
transition: var(--transition);
font-weight: 400;
letter-spacing: -0.01em;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-main:hover {
background-color: var(--primary-hover);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
/* Vehicle gallery */
.vehicle-gallery {
text-align: center;
padding: 120px 0;
background-color: white;
}
.vehicle-gallery h2 {
font-size: 48px;
font-weight: 600;
margin-bottom: 60px;
letter-spacing: -0.02em;
}
.carousel-container {
position: relative;
display: flex;
justify-content: center;
align-items: center;
margin: 0 auto;
width: 90%;
max-width: 1200px;
height: 500px;
overflow: hidden;
}
.carousel {
display: flex;
width: 100%;
height: 100%;
transition: var(--transition);
}
.carousel-item {
min-width: 100%;
position: relative;
transition: transform 0.8s cubic-bezier(0.42, 0, 0.58, 1);
}
.carousel img {
width: 100%;
height: 100%;
object-fit: contain;
transition: var(--transition);
}
.carousel-btn {
background-color: rgba(255, 255, 255, 0.2);
color: var(--text-dark);
font-size: 24px;
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 50px;
height: 50px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
border: none;
border-radius: 50%;
z-index: 10;
backdrop-filter: blur(10px);
transition: var(--transition);
}
.carousel-btn:hover {
background-color: rgba(255, 255, 255, 0.3);
}
.left {
left: 20px;
}
.right {
right: 20px;
}
.carousel-indicators {
display: flex;
justify-content: center;
gap: 10px;
margin-top: 30px;
}
.indicator {
width: 10px;
height: 10px;
border-radius: 50%;
background-color: var(--secondary-text);
cursor: pointer;
transition: var(--transition);
}
.indicator.active {
background-color: var(--primary-color);
width: 20px;
border-radius: 5px;
}
.btn-buy {
padding: 12px 30px;
background-color: var(--primary-color);
color: white;
font-size: 17px;
border: none;
border-radius: 30px;
cursor: pointer;
margin-top: 40px;
font-weight: 400;
letter-spacing: -0.01em;
transition: var(--transition);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.btn-buy:hover {
background-color: var(--primary-hover);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
/* Car classes */
.advertisement {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 30px;
padding: 100px 0;
background-color: var(--light-bg);
}
.advertisement-item {
flex: 1;
min-width: 300px;
background-color: white;
border-radius: 20px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: var(--transition);
}
.advertisement-item:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
}
.advertisement-img-container {
height: 250px;
overflow: hidden;
}
.advertisement-img {
width: 100%;
height: 100%;
object-fit: cover;
transition: var(--transition);
}
.advertisement-item:hover .advertisement-img {
transform: scale(1.05);
}
.advertisement-text {
padding: 30px;
text-align: center;
}
.advertisement-text h3 {
font-size: 24px;
font-weight: 600;
margin-bottom: 15px;
letter-spacing: -0.01em;
}
.advertisement-text p {
color: var(--secondary-text);
line-height: 1.6;
}
/* Call to action section */
.cta-section {
background-color: var(--dark-bg);
color: var(--text-light);
text-align: center;
padding: 100px 20px;
}
.cta-section h2 {
font-size: 48px;
font-weight: 600;
margin-bottom: 20px;
letter-spacing: -0.02em;
}
.cta-section p {
font-size: 21px;
max-width: 600px;
margin: 0 auto 40px;
color: var(--secondary-text);
}
/* Footer */
footer {
background-color: var(--dark-bg);
color: var(--secondary-text);
padding: 60px 0 30px;
}
.footer-content {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin-bottom: 40px;
}
.footer-column {
min-width: 200px;
margin-bottom: 30px;
}
.footer-column h4 {
color: var(--text-light);
margin-bottom: 20px;
font-size: 18px;
}
.footer-column ul {
list-style: none;
}
.footer-column li {
margin-bottom: 10px;
}
.footer-column a {
color: var(--secondary-text);
text-decoration: none;
transition: var(--transition);
}
.footer-column a:hover {
color: var(--text-light);
}
.footer-bottom {
padding-top: 30px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
text-align: center;
font-size: 14px;
}
.social-icons {
display: flex;
gap: 20px;
margin-top: 20px;
justify-content: center;
}
.social-icon {
width: 40px;
height: 40px;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: center;
transition: var(--transition);
}
.social-icon:hover {
background-color: var(--primary-color);
}
/* Responsive adjustments */
@media (max-width: 992px) {
.header-container {
padding: 0 20px;
}
.hero-content h1 {
font-size: 42px;
}
.advertisement {
padding: 80px 20px;
justify-content: center;
}
.advertisement-item {
flex: 0 0 calc(50% - 15px);
}
}
@media (max-width: 768px) {
nav ul {
gap: 15px;
}
nav a {
font-size: 14px;
}
.hero-content h1 {
font-size: 36px;
}
.advertisement-item {
flex: 0 0 100%;
}
.vehicle-gallery h2,
.cta-section h2 {
font-size: 36px;
}
.cta-section p {
font-size: 18px;
}
}
@media (max-width: 576px) {
.header-container {
flex-direction: column;
height: auto;
padding: 20px;
}
nav ul {
flex-wrap: wrap;
justify-content: center;
padding: 10px 0;
}
.hero-content h1 {
font-size: 32px;
}
.carousel-btn {
width: 40px;
height: 40px;
}
.footer-content {
flex-direction: column;
text-align: center;
}
}

475
sk1/src/public/vehicles.css Normal file
View File

@ -0,0 +1,475 @@
/* Vehicles Page Styles */
/* Hero section */
.vehicles-container {
padding-top: 70px;
}
.vehicles-hero {
background: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.6)), url('images/vehicles-hero.jpg');
background-size: cover;
background-position: center;
height: 50vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: var(--text-light);
text-align: center;
padding: 0 20px;
}
.vehicles-hero h1 {
font-size: 56px;
font-weight: 600;
margin-bottom: 20px;
letter-spacing: -0.02em;
}
.vehicles-hero p {
font-size: 21px;
max-width: 600px;
}
/* Filters section */
.vehicles-filters {
background-color: white;
padding: 30px 0;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
position: sticky;
top: 70px;
z-index: 100;
}
.filter-wrapper {
display: flex;
gap: 30px;
flex-wrap: wrap;
}
.filter-group {
flex: 1;
min-width: 200px;
}
.filter-group label {
display: block;
font-size: 14px;
font-weight: 500;
margin-bottom: 8px;
color: var(--text-dark);
}
.filter-group select {
width: 100%;
padding: 12px 16px;
font-size: 16px;
border: 1px solid #e0e0e0;
border-radius: 8px;
background-color: #ffffff;
appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%231d1d1f' viewBox='0 0 16 16'%3E%3Cpath d='M8 11.5l-5-5 1.5-1.5L8 8.5l3.5-3.5L13 6.5l-5 5z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 16px center;
cursor: pointer;
}
.filter-group select:focus {
border-color: var(--primary-color);
outline: none;
box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.2);
}
/* Vehicles grid */
.vehicles-grid {
padding: 80px 0;
background-color: var(--light-bg);
}
.vehicles-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 30px;
}
/* Vehicle cards */
.vehicle-card {
background-color: white;
border-radius: 20px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.05);
transition: var(--transition);
position: relative;
}
.vehicle-card:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
}
.vehicle-image {
height: 220px;
position: relative;
overflow: hidden;
}
.vehicle-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: var(--transition);
}
.vehicle-card:hover .vehicle-image img {
transform: scale(1.05);
}
.vehicle-badge {
position: absolute;
top: 20px;
right: 20px;
background-color: var(--primary-color);
color: white;
padding: 6px 12px;
font-size: 12px;
font-weight: 500;
border-radius: 30px;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.vehicle-info {
padding: 25px;
}
.vehicle-info h3 {
font-size: 22px;
font-weight: 600;
margin-bottom: 15px;
letter-spacing: -0.01em;
}
.vehicle-specs {
display: flex;
justify-content: space-between;
margin-bottom: 20px;
flex-wrap: wrap;
}
.spec {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
padding: 5px;
}
.spec i {
color: var(--primary-color);
font-size: 18px;
}
.spec span {
font-size: 14px;
color: var(--secondary-text);
}
.vehicle-price {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20px;
border-top: 1px solid #f0f0f0;
padding-top: 20px;
}
.price {
font-size: 24px;
font-weight: 600;
color: var(--text-dark);
}
.add-to-cart {
font-size: 15px;
padding: 10px 20px;
}
/* Cart overlay */
.cart-overlay {
position: fixed;
top: 0;
right: -400px;
width: 400px;
height: 100vh;
background-color: white;
box-shadow: -5px 0 30px rgba(0, 0, 0, 0.1);
z-index: 1001;
transition: right 0.4s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
flex-direction: column;
}
.cart-overlay.open {
right: 0;
}
.cart-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 30px;
border-bottom: 1px solid #f0f0f0;
}
.cart-header h2 {
font-size: 24px;
font-weight: 600;
}
.close-cart {
background: none;
border: none;
font-size: 20px;
cursor: pointer;
color: var(--secondary-text);
transition: var(--transition);
}
.close-cart:hover {
color: var(--text-dark);
}
.cart-items {
flex: 1;
overflow-y: auto;
padding: 20px 30px;
}
.cart-item {
display: flex;
gap: 15px;
margin-bottom: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #f0f0f0;
}
.cart-item-image {
width: 80px;
height: 80px;
flex-shrink: 0;
border-radius: 10px;
overflow: hidden;
}
.cart-item-image img {
width: 100%;
height: 100%;
object-fit: cover;
}
.cart-item-details {
flex: 1;
}
.cart-item-name {
font-weight: 500;
margin-bottom: 5px;
}
.cart-item-price {
color: var(--secondary-text);
font-size: 14px;
}
.cart-item-controls {
display: flex;
align-items: center;
gap: 10px;
margin-top: 10px;
}
.quantity-control {
display: flex;
align-items: center;
gap: 5px;
}
.quantity-btn {
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
background-color: #f5f5f7;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 14px;
transition: var(--transition);
}
.quantity-btn:hover {
background-color: #e0e0e0;
}
.quantity-value {
width: 30px;
text-align: center;
font-size: 14px;
}
.remove-btn {
background: none;
border: none;
color: #ff3b30;
cursor: pointer;
font-size: 14px;
transition: var(--transition);
}
.remove-btn:hover {
color: #d70015;
}
.cart-footer {
padding: 20px 30px;
background-color: #f5f5f7;
border-top: 1px solid #e0e0e0;
}
.cart-total {
display: flex;
justify-content: space-between;
font-size: 18px;
font-weight: 600;
margin-bottom: 20px;
}
.btn-checkout {
width: 100%;
padding: 14px;
background-color: var(--primary-color);
color: white;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: var(--transition);
}
.btn-checkout:hover {
background-color: var(--primary-hover);
transform: translateY(-2px);
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.empty-cart {
text-align: center;
padding: 40px 0;
color: var(--secondary-text);
}
.empty-cart i {
font-size: 50px;
margin-bottom: 20px;
opacity: 0.3;
}
.continue-shopping {
margin-top: 20px;
display: inline-block;
color: var(--primary-color);
text-decoration: none;
}
.continue-shopping:hover {
text-decoration: underline;
}
/* Responsive adjustments */
@media (max-width: 992px) {
.vehicles-hero h1 {
font-size: 42px;
}
.vehicles-hero p {
font-size: 18px;
}
}
@media (max-width: 768px) {
.vehicles-hero h1 {
font-size: 36px;
}
.cart-overlay {
width: 100%;
right: -100%;
}
}
@media (max-width: 576px) {
.vehicles-hero h1 {
font-size: 32px;
}
.filter-wrapper {
flex-direction: column;
gap: 20px;
}
.vehicle-price {
flex-direction: column;
gap: 15px;
align-items: flex-start;
}
.add-to-cart {
width: 100%;
}
}
/* Animation for cart items */
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
.cart-item {
animation: slideIn 0.3s ease forwards;
}
/* Fade overlay when cart is open */
.overlay-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1000;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s ease, visibility 0.3s ease;
}
.overlay-bg.active {
opacity: 1;
visibility: visible;
}
/* Active nav link */
.nav-link.active {
color: var(--primary-color);
}
.nav-link.active::after {
width: 100%;
}

View File

@ -0,0 +1,327 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vehicles - Brabus Premium Automotive</title>
<link rel="stylesheet" href="styles.css">
<link rel="stylesheet" href="vehicles.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
<header>
<div class="header-container">
<div class="logo">
<a href="index.html">
<img src="images/logo.png" alt="Brabus Logo">
</a>
</div>
<nav>
<ul>
<li><a href="index.html" class="nav-link">Home</a></li>
<li><a href="vehicles.html" class="nav-link active">Vehicles</a></li>
<li><a href="index.html#heritage" class="nav-link">Heritage</a></li>
<li><a href="index.html#experience" class="nav-link">Experience</a></li>
<li><a href="#" class="nav-link" id="cart-link"><i class="fas fa-shopping-cart"></i> <span id="cart-count">0</span></a></li>
<li><a href="login.html" class="nav-link" id="login-link">Sign In</a></li>
</ul>
</nav>
</div>
</header>
<main class="vehicles-container">
<div class="vehicles-hero">
<h1>Discover Perfection</h1>
<p>Explore our exclusive collection of premium automobiles</p>
</div>
<div class="vehicles-filters">
<div class="container">
<div class="filter-wrapper">
<div class="filter-group">
<label for="category-filter">Category</label>
<select id="category-filter">
<option value="all">All Categories</option>
<option value="sport">Sport</option>
<option value="luxury">Luxury</option>
<option value="offroad">Off-road</option>
</select>
</div>
<div class="filter-group">
<label for="price-filter">Price Range</label>
<select id="price-filter">
<option value="all">All Prices</option>
<option value="100000-200000">$100,000 - $200,000</option>
<option value="200000-300000">$200,000 - $300,000</option>
<option value="300000-plus">$300,000+</option>
</select>
</div>
<div class="filter-group">
<label for="sort-filter">Sort By</label>
<select id="sort-filter">
<option value="newest">Newest First</option>
<option value="price-low">Price: Low to High</option>
<option value="price-high">Price: High to Low</option>
</select>
</div>
</div>
</div>
</div>
<div class="vehicles-grid">
<div class="container">
<div class="vehicles-list">
<!-- Vehicle Card 1 -->
<div class="vehicle-card" data-category="sport" data-price="280000">
<div class="vehicle-image">
<img src="images/StoreCar1.png" alt="Brabus S Class">
<div class="vehicle-badge">New</div>
</div>
<div class="vehicle-info">
<h3>Brabus S Class</h3>
<div class="vehicle-specs">
<div class="spec">
<i class="fas fa-tachometer-alt"></i>
<span>800 HP</span>
</div>
<div class="spec">
<i class="fas fa-bolt"></i>
<span>3.4s 0-100</span>
</div>
<div class="spec">
<i class="fas fa-gas-pump"></i>
<span>Twin-Turbo V8</span>
</div>
</div>
<div class="vehicle-price">
<span class="price">$280,000</span>
<button class="btn-buy add-to-cart" data-id="1" data-name="Brabus S Class" data-price="280000">Add to Cart</button>
</div>
</div>
</div>
<!-- Vehicle Card 2 -->
<div class="vehicle-card" data-category="offroad" data-price="320000">
<div class="vehicle-image">
<img src="images/StoreCar2.png" alt="Brabus G Wagon">
</div>
<div class="vehicle-info">
<h3>Brabus G Wagon</h3>
<div class="vehicle-specs">
<div class="spec">
<i class="fas fa-tachometer-alt"></i>
<span>850 HP</span>
</div>
<div class="spec">
<i class="fas fa-bolt"></i>
<span>3.8s 0-100</span>
</div>
<div class="spec">
<i class="fas fa-gas-pump"></i>
<span>V12 BiTurbo</span>
</div>
</div>
<div class="vehicle-price">
<span class="price">$320,000</span>
<button class="btn-buy add-to-cart" data-id="2" data-name="Brabus G Wagon" data-price="320000">Add to Cart</button>
</div>
</div>
</div>
<!-- Vehicle Card 3 -->
<div class="vehicle-card" data-category="luxury" data-price="240000">
<div class="vehicle-image">
<img src="images/StoreCar3.png" alt="Brabus Maybach">
<div class="vehicle-badge">Limited</div>
</div>
<div class="vehicle-info">
<h3>Brabus Maybach</h3>
<div class="vehicle-specs">
<div class="spec">
<i class="fas fa-tachometer-alt"></i>
<span>700 HP</span>
</div>
<div class="spec">
<i class="fas fa-bolt"></i>
<span>4.2s 0-100</span>
</div>
<div class="spec">
<i class="fas fa-gas-pump"></i>
<span>V12</span>
</div>
</div>
<div class="vehicle-price">
<span class="price">$240,000</span>
<button class="btn-buy add-to-cart" data-id="3" data-name="Brabus Maybach" data-price="240000">Add to Cart</button>
</div>
</div>
</div>
<!-- Vehicle Card 4 -->
<div class="vehicle-card" data-category="sport" data-price="180000">
<div class="vehicle-image">
<img src="images/StoreCar4.png" alt="Brabus C63 AMG">
</div>
<div class="vehicle-info">
<h3>Brabus C63 AMG</h3>
<div class="vehicle-specs">
<div class="spec">
<i class="fas fa-tachometer-alt"></i>
<span>650 HP</span>
</div>
<div class="spec">
<i class="fas fa-bolt"></i>
<span>3.2s 0-100</span>
</div>
<div class="spec">
<i class="fas fa-gas-pump"></i>
<span>V8 BiTurbo</span>
</div>
</div>
<div class="vehicle-price">
<span class="price">$180,000</span>
<button class="btn-buy add-to-cart" data-id="4" data-name="Brabus C63 AMG" data-price="180000">Add to Cart</button>
</div>
</div>
</div>
<!-- Vehicle Card 5 -->
<div class="vehicle-card" data-category="luxury" data-price="350000">
<div class="vehicle-image">
<img src="images/StoreCar5.png" alt="Brabus SL Roadster">
<div class="vehicle-badge">New</div>
</div>
<div class="vehicle-info">
<h3>Brabus SL Roadster</h3>
<div class="vehicle-specs">
<div class="spec">
<i class="fas fa-tachometer-alt"></i>
<span>750 HP</span>
</div>
<div class="spec">
<i class="fas fa-bolt"></i>
<span>3.0s 0-100</span>
</div>
<div class="spec">
<i class="fas fa-gas-pump"></i>
<span>V8 BiTurbo</span>
</div>
</div>
<div class="vehicle-price">
<span class="price">$350,000</span>
<button class="btn-buy add-to-cart" data-id="5" data-name="Brabus SL Roadster" data-price="350000">Add to Cart</button>
</div>
</div>
</div>
<!-- Vehicle Card 6 -->
<div class="vehicle-card" data-category="offroad" data-price="290000">
<div class="vehicle-image">
<img src="images/StoreCar6.png" alt="Brabus GLS">
</div>
<div class="vehicle-info">
<h3>Brabus GLS</h3>
<div class="vehicle-specs">
<div class="spec">
<i class="fas fa-tachometer-alt"></i>
<span>780 HP</span>
</div>
<div class="spec">
<i class="fas fa-bolt"></i>
<span>4.1s 0-100</span>
</div>
<div class="spec">
<i class="fas fa-gas-pump"></i>
<span>V8 BiTurbo</span>
</div>
</div>
<div class="vehicle-price">
<span class="price">$290,000</span>
<button class="btn-buy add-to-cart" data-id="6" data-name="Brabus GLS" data-price="290000">Add to Cart</button>
</div>
</div>
</div>
</div>
</div>
</div>
</main>
<!-- Cart Overlay -->
<div class="cart-overlay" id="cart-overlay">
<div class="cart-content">
<div class="cart-header">
<h2>Your Cart</h2>
<button class="close-cart"><i class="fas fa-times"></i></button>
</div>
<div class="cart-items" id="cart-items">
<!-- Cart items will be added here dynamically -->
</div>
<div class="cart-footer">
<div class="cart-total">
<span>Total:</span>
<span id="cart-total-price">$0</span>
</div>
<button class="btn-checkout" id="checkout-btn">Proceed to Checkout</button>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="footer-content">
<div class="footer-column">
<h4>Models</h4>
<ul>
<li><a href="vehicles.html?category=sport">Sport Series</a></li>
<li><a href="vehicles.html?category=offroad">Off-road Series</a></li>
<li><a href="vehicles.html?category=luxury">Luxury Series</a></li>
<li><a href="vehicles.html">Limited Editions</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Services</h4>
<ul>
<li><a href="#">Financing</a></li>
<li><a href="#">Maintenance</a></li>
<li><a href="#">Customization</a></li>
<li><a href="#">Warranty</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Company</h4>
<ul>
<li><a href="#">About Us</a></li>
<li><a href="#">Careers</a></li>
<li><a href="#">News</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<div class="footer-column">
<h4>Legal</h4>
<ul>
<li><a href="#">Privacy Policy</a></li>
<li><a href="#">Terms of Service</a></li>
<li><a href="#">Cookie Policy</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>&copy; 2025 Brabus Automotive. All rights reserved.</p>
<div class="social-icons">
<a href="#" class="social-icon" aria-label="Facebook"><i class="fab fa-facebook-f"></i></a>
<a href="#" class="social-icon" aria-label="Instagram"><i class="fab fa-instagram"></i></a>
<a href="#" class="social-icon" aria-label="Twitter"><i class="fab fa-twitter"></i></a>
<a href="#" class="social-icon" aria-label="YouTube"><i class="fab fa-youtube"></i></a>
</div>
</div>
</div>
</footer>
<script src="vehicles.js"></script>
<script src="cart.js"></script>
</body>
</html>

View File

@ -0,0 +1,33 @@
// Vehicles page JavaScript
document.addEventListener('DOMContentLoaded', function() {
// Elements
const header = document.querySelector('header');
const categoryFilter = document.getElementById('category-filter');
const priceFilter = document.getElementById('price-filter');
const sortFilter = document.getElementById('sort-filter');
const vehicleCards = document.querySelectorAll('.vehicle-card');
const cartLink = document.getElementById('cart-link');
const cartOverlay = document.getElementById('cart-overlay');
const closeCartBtn = document.querySelector('.close-cart');
const cartItems = document.getElementById('cart-items');
const cartTotalPrice = document.getElementById('cart-total-price');
const cartCountElement = document.getElementById('cart-count');
const checkoutBtn = document.getElementById('checkout-btn');
const addToCartButtons = document.querySelectorAll('.add-to-cart');
const loginLink = document.getElementById('login-link');
// Initial setup
let cart = JSON.parse(localStorage.getItem('brabus_cart')) || [];
updateCartCount();
checkLoginStatus();
// Header scroll effect
function handleHeaderScroll() {
if (window.scrollY > 50) {
header.style.backgroundColor = 'rgba(29, 29, 31, 0.95)';
header.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.1)';
} else {
header.style.backgroundColor = 'rgba(29, 29, 31, 0.8)';
header.style.boxShadow = 'none';
}
}