vueloenglobo.mx/resources/views/template/home.blade.php

855 lines
35 KiB
PHP

@extends('template.layout')
@section('title', __('site.home.hero.subtitle') . ' | ' . __('site.home.welcome'))
@section('content')
<style>
/* ==================== */
/* VARIABLES GLOBALES (colorimetría original) */
/* ==================== */
:root {
--color-primary: #4A63D2;
--color-primary-light: #B7C1F0;
--color-dark: #2B2F5B;
--color-sky: #6ECFF6;
--color-accent: #FFC107;
--gradient-primary: linear-gradient(135deg, #4A63D2, #6ECFF6);
--primary: #1a1d3a;
--secondary: #25284a;
--accent: #6ECFF6;
--accent-gradient: linear-gradient(135deg, #6ECFF6, #4A63D2);
--text-primary: #F7F9FC;
--text-secondary: #B7C1F0;
--text-tertiary: #94a3b8;
--surface: rgba(43, 47, 91, 0.85);
--surface-light: rgba(255, 255, 255, 0.08);
--border: rgba(255, 255, 255, 0.12);
--shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.5);
--transition-base: 400ms cubic-bezier(0.4, 0, 0.2, 1);
--max-width: 1440px;
}
body.light-mode {
--primary: #F7F9FC;
--secondary: #ffffff;
--accent: #4A63D2;
--accent-gradient: linear-gradient(135deg, #4A63D2, #6ECFF6);
--text-primary: #2B2F5B;
--text-secondary: #4A63D2;
--text-tertiary: #718096;
--surface: rgba(255, 255, 255, 0.95);
--surface-light: rgba(0, 0, 0, 0.04);
--border: rgba(0, 0, 0, 0.12);
--shadow-xl: 0 20px 60px rgba(0, 0, 0, 0.2);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', sans-serif;
background: var(--primary);
color: var(--text-primary);
overflow-x: hidden;
transition: background-color var(--transition-base), color var(--transition-base);
}
/* HERO SECTION CON VIDEO */
.hero-carousel-section {
position: relative;
height: 100vh;
min-height: 700px;
width: 100%;
overflow: hidden;
}
.video-container {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.hero-video {
width: 100%;
height: 100%;
object-fit: cover;
filter: brightness(0.7);
}
body.light-mode .hero-video {
filter: brightness(0.85);
}
.video-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(to bottom,
rgba(26, 29, 58, 0.3) 0%,
rgba(26, 29, 58, 0.5) 40%,
rgba(26, 29, 58, 0.8) 80%,
rgba(26, 29, 58, 0.95) 100%);
z-index: 1;
}
body.light-mode .video-overlay {
background: linear-gradient(to bottom,
rgba(247, 249, 252, 0.2) 0%,
rgba(247, 249, 252, 0.4) 40%,
rgba(247, 249, 252, 0.7) 80%,
rgba(247, 249, 252, 0.9) 100%);
}
.hero-content {
position: relative;
z-index: 2;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1rem;
}
/* CARRUSEL: slides ocupan 70% del ancho y respetan proporción 851x315 */
.hero-swiper-container {
width: 100%;
max-width: 1400px;
margin: 0 auto;
padding: 20px 0;
position: relative;
}
.hero-swiper {
width: 100%;
overflow: visible;
padding: 30px 0 60px;
}
.hero-swiper .swiper-slide {
width: 70% !important; /* 70% del ancho visible */
aspect-ratio: 851 / 315 !important; /* proporción exacta 851x315 */
border-radius: 28px;
transition: transform 0.4s cubic-bezier(0.2, 0.9, 0.4, 1.1), opacity 0.3s;
opacity: 0.7;
transform: scale(0.94);
cursor: pointer;
}
.hero-swiper .swiper-slide-active {
opacity: 1;
transform: scale(1);
}
.hero-swiper .swiper-slide:hover {
transform: scale(1.02);
}
.slide-link {
display: block;
width: 100%;
height: 100%;
text-decoration: none;
border-radius: 28px;
overflow: hidden;
box-shadow: var(--shadow-xl);
transition: all 0.3s ease;
background: var(--surface);
backdrop-filter: blur(2px);
}
.slide-link:hover {
box-shadow: 0 30px 60px rgba(0, 0, 0, 0.5);
transform: translateY(-6px);
}
.slide-img {
width: 100%;
height: 100%;
object-fit: cover; /* asegura que la imagen cubra el área sin deformarse */
display: block;
transition: transform 0.5s var(--transition-base);
}
.slide-link:hover .slide-img {
transform: scale(1.05);
}
/* Flechas de navegación */
.hero-swiper .swiper-button-next,
.hero-swiper .swiper-button-prev {
width: 52px;
height: 52px;
background: var(--surface);
backdrop-filter: blur(12px);
border-radius: 50%;
border: 1px solid var(--border);
color: var(--accent);
transition: all var(--transition-base);
box-shadow: var(--shadow-xl);
}
.hero-swiper .swiper-button-next:after,
.hero-swiper .swiper-button-prev:after {
font-size: 20px;
font-weight: bold;
}
.hero-swiper .swiper-button-next:hover,
.hero-swiper .swiper-button-prev:hover {
background: var(--accent-gradient);
color: white;
transform: scale(1.1);
border-color: transparent;
}
/* Paginación (dots) */
.hero-swiper .swiper-pagination-bullet {
width: 12px;
height: 12px;
background: var(--text-tertiary);
opacity: 0.6;
transition: all var(--transition-fast);
margin: 0 6px;
}
.hero-swiper .swiper-pagination-bullet-active {
background: var(--accent);
opacity: 1;
width: 28px;
border-radius: 8px;
transform: scale(1.1);
}
/* Responsive: en móviles el ancho del slide se ajusta para seguir siendo legible */
@media (max-width: 768px) {
.hero-carousel-section {
min-height: 600px;
}
.hero-swiper .swiper-slide {
width: 85% !important; /* un poco más grande en móviles */
}
.hero-swiper .swiper-button-next,
.hero-swiper .swiper-button-prev {
width: 38px;
height: 38px;
}
.hero-swiper .swiper-button-next:after,
.hero-swiper .swiper-button-prev:after {
font-size: 16px;
}
}
@media (max-width: 480px) {
.hero-swiper .swiper-slide {
width: 90% !important;
}
.hero-swiper .swiper-button-next,
.hero-swiper .swiper-button-prev {
display: none;
}
}
/* Animación de entrada */
.hero-swiper-container {
animation: fadeInUp 0.9s ease-out;
}
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Toggle modo claro/oscuro (opcional) */
.theme-toggle-demo {
position: fixed;
bottom: 24px;
left: 24px;
z-index: 9999;
background: var(--surface);
backdrop-filter: blur(12px);
border: 1px solid var(--border);
border-radius: 60px;
padding: 10px 18px;
font-size: 0.8rem;
font-weight: 600;
color: var(--text-primary);
cursor: pointer;
transition: all var(--transition-base);
box-shadow: var(--shadow-xl);
display: flex;
align-items: center;
gap: 8px;
}
.theme-toggle-demo:hover {
background: var(--accent);
color: #1a1d3a;
transform: translateY(-3px);
}
</style>
{{-- <section class="hero-carousel-section">
<div class="video-container">
<!-- Video de fondo (reemplaza la URL por tu asset local si lo deseas) -->
<video class="hero-video" autoplay muted loop playsinline>
<source src="{{ asset('assets/videos/Globopuerto-Teotihuacan-Video.mp4') }}" type="video/mp4">
Tu navegador no soporta video HTML5.
</video>
<div class="video-overlay"></div>
</div>
<div class="hero-content">
<div class="hero-swiper-container">
<div class="swiper hero-swiper">
<div class="swiper-wrapper">
<!-- Cada slide: imagen .webp con proporción 851x315 y enlace clickeable -->
<div class="swiper-slide">
<a href="{{ route('vuelos.en.globo') }}" class="slide-link" target="_blank" rel="noopener noreferrer">
<!-- Imagen .webp de ejemplo; reemplaza con tus assets reales en 851x315 -->
<img class="slide-img" src="{{ asset('assets/img/banner-informativo/banner-01.jpeg') }}" alt="Vuelo en globo Teotihuacán" loading="lazy">
</a>
</div>
<div class="swiper-slide">
<a href="{{ route('vuelos.en.globo') }}" class="slide-link" target="_blank" rel="noopener noreferrer">
<img class="slide-img" src="{{ asset('assets/img/banner-informativo/banner-02.jpeg') }}" alt="Amanecer místico" loading="lazy">
</a>
</div>
<div class="swiper-slide">
<a href="{{ route('vuelos.en.globo') }} class="slide-link" target="_blank" rel="noopener noreferrer">
<img class="slide-img" src="{{ asset('assets/img/banner-informativo/banner-02.jpeg') }}" alt="Paisajes volcánicos" loading="lazy">
</a>
</div>
<div class="swiper-slide">
<a href="{{ route('vuelos.en.globo') }}" class="slide-link" target="_blank" rel="noopener noreferrer">
<!-- Imagen .webp de ejemplo; reemplaza con tus assets reales en 851x315 -->
<img class="slide-img" src="{{ asset('assets/img/banner-informativo/banner-01.jpeg') }}" alt="Vuelo en globo Teotihuacán" loading="lazy">
</a>
</div>
</div>
<!-- Flechas de navegación -->
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
<!-- Paginación (dots) -->
<div class="swiper-pagination"></div>
</div>
</div>
</div>
</section> --}}
<!-- Toggle modo claro/oscuro (opcional) -->
<div class="theme-toggle-demo" id="themeToggleBtn">
<i class="fas fa-moon"></i> <span>Modo claro</span>
</div>
{{-- <!-- ==================== -->
<!-- COMPONENTE: HERO SECTION -->
<!-- ==================== -->
--}}
<section class="hero-section">
<div class="video-container">
<video class="hero-video" autoplay muted loop playsinline id="heroVideo">
<source src="{{ asset('assets/videos/Globopuerto-Teotihuacan-Video.mp4') }}" type="video/mp4"
poster="{{ asset('assets/img/banner/globopuertoteotihuacan-video.jpg') }}">
<img src="{{ asset('assets/img/banner/globopuertoteotihuacan-video.jpg') }}" alt="Globo aerostático">
</video>
<div class="video-overlay"></div>
</div>
<div class="hero-content">
<div class="hero-text">
{{-- <div class="hero-subtitle">
<i class="fas fa-star"></i> {{ __('site.home.hero.subtitle') }}
</div> --}}
<h1 class="hero-title">
{!! __('site.home.hero.title') !!}
</h1>
<p class="hero-description">
{{ __('site.home.hero.description') }}
</p>
<div class="hero-stats">
<div class="stat-item">
<span class="stat-number">5,000+</span>
<span class="stat-label">{{ __('site.home.hero.stats.satisfied_clients') }}</span>
</div>
{{-- <div class="stat-item" hidden>
<span class="stat-number">25+</span>
<span class="stat-label">{{ __('site.home.hero.stats.unique_destinations') }}</span>
</div> --}}
<div class="stat-item">
<span class="stat-number">100%</span>
<span class="stat-label">{{ __('site.home.hero.stats.guaranteed_safety') }}</span>
</div>
</div>
</div>
</div>
</section>
<!-- ==================== -->
<!-- COMPONENTE: VUELOS -->
<!-- ==================== -->
@isset($vuelos)
<div class="vuelos-section">
<div class="block-title text-center">
<p class="section-badge">{{ __('vuelos.section_badge') ?? '✨ Paseos en globo Teotihuacán' }}</p>
<h3 class="section-title">{{ __('vuelos.section_title') ?? 'Nuestros vuelos' }}</h3>
<p class="section-description">Descubre la magia de volar sobre Teotihuacán con nuestras experiencias únicas</p>
</div>
<div class="flights-grid">
@php
$duracion_vuelo = __('vuelos.duration');
$ubicacion = __('vuelos.location');
$listaVuelos = $vuelos['Compartidos'] ?? ($vuelos['Shared'] ?? $vuelos);
@endphp
@forelse ($listaVuelos as $index => $item)
@php
$vuelo = $item['vuelo'] ?? $item;
$categoria = $item['categoria']['nombre'] ?? 'Compartido';
$imagenes = $item['imagenes'] ?? [];
$incluye = $item['incluye'] ?? [];
$imagen = !empty($imagenes)
? $imagenes[0]['ruta_imagen_vuelo']
: asset('img/default-flight.jpg');
$precio_publico = $vuelo['precio_publico'] ?? 0;
$precio_especial = $vuelo['precio_especial'] ?? 0;
if (isset($item['precios']) && ($item['precios']['precio_principal'] ?? 0) == 1) {
$precio_publico = $item['precios']['precio_vuelo_original'] ?? $precio_publico;
$precio_especial = $item['precios']['precio_vuelo_especial'] ?? $precio_especial;
}
$tiene_descuento = $precio_especial > 0 && $precio_especial < $precio_publico;
$descuento_porcentaje = $tiene_descuento
? round((($precio_publico - $precio_especial) / $precio_publico) * 100)
: 0;
$url = route('vueloSeleccionado', [
'vuelo' => $vuelo['enlace_permanente'] ?? $vuelo['id_vuelo'],
]);
$badge_text =
$vuelo['highlighted_text_flight_' . (app()->getLocale() == 'en' ? 'en' : 'es')] ??
($vuelo['highlighted_text_flight_es'] ?? null);
$badge_color = $vuelo['highlighted_background_color_badge_flight_es'] ?? '#04cdff';
$rating = $vuelo['raiting_global_number'] ?? 0;
$total_reseñas = $vuelo['total_reviews'] ?? rand(25, 150);
$hora_actividad = $vuelo['hora_actividad'] ?? null;
$duracion_minutos = $vuelo['duracion_minutos'] ?? 45;
@endphp
<div class="flight-card" data-vuelo-id="{{ $vuelo['id_vuelo'] }}">
{{-- Badge destacado --}}
@if ($badge_text)
<div class="flight-card__badge" style="background: {{ $badge_color }}">
<i class="fas fa-star"></i>
<span>{{ $badge_text }}</span>
</div>
@endif
{{-- Badge de descuento --}}
@if ($tiene_descuento)
<div class="flight-card__discount">
<span>-{{ $descuento_porcentaje }}%</span>
<small>OFF</small>
</div>
@endif
{{-- Imagen --}}
<div class="flight-card__image">
<img src="{{ asset('assets/img/vueloenglobo/logo-vueloenglobo.png') }}" data-src="{{ $imagen }}"
alt="{{ $vuelo['nombre_vuelo'] }}" loading="lazy"
onclick="window.location.href='{{ $url }}'">
{{-- Overlay con ícono --}}
<div class="flight-card__overlay">
<button class="flight-card__quick-view"
onclick="event.stopPropagation(); window.location.href='{{ $url }}'">
<i class="fas fa-eye"></i> Ver detalles
</button>
</div>
{{-- Rating --}}
@if ($rating > 0)
<div class="flight-card__rating">
<i class="fas fa-star"></i>
<span>{{ number_format($rating, 1) }}</span>
<small>({{ $total_reseñas }})</small>
</div>
@endif
</div>
{{-- Contenido --}}
<div class="flight-card__content">
{{-- Categoría --}}
<div class="flight-card__category">
<span class="category-tag">
<i class="fas fa-users"></i> {{ $categoria }}
</span>
@if ($duracion_minutos)
<span class="duration-tag">
<i class="far fa-clock"></i> {{ $duracion_minutos }} min
</span>
@endif
</div>
{{-- Título --}}
<h3 class="flight-card__title">
<a href="{{ $url }}">{{ $vuelo['nombre_vuelo'] }}</a>
</h3>
{{-- Descripción --}}
<p class="flight-card__description">
{{ Str::limit($vuelo['descripcion_corta'] ?? __('vuelos.image_not_available'), 120) }}
</p>
{{-- Horario --}}
@if (!empty($hora_actividad))
<div class="flight-card__schedule">
<i class="far fa-calendar-alt"></i>
<span>Salida: {{ date('g:i A', strtotime($hora_actividad)) }}</span>
</div>
@endif
{{-- Incluye destacados --}}
@if (!empty($incluye))
<div class="flight-card__includes">
@foreach (array_slice($incluye, 0, 3) as $item_include)
<span class="include-item">
<i class="fas fa-check-circle"></i>
{{ Str::limit($item_include['titulo_item'], 25) }}
</span>
@endforeach
</div>
@endif
{{-- Precios --}}
<div class="flight-card__prices">
@if ($tiene_descuento)
<div class="prices-wrapper">
<span class="price-old">${{ number_format($precio_publico, 0) }}</span>
<div class="price-current">
<span class="currency">$</span>
<span class="amount">{{ number_format($precio_especial, 0) }}</span>
<span class="period">/ persona</span>
</div>
</div>
<div class="price-savings">
<i class="fas fa-tag"></i> Ahorras
${{ number_format($precio_publico - $precio_especial, 0) }}
</div>
@else
<div class="price-current">
<span class="currency">$</span>
<span class="amount">{{ number_format($precio_publico, 0) }}</span>
<span class="period">/ persona</span>
</div>
@endif
</div>
{{-- Meta información --}}
<div class="flight-card__meta">
<div class="meta-item">
<i class="fas fa-map-marker-alt"></i>
<span>{{ $ubicacion }}</span>
</div>
<div class="meta-item">
<i class="fas fa-clock"></i>
<span>{{ $duracion_vuelo }}</span>
</div>
<div class="meta-item">
<i class="fas fa-language"></i>
<span>Español / Inglés</span>
</div>
</div>
{{-- Botones de acción --}}
<div class="flight-card__actions">
<button class="btn-inquire"
onclick="openChatbot('{{ addslashes($vuelo['nombre_vuelo']) }}', {{ $vuelo['id_vuelo'] }})">
<i class="fas fa-comment-dots"></i>
<span>Consultar</span>
</button>
<a href="{{ $url }}" class="btn-book">
<i class="fas fa-calendar-check"></i>
<span>Reservar ahora</span>
<i class="fas fa-arrow-right"></i>
</a>
</div>
</div>
</div>
@empty
<div class="no-flights">
<div class="no-flights__icon">
<i class="fas fa-hot-air-balloon"></i>
</div>
<h3>{{ __('vuelos.no_flights') ?? 'No hay vuelos disponibles' }}</h3>
<p>{{ __('vuelos.check_later') ?? 'Por favor, revisa más tarde o contacta con nosotros.' }}</p>
<button class="btn-contact" onclick="openChatbot()">
<i class="fas fa-headset"></i> Contactar soporte
</button>
</div>
@endforelse
</div>
</div>
@endisset
<!-- ==================== -->
<!-- COMPONENTE: CONÓCENOS -->
<!-- ==================== -->
<section class="conocenos-section">
<div class="conocenos-header">
<span class="conocenos-subtitle">
<i class="fas fa-star"></i> {{ __('site.home.conocenos.subtitle') }}
</span>
<h2 class="conocenos-title">
{{ __('site.home.conocenos.title') }}
</h2>
</div>
<div class="conocenos-grid">
<!-- Card 1: Conócenos -->
<div class="conocenos-card">
<div class="conocenos-icon">
<i class="fas fa-heart"></i>
</div>
<h3>
{{ __('site.home.conocenos.card1.title') }}
<span>{{ __('site.home.conocenos.card1.subtitle') }}</span>
</h3>
<p>{{ __('site.home.conocenos.card1.description') }}</p>
</div>
<!-- Card 2: Pilotos certificados -->
<div class="conocenos-card">
<div class="conocenos-icon">
<i class="fas fa-user-graduate"></i>
</div>
<h3>
{{ __('site.home.conocenos.card2.title') }}
<span>{{ __('site.home.conocenos.card2.subtitle') }}</span>
</h3>
<p>{{ __('site.home.conocenos.card2.description') }}</p>
</div>
<!-- Card 3: Instalaciones Premium -->
<div class="conocenos-card">
<div class="conocenos-icon">
<i class="fas fa-crown"></i>
</div>
<h3>
{{ __('site.home.conocenos.card3.title') }}
<span>{{ __('site.home.conocenos.card3.subtitle') }}</span>
</h3>
<p>{{ __('site.home.conocenos.card3.description') }}</p>
</div>
<!-- Card 4: 12+ Años de Experiencia -->
<div class="conocenos-card">
<div class="conocenos-icon">
<i class="fas fa-calendar-alt"></i>
</div>
<h3>
{{ __('site.home.conocenos.card4.title') }}
<span>{{ __('site.home.conocenos.card4.subtitle') }}</span>
</h3>
<p>{{ __('site.home.conocenos.card4.description') }}</p>
</div>
<!-- Card 5: Seguridad Garantizada -->
<div class="conocenos-card">
<div class="conocenos-icon">
<i class="fas fa-shield-alt"></i>
</div>
<h3>
{{ __('site.home.conocenos.card5.title') }}
<span>{{ __('site.home.conocenos.card5.subtitle') }}</span>
</h3>
<p>{{ __('site.home.conocenos.card5.description') }}</p>
</div>
</div>
<div class="conocenos-cta">
<a href="{{ route('vuelos.en.globo') }}" class="btn-reserva" id="">
{{ __('site.home.conocenos.btn_reserva') }} <i class="fas fa-arrow-right"></i>
</a>
</div>
</section>
<!-- ==================== -->
<!-- COMPONENTE: EXTRAS (Complementa tu viaje) -->
<!-- ==================== -->
<section class="extras-section">
<div class="extras-header">
<span class="extras-subtitle">
<i class="fas fa-gem"></i> {{ __('site.home.extras.subtitle') }}
</span>
<h2 class="extras-title">
{{ __('site.home.extras.title') }}
</h2>
<p class="extras-description">
{{ __('site.home.extras.description') }}
</p>
</div>
<div class="extras-grid">
<!-- Extra 1: Restaurante El Cielo -->
<div class="extra-card">
<div class="extra-icon">
<i class="fas fa-utensils"></i>
</div>
<h3>{{ __('site.home.extras.restaurante.title') }}
<span>{{ __('site.home.extras.restaurante.subtitle') }}</span>
</h3>
<p>{{ __('site.home.extras.restaurante.description') }}</p>
<a href="{{ url('extras') }}" class="extra-link">{{ __('site.home.extras.discover') }} <i
class="fas fa-arrow-right"></i></a>
</div>
<!-- Extra 2: Hospedaje en Teotihuacán -->
<div class="extra-card">
<div class="extra-icon">
<i class="fas fa-bed"></i>
</div>
<h3>{{ __('site.home.extras.hospedaje.title') }}
<span>{{ __('site.home.extras.hospedaje.subtitle') }}</span>
</h3>
<p>{{ __('site.home.extras.hospedaje.description') }}</p>
<a href="{{ url('extras') }}" class="extra-link">{{ __('site.home.extras.discover') }} <i
class="fas fa-arrow-right"></i></a>
</div>
<!-- Extra 3: Tour en bicicleta -->
<div class="extra-card">
<div class="extra-icon">
<i class="fas fa-bicycle"></i>
</div>
<h3>{{ __('site.home.extras.bicicleta.title') }}
<span>{{ __('site.home.extras.bicicleta.subtitle') }}</span>
</h3>
<p>{{ __('site.home.extras.bicicleta.description') }}</p>
<a href="{{ url('extras') }}" class="extra-link">{{ __('site.home.extras.discover') }} <i
class="fas fa-arrow-right"></i></a>
</div>
<!-- Extra 4: Transporte Privado o Compartido -->
<div class="extra-card">
<div class="extra-icon">
<i class="fas fa-car"></i>
</div>
<h3>{{ __('site.home.extras.transporte.title') }}
<span>{{ __('site.home.extras.transporte.subtitle') }}</span>
</h3>
<p>{{ __('site.home.extras.transporte.description') }}</p>
<a href="{{ url('extras') }}" class="extra-link">{{ __('site.home.extras.discover') }} <i
class="fas fa-arrow-right"></i></a>
</div>
<!-- Extra 5: Tour en cuatrimoto -->
<div class="extra-card">
<div class="extra-icon">
<i class="fas fa-motorcycle"></i>
</div>
<h3>{{ __('site.home.extras.cuatrimoto.title') }}
<span>{{ __('site.home.extras.cuatrimoto.subtitle') }}</span>
</h3>
<p>{{ __('site.home.extras.cuatrimoto.description') }}</p>
<a href="{{ url('extras') }}" class="extra-link">{{ __('site.home.extras.discover') }} <i
class="fas fa-arrow-right"></i></a>
</div>
<!-- Extra 6: Paquete Completo -->
<div class="extra-card">
<div class="extra-icon">
<i class="fas fa-star-of-life"></i>
</div>
<h3>{{ __('site.home.extras.paquete.title') }} <span>{{ __('site.home.extras.paquete.subtitle') }}</span>
</h3>
<p>{{ __('site.home.extras.paquete.description') }}</p>
<a href="{{ url('extras') }}" class="extra-link">{{ __('site.home.extras.discover') }} <i
class="fas fa-arrow-right"></i></a>
</div>
</div>
<div class="extras-cta">
<a href="{{ url('extras') }}" class="btn-extras">
{{ __('site.home.extras.btn_all') }} <i class="fas fa-chevron-right"></i>
</a>
</div>
</section>
@endsection
@push('js')
<script src="{{ asset('assets/js/vuelos-en-globo.js') }}"></script>
<script>
(function() {
// Inicializar Swiper con slides centrados y ancho personalizado (70%)
const swiper = new Swiper('.hero-swiper', {
slidesPerView: 'auto', // cada slide toma su propio ancho (70% desde CSS)
centeredSlides: true, // centra el slide activo
loop: true,
speed: 700,
autoplay: {
delay: 4000,
disableOnInteraction: false,
pauseOnMouseEnter: true,
},
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
pagination: {
el: '.swiper-pagination',
clickable: true,
dynamicBullets: false,
},
grabCursor: true,
keyboard: { enabled: true },
spaceBetween: 24,
breakpoints: {
320: { spaceBetween: 16 },
768: { spaceBetween: 24 },
1024: { spaceBetween: 32 }
}
});
// Toggle de modo claro/oscuro
const toggleBtn = document.getElementById('themeToggleBtn');
if (toggleBtn) {
const body = document.body;
const icon = toggleBtn.querySelector('i');
const textSpan = toggleBtn.querySelector('span');
const isLight = localStorage.getItem('theme-mode') === 'light';
if (isLight) {
body.classList.add('light-mode');
if (icon) icon.className = 'fas fa-sun';
if (textSpan) textSpan.innerText = 'Modo oscuro';
}
toggleBtn.addEventListener('click', () => {
body.classList.toggle('light-mode');
const isLightMode = body.classList.contains('light-mode');
if (isLightMode) {
if (icon) icon.className = 'fas fa-sun';
if (textSpan) textSpan.innerText = 'Modo oscuro';
localStorage.setItem('theme-mode', 'light');
} else {
if (icon) icon.className = 'fas fa-moon';
if (textSpan) textSpan.innerText = 'Modo claro';
localStorage.setItem('theme-mode', 'dark');
}
});
}
})();
</script>
@endpush