/* Voyage Layout - Warm, Cinematic, Inviting */ :root { /* Default Theme - Navy & Gold */ --primary-blue: #001f3f; --warm-orange: #b48b4e; --warm-amber: #9d7943; --warm-yellow: #c9a56f; --soft-cream: #f0f4f8; --text-dark: #0a1628; --text-light: #4a5568; --white: #ffffff; --bg-light: #ffffff; --border: #cbd5e0; /* Gradients */ --gradient-warm: linear-gradient(135deg, #b48b4e 0%, #c9a56f 100%); --gradient-sunset: linear-gradient(135deg, #9d7943 0%, #b48b4e 50%, #c9a56f 100%); --gradient-ocean: linear-gradient(135deg, #001f3f 0%, #003366 100%); /* Spacing */ --space-xs: 0.5rem; --space-sm: 1rem; --space-md: 2rem; --space-lg: 3rem; --space-xl: 4rem; --space-2xl: 6rem; /* Typography */ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; --font-display: 'Playfair Display', serif; /* Transitions */ --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); --transition-slow: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); /* Safe area helpers */ --safe-area-top: env(safe-area-inset-top, 0px); --safe-area-bottom: env(safe-area-inset-bottom, 0px); --safe-area-cover-top: env(safe-area-max-inset-top, env(safe-area-inset-top, 0px)); --safe-area-cover-bottom: env(safe-area-max-inset-bottom, env(safe-area-inset-bottom, 0px)); } /* Coastal Dawn Theme - Soft, serene, golden accents */ body.theme-coastal-dawn { --primary-blue: #A9B4C2; --warm-orange: #D4AF37; --warm-amber: #C9A961; --warm-yellow: #E6D088; --soft-cream: #F8F7F4; --text-dark: #333745; --text-light: #6B7280; --white: #FFFFFF; --bg-light: #F8F7F4; --border: #E5E7EB; --gradient-warm: linear-gradient(135deg, #D4AF37 0%, #E6D088 100%); --gradient-sunset: linear-gradient(135deg, #C9A961 0%, #D4AF37 50%, #E6D088 100%); --gradient-ocean: linear-gradient(135deg, #A9B4C2 0%, #C5D3E0 100%); } /* Deep Sea Theme - Dark, modern, electric blue accents */ body.theme-deep-sea { --primary-blue: #1E2022; --warm-orange: #00BFFF; --warm-amber: #1E90FF; --warm-yellow: #4169E1; --soft-cream: #2A2D30; --text-dark: #E5E4E2; --text-light: #C0C0C0; --white: #1E2022; --bg-light: #2A2D30; --border: #3A3D40; --gradient-warm: linear-gradient(135deg, #00BFFF 0%, #4169E1 100%); --gradient-sunset: linear-gradient(135deg, #1E90FF 0%, #00BFFF 50%, #4169E1 100%); --gradient-ocean: linear-gradient(135deg, #1E2022 0%, #2A2D30 100%); } /* Monaco White Theme - Clean, minimalist, red accents */ body.theme-monaco-white { --primary-blue: #2C3E50; --warm-orange: #E74C3C; --warm-amber: #E67E22; --warm-yellow: #F39C12; --soft-cream: #F8F9FA; --text-dark: #2C3E50; --text-light: #7F8C8D; --white: #FFFFFF; --bg-light: #F8F9FA; --border: #ECF0F1; --gradient-warm: linear-gradient(135deg, #E74C3C 0%, #F39C12 100%); --gradient-sunset: linear-gradient(135deg, #E67E22 0%, #E74C3C 50%, #F39C12 100%); --gradient-ocean: linear-gradient(135deg, #2C3E50 0%, #34495E 100%); } * { margin: 0; padding: 0; box-sizing: border-box; } /* Global image fix to ensure images display */ img { max-width: 100%; height: auto; display: block; } /* Lucide Icons Styling */ [data-lucide] { width: 24px; height: 24px; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; fill: none; vertical-align: middle; } .btn-icon { width: 20px; height: 20px; display: inline-block; margin-right: 8px; flex-shrink: 0; } .spec-icon { width: 20px; height: 20px; display: inline-block; margin-right: 8px; color: var(--warm-orange); } .feature-icon i { width: 32px; height: 32px; color: var(--warm-orange); } .booking-icon i { width: 48px; height: 48px; color: var(--warm-orange); margin-bottom: 1rem; } .footer-icon { width: 16px; height: 16px; display: inline-block; margin-right: 8px; vertical-align: text-bottom; } .social-links a { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); transition: var(--transition); touch-action: manipulation; } .social-links a:hover { background: var(--warm-orange); } .social-links a i { width: 20px; height: 20px; color: white !important; stroke: white !important; } .social-links a svg { stroke: white !important; color: white !important; } /* Star rating icons */ .stars-icons { display: inline-flex; flex-direction: row; align-items: center; gap: 0.4rem; } .stars-icons svg { display: inline-block; } .star-filled { width: 16px; height: 16px; fill: var(--warm-yellow); stroke: var(--warm-yellow); } body { font-family: var(--font-sans); color: var(--text-dark); background: var(--bg-light); max-width: 100vw !important; position: relative; line-height: 1.6; transition: background 0.3s ease, color 0.3s ease; } /* Smooth Scrolling */ html { scroll-behavior: smooth; max-width: 100vw !important; } /* Navigation */ .voyage-nav { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: rgba(255, 255, 255, 0); backdrop-filter: blur(0); transition: background 0.3s ease, color 0.3s ease, box-shadow 0.3s ease, backdrop-filter 0.3s ease; --nav-padding-top-base: var(--space-md); --nav-padding-bottom-base: var(--space-md); /* Use env() directly for safe area padding */ padding-top: calc(var(--nav-padding-top-base) + env(safe-area-inset-top)); padding-left: env(safe-area-inset-left); padding-right: env(safe-area-inset-right); padding-bottom: var(--nav-padding-bottom-base); } /* iOS-specific navigation stabilization to prevent bobbing */ @supports (-webkit-touch-callout: none) { .voyage-nav { -webkit-backface-visibility: hidden; /* iOS optimization */ } } /* Deprecated constant() syntax removed - using env() directly */ .voyage-nav.scrolled { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(10px); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); } @media (max-width: 768px) { .voyage-nav, .voyage-nav.scrolled { --nav-padding-top-base: var(--space-sm); --nav-padding-bottom-base: var(--space-sm); } } .nav-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-md); display: flex; justify-content: space-between; align-items: center; } .nav-brand { display: flex; align-items: center; gap: var(--space-sm); font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; color: var(--white); transition: var(--transition); } .voyage-nav.scrolled .nav-brand { color: var(--primary-blue); } .nav-logo { height: 50px; width: auto; object-fit: contain; } .nav-links { display: flex; gap: var(--space-lg); align-items: center; } .nav-link { color: var(--white); text-decoration: none; font-weight: 500; transition: var(--transition); position: relative; /* Ensure touch targets are at least 48x48px for mobile */ padding: 12px 16px; min-height: 48px; display: inline-flex; align-items: center; touch-action: manipulation; } .voyage-nav.scrolled .nav-link { color: var(--text-dark); } .nav-link::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 0; height: 2px; background: var(--warm-orange); transition: var(--transition); } .nav-link:hover::after { width: 100%; } .nav-cta { background: var(--gradient-warm); color: var(--white) !important; padding: 0.75rem 1.5rem; border-radius: 50px; transition: var(--transition); /* Ensure minimum touch target size */ min-height: 48px; display: inline-flex; align-items: center; touch-action: manipulation; } .nav-cta:hover { transform: translateY(-2px); box-shadow: 0 10px 20px rgba(249, 115, 22, 0.3); } /* Theme Switcher */ .theme-switcher { position: relative; margin-left: var(--space-md); } .theme-btn { background: transparent; border: 2px solid rgba(255, 255, 255, 0.3); border-radius: 50%; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: var(--transition); color: var(--white); } .voyage-nav.scrolled .theme-btn { color: var(--primary-blue); border-color: var(--primary-blue); } .theme-btn:hover { background: rgba(255, 255, 255, 0.1); transform: rotate(180deg); } .voyage-nav.scrolled .theme-btn:hover { background: rgba(30, 58, 95, 0.1); } .theme-dropdown { position: absolute; top: 50px; right: 0; background: var(--white); border-radius: 12px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15); padding: var(--space-sm); min-width: 200px; opacity: 0; visibility: hidden; transform: translateY(-10px); transition: var(--transition); } .theme-dropdown.active { opacity: 1; visibility: visible; transform: translateY(0); } .theme-option { display: flex; align-items: center; gap: var(--space-sm); width: 100%; padding: 0.75rem; background: transparent; border: none; border-radius: 8px; cursor: pointer; transition: var(--transition); text-align: left; } .theme-option:hover { background: var(--bg-light); } .theme-colors { display: flex; gap: 2px; } .theme-colors span { width: 16px; height: 16px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, 0.1); } /* Hero Section */ .hero-voyage { position: relative; min-height: 100vh; /* Fallback for browsers that don't support newer units */ min-height: -webkit-fill-available; /* iOS Safari - fills available space */ min-height: 100dvh; /* Dynamic viewport height */ overflow: visible; /* Allow video to extend into safe area */ overscroll-behavior-y: none; -webkit-overflow-scrolling: touch; max-width: 100vw !important; /* Removed contain: layout to allow video to extend into safe area */ /* NO padding here - let container fill entire viewport */ /* Safe areas will be applied to content only */ } /* Video container styles moved to HeroSection.vue component for better encapsulation */ .hero-video, .hero-image-fallback, .hero-overlay { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; } .hero-image-fallback { background-size: cover; background-position: center; background-repeat: no-repeat; z-index: -1; opacity: 1; transition: opacity 0.5s ease-in-out; } .hero-image-fallback.fade-out { opacity: 0; pointer-events: none; } .hero-overlay { z-index: 2; } .hero-content { position: relative; z-index: 10; height: 100%; min-height: 100vh; /* Fallback for browsers without dvh support */ min-height: 100dvh; /* Dynamic viewport height for Chrome mobile */ width: 100%; display: grid; grid-template-rows: 1fr auto; align-items: center; justify-items: center; text-align: center; /* Safari-compatible safe area padding with fallbacks */ padding-top: calc(max(env(safe-area-inset-top), 44px) + clamp(2rem, 8vh, 5rem)); padding-left: max(env(safe-area-inset-left), 0px); padding-right: max(env(safe-area-inset-right), 0px); padding-bottom: calc(max(env(safe-area-inset-bottom), 0px) + clamp(1.25rem, 3vh, 2.5rem)); row-gap: clamp(2rem, 6vh, 4rem); } /* Ensure dvh support for modern browsers */ @supports (min-height: 100dvh) { .hero-content { min-height: 100dvh; } } /* iOS-specific padding for hero content */ @supports (-webkit-touch-callout: none) { .hero-content { /* Use larger fallback for Dynamic Island devices */ padding-top: calc(max(constant(safe-area-inset-top), env(safe-area-inset-top), 59px) + clamp(2rem, 8vh, 5rem)); } } .hero-main { width: min(720px, 100%); margin: 0 auto; display: flex; flex-direction: column; align-items: center; gap: var(--space-md); } .trust-badge { display: inline-flex; align-items: center; gap: var(--space-sm); padding: 0.5rem 1.5rem; background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 50px; color: var(--white) !important; font-size: 0.875rem; margin-bottom: var(--space-lg); z-index: 10; position: relative; } /* Ensure the trust badge text is white */ .trust-badge > span:last-child { color: var(--white) !important; } /* Make sure the headline is visible */ .hero-headline { display: block !important; visibility: visible !important; } .gradient-text { display: inline-block !important; visibility: visible !important; } /* Make absolutely sure the trust badge text is white and visible */ .trust-badge span:last-child { display: inline !important; color: white !important; visibility: visible !important; } .stars { color: var(--warm-yellow); font-size: 1rem; display: inline-flex; gap: 2px; } /* Ensure stars icons display horizontally */ .stars i, .story-content .stars i, .testimonial-highlight .stars i { display: inline-block; margin-right: 2px; } .hero-headline { font-family: var(--font-display); font-size: clamp(3rem, 8vw, 6rem); font-weight: 900; line-height: 1.1; margin-bottom: var(--space-md); } .gradient-text { background: linear-gradient(135deg, #ffffff 0%, #f0f4f8 25%, #e2e8f0 50%, #cbd5e0 75%, #94a3b8 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .hero-subtext { font-size: 1.25rem; color: rgba(255, 255, 255, 0.9); max-width: 800px; margin: 0 auto var(--space-lg); font-weight: 300; line-height: 1.8; } .hero-actions { display: flex; gap: var(--space-md); flex-wrap: wrap; justify-content: center; } .btn-primary-warm, .btn-secondary-warm { display: inline-flex; align-items: center; gap: var(--space-xs); padding: 1rem 2rem; font-size: 1.125rem; font-weight: 600; border: none; border-radius: 50px; cursor: pointer; transition: var(--transition); text-decoration: none; } .btn-primary-warm { background: var(--gradient-warm); color: var(--white); box-shadow: 0 10px 30px rgba(180, 139, 78, 0.3); } .btn-primary-warm:hover { transform: translateY(-3px); box-shadow: 0 15px 40px rgba(180, 139, 78, 0.4); } .btn-secondary-warm { background: rgba(255, 255, 255, 0.1); color: var(--white); border: 2px solid rgba(255, 255, 255, 0.3); backdrop-filter: blur(10px); } .btn-secondary-warm:hover { background: rgba(255, 255, 255, 0.2); border-color: rgba(255, 255, 255, 0.5); transform: translateY(-3px); } .btn-icon { font-size: 1.25rem; } /* Scroll Indicator */ .scroll-indicator { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); color: rgba(255, 255, 255, 0.6); font-size: 0.875rem; animation: bounce 2s infinite; } /* Updated scroll arrow styles */ .scroll-arrow { margin-top: 0.5rem; display: flex; justify-content: center; align-items: center; } .scroll-arrow i { width: 32px; height: 32px; color: rgba(255, 255, 255, 0.6); animation: arrow-bounce 1.5s infinite; } @keyframes arrow-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(8px); } } /* Decorations */ .hero-decoration { position: absolute; z-index: 5; } .top-right { top: 5rem; right: 5rem; } .bottom-left { bottom: 8rem; left: 5rem; } .decoration-circle { width: 80px; height: 80px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 2rem; backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); animation: float 6s ease-in-out infinite; } .decoration-circle.orange { background: linear-gradient(135deg, rgba(220, 20, 60, 0.2) 0%, rgba(239, 68, 68, 0.2) 100%); } .decoration-circle.blue { background: linear-gradient(135deg, rgba(0, 31, 63, 0.2) 0%, rgba(0, 51, 102, 0.2) 100%); } /* Welcome Section */ .welcome-section { padding: var(--space-2xl) 0; background: linear-gradient(to bottom, var(--white) 0%, var(--bg-light) 100%); } .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-md); } .welcome-content { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2xl); align-items: center; } .section-title { font-family: var(--font-display); font-size: 3rem; font-weight: 700; margin-bottom: var(--space-md); color: var(--primary-blue); } .section-title.warm { background: var(--gradient-warm); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .lead-text { font-size: 1.25rem; color: var(--text-light); margin-bottom: var(--space-lg); line-height: 1.8; } .feature-list { display: flex; flex-direction: column; gap: var(--space-md); } .feature-item { display: flex; gap: var(--space-md); align-items: flex-start; } .feature-icon { font-size: 2rem; background: var(--gradient-warm); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .feature-item h4 { font-size: 1.25rem; margin-bottom: 0.25rem; color: var(--text-dark); } .feature-item p { color: var(--text-light); } .welcome-image { position: relative; } .rounded-image { width: 100%; border-radius: 20px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.1); } .image-badge { position: absolute; bottom: 2rem; right: 2rem; background: var(--gradient-warm); color: var(--white); padding: 1rem 1.5rem; border-radius: 15px; font-weight: 600; display: flex; flex-direction: column; align-items: center; box-shadow: 0 10px 30px rgba(180, 139, 78, 0.3); } /* Fleet Showcase */ .fleet-showcase { padding: var(--space-2xl) 0; background: var(--white); } .section-header { text-align: center; margin-bottom: var(--space-2xl); } .section-subtitle { font-size: 1.25rem; color: var(--text-light); margin-top: var(--space-sm); } .fleet-carousel { position: relative; max-width: 1000px; margin: 0 auto; } .yacht-card { display: none; grid-template-columns: 1fr 1fr; gap: var(--space-lg); align-items: center; background: var(--white); border-radius: 20px; overflow: hidden; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08); } .yacht-card.active { display: grid; animation: fadeIn 0.6s ease; } .yacht-image-container { position: relative; height: 500px; overflow: hidden; } .yacht-image-container img { width: 100%; height: 100%; object-fit: cover; width: 100%; object-fit: cover; transition: var(--transition-slow); } .yacht-card:hover .yacht-image-container img { transform: scale(1.05); } .yacht-badge { position: absolute; top: 2rem; left: 2rem; padding: 0.5rem 1rem; border-radius: 50px; font-weight: 600; font-size: 0.875rem; backdrop-filter: blur(10px); } .yacht-badge.premium { background: var(--gradient-warm); color: var(--white); } .yacht-badge.adventure { background: var(--gradient-ocean); color: var(--white); } .yacht-details { padding: var(--space-lg); } .yacht-name { font-family: var(--font-display); font-size: 2.5rem; margin-bottom: var(--space-sm); color: var(--primary-blue); } .yacht-description { color: var(--text-light); margin-bottom: var(--space-md); line-height: 1.8; } .yacht-specs { display: flex; flex-direction: column; gap: var(--space-sm); margin-bottom: var(--space-md); } .spec { display: flex; align-items: center; gap: var(--space-sm); } .spec-icon { font-size: 1.25rem; } .yacht-pricing { display: flex; align-items: baseline; gap: var(--space-xs); margin-bottom: var(--space-md); } .price-from { color: var(--text-light); font-size: 0.875rem; } .price-amount { font-size: 2rem; font-weight: 700; color: var(--warm-orange); } .btn-book-yacht { width: 100%; padding: 1rem; background: var(--gradient-warm); color: var(--white); border: none; border-radius: 12px; font-size: 1.125rem; font-weight: 600; cursor: pointer; transition: var(--transition); } .btn-book-yacht:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(180, 139, 78, 0.3); } .fleet-nav { display: flex; justify-content: center; align-items: center; gap: var(--space-md); margin-top: var(--space-lg); } .fleet-prev, .fleet-next { width: 50px; height: 50px; border-radius: 50%; border: 2px solid var(--warm-orange); background: var(--white); color: var(--warm-orange); font-size: 1.5rem; cursor: pointer; transition: var(--transition); } .fleet-prev:hover, .fleet-next:hover { background: var(--gradient-warm); color: var(--white); border-color: transparent; } .fleet-dots { display: flex; gap: var(--space-sm); } .dot { width: 12px; height: 12px; border-radius: 50%; background: var(--text-light); opacity: 0.3; cursor: pointer; transition: var(--transition); } .dot.active { background: var(--warm-orange); opacity: 1; transform: scale(1.2); } /* Services Section */ .services-section { padding: var(--space-2xl) 0; background: linear-gradient(135deg, var(--soft-cream) 0%, var(--white) 100%); } .services-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: var(--space-lg); margin: var(--space-xl) 0; } .service-card { background: var(--white); border-radius: 20px; padding: var(--space-xl); box-shadow: 0 10px 40px rgba(0, 0, 0, 0.08); transition: var(--transition); position: relative; overflow: hidden; } .service-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px; background: var(--gradient-warm); } .charter-service::before { background: var(--gradient-ocean); } .service-card:hover { transform: translateY(-5px); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.12); } .service-icon-wrapper { width: 80px; height: 80px; background: var(--gradient-warm); border-radius: 20px; display: flex; align-items: center; justify-content: center; margin-bottom: var(--space-md); } .charter-service .service-icon-wrapper { background: var(--gradient-ocean); } .service-icon { width: 40px; height: 40px; color: white; } .service-card h3 { font-family: var(--font-display); font-size: 2rem; margin-bottom: var(--space-sm); color: var(--text-dark); } .service-card p { color: var(--text-light); margin-bottom: var(--space-md); line-height: 1.6; } .service-features { list-style: none; padding: 0; margin: var(--space-md) 0; } .service-features li { padding: 0.5rem 0; display: flex; align-items: center; color: var(--text-dark); } .check-icon { width: 20px; height: 20px; color: var(--warm-orange); margin-right: 0.75rem; flex-shrink: 0; } .btn-service { width: 100%; padding: 1rem 2rem; background: var(--gradient-warm); color: white; border: none; border-radius: 12px; font-weight: 600; font-size: 1rem; cursor: pointer; transition: var(--transition); margin-top: var(--space-md); } .charter-service .btn-service { background: var(--gradient-ocean); } .btn-service:hover { transform: scale(1.02); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } /* Service Stats */ .service-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(1.5rem, 4vw, 3rem); margin-top: var(--space-xl); padding: var(--space-lg); background: white; border-radius: 20px; box-shadow: 0 5px 20px rgba(0, 0, 0, 0.05); } @media (max-width: 1024px) { .service-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 640px) { .service-stats { grid-template-columns: repeat(2, 1fr); /* 2x2 grid on mobile */ gap: 1rem; } .stat-item { padding: 1rem; } .stat-item .stat-number { font-size: 2rem; } .stat-item .stat-label { font-size: 0.8rem; } } .stat-item { display: flex; flex-direction: column; gap: 0.4rem; align-items: center; text-align: center; } .stat-icon { width: 40px; height: 40px; color: var(--warm-orange); margin-bottom: var(--space-sm); } .stat-number { display: block; font-size: 2.5rem; font-weight: 800; color: var(--primary-blue); font-family: var(--font-display); } .stat-label { display: block; color: var(--text-light); font-size: 0.875rem; margin-top: 0.5rem; } /* Experience Stories */ .experience-stories { padding: var(--space-2xl) 0; background: var(--bg-light); } .story-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-md); } .section-title.center { text-align: center; margin-bottom: var(--space-2xl); } .stories-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: var(--space-lg); } .story-card { background: var(--white); border-radius: 20px; overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); transition: var(--transition); } .story-card:hover { transform: translateY(-5px); box-shadow: 0 15px 40px rgba(0, 0, 0, 0.12); } .story-image { position: relative; height: 250px; overflow: hidden; } .story-image img { width: 100%; height: 100%; object-fit: cover; width: 100%; object-fit: cover; } .story-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.5) 100%); display: flex; align-items: flex-end; padding: var(--space-md); } .story-category { background: var(--gradient-warm); color: var(--white); padding: 0.5rem 1rem; border-radius: 50px; font-size: 0.875rem; font-weight: 600; } .story-content { padding: var(--space-md); } .story-content h3 { font-family: var(--font-display); font-size: 1.5rem; margin-bottom: var(--space-sm); color: var(--text-dark); } .story-content p { color: var(--text-light); line-height: 1.6; margin-bottom: var(--space-sm); } .story-link { color: var(--warm-orange); text-decoration: none; font-weight: 600; transition: var(--transition); } .story-link:hover { color: var(--warm-amber); } /* Gallery Section */ .gallery-section { padding: var(--space-2xl) 0; background: var(--white); } .image-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-md); margin-top: var(--space-lg); } .gallery-item { position: relative; border-radius: 15px; overflow: hidden; height: 300px; cursor: pointer; transition: var(--transition); } .gallery-item.large { grid-column: span 2; height: 400px; } .gallery-item img { width: 100%; height: 100%; object-fit: cover; width: 100%; object-fit: cover; transition: var(--transition-slow); } .gallery-overlay { position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, rgba(0, 31, 63, 0.9) 0%, transparent 100%); padding: var(--space-lg) var(--space-md) var(--space-md); transform: translateY(100%); transition: var(--transition); } .gallery-caption { color: var(--white); font-size: 1.25rem; font-weight: 600; } .gallery-item:hover .gallery-overlay { transform: translateY(0); } .gallery-item:hover img { transform: scale(1.1); } @media (max-width: 768px) { .gallery-item.large { grid-column: span 1; height: 300px; } } /* Booking CTA */ .booking-cta { padding: var(--space-2xl) 0; background: linear-gradient(135deg, #001f3f 0%, #003366 100%); } .booking-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-md); } .booking-content { text-align: center; } .booking-title { font-family: var(--font-display); font-size: 3rem; color: var(--white); margin-bottom: var(--space-sm); } .booking-subtitle { font-size: 1.25rem; color: rgba(255, 255, 255, 0.8); margin-bottom: var(--space-2xl); } .booking-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-lg); } .booking-card { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 20px; padding: var(--space-lg); text-align: center; transition: var(--transition); } /* Ensure non-featured cards always show with visible background */ .booking-card:not(.featured) { background: rgba(255, 255, 255, 0.95); border: 2px solid var(--white); } .booking-card:not(.featured) h3, .booking-card:not(.featured) p { color: var(--primary-blue); } .booking-card:not(.featured) .booking-icon { color: var(--warm-orange); } .booking-card:hover { background: rgba(255, 255, 255, 0.15); transform: translateY(-5px); } .booking-card:not(.featured):hover { background: rgba(255, 255, 255, 1); transform: translateY(-5px); } .booking-card.featured { background: var(--gradient-warm); border: none; transform: scale(1.05); } .booking-icon { font-size: 3rem; margin-bottom: var(--space-sm); } .booking-card h3 { font-size: 1.5rem; color: var(--white); margin-bottom: var(--space-xs); } .booking-card p { color: rgba(255, 255, 255, 0.8); margin-bottom: var(--space-md); } .btn-booking { width: 100%; padding: 0.75rem 1.5rem; background: var(--white); color: var(--primary-blue); border: 2px solid var(--white); border-radius: 50px; font-weight: 600; cursor: pointer; transition: var(--transition); opacity: 1; visibility: visible; display: flex; align-items: center; justify-content: center; text-align: center; margin: 0 auto; } /* Non-featured card buttons */ .booking-card:not(.featured) .btn-booking { background: var(--primary-blue); color: var(--white); border: 2px solid var(--primary-blue); } .btn-booking:hover { background: var(--gradient-warm); color: var(--white); transform: translateY(-2px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); } .btn-booking.primary { background: var(--white); color: var(--warm-orange); border-color: var(--white); } .btn-booking.primary:hover { background: var(--gradient-warm); color: var(--white); } /* Footer */ .voyage-footer { background: var(--primary-blue); color: var(--white); padding: var(--space-2xl) 0 var(--space-md); } .footer-container { max-width: 1200px; margin: 0 auto; padding: 0 var(--space-md); } .footer-content { display: flex; justify-content: space-between; gap: var(--space-2xl); margin-bottom: var(--space-lg); } .footer-brand { flex: 1; max-width: 500px; } .footer-contact { flex: 0 0 auto; margin-left: auto; } .footer-brand h3 { font-family: var(--font-display); font-size: 2rem; margin-bottom: var(--space-sm); } .footer-logo { width: 50px; height: 50px; border-radius: 50%; margin-bottom: var(--space-sm); } .footer-brand p { color: rgba(255, 255, 255, 0.7); margin-bottom: var(--space-md); } .social-links { display: flex; gap: var(--space-sm); } .social-links a { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.1); border-radius: 50%; font-size: 1.25rem; transition: var(--transition); touch-action: manipulation; } .social-links a:hover { background: var(--gradient-warm); transform: translateY(-3px); } .footer-links h4, .footer-contact h4 { margin-bottom: var(--space-md); } /* Force social icons to be white */ .voyage-footer .social-links a svg, .voyage-footer .social-links a i { stroke: white !important; color: white !important; fill: none !important; } .footer-links a { display: block; color: rgba(255, 255, 255, 0.7); text-decoration: none; margin-bottom: var(--space-xs); transition: var(--transition); } .footer-links a:hover { color: var(--warm-orange); } .footer-contact p { color: rgba(255, 255, 255, 0.7); margin-bottom: var(--space-xs); } .footer-bottom { text-align: center; padding-top: var(--space-lg); border-top: 1px solid rgba(255, 255, 255, 0.1); color: rgba(255, 255, 255, 0.5); } /* Layout Switcher */ .layout-switcher { position: fixed; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; gap: 0.5rem; background: var(--white); padding: 0.5rem; border-radius: 50px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); z-index: 90; } .layout-btn { padding: 0.5rem 1rem; background: transparent; border: none; border-radius: 50px; font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: var(--transition); color: var(--text-dark); } .layout-btn:hover { background: var(--bg-light); } .layout-btn.active { background: var(--gradient-warm); color: var(--white); } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); } 40% { transform: translateX(-50%) translateY(-10px); } 60% { transform: translateX(-50%) translateY(-5px); } } @keyframes scroll { 0% { top: 8px; opacity: 1; } 100% { top: 20px; opacity: 0; } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-20px); } } .animate-fade-in { animation: fadeIn 0.8s ease; } .animate-fade-up { animation: fadeIn 0.8s ease 0.2s both; } .animate-fade-up-delay { animation: fadeIn 0.8s ease 0.4s both; } .animate-fade-up-delay-2 { animation: fadeIn 0.8s ease 0.6s both; } /* Responsive */ @media (max-width: 768px) { .hero-voyage { padding: 0; /* iOS-specific height handling */ min-height: 100vh; min-height: -webkit-fill-available; min-height: 100dvh; /* Video will extend under notch - no padding-top here */ padding-bottom: env(safe-area-inset-bottom); overflow: clip; /* Allow video to extend while preventing scrollbars */ max-width: 100vw !important; } /* iOS-specific video extension into safe area */ @supports (-webkit-touch-callout: none) { /* Only iOS Safari */ .hero-video-container { position: fixed !important; left: 0; right: 0; /* Extend beyond safe area to ensure coverage on iOS */ top: calc(-1 * (env(safe-area-inset-top, 0) + 50px)) !important; width: 100vw; height: calc(100lvh + env(safe-area-inset-top, 0) + 50px) !important; z-index: -1; pointer-events: none; background: #ffffff; /* White fallback if video doesn't load */ } /* Extra insurance for iOS 15-26 */ @supports (height: 100dvh) { .hero-video-container { height: calc(100dvh + env(safe-area-inset-top, 0) + 50px) !important; } } /* iOS-specific video sizing */ .hero-video { width: 100%; height: 100%; object-fit: cover; object-position: center top; /* Align to top for better notch coverage */ } } /* Non-iOS mobile devices keep normal positioning */ @supports not (-webkit-touch-callout: none) { .hero-video-container { position: fixed !important; left: 0; right: 0; top: 0; /* Normal positioning for Android/other mobile */ width: 100vw; height: 100vh; z-index: -1; pointer-events: none; background: #ffffff; } } .hero-content { /* Adjust padding to account for safe areas on all sides */ padding: clamp(1rem, 4vw, 2rem); padding-top: max(env(safe-area-max-inset-top, env(safe-area-inset-top, 0)), clamp(2rem, 4vw, 3rem)); padding-bottom: max(env(safe-area-max-inset-bottom, env(safe-area-inset-bottom, 0)), clamp(1rem, 4vw, 2rem)); padding-left: max(env(safe-area-inset-left, 0), clamp(1rem, 3vw, 2rem)); padding-right: max(env(safe-area-inset-right, 0), clamp(1rem, 3vw, 2rem)); width: 100%; display: grid; grid-template-rows: 1fr auto; align-items: center; justify-items: center; min-height: 100vh; min-height: -webkit-fill-available; min-height: 100dvh; position: relative; z-index: 10; /* Ensure content is above video */ row-gap: clamp(1.5rem, 6vw, 3rem); } .hero-main { gap: var(--space-sm); max-width: 100%; } /* Responsive logo */ .hero-logo { width: 100%; max-width: 90%; margin: 0 auto; } .hero-logo img { height: auto; width: clamp(280px, 85vw, 380px); max-height: clamp(180px, 50vw, 240px); margin: 0 auto; object-fit: contain; } .hero-headline { font-size: clamp(2rem, 7vw, 2.5rem); line-height: 1.15; margin-bottom: var(--space-sm); padding: 0 var(--space-xs); } .hero-subtext { font-size: clamp(0.95rem, 2.5vw, 1.125rem); padding: 0 var(--space-sm); margin-bottom: var(--space-md); line-height: 1.6; text-align: center; max-width: 90%; } .hero-actions { flex-direction: column; width: 100%; padding: 0 var(--space-sm); gap: var(--space-sm); align-items: center; max-width: 380px; } /* Smaller buttons on mobile */ .btn-primary-warm, .btn-secondary-warm { width: 100%; max-width: 360px; padding: clamp(14px, 3vw, 18px) clamp(24px, 5vw, 32px); font-size: clamp(1rem, 2.5vw, 1.125rem); display: flex; align-items: center; justify-content: center; text-align: center; gap: 0.5rem; min-height: 52px; } .btn-primary-warm .btn-icon, .btn-secondary-warm .btn-icon { font-size: 0.875rem; width: 16px; height: 16px; margin-right: 0; } .trust-badge { padding: var(--space-xs) var(--space-sm); font-size: clamp(0.8rem, 2vw, 0.9rem); margin-bottom: var(--space-md); } .scroll-indicator { display: none; } /* Fix all section padding for mobile */ section { padding: var(--space-xl) var(--space-sm) !important; scroll-margin-top: 80px; position: relative; z-index: 2; } .welcome-section, .services-section, .experience-stories, .portfolio-gallery, .booking-cta { padding: var(--space-xl) var(--space-sm) !important; margin-top: -1px; /* Prevent gaps between sections */ } .welcome-content { grid-template-columns: 1fr; padding: 0; } .service-card { width: 100%; padding: var(--space-sm); } .services-grid { grid-template-columns: 1fr; gap: var(--space-md); padding: 0; } /* Fix service card content */ .service-content { padding: var(--space-sm); } .service-features li { display: flex; align-items: flex-start; gap: var(--space-xs); padding: var(--space-xs) 0; } .service-features li::before { flex-shrink: 0; margin-top: 2px; } /* Section titles for mobile */ .section-title { font-size: clamp(1.75rem, 6vw, 2.25rem); line-height: 1.2; margin-bottom: var(--space-sm); padding: 0 var(--space-xs); } .section-subtitle { font-size: clamp(0.95rem, 2.5vw, 1.125rem); line-height: 1.5; margin-bottom: var(--space-md); padding: 0 var(--space-xs); } .yacht-card { grid-template-columns: 1fr; } .footer-content { display: flex; flex-direction: column; align-items: center; gap: 2rem; text-align: center; } .footer-brand { max-width: 100%; margin: 0; } .footer-contact { margin-left: 0; width: 100%; text-align: center; } .footer-contact p, .footer-brand p { word-wrap: break-word; overflow-wrap: break-word; padding: 0 1rem; } /* Fix booking cards for mobile */ .booking-options { grid-template-columns: 1fr; padding: 0; } .booking-card { width: 100%; padding: 20px; } /* Fix testimonial cards */ .testimonials-grid { grid-template-columns: 1fr; gap: 20px; padding: 0; } .testimonial-card { width: 100%; padding: 20px; } .social-links { justify-content: center; } .top-right, .bottom-left { display: none; } .nav-links { display: none; } } /* Dark theme adjustments for Deep Sea */ body.theme-deep-sea .welcome-section, body.theme-deep-sea .fleet-showcase, body.theme-deep-sea .experience-stories, body.theme-deep-sea .booking-cta { background: var(--bg-light); } /* Gold theme is now the default - no overrides needed */ body.theme-deep-sea .yacht-card, body.theme-deep-sea .story-card, body.theme-deep-sea .booking-card { background: var(--soft-cream); color: var(--text-dark); } body.theme-deep-sea .hero-content h1, body.theme-deep-sea .hero-content p { color: var(--text-dark); } body.theme-deep-sea .voyage-nav:not(.scrolled) .nav-brand, body.theme-deep-sea .voyage-nav:not(.scrolled) .nav-link { color: var(--text-dark); } body.theme-deep-sea .voyage-footer { background: var(--primary-blue); color: var(--text-dark); } /* Theme-specific button colors */ body.theme-coastal-dawn .btn-primary-warm, body.theme-coastal-dawn .btn-secondary-warm { background: var(--warm-orange); color: var(--white); } body.theme-deep-sea .btn-primary-warm, body.theme-deep-sea .btn-secondary-warm { background: var(--warm-orange); color: var(--white); } body.theme-monaco-white .btn-primary-warm, body.theme-monaco-white .btn-secondary-warm { background: var(--warm-orange); color: var(--white); }