855 lines
35 KiB
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
|