<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<title>Boutique 5sur5séjour - Souvenirs de séjours</title>
<meta content="Découvrez notre boutique de souvenirs pour immortaliser les séjours de vos enfants. Albums photos, livres souvenirs, tirages et plus encore." name="description">
<!-- Favicons -->
<link href="{{ asset('Accueil/imagesAccueil/favicon.png') }}" rel="icon">
<link href="{{ asset('Accueil/imagesAccueil/apple-touch-icon.png') }}" rel="apple-touch-icon">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Bootstrap 5 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" rel="stylesheet">
<style>
:root {
--5sur5-teal: #41A2AA;
--5sur5-orange: #F56040;
--5sur5-orange-light: #F09E7A;
--teal-light: rgba(65, 162, 170, 0.08);
--teal-hover: rgba(65, 162, 170, 0.12);
--orange-light: rgba(245, 96, 64, 0.08);
--text-dark: #1A1A1A;
--text-secondary: #6B7280;
--text-muted: #9CA3AF;
--border-light: #E7F2F3;
--bg-page: #FAFBFC;
--bg-white: #FFFFFF;
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.08);
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: var(--bg-page);
margin: 0;
padding: 0;
}
/* ========== BOUTIQUE PREMIUM - HEADER HERO ========== */
.boutique-hero {
background: linear-gradient(135deg, rgba(65, 162, 170, 0.04) 0%, rgba(255, 255, 255, 1) 100%);
border-radius: 20px;
padding: 48px 32px;
margin: 32px auto 40px;
max-width: 1200px;
text-align: center;
border: 1px solid var(--border-light);
box-shadow: var(--shadow-sm);
position: relative;
}
.boutique-hero-label {
display: inline-block;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1.5px;
color: var(--5sur5-teal);
background: var(--teal-light);
padding: 6px 16px;
border-radius: 20px;
margin-bottom: 20px;
}
.boutique-hero-title {
font-size: 36px;
font-weight: 700;
color: var(--text-dark);
margin-bottom: 16px;
line-height: 1.2;
letter-spacing: -0.5px;
}
.boutique-hero-subtitle {
font-size: 17px;
color: var(--text-secondary);
line-height: 1.6;
max-width: 700px;
margin: 0 auto 24px;
}
.boutique-hero-badge {
position: absolute;
top: 24px;
right: 24px;
display: flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
background: var(--bg-white);
border: 1px solid var(--border-light);
border-radius: 12px;
font-size: 12px;
color: var(--text-secondary);
}
.boutique-hero-badge i {
color: var(--5sur5-teal);
font-size: 16px;
}
.boutique-hero-cta {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 14px 28px;
background: var(--5sur5-teal);
color: white;
border-radius: 12px;
font-size: 16px;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
}
.boutique-hero-cta:hover {
background: #359BA3;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(65, 162, 170, 0.3);
color: white;
}
/* ========== BARRE DE FILTRES PREMIUM ========== */
.boutique-filters {
max-width: 1200px;
margin: 0 auto 40px;
padding: 0 24px;
}
.boutique-filters-container {
display: flex;
justify-content: center;
gap: 12px;
flex-wrap: wrap;
padding: 16px 24px;
background: var(--bg-white);
border: 1px solid var(--border-light);
border-radius: 16px;
box-shadow: var(--shadow-sm);
}
.filter-btn {
padding: 10px 20px;
font-size: 14px;
font-weight: 600;
color: var(--text-secondary);
background: transparent;
border: 1.5px solid var(--border-light);
border-radius: 24px;
cursor: pointer;
transition: all 0.3s ease;
white-space: nowrap;
}
.filter-btn:hover {
border-color: var(--5sur5-teal);
color: var(--5sur5-teal);
background: var(--teal-light);
}
.filter-btn.active {
background: var(--5sur5-teal);
color: white;
border-color: var(--5sur5-teal);
box-shadow: 0 2px 8px rgba(65, 162, 170, 0.2);
}
/* ========== GRILLE PRODUITS PREMIUM ========== */
.boutique-products {
max-width: 1200px;
margin: 0 auto;
padding: 0 24px 80px;
}
.products-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 32px;
margin-top: 24px;
}
@media (max-width: 768px) {
.products-grid {
grid-template-columns: 1fr;
gap: 24px;
}
}
/* ========== CARTE PRODUIT PREMIUM ========== */
.product-card-premium {
background: var(--bg-white);
border: 0;
border-radius: 16px;
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
flex-direction: column;
height: 100%;
}
.product-card-premium:hover {
transform: translateY(-4px);
box-shadow: var(--shadow-lg);
}
.product-card-premium.d-none {
display: none !important;
}
.product-image-wrapper {
position: relative;
width: 100%;
padding-top: 75%; /* Ratio 4:3 */
overflow: hidden;
background: linear-gradient(135deg, var(--teal-light) 0%, var(--orange-light) 100%);
}
.product-image-wrapper img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
.product-badge-premium {
position: absolute;
top: 12px;
left: 12px;
background: var(--5sur5-orange);
color: white;
padding: 6px 12px;
border-radius: 8px;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
display: flex;
align-items: center;
gap: 4px;
z-index: 2;
}
.product-badge-premium.badge-teal {
background: var(--5sur5-teal);
}
.product-badge-premium i {
font-size: 12px;
}
.product-content {
padding: 24px;
flex: 1;
display: flex;
flex-direction: column;
}
.product-title {
font-size: 20px;
font-weight: 700;
color: var(--text-dark);
margin-bottom: 8px;
line-height: 1.3;
}
.product-tagline {
font-size: 14px;
color: var(--text-secondary);
margin-bottom: 16px;
line-height: 1.5;
font-style: italic;
}
.product-benefits {
list-style: none;
padding: 0;
margin: 0 0 20px 0;
display: flex;
flex-direction: column;
gap: 8px;
}
.product-benefits li {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
color: var(--text-secondary);
}
.product-benefits li i {
color: var(--5sur5-teal);
font-size: 14px;
flex-shrink: 0;
}
.product-price-section {
margin-top: auto;
padding-top: 20px;
border-top: 1px solid var(--border-light);
}
.product-price {
font-size: 28px;
font-weight: 700;
color: var(--5sur5-teal);
margin-bottom: 4px;
}
.product-price-note {
font-size: 12px;
color: var(--text-muted);
margin-bottom: 16px;
}
.product-info-note {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 14px;
background: var(--teal-light);
color: var(--5sur5-teal);
border-radius: 8px;
font-size: 13px;
font-weight: 600;
text-decoration: none;
}
.product-info-note i {
font-size: 14px;
}
/* ========== CTA SECTION ========== */
.cta-section {
max-width: 1200px;
margin: 60px auto;
padding: 40px 24px;
background: linear-gradient(135deg, var(--5sur5-teal) 0%, #359BA3 100%);
border-radius: 20px;
text-align: center;
box-shadow: var(--shadow-lg);
}
.cta-section h3 {
font-size: 28px;
font-weight: 700;
color: white;
margin-bottom: 16px;
}
.cta-section p {
font-size: 17px;
color: rgba(255, 255, 255, 0.9);
margin-bottom: 24px;
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
.cta-buttons {
display: flex;
justify-content: center;
gap: 16px;
flex-wrap: wrap;
}
.cta-btn-primary {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 16px 32px;
background: white;
color: var(--5sur5-teal);
border-radius: 12px;
font-size: 16px;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
}
.cta-btn-primary:hover {
background: var(--bg-page);
transform: translateY(-2px);
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
}
.cta-btn-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 16px 32px;
background: rgba(255, 255, 255, 0.1);
color: white;
border: 2px solid white;
border-radius: 12px;
font-size: 16px;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
}
.cta-btn-secondary:hover {
background: rgba(255, 255, 255, 0.2);
color: white;
}
/* Responsive Hero */
@media (max-width: 768px) {
.boutique-hero {
padding: 32px 24px;
margin: 24px 12px;
border-radius: 12px;
}
.boutique-hero-label {
font-size: 9px;
padding: 4px 10px;
margin-bottom: 12px;
}
.boutique-hero-title {
font-size: 24px;
margin-bottom: 12px;
}
.boutique-hero-subtitle {
font-size: 14px;
margin-bottom: 20px;
}
.boutique-hero-badge {
display: none;
}
.boutique-filters {
padding: 0 12px;
margin: 0 auto 24px;
}
.boutique-filters-container {
padding: 12px;
gap: 8px;
border-radius: 12px;
}
.filter-btn {
padding: 8px 14px;
font-size: 12px;
border-radius: 16px;
}
.boutique-products {
padding: 0 12px 60px;
}
.products-grid {
margin-top: 12px;
gap: 20px;
}
.cta-section {
margin: 40px 12px;
padding: 32px 20px;
}
.cta-section h3 {
font-size: 22px;
}
.cta-section p {
font-size: 15px;
}
.cta-buttons {
flex-direction: column;
align-items: stretch;
}
.cta-btn-primary,
.cta-btn-secondary {
width: 100%;
justify-content: center;
}
}
</style>
</head>
<body style="margin: 0; padding: 0;">
{% include 'Accueil/header.html.twig' %}
<main id="main" style="padding-top: 0; margin-top: 0;">
<div style="background: var(--bg-page); min-height: 100vh; padding-top: 24px;">
{# ========== HEADER HERO PREMIUM ========== #}
<div class="boutique-hero">
<div class="boutique-hero-badge">
<i class="bi bi-shield-lock-fill"></i>
<span>Paiement sécurisé</span>
</div>
<span class="boutique-hero-label">Boutique souvenirs 5sur5</span>
<h1 class="boutique-hero-title">Les souvenirs des séjours, en quelques clics</h1>
<p class="boutique-hero-subtitle">
Des albums et packs photos pour prolonger le séjour à la maison. Créez des souvenirs inoubliables grâce à nos produits pensés pour les familles.
</p>
<a href="/Parent/login" class="boutique-hero-cta">
<i class="bi bi-box-arrow-in-right"></i>
Accéder à ma boutique
</a>
</div>
{# ========== BARRE DE FILTRES PREMIUM ========== #}
<div class="boutique-filters">
<div class="boutique-filters-container">
<button class="filter-btn active" data-filter="all" onclick="filterProducts('all')">
Tous
</button>
<button class="filter-btn" data-filter="album" onclick="filterProducts('album')">
Albums imprimés
</button>
<button class="filter-btn" data-filter="pack" onclick="filterProducts('pack')">
Packs numériques
</button>
<button class="filter-btn" data-filter="tirage" onclick="filterProducts('tirage')">
Tirages photos
</button>
</div>
</div>
{# ========== GRILLE PRODUITS PREMIUM ========== #}
<div class="boutique-products">
<div class="products-grid" id="productsGrid">
{% for item in produit %}
{% if 'Connexion' not in item.idTypeProduit.labeletype and item.id != 6 %}
{# Déterminer la catégorie du produit pour le filtre #}
{% set productCategory = 'all' %}
{% if item.id == 4 or item.id == 5 %}
{% set productCategory = 'album' %}
{% elseif item.id == 12 or item.id == 13 or item.id == 14 %}
{% set productCategory = 'pack' %}
{% elseif item.id == 1 or item.id == 2 or item.id == 3 or item.id == 8 or item.id == 9 or item.id == 10 %}
{% set productCategory = 'tirage' %}
{% endif %}
{# Déterminer le tagline selon le type de produit #}
{% set productTagline = '' %}
{% if item.id == 4 or item.id == 5 %}
{% set productTagline = 'Idéal pour offrir aux grands-parents' %}
{% elseif item.id == 12 or item.id == 13 or item.id == 14 %}
{% set productTagline = 'Souvenir numérique à partager' %}
{% elseif item.id == 1 or item.id == 2 or item.id == 3 or item.id == 8 or item.id == 9 or item.id == 10 %}
{% set productTagline = 'Souvenir tangible du séjour' %}
{% else %}
{% set productTagline = 'Qualité photo professionnelle' %}
{% endif %}
<div class="product-card-premium" data-category="{{ productCategory }}">
{# Badge produit #}
{% if item.id == 4 %}
<span class="product-badge-premium badge-teal">
<i class="bi bi-star-fill"></i> Meilleur choix
</span>
{% elseif item.id == 5 %}
<span class="product-badge-premium">
<i class="bi bi-heart-fill"></i> Premium
</span>
{% endif %}
{# Image produit #}
<div class="product-image-wrapper">
{% if item.typeProduitPhotos is defined and item.typeProduitPhotos|length > 0 %}
<img src="{{ item.typeProduitPhotos[0].idAttachement.path }}"
alt="{{ item.idTypeProduit.labeletype }} {% if item.sousTitre %} {{ item.sousTitre }} {% endif %}">
{% else %}
<img src="{{ asset('Accueil/imagesAccueil/default-product.png') }}"
alt="{{ item.idTypeProduit.labeletype }}">
{% endif %}
</div>
{# Contenu produit #}
<div class="product-content">
<h3 class="product-title">
{{ item.idTypeProduit.labeletype }}
{% if item.sousTitre %} {{ item.sousTitre }} {% endif %}
</h3>
<p class="product-tagline">{{ productTagline }}</p>
{# Bénéfices #}
<ul class="product-benefits">
{% if item.id == 4 or item.id == 5 %}
<li><i class="bi bi-check-circle-fill"></i> Format premium</li>
<li><i class="bi bi-check-circle-fill"></i> Personnalisation incluse</li>
<li><i class="bi bi-check-circle-fill"></i> Livraison offerte</li>
{% elseif item.id == 12 or item.id == 13 or item.id == 14 %}
<li><i class="bi bi-check-circle-fill"></i> Téléchargement immédiat</li>
<li><i class="bi bi-check-circle-fill"></i> Haute résolution</li>
<li><i class="bi bi-check-circle-fill"></i> Usage illimité</li>
{% else %}
<li><i class="bi bi-check-circle-fill"></i> Papier satiné premium</li>
<li><i class="bi bi-check-circle-fill"></i> Qualité professionnelle</li>
<li><i class="bi bi-check-circle-fill"></i> Format standard</li>
{% endif %}
</ul>
{# Prix et CTA #}
<div class="product-price-section">
<div class="product-price">{{ item.montantTTC|number_format(2) }} €</div>
<div class="product-price-note">par {{ item.idTypeProduit.labeletype|lower }}</div>
<a href="/Parent/login" class="product-info-note">
<i class="bi bi-info-circle"></i>
Se connecter pour commander
</a>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
</div>
{# ========== CTA SECTION ========== #}
<div class="cta-section">
<h3>Prêt à immortaliser vos souvenirs ?</h3>
<p>Connectez-vous pour commander vos albums, tirages et packs numériques personnalisés. Simple, rapide et sécurisé.</p>
<div class="cta-buttons">
<a href="/Parent/login" class="cta-btn-primary">
<i class="bi bi-box-arrow-in-right"></i>
Se connecter
</a>
<a href="/#contact" class="cta-btn-secondary">
<i class="bi bi-envelope"></i>
Nous contacter
</a>
</div>
</div>
</div>
</main>
{% include 'Accueil/_footer_premium.html.twig' %}
<!-- Vendor JS Files -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
// Fonction de filtrage des produits
function filterProducts(category) {
// Mettre à jour les boutons actifs
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.classList.remove('active');
});
event.target.classList.add('active');
// Récupérer toutes les cartes produits
const productCards = document.querySelectorAll('.product-card-premium');
let visibleCount = 0;
// Filtrer les cartes
productCards.forEach(card => {
const cardCategory = card.getAttribute('data-category');
if (category === 'all' || cardCategory === category) {
card.classList.remove('d-none');
visibleCount++;
} else {
card.classList.add('d-none');
}
});
}
// Initialisation au chargement de la page
document.addEventListener('DOMContentLoaded', function() {
// S'assurer que tous les produits sont visibles par défaut
const productCards = document.querySelectorAll('.product-card-premium');
productCards.forEach(card => {
card.classList.remove('d-none');
});
});
</script>
</body>
</html>