Files
website/website-mockups/charter-booking-2.html
matt ec72c5d62b
Some checks failed
build-website / build (push) Failing after 1m2s
Initial import of HarborSmith website
2025-09-18 22:20:01 +02:00

1435 lines
51 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Select Your Yacht - HarborSmith</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Playfair+Display:wght@400;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/voyage-layout.css">
<link rel="stylesheet" href="css/styles.css">
<link rel="stylesheet" href="css/themes.css">
<link rel="stylesheet" href="css/animations.css">
<style>
:root {
--luxury-gold: #D4AF37;
--deep-navy: #0F172A;
--ocean-blue: #0066CC;
--sunset-orange: #FF6B35;
--pearl-white: #FAFBFC;
--emerald: #10B981;
--amber: #F59E0B;
--ruby: #EF4444;
}
/* Hero Section */
.selection-hero {
background-image: url('public/golden_gate.jpg');
background-size: cover;
background-position: center;
background-attachment: fixed;
padding: 120px 0 60px;
position: relative;
overflow: hidden;
}
.selection-hero::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg,
rgba(15, 23, 42, 0.85) 0%,
rgba(30, 58, 95, 0.75) 50%,
rgba(15, 23, 42, 0.85) 100%);
z-index: 1;
}
.selection-hero::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('data:image/svg+xml,<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"><defs><pattern id="grid" width="100" height="100" patternUnits="userSpaceOnUse"><path d="M 100 0 L 0 0 0 100" fill="none" stroke="white" stroke-width="0.5" opacity="0.05"/></pattern></defs><rect width="100%" height="100%" fill="url(%23grid)"/></svg>');
z-index: 1;
}
.hero-content {
position: relative;
z-index: 2;
text-align: center;
color: white;
}
/* Navigation styling for transparent state */
.voyage-nav {
transition: all 0.3s ease;
}
.voyage-nav:not(.scrolled) {
background: transparent !important;
padding: 2rem 0;
}
.voyage-nav:not(.scrolled) .nav-brand,
.voyage-nav:not(.scrolled) .nav-brand span,
.voyage-nav:not(.scrolled) .nav-link {
color: white !important;
}
.voyage-nav:not(.scrolled) .nav-link:hover {
color: rgba(255, 255, 255, 0.8) !important;
}
.voyage-nav:not(.scrolled) .theme-btn {
color: white;
border-color: white;
}
/* Navigation styling for scrolled state */
.voyage-nav.scrolled {
background: rgba(255, 255, 255, 0.95) !important;
backdrop-filter: blur(10px);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
padding: 1rem 0;
}
.voyage-nav.scrolled .nav-brand,
.voyage-nav.scrolled .nav-brand span,
.voyage-nav.scrolled .nav-link {
color: #001f3f !important;
}
.voyage-nav.scrolled .nav-link:hover {
color: #dc143c !important;
}
.voyage-nav.scrolled .theme-btn {
color: #001f3f;
border-color: #001f3f;
}
.hero-content h1 {
font-size: 3.5rem;
font-weight: 300;
margin-bottom: 1rem;
font-family: 'Playfair Display', serif;
animation: fadeInUp 0.8s ease;
}
.hero-content p {
font-size: 1.25rem;
opacity: 0.9;
max-width: 600px;
margin: 0 auto;
animation: fadeInUp 0.8s ease 0.2s both;
}
/* Progress Bar */
.progress-container {
max-width: 800px;
margin: -30px auto 60px;
padding: 0 20px;
position: relative;
z-index: 10;
}
.progress-track {
background: white;
border-radius: 100px;
padding: 25px 35px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
}
.progress-line {
position: absolute;
top: 50%;
left: 50px; /* Adjusted to center of first circle */
right: 50px; /* Adjusted to center of last circle */
height: 2px;
background: #E5E7EB;
transform: translateY(-50%);
z-index: 0;
}
.progress-line-fill {
position: absolute;
top: 0;
left: 0;
height: 100%;
background: linear-gradient(90deg, #10B981, #0066CC);
width: 33%;
transition: width 0.5s ease;
}
.progress-step {
position: relative;
z-index: 2;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.step-circle {
width: 45px;
height: 45px;
border-radius: 50%;
background: white;
border: 3px solid #E5E7EB;
display: flex;
align-items: center;
justify-content: center;
font-weight: 600;
transition: all 0.3s ease;
}
.progress-step.completed .step-circle {
background: #10B981;
border-color: #10B981;
color: white;
}
.progress-step.active .step-circle {
background: linear-gradient(135deg, #0066CC, #0052A3);
border-color: #0066CC;
color: white;
transform: scale(1.1);
box-shadow: 0 4px 20px rgba(0, 102, 204, 0.3);
}
.step-label {
font-size: 0.875rem;
color: #6B7280;
font-weight: 500;
}
.progress-step.active .step-label,
.progress-step.completed .step-label {
color: #0066CC;
font-weight: 600;
}
/* Filter Section */
.filter-bar {
background: white;
padding: 20px;
border-radius: 16px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
margin-bottom: 40px;
display: flex;
gap: 20px;
align-items: center;
flex-wrap: wrap;
}
.filter-group {
display: flex;
gap: 10px;
align-items: center;
}
.filter-label {
font-size: 0.875rem;
color: #6B7280;
font-weight: 500;
}
.filter-btn {
padding: 8px 16px;
background: white;
border: 2px solid #E5E7EB;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.875rem;
font-weight: 500;
}
.filter-btn:hover {
border-color: #0066CC;
color: #0066CC;
}
.filter-btn.active {
background: #0066CC;
border-color: #0066CC;
color: white;
}
.comparison-toggle {
margin-left: auto;
display: flex;
align-items: center;
gap: 10px;
}
.toggle-switch {
position: relative;
width: 50px;
height: 26px;
background: #E5E7EB;
border-radius: 34px;
cursor: pointer;
transition: background 0.3s ease;
}
.toggle-switch.active {
background: #0066CC;
}
.toggle-slider {
position: absolute;
top: 3px;
left: 3px;
width: 20px;
height: 20px;
background: white;
border-radius: 50%;
transition: transform 0.3s ease;
}
.toggle-switch.active .toggle-slider {
transform: translateX(24px);
}
/* Main Layout */
.selection-container {
max-width: 1400px;
margin: 0 auto;
padding: 0 20px 80px;
}
/* Yacht Grid */
.yacht-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
gap: 30px;
margin-bottom: 60px;
}
/* Yacht Card */
.yacht-card {
background: white;
border-radius: 20px;
overflow: hidden;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08);
transition: all 0.4s ease;
cursor: pointer;
position: relative;
}
.yacht-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
}
.yacht-card.selected {
border: 3px solid #0066CC;
box-shadow: 0 20px 60px rgba(0, 102, 204, 0.2);
}
.yacht-card.selected::after {
content: '';
position: absolute;
top: 20px;
right: 20px;
width: 40px;
height: 40px;
background: linear-gradient(135deg, #0066CC, #0052A3);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
animation: scaleIn 0.3s ease;
}
.yacht-card.selected::before {
content: '✓';
position: absolute;
top: 20px;
right: 20px;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 24px;
font-weight: bold;
z-index: 11;
animation: scaleIn 0.3s ease;
}
/* Featured Badge */
.featured-badge {
position: absolute;
top: 20px;
left: 20px;
background: linear-gradient(135deg, var(--luxury-gold), #B8961F);
color: white;
padding: 6px 16px;
border-radius: 30px;
font-size: 0.75rem;
font-weight: 600;
z-index: 10;
display: flex;
align-items: center;
gap: 6px;
animation: slideInLeft 0.5s ease;
}
/* Yacht Image */
.yacht-image {
height: 260px;
position: relative;
overflow: hidden;
}
.yacht-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.yacht-card:hover .yacht-image img {
transform: scale(1.1);
}
.availability-badge {
position: absolute;
bottom: 20px;
left: 20px;
padding: 8px 16px;
border-radius: 30px;
font-size: 0.875rem;
font-weight: 600;
display: flex;
align-items: center;
gap: 6px;
backdrop-filter: blur(10px);
}
.availability-badge.available {
background: rgba(16, 185, 129, 0.9);
color: white;
}
.availability-badge.limited {
background: rgba(245, 158, 11, 0.9);
color: white;
}
.availability-badge.booked {
background: rgba(239, 68, 68, 0.9);
color: white;
}
.availability-dot {
width: 8px;
height: 8px;
background: white;
border-radius: 50%;
animation: pulse 2s infinite;
}
/* Yacht Details */
.yacht-details {
padding: 30px;
}
.yacht-header {
display: flex;
justify-content: space-between;
align-items: start;
margin-bottom: 20px;
}
.yacht-info h3 {
font-size: 1.75rem;
font-weight: 700;
color: var(--deep-navy);
margin-bottom: 8px;
}
.yacht-type {
display: inline-block;
padding: 4px 12px;
background: #E0F2FE;
color: #0066CC;
border-radius: 20px;
font-size: 0.875rem;
font-weight: 600;
}
.yacht-rating {
display: flex;
align-items: center;
gap: 6px;
color: var(--amber);
}
.yacht-specs {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
margin: 20px 0;
padding: 20px 0;
border-top: 1px solid #E5E7EB;
border-bottom: 1px solid #E5E7EB;
}
.spec-item {
display: flex;
align-items: center;
gap: 8px;
}
.spec-icon {
width: 32px;
height: 32px;
background: #F3F4F6;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
color: #6B7280;
}
.spec-text {
display: flex;
flex-direction: column;
}
.spec-value {
font-weight: 600;
color: var(--deep-navy);
}
.spec-label {
font-size: 0.75rem;
color: #6B7280;
}
/* Amenities */
.yacht-amenities {
margin: 20px 0;
}
.amenities-title {
font-size: 0.875rem;
font-weight: 600;
color: #6B7280;
margin-bottom: 10px;
}
.amenities-grid {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.amenity-tag {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 12px;
background: #F9FAFB;
border-radius: 8px;
font-size: 0.875rem;
color: #4B5563;
}
.amenity-tag svg {
width: 16px;
height: 16px;
color: #10B981;
}
/* Pricing */
.yacht-pricing {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 20px;
border-top: 1px solid #E5E7EB;
}
.price-display {
display: flex;
flex-direction: column;
}
.price-label {
font-size: 0.875rem;
color: #6B7280;
}
.price-amount {
font-size: 2rem;
font-weight: 700;
background: linear-gradient(135deg, #0066CC, var(--luxury-gold));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.select-btn {
padding: 12px 24px;
background: linear-gradient(135deg, #0066CC, #0052A3);
color: white;
border: none;
border-radius: 12px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
}
.select-btn:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0, 102, 204, 0.3);
}
.yacht-card.selected .select-btn {
background: linear-gradient(135deg, #10B981, #059669);
}
/* Comparison Table */
.comparison-section {
background: white;
border-radius: 20px;
padding: 40px;
margin-bottom: 40px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08);
display: none;
}
.comparison-section.active {
display: block;
animation: slideInUp 0.5s ease;
}
.comparison-header {
font-size: 1.5rem;
font-weight: 700;
color: var(--deep-navy);
margin-bottom: 30px;
text-align: center;
}
.comparison-table {
width: 100%;
border-collapse: separate;
border-spacing: 0;
}
.comparison-table th {
background: linear-gradient(135deg, #F9FAFB, #F3F4F6);
padding: 15px;
text-align: left;
font-weight: 600;
color: var(--deep-navy);
border-bottom: 2px solid #E5E7EB;
}
.comparison-table th:first-child {
border-top-left-radius: 12px;
}
.comparison-table th:last-child {
border-top-right-radius: 12px;
}
.comparison-table td {
padding: 15px;
border-bottom: 1px solid #E5E7EB;
color: #4B5563;
}
.comparison-table tr:last-child td {
border-bottom: none;
}
.comparison-table tr:hover {
background: #F9FAFB;
}
.comparison-highlight {
background: #E0F2FE;
color: #0066CC;
font-weight: 600;
}
/* Navigation */
.navigation-section {
display: flex;
justify-content: space-between;
align-items: center;
padding: 40px;
background: white;
border-radius: 20px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08);
}
.nav-btn {
padding: 16px 32px;
border-radius: 12px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
display: flex;
align-items: center;
gap: 10px;
text-decoration: none;
}
.nav-btn.secondary {
background: white;
color: #6B7280;
border: 2px solid #E5E7EB;
}
.nav-btn.secondary:hover {
border-color: #0066CC;
color: #0066CC;
}
.nav-btn.primary {
background: linear-gradient(135deg, #0066CC, #0052A3);
color: white;
border: none;
}
.nav-btn.primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(0, 102, 204, 0.3);
}
.nav-btn.primary:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* Animations */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideInLeft {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes scaleIn {
from {
transform: scale(0);
}
to {
transform: scale(1);
}
}
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
/* Responsive Design */
@media (max-width: 768px) {
.selection-hero h1 {
font-size: 2rem;
}
.yacht-grid {
grid-template-columns: 1fr;
}
.filter-bar {
flex-direction: column;
align-items: stretch;
}
.comparison-toggle {
margin-left: 0;
margin-top: 20px;
}
.yacht-specs {
grid-template-columns: 1fr;
}
.navigation-section {
flex-direction: column;
gap: 20px;
}
.nav-btn {
width: 100%;
justify-content: center;
}
}
</style>
</head>
<body>
<!-- Navigation -->
<nav class="voyage-nav" id="voyageNav">
<div class="nav-container">
<div class="nav-brand">
<img src="logo.jpg" alt="HarborSmith" class="nav-logo">
<span>HarborSmith</span>
</div>
<button class="nav-toggle" id="navToggle">
<span></span>
<span></span>
<span></span>
</button>
<div class="nav-menu" id="navMenu">
<div class="nav-links">
<a href="index.html" class="nav-link">Home</a>
<a href="charter.html" class="nav-link">Charters</a>
<a href="maintenance.html" class="nav-link">Maintenance</a>
<a href="about.html" class="nav-link">About</a>
<a href="contact.html" class="nav-link">Contact</a>
</div>
<div class="nav-actions">
<button class="theme-toggle" id="themeToggle">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="5"/>
<line x1="12" y1="1" x2="12" y2="3"/>
<line x1="12" y1="21" x2="12" y2="23"/>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
<line x1="1" y1="12" x2="3" y2="12"/>
<line x1="21" y1="12" x2="23" y2="12"/>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
</svg>
</button>
</div>
</div>
</div>
</nav>
<!-- Hero Section -->
<section class="selection-hero">
<div class="container">
<div class="hero-content">
<h1>Choose Your Perfect Yacht</h1>
<p>Discover our exclusive collection of luxury yachts, each offering a unique experience on the San Francisco Bay</p>
</div>
</div>
</section>
<!-- Progress Indicator -->
<div class="progress-container">
<div class="progress-track">
<div class="progress-line">
<div class="progress-line-fill"></div>
</div>
<div class="progress-step completed">
<div class="step-circle"></div>
<div class="step-label">Date & Time</div>
</div>
<div class="progress-step active">
<div class="step-circle">2</div>
<div class="step-label">Select Yacht</div>
</div>
<div class="progress-step">
<div class="step-circle">3</div>
<div class="step-label">Customize</div>
</div>
<div class="progress-step">
<div class="step-circle">4</div>
<div class="step-label">Confirm</div>
</div>
</div>
</div>
<!-- Main Content -->
<div class="selection-container">
<!-- Filter Bar -->
<div class="filter-bar">
<div class="filter-group">
<span class="filter-label">Type:</span>
<button class="filter-btn active" data-filter="all">All Yachts</button>
<button class="filter-btn" data-filter="motor">Motor Yacht</button>
<button class="filter-btn" data-filter="sailing">Sailing</button>
<button class="filter-btn" data-filter="catamaran">Catamaran</button>
</div>
<div class="filter-group">
<span class="filter-label">Capacity:</span>
<button class="filter-btn" data-filter="small">2-6 Guests</button>
<button class="filter-btn" data-filter="medium">7-12 Guests</button>
<button class="filter-btn" data-filter="large">13+ Guests</button>
</div>
<div class="comparison-toggle">
<span class="filter-label">Compare</span>
<div class="toggle-switch" id="compareToggle">
<div class="toggle-slider"></div>
</div>
</div>
</div>
<!-- Comparison Table -->
<div class="comparison-section" id="comparisonSection">
<h2 class="comparison-header">Yacht Comparison</h2>
<table class="comparison-table">
<thead>
<tr>
<th>Features</th>
<th>Azure Dream</th>
<th>Ocean Majesty</th>
<th>Wind Dancer</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Type</strong></td>
<td>Motor Yacht</td>
<td>Super Yacht</td>
<td>Sailing Yacht</td>
</tr>
<tr>
<td><strong>Capacity</strong></td>
<td>12 guests</td>
<td class="comparison-highlight">20 guests</td>
<td>8 guests</td>
</tr>
<tr>
<td><strong>Length</strong></td>
<td>85 feet</td>
<td class="comparison-highlight">120 feet</td>
<td>65 feet</td>
</tr>
<tr>
<td><strong>Crew</strong></td>
<td>8 members</td>
<td class="comparison-highlight">15 members</td>
<td>4 members</td>
</tr>
<tr>
<td><strong>Amenities</strong></td>
<td>WiFi, Jet Ski, Chef</td>
<td class="comparison-highlight">Helicopter Pad, Spa, Pool</td>
<td>WiFi, Kitchen, Snorkeling</td>
</tr>
<tr>
<td><strong>Price (4 hours)</strong></td>
<td>$6,000</td>
<td class="comparison-highlight">$14,000</td>
<td>$3,400</td>
</tr>
</tbody>
</table>
</div>
<!-- Yacht Grid -->
<div class="yacht-grid">
<!-- Azure Dream -->
<div class="yacht-card" data-yacht="azure-dream" data-price="6000" data-type="motor" data-capacity="medium">
<div class="featured-badge">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
</svg>
Featured
</div>
<div class="yacht-image">
<img src="https://images.unsplash.com/photo-1544551763-46a013bb70d5?w=800&h=600&fit=crop" alt="Azure Dream">
<div class="availability-badge available">
<div class="availability-dot"></div>
Available
</div>
</div>
<div class="yacht-details">
<div class="yacht-header">
<div class="yacht-info">
<h3>Azure Dream</h3>
<span class="yacht-type">Motor Yacht</span>
</div>
<div class="yacht-rating">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
</svg>
<span>4.9</span>
</div>
</div>
<div class="yacht-specs">
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">12</span>
<span class="spec-label">Guests</span>
</div>
</div>
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M6 2L6 22"></path>
<path d="M18 2L18 22"></path>
<path d="M2 6L22 6"></path>
<path d="M2 18L22 18"></path>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">85ft</span>
<span class="spec-label">Length</span>
</div>
</div>
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="1"></circle>
<circle cx="12" cy="5" r="1"></circle>
<circle cx="12" cy="19" r="1"></circle>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">8</span>
<span class="spec-label">Crew</span>
</div>
</div>
</div>
<div class="yacht-amenities">
<div class="amenities-title">Premium Features</div>
<div class="amenities-grid">
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10"></circle>
<polyline points="12 6 12 12 16 14"></polyline>
</svg>
WiFi
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
<polyline points="9 22 9 12 15 12 15 22"></polyline>
</svg>
Jet Ski
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path>
<path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path>
<line x1="6" y1="1" x2="6" y2="4"></line>
<line x1="10" y1="1" x2="10" y2="4"></line>
<line x1="14" y1="1" x2="14" y2="4"></line>
</svg>
Chef Service
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M17 8h1a4 4 0 0 1 0 8h-1"></path>
<path d="M3 8h13v10a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V8z"></path>
</svg>
Water Sports
</div>
</div>
</div>
<div class="yacht-pricing">
<div class="price-display">
<span class="price-label">4 hours</span>
<span class="price-amount">$6,000</span>
</div>
<button class="select-btn">Select Yacht</button>
</div>
</div>
</div>
<!-- Ocean Majesty -->
<div class="yacht-card" data-yacht="ocean-majesty" data-price="14000" data-type="motor" data-capacity="large">
<div class="featured-badge">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
</svg>
Premium
</div>
<div class="yacht-image">
<img src="https://images.unsplash.com/photo-1567899378494-47b22a2ae96a?w=800&h=600&fit=crop" alt="Ocean Majesty">
<div class="availability-badge limited">
<div class="availability-dot"></div>
Limited
</div>
</div>
<div class="yacht-details">
<div class="yacht-header">
<div class="yacht-info">
<h3>Ocean Majesty</h3>
<span class="yacht-type">Super Yacht</span>
</div>
<div class="yacht-rating">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
</svg>
<span>5.0</span>
</div>
</div>
<div class="yacht-specs">
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
<path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
<path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">20</span>
<span class="spec-label">Guests</span>
</div>
</div>
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M6 2L6 22"></path>
<path d="M18 2L18 22"></path>
<path d="M2 6L22 6"></path>
<path d="M2 18L22 18"></path>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">120ft</span>
<span class="spec-label">Length</span>
</div>
</div>
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="1"></circle>
<circle cx="12" cy="5" r="1"></circle>
<circle cx="12" cy="19" r="1"></circle>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">15</span>
<span class="spec-label">Crew</span>
</div>
</div>
</div>
<div class="yacht-amenities">
<div class="amenities-title">Ultimate Luxury</div>
<div class="amenities-grid">
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10"></circle>
<polyline points="12 6 12 12 16 14"></polyline>
</svg>
Helicopter Pad
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
<polyline points="9 22 9 12 15 12 15 22"></polyline>
</svg>
Michelin Chef
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path>
<path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path>
</svg>
Spa & Pool
</div>
</div>
</div>
<div class="yacht-pricing">
<div class="price-display">
<span class="price-label">4 hours</span>
<span class="price-amount">$14,000</span>
</div>
<button class="select-btn">Select Yacht</button>
</div>
</div>
</div>
<!-- Wind Dancer -->
<div class="yacht-card" data-yacht="wind-dancer" data-price="3400" data-type="sailing" data-capacity="medium">
<div class="yacht-image">
<img src="https://images.unsplash.com/photo-1544551763-77ef2d0cfc6c?w=800&h=600&fit=crop" alt="Wind Dancer">
<div class="availability-badge available">
<div class="availability-dot"></div>
Available
</div>
</div>
<div class="yacht-details">
<div class="yacht-header">
<div class="yacht-info">
<h3>Wind Dancer</h3>
<span class="yacht-type">Sailing Yacht</span>
</div>
<div class="yacht-rating">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
</svg>
<span>4.7</span>
</div>
</div>
<div class="yacht-specs">
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
<circle cx="9" cy="7" r="4"></circle>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">8</span>
<span class="spec-label">Guests</span>
</div>
</div>
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M6 2L6 22"></path>
<path d="M18 2L18 22"></path>
<path d="M2 6L22 6"></path>
<path d="M2 18L22 18"></path>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">65ft</span>
<span class="spec-label">Length</span>
</div>
</div>
<div class="spec-item">
<div class="spec-icon">
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="1"></circle>
<circle cx="12" cy="5" r="1"></circle>
<circle cx="12" cy="19" r="1"></circle>
</svg>
</div>
<div class="spec-text">
<span class="spec-value">4</span>
<span class="spec-label">Crew</span>
</div>
</div>
</div>
<div class="yacht-amenities">
<div class="amenities-title">Classic Features</div>
<div class="amenities-grid">
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="10"></circle>
<polyline points="12 6 12 12 16 14"></polyline>
</svg>
WiFi
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
</svg>
Galley Kitchen
</div>
<div class="amenity-tag">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M18 8h1a4 4 0 0 1 0 8h-1"></path>
<path d="M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z"></path>
</svg>
Snorkeling Gear
</div>
</div>
</div>
<div class="yacht-pricing">
<div class="price-display">
<span class="price-label">4 hours</span>
<span class="price-amount">$3,400</span>
</div>
<button class="select-btn">Select Yacht</button>
</div>
</div>
</div>
</div>
<!-- Navigation -->
<div class="navigation-section">
<a href="charter-booking-1.html" class="nav-btn secondary">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="15 18 9 12 15 6"></polyline>
</svg>
Back to Date Selection
</a>
<button class="nav-btn primary" id="continueBtn" disabled onclick="window.location.href='charter-booking-3.html'">
Continue to Customize
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<polyline points="9 18 15 12 9 6"></polyline>
</svg>
</button>
</div>
</div>
<script src="js/main.js"></script>
<script>
// Navigation scroll effect
const nav = document.getElementById('voyageNav');
// Handle scroll for navigation background
window.addEventListener('scroll', () => {
if (window.scrollY > 50) {
nav.classList.add('scrolled');
} else {
nav.classList.remove('scrolled');
}
});
// Yacht selection functionality
const yachtCards = document.querySelectorAll('.yacht-card');
const continueBtn = document.getElementById('continueBtn');
let selectedYacht = null;
yachtCards.forEach(card => {
const selectBtn = card.querySelector('.select-btn');
selectBtn.addEventListener('click', function(e) {
e.stopPropagation();
// Remove selected class from all cards
yachtCards.forEach(c => {
c.classList.remove('selected');
c.querySelector('.select-btn').textContent = 'Select Yacht';
});
// Add selected class to clicked card
card.classList.add('selected');
this.textContent = 'Selected ✓';
// Store selection
selectedYacht = {
name: card.querySelector('h3').textContent,
price: parseInt(card.dataset.price),
type: card.dataset.type
};
// Enable continue button
continueBtn.disabled = false;
// Store in localStorage
localStorage.setItem('selectedYacht', JSON.stringify(selectedYacht));
});
});
// Comparison toggle
const compareToggle = document.getElementById('compareToggle');
const comparisonSection = document.getElementById('comparisonSection');
compareToggle.addEventListener('click', function() {
this.classList.toggle('active');
comparisonSection.classList.toggle('active');
});
// Filter functionality
const filterBtns = document.querySelectorAll('.filter-btn');
filterBtns.forEach(btn => {
btn.addEventListener('click', function() {
const filterGroup = this.parentElement;
const groupBtns = filterGroup.querySelectorAll('.filter-btn');
// Toggle active state
if (this.classList.contains('active')) {
this.classList.remove('active');
} else {
groupBtns.forEach(b => b.classList.remove('active'));
this.classList.add('active');
}
// Apply filters (simplified for demo)
applyFilters();
});
});
function applyFilters() {
// Get active filters
const activeFilters = Array.from(document.querySelectorAll('.filter-btn.active'))
.map(btn => btn.dataset.filter);
// Show/hide yachts based on filters
yachtCards.forEach(card => {
let show = true;
// Check type filter
if (activeFilters.some(f => ['motor', 'sailing', 'catamaran'].includes(f))) {
show = activeFilters.includes(card.dataset.type);
}
// Check capacity filter
if (show && activeFilters.some(f => ['small', 'medium', 'large'].includes(f))) {
show = activeFilters.includes(card.dataset.capacity);
}
card.style.display = show ? 'block' : 'none';
});
}
// Animate progress bar on load
setTimeout(() => {
document.querySelector('.progress-line-fill').style.width = '33%';
}, 500);
</script>
<!-- Lucide Icons -->
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js"></script>
<script>
lucide.createIcons();
</script>
</body>
</html>