<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* home/index.html.twig */
class __TwigTemplate_3fa228d84c2cefb05611b8dc23d1ea4e extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->blocks = [
'title' => [$this, 'block_title'],
'stylesheets' => [$this, 'block_stylesheets'],
'body' => [$this, 'block_body'],
'javascripts' => [$this, 'block_javascripts'],
];
}
protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
{
// line 1
return "base_home.html.twig";
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "home/index.html.twig"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "home/index.html.twig"));
$this->parent = $this->load("base_home.html.twig", 1);
yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
}
// line 3
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_title(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title"));
yield "Accueil | MaketOu - Votre marketplace haïtienne
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 6
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_stylesheets(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheets"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "stylesheets"));
// line 7
yield "\t<style>
\t\t/* Styles personnalisés pour la page d'accueil */
\t\t.hero-banner {
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tpadding: 100px 0;
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.hero-banner::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\tright: 0;
\t\t\tbottom: 0;
\t\t\tbackground: url('data:image/svg+xml, <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><defs><pattern id=\"grain\" width=\"100\" height=\"100\" patternUnits=\"userSpaceOnUse\"><circle cx=\"25\" cy=\"25\" r=\"1\" fill=\"rgba(255, 255, 255, 0.1)\"/><circle cx=\"75\" cy=\"75\" r=\"1\" fill=\"rgba(255, 255, 255, 0.1)\"/><circle cx=\"50\" cy=\"10\" r=\"0.5\" fill=\"rgba(255, 255, 255, 0.1)\"/><circle cx=\"10\" cy=\"90\" r=\"0.5\" fill=\"rgba(255, 255, 255, 0.1)\"/></pattern></defs><rect width=\"100\" height=\"100\" fill=\"url(%23grain)\"/></svg>');
\t\t\topacity: 0.3;
\t\t}
\t\t.hero-content {
\t\t\tposition: relative;
\t\t\tz-index: 2;
\t\t}
\t\t.stats-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\tpadding: 30px;
\t\t\ttext-align: center;
\t\t\tbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.stats-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t}
\t\t.stats-number {
\t\t\tfont-size: 3rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #ffa200;
\t\t\tdisplay: block;
\t\t}
\t\t.stats-label {
\t\t\tcolor: #666;
\t\t\tfont-size: 1.1rem;
\t\t\tmargin-top: 10px;
\t\t}
\t\t.category-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.category-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.category-image {
\t\t\theight: 200px;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\tposition: relative;
\t\t}
\t\t.category-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\tright: 0;
\t\t\tbottom: 0;
\t\t\tbackground: linear-gradient(45deg, rgba(255,162,0,0.8), rgba(232,145,10,0.8));
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t}
\t\t.category-card:hover .category-overlay {
\t\t\topacity: 1;
\t\t}
\t\t.product-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.product-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.product-image {
\t\t\theight: 250px;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\tposition: relative;
\t\t}
\t\t.product-badge {
\t\t\tposition: absolute;
\t\t\ttop: 15px;
\t\t\tright: 15px;
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\tpadding: 5px 10px;
\t\t\tborder-radius: 20px;
\t\t\tfont-size: 0.8rem;
\t\t\tfont-weight: bold;
\t\t}
\t\t.product-info {
\t\t\tpadding: 20px;
\t\t}
\t\t.product-title {
\t\t\tfont-size: 1.2rem;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 10px;
\t\t\tcolor: #333;
\t\t}
\t\t.product-price {
\t\t\tfont-size: 1.5rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 10px;
\t\t}
\t\t.product-shop {
\t\t\tfont-size: 0.9rem;
\t\t\tcolor: #666;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.btn-primary-custom {
\t\t\tbackground: #ffa200;
\t\t\tborder: none;
\t\t\tcolor: white;
\t\t\tpadding: 12px 30px;
\t\t\tborder-radius: 25px;
\t\t\tfont-weight: 500;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.btn-primary-custom:hover {
\t\t\tbackground: #e8910a;
\t\t\ttransform: translateY(-2px);
\t\t\tbox-shadow: 0 5px 15px rgba(255, 162, 0, 0.3);
\t\t}
\t\t.section-title {
\t\t\ttext-align: center;
\t\t\tmargin-bottom: 50px;
\t\t}
\t\t.section-title h2 {
\t\t\tfont-size: 2.5rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #333;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.section-title p {
\t\t\tfont-size: 1.2rem;
\t\t\tcolor: #666;
\t\t\tmax-width: 600px;
\t\t\tmargin: 0 auto;
\t\t}
\t\t.feature-card {
\t\t\ttext-align: center;
\t\t\tpadding: 30px 20px;
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.feature-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.feature-icon {
\t\t\twidth: 80px;
\t\t\theight: 80px;
\t\t\tbackground: linear-gradient(135deg, #ffa200, #e8910a);
\t\t\tborder-radius: 50%;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tmargin: 0 auto 20px;
\t\t\tfont-size: 2rem;
\t\t\tcolor: white;
\t\t}
\t\t.newsletter-section {
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tpadding: 80px 0;
\t\t}
\t\t.newsletter-form {
\t\t\tmax-width: 500px;
\t\t\tmargin: 0 auto;
\t\t}
\t\t.newsletter-form .form-control {
\t\t\tborder: none;
\t\t\tborder-radius: 25px;
\t\t\tpadding: 15px 25px;
\t\t\tfont-size: 1.1rem;
\t\t}
\t\t.newsletter-form .btn {
\t\t\tborder-radius: 25px;
\t\t\tpadding: 15px 30px;
\t\t\tfont-weight: 500;
\t\t}
\t\t/* Responsive Styles */
\t\t@media(max-width: 991.98px) {
\t\t\t.hero-banner {
\t\t\t\tpadding: 60px 0;
\t\t\t}
\t\t\t.stats-number {
\t\t\t\tfont-size: 2.5rem;
\t\t\t}
\t\t\t.section-title h2 {
\t\t\t\tfont-size: 2rem;
\t\t\t}
\t\t\t
\t\t\t.stats-card {
\t\t\t\tmargin-bottom: 1.5rem;
\t\t\t}
\t\t}
\t\t@media(max-width: 767.98px) {
\t\t\t.hero-banner {
\t\t\t\tpadding: 40px 0;
\t\t\t}
\t\t\t.hero-content h1 {
\t\t\t\tfont-size: 1.75rem;
\t\t\t}
\t\t\t.stats-number {
\t\t\t\tfont-size: 2rem;
\t\t\t}
\t\t\t.stats-label {
\t\t\t\tfont-size: 0.9rem;
\t\t\t}
\t\t\t.section-title h2 {
\t\t\t\tfont-size: 1.75rem;
\t\t\t}
\t\t\t.section-title p {
\t\t\t\tfont-size: 1rem;
\t\t\t}
\t\t\t
\t\t\t.category-card,
\t\t\t.product-card {
\t\t\t\tmargin-bottom: 1.5rem;
\t\t\t}
\t\t\t
\t\t\t.category-image {
\t\t\t\theight: 150px;
\t\t\t}
\t\t\t
\t\t\t.product-image {
\t\t\t\theight: 200px;
\t\t\t}
\t\t\t
\t\t\t.feature-card {
\t\t\t\tmargin-bottom: 1.5rem;
\t\t\t}
\t\t\t
\t\t\t.newsletter-section {
\t\t\t\tpadding: 40px 0;
\t\t\t}
\t\t}
\t\t@media(max-width: 575.98px) {
\t\t\t.hero-banner {
\t\t\t\tpadding: 30px 0;
\t\t\t}
\t\t\t.hero-content h1 {
\t\t\t\tfont-size: 1.5rem;
\t\t\t}
\t\t\t.stats-card {
\t\t\t\tpadding: 1.5rem;
\t\t\t}
\t\t\t.stats-number {
\t\t\t\tfont-size: 1.75rem;
\t\t\t}
\t\t\t.section-title h2 {
\t\t\t\tfont-size: 1.5rem;
\t\t\t}
\t\t\t
\t\t\t.category-image {
\t\t\t\theight: 120px;
\t\t\t}
\t\t\t
\t\t\t.product-image {
\t\t\t\theight: 180px;
\t\t\t}
\t\t\t
\t\t\t.product-info {
\t\t\t\tpadding: 1rem;
\t\t\t}
\t\t\t
\t\t\t.product-title {
\t\t\t\tfont-size: 1rem;
\t\t\t}
\t\t\t
\t\t\t.product-price {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t}
\t\t/* Styles modernes pour le carousel de bannière */
\t\t.banner-area-modern {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\tmin-height: 500px;
\t\t\tbackground: url('";
// line 355
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("ui/img/banner/banner-bg.jpg"), "html", null, true);
yield "') center center no-repeat;
\t\t\tbackground-size: cover;
\t\t\toverflow: hidden;
\t\t\tpadding: 60px 0;
\t\t}
\t\t.banner-area-modern::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.1);
\t\t\tz-index: 1;
\t\t}
\t\t.banner-carousel-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tz-index: 2;
\t\t}
\t\t.banner-slide-item {
\t\t\tmin-height: 500px;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tpadding: 40px 0;
\t\t}
\t\t.banner-content-modern {
\t\t\tposition: relative;
\t\t\tz-index: 2;
\t\t\tpadding: 30px;
\t\t\tbackground: rgba(255, 255, 255, 0.98);
\t\t\tborder-radius: 20px;
\t\t\tbox-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
\t\t\tbackdrop-filter: blur(10px);
\t\t\tanimation: fadeInUp 0.8s ease;
\t\t}
\t\t@keyframes fadeInUp {
\t\t\tfrom {
\t\t\t\topacity: 0;
\t\t\t\ttransform: translateY(30px);
\t\t\t}
\t\t\tto {
\t\t\t\topacity: 1;
\t\t\t\ttransform: translateY(0);
\t\t\t}
\t\t}
\t\t.banner-badge {
\t\t\tdisplay: inline-block;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 8px 20px;
\t\t\tborder-radius: 50px;
\t\t\tfont-size: 0.85rem;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 20px;
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.banner-badge i {
\t\t\tmargin-right: 5px;
\t\t}
\t\t.banner-title-modern {
\t\t\tfont-size: 2.0rem;
\t\t\tfont-weight: 600;
\t\t\tcolor: #2c3e50;
\t\t\tmargin-bottom: 20px;
\t\t\tline-height: 1.2;
\t\t\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
\t\t\t-webkit-background-clip: text;
\t\t\t-webkit-text-fill-color: transparent;
\t\t\tbackground-clip: text;
\t\t}
\t\t.banner-description-modern {
\t\t\tfont-size: 1.1rem;
\t\t\tcolor: #555;
\t\t\tline-height: 1.8;
\t\t\tmargin-bottom: 25px;
\t\t}
\t\t.banner-price-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 15px;
\t\t\tmargin-bottom: 30px;
\t\t\tpadding: 15px 20px;
\t\t\tbackground: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
\t\t\tborder-radius: 12px;
\t\t\tborder-left: 4px solid #ffa200;
\t\t}
\t\t.banner-price-modern .price-label {
\t\t\tfont-size: 0.9rem;
\t\t\tcolor: #666;
\t\t\tfont-weight: 600;
\t\t\ttext-transform: uppercase;
\t\t\tletter-spacing: 1px;
\t\t}
\t\t.banner-price-modern .price-value {
\t\t\tfont-size: 1.2rem;
\t\t\tfont-weight: 600;
\t\t\tcolor: #ffa200;
\t\t}
\t\t.banner-actions-modern {
\t\t\tdisplay: flex;
\t\t\tgap: 15px;
\t\t\tflex-wrap: wrap;
\t\t}
\t\t.btn-banner-primary {
\t\t\tdisplay: inline-flex;
\t\t\talign-items: center;
\t\t\tgap: 10px;
\t\t\tpadding: 15px 35px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\ttext-decoration: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1rem;
\t\t\ttransition: all 0.3s ease;
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.btn-banner-primary:hover {
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.6);
\t\t\tcolor: white;
\t\t}
\t\t.btn-banner-primary .btn-icon {
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.btn-banner-primary:hover .btn-icon {
\t\t\ttransform: translateX(5px);
\t\t}
\t\t.btn-banner-secondary {
\t\t\tdisplay: inline-flex;
\t\t\talign-items: center;
\t\t\tgap: 8px;
\t\t\tpadding: 15px 25px;
\t\t\tbackground: white;
\t\t\tcolor: #667eea;
\t\t\ttext-decoration: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 0.95rem;
\t\t\tborder: 2px solid #667eea;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.btn-banner-secondary:hover {
\t\t\tbackground: #667eea;
\t\t\tcolor: white;
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
\t\t}
\t\t.banner-image-modern {
\t\t\tposition: relative;
\t\t\theight: 450px;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t}
\t\t.banner-image-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tborder-radius: 20px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
\t\t\tbackground: white;
\t\t\tpadding: 20px;
\t\t}
\t\t.banner-img {
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tobject-fit: contain;
\t\t\tborder-radius: 15px;
\t\t\ttransition: transform 0.5s ease;
\t\t}
\t\t.banner-slide-item:hover .banner-img {
\t\t\ttransform: scale(1.05);
\t\t}
\t\t.banner-image-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);
\t\t\tborder-radius: 15px;
\t\t\tpointer-events: none;
\t\t}
\t\t/* Styles pour Owl Carousel */
\t\t.banner-area-modern .owl-nav {
\t\t\tposition: absolute;
\t\t\ttop: 50%;
\t\t\ttransform: translateY(-50%);
\t\t\twidth: 100%;
\t\t\tdisplay: flex;
\t\t\tjustify-content: space-between;
\t\t\talign-items: center;
\t\t\tpadding: 0 20px;
\t\t\tpointer-events: none;
\t\t\tz-index: 10;
\t\t\tleft: 0;
\t\t\tright: 0;
\t\t\tbox-sizing: border-box;
\t\t}
\t\t.banner-area-modern .owl-nav button {
\t\t\twidth: 60px;
\t\t\theight: 60px;
\t\t\tmin-width: 60px;
\t\t\tmin-height: 60px;
\t\t\tbackground: #ffa200 !important;
\t\t\tborder-radius: 50% !important;
\t\t\tdisplay: flex !important;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tcolor: white !important;
\t\t\tfont-size: 24px !important;
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.4);
\t\t\ttransition: all 0.3s ease;
\t\t\tpointer-events: all;
\t\t\tborder: none !important;
\t\t\tposition: relative;
\t\t\tflex-shrink: 0;
\t\t\tmargin: 0;
\t\t\tpadding: 0;
\t\t\tline-height: 1;
\t\t}
\t\t.banner-area-modern .owl-nav button.owl-prev {
\t\t\tmargin-right: auto;
\t\t}
\t\t.banner-area-modern .owl-nav button.owl-next {
\t\t\tmargin-left: auto;
\t\t}
\t\t.banner-area-modern .owl-nav button:hover {
\t\t\tbackground: #ff6b00 !important;
\t\t\tcolor: white !important;
\t\t\ttransform: scale(1.1);
\t\t\tbox-shadow: 0 6px 20px rgba(255, 162, 0, 0.6);
\t\t}
\t\t.banner-area-modern .owl-nav button.disabled {
\t\t\topacity: 0.5;
\t\t\tcursor: not-allowed;
\t\t}
\t\t.banner-area-modern .owl-nav button.disabled:hover {
\t\t\ttransform: scale(1);
\t\t}
\t\t.banner-area-modern .owl-dots {
\t\t\tposition: absolute;
\t\t\tbottom: 30px;
\t\t\tleft: 50%;
\t\t\ttransform: translateX(-50%);
\t\t\tdisplay: flex;
\t\t\tgap: 10px;
\t\t\tz-index: 10;
\t\t}
\t\t.banner-area-modern .owl-dots button {
\t\t\twidth: 12px;
\t\t\theight: 12px;
\t\t\tborder-radius: 50%;
\t\t\tbackground: rgba(255, 255, 255, 0.6) !important;
\t\t\tborder: 2px solid white !important;
\t\t\ttransition: all 0.3s ease;
\t\t\tmargin: 0 5px;
\t\t}
\t\t.banner-area-modern .owl-dots button.active {
\t\t\tbackground: #ffa200 !important;
\t\t\tborder-color: #ffa200 !important;
\t\t\twidth: 30px;
\t\t\tborder-radius: 6px;
\t\t}
\t\t/* Responsive */
\t\t@media(max-width: 992px) {
\t\t\t.banner-area-modern {
\t\t\t\tmin-height: 450px;
\t\t\t\tpadding: 40px 0;
\t\t\t\tbackground-size: cover;
\t\t\t\tbackground-position: center;
\t\t\t}
\t\t\t.banner-slide-item {
\t\t\t\tmin-height: 450px;
\t\t\t\tpadding: 30px 0;
\t\t\t}
\t\t\t.banner-title-modern {
\t\t\t\tfont-size: 1.5rem;
\t\t\t}
\t\t\t.banner-description-modern {
\t\t\t\tfont-size: 1rem;
\t\t\t}
\t\t\t.banner-image-modern {
\t\t\t\theight: 350px;
\t\t\t\tmargin-top: 30px;
\t\t\t}
\t\t\t.banner-content-modern {
\t\t\t\tpadding: 25px;
\t\t\t}
\t\t}
\t\t@media(max-width: 768px) {
\t\t\t.banner-area-modern {
\t\t\t\tmin-height: 400px;
\t\t\t\tpadding: 30px 0;
\t\t\t\tbackground-size: cover;
\t\t\t\tbackground-position: center;
\t\t\t}
\t\t\t.banner-slide-item {
\t\t\t\tmin-height: 400px;
\t\t\t\tpadding: 20px 0;
\t\t\t}
\t\t\t.banner-title-modern {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t\t.banner-description-modern {
\t\t\t\tfont-size: 0.95rem;
\t\t\t}
\t\t\t.banner-image-modern {
\t\t\t\theight: 280px;
\t\t\t\tmargin-top: 20px;
\t\t\t}
\t\t\t.banner-content-modern {
\t\t\t\tpadding: 20px;
\t\t\t}
\t\t\t.banner-price-modern .price-value {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t\t.banner-actions-modern {
\t\t\t\tflex-direction: column;
\t\t\t}
\t\t\t.btn-banner-primary,
\t\t\t.btn-banner-secondary {
\t\t\t\twidth: 100%;
\t\t\t\tjustify-content: center;
\t\t\t}
\t\t\t.banner-area-modern .owl-nav button {
\t\t\t\twidth: 50px;
\t\t\t\theight: 50px;
\t\t\t\tmin-width: 50px;
\t\t\t\tmin-height: 50px;
\t\t\t\tfont-size: 20px !important;
\t\t\t\tbackground: #ffa200 !important;
\t\t\t}
\t\t\t.banner-area-modern .owl-nav button:hover {
\t\t\t\tbackground: #ff6b00 !important;
\t\t\t}
\t\t}
\t\t@media(max-width: 576px) {
\t\t\t.banner-area-modern {
\t\t\t\tmin-height: 350px;
\t\t\t\tpadding: 0;
\t\t\t\tbackground-size: cover;
\t\t\t\tbackground-position: center;
\t\t\t}
\t\t\t.banner-slide-item {
\t\t\t\tmin-height: 350px;
\t\t\t}
\t\t\t.banner-title-modern {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t\t.banner-image-modern {
\t\t\t\theight: 220px;
\t\t\t}
\t\t\t.banner-content-modern {
\t\t\t\tpadding: 15px;
\t\t\t}
\t\t}
\t\t/* Styles pour les catégories de boutiques cliquables */
\t\t.shop-category-clickable {
\t\t\tcursor: pointer;
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.shop-category-clickable:hover {
\t\t\ttransform: translateY(-10px);
\t\t\tbox-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.shop-category-clickable:hover .category-image {
\t\t\ttransform: scale(1.1);
\t\t}
\t\t.shop-category-clickable:hover .btn-primary-custom {
\t\t\tbackground: #e8910a;
\t\t\ttransform: translateX(5px);
\t\t}
\t\t/* Styles pour les cartes de catégories personnalisées */
\t\t.category-card-custom {
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
\t\t\ttransition: transform 0.3s ease, box-shadow 0.3s ease;
\t\t\tbackground: white;
\t\t\theight: 100%;
\t\t}
\t\t.category-card-custom:hover {
\t\t\ttransform: translateY(-10px);
\t\t\tbox-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.category-image-wrapper {
\t\t\tposition: relative;
\t\t\theight: 200px;
\t\t\toverflow: hidden;
\t\t}
\t\t.category-image {
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.category-card-custom:hover .category-image {
\t\t\ttransform: scale(1.1);
\t\t}
\t\t.category-overlay-custom {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.6);
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t\tcolor: white;
\t\t}
\t\t.category-card-custom:hover .category-overlay-custom {
\t\t\topacity: 1;
\t\t}
\t\t.category-icon-wrapper {
\t\t\ttext-align: center;
\t\t}
\t\t.category-icon-wrapper i {
\t\t\tcolor: #ffa200;
\t\t\tdisplay: block;
\t\t}
\t\t.category-icon-wrapper h4 {
\t\t\tcolor: white;
\t\t\tmargin-top: 10px;
\t\t}
\t\t/* Styles pour la galerie de produits en vedette */
\t\t.featured-products-carousel-section {
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.featured-gallery-wrapper {
\t\t\tposition: relative;
\t\t\tmax-width: 1400px;
\t\t\tmargin: 0 auto;
\t\t\tpadding: 0 15px;
\t\t}
\t\t.featured-gallery-container {
\t\t\tposition: relative;
\t\t\toverflow: visible;
\t\t\tborder-radius: 12px;
\t\t}
\t\t.featured-gallery-grid {
\t\t\tdisplay: flex;
\t\t\tgap: 30px; /* Même espacement que dans listing (margin entre col-lg-4) */
\t\t\tpadding: 10px 0;
\t\t\toverflow-x: auto;
\t\t\toverflow-y: hidden;
\t\t\tscroll-behavior: smooth;
\t\t\tscrollbar-width: none; /* Firefox */
\t\t\t-ms-overflow-style: none; /* IE/Edge */
\t\t\t-webkit-overflow-scrolling: touch; /* iOS smooth scroll */
\t\t\twill-change: scroll-position;
\t\t}
\t\t.featured-gallery-grid::-webkit-scrollbar {
\t\t\tdisplay: none; /* Chrome/Safari */
\t\t}
\t\t/* Mode OwlCarousel */
\t\t.featured-gallery-grid.owl-carousel {
\t\t\tdisplay: block;
\t\t\toverflow: hidden;
\t\t\tpadding: 25px 0;
\t\t}
\t\t.featured-gallery-grid.owl-carousel .owl-stage-outer {
\t\t\toverflow: visible;
\t\t}
\t\t.featured-gallery-grid.owl-carousel .featured-gallery-item {
\t\t\topacity: 1;
\t\t\ttransform: none;
\t\t\twidth: auto;
\t\t\tmax-width: none;
\t\t\tmargin: 0 15px;
\t\t}
\t\t.featured-gallery-grid.owl-carousel .owl-stage {
\t\t\tdisplay: flex;
\t\t}
\t\t.featured-gallery-item {
\t\t\tflex: 0 0 auto; /* Largeur automatique basée sur le contenu */
\t\t\twidth: 100%;
\t\t\tmax-width: 100%;
\t\t\topacity: 0;
\t\t\ttransform: translateY(20px) scale(0.95);
\t\t\tanimation: galleryItemFadeIn 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
\t\t\tanimation-delay: calc(var(--item-index, 0) * 0.05s);
\t\t}
\t\t/* Utiliser la même largeur que dans listing (col-lg-4 = ~33.33%) */
\t\t@media(min-width: 992px) {
\t\t\t.featured-gallery-item {
\t\t\t\tflex: 0 0 33.333333%;
\t\t\t\tmax-width: 25%;
\t\t\t}
\t\t}
\t\t@media(min-width: 768px) and(max-width: 991px) {
\t\t\t.featured-gallery-item {
\t\t\t\tflex: 0 0 50%;
\t\t\t\tmax-width: 50%;
\t\t\t}
\t\t}
\t\t@media(max-width: 767px) {
\t\t\t.featured-gallery-item {
\t\t\t\tflex: 0 0 100%;
\t\t\t\tmax-width: 100%;
\t\t\t}
\t\t}
\t\t/* Ajustements minimaux pour single-product dans le carrousel - utiliser les styles de main.css */
\t\t.featured-gallery-item .single-product {
\t\t\tmargin-bottom: 0; /* Override main.css margin-bottom: 50px */
\t\t\tmin-height: 480px;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\tpadding: 20px;
\t\t\tbackground: #fff;
\t\t\tborder-radius: 12px;
\t\t\tbox-shadow: 0 10px 30px rgba(15, 34, 58, 0.08);
\t\t\ttransition: transform 0.25s ease, box-shadow 0.25s ease;
\t\t}
\t\t.featured-gallery-item .single-product:hover {
\t\t\ttransform: translateY(-4px);
\t\t\tbox-shadow: 0 18px 40px rgba(15, 34, 58, 0.12);
\t\t}
\t\t/* S'assurer que les images s'affichent correctement - styles identiques à listing.html.twig */
\t\t.featured-gallery-item .single-product img {
\t\t\tmargin-bottom: 20px;
\t\t\twidth: 100%;
\t\t}
\t\t/* Styles pour product-image-container - identiques à listing.html.twig */
\t\t.featured-gallery-item .product-image-container {
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t\tborder-radius: 10px;
\t\t\theight: 260px;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tbackground: #f7f7fb;
\t\t\tmargin-bottom: 18px;
\t\t}
\t\t.featured-gallery-item .product-image-container:hover .main-product-img {
\t\t\ttransform: scale(1.05);
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.featured-gallery-item .product-image-container a {
\t\t\tdisplay: block;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t}
\t\t.featured-gallery-item .main-product-img {
\t\t\ttransition: transform 0.3s ease;
\t\t\twidth: 100% !important;
\t\t\theight: 100% !important;
\t\t\tobject-fit: cover;
\t\t\tobject-position: center;
\t\t\tdisplay: block;
\t\t\twill-change: transform, opacity;
\t\t}
\t\t.featured-gallery-item .main-product-img.image-fade {
\t\t\tanimation: imageFade 0.5s ease;
\t\t}
\t\t@keyframes imageFade {
\t\t\tfrom {
\t\t\t\topacity: 0;
\t\t\t\ttransform: scale(1.02);
\t\t\t}
\t\t\tto {
\t\t\t\topacity: 1;
\t\t\t\ttransform: scale(1);
\t\t\t}
\t\t}
\t\t.featured-gallery-item .product-details {
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\theight: 100%;
\t\t}
\t\t.featured-gallery-item .prd-bottom {
\t\t\tmargin-top: auto;
\t\t}
\t\t/* Styles pour img-nav-btn - identiques à listing.html.twig */
\t\t.featured-gallery-item .img-nav-btn {
\t\t\tposition: absolute;
\t\t\ttop: 50%;
\t\t\ttransform: translateY(-50%);
\t\t\tbackground: rgba(0, 0, 0, 0.6);
\t\t\tcolor: white;
\t\t\tborder: none;
\t\t\twidth: 35px;
\t\t\theight: 35px;
\t\t\tborder-radius: 50%;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tcursor: pointer;
\t\t\ttransition: all 0.3s ease;
\t\t\tz-index: 10;
\t\t}
\t\t.featured-gallery-item .img-nav-btn:hover {
\t\t\tbackground: #095ad3;
\t\t\ttransform: translateY(-50%) scale(1.1);
\t\t}
\t\t.featured-gallery-item .img-nav-left {
\t\t\tleft: 10px;
\t\t}
\t\t.featured-gallery-item .img-nav-right {
\t\t\tright: 10px;
\t\t}
\t\t.featured-gallery-item .img-indicators {
\t\t\tposition: absolute;
\t\t\tbottom: 10px;
\t\t\tleft: 50%;
\t\t\ttransform: translateX(-50%);
\t\t\tdisplay: flex;
\t\t\tgap: 5px;
\t\t\tz-index: 10;
\t\t}
\t\t.featured-gallery-item .indicator {
\t\t\twidth: 8px;
\t\t\theight: 8px;
\t\t\tborder-radius: 50%;
\t\t\tbackground: rgba(255, 255, 255, 0.5);
\t\t\tcursor: pointer;
\t\t\tmargin-bottom: 10px;
\t\t\ttransition: all 0.3s ease;
\t\t\tborder: 1px solid rgba(255, 255, 255, 0.3);
\t\t}
\t\t.featured-gallery-item .indicator.active {
\t\t\tbackground: #ffa200;
\t\t\tborder-color: #ffa200;
\t\t\ttransform: scale(1.2);
\t\t}
\t\t.featured-gallery-item .indicator:hover {
\t\t\tbackground: rgba(255, 255, 255, 0.8);
\t\t}
\t\t/* Styles pour shop-info - identiques à listing.html.twig */
\t\t.featured-gallery-item .shop-info {
\t\t\tmargin: 8px 0;
\t\t\tpadding: 5px 0;
\t\t\tborder-bottom: 1px solid #f0f0f0;
\t\t}
\t\t.featured-gallery-item .shop-link {
\t\t\tcolor: #007bff;
\t\t\ttext-decoration: none;
\t\t\tfont-weight: 500;
\t\t}
\t\t.featured-gallery-item .shop-link:hover {
\t\t\tcolor: #ffa200;
\t\t\ttext-decoration: underline;
\t\t}
\t\t/* Les autres styles (product-details h6, price, prd-bottom, social-info) sont déjà définis dans main.css */
\t\t@keyframes galleryItemFadeIn {
\t\t\tfrom {
\t\t\t\topacity: 0;
\t\t\t\ttransform: translateY(20px) scale(0.95);
\t\t\t}
\t\t\tto {
\t\t\t\topacity: 1;
\t\t\t\ttransform: translateY(0) scale(1);
\t\t\t}
\t\t}
\t\t.featured-gallery-card {
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\theight: 100%;
\t\t\tbackground: white;
\t\t\tborder-radius: 12px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\tborder: 1px solid #f0f0f0;
\t\t}
\t\t.featured-gallery-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
\t\t\tborder-color: #ffa200;
\t\t}
\t\t.featured-gallery-image-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\tpadding-top: 100%; /* Ratio 1:1 pour une galerie carrée */
\t\t\toverflow: hidden;
\t\t\tbackground: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
\t\t}
\t\t.featured-gallery-image {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\ttransition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
\t\t}
\t\t.featured-gallery-card:hover .featured-gallery-image {
\t\t\ttransform: scale(1.08);
\t\t}
\t\t.featured-gallery-badge {
\t\t\tposition: absolute;
\t\t\ttop: 8px;
\t\t\tleft: 8px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 4px 10px;
\t\t\tborder-radius: 15px;
\t\t\tfont-size: 12px;
\t\t\tfont-weight: 600;
\t\t\tz-index: 2;
\t\t\tbox-shadow: 0 2px 8px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.featured-gallery-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.5);
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t}
\t\t.featured-gallery-card:hover .featured-gallery-overlay {
\t\t\topacity: 1;
\t\t}
\t\t.featured-gallery-view-btn {
\t\t\tbackground: white;
\t\t\tcolor: #333;
\t\t\twidth: 40px;
\t\t\theight: 40px;
\t\t\tborder-radius: 50%;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\ttext-decoration: none;
\t\t\tfont-size: 18px;
\t\t\ttransform: scale(0.8);
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.featured-gallery-card:hover .featured-gallery-view-btn {
\t\t\ttransform: scale(1);
\t\t}
\t\t.featured-gallery-info {
\t\t\tpadding: 12px;
\t\t\tflex: 1;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.featured-gallery-title {
\t\t\tfont-size: 14px;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 6px;
\t\t\tcolor: #333;
\t\t\tline-height: 1.3;
\t\t\tdisplay: -webkit-box;
\t\t\t-webkit-line-clamp: 2;
\t\t\t-webkit-box-orient: vertical;
\t\t\toverflow: hidden;
\t\t\tmin-height: 36px;
\t\t}
\t\t.featured-gallery-title a {
\t\t\tcolor: #333;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.featured-gallery-title a:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.featured-gallery-price {
\t\t\tfont-size: 16px;
\t\t\tfont-weight: 700;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 6px;
\t\t}
\t\t.featured-gallery-rating {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 3px;
\t\t\tfont-size: 11px;
\t\t}
\t\t.featured-gallery-rating .fa-star.active {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.featured-gallery-rating .fa-star-o {
\t\t\tcolor: #ddd;
\t\t}
\t\t.featured-gallery-controls {
\t\t\tdisplay: flex;
\t\t\tjustify-content: center;
\t\t\tgap: 20px;
\t\t\tmargin-top: 25px;
\t\t\tpadding: 0 20px;
\t\t}
\t\t.featured-gallery-nav-btn {
\t\t\twidth: 42px;
\t\t\theight: 42px;
\t\t\tborder-radius: 50%;
\t\t\tborder: 1.5px solid #ffa200;
\t\t\tbackground: white;
\t\t\tcolor: #ffa200;
\t\t\tfont-size: 16px;
\t\t\tcursor: pointer;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\tbox-shadow: 0 3px 10px rgba(255, 162, 0, 0.18);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.featured-gallery-nav-btn.btn-ripple::after {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tleft: 0;
\t\t\ttop: 0;
\t\t\tborder-radius: 50%;
\t\t\tbackground: rgba(255, 162, 0, 0.2);
\t\t\tanimation: rippleEffect 0.35s ease;
\t\t}
\t\t@keyframes rippleEffect {
\t\t\tfrom {
\t\t\t\ttransform: scale(0.6);
\t\t\t\topacity: 0.7;
\t\t\t}
\t\t\tto {
\t\t\t\ttransform: scale(1.4);
\t\t\t\topacity: 0;
\t\t\t}
\t\t}
\t\t.featured-gallery-nav-btn:hover:not(:disabled) {
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\ttransform: scale(1.1);
\t\t\tbox-shadow: 0 5px 18px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.featured-gallery-nav-btn:active:not(:disabled) {
\t\t\ttransform: scale(0.95);
\t\t}
\t\t.featured-gallery-nav-btn:disabled {
\t\t\topacity: 0.3;
\t\t\tcursor: not-allowed;
\t\t}
\t\t.featured-gallery-load-more {
\t\t\tmargin-top: 30px;
\t\t}
\t\t/* Style pour le bouton \"Voir tous les produits\" */
\t\t.btn-view-all-products {
\t\t\tdisplay: inline-flex;
\t\t\talign-items: center;
\t\t\tgap: 12px;
\t\t\tpadding: 16px 40px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\ttext-decoration: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 16px;
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.3);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.btn-view-all-products::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: -100%;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
\t\t\ttransition: left 0.5s ease;
\t\t}
\t\t.btn-view-all-products:hover::before {
\t\t\tleft: 100%;
\t\t}
\t\t.btn-view-all-products:hover {
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.5);
\t\t\tcolor: white;
\t\t}
\t\t.btn-view-all-products:active {
\t\t\ttransform: translateY(-1px);
\t\t}
\t\t.btn-view-all-products i {
\t\t\tfont-size: 18px;
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.btn-view-all-products:hover i {
\t\t\ttransform: translateX(5px);
\t\t}
\t\t.btn-view-all-products span {
\t\t\tposition: relative;
\t\t\tz-index: 1;
\t\t}
\t\t/* Responsive */
\t\t@media(max-width: 767px) {
\t\t\t.btn-view-all-products {
\t\t\t\tpadding: 14px 30px;
\t\t\t\tfont-size: 14px;
\t\t\t}
\t\t}
\t\t/* Responsive */
\t\t@media(max-width: 767px) {
\t\t\t.featured-gallery-grid {
\t\t\t\tgap: 10px;
\t\t\t}
\t\t\t.featured-gallery-info {
\t\t\t\tpadding: 10px;
\t\t\t}
\t\t\t.featured-gallery-title {
\t\t\t\tfont-size: 13px;
\t\t\t\tmin-height: 32px;
\t\t\t}
\t\t\t.featured-gallery-price {
\t\t\t\tfont-size: 14px;
\t\t\t}
\t\t}
\t\t/* Styles pour les grilles de produits Nouveautés */
\t\t.latest-products-grid {
\t\t\tmargin-top: 30px;
\t\t}
\t\t.product-card-modern {
\t\t\tbackground: white;
\t\t\tborder-radius: 12px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\theight: 100%;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\tborder: 1px solid #f0f0f0;
\t\t}
\t\t.product-card-modern:hover {
\t\t\ttransform: translateY(-8px);
\t\t\tbox-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
\t\t\tborder-color: #ffa200;
\t\t}
\t\t.product-image-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\tpadding-top: 75%; /* Ratio 4:3 */
\t\t\toverflow: hidden;
\t\t\tbackground: #f8f9fa;
\t\t}
\t\t.product-image {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\ttransition: transform 0.5s ease;
\t\t}
\t\t.product-card-modern:hover .product-image {
\t\t\ttransform: scale(1.1);
\t\t}
\t\t.product-badge-modern {
\t\t\tposition: absolute;
\t\t\ttop: 10px;
\t\t\tright: 10px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 6px 12px;
\t\t\tborder-radius: 20px;
\t\t\tfont-size: 12px;
\t\t\tfont-weight: 600;
\t\t\tz-index: 2;
\t\t\tbox-shadow: 0 2px 8px rgba(255, 162, 0, 0.3);
\t\t}
\t\t.product-badge-modern.new-badge {
\t\t\tbackground: linear-gradient(135deg, #28a745 0%, #20c997 100%);
\t\t}
\t\t.product-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.5);
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t\tz-index: 1;
\t\t}
\t\t.product-card-modern:hover .product-overlay {
\t\t\topacity: 1;
\t\t}
\t\t.btn-view-product {
\t\t\tbackground: white;
\t\t\tcolor: #333;
\t\t\tpadding: 12px 24px;
\t\t\tborder-radius: 25px;
\t\t\ttext-decoration: none;
\t\t\tfont-weight: 600;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 8px;
\t\t\ttransition: all 0.3s ease;
\t\t\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
\t\t}
\t\t.btn-view-product:hover {
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\ttransform: scale(1.05);
\t\t}
\t\t.product-info-modern {
\t\t\tpadding: 16px;
\t\t\tflex-grow: 1;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.product-title-modern {
\t\t\tmargin: 0 0 8px;
\t\t\tfont-size: 16px;
\t\t\tfont-weight: 600;
\t\t\tline-height: 1.4;
\t\t}
\t\t.product-title-modern a {
\t\t\tcolor: #333;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.product-title-modern a:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.product-price-modern {
\t\t\tfont-size: 20px;
\t\t\tfont-weight: 700;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 8px;
\t\t}
\t\t.product-shop-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 6px;
\t\t\tfont-size: 13px;
\t\t\tcolor: #666;
\t\t\tmargin-bottom: 8px;
\t\t}
\t\t.product-shop-modern i {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.shop-link {
\t\t\tcolor: #666;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.shop-link:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.product-rating-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 4px;
\t\t\tmargin-top: auto;
\t\t}
\t\t.product-rating-modern .fa-star.active {
\t\t\tcolor: #ffc107;
\t\t}
\t\t.product-rating-modern .fa-star-o {
\t\t\tcolor: #ddd;
\t\t}
\t\t.rating-count {
\t\t\tfont-size: 12px;
\t\t\tcolor: #666;
\t\t\tmargin-left: 4px;
\t\t}
\t\t.product-views-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 6px;
\t\t\tfont-size: 12px;
\t\t\tcolor: #666;
\t\t\tmargin-top: auto;
\t\t}
\t\t.product-views-modern i {
\t\t\tcolor: #999;
\t\t}
\t\t/* Style des cartes produits */
\t\t.product-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\theight: 100%;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.product-card:hover {
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
\t\t\ttransform: translateY(-5px);
\t\t}
\t\t.product-image {
\t\t\twidth: 100%;
\t\t\theight: 250px;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.product-image::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: -100%;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
\t\t\ttransition: left 0.6s ease;
\t\t}
\t\t.product-card:hover .product-image::before {
\t\t\tleft: 100%;
\t\t}
\t\t.product-badge {
\t\t\tposition: absolute;
\t\t\ttop: 15px;
\t\t\tright: 15px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 8px 15px;
\t\t\tborder-radius: 20px;
\t\t\tfont-size: 0.85rem;
\t\t\tfont-weight: 600;
\t\t\tbox-shadow: 0 4px 10px rgba(255, 162, 0, 0.4);
\t\t\tz-index: 1;
\t\t}
\t\t.product-info {
\t\t\tpadding: 20px;
\t\t\tflex-grow: 1;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.product-title {
\t\t\tfont-size: 1.1rem;
\t\t\tfont-weight: 600;
\t\t\tcolor: #2c3e50;
\t\t\tmargin-bottom: 10px;
\t\t\tline-height: 1.4;
\t\t\tdisplay: -webkit-box;
\t\t\t-webkit-line-clamp: 2;
\t\t\t-webkit-box-orient: vertical;
\t\t\toverflow: hidden;
\t\t}
\t\t.product-price {
\t\t\tfont-size: 1.5rem;
\t\t\tfont-weight: 800;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.product-shop {
\t\t\tfont-size: 0.9rem;
\t\t\tcolor: #666;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.product-shop a {
\t\t\tcolor: #667eea;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.product-shop a:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t/* Newsletter Modern Styles */
\t\t.newsletter-section-modern {
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #095ad3 100%);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.newsletter-section-modern::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: -50%;
\t\t\tright: -50%;
\t\t\twidth: 100%;
\t\t\theight: 200%;
\t\t\tbackground: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
\t\t\tanimation: pulse 3s ease-in-out infinite;
\t\t}
\t\t@keyframes pulse {
\t\t\t0,
\t\t\t100% {
\t\t\t\ttransform: scale(1);
\t\t\t\topacity: 0.5;
\t\t\t}
\t\t\t50% {
\t\t\t\ttransform: scale(1.1);
\t\t\t\topacity: 0.8;
\t\t\t}
\t\t}
\t\t.newsletter-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 20px;
\t\t\tpadding: 40px;
\t\t\tbox-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
\t\t\tposition: relative;
\t\t\tz-index: 1;
\t\t}
\t\t.newsletter-title {
\t\t\tfont-size: 2.5rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #333;
\t\t}
\t\t.newsletter-description {
\t\t\tcolor: #666;
\t\t\tfont-size: 1.1rem;
\t\t\tline-height: 1.8;
\t\t}
\t\t.newsletter-form-modern {
\t\t\tposition: relative;
\t\t}
\t\t.newsletter-input-wrapper {
\t\t\tdisplay: flex;
\t\t\tgap: 10px;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.newsletter-input {
\t\t\tflex: 1;
\t\t\tpadding: 18px 25px;
\t\t\tborder: 2px solid #e0e0e0;
\t\t\tborder-radius: 50px;
\t\t\tfont-size: 1rem;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.newsletter-input:focus {
\t\t\toutline: none;
\t\t\tborder-color: #ffa200;
\t\t\tbox-shadow: 0 0 0 3px rgba(255, 162, 0, 0.1);
\t\t}
\t\t.newsletter-button {
\t\t\tpadding: 18px 35px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tborder: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1rem;
\t\t\tcursor: pointer;
\t\t\ttransition: all 0.3s ease;
\t\t\twhite-space: nowrap;
\t\t}
\t\t.newsletter-button:hover {
\t\t\ttransform: translateY(-2px);
\t\t\tbox-shadow: 0 5px 20px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.newsletter-privacy {
\t\t\tcolor: #999;
\t\t}
\t\t/* CTA Modern Styles */
\t\t.cta-section-modern {
\t\t\tbackground: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
\t\t}
\t\t.cta-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 25px;
\t\t\tpadding: 50px;
\t\t\tbox-shadow: 0 15px 50px rgba(0, 0, 0, 0.1);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.cta-card::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: -50px;
\t\t\tright: -50px;
\t\t\twidth: 200px;
\t\t\theight: 200px;
\t\t\tbackground: linear-gradient(135deg, rgba(255,162,0,0.1) 0%, rgba(255,162,0,0.05) 100%);
\t\t\tborder-radius: 50%;
\t\t}
\t\t.cta-badge {
\t\t\tdisplay: inline-block;
\t\t\tpadding: 8px 20px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tborder-radius: 50px;
\t\t\tfont-size: 0.9rem;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 20px;
\t\t}
\t\t.cta-title {
\t\t\tfont-size: 3rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #333;
\t\t\tmargin-bottom: 20px;
\t\t}
\t\t.cta-description {
\t\t\tfont-size: 1.2rem;
\t\t\tcolor: #666;
\t\t\tline-height: 1.8;
\t\t}
\t\t.cta-features {
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\tgap: 15px;
\t\t}
\t\t.cta-feature-item {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 10px;
\t\t\tfont-size: 1rem;
\t\t\tcolor: #555;
\t\t}
\t\t.cta-feature-item i {
\t\t\tcolor: #ffa200;
\t\t\tfont-size: 1.3rem;
\t\t}
\t\t.cta-buttons {
\t\t\tdisplay: flex;
\t\t\tgap: 15px;
\t\t\tflex-wrap: wrap;
\t\t}
\t\t.cta-button-primary {
\t\t\tpadding: 15px 35px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tborder: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1.1rem;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.cta-button-primary:hover {
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.4);
\t\t\tcolor: white;
\t\t}
\t\t.cta-button-secondary {
\t\t\tpadding: 15px 35px;
\t\t\tbackground: white;
\t\t\tcolor: #ffa200;
\t\t\tborder: 2px solid #ffa200;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1.1rem;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.cta-button-secondary:hover {
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.3);
\t\t}
\t\t.cta-image-wrapper {
\t\t\tposition: relative;
\t\t}
\t\t.cta-decoration {
\t\t\tposition: absolute;
\t\t\ttop: -20px;
\t\t\tright: -20px;
\t\t\twidth: 150px;
\t\t\theight: 150px;
\t\t\tbackground: linear-gradient(135deg, rgba(255,162,0,0.2) 0%, rgba(255,162,0,0.05) 100%);
\t\t\tborder-radius: 50%;
\t\t\tz-index: 0;
\t\t}
\t\t.cta-image {
\t\t\tposition: relative;
\t\t\tz-index: 1;
\t\t\tmax-width: 100%;
\t\t\theight: auto;
\t\t\tborder-radius: 15px;
\t\t}
\t\t.home-section {
\t\t\tposition: relative;
\t\t\ttransition: background-color 0.3s ease, color 0.3s ease;
\t\t}
\t\t.home-section::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\tinset: 0;
\t\t\tpointer-events: none;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section {
\t\t\tbackground: linear-gradient(180deg, rgba(17, 24, 39, 0.98) 0%, rgba(15, 23, 42, 0.95) 100%) !important;
\t\t\tcolor: var(--mk-text) !important;
\t\t\tborder-top: 1px solid rgba(148, 163, 184, 0.08);
\t\t\tborder-bottom: 1px solid rgba(148, 163, 184, 0.08);
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section--alt {
\t\t\tbackground: linear-gradient(180deg, rgba(12, 18, 30, 0.98) 0%, rgba(24, 34, 53, 0.95) 100%) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section--alt::before {
\t\t\topacity: 1;
\t\t\tbackground: linear-gradient(
\t\t\t\t180deg,
\t\t\t\trgba(255, 255, 255, 0.015) 0%,
\t\t\t\trgba(255, 255, 255, 0.015) 50%,
\t\t\t\trgba(255, 255, 255, 0.03) 50%,
\t\t\t\trgba(255, 255, 255, 0.03) 100%
\t\t\t);
\t\t\tbackground-size: 100% 12px;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .section-title h2,
\t\thtml[data-theme=\"dark\"] .home-section .category-content h5,
\t\thtml[data-theme=\"dark\"] .home-section .product-title-modern,
\t\thtml[data-theme=\"dark\"] .home-section .product-title-modern a,
\t\thtml[data-theme=\"dark\"] .home-section .product-title,
\t\thtml[data-theme=\"dark\"] .home-section .product-title a,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-title,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-title a,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-title,
\t\thtml[data-theme=\"dark\"] .home-section .cta-title,
\t\thtml[data-theme=\"dark\"] .home-section .feature-card h5,
\t\thtml[data-theme=\"dark\"] .home-section .banner-title-modern {
\t\t\tcolor: var(--mk-text) !important;
\t\t\t-webkit-text-fill-color: currentColor !important;
\t\t\tbackground: none !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .section-title p,
\t\thtml[data-theme=\"dark\"] .home-section .category-content p,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop-modern,
\t\thtml[data-theme=\"dark\"] .home-section .rating-count,
\t\thtml[data-theme=\"dark\"] .home-section .product-views-modern,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-description,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-privacy,
\t\thtml[data-theme=\"dark\"] .home-section .cta-description,
\t\thtml[data-theme=\"dark\"] .home-section .cta-feature-item,
\t\thtml[data-theme=\"dark\"] .home-section .banner-description-modern,
\t\thtml[data-theme=\"dark\"] .home-section .price-label {
\t\t\tcolor: var(--mk-text-soft) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .text-muted,
\t\thtml[data-theme=\"dark\"] .home-section small.text-muted,
\t\thtml[data-theme=\"dark\"] .home-section .small.text-muted {
\t\t\tcolor: var(--mk-text-muted) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .stats-card,
\t\thtml[data-theme=\"dark\"] .home-section .category-card-custom,
\t\thtml[data-theme=\"dark\"] .home-section .product-card-modern,
\t\thtml[data-theme=\"dark\"] .home-section .product-card,
\t\thtml[data-theme=\"dark\"] .home-section .feature-card,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-card,
\t\thtml[data-theme=\"dark\"] .home-section .cta-card,
\t\thtml[data-theme=\"dark\"] .home-section .single-product,
\t\thtml[data-theme=\"dark\"] .home-section .banner-content-modern,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-card {
\t\t\tbackground: var(--mk-surface-strong) !important;
\t\t\tcolor: var(--mk-text) !important;
\t\t\tborder-color: var(--mk-border) !important;
\t\t\tbox-shadow: 0 20px 45px rgba(2, 6, 23, 0.28) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section--alt .stats-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .category-card-custom,
\t\thtml[data-theme=\"dark\"] .home-section--alt .product-card-modern,
\t\thtml[data-theme=\"dark\"] .home-section--alt .product-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .feature-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .newsletter-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .cta-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .single-product,
\t\thtml[data-theme=\"dark\"] .home-section--alt .banner-content-modern,
\t\thtml[data-theme=\"dark\"] .home-section--alt .featured-gallery-card {
\t\t\tbackground: rgba(31, 41, 55, 0.9) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .product-image-wrapper,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-image-wrapper,
\t\thtml[data-theme=\"dark\"] .home-section .product-image-container,
\t\thtml[data-theme=\"dark\"] .home-section .banner-image-wrapper {
\t\t\tbackground: #0f172a !important;
\t\t\tborder-color: var(--mk-border) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .shop-link,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop a,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop-modern a,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-view-btn {
\t\t\tcolor: #93c5fd !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .shop-link:hover,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop a:hover,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop-modern a:hover {
\t\t\tcolor: var(--mk-primary) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .banner-price-modern {
\t\t\tbackground: linear-gradient(135deg, rgba(15, 23, 42, 0.96) 0%, rgba(31, 41, 55, 0.94) 100%) !important;
\t\t\tborder-left-color: var(--mk-primary) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-input {
\t\t\tbackground: #0f172a !important;
\t\t\tborder-color: var(--mk-border) !important;
\t\t\tcolor: var(--mk-text) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-input::placeholder {
\t\t\tcolor: var(--mk-text-muted) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .cta-section-modern,
\t\thtml[data-theme=\"dark\"] .home-section.cta-section-modern,
\t\thtml[data-theme=\"dark\"] .home-section.newsletter-section-modern {
\t\t\tcolor: var(--mk-text) !important;
\t\t}
\t</style>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 2051
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_body(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body"));
// line 2052
yield "\t<!-- Hero Section -->
\t<!-- start banner Area avec produits en vedette -->
\t\t";
// line 2054
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["featuredProducts"] ?? null)) > 0)) {
// line 2055
yield "\t\t\t<section class=\"banner-area-modern\"> <div class=\"banner-carousel-wrapper\">
\t\t\t\t<div class=\"active-banner-slider owl-carousel\" style=\"margin-top: 100px;\">
\t\t\t\t\t";
// line 2057
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["featuredProducts"] ?? null));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2058
yield "\t\t\t\t\t\t<!-- single-slide -->
\t\t\t\t\t\t<div class=\"banner-slide-item\">
\t\t\t\t\t\t\t<div class=\"container\">
\t\t\t\t\t\t\t\t<div class=\"row align-items-center\">
\t\t\t\t\t\t\t\t\t<div class=\"col-lg-4 col-md-6 col-12\">
\t\t\t\t\t\t\t\t\t\t<div class=\"banner-content-modern\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-badge\">
\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-star\"></i>
\t\t\t\t\t\t\t\t\t\t\t\tProduit en vedette
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t<h1 class=\"banner-title-modern\">";
// line 2068
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "name", [], "any", false, false, false, 2068), "html", null, true);
yield "</h1>
\t\t\t\t\t\t\t\t\t\t\t<p class=\"banner-description-modern\">
\t\t\t\t\t\t\t\t\t\t\t\t";
// line 2070
yield (((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "description", [], "any", false, false, false, 2070)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "description", [], "any", false, false, false, 2070)), 0, 120) . "..."), "html", null, true)) : ("Découvrez ce produit exclusif sur MaketOu"));
yield "
\t\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-price-modern\">
\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"price-label\">Prix</span>
\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"price-value\">";
// line 2074
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "price", [], "any", false, false, false, 2074), 2, ".", " "), "html", null, true);
yield "
\t\t\t\t\t\t\t\t\t\t\t\t\tHTG</span>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-actions-modern\">
\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"btn-banner-primary\" href=\"";
// line 2078
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_product_show", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["product"], "slug", [], "any", false, false, false, 2078)]), "html", null, true);
yield "\">
\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"btn-text\">Voir le produit</span>
\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"btn-icon\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t\t</span>
\t\t\t\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t\t\t\t";
// line 2084
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "shop", [], "any", false, false, false, 2084)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2085
yield "\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"btn-banner-secondary\" href=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_shop_show", ["slug" => CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["product"], "shop", [], "any", false, false, false, 2085), "slug", [], "any", false, false, false, 2085)]), "html", null, true);
yield "\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>";
// line 2087
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["product"], "shop", [], "any", false, false, false, 2087), "name", [], "any", false, false, false, 2087), "html", null, true);
yield "</span>
\t\t\t\t\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 2090
yield "\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t<div class=\"col-lg-8 col-md-6 col-12\">
\t\t\t\t\t\t\t\t\t\t<div class=\"banner-image-modern\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-image-wrapper\">
\t\t\t\t\t\t\t\t\t\t\t\t";
// line 2096
if ((CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", true, true, false, 2096) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2096)) > 0))) {
// line 2097
yield "\t\t\t\t\t\t\t\t\t\t\t\t\t<img class=\"banner-img\" src=\"";
yield (((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, true, false, 2097), 0, [], "array", true, true, false, 2097) && (($_v0 = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2097)) && is_array($_v0) || $_v0 instanceof ArrayAccess ? ($_v0[0] ?? null) : null))) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((($_v1 = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2097)) && is_array($_v1) || $_v1 instanceof ArrayAccess ? ($_v1[0] ?? null) : null)), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((("ui/img/product/p" . CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2097)) . ".jpg")), "html", null, true)));
yield "\" alt=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "name", [], "any", false, false, false, 2097), "html", null, true);
yield "\">
\t\t\t\t\t\t\t\t\t\t\t\t";
} else {
// line 2099
yield "\t\t\t\t\t\t\t\t\t\t\t\t\t<img class=\"banner-img\" src=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((("ui/img/product/p" . CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2099)) . ".jpg")), "html", null, true);
yield "\" alt=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "name", [], "any", false, false, false, 2099), "html", null, true);
yield "\">
\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 2101
yield "\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-image-overlay\"></div>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2109
yield "\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
} else {
// line 2113
yield "\t\t<!-- Banner par défaut si pas de produits en vedette -->
\t\t<section class=\"banner-area-modern\">
\t\t\t<div class=\"banner-carousel-wrapper\">
\t\t\t\t<div class=\"container\">
\t\t\t\t\t<div class=\"row align-items-center justify-content-center\">
\t\t\t\t\t\t<div class=\"col-lg-8 text-center\">
\t\t\t\t\t\t\t<div class=\"banner-content-modern\" style=\"margin-top: 140px;\">
\t\t\t\t\t\t\t\t<h1 class=\"banner-title-modern\">Bienvenue sur MaketOu</h1>
\t\t\t\t\t\t\t\t<p class=\"banner-description-modern\">Votre marketplace haïtienne</p>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
}
// line 2129
yield "\t<!-- End banner Area -->
\t<!-- Catégories de produits -->
\t";
// line 2132
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["categories"] ?? null)) > 0)) {
// line 2133
yield "\t\t<section class=\"py-5 home-section\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title\">
\t\t\t\t\t<h2>Nos catégories</h2>
\t\t\t\t\t<p>Explorez nos différentes catégories de produits</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"row\" id=\"productCategoriesContainer\">
\t\t\t\t\t";
// line 2140
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::slice($this->env->getCharset(), ($context["categories"] ?? null), 0, 8));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["category"]) {
// line 2141
yield "\t\t\t\t\t\t<div class=\"col-lg-3 col-md-4 col-sm-6 mb-4\">
\t\t\t\t\t\t\t<div class=\"category-card-custom d-flex flex-column h-100\">
\t\t\t\t\t\t\t\t<div class=\"category-image-wrapper\">
\t\t\t\t\t\t\t\t\t<div class=\"category-image\" style=\"background-image: url('";
// line 2144
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["category"], "bannerImage", [], "any", false, false, false, 2144)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(("uploads/categories/banner/" . CoreExtension::getAttribute($this->env, $this->source, $context["category"], "bannerImage", [], "any", false, false, false, 2144))), "html", null, true);
} else {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((("ui/img/category/cat-" . CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2144)) . ".jpg")), "html", null, true);
}
yield "')\">
\t\t\t\t\t\t\t\t\t\t<div class=\"category-overlay-custom\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"category-icon-wrapper\">
\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-tag\" style=\"font-size: 3rem;\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">";
// line 2148
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "name", [], "any", false, false, false, 2148), "html", null, true);
yield "</h4>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
\t\t\t\t\t\t\t\t\t<h5 class=\"mb-2\">";
// line 2154
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "name", [], "any", false, false, false, 2154), "html", null, true);
yield "</h5>
\t\t\t\t\t\t\t\t\t";
// line 2155
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["category"], "description", [], "any", false, false, false, 2155)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2156
yield "\t\t\t\t\t\t\t\t\t\t<p class=\"text-muted mb-3 small\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "description", [], "any", false, false, false, 2156)), 0, 60), "html", null, true);
yield "
\t\t\t\t\t\t\t\t\t\t\t";
// line 2157
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "description", [], "any", false, false, false, 2157))) > 60)) {
yield "...
\t\t\t\t\t\t\t\t\t\t\t";
}
// line 2159
yield "\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t";
}
// line 2161
yield "\t\t\t\t\t\t\t\t\t<a href=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_listing", ["category" => CoreExtension::getAttribute($this->env, $this->source, $context["category"], "slug", [], "any", false, false, false, 2161)]), "html", null, true);
yield "\" class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
\t\t\t\t\t\t\t\t\t\tVoir les produits
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['category'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2168
yield "\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
}
// line 2172
yield "
\t<!-- Catégories de boutiques -->
\t";
// line 2174
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["shopCategories"] ?? null)) > 0)) {
// line 2175
yield "\t\t<section class=\"py-5 bg-light home-section home-section--alt\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title\">
\t\t\t\t\t<h2>Nos catégories de boutiques</h2>
\t\t\t\t\t<p>Explorez les différentes catégories de boutiques disponibles sur MaketOu</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"row\" id=\"shopCategoriesContainer\">
\t\t\t\t\t";
// line 2182
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::slice($this->env->getCharset(), ($context["shopCategories"] ?? null), 0, 6));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["shopCategory"]) {
// line 2183
yield "\t\t\t\t\t\t<div class=\"col-lg-4 col-md-6 mb-4\">
\t\t\t\t\t\t\t<a href=\"";
// line 2184
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_shops_list");
yield "?category=";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "slug", [], "any", false, false, false, 2184), "html", null, true);
yield "\" class=\"text-decoration-none h-100\" style=\"display: block;\">
\t\t\t\t\t\t\t\t<div class=\"category-card-custom shop-category-clickable d-flex flex-column h-100\">
\t\t\t\t\t\t\t\t\t<div class=\"category-image-wrapper\">
\t\t\t\t\t\t\t\t\t\t<div class=\"category-image\" style=\"background-image: url('";
// line 2187
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "bannerImage", [], "any", false, false, false, 2187)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "bannerImage", [], "any", false, false, false, 2187)), "html", null, true);
} else {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((("ui/img/category/shop-" . CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2187)) . ".jpg")), "html", null, true);
}
yield "')\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"category-overlay-custom\">
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"category-icon-wrapper\">
\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store\" style=\"font-size: 3rem;\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">";
// line 2191
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "name", [], "any", false, false, false, 2191), "html", null, true);
yield "</h4>
\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 2192
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2192)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2193
yield "\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"mt-2 px-3\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2193)), 0, 100), "html", null, true);
yield "
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
// line 2194
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2194))) > 100)) {
yield "...
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 2196
yield "\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 2198
yield "\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
\t\t\t\t\t\t\t\t\t\t<h5 class=\"mb-2\">";
// line 2203
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "name", [], "any", false, false, false, 2203), "html", null, true);
yield "</h5>
\t\t\t\t\t\t\t\t\t\t";
// line 2204
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2204)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2205
yield "\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-muted mb-3 small\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2205)), 0, 80), "html", null, true);
yield "
\t\t\t\t\t\t\t\t\t\t\t\t";
// line 2206
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2206))) > 80)) {
yield "...
\t\t\t\t\t\t\t\t\t\t\t\t";
}
// line 2208
yield "\t\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t\t";
}
// line 2210
yield "\t\t\t\t\t\t\t\t\t\t<span class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
\t\t\t\t\t\t\t\t\t\t\tVoir les boutiques
\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right ms-2\"></i>
\t\t\t\t\t\t\t\t\t\t</span>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['shopCategory'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2219
yield "\t\t\t\t</div>
\t\t\t\t";
// line 2220
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["shopCategories"] ?? null)) > 6)) {
// line 2221
yield "\t\t\t\t\t<div class=\"text-center mt-4\">
\t\t\t\t\t\t<button class=\"btn btn-outline-primary btn-lg\" onclick=\"showAllShopCategories()\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-store me-2\"></i>
\t\t\t\t\t\t\tVoir toutes les catégories de boutiques (";
// line 2224
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["shopCategories"] ?? null)), "html", null, true);
yield ")
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t";
}
// line 2228
yield "\t\t\t</div>
\t\t</section>
\t";
}
// line 2231
yield "
\t<!-- Produits en vedette -->
\t";
// line 2233
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["featuredProducts"] ?? null)) > 0)) {
// line 2234
yield "\t\t<section class=\"py-5 bg-light home-section\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Produits en vedette</h2>
\t\t\t\t\t<p>Découvrez nos produits les plus populaires et les mieux notés</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"featured-gallery-wrapper\">
\t\t\t\t\t<div class=\"featured-gallery-container\">
\t\t\t\t\t\t<div class=\"featured-gallery-grid\" id=\"featuredGalleryGrid\">
\t\t\t\t\t\t\t";
// line 2244
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["featuredProducts"] ?? null));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2245
yield "\t\t\t\t\t\t\t\t<div class=\"featured-gallery-item\">
\t\t\t\t\t\t\t\t\t";
// line 2246
yield from $this->load("home/_single_product_card.html.twig", 2246)->unwrap()->yield(CoreExtension::merge($context, ["product" => $context["product"]]));
// line 2247
yield "\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2249
yield "\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Contrôles de navigation -->
\t\t\t\t\t<div class=\"featured-gallery-controls\">
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-prev\" id=\"featuredGalleryPrev\" aria-label=\"Précédent\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-left\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-next\" id=\"featuredGalleryNext\" aria-label=\"Suivant\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-right\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Bouton charger plus -->
\t\t\t\t\t<div class=\"featured-gallery-load-more text-center mt-4\" id=\"featuredGalleryLoadMore\" style=\"display: none;\">
\t\t\t\t\t\t<button class=\"btn btn-outline-primary\" id=\"loadMoreFeaturedBtn\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-plus-circle me-2\"></i>
\t\t\t\t\t\t\tCharger plus de produits
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"text-center mt-5\">
\t\t\t\t\t<a href=\"";
// line 2272
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_listing");
yield "\" class=\"btn-view-all-products\">
\t\t\t\t\t\t<span>Voir tous les produits</span>
\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right\"></i>
\t\t\t\t\t</a>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
}
// line 2280
yield "
\t<!-- Nouveautés -->
\t";
// line 2282
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["latestProducts"] ?? null)) > 0)) {
// line 2283
yield "\t\t<section class=\"py-5 home-section home-section--alt\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Nouveautés</h2>
\t\t\t\t\t<p>Les derniers produits ajoutés sur MaketOu</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"featured-gallery-wrapper\">
\t\t\t\t\t<div class=\"featured-gallery-container\">
\t\t\t\t\t\t<div class=\"featured-gallery-grid\" id=\"latestGalleryGrid\">
\t\t\t\t\t\t\t";
// line 2293
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["latestProducts"] ?? null));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2294
yield "\t\t\t\t\t\t\t\t<div class=\"featured-gallery-item\">
\t\t\t\t\t\t\t\t\t";
// line 2295
yield from $this->load("home/_single_product_card.html.twig", 2295)->unwrap()->yield(CoreExtension::merge($context, ["product" => $context["product"]]));
// line 2296
yield "\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2298
yield "\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Contrôles de navigation -->
\t\t\t\t\t<div class=\"featured-gallery-controls\">
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-prev\" id=\"latestGalleryPrev\" aria-label=\"Précédent\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-left\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-next\" id=\"latestGalleryNext\" aria-label=\"Suivant\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-right\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Bouton charger plus -->
\t\t\t\t\t<div class=\"featured-gallery-load-more text-center mt-4\" id=\"latestGalleryLoadMore\" style=\"display: none;\">
\t\t\t\t\t\t<button class=\"btn btn-outline-primary\" id=\"loadMoreLatestBtn\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-plus-circle me-2\"></i>
\t\t\t\t\t\t\tCharger plus de produits
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"text-center mt-5\">
\t\t\t\t\t<a href=\"";
// line 2321
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_listing");
yield "\" class=\"btn-view-all-products\">
\t\t\t\t\t\t<span>Voir tous les produits</span>
\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right\"></i>
\t\t\t\t\t</a>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
}
// line 2329
yield "
\t";
// line 2330
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["recommendedProducts"] ?? null)) > 0)) {
// line 2331
yield "\t\t<section class=\"py-5 bg-white home-section\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Recommandés pour vous</h2>
\t\t\t\t\t<p>Suggestions basées sur votre activité récente et les tendances de MaketOu</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"row g-4\">
\t\t\t\t\t";
// line 2338
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["recommendedProducts"] ?? null));
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2339
yield "\t\t\t\t\t\t<div class=\"col-12 col-sm-6 col-lg-3\">
\t\t\t\t\t\t\t<div class=\"product-card h-100\">
\t\t\t\t\t\t\t\t";
// line 2341
$context["productImage"] = (((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, true, false, 2341), 0, [], "array", true, true, false, 2341) && !(null === (($_v2 = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2341)) && is_array($_v2) || $_v2 instanceof ArrayAccess ? ($_v2[0] ?? null) : null)))) ? ((($_v3 = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2341)) && is_array($_v3) || $_v3 instanceof ArrayAccess ? ($_v3[0] ?? null) : null)) : ("ui/img/product/p1.jpg"));
// line 2342
yield "\t\t\t\t\t\t\t\t<div class=\"product-image\" style=\"background-image:url('";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(($context["productImage"] ?? null)), "html", null, true);
yield "');\">
\t\t\t\t\t\t\t\t\t";
// line 2343
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "isFeatured", [], "any", false, false, false, 2343)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2344
yield "\t\t\t\t\t\t\t\t\t\t<span class=\"product-badge bg-success\">Populaire</span>
\t\t\t\t\t\t\t\t\t";
}
// line 2346
yield "\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"p-3\">
\t\t\t\t\t\t\t\t\t<h6 class=\"mb-2\">
\t\t\t\t\t\t\t\t\t\t<a href=\"";
// line 2349
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_product_show", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["product"], "slug", [], "any", false, false, false, 2349)]), "html", null, true);
yield "\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "name", [], "any", false, false, false, 2349), "html", null, true);
yield "</a>
\t\t\t\t\t\t\t\t\t</h6>
\t\t\t\t\t\t\t\t\t<p class=\"mb-2 text-muted small\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store\"></i>
\t\t\t\t\t\t\t\t\t\t";
// line 2353
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["product"], "shop", [], "any", false, false, false, 2353)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2354
yield "\t\t\t\t\t\t\t\t\t\t\t<a href=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_shop_show", ["slug" => CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["product"], "shop", [], "any", false, false, false, 2354), "slug", [], "any", false, false, false, 2354)]), "html", null, true);
yield "\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["product"], "shop", [], "any", false, false, false, 2354), "name", [], "any", false, false, false, 2354), "html", null, true);
yield "</a>
\t\t\t\t\t\t\t\t\t\t";
} else {
// line 2356
yield "\t\t\t\t\t\t\t\t\t\t\tBoutique non spécifiée
\t\t\t\t\t\t\t\t\t\t";
}
// line 2358
yield "\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t<div class=\"d-flex align-items-center justify-content-between\">
\t\t\t\t\t\t\t\t\t\t<span class=\"fw-bold text-primary\">";
// line 2360
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatNumber(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "price", [], "any", false, false, false, 2360), 2, ".", " "), "html", null, true);
yield " HTG</span>
\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0)\" class=\"btn btn-sm btn-outline-primary add-to-cart\" data-product-id=\"";
// line 2361
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "id", [], "any", false, false, false, 2361), "html", null, true);
yield "\" data-qty=\"1\">
\t\t\t\t\t\t\t\t\t\t\t<i class=\"ti ti-bag\"></i>
\t\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t";
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2369
yield "\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
}
// line 2373
yield "
\t";
// line 2374
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["recentlyViewedProducts"] ?? null)) > 0)) {
// line 2375
yield "\t\t<section class=\"py-5 bg-light home-section home-section--alt\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Récemment consultés</h2>
\t\t\t\t\t<p>Retrouvez les articles que vous avez explorés dernièrement</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"featured-gallery-wrapper\">
\t\t\t\t\t<div class=\"featured-gallery-container\">
\t\t\t\t\t\t<div class=\"featured-gallery-grid\">
\t\t\t\t\t\t\t";
// line 2384
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["recentlyViewedProducts"] ?? null));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2385
yield "\t\t\t\t\t\t\t\t<div class=\"featured-gallery-item\">
\t\t\t\t\t\t\t\t\t";
// line 2386
yield from $this->load("home/_single_product_card.html.twig", 2386)->unwrap()->yield(CoreExtension::merge($context, ["product" => $context["product"]]));
// line 2387
yield "\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t";
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
// line 2389
yield "\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t";
}
// line 2395
yield "
\t<!-- Fonctionnalités -->
\t<section class=\"py-5 bg-light home-section\">
\t\t<div class=\"container\">
\t\t\t<div class=\"section-title\">
\t\t\t\t<h2>Pourquoi choisir MaketOu ?</h2>
\t\t\t\t<p>Découvrez les avantages de notre plateforme</p>
\t\t\t</div>
\t\t\t<div class=\"row\">
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-rocket\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Livraison rapide</h5>
\t\t\t\t\t\t<p>Recevez vos commandes rapidement avec notre réseau de livraison optimisé</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-lock\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Paiement sécurisé</h5>
\t\t\t\t\t\t<p>Vos transactions sont protégées avec les dernières technologies de sécurité</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-phone\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Support 24/7</h5>
\t\t\t\t\t\t<p>Notre équipe est disponible pour vous aider à tout moment</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-undo\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Retour facile</h5>
\t\t\t\t\t\t<p>Politique de retour flexible pour votre tranquillité d'esprit</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</section>
\t<!-- Newsletter -->
\t<section class=\"newsletter-section-modern py-5 home-section home-section--alt\">
\t\t<div class=\"container\">
\t\t\t<div class=\"row justify-content-center\">
\t\t\t\t<div class=\"col-lg-10\">
\t\t\t\t\t<div class=\"newsletter-card\">
\t\t\t\t\t\t<div class=\"row align-items-center\">
\t\t\t\t\t\t\t<div class=\"col-lg-6 text-center text-lg-start mb-4 mb-lg-0\">
\t\t\t\t\t\t\t\t<div class=\"newsletter-icon mb-3\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-envelope\" style=\"font-size: 4rem; color: #ffa200;\"></i>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<h2 class=\"newsletter-title mb-3\">Restez informé des dernières nouveautés</h2>
\t\t\t\t\t\t\t\t<p class=\"newsletter-description mb-0\">
\t\t\t\t\t\t\t\t\tInscrivez-vous à notre newsletter pour recevoir les offres exclusives,
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t les nouveaux produits et les meilleures promotions directement dans votre boîte mail.
\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t<div class=\"col-lg-6\">
\t\t\t\t\t\t\t\t<form class=\"newsletter-form-modern\" id=\"newsletterFormHome\">
\t\t\t\t\t\t\t\t\t<div class=\"newsletter-input-wrapper\">
\t\t\t\t\t\t\t\t\t\t<input type=\"email\" class=\"newsletter-input\" placeholder=\"Votre adresse email\" required name=\"email\">
\t\t\t\t\t\t\t\t\t\t<button class=\"newsletter-button\" type=\"submit\">
\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right me-2\"></i>
\t\t\t\t\t\t\t\t\t\t\tS'abonner
\t\t\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t<p class=\"newsletter-privacy mt-3 text-center\">
\t\t\t\t\t\t\t\t\t\t<small>
\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-lock me-1\"></i>
\t\t\t\t\t\t\t\t\t\t\tVos données sont sécurisées. Pas de spam, désinscription facile.
\t\t\t\t\t\t\t\t\t\t</small>
\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t</form>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</section>
\t<!-- Call to Action -->
\t<section class=\"cta-section-modern py-5 home-section\">
\t\t<div class=\"container\">
\t\t\t<div class=\"cta-card\">
\t\t\t\t<div class=\"row align-items-center\">
\t\t\t\t\t<div class=\"col-lg-6 mb-4 mb-lg-0\">
\t\t\t\t\t\t<div class=\"cta-content\">
\t\t\t\t\t\t\t<span class=\"cta-badge\">
\t\t\t\t\t\t\t\t<i class=\"lnr lnr-rocket me-2\"></i>
\t\t\t\t\t\t\t\tCommencez dès aujourd'hui
\t\t\t\t\t\t\t</span>
\t\t\t\t\t\t\t<h2 class=\"cta-title mb-3\">Prêt à commencer ?</h2>
\t\t\t\t\t\t\t<p class=\"cta-description mb-4\">
\t\t\t\t\t\t\t\tQue vous soyez
\t\t\t\t\t\t\t\t<strong>acheteur</strong>
\t\t\t\t\t\t\t\tou
\t\t\t\t\t\t\t\t<strong>vendeur</strong>, MaketOu vous offre la plateforme idéale
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t pour vos besoins commerciaux en Haïti. Rejoignez des milliers d'utilisateurs satisfaits !
\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t<div class=\"cta-features mb-4\">
\t\t\t\t\t\t\t\t<div class=\"cta-feature-item\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\"></i>
\t\t\t\t\t\t\t\t\t<span>Plateforme 100% sécurisée</span>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"cta-feature-item\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\"></i>
\t\t\t\t\t\t\t\t\t<span>Support client 24/7</span>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"cta-feature-item\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\"></i>
\t\t\t\t\t\t\t\t\t<span>Paiements multiples</span>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t<div class=\"cta-buttons\">
\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn cta-button-primary\" onclick=\"openReadyModal()\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-rocket me-2\"></i>
\t\t\t\t\t\t\t\t\tPrêt à commencer ?
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t<a href=\"";
// line 2523
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_listing");
yield "\" class=\"btn cta-button-secondary\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-magnifier me-2\"></i>
\t\t\t\t\t\t\t\t\tVoir les produits
\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t\t<div class=\"col-lg-6\">
\t\t\t\t\t\t<div class=\"cta-image-wrapper\">
\t\t\t\t\t\t\t<div class=\"cta-decoration\"></div>
\t\t\t\t\t\t\t<img src=\"";
// line 2533
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("Start.png"), "html", null, true);
yield "\" alt=\"MaketOu\" class=\"cta-image\">
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</section>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
// line 2542
/**
* @return iterable<null|scalar|\Stringable>
*/
public function block_javascripts(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
$__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascripts"));
$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "javascripts"));
// line 2543
yield "\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js\"></script>
\t<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css\">
\t<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css\">
\t<script src=\"";
// line 2546
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("ui/js/product-unified.js"), "html", null, true);
yield "\"></script>
\t<script>
\t\twindow.openReadyModal = function () {
\t\t\tconst modalEl = document.getElementById('readyModal');
\t\t\tif (!modalEl) {
\t\t\t\tconsole.error('readyModal introuvable');
\t\t\t\treturn;
\t\t\t}
\t\t\tif (typeof bootstrap === 'undefined' || !bootstrap.Modal) {
\t\t\t\tconsole.error('Bootstrap Modal non chargé');
\t\t\t\treturn;
\t\t\t}
\t\t\tconst modalInstance = bootstrap.Modal.getOrCreateInstance(modalEl);
\t\t\tmodalInstance.show();
\t\t};
\t</script>
\t<script>
\t\t// Variables globales pour la navigation des images (si pas déjà définies)
if (typeof productImages === 'undefined') {
var productImages = {};
var currentImageIndex = {};
}
// Initialisation des données d'images pour les produits \"Produits en vedette\"
";
// line 2570
if (array_key_exists("featuredProducts", $context)) {
// line 2571
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["featuredProducts"] ?? null));
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2572
if ((CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", true, true, false, 2572) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2572)) > 0))) {
// line 2573
yield "productImages[";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "id", [], "any", false, false, false, 2573), "html", null, true);
yield "] = [";
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2573));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
yield "'";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["img"]), "html", null, true);
yield "'";
if ((($tmp = !CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "last", [], "any", false, false, false, 2573)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
yield ",";
}
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
yield "];
currentImageIndex[";
// line 2574
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "id", [], "any", false, false, false, 2574), "html", null, true);
yield "] = 0;";
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent']);
$context = array_intersect_key($context, $_parent) + $_parent;
}
// line 2575
yield "
// Initialisation des données d'images pour les produits \"Nouveautés\"
";
// line 2577
if (array_key_exists("latestProducts", $context)) {
// line 2578
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["latestProducts"] ?? null));
foreach ($context['_seq'] as $context["_key"] => $context["product"]) {
// line 2579
if ((CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", true, true, false, 2579) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2579)) > 0))) {
// line 2580
yield "productImages[";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "id", [], "any", false, false, false, 2580), "html", null, true);
yield "] = [";
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "images", [], "any", false, false, false, 2580));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["img"]) {
yield "'";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl($context["img"]), "html", null, true);
yield "'";
if ((($tmp = !CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "last", [], "any", false, false, false, 2580)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
yield ",";
}
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['img'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
yield "];
currentImageIndex[";
// line 2581
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["product"], "id", [], "any", false, false, false, 2581), "html", null, true);
yield "] = 0;";
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['product'], $context['_parent']);
$context = array_intersect_key($context, $_parent) + $_parent;
}
// line 2582
yield "
console.log('SCRIPT LOADED - Featured Gallery');
(function () {
\t'use strict';
\tconst SECTION_CONFIGS = [
\t\t{ grid: '#featuredGalleryGrid', prev: '#featuredGalleryPrev', next: '#featuredGalleryNext' },
\t\t{ grid: '#latestGalleryGrid', prev: '#latestGalleryPrev', next: '#latestGalleryNext' }
\t];
\tfunction triggerRipple(button) {
\t\tbutton.classList.remove('btn-ripple');
\t\tvoid button.offsetWidth;
\t\tbutton.classList.add('btn-ripple');
\t\tsetTimeout(() => button.classList.remove('btn-ripple'), 350);
\t}
\tfunction initSectionCarousel(config) {
\t\tconst \$grid = \$(config.grid);
\t\tif (!\$grid.length) {
\t\t\treturn;
\t\t}
\t\tif (typeof \$.fn.owlCarousel !== 'function') {
\t\t\tconsole.warn('OwlCarousel n\\'est pas chargé pour', config.grid);
\t\t\treturn;
\t\t}
\t\tif (!\$grid.hasClass('owl-carousel')) {
\t\t\t\$grid.addClass('owl-carousel');
\t\t}
\t\tif (\$grid.hasClass('owl-loaded')) {
\t\t\treturn;
\t\t}
\t\tconst owlInstance = \$grid.owlCarousel({
\t\t\tloop: true,
\t\t\tmargin: 30,
\t\t\tautoplay: true,
\t\t\tautoplayTimeout: 4800,
\t\t\tautoplayHoverPause: true,
\t\t\tsmartSpeed: 650,
\t\t\tnav: false,
\t\t\tdots: false,
\t\t\tresponsive: {
\t\t\t\t0: { items: 1, margin: 15 },
\t\t\t\t576: { items: 1.2, margin: 18 },
\t\t\t\t768: { items: 2, margin: 20 },
\t\t\t\t992: { items: 3, margin: 25 },
\t\t\t\t1400: { items: 4, margin: 30 }
\t\t\t}
\t\t});
\t\tconst \$prev = \$(config.prev);
\t\tconst \$next = \$(config.next);
\t\tif (\$prev.length) {
\t\t\t\$prev.off('click.carouselNav').on('click.carouselNav', function (e) {
\t\t\t\te.preventDefault();
\t\t\t\towlInstance.trigger('prev.owl.carousel');
\t\t\t\ttriggerRipple(this);
\t\t\t});
\t\t}
\t\tif (\$next.length) {
\t\t\t\$next.off('click.carouselNav').on('click.carouselNav', function (e) {
\t\t\t\te.preventDefault();
\t\t\t\towlInstance.trigger('next.owl.carousel');
\t\t\t\ttriggerRipple(this);
\t\t\t});
\t\t}
\t}
\tfunction ensureOwl(attempt = 0) {
\t\tif (window.jQuery && typeof \$.fn !== 'undefined' && typeof \$.fn.owlCarousel === 'function') {
\t\t\tSECTION_CONFIGS.forEach(initSectionCarousel);
\t\t} else if (attempt < 15) {
\t\t\tsetTimeout(() => ensureOwl(attempt + 1), 200);
\t\t} else {
\t\t\tconsole.warn('OwlCarousel non disponible après plusieurs tentatives');
\t\t}
\t}
\tdocument.addEventListener('DOMContentLoaded', function () {
\t\tensureOwl();
\t});
})();
document.addEventListener('DOMContentLoaded', function () { // Animation des cartes au scroll
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver(function (entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
// Observer toutes les cartes
document.querySelectorAll('.stats-card, .category-card, .product-card, .feature-card').forEach(card => {
card.style.opacity = '0';
card.style.transform = 'translateY(30px)';
card.style.transition = 'all 0.6s ease';
observer.observe(card);
});
// Compteur animé pour les statistiques
function animateCounter(element, target, duration = 2000) {
let start = 0;
const increment = target / (duration / 16);
function updateCounter() {
start += increment;
if (start < target) {
element.textContent = Math.floor(start).toLocaleString();
requestAnimationFrame(updateCounter);
} else {
element.textContent = target.toLocaleString();
}
}
updateCounter();
}
// Animer les compteurs quand ils sont visibles
const statsObserver = new IntersectionObserver(function (entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
const numberElement = entry.target.querySelector('.stats-number');
const target = parseInt(numberElement.textContent.replace(/,/g, ''));
animateCounter(numberElement, target);
statsObserver.unobserve(entry.target);
}
});
});
document.querySelectorAll('.stats-card').forEach(card => {
statsObserver.observe(card);
});
// Gestion de la newsletter
const newsletterForm = document.querySelector('.newsletter-form');
if (newsletterForm) {
newsletterForm.addEventListener('submit', function (e) {
e.preventDefault();
const email = this.querySelector('input[type=\"email\"]').value;
const button = this.querySelector('button');
const originalText = button.innerHTML;
// Désactiver le bouton
button.disabled = true;
button.innerHTML = '<i class=\"lnr lnr-spinner me-2\"></i>Inscription...';
// Envoyer la requête
fetch('";
// line 2742
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_newsletter_subscribe");
yield "', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'XMLHttpRequest'
},
body: 'email=' + encodeURIComponent(email)
}).then(response => response.json()).then(data => {
if (data.success) {
button.innerHTML = '<i class=\"lnr lnr-check me-2\"></i>Inscription réussie !';
button.classList.remove('btn-warning');
button.classList.add('btn-success');
this.reset();
} else {
button.innerHTML = '<i class=\"lnr lnr-warning me-2\"></i>Erreur';
button.classList.remove('btn-warning');
button.classList.add('btn-danger');
}
setTimeout(() => {
button.innerHTML = originalText;
button.classList.remove('btn-success', 'btn-danger');
button.classList.add('btn-warning');
button.disabled = false;
}, 3000);
}).catch(error => {
console.error('Erreur:', error);
button.innerHTML = '<i class=\"lnr lnr-warning me-2\"></i>Erreur';
button.classList.remove('btn-warning');
button.classList.add('btn-danger');
setTimeout(() => {
button.innerHTML = originalText;
button.classList.remove('btn-danger');
button.classList.add('btn-warning');
button.disabled = false;
}, 3000);
});
});
}
});
// Effet parallaxe léger pour le hero
window.addEventListener('scroll', function () {
const scrolled = window.pageYOffset;
const hero = document.querySelector('.hero-banner');
if (hero) {
hero.style.transform = `translateY(\${
scrolled * 0.5
}px)`;
}
});
});
// Fonction pour afficher toutes les catégories
function showAllCategories () {
const container = document.getElementById('productCategoriesContainer');
const btn = document.getElementById('showAllCategoriesBtn');";
// line 2799
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["allCategories"] ?? null)) > 8)) {
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["allCategories"] ?? null));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["category"]) {
if ((CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2799) > 8)) {
yield "const categoryHtml ";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2799), "html", null, true);
yield " = `
<div class=\"col-lg-3 col-md-4 col-sm-6 mb-4\">
<div class=\"category-card-custom d-flex flex-column h-100\">
<div class=\"category-image-wrapper\">
<div class=\"category-image\" style=\"background-image: url('";
// line 2803
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["category"], "bannerImage", [], "any", false, false, false, 2803)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(("uploads/categories/banner/" . CoreExtension::getAttribute($this->env, $this->source, $context["category"], "bannerImage", [], "any", false, false, false, 2803))), "html", null, true);
} else {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((("ui/img/category/cat-" . CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2803)) . ".jpg")), "html", null, true);
}
yield "')\">
<div class=\"category-overlay-custom\">
<div class=\"category-icon-wrapper\">
<i class=\"lnr lnr-tag\" style=\"font-size: 3rem;\"></i>
<h4 class=\"mt-3\">";
// line 2807
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "name", [], "any", false, false, false, 2807), "html", null, true);
yield "</h4>
</div>
</div>
</div>
</div>
<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
<h5 class=\"mb-2\">";
// line 2813
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "name", [], "any", false, false, false, 2813), "html", null, true);
yield "</h5>
";
// line 2814
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["category"], "description", [], "any", false, false, false, 2814)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2815
yield " <p class=\"text-muted mb-3 small\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "description", [], "any", false, false, false, 2815)), 0, 60), "html", null, true);
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["category"], "description", [], "any", false, false, false, 2815))) > 60)) {
yield "...";
}
yield "</p>
";
}
// line 2817
yield " <a href=\"";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_listing", ["category" => CoreExtension::getAttribute($this->env, $this->source, $context["category"], "slug", [], "any", false, false, false, 2817)]), "html", null, true);
yield "\" class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
Voir les produits
</a>
</div>
</div>
</div>
`;
container.insertAdjacentHTML('beforeend', categoryHtml ";
// line 2824
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2824), "html", null, true);
yield ");";
}
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['category'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
}
yield "if (btn)
btn.style.display = 'none';
}
// Fonction pour afficher toutes les catégories de boutiques
function showAllShopCategories () {
const container = document.getElementById('shopCategoriesContainer');
const btn = document.querySelector('[onclick=\"showAllShopCategories()\"]') ?. parentElement;";
// line 2834
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), ($context["allShopCategories"] ?? null)) > 6)) {
$context['_parent'] = $context;
$context['_seq'] = CoreExtension::ensureTraversable(($context["allShopCategories"] ?? null));
$context['loop'] = [
'parent' => $context['_parent'],
'index0' => 0,
'index' => 1,
'first' => true,
];
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
$length = count($context['_seq']);
$context['loop']['revindex0'] = $length - 1;
$context['loop']['revindex'] = $length;
$context['loop']['length'] = $length;
$context['loop']['last'] = 1 === $length;
}
foreach ($context['_seq'] as $context["_key"] => $context["shopCategory"]) {
if ((CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2834) > 6)) {
yield "const shopCategoryHtml ";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2834), "html", null, true);
yield " = `
<div class=\"col-lg-4 col-md-6 mb-4\">
<a href=\"";
// line 2836
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_shops_list");
yield "?category=";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "slug", [], "any", false, false, false, 2836), "html", null, true);
yield "\" class=\"text-decoration-none h-100\" style=\"display: block;\">
<div class=\"category-card-custom shop-category-clickable d-flex flex-column h-100\">
<div class=\"category-image-wrapper\">
<div class=\"category-image\" style=\"background-image: url('";
// line 2839
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "bannerImage", [], "any", false, false, false, 2839)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "bannerImage", [], "any", false, false, false, 2839)), "html", null, true);
} else {
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl((("ui/img/category/shop-" . CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2839)) . ".jpg")), "html", null, true);
}
yield "')\">
<div class=\"category-overlay-custom\">
<div class=\"category-icon-wrapper\">
<i class=\"lnr lnr-store\" style=\"font-size: 3rem;\"></i>
<h4 class=\"mt-3\">";
// line 2843
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "name", [], "any", false, false, false, 2843), "html", null, true);
yield "</h4>
";
// line 2844
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2844)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2845
yield " <p class=\"mt-2 px-3\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2845)), 0, 100), "html", null, true);
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2845))) > 100)) {
yield "...";
}
yield "</p>
";
}
// line 2847
yield " </div>
</div>
</div>
</div>
<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
<h5 class=\"mb-2\">";
// line 2852
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "name", [], "any", false, false, false, 2852), "html", null, true);
yield "</h5>
";
// line 2853
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2853)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2854
yield " <p class=\"text-muted mb-3 small\">";
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::slice($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2854)), 0, 80), "html", null, true);
if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), Twig\Extension\CoreExtension::striptags(CoreExtension::getAttribute($this->env, $this->source, $context["shopCategory"], "description", [], "any", false, false, false, 2854))) > 80)) {
yield "...";
}
yield "</p>
";
}
// line 2856
yield " <span class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
Voir les boutiques <i class=\"lnr lnr-arrow-right ms-2\"></i>
</span>
</div>
</div>
</a>
</div>
`;
container.insertAdjacentHTML('beforeend', shopCategoryHtml ";
// line 2864
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "index", [], "any", false, false, false, 2864), "html", null, true);
yield ");";
}
++$context['loop']['index0'];
++$context['loop']['index'];
$context['loop']['first'] = false;
if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) {
--$context['loop']['revindex0'];
--$context['loop']['revindex'];
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
}
}
$_parent = $context['_parent'];
unset($context['_seq'], $context['_key'], $context['shopCategory'], $context['_parent'], $context['loop']);
$context = array_intersect_key($context, $_parent) + $_parent;
}
yield "if (btn)
btn.style.display = 'none';
}
// Initialiser les carousels
\$(document).ready(function () { // Carousel bannière principale
if (\$('.active-banner-slider').length) {
\$('.active-banner-slider').owlCarousel({
items: 1,
loop: true,
autoplay: true,
autoplayTimeout: 6000,
autoplayHoverPause: true,
nav: true,
dots: true,
navText: [
'<i class=\"lnr lnr-chevron-left\"></i>', '<i class=\"lnr lnr-chevron-right\"></i>'
],
smartSpeed: 1000,
animateOut: 'fadeOut',
animateIn: 'fadeIn',
responsive: {
0: {
items: 1,
nav: true,
dots: true
},
768: {
items: 1,
nav: true,
dots: true
},
992: {
items: 1,
nav: true,
dots: true
}
}
});
}
// Animation d'apparition pour les cartes produits
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const productObserver = new IntersectionObserver(function (entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
document.querySelectorAll('.product-card-modern').forEach((card, index) => {
card.style.opacity = '0';
card.style.transform = 'translateY(20px)';
card.style.transition = `opacity 0.6s ease \${
index * 0.1
}s, transform 0.6s ease \${
index * 0.1
}s`;
productObserver.observe(card);
});
});
\t</script>
\t<!-- Modal \"Prêt à commencer ?\" -->
\t<div class=\"modal fade\" id=\"readyModal\" tabindex=\"-1\">
\t\t<div class=\"modal-dialog modal-dialog-centered\">
\t\t\t<div class=\"modal-content\">
\t\t\t\t<div class=\"modal-header\">
\t\t\t\t\t<h5 class=\"modal-title\">
\t\t\t\t\t\t<i class=\"lnr lnr-rocket me-2\"></i>Prêt à commencer ?
\t\t\t\t\t</h5>
\t\t\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\"></button>
\t\t\t\t</div>
\t\t\t\t<div class=\"modal-body\">
\t\t\t\t\t";
// line 2947
if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, ($context["app"] ?? null), "user", [], "any", false, false, false, 2947)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) {
// line 2948
yield "\t\t\t\t\t\t";
if ((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, ($context["app"] ?? null), "user", [], "any", false, false, false, 2948), "kycStatus", [], "any", false, false, false, 2948) == "approved")) {
// line 2949
yield "\t\t\t\t\t\t\t<div class=\"text-center\">
\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\" style=\"font-size: 4rem; color: #28a745;\"></i>
\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">Votre compte est vérifié !</h4>
\t\t\t\t\t\t\t\t<p class=\"text-muted\">Vous pouvez commencer à utiliser MaketOu en toute sérénité.</p>
\t\t\t\t\t\t\t\t<div class=\"mt-4\">
\t\t\t\t\t\t\t\t\t<a href=\"";
// line 2954
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("seller_index");
yield "\" class=\"btn btn-primary me-2\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store me-1\"></i>Ouvrir ma boutique
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t<a href=\"";
// line 2957
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_listing");
yield "\" class=\"btn btn-outline-primary\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-magnifier me-1\"></i>Voir les produits
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
} else {
// line 2963
yield "\t\t\t\t\t\t\t<div class=\"text-center\">
\t\t\t\t\t\t\t\t<i class=\"lnr lnr-shield\" style=\"font-size: 4rem; color: #ffa200;\"></i>
\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">Vérification requise</h4>
\t\t\t\t\t\t\t\t<p class=\"text-muted\">Pour utiliser toutes les fonctionnalités de MaketOu, vous devez compléter votre vérification KYC.</p>
\t\t\t\t\t\t\t\t<div class=\"mt-4\">
\t\t\t\t\t\t\t\t\t<a href=\"";
// line 2968
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_account_kyc");
yield "\" class=\"btn btn-primary btn-lg\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle me-1\"></i> <span class=\"d-none d-md-inline\">Commencer la vérification</span>
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t";
}
// line 2974
yield "\t\t\t\t\t";
} else {
// line 2975
yield "\t\t\t\t\t\t<div class=\"text-center\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-user\" style=\"font-size: 4rem; color: #007bff;\"></i>
\t\t\t\t\t\t\t<h4 class=\"mt-3\">Connectez-vous pour commencer</h4>
\t\t\t\t\t\t\t<p class=\"text-muted\">Créez un compte ou connectez-vous pour accéder à toutes les fonctionnalités de MaketOu.</p>
\t\t\t\t\t\t\t<div class=\"mt-4\">
\t\t\t\t\t\t\t\t<a href=\"";
// line 2980
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_app_login");
yield "\" class=\"btn btn-primary btn-lg me-2\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-enter me-1\"></i>Se connecter
\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t<a href=\"";
// line 2983
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("ui_app_register");
yield "\" class=\"btn btn-outline-primary btn-lg\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-user-plus me-1\"></i>S'inscrire
\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t";
}
// line 2989
yield "\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</div>
";
$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "home/index.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 3815 => 2989, 3806 => 2983, 3800 => 2980, 3793 => 2975, 3790 => 2974, 3781 => 2968, 3774 => 2963, 3765 => 2957, 3759 => 2954, 3752 => 2949, 3749 => 2948, 3747 => 2947, 3646 => 2864, 3636 => 2856, 3627 => 2854, 3625 => 2853, 3621 => 2852, 3614 => 2847, 3605 => 2845, 3603 => 2844, 3599 => 2843, 3588 => 2839, 3580 => 2836, 3556 => 2834, 3528 => 2824, 3517 => 2817, 3508 => 2815, 3506 => 2814, 3502 => 2813, 3493 => 2807, 3482 => 2803, 3456 => 2799, 3396 => 2742, 3234 => 2582, 3225 => 2581, 3185 => 2580, 3183 => 2579, 3179 => 2578, 3177 => 2577, 3173 => 2575, 3164 => 2574, 3124 => 2573, 3122 => 2572, 3118 => 2571, 3116 => 2570, 3089 => 2546, 3084 => 2543, 3071 => 2542, 3052 => 2533, 3039 => 2523, 2909 => 2395, 2901 => 2389, 2886 => 2387, 2884 => 2386, 2881 => 2385, 2864 => 2384, 2853 => 2375, 2851 => 2374, 2848 => 2373, 2842 => 2369, 2828 => 2361, 2824 => 2360, 2820 => 2358, 2816 => 2356, 2808 => 2354, 2806 => 2353, 2797 => 2349, 2792 => 2346, 2788 => 2344, 2786 => 2343, 2781 => 2342, 2779 => 2341, 2775 => 2339, 2771 => 2338, 2762 => 2331, 2760 => 2330, 2757 => 2329, 2746 => 2321, 2721 => 2298, 2706 => 2296, 2704 => 2295, 2701 => 2294, 2684 => 2293, 2672 => 2283, 2670 => 2282, 2666 => 2280, 2655 => 2272, 2630 => 2249, 2615 => 2247, 2613 => 2246, 2610 => 2245, 2593 => 2244, 2581 => 2234, 2579 => 2233, 2575 => 2231, 2570 => 2228, 2563 => 2224, 2558 => 2221, 2556 => 2220, 2553 => 2219, 2531 => 2210, 2527 => 2208, 2522 => 2206, 2517 => 2205, 2515 => 2204, 2511 => 2203, 2504 => 2198, 2500 => 2196, 2495 => 2194, 2490 => 2193, 2488 => 2192, 2484 => 2191, 2473 => 2187, 2465 => 2184, 2462 => 2183, 2445 => 2182, 2436 => 2175, 2434 => 2174, 2430 => 2172, 2424 => 2168, 2402 => 2161, 2398 => 2159, 2393 => 2157, 2388 => 2156, 2386 => 2155, 2382 => 2154, 2373 => 2148, 2362 => 2144, 2357 => 2141, 2340 => 2140, 2331 => 2133, 2329 => 2132, 2324 => 2129, 2306 => 2113, 2300 => 2109, 2279 => 2101, 2271 => 2099, 2263 => 2097, 2261 => 2096, 2253 => 2090, 2247 => 2087, 2241 => 2085, 2239 => 2084, 2230 => 2078, 2223 => 2074, 2216 => 2070, 2211 => 2068, 2199 => 2058, 2182 => 2057, 2178 => 2055, 2176 => 2054, 2172 => 2052, 2159 => 2051, 453 => 355, 103 => 7, 90 => 6, 66 => 3, 43 => 1,);
}
public function getSourceContext(): Source
{
return new Source("{% extends 'base_home.html.twig' %}
{% block title %}Accueil | MaketOu - Votre marketplace haïtienne
{% endblock %}
{% block stylesheets %}
\t<style>
\t\t/* Styles personnalisés pour la page d'accueil */
\t\t.hero-banner {
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tpadding: 100px 0;
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.hero-banner::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\tright: 0;
\t\t\tbottom: 0;
\t\t\tbackground: url('data:image/svg+xml, <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><defs><pattern id=\"grain\" width=\"100\" height=\"100\" patternUnits=\"userSpaceOnUse\"><circle cx=\"25\" cy=\"25\" r=\"1\" fill=\"rgba(255, 255, 255, 0.1)\"/><circle cx=\"75\" cy=\"75\" r=\"1\" fill=\"rgba(255, 255, 255, 0.1)\"/><circle cx=\"50\" cy=\"10\" r=\"0.5\" fill=\"rgba(255, 255, 255, 0.1)\"/><circle cx=\"10\" cy=\"90\" r=\"0.5\" fill=\"rgba(255, 255, 255, 0.1)\"/></pattern></defs><rect width=\"100\" height=\"100\" fill=\"url(%23grain)\"/></svg>');
\t\t\topacity: 0.3;
\t\t}
\t\t.hero-content {
\t\t\tposition: relative;
\t\t\tz-index: 2;
\t\t}
\t\t.stats-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\tpadding: 30px;
\t\t\ttext-align: center;
\t\t\tbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.stats-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t}
\t\t.stats-number {
\t\t\tfont-size: 3rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #ffa200;
\t\t\tdisplay: block;
\t\t}
\t\t.stats-label {
\t\t\tcolor: #666;
\t\t\tfont-size: 1.1rem;
\t\t\tmargin-top: 10px;
\t\t}
\t\t.category-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.category-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.category-image {
\t\t\theight: 200px;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\tposition: relative;
\t\t}
\t\t.category-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\tright: 0;
\t\t\tbottom: 0;
\t\t\tbackground: linear-gradient(45deg, rgba(255,162,0,0.8), rgba(232,145,10,0.8));
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t}
\t\t.category-card:hover .category-overlay {
\t\t\topacity: 1;
\t\t}
\t\t.product-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.product-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.product-image {
\t\t\theight: 250px;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\tposition: relative;
\t\t}
\t\t.product-badge {
\t\t\tposition: absolute;
\t\t\ttop: 15px;
\t\t\tright: 15px;
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\tpadding: 5px 10px;
\t\t\tborder-radius: 20px;
\t\t\tfont-size: 0.8rem;
\t\t\tfont-weight: bold;
\t\t}
\t\t.product-info {
\t\t\tpadding: 20px;
\t\t}
\t\t.product-title {
\t\t\tfont-size: 1.2rem;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 10px;
\t\t\tcolor: #333;
\t\t}
\t\t.product-price {
\t\t\tfont-size: 1.5rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 10px;
\t\t}
\t\t.product-shop {
\t\t\tfont-size: 0.9rem;
\t\t\tcolor: #666;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.btn-primary-custom {
\t\t\tbackground: #ffa200;
\t\t\tborder: none;
\t\t\tcolor: white;
\t\t\tpadding: 12px 30px;
\t\t\tborder-radius: 25px;
\t\t\tfont-weight: 500;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.btn-primary-custom:hover {
\t\t\tbackground: #e8910a;
\t\t\ttransform: translateY(-2px);
\t\t\tbox-shadow: 0 5px 15px rgba(255, 162, 0, 0.3);
\t\t}
\t\t.section-title {
\t\t\ttext-align: center;
\t\t\tmargin-bottom: 50px;
\t\t}
\t\t.section-title h2 {
\t\t\tfont-size: 2.5rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #333;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.section-title p {
\t\t\tfont-size: 1.2rem;
\t\t\tcolor: #666;
\t\t\tmax-width: 600px;
\t\t\tmargin: 0 auto;
\t\t}
\t\t.feature-card {
\t\t\ttext-align: center;
\t\t\tpadding: 30px 20px;
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.feature-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.feature-icon {
\t\t\twidth: 80px;
\t\t\theight: 80px;
\t\t\tbackground: linear-gradient(135deg, #ffa200, #e8910a);
\t\t\tborder-radius: 50%;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tmargin: 0 auto 20px;
\t\t\tfont-size: 2rem;
\t\t\tcolor: white;
\t\t}
\t\t.newsletter-section {
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tpadding: 80px 0;
\t\t}
\t\t.newsletter-form {
\t\t\tmax-width: 500px;
\t\t\tmargin: 0 auto;
\t\t}
\t\t.newsletter-form .form-control {
\t\t\tborder: none;
\t\t\tborder-radius: 25px;
\t\t\tpadding: 15px 25px;
\t\t\tfont-size: 1.1rem;
\t\t}
\t\t.newsletter-form .btn {
\t\t\tborder-radius: 25px;
\t\t\tpadding: 15px 30px;
\t\t\tfont-weight: 500;
\t\t}
\t\t/* Responsive Styles */
\t\t@media(max-width: 991.98px) {
\t\t\t.hero-banner {
\t\t\t\tpadding: 60px 0;
\t\t\t}
\t\t\t.stats-number {
\t\t\t\tfont-size: 2.5rem;
\t\t\t}
\t\t\t.section-title h2 {
\t\t\t\tfont-size: 2rem;
\t\t\t}
\t\t\t
\t\t\t.stats-card {
\t\t\t\tmargin-bottom: 1.5rem;
\t\t\t}
\t\t}
\t\t@media(max-width: 767.98px) {
\t\t\t.hero-banner {
\t\t\t\tpadding: 40px 0;
\t\t\t}
\t\t\t.hero-content h1 {
\t\t\t\tfont-size: 1.75rem;
\t\t\t}
\t\t\t.stats-number {
\t\t\t\tfont-size: 2rem;
\t\t\t}
\t\t\t.stats-label {
\t\t\t\tfont-size: 0.9rem;
\t\t\t}
\t\t\t.section-title h2 {
\t\t\t\tfont-size: 1.75rem;
\t\t\t}
\t\t\t.section-title p {
\t\t\t\tfont-size: 1rem;
\t\t\t}
\t\t\t
\t\t\t.category-card,
\t\t\t.product-card {
\t\t\t\tmargin-bottom: 1.5rem;
\t\t\t}
\t\t\t
\t\t\t.category-image {
\t\t\t\theight: 150px;
\t\t\t}
\t\t\t
\t\t\t.product-image {
\t\t\t\theight: 200px;
\t\t\t}
\t\t\t
\t\t\t.feature-card {
\t\t\t\tmargin-bottom: 1.5rem;
\t\t\t}
\t\t\t
\t\t\t.newsletter-section {
\t\t\t\tpadding: 40px 0;
\t\t\t}
\t\t}
\t\t@media(max-width: 575.98px) {
\t\t\t.hero-banner {
\t\t\t\tpadding: 30px 0;
\t\t\t}
\t\t\t.hero-content h1 {
\t\t\t\tfont-size: 1.5rem;
\t\t\t}
\t\t\t.stats-card {
\t\t\t\tpadding: 1.5rem;
\t\t\t}
\t\t\t.stats-number {
\t\t\t\tfont-size: 1.75rem;
\t\t\t}
\t\t\t.section-title h2 {
\t\t\t\tfont-size: 1.5rem;
\t\t\t}
\t\t\t
\t\t\t.category-image {
\t\t\t\theight: 120px;
\t\t\t}
\t\t\t
\t\t\t.product-image {
\t\t\t\theight: 180px;
\t\t\t}
\t\t\t
\t\t\t.product-info {
\t\t\t\tpadding: 1rem;
\t\t\t}
\t\t\t
\t\t\t.product-title {
\t\t\t\tfont-size: 1rem;
\t\t\t}
\t\t\t
\t\t\t.product-price {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t}
\t\t/* Styles modernes pour le carousel de bannière */
\t\t.banner-area-modern {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\tmin-height: 500px;
\t\t\tbackground: url('{{ asset('ui/img/banner/banner-bg.jpg') }}') center center no-repeat;
\t\t\tbackground-size: cover;
\t\t\toverflow: hidden;
\t\t\tpadding: 60px 0;
\t\t}
\t\t.banner-area-modern::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.1);
\t\t\tz-index: 1;
\t\t}
\t\t.banner-carousel-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tz-index: 2;
\t\t}
\t\t.banner-slide-item {
\t\t\tmin-height: 500px;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tpadding: 40px 0;
\t\t}
\t\t.banner-content-modern {
\t\t\tposition: relative;
\t\t\tz-index: 2;
\t\t\tpadding: 30px;
\t\t\tbackground: rgba(255, 255, 255, 0.98);
\t\t\tborder-radius: 20px;
\t\t\tbox-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
\t\t\tbackdrop-filter: blur(10px);
\t\t\tanimation: fadeInUp 0.8s ease;
\t\t}
\t\t@keyframes fadeInUp {
\t\t\tfrom {
\t\t\t\topacity: 0;
\t\t\t\ttransform: translateY(30px);
\t\t\t}
\t\t\tto {
\t\t\t\topacity: 1;
\t\t\t\ttransform: translateY(0);
\t\t\t}
\t\t}
\t\t.banner-badge {
\t\t\tdisplay: inline-block;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 8px 20px;
\t\t\tborder-radius: 50px;
\t\t\tfont-size: 0.85rem;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 20px;
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.banner-badge i {
\t\t\tmargin-right: 5px;
\t\t}
\t\t.banner-title-modern {
\t\t\tfont-size: 2.0rem;
\t\t\tfont-weight: 600;
\t\t\tcolor: #2c3e50;
\t\t\tmargin-bottom: 20px;
\t\t\tline-height: 1.2;
\t\t\tbackground: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
\t\t\t-webkit-background-clip: text;
\t\t\t-webkit-text-fill-color: transparent;
\t\t\tbackground-clip: text;
\t\t}
\t\t.banner-description-modern {
\t\t\tfont-size: 1.1rem;
\t\t\tcolor: #555;
\t\t\tline-height: 1.8;
\t\t\tmargin-bottom: 25px;
\t\t}
\t\t.banner-price-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 15px;
\t\t\tmargin-bottom: 30px;
\t\t\tpadding: 15px 20px;
\t\t\tbackground: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
\t\t\tborder-radius: 12px;
\t\t\tborder-left: 4px solid #ffa200;
\t\t}
\t\t.banner-price-modern .price-label {
\t\t\tfont-size: 0.9rem;
\t\t\tcolor: #666;
\t\t\tfont-weight: 600;
\t\t\ttext-transform: uppercase;
\t\t\tletter-spacing: 1px;
\t\t}
\t\t.banner-price-modern .price-value {
\t\t\tfont-size: 1.2rem;
\t\t\tfont-weight: 600;
\t\t\tcolor: #ffa200;
\t\t}
\t\t.banner-actions-modern {
\t\t\tdisplay: flex;
\t\t\tgap: 15px;
\t\t\tflex-wrap: wrap;
\t\t}
\t\t.btn-banner-primary {
\t\t\tdisplay: inline-flex;
\t\t\talign-items: center;
\t\t\tgap: 10px;
\t\t\tpadding: 15px 35px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\ttext-decoration: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1rem;
\t\t\ttransition: all 0.3s ease;
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.btn-banner-primary:hover {
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.6);
\t\t\tcolor: white;
\t\t}
\t\t.btn-banner-primary .btn-icon {
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.btn-banner-primary:hover .btn-icon {
\t\t\ttransform: translateX(5px);
\t\t}
\t\t.btn-banner-secondary {
\t\t\tdisplay: inline-flex;
\t\t\talign-items: center;
\t\t\tgap: 8px;
\t\t\tpadding: 15px 25px;
\t\t\tbackground: white;
\t\t\tcolor: #667eea;
\t\t\ttext-decoration: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 0.95rem;
\t\t\tborder: 2px solid #667eea;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.btn-banner-secondary:hover {
\t\t\tbackground: #667eea;
\t\t\tcolor: white;
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
\t\t}
\t\t.banner-image-modern {
\t\t\tposition: relative;
\t\t\theight: 450px;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t}
\t\t.banner-image-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tborder-radius: 20px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
\t\t\tbackground: white;
\t\t\tpadding: 20px;
\t\t}
\t\t.banner-img {
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tobject-fit: contain;
\t\t\tborder-radius: 15px;
\t\t\ttransition: transform 0.5s ease;
\t\t}
\t\t.banner-slide-item:hover .banner-img {
\t\t\ttransform: scale(1.05);
\t\t}
\t\t.banner-image-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);
\t\t\tborder-radius: 15px;
\t\t\tpointer-events: none;
\t\t}
\t\t/* Styles pour Owl Carousel */
\t\t.banner-area-modern .owl-nav {
\t\t\tposition: absolute;
\t\t\ttop: 50%;
\t\t\ttransform: translateY(-50%);
\t\t\twidth: 100%;
\t\t\tdisplay: flex;
\t\t\tjustify-content: space-between;
\t\t\talign-items: center;
\t\t\tpadding: 0 20px;
\t\t\tpointer-events: none;
\t\t\tz-index: 10;
\t\t\tleft: 0;
\t\t\tright: 0;
\t\t\tbox-sizing: border-box;
\t\t}
\t\t.banner-area-modern .owl-nav button {
\t\t\twidth: 60px;
\t\t\theight: 60px;
\t\t\tmin-width: 60px;
\t\t\tmin-height: 60px;
\t\t\tbackground: #ffa200 !important;
\t\t\tborder-radius: 50% !important;
\t\t\tdisplay: flex !important;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tcolor: white !important;
\t\t\tfont-size: 24px !important;
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.4);
\t\t\ttransition: all 0.3s ease;
\t\t\tpointer-events: all;
\t\t\tborder: none !important;
\t\t\tposition: relative;
\t\t\tflex-shrink: 0;
\t\t\tmargin: 0;
\t\t\tpadding: 0;
\t\t\tline-height: 1;
\t\t}
\t\t.banner-area-modern .owl-nav button.owl-prev {
\t\t\tmargin-right: auto;
\t\t}
\t\t.banner-area-modern .owl-nav button.owl-next {
\t\t\tmargin-left: auto;
\t\t}
\t\t.banner-area-modern .owl-nav button:hover {
\t\t\tbackground: #ff6b00 !important;
\t\t\tcolor: white !important;
\t\t\ttransform: scale(1.1);
\t\t\tbox-shadow: 0 6px 20px rgba(255, 162, 0, 0.6);
\t\t}
\t\t.banner-area-modern .owl-nav button.disabled {
\t\t\topacity: 0.5;
\t\t\tcursor: not-allowed;
\t\t}
\t\t.banner-area-modern .owl-nav button.disabled:hover {
\t\t\ttransform: scale(1);
\t\t}
\t\t.banner-area-modern .owl-dots {
\t\t\tposition: absolute;
\t\t\tbottom: 30px;
\t\t\tleft: 50%;
\t\t\ttransform: translateX(-50%);
\t\t\tdisplay: flex;
\t\t\tgap: 10px;
\t\t\tz-index: 10;
\t\t}
\t\t.banner-area-modern .owl-dots button {
\t\t\twidth: 12px;
\t\t\theight: 12px;
\t\t\tborder-radius: 50%;
\t\t\tbackground: rgba(255, 255, 255, 0.6) !important;
\t\t\tborder: 2px solid white !important;
\t\t\ttransition: all 0.3s ease;
\t\t\tmargin: 0 5px;
\t\t}
\t\t.banner-area-modern .owl-dots button.active {
\t\t\tbackground: #ffa200 !important;
\t\t\tborder-color: #ffa200 !important;
\t\t\twidth: 30px;
\t\t\tborder-radius: 6px;
\t\t}
\t\t/* Responsive */
\t\t@media(max-width: 992px) {
\t\t\t.banner-area-modern {
\t\t\t\tmin-height: 450px;
\t\t\t\tpadding: 40px 0;
\t\t\t\tbackground-size: cover;
\t\t\t\tbackground-position: center;
\t\t\t}
\t\t\t.banner-slide-item {
\t\t\t\tmin-height: 450px;
\t\t\t\tpadding: 30px 0;
\t\t\t}
\t\t\t.banner-title-modern {
\t\t\t\tfont-size: 1.5rem;
\t\t\t}
\t\t\t.banner-description-modern {
\t\t\t\tfont-size: 1rem;
\t\t\t}
\t\t\t.banner-image-modern {
\t\t\t\theight: 350px;
\t\t\t\tmargin-top: 30px;
\t\t\t}
\t\t\t.banner-content-modern {
\t\t\t\tpadding: 25px;
\t\t\t}
\t\t}
\t\t@media(max-width: 768px) {
\t\t\t.banner-area-modern {
\t\t\t\tmin-height: 400px;
\t\t\t\tpadding: 30px 0;
\t\t\t\tbackground-size: cover;
\t\t\t\tbackground-position: center;
\t\t\t}
\t\t\t.banner-slide-item {
\t\t\t\tmin-height: 400px;
\t\t\t\tpadding: 20px 0;
\t\t\t}
\t\t\t.banner-title-modern {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t\t.banner-description-modern {
\t\t\t\tfont-size: 0.95rem;
\t\t\t}
\t\t\t.banner-image-modern {
\t\t\t\theight: 280px;
\t\t\t\tmargin-top: 20px;
\t\t\t}
\t\t\t.banner-content-modern {
\t\t\t\tpadding: 20px;
\t\t\t}
\t\t\t.banner-price-modern .price-value {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t\t.banner-actions-modern {
\t\t\t\tflex-direction: column;
\t\t\t}
\t\t\t.btn-banner-primary,
\t\t\t.btn-banner-secondary {
\t\t\t\twidth: 100%;
\t\t\t\tjustify-content: center;
\t\t\t}
\t\t\t.banner-area-modern .owl-nav button {
\t\t\t\twidth: 50px;
\t\t\t\theight: 50px;
\t\t\t\tmin-width: 50px;
\t\t\t\tmin-height: 50px;
\t\t\t\tfont-size: 20px !important;
\t\t\t\tbackground: #ffa200 !important;
\t\t\t}
\t\t\t.banner-area-modern .owl-nav button:hover {
\t\t\t\tbackground: #ff6b00 !important;
\t\t\t}
\t\t}
\t\t@media(max-width: 576px) {
\t\t\t.banner-area-modern {
\t\t\t\tmin-height: 350px;
\t\t\t\tpadding: 0;
\t\t\t\tbackground-size: cover;
\t\t\t\tbackground-position: center;
\t\t\t}
\t\t\t.banner-slide-item {
\t\t\t\tmin-height: 350px;
\t\t\t}
\t\t\t.banner-title-modern {
\t\t\t\tfont-size: 1.25rem;
\t\t\t}
\t\t\t.banner-image-modern {
\t\t\t\theight: 220px;
\t\t\t}
\t\t\t.banner-content-modern {
\t\t\t\tpadding: 15px;
\t\t\t}
\t\t}
\t\t/* Styles pour les catégories de boutiques cliquables */
\t\t.shop-category-clickable {
\t\t\tcursor: pointer;
\t\t\ttransition: all 0.3s ease;
\t\t\theight: 100%;
\t\t}
\t\t.shop-category-clickable:hover {
\t\t\ttransform: translateY(-10px);
\t\t\tbox-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.shop-category-clickable:hover .category-image {
\t\t\ttransform: scale(1.1);
\t\t}
\t\t.shop-category-clickable:hover .btn-primary-custom {
\t\t\tbackground: #e8910a;
\t\t\ttransform: translateX(5px);
\t\t}
\t\t/* Styles pour les cartes de catégories personnalisées */
\t\t.category-card-custom {
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
\t\t\ttransition: transform 0.3s ease, box-shadow 0.3s ease;
\t\t\tbackground: white;
\t\t\theight: 100%;
\t\t}
\t\t.category-card-custom:hover {
\t\t\ttransform: translateY(-10px);
\t\t\tbox-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
\t\t}
\t\t.category-image-wrapper {
\t\t\tposition: relative;
\t\t\theight: 200px;
\t\t\toverflow: hidden;
\t\t}
\t\t.category-image {
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.category-card-custom:hover .category-image {
\t\t\ttransform: scale(1.1);
\t\t}
\t\t.category-overlay-custom {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.6);
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t\tcolor: white;
\t\t}
\t\t.category-card-custom:hover .category-overlay-custom {
\t\t\topacity: 1;
\t\t}
\t\t.category-icon-wrapper {
\t\t\ttext-align: center;
\t\t}
\t\t.category-icon-wrapper i {
\t\t\tcolor: #ffa200;
\t\t\tdisplay: block;
\t\t}
\t\t.category-icon-wrapper h4 {
\t\t\tcolor: white;
\t\t\tmargin-top: 10px;
\t\t}
\t\t/* Styles pour la galerie de produits en vedette */
\t\t.featured-products-carousel-section {
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.featured-gallery-wrapper {
\t\t\tposition: relative;
\t\t\tmax-width: 1400px;
\t\t\tmargin: 0 auto;
\t\t\tpadding: 0 15px;
\t\t}
\t\t.featured-gallery-container {
\t\t\tposition: relative;
\t\t\toverflow: visible;
\t\t\tborder-radius: 12px;
\t\t}
\t\t.featured-gallery-grid {
\t\t\tdisplay: flex;
\t\t\tgap: 30px; /* Même espacement que dans listing (margin entre col-lg-4) */
\t\t\tpadding: 10px 0;
\t\t\toverflow-x: auto;
\t\t\toverflow-y: hidden;
\t\t\tscroll-behavior: smooth;
\t\t\tscrollbar-width: none; /* Firefox */
\t\t\t-ms-overflow-style: none; /* IE/Edge */
\t\t\t-webkit-overflow-scrolling: touch; /* iOS smooth scroll */
\t\t\twill-change: scroll-position;
\t\t}
\t\t.featured-gallery-grid::-webkit-scrollbar {
\t\t\tdisplay: none; /* Chrome/Safari */
\t\t}
\t\t/* Mode OwlCarousel */
\t\t.featured-gallery-grid.owl-carousel {
\t\t\tdisplay: block;
\t\t\toverflow: hidden;
\t\t\tpadding: 25px 0;
\t\t}
\t\t.featured-gallery-grid.owl-carousel .owl-stage-outer {
\t\t\toverflow: visible;
\t\t}
\t\t.featured-gallery-grid.owl-carousel .featured-gallery-item {
\t\t\topacity: 1;
\t\t\ttransform: none;
\t\t\twidth: auto;
\t\t\tmax-width: none;
\t\t\tmargin: 0 15px;
\t\t}
\t\t.featured-gallery-grid.owl-carousel .owl-stage {
\t\t\tdisplay: flex;
\t\t}
\t\t.featured-gallery-item {
\t\t\tflex: 0 0 auto; /* Largeur automatique basée sur le contenu */
\t\t\twidth: 100%;
\t\t\tmax-width: 100%;
\t\t\topacity: 0;
\t\t\ttransform: translateY(20px) scale(0.95);
\t\t\tanimation: galleryItemFadeIn 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
\t\t\tanimation-delay: calc(var(--item-index, 0) * 0.05s);
\t\t}
\t\t/* Utiliser la même largeur que dans listing (col-lg-4 = ~33.33%) */
\t\t@media(min-width: 992px) {
\t\t\t.featured-gallery-item {
\t\t\t\tflex: 0 0 33.333333%;
\t\t\t\tmax-width: 25%;
\t\t\t}
\t\t}
\t\t@media(min-width: 768px) and(max-width: 991px) {
\t\t\t.featured-gallery-item {
\t\t\t\tflex: 0 0 50%;
\t\t\t\tmax-width: 50%;
\t\t\t}
\t\t}
\t\t@media(max-width: 767px) {
\t\t\t.featured-gallery-item {
\t\t\t\tflex: 0 0 100%;
\t\t\t\tmax-width: 100%;
\t\t\t}
\t\t}
\t\t/* Ajustements minimaux pour single-product dans le carrousel - utiliser les styles de main.css */
\t\t.featured-gallery-item .single-product {
\t\t\tmargin-bottom: 0; /* Override main.css margin-bottom: 50px */
\t\t\tmin-height: 480px;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\tpadding: 20px;
\t\t\tbackground: #fff;
\t\t\tborder-radius: 12px;
\t\t\tbox-shadow: 0 10px 30px rgba(15, 34, 58, 0.08);
\t\t\ttransition: transform 0.25s ease, box-shadow 0.25s ease;
\t\t}
\t\t.featured-gallery-item .single-product:hover {
\t\t\ttransform: translateY(-4px);
\t\t\tbox-shadow: 0 18px 40px rgba(15, 34, 58, 0.12);
\t\t}
\t\t/* S'assurer que les images s'affichent correctement - styles identiques à listing.html.twig */
\t\t.featured-gallery-item .single-product img {
\t\t\tmargin-bottom: 20px;
\t\t\twidth: 100%;
\t\t}
\t\t/* Styles pour product-image-container - identiques à listing.html.twig */
\t\t.featured-gallery-item .product-image-container {
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t\tborder-radius: 10px;
\t\t\theight: 260px;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tbackground: #f7f7fb;
\t\t\tmargin-bottom: 18px;
\t\t}
\t\t.featured-gallery-item .product-image-container:hover .main-product-img {
\t\t\ttransform: scale(1.05);
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.featured-gallery-item .product-image-container a {
\t\t\tdisplay: block;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t}
\t\t.featured-gallery-item .main-product-img {
\t\t\ttransition: transform 0.3s ease;
\t\t\twidth: 100% !important;
\t\t\theight: 100% !important;
\t\t\tobject-fit: cover;
\t\t\tobject-position: center;
\t\t\tdisplay: block;
\t\t\twill-change: transform, opacity;
\t\t}
\t\t.featured-gallery-item .main-product-img.image-fade {
\t\t\tanimation: imageFade 0.5s ease;
\t\t}
\t\t@keyframes imageFade {
\t\t\tfrom {
\t\t\t\topacity: 0;
\t\t\t\ttransform: scale(1.02);
\t\t\t}
\t\t\tto {
\t\t\t\topacity: 1;
\t\t\t\ttransform: scale(1);
\t\t\t}
\t\t}
\t\t.featured-gallery-item .product-details {
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\theight: 100%;
\t\t}
\t\t.featured-gallery-item .prd-bottom {
\t\t\tmargin-top: auto;
\t\t}
\t\t/* Styles pour img-nav-btn - identiques à listing.html.twig */
\t\t.featured-gallery-item .img-nav-btn {
\t\t\tposition: absolute;
\t\t\ttop: 50%;
\t\t\ttransform: translateY(-50%);
\t\t\tbackground: rgba(0, 0, 0, 0.6);
\t\t\tcolor: white;
\t\t\tborder: none;
\t\t\twidth: 35px;
\t\t\theight: 35px;
\t\t\tborder-radius: 50%;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\tcursor: pointer;
\t\t\ttransition: all 0.3s ease;
\t\t\tz-index: 10;
\t\t}
\t\t.featured-gallery-item .img-nav-btn:hover {
\t\t\tbackground: #095ad3;
\t\t\ttransform: translateY(-50%) scale(1.1);
\t\t}
\t\t.featured-gallery-item .img-nav-left {
\t\t\tleft: 10px;
\t\t}
\t\t.featured-gallery-item .img-nav-right {
\t\t\tright: 10px;
\t\t}
\t\t.featured-gallery-item .img-indicators {
\t\t\tposition: absolute;
\t\t\tbottom: 10px;
\t\t\tleft: 50%;
\t\t\ttransform: translateX(-50%);
\t\t\tdisplay: flex;
\t\t\tgap: 5px;
\t\t\tz-index: 10;
\t\t}
\t\t.featured-gallery-item .indicator {
\t\t\twidth: 8px;
\t\t\theight: 8px;
\t\t\tborder-radius: 50%;
\t\t\tbackground: rgba(255, 255, 255, 0.5);
\t\t\tcursor: pointer;
\t\t\tmargin-bottom: 10px;
\t\t\ttransition: all 0.3s ease;
\t\t\tborder: 1px solid rgba(255, 255, 255, 0.3);
\t\t}
\t\t.featured-gallery-item .indicator.active {
\t\t\tbackground: #ffa200;
\t\t\tborder-color: #ffa200;
\t\t\ttransform: scale(1.2);
\t\t}
\t\t.featured-gallery-item .indicator:hover {
\t\t\tbackground: rgba(255, 255, 255, 0.8);
\t\t}
\t\t/* Styles pour shop-info - identiques à listing.html.twig */
\t\t.featured-gallery-item .shop-info {
\t\t\tmargin: 8px 0;
\t\t\tpadding: 5px 0;
\t\t\tborder-bottom: 1px solid #f0f0f0;
\t\t}
\t\t.featured-gallery-item .shop-link {
\t\t\tcolor: #007bff;
\t\t\ttext-decoration: none;
\t\t\tfont-weight: 500;
\t\t}
\t\t.featured-gallery-item .shop-link:hover {
\t\t\tcolor: #ffa200;
\t\t\ttext-decoration: underline;
\t\t}
\t\t/* Les autres styles (product-details h6, price, prd-bottom, social-info) sont déjà définis dans main.css */
\t\t@keyframes galleryItemFadeIn {
\t\t\tfrom {
\t\t\t\topacity: 0;
\t\t\t\ttransform: translateY(20px) scale(0.95);
\t\t\t}
\t\t\tto {
\t\t\t\topacity: 1;
\t\t\t\ttransform: translateY(0) scale(1);
\t\t\t}
\t\t}
\t\t.featured-gallery-card {
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\theight: 100%;
\t\t\tbackground: white;
\t\t\tborder-radius: 12px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\tborder: 1px solid #f0f0f0;
\t\t}
\t\t.featured-gallery-card:hover {
\t\t\ttransform: translateY(-5px);
\t\t\tbox-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
\t\t\tborder-color: #ffa200;
\t\t}
\t\t.featured-gallery-image-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\tpadding-top: 100%; /* Ratio 1:1 pour une galerie carrée */
\t\t\toverflow: hidden;
\t\t\tbackground: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
\t\t}
\t\t.featured-gallery-image {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\ttransition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
\t\t}
\t\t.featured-gallery-card:hover .featured-gallery-image {
\t\t\ttransform: scale(1.08);
\t\t}
\t\t.featured-gallery-badge {
\t\t\tposition: absolute;
\t\t\ttop: 8px;
\t\t\tleft: 8px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 4px 10px;
\t\t\tborder-radius: 15px;
\t\t\tfont-size: 12px;
\t\t\tfont-weight: 600;
\t\t\tz-index: 2;
\t\t\tbox-shadow: 0 2px 8px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.featured-gallery-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.5);
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t}
\t\t.featured-gallery-card:hover .featured-gallery-overlay {
\t\t\topacity: 1;
\t\t}
\t\t.featured-gallery-view-btn {
\t\t\tbackground: white;
\t\t\tcolor: #333;
\t\t\twidth: 40px;
\t\t\theight: 40px;
\t\t\tborder-radius: 50%;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\ttext-decoration: none;
\t\t\tfont-size: 18px;
\t\t\ttransform: scale(0.8);
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.featured-gallery-card:hover .featured-gallery-view-btn {
\t\t\ttransform: scale(1);
\t\t}
\t\t.featured-gallery-info {
\t\t\tpadding: 12px;
\t\t\tflex: 1;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.featured-gallery-title {
\t\t\tfont-size: 14px;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 6px;
\t\t\tcolor: #333;
\t\t\tline-height: 1.3;
\t\t\tdisplay: -webkit-box;
\t\t\t-webkit-line-clamp: 2;
\t\t\t-webkit-box-orient: vertical;
\t\t\toverflow: hidden;
\t\t\tmin-height: 36px;
\t\t}
\t\t.featured-gallery-title a {
\t\t\tcolor: #333;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.featured-gallery-title a:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.featured-gallery-price {
\t\t\tfont-size: 16px;
\t\t\tfont-weight: 700;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 6px;
\t\t}
\t\t.featured-gallery-rating {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 3px;
\t\t\tfont-size: 11px;
\t\t}
\t\t.featured-gallery-rating .fa-star.active {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.featured-gallery-rating .fa-star-o {
\t\t\tcolor: #ddd;
\t\t}
\t\t.featured-gallery-controls {
\t\t\tdisplay: flex;
\t\t\tjustify-content: center;
\t\t\tgap: 20px;
\t\t\tmargin-top: 25px;
\t\t\tpadding: 0 20px;
\t\t}
\t\t.featured-gallery-nav-btn {
\t\t\twidth: 42px;
\t\t\theight: 42px;
\t\t\tborder-radius: 50%;
\t\t\tborder: 1.5px solid #ffa200;
\t\t\tbackground: white;
\t\t\tcolor: #ffa200;
\t\t\tfont-size: 16px;
\t\t\tcursor: pointer;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\tbox-shadow: 0 3px 10px rgba(255, 162, 0, 0.18);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.featured-gallery-nav-btn.btn-ripple::after {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tleft: 0;
\t\t\ttop: 0;
\t\t\tborder-radius: 50%;
\t\t\tbackground: rgba(255, 162, 0, 0.2);
\t\t\tanimation: rippleEffect 0.35s ease;
\t\t}
\t\t@keyframes rippleEffect {
\t\t\tfrom {
\t\t\t\ttransform: scale(0.6);
\t\t\t\topacity: 0.7;
\t\t\t}
\t\t\tto {
\t\t\t\ttransform: scale(1.4);
\t\t\t\topacity: 0;
\t\t\t}
\t\t}
\t\t.featured-gallery-nav-btn:hover:not(:disabled) {
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\ttransform: scale(1.1);
\t\t\tbox-shadow: 0 5px 18px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.featured-gallery-nav-btn:active:not(:disabled) {
\t\t\ttransform: scale(0.95);
\t\t}
\t\t.featured-gallery-nav-btn:disabled {
\t\t\topacity: 0.3;
\t\t\tcursor: not-allowed;
\t\t}
\t\t.featured-gallery-load-more {
\t\t\tmargin-top: 30px;
\t\t}
\t\t/* Style pour le bouton \"Voir tous les produits\" */
\t\t.btn-view-all-products {
\t\t\tdisplay: inline-flex;
\t\t\talign-items: center;
\t\t\tgap: 12px;
\t\t\tpadding: 16px 40px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\ttext-decoration: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 16px;
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\tbox-shadow: 0 4px 15px rgba(255, 162, 0, 0.3);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.btn-view-all-products::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: -100%;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
\t\t\ttransition: left 0.5s ease;
\t\t}
\t\t.btn-view-all-products:hover::before {
\t\t\tleft: 100%;
\t\t}
\t\t.btn-view-all-products:hover {
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.5);
\t\t\tcolor: white;
\t\t}
\t\t.btn-view-all-products:active {
\t\t\ttransform: translateY(-1px);
\t\t}
\t\t.btn-view-all-products i {
\t\t\tfont-size: 18px;
\t\t\ttransition: transform 0.3s ease;
\t\t}
\t\t.btn-view-all-products:hover i {
\t\t\ttransform: translateX(5px);
\t\t}
\t\t.btn-view-all-products span {
\t\t\tposition: relative;
\t\t\tz-index: 1;
\t\t}
\t\t/* Responsive */
\t\t@media(max-width: 767px) {
\t\t\t.btn-view-all-products {
\t\t\t\tpadding: 14px 30px;
\t\t\t\tfont-size: 14px;
\t\t\t}
\t\t}
\t\t/* Responsive */
\t\t@media(max-width: 767px) {
\t\t\t.featured-gallery-grid {
\t\t\t\tgap: 10px;
\t\t\t}
\t\t\t.featured-gallery-info {
\t\t\t\tpadding: 10px;
\t\t\t}
\t\t\t.featured-gallery-title {
\t\t\t\tfont-size: 13px;
\t\t\t\tmin-height: 32px;
\t\t\t}
\t\t\t.featured-gallery-price {
\t\t\t\tfont-size: 14px;
\t\t\t}
\t\t}
\t\t/* Styles pour les grilles de produits Nouveautés */
\t\t.latest-products-grid {
\t\t\tmargin-top: 30px;
\t\t}
\t\t.product-card-modern {
\t\t\tbackground: white;
\t\t\tborder-radius: 12px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
\t\t\ttransition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\theight: 100%;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\tborder: 1px solid #f0f0f0;
\t\t}
\t\t.product-card-modern:hover {
\t\t\ttransform: translateY(-8px);
\t\t\tbox-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
\t\t\tborder-color: #ffa200;
\t\t}
\t\t.product-image-wrapper {
\t\t\tposition: relative;
\t\t\twidth: 100%;
\t\t\tpadding-top: 75%; /* Ratio 4:3 */
\t\t\toverflow: hidden;
\t\t\tbackground: #f8f9fa;
\t\t}
\t\t.product-image {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\ttransition: transform 0.5s ease;
\t\t}
\t\t.product-card-modern:hover .product-image {
\t\t\ttransform: scale(1.1);
\t\t}
\t\t.product-badge-modern {
\t\t\tposition: absolute;
\t\t\ttop: 10px;
\t\t\tright: 10px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 6px 12px;
\t\t\tborder-radius: 20px;
\t\t\tfont-size: 12px;
\t\t\tfont-weight: 600;
\t\t\tz-index: 2;
\t\t\tbox-shadow: 0 2px 8px rgba(255, 162, 0, 0.3);
\t\t}
\t\t.product-badge-modern.new-badge {
\t\t\tbackground: linear-gradient(135deg, #28a745 0%, #20c997 100%);
\t\t}
\t\t.product-overlay {
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: 0;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: rgba(0, 0, 0, 0.5);
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tjustify-content: center;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t\tz-index: 1;
\t\t}
\t\t.product-card-modern:hover .product-overlay {
\t\t\topacity: 1;
\t\t}
\t\t.btn-view-product {
\t\t\tbackground: white;
\t\t\tcolor: #333;
\t\t\tpadding: 12px 24px;
\t\t\tborder-radius: 25px;
\t\t\ttext-decoration: none;
\t\t\tfont-weight: 600;
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 8px;
\t\t\ttransition: all 0.3s ease;
\t\t\tbox-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
\t\t}
\t\t.btn-view-product:hover {
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\ttransform: scale(1.05);
\t\t}
\t\t.product-info-modern {
\t\t\tpadding: 16px;
\t\t\tflex-grow: 1;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.product-title-modern {
\t\t\tmargin: 0 0 8px;
\t\t\tfont-size: 16px;
\t\t\tfont-weight: 600;
\t\t\tline-height: 1.4;
\t\t}
\t\t.product-title-modern a {
\t\t\tcolor: #333;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.product-title-modern a:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.product-price-modern {
\t\t\tfont-size: 20px;
\t\t\tfont-weight: 700;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 8px;
\t\t}
\t\t.product-shop-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 6px;
\t\t\tfont-size: 13px;
\t\t\tcolor: #666;
\t\t\tmargin-bottom: 8px;
\t\t}
\t\t.product-shop-modern i {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.shop-link {
\t\t\tcolor: #666;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.shop-link:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t.product-rating-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 4px;
\t\t\tmargin-top: auto;
\t\t}
\t\t.product-rating-modern .fa-star.active {
\t\t\tcolor: #ffc107;
\t\t}
\t\t.product-rating-modern .fa-star-o {
\t\t\tcolor: #ddd;
\t\t}
\t\t.rating-count {
\t\t\tfont-size: 12px;
\t\t\tcolor: #666;
\t\t\tmargin-left: 4px;
\t\t}
\t\t.product-views-modern {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 6px;
\t\t\tfont-size: 12px;
\t\t\tcolor: #666;
\t\t\tmargin-top: auto;
\t\t}
\t\t.product-views-modern i {
\t\t\tcolor: #999;
\t\t}
\t\t/* Style des cartes produits */
\t\t.product-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 15px;
\t\t\toverflow: hidden;
\t\t\tbox-shadow: 0 5px 20px rgba(0, 0, 0, 0.1);
\t\t\ttransition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
\t\t\theight: 100%;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.product-card:hover {
\t\t\tbox-shadow: 0 15px 40px rgba(0, 0, 0, 0.2);
\t\t\ttransform: translateY(-5px);
\t\t}
\t\t.product-image {
\t\t\twidth: 100%;
\t\t\theight: 250px;
\t\t\tbackground-size: cover;
\t\t\tbackground-position: center;
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.product-image::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: 0;
\t\t\tleft: -100%;
\t\t\twidth: 100%;
\t\t\theight: 100%;
\t\t\tbackground: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
\t\t\ttransition: left 0.6s ease;
\t\t}
\t\t.product-card:hover .product-image::before {
\t\t\tleft: 100%;
\t\t}
\t\t.product-badge {
\t\t\tposition: absolute;
\t\t\ttop: 15px;
\t\t\tright: 15px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #ff6b00 100%);
\t\t\tcolor: white;
\t\t\tpadding: 8px 15px;
\t\t\tborder-radius: 20px;
\t\t\tfont-size: 0.85rem;
\t\t\tfont-weight: 600;
\t\t\tbox-shadow: 0 4px 10px rgba(255, 162, 0, 0.4);
\t\t\tz-index: 1;
\t\t}
\t\t.product-info {
\t\t\tpadding: 20px;
\t\t\tflex-grow: 1;
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t}
\t\t.product-title {
\t\t\tfont-size: 1.1rem;
\t\t\tfont-weight: 600;
\t\t\tcolor: #2c3e50;
\t\t\tmargin-bottom: 10px;
\t\t\tline-height: 1.4;
\t\t\tdisplay: -webkit-box;
\t\t\t-webkit-line-clamp: 2;
\t\t\t-webkit-box-orient: vertical;
\t\t\toverflow: hidden;
\t\t}
\t\t.product-price {
\t\t\tfont-size: 1.5rem;
\t\t\tfont-weight: 800;
\t\t\tcolor: #ffa200;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.product-shop {
\t\t\tfont-size: 0.9rem;
\t\t\tcolor: #666;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.product-shop a {
\t\t\tcolor: #667eea;
\t\t\ttext-decoration: none;
\t\t\ttransition: color 0.3s ease;
\t\t}
\t\t.product-shop a:hover {
\t\t\tcolor: #ffa200;
\t\t}
\t\t/* Newsletter Modern Styles */
\t\t.newsletter-section-modern {
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #095ad3 100%);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.newsletter-section-modern::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: -50%;
\t\t\tright: -50%;
\t\t\twidth: 100%;
\t\t\theight: 200%;
\t\t\tbackground: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
\t\t\tanimation: pulse 3s ease-in-out infinite;
\t\t}
\t\t@keyframes pulse {
\t\t\t0,
\t\t\t100% {
\t\t\t\ttransform: scale(1);
\t\t\t\topacity: 0.5;
\t\t\t}
\t\t\t50% {
\t\t\t\ttransform: scale(1.1);
\t\t\t\topacity: 0.8;
\t\t\t}
\t\t}
\t\t.newsletter-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 20px;
\t\t\tpadding: 40px;
\t\t\tbox-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
\t\t\tposition: relative;
\t\t\tz-index: 1;
\t\t}
\t\t.newsletter-title {
\t\t\tfont-size: 2.5rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #333;
\t\t}
\t\t.newsletter-description {
\t\t\tcolor: #666;
\t\t\tfont-size: 1.1rem;
\t\t\tline-height: 1.8;
\t\t}
\t\t.newsletter-form-modern {
\t\t\tposition: relative;
\t\t}
\t\t.newsletter-input-wrapper {
\t\t\tdisplay: flex;
\t\t\tgap: 10px;
\t\t\tmargin-bottom: 15px;
\t\t}
\t\t.newsletter-input {
\t\t\tflex: 1;
\t\t\tpadding: 18px 25px;
\t\t\tborder: 2px solid #e0e0e0;
\t\t\tborder-radius: 50px;
\t\t\tfont-size: 1rem;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.newsletter-input:focus {
\t\t\toutline: none;
\t\t\tborder-color: #ffa200;
\t\t\tbox-shadow: 0 0 0 3px rgba(255, 162, 0, 0.1);
\t\t}
\t\t.newsletter-button {
\t\t\tpadding: 18px 35px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tborder: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1rem;
\t\t\tcursor: pointer;
\t\t\ttransition: all 0.3s ease;
\t\t\twhite-space: nowrap;
\t\t}
\t\t.newsletter-button:hover {
\t\t\ttransform: translateY(-2px);
\t\t\tbox-shadow: 0 5px 20px rgba(255, 162, 0, 0.4);
\t\t}
\t\t.newsletter-privacy {
\t\t\tcolor: #999;
\t\t}
\t\t/* CTA Modern Styles */
\t\t.cta-section-modern {
\t\t\tbackground: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
\t\t}
\t\t.cta-card {
\t\t\tbackground: white;
\t\t\tborder-radius: 25px;
\t\t\tpadding: 50px;
\t\t\tbox-shadow: 0 15px 50px rgba(0, 0, 0, 0.1);
\t\t\tposition: relative;
\t\t\toverflow: hidden;
\t\t}
\t\t.cta-card::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\ttop: -50px;
\t\t\tright: -50px;
\t\t\twidth: 200px;
\t\t\theight: 200px;
\t\t\tbackground: linear-gradient(135deg, rgba(255,162,0,0.1) 0%, rgba(255,162,0,0.05) 100%);
\t\t\tborder-radius: 50%;
\t\t}
\t\t.cta-badge {
\t\t\tdisplay: inline-block;
\t\t\tpadding: 8px 20px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tborder-radius: 50px;
\t\t\tfont-size: 0.9rem;
\t\t\tfont-weight: 600;
\t\t\tmargin-bottom: 20px;
\t\t}
\t\t.cta-title {
\t\t\tfont-size: 3rem;
\t\t\tfont-weight: bold;
\t\t\tcolor: #333;
\t\t\tmargin-bottom: 20px;
\t\t}
\t\t.cta-description {
\t\t\tfont-size: 1.2rem;
\t\t\tcolor: #666;
\t\t\tline-height: 1.8;
\t\t}
\t\t.cta-features {
\t\t\tdisplay: flex;
\t\t\tflex-direction: column;
\t\t\tgap: 15px;
\t\t}
\t\t.cta-feature-item {
\t\t\tdisplay: flex;
\t\t\talign-items: center;
\t\t\tgap: 10px;
\t\t\tfont-size: 1rem;
\t\t\tcolor: #555;
\t\t}
\t\t.cta-feature-item i {
\t\t\tcolor: #ffa200;
\t\t\tfont-size: 1.3rem;
\t\t}
\t\t.cta-buttons {
\t\t\tdisplay: flex;
\t\t\tgap: 15px;
\t\t\tflex-wrap: wrap;
\t\t}
\t\t.cta-button-primary {
\t\t\tpadding: 15px 35px;
\t\t\tbackground: linear-gradient(135deg, #ffa200 0%, #e8910a 100%);
\t\t\tcolor: white;
\t\t\tborder: none;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1.1rem;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.cta-button-primary:hover {
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.4);
\t\t\tcolor: white;
\t\t}
\t\t.cta-button-secondary {
\t\t\tpadding: 15px 35px;
\t\t\tbackground: white;
\t\t\tcolor: #ffa200;
\t\t\tborder: 2px solid #ffa200;
\t\t\tborder-radius: 50px;
\t\t\tfont-weight: 600;
\t\t\tfont-size: 1.1rem;
\t\t\ttransition: all 0.3s ease;
\t\t}
\t\t.cta-button-secondary:hover {
\t\t\tbackground: #ffa200;
\t\t\tcolor: white;
\t\t\ttransform: translateY(-3px);
\t\t\tbox-shadow: 0 8px 25px rgba(255, 162, 0, 0.3);
\t\t}
\t\t.cta-image-wrapper {
\t\t\tposition: relative;
\t\t}
\t\t.cta-decoration {
\t\t\tposition: absolute;
\t\t\ttop: -20px;
\t\t\tright: -20px;
\t\t\twidth: 150px;
\t\t\theight: 150px;
\t\t\tbackground: linear-gradient(135deg, rgba(255,162,0,0.2) 0%, rgba(255,162,0,0.05) 100%);
\t\t\tborder-radius: 50%;
\t\t\tz-index: 0;
\t\t}
\t\t.cta-image {
\t\t\tposition: relative;
\t\t\tz-index: 1;
\t\t\tmax-width: 100%;
\t\t\theight: auto;
\t\t\tborder-radius: 15px;
\t\t}
\t\t.home-section {
\t\t\tposition: relative;
\t\t\ttransition: background-color 0.3s ease, color 0.3s ease;
\t\t}
\t\t.home-section::before {
\t\t\tcontent: '';
\t\t\tposition: absolute;
\t\t\tinset: 0;
\t\t\tpointer-events: none;
\t\t\topacity: 0;
\t\t\ttransition: opacity 0.3s ease;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section {
\t\t\tbackground: linear-gradient(180deg, rgba(17, 24, 39, 0.98) 0%, rgba(15, 23, 42, 0.95) 100%) !important;
\t\t\tcolor: var(--mk-text) !important;
\t\t\tborder-top: 1px solid rgba(148, 163, 184, 0.08);
\t\t\tborder-bottom: 1px solid rgba(148, 163, 184, 0.08);
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section--alt {
\t\t\tbackground: linear-gradient(180deg, rgba(12, 18, 30, 0.98) 0%, rgba(24, 34, 53, 0.95) 100%) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section--alt::before {
\t\t\topacity: 1;
\t\t\tbackground: linear-gradient(
\t\t\t\t180deg,
\t\t\t\trgba(255, 255, 255, 0.015) 0%,
\t\t\t\trgba(255, 255, 255, 0.015) 50%,
\t\t\t\trgba(255, 255, 255, 0.03) 50%,
\t\t\t\trgba(255, 255, 255, 0.03) 100%
\t\t\t);
\t\t\tbackground-size: 100% 12px;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .section-title h2,
\t\thtml[data-theme=\"dark\"] .home-section .category-content h5,
\t\thtml[data-theme=\"dark\"] .home-section .product-title-modern,
\t\thtml[data-theme=\"dark\"] .home-section .product-title-modern a,
\t\thtml[data-theme=\"dark\"] .home-section .product-title,
\t\thtml[data-theme=\"dark\"] .home-section .product-title a,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-title,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-title a,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-title,
\t\thtml[data-theme=\"dark\"] .home-section .cta-title,
\t\thtml[data-theme=\"dark\"] .home-section .feature-card h5,
\t\thtml[data-theme=\"dark\"] .home-section .banner-title-modern {
\t\t\tcolor: var(--mk-text) !important;
\t\t\t-webkit-text-fill-color: currentColor !important;
\t\t\tbackground: none !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .section-title p,
\t\thtml[data-theme=\"dark\"] .home-section .category-content p,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop-modern,
\t\thtml[data-theme=\"dark\"] .home-section .rating-count,
\t\thtml[data-theme=\"dark\"] .home-section .product-views-modern,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-description,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-privacy,
\t\thtml[data-theme=\"dark\"] .home-section .cta-description,
\t\thtml[data-theme=\"dark\"] .home-section .cta-feature-item,
\t\thtml[data-theme=\"dark\"] .home-section .banner-description-modern,
\t\thtml[data-theme=\"dark\"] .home-section .price-label {
\t\t\tcolor: var(--mk-text-soft) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .text-muted,
\t\thtml[data-theme=\"dark\"] .home-section small.text-muted,
\t\thtml[data-theme=\"dark\"] .home-section .small.text-muted {
\t\t\tcolor: var(--mk-text-muted) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .stats-card,
\t\thtml[data-theme=\"dark\"] .home-section .category-card-custom,
\t\thtml[data-theme=\"dark\"] .home-section .product-card-modern,
\t\thtml[data-theme=\"dark\"] .home-section .product-card,
\t\thtml[data-theme=\"dark\"] .home-section .feature-card,
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-card,
\t\thtml[data-theme=\"dark\"] .home-section .cta-card,
\t\thtml[data-theme=\"dark\"] .home-section .single-product,
\t\thtml[data-theme=\"dark\"] .home-section .banner-content-modern,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-card {
\t\t\tbackground: var(--mk-surface-strong) !important;
\t\t\tcolor: var(--mk-text) !important;
\t\t\tborder-color: var(--mk-border) !important;
\t\t\tbox-shadow: 0 20px 45px rgba(2, 6, 23, 0.28) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section--alt .stats-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .category-card-custom,
\t\thtml[data-theme=\"dark\"] .home-section--alt .product-card-modern,
\t\thtml[data-theme=\"dark\"] .home-section--alt .product-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .feature-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .newsletter-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .cta-card,
\t\thtml[data-theme=\"dark\"] .home-section--alt .single-product,
\t\thtml[data-theme=\"dark\"] .home-section--alt .banner-content-modern,
\t\thtml[data-theme=\"dark\"] .home-section--alt .featured-gallery-card {
\t\t\tbackground: rgba(31, 41, 55, 0.9) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .product-image-wrapper,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-image-wrapper,
\t\thtml[data-theme=\"dark\"] .home-section .product-image-container,
\t\thtml[data-theme=\"dark\"] .home-section .banner-image-wrapper {
\t\t\tbackground: #0f172a !important;
\t\t\tborder-color: var(--mk-border) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .shop-link,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop a,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop-modern a,
\t\thtml[data-theme=\"dark\"] .home-section .featured-gallery-view-btn {
\t\t\tcolor: #93c5fd !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .shop-link:hover,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop a:hover,
\t\thtml[data-theme=\"dark\"] .home-section .product-shop-modern a:hover {
\t\t\tcolor: var(--mk-primary) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .banner-price-modern {
\t\t\tbackground: linear-gradient(135deg, rgba(15, 23, 42, 0.96) 0%, rgba(31, 41, 55, 0.94) 100%) !important;
\t\t\tborder-left-color: var(--mk-primary) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-input {
\t\t\tbackground: #0f172a !important;
\t\t\tborder-color: var(--mk-border) !important;
\t\t\tcolor: var(--mk-text) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .newsletter-input::placeholder {
\t\t\tcolor: var(--mk-text-muted) !important;
\t\t}
\t\thtml[data-theme=\"dark\"] .home-section .cta-section-modern,
\t\thtml[data-theme=\"dark\"] .home-section.cta-section-modern,
\t\thtml[data-theme=\"dark\"] .home-section.newsletter-section-modern {
\t\t\tcolor: var(--mk-text) !important;
\t\t}
\t</style>
{% endblock %}
{% block body %}
\t<!-- Hero Section -->
\t<!-- start banner Area avec produits en vedette -->
\t\t{% if featuredProducts|length > 0 %}
\t\t\t<section class=\"banner-area-modern\"> <div class=\"banner-carousel-wrapper\">
\t\t\t\t<div class=\"active-banner-slider owl-carousel\" style=\"margin-top: 100px;\">
\t\t\t\t\t{% for product in featuredProducts %}
\t\t\t\t\t\t<!-- single-slide -->
\t\t\t\t\t\t<div class=\"banner-slide-item\">
\t\t\t\t\t\t\t<div class=\"container\">
\t\t\t\t\t\t\t\t<div class=\"row align-items-center\">
\t\t\t\t\t\t\t\t\t<div class=\"col-lg-4 col-md-6 col-12\">
\t\t\t\t\t\t\t\t\t\t<div class=\"banner-content-modern\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-badge\">
\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-star\"></i>
\t\t\t\t\t\t\t\t\t\t\t\tProduit en vedette
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t<h1 class=\"banner-title-modern\">{{ product.name }}</h1>
\t\t\t\t\t\t\t\t\t\t\t<p class=\"banner-description-modern\">
\t\t\t\t\t\t\t\t\t\t\t\t{{ product.description ? (product.description|striptags|slice(0, 120) ~ '...') : 'Découvrez ce produit exclusif sur MaketOu' }}
\t\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-price-modern\">
\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"price-label\">Prix</span>
\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"price-value\">{{ product.price|number_format(2, '.', ' ') }}
\t\t\t\t\t\t\t\t\t\t\t\t\tHTG</span>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-actions-modern\">
\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"btn-banner-primary\" href=\"{{ path('ui_product_show', {'slug': product.slug}) }}\">
\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"btn-text\">Voir le produit</span>
\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"btn-icon\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t\t</span>
\t\t\t\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t\t\t\t{% if product.shop %}
\t\t\t\t\t\t\t\t\t\t\t\t\t<a class=\"btn-banner-secondary\" href=\"{{ path('ui_shop_show', {'slug': product.shop.slug}) }}\">
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>{{ product.shop.name }}</span>
\t\t\t\t\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t<div class=\"col-lg-8 col-md-6 col-12\">
\t\t\t\t\t\t\t\t\t\t<div class=\"banner-image-modern\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-image-wrapper\">
\t\t\t\t\t\t\t\t\t\t\t\t{% if product.images is defined and product.images|length > 0 %}
\t\t\t\t\t\t\t\t\t\t\t\t\t<img class=\"banner-img\" src=\"{{ product.images[0] is defined and product.images[0] ? asset(product.images[0]) : asset('ui/img/product/p' ~ loop.index ~ '.jpg') }}\" alt=\"{{ product.name }}\">
\t\t\t\t\t\t\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t\t\t\t\t\t\t<img class=\"banner-img\" src=\"{{ asset('ui/img/product/p' ~ loop.index ~ '.jpg') }}\" alt=\"{{ product.name }}\">
\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"banner-image-overlay\"></div>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t{% endfor %}
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% else %}
\t\t<!-- Banner par défaut si pas de produits en vedette -->
\t\t<section class=\"banner-area-modern\">
\t\t\t<div class=\"banner-carousel-wrapper\">
\t\t\t\t<div class=\"container\">
\t\t\t\t\t<div class=\"row align-items-center justify-content-center\">
\t\t\t\t\t\t<div class=\"col-lg-8 text-center\">
\t\t\t\t\t\t\t<div class=\"banner-content-modern\" style=\"margin-top: 140px;\">
\t\t\t\t\t\t\t\t<h1 class=\"banner-title-modern\">Bienvenue sur MaketOu</h1>
\t\t\t\t\t\t\t\t<p class=\"banner-description-modern\">Votre marketplace haïtienne</p>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t<!-- End banner Area -->
\t<!-- Catégories de produits -->
\t{% if categories|length > 0 %}
\t\t<section class=\"py-5 home-section\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title\">
\t\t\t\t\t<h2>Nos catégories</h2>
\t\t\t\t\t<p>Explorez nos différentes catégories de produits</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"row\" id=\"productCategoriesContainer\">
\t\t\t\t\t{% for category in categories|slice(0, 8) %}
\t\t\t\t\t\t<div class=\"col-lg-3 col-md-4 col-sm-6 mb-4\">
\t\t\t\t\t\t\t<div class=\"category-card-custom d-flex flex-column h-100\">
\t\t\t\t\t\t\t\t<div class=\"category-image-wrapper\">
\t\t\t\t\t\t\t\t\t<div class=\"category-image\" style=\"background-image: url('{% if category.bannerImage %}{{ asset('uploads/categories/banner/' ~ category.bannerImage) }}{% else %}{{ asset('ui/img/category/cat-' ~ loop.index ~ '.jpg') }}{% endif %}')\">
\t\t\t\t\t\t\t\t\t\t<div class=\"category-overlay-custom\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"category-icon-wrapper\">
\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-tag\" style=\"font-size: 3rem;\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">{{ category.name }}</h4>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
\t\t\t\t\t\t\t\t\t<h5 class=\"mb-2\">{{ category.name }}</h5>
\t\t\t\t\t\t\t\t\t{% if category.description %}
\t\t\t\t\t\t\t\t\t\t<p class=\"text-muted mb-3 small\">{{ category.description|striptags|slice(0, 60) }}
\t\t\t\t\t\t\t\t\t\t\t{% if category.description|striptags|length > 60 %}...
\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_listing', {'category': category.slug}) }}\" class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
\t\t\t\t\t\t\t\t\t\tVoir les produits
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t{% endfor %}
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t<!-- Catégories de boutiques -->
\t{% if shopCategories|length > 0 %}
\t\t<section class=\"py-5 bg-light home-section home-section--alt\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title\">
\t\t\t\t\t<h2>Nos catégories de boutiques</h2>
\t\t\t\t\t<p>Explorez les différentes catégories de boutiques disponibles sur MaketOu</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"row\" id=\"shopCategoriesContainer\">
\t\t\t\t\t{% for shopCategory in shopCategories|slice(0, 6) %}
\t\t\t\t\t\t<div class=\"col-lg-4 col-md-6 mb-4\">
\t\t\t\t\t\t\t<a href=\"{{ path('ui_shops_list') }}?category={{ shopCategory.slug }}\" class=\"text-decoration-none h-100\" style=\"display: block;\">
\t\t\t\t\t\t\t\t<div class=\"category-card-custom shop-category-clickable d-flex flex-column h-100\">
\t\t\t\t\t\t\t\t\t<div class=\"category-image-wrapper\">
\t\t\t\t\t\t\t\t\t\t<div class=\"category-image\" style=\"background-image: url('{% if shopCategory.bannerImage %}{{ asset(shopCategory.bannerImage) }}{% else %}{{ asset('ui/img/category/shop-' ~ loop.index ~ '.jpg') }}{% endif %}')\">
\t\t\t\t\t\t\t\t\t\t\t<div class=\"category-overlay-custom\">
\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"category-icon-wrapper\">
\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store\" style=\"font-size: 3rem;\"></i>
\t\t\t\t\t\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">{{ shopCategory.name }}</h4>
\t\t\t\t\t\t\t\t\t\t\t\t\t{% if shopCategory.description %}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p class=\"mt-2 px-3\">{{ shopCategory.description|striptags|slice(0, 100) }}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{% if shopCategory.description|striptags|length > 100 %}...
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
\t\t\t\t\t\t\t\t\t\t<h5 class=\"mb-2\">{{ shopCategory.name }}</h5>
\t\t\t\t\t\t\t\t\t\t{% if shopCategory.description %}
\t\t\t\t\t\t\t\t\t\t\t<p class=\"text-muted mb-3 small\">{{ shopCategory.description|striptags|slice(0, 80) }}
\t\t\t\t\t\t\t\t\t\t\t\t{% if shopCategory.description|striptags|length > 80 %}...
\t\t\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t\t<span class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
\t\t\t\t\t\t\t\t\t\t\tVoir les boutiques
\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right ms-2\"></i>
\t\t\t\t\t\t\t\t\t\t</span>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t</div>
\t\t\t\t\t{% endfor %}
\t\t\t\t</div>
\t\t\t\t{% if shopCategories|length > 6 %}
\t\t\t\t\t<div class=\"text-center mt-4\">
\t\t\t\t\t\t<button class=\"btn btn-outline-primary btn-lg\" onclick=\"showAllShopCategories()\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-store me-2\"></i>
\t\t\t\t\t\t\tVoir toutes les catégories de boutiques ({{ shopCategories|length }})
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t{% endif %}
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t<!-- Produits en vedette -->
\t{% if featuredProducts|length > 0 %}
\t\t<section class=\"py-5 bg-light home-section\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Produits en vedette</h2>
\t\t\t\t\t<p>Découvrez nos produits les plus populaires et les mieux notés</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"featured-gallery-wrapper\">
\t\t\t\t\t<div class=\"featured-gallery-container\">
\t\t\t\t\t\t<div class=\"featured-gallery-grid\" id=\"featuredGalleryGrid\">
\t\t\t\t\t\t\t{% for product in featuredProducts %}
\t\t\t\t\t\t\t\t<div class=\"featured-gallery-item\">
\t\t\t\t\t\t\t\t\t{% include 'home/_single_product_card.html.twig' with {'product': product} %}
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Contrôles de navigation -->
\t\t\t\t\t<div class=\"featured-gallery-controls\">
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-prev\" id=\"featuredGalleryPrev\" aria-label=\"Précédent\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-left\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-next\" id=\"featuredGalleryNext\" aria-label=\"Suivant\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-right\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Bouton charger plus -->
\t\t\t\t\t<div class=\"featured-gallery-load-more text-center mt-4\" id=\"featuredGalleryLoadMore\" style=\"display: none;\">
\t\t\t\t\t\t<button class=\"btn btn-outline-primary\" id=\"loadMoreFeaturedBtn\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-plus-circle me-2\"></i>
\t\t\t\t\t\t\tCharger plus de produits
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"text-center mt-5\">
\t\t\t\t\t<a href=\"{{ path('ui_listing') }}\" class=\"btn-view-all-products\">
\t\t\t\t\t\t<span>Voir tous les produits</span>
\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right\"></i>
\t\t\t\t\t</a>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t<!-- Nouveautés -->
\t{% if latestProducts|length > 0 %}
\t\t<section class=\"py-5 home-section home-section--alt\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Nouveautés</h2>
\t\t\t\t\t<p>Les derniers produits ajoutés sur MaketOu</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"featured-gallery-wrapper\">
\t\t\t\t\t<div class=\"featured-gallery-container\">
\t\t\t\t\t\t<div class=\"featured-gallery-grid\" id=\"latestGalleryGrid\">
\t\t\t\t\t\t\t{% for product in latestProducts %}
\t\t\t\t\t\t\t\t<div class=\"featured-gallery-item\">
\t\t\t\t\t\t\t\t\t{% include 'home/_single_product_card.html.twig' with {'product': product} %}
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Contrôles de navigation -->
\t\t\t\t\t<div class=\"featured-gallery-controls\">
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-prev\" id=\"latestGalleryPrev\" aria-label=\"Précédent\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-left\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t\t<button class=\"featured-gallery-nav-btn featured-gallery-next\" id=\"latestGalleryNext\" aria-label=\"Suivant\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-chevron-right\"></i>
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t\t<!-- Bouton charger plus -->
\t\t\t\t\t<div class=\"featured-gallery-load-more text-center mt-4\" id=\"latestGalleryLoadMore\" style=\"display: none;\">
\t\t\t\t\t\t<button class=\"btn btn-outline-primary\" id=\"loadMoreLatestBtn\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-plus-circle me-2\"></i>
\t\t\t\t\t\t\tCharger plus de produits
\t\t\t\t\t\t</button>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"text-center mt-5\">
\t\t\t\t\t<a href=\"{{ path('ui_listing') }}\" class=\"btn-view-all-products\">
\t\t\t\t\t\t<span>Voir tous les produits</span>
\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right\"></i>
\t\t\t\t\t</a>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t{% if recommendedProducts|length > 0 %}
\t\t<section class=\"py-5 bg-white home-section\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Recommandés pour vous</h2>
\t\t\t\t\t<p>Suggestions basées sur votre activité récente et les tendances de MaketOu</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"row g-4\">
\t\t\t\t\t{% for product in recommendedProducts %}
\t\t\t\t\t\t<div class=\"col-12 col-sm-6 col-lg-3\">
\t\t\t\t\t\t\t<div class=\"product-card h-100\">
\t\t\t\t\t\t\t\t{% set productImage = product.images[0] ?? 'ui/img/product/p1.jpg' %}
\t\t\t\t\t\t\t\t<div class=\"product-image\" style=\"background-image:url('{{ asset(productImage) }}');\">
\t\t\t\t\t\t\t\t\t{% if product.isFeatured %}
\t\t\t\t\t\t\t\t\t\t<span class=\"product-badge bg-success\">Populaire</span>
\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"p-3\">
\t\t\t\t\t\t\t\t\t<h6 class=\"mb-2\">
\t\t\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_product_show', { slug: product.slug }) }}\">{{ product.name }}</a>
\t\t\t\t\t\t\t\t\t</h6>
\t\t\t\t\t\t\t\t\t<p class=\"mb-2 text-muted small\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store\"></i>
\t\t\t\t\t\t\t\t\t\t{% if product.shop %}
\t\t\t\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_shop_show', {'slug': product.shop.slug}) }}\">{{ product.shop.name }}</a>
\t\t\t\t\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t\t\t\t\tBoutique non spécifiée
\t\t\t\t\t\t\t\t\t\t{% endif %}
\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t\t<div class=\"d-flex align-items-center justify-content-between\">
\t\t\t\t\t\t\t\t\t\t<span class=\"fw-bold text-primary\">{{ product.price|number_format(2, '.', ' ') }} HTG</span>
\t\t\t\t\t\t\t\t\t\t<a href=\"javascript:void(0)\" class=\"btn btn-sm btn-outline-primary add-to-cart\" data-product-id=\"{{ product.id }}\" data-qty=\"1\">
\t\t\t\t\t\t\t\t\t\t\t<i class=\"ti ti-bag\"></i>
\t\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t{% endfor %}
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t{% if recentlyViewedProducts|length > 0 %}
\t\t<section class=\"py-5 bg-light home-section home-section--alt\">
\t\t\t<div class=\"container\">
\t\t\t\t<div class=\"section-title text-center mb-5\">
\t\t\t\t\t<h2>Récemment consultés</h2>
\t\t\t\t\t<p>Retrouvez les articles que vous avez explorés dernièrement</p>
\t\t\t\t</div>
\t\t\t\t<div class=\"featured-gallery-wrapper\">
\t\t\t\t\t<div class=\"featured-gallery-container\">
\t\t\t\t\t\t<div class=\"featured-gallery-grid\">
\t\t\t\t\t\t\t{% for product in recentlyViewedProducts %}
\t\t\t\t\t\t\t\t<div class=\"featured-gallery-item\">
\t\t\t\t\t\t\t\t\t{% include 'home/_single_product_card.html.twig' with {'product': product} %}
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t{% endfor %}
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</section>
\t{% endif %}
\t<!-- Fonctionnalités -->
\t<section class=\"py-5 bg-light home-section\">
\t\t<div class=\"container\">
\t\t\t<div class=\"section-title\">
\t\t\t\t<h2>Pourquoi choisir MaketOu ?</h2>
\t\t\t\t<p>Découvrez les avantages de notre plateforme</p>
\t\t\t</div>
\t\t\t<div class=\"row\">
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-rocket\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Livraison rapide</h5>
\t\t\t\t\t\t<p>Recevez vos commandes rapidement avec notre réseau de livraison optimisé</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-lock\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Paiement sécurisé</h5>
\t\t\t\t\t\t<p>Vos transactions sont protégées avec les dernières technologies de sécurité</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-phone\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Support 24/7</h5>
\t\t\t\t\t\t<p>Notre équipe est disponible pour vous aider à tout moment</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t\t<div class=\"col-lg-3 col-md-6 mb-4\">
\t\t\t\t\t<div class=\"feature-card\">
\t\t\t\t\t\t<div class=\"feature-icon\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-undo\"></i>
\t\t\t\t\t\t</div>
\t\t\t\t\t\t<h5>Retour facile</h5>
\t\t\t\t\t\t<p>Politique de retour flexible pour votre tranquillité d'esprit</p>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</section>
\t<!-- Newsletter -->
\t<section class=\"newsletter-section-modern py-5 home-section home-section--alt\">
\t\t<div class=\"container\">
\t\t\t<div class=\"row justify-content-center\">
\t\t\t\t<div class=\"col-lg-10\">
\t\t\t\t\t<div class=\"newsletter-card\">
\t\t\t\t\t\t<div class=\"row align-items-center\">
\t\t\t\t\t\t\t<div class=\"col-lg-6 text-center text-lg-start mb-4 mb-lg-0\">
\t\t\t\t\t\t\t\t<div class=\"newsletter-icon mb-3\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-envelope\" style=\"font-size: 4rem; color: #ffa200;\"></i>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<h2 class=\"newsletter-title mb-3\">Restez informé des dernières nouveautés</h2>
\t\t\t\t\t\t\t\t<p class=\"newsletter-description mb-0\">
\t\t\t\t\t\t\t\t\tInscrivez-vous à notre newsletter pour recevoir les offres exclusives,
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t les nouveaux produits et les meilleures promotions directement dans votre boîte mail.
\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t<div class=\"col-lg-6\">
\t\t\t\t\t\t\t\t<form class=\"newsletter-form-modern\" id=\"newsletterFormHome\">
\t\t\t\t\t\t\t\t\t<div class=\"newsletter-input-wrapper\">
\t\t\t\t\t\t\t\t\t\t<input type=\"email\" class=\"newsletter-input\" placeholder=\"Votre adresse email\" required name=\"email\">
\t\t\t\t\t\t\t\t\t\t<button class=\"newsletter-button\" type=\"submit\">
\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-arrow-right me-2\"></i>
\t\t\t\t\t\t\t\t\t\t\tS'abonner
\t\t\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t\t<p class=\"newsletter-privacy mt-3 text-center\">
\t\t\t\t\t\t\t\t\t\t<small>
\t\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-lock me-1\"></i>
\t\t\t\t\t\t\t\t\t\t\tVos données sont sécurisées. Pas de spam, désinscription facile.
\t\t\t\t\t\t\t\t\t\t</small>
\t\t\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t\t</form>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</section>
\t<!-- Call to Action -->
\t<section class=\"cta-section-modern py-5 home-section\">
\t\t<div class=\"container\">
\t\t\t<div class=\"cta-card\">
\t\t\t\t<div class=\"row align-items-center\">
\t\t\t\t\t<div class=\"col-lg-6 mb-4 mb-lg-0\">
\t\t\t\t\t\t<div class=\"cta-content\">
\t\t\t\t\t\t\t<span class=\"cta-badge\">
\t\t\t\t\t\t\t\t<i class=\"lnr lnr-rocket me-2\"></i>
\t\t\t\t\t\t\t\tCommencez dès aujourd'hui
\t\t\t\t\t\t\t</span>
\t\t\t\t\t\t\t<h2 class=\"cta-title mb-3\">Prêt à commencer ?</h2>
\t\t\t\t\t\t\t<p class=\"cta-description mb-4\">
\t\t\t\t\t\t\t\tQue vous soyez
\t\t\t\t\t\t\t\t<strong>acheteur</strong>
\t\t\t\t\t\t\t\tou
\t\t\t\t\t\t\t\t<strong>vendeur</strong>, MaketOu vous offre la plateforme idéale
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t pour vos besoins commerciaux en Haïti. Rejoignez des milliers d'utilisateurs satisfaits !
\t\t\t\t\t\t\t</p>
\t\t\t\t\t\t\t<div class=\"cta-features mb-4\">
\t\t\t\t\t\t\t\t<div class=\"cta-feature-item\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\"></i>
\t\t\t\t\t\t\t\t\t<span>Plateforme 100% sécurisée</span>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"cta-feature-item\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\"></i>
\t\t\t\t\t\t\t\t\t<span>Support client 24/7</span>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t\t<div class=\"cta-feature-item\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\"></i>
\t\t\t\t\t\t\t\t\t<span>Paiements multiples</span>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t<div class=\"cta-buttons\">
\t\t\t\t\t\t\t\t<button type=\"button\" class=\"btn cta-button-primary\" onclick=\"openReadyModal()\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-rocket me-2\"></i>
\t\t\t\t\t\t\t\t\tPrêt à commencer ?
\t\t\t\t\t\t\t\t</button>
\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_listing') }}\" class=\"btn cta-button-secondary\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-magnifier me-2\"></i>
\t\t\t\t\t\t\t\t\tVoir les produits
\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t\t<div class=\"col-lg-6\">
\t\t\t\t\t\t<div class=\"cta-image-wrapper\">
\t\t\t\t\t\t\t<div class=\"cta-decoration\"></div>
\t\t\t\t\t\t\t<img src=\"{{ asset('Start.png') }}\" alt=\"MaketOu\" class=\"cta-image\">
\t\t\t\t\t\t</div>
\t\t\t\t\t</div>
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</section>
{% endblock %}
{% block javascripts %}
\t<script src=\"https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js\"></script>
\t<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css\">
\t<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.theme.default.min.css\">
\t<script src=\"{{ asset('ui/js/product-unified.js') }}\"></script>
\t<script>
\t\twindow.openReadyModal = function () {
\t\t\tconst modalEl = document.getElementById('readyModal');
\t\t\tif (!modalEl) {
\t\t\t\tconsole.error('readyModal introuvable');
\t\t\t\treturn;
\t\t\t}
\t\t\tif (typeof bootstrap === 'undefined' || !bootstrap.Modal) {
\t\t\t\tconsole.error('Bootstrap Modal non chargé');
\t\t\t\treturn;
\t\t\t}
\t\t\tconst modalInstance = bootstrap.Modal.getOrCreateInstance(modalEl);
\t\t\tmodalInstance.show();
\t\t};
\t</script>
\t<script>
\t\t// Variables globales pour la navigation des images (si pas déjà définies)
if (typeof productImages === 'undefined') {
var productImages = {};
var currentImageIndex = {};
}
// Initialisation des données d'images pour les produits \"Produits en vedette\"
{% if featuredProducts is defined %}
{% for product in featuredProducts %}
{% if product.images is defined and product.images|length > 0 %}
productImages[{{ product.id }}] = [{% for img in product.images %}'{{ asset(img) }}'{% if not loop.last %},{% endif %}{% endfor %}];
currentImageIndex[{{ product.id }}] = 0;{% endif %}{% endfor %}{% endif %}
// Initialisation des données d'images pour les produits \"Nouveautés\"
{% if latestProducts is defined %}
{% for product in latestProducts %}
{% if product.images is defined and product.images|length > 0 %}
productImages[{{ product.id }}] = [{% for img in product.images %}'{{ asset(img) }}'{% if not loop.last %},{% endif %}{% endfor %}];
currentImageIndex[{{ product.id }}] = 0;{% endif %}{% endfor %}{% endif %}
console.log('SCRIPT LOADED - Featured Gallery');
(function () {
\t'use strict';
\tconst SECTION_CONFIGS = [
\t\t{ grid: '#featuredGalleryGrid', prev: '#featuredGalleryPrev', next: '#featuredGalleryNext' },
\t\t{ grid: '#latestGalleryGrid', prev: '#latestGalleryPrev', next: '#latestGalleryNext' }
\t];
\tfunction triggerRipple(button) {
\t\tbutton.classList.remove('btn-ripple');
\t\tvoid button.offsetWidth;
\t\tbutton.classList.add('btn-ripple');
\t\tsetTimeout(() => button.classList.remove('btn-ripple'), 350);
\t}
\tfunction initSectionCarousel(config) {
\t\tconst \$grid = \$(config.grid);
\t\tif (!\$grid.length) {
\t\t\treturn;
\t\t}
\t\tif (typeof \$.fn.owlCarousel !== 'function') {
\t\t\tconsole.warn('OwlCarousel n\\'est pas chargé pour', config.grid);
\t\t\treturn;
\t\t}
\t\tif (!\$grid.hasClass('owl-carousel')) {
\t\t\t\$grid.addClass('owl-carousel');
\t\t}
\t\tif (\$grid.hasClass('owl-loaded')) {
\t\t\treturn;
\t\t}
\t\tconst owlInstance = \$grid.owlCarousel({
\t\t\tloop: true,
\t\t\tmargin: 30,
\t\t\tautoplay: true,
\t\t\tautoplayTimeout: 4800,
\t\t\tautoplayHoverPause: true,
\t\t\tsmartSpeed: 650,
\t\t\tnav: false,
\t\t\tdots: false,
\t\t\tresponsive: {
\t\t\t\t0: { items: 1, margin: 15 },
\t\t\t\t576: { items: 1.2, margin: 18 },
\t\t\t\t768: { items: 2, margin: 20 },
\t\t\t\t992: { items: 3, margin: 25 },
\t\t\t\t1400: { items: 4, margin: 30 }
\t\t\t}
\t\t});
\t\tconst \$prev = \$(config.prev);
\t\tconst \$next = \$(config.next);
\t\tif (\$prev.length) {
\t\t\t\$prev.off('click.carouselNav').on('click.carouselNav', function (e) {
\t\t\t\te.preventDefault();
\t\t\t\towlInstance.trigger('prev.owl.carousel');
\t\t\t\ttriggerRipple(this);
\t\t\t});
\t\t}
\t\tif (\$next.length) {
\t\t\t\$next.off('click.carouselNav').on('click.carouselNav', function (e) {
\t\t\t\te.preventDefault();
\t\t\t\towlInstance.trigger('next.owl.carousel');
\t\t\t\ttriggerRipple(this);
\t\t\t});
\t\t}
\t}
\tfunction ensureOwl(attempt = 0) {
\t\tif (window.jQuery && typeof \$.fn !== 'undefined' && typeof \$.fn.owlCarousel === 'function') {
\t\t\tSECTION_CONFIGS.forEach(initSectionCarousel);
\t\t} else if (attempt < 15) {
\t\t\tsetTimeout(() => ensureOwl(attempt + 1), 200);
\t\t} else {
\t\t\tconsole.warn('OwlCarousel non disponible après plusieurs tentatives');
\t\t}
\t}
\tdocument.addEventListener('DOMContentLoaded', function () {
\t\tensureOwl();
\t});
})();
document.addEventListener('DOMContentLoaded', function () { // Animation des cartes au scroll
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver(function (entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
// Observer toutes les cartes
document.querySelectorAll('.stats-card, .category-card, .product-card, .feature-card').forEach(card => {
card.style.opacity = '0';
card.style.transform = 'translateY(30px)';
card.style.transition = 'all 0.6s ease';
observer.observe(card);
});
// Compteur animé pour les statistiques
function animateCounter(element, target, duration = 2000) {
let start = 0;
const increment = target / (duration / 16);
function updateCounter() {
start += increment;
if (start < target) {
element.textContent = Math.floor(start).toLocaleString();
requestAnimationFrame(updateCounter);
} else {
element.textContent = target.toLocaleString();
}
}
updateCounter();
}
// Animer les compteurs quand ils sont visibles
const statsObserver = new IntersectionObserver(function (entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
const numberElement = entry.target.querySelector('.stats-number');
const target = parseInt(numberElement.textContent.replace(/,/g, ''));
animateCounter(numberElement, target);
statsObserver.unobserve(entry.target);
}
});
});
document.querySelectorAll('.stats-card').forEach(card => {
statsObserver.observe(card);
});
// Gestion de la newsletter
const newsletterForm = document.querySelector('.newsletter-form');
if (newsletterForm) {
newsletterForm.addEventListener('submit', function (e) {
e.preventDefault();
const email = this.querySelector('input[type=\"email\"]').value;
const button = this.querySelector('button');
const originalText = button.innerHTML;
// Désactiver le bouton
button.disabled = true;
button.innerHTML = '<i class=\"lnr lnr-spinner me-2\"></i>Inscription...';
// Envoyer la requête
fetch('{{ path(\"ui_newsletter_subscribe\") }}', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With': 'XMLHttpRequest'
},
body: 'email=' + encodeURIComponent(email)
}).then(response => response.json()).then(data => {
if (data.success) {
button.innerHTML = '<i class=\"lnr lnr-check me-2\"></i>Inscription réussie !';
button.classList.remove('btn-warning');
button.classList.add('btn-success');
this.reset();
} else {
button.innerHTML = '<i class=\"lnr lnr-warning me-2\"></i>Erreur';
button.classList.remove('btn-warning');
button.classList.add('btn-danger');
}
setTimeout(() => {
button.innerHTML = originalText;
button.classList.remove('btn-success', 'btn-danger');
button.classList.add('btn-warning');
button.disabled = false;
}, 3000);
}).catch(error => {
console.error('Erreur:', error);
button.innerHTML = '<i class=\"lnr lnr-warning me-2\"></i>Erreur';
button.classList.remove('btn-warning');
button.classList.add('btn-danger');
setTimeout(() => {
button.innerHTML = originalText;
button.classList.remove('btn-danger');
button.classList.add('btn-warning');
button.disabled = false;
}, 3000);
});
});
}
});
// Effet parallaxe léger pour le hero
window.addEventListener('scroll', function () {
const scrolled = window.pageYOffset;
const hero = document.querySelector('.hero-banner');
if (hero) {
hero.style.transform = `translateY(\${
scrolled * 0.5
}px)`;
}
});
});
// Fonction pour afficher toutes les catégories
function showAllCategories () {
const container = document.getElementById('productCategoriesContainer');
const btn = document.getElementById('showAllCategoriesBtn');{% if allCategories|length > 8 %}{% for category in allCategories %}{% if loop.index > 8 %}const categoryHtml {{ loop.index }} = `
<div class=\"col-lg-3 col-md-4 col-sm-6 mb-4\">
<div class=\"category-card-custom d-flex flex-column h-100\">
<div class=\"category-image-wrapper\">
<div class=\"category-image\" style=\"background-image: url('{% if category.bannerImage %}{{ asset('uploads/categories/banner/' ~ category.bannerImage) }}{% else %}{{ asset('ui/img/category/cat-' ~ loop.index ~ '.jpg') }}{% endif %}')\">
<div class=\"category-overlay-custom\">
<div class=\"category-icon-wrapper\">
<i class=\"lnr lnr-tag\" style=\"font-size: 3rem;\"></i>
<h4 class=\"mt-3\">{{ category.name }}</h4>
</div>
</div>
</div>
</div>
<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
<h5 class=\"mb-2\">{{ category.name }}</h5>
{% if category.description %}
<p class=\"text-muted mb-3 small\">{{ category.description|striptags|slice(0, 60) }}{% if category.description|striptags|length > 60 %}...{% endif %}</p>
{% endif %}
<a href=\"{{ path('ui_listing', {'category': category.slug}) }}\" class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
Voir les produits
</a>
</div>
</div>
</div>
`;
container.insertAdjacentHTML('beforeend', categoryHtml {{ loop.index }});{% endif %}{% endfor %}{% endif %}if (btn)
btn.style.display = 'none';
}
// Fonction pour afficher toutes les catégories de boutiques
function showAllShopCategories () {
const container = document.getElementById('shopCategoriesContainer');
const btn = document.querySelector('[onclick=\"showAllShopCategories()\"]') ?. parentElement;{% if allShopCategories|length > 6 %}{% for shopCategory in allShopCategories %}{% if loop.index > 6 %}const shopCategoryHtml {{ loop.index }} = `
<div class=\"col-lg-4 col-md-6 mb-4\">
<a href=\"{{ path('ui_shops_list') }}?category={{ shopCategory.slug }}\" class=\"text-decoration-none h-100\" style=\"display: block;\">
<div class=\"category-card-custom shop-category-clickable d-flex flex-column h-100\">
<div class=\"category-image-wrapper\">
<div class=\"category-image\" style=\"background-image: url('{% if shopCategory.bannerImage %}{{ asset(shopCategory.bannerImage) }}{% else %}{{ asset('ui/img/category/shop-' ~ loop.index ~ '.jpg') }}{% endif %}')\">
<div class=\"category-overlay-custom\">
<div class=\"category-icon-wrapper\">
<i class=\"lnr lnr-store\" style=\"font-size: 3rem;\"></i>
<h4 class=\"mt-3\">{{ shopCategory.name }}</h4>
{% if shopCategory.description %}
<p class=\"mt-2 px-3\">{{ shopCategory.description|striptags|slice(0, 100) }}{% if shopCategory.description|striptags|length > 100 %}...{% endif %}</p>
{% endif %}
</div>
</div>
</div>
</div>
<div class=\"category-content p-3 d-flex flex-column flex-grow-1\">
<h5 class=\"mb-2\">{{ shopCategory.name }}</h5>
{% if shopCategory.description %}
<p class=\"text-muted mb-3 small\">{{ shopCategory.description|striptags|slice(0, 80) }}{% if shopCategory.description|striptags|length > 80 %}...{% endif %}</p>
{% endif %}
<span class=\"btn btn-primary-custom btn-sm w-100 mt-auto\">
Voir les boutiques <i class=\"lnr lnr-arrow-right ms-2\"></i>
</span>
</div>
</div>
</a>
</div>
`;
container.insertAdjacentHTML('beforeend', shopCategoryHtml {{ loop.index }});{% endif %}{% endfor %}{% endif %}if (btn)
btn.style.display = 'none';
}
// Initialiser les carousels
\$(document).ready(function () { // Carousel bannière principale
if (\$('.active-banner-slider').length) {
\$('.active-banner-slider').owlCarousel({
items: 1,
loop: true,
autoplay: true,
autoplayTimeout: 6000,
autoplayHoverPause: true,
nav: true,
dots: true,
navText: [
'<i class=\"lnr lnr-chevron-left\"></i>', '<i class=\"lnr lnr-chevron-right\"></i>'
],
smartSpeed: 1000,
animateOut: 'fadeOut',
animateIn: 'fadeIn',
responsive: {
0: {
items: 1,
nav: true,
dots: true
},
768: {
items: 1,
nav: true,
dots: true
},
992: {
items: 1,
nav: true,
dots: true
}
}
});
}
// Animation d'apparition pour les cartes produits
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const productObserver = new IntersectionObserver(function (entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
document.querySelectorAll('.product-card-modern').forEach((card, index) => {
card.style.opacity = '0';
card.style.transform = 'translateY(20px)';
card.style.transition = `opacity 0.6s ease \${
index * 0.1
}s, transform 0.6s ease \${
index * 0.1
}s`;
productObserver.observe(card);
});
});
\t</script>
\t<!-- Modal \"Prêt à commencer ?\" -->
\t<div class=\"modal fade\" id=\"readyModal\" tabindex=\"-1\">
\t\t<div class=\"modal-dialog modal-dialog-centered\">
\t\t\t<div class=\"modal-content\">
\t\t\t\t<div class=\"modal-header\">
\t\t\t\t\t<h5 class=\"modal-title\">
\t\t\t\t\t\t<i class=\"lnr lnr-rocket me-2\"></i>Prêt à commencer ?
\t\t\t\t\t</h5>
\t\t\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\"></button>
\t\t\t\t</div>
\t\t\t\t<div class=\"modal-body\">
\t\t\t\t\t{% if app.user %}
\t\t\t\t\t\t{% if app.user.kycStatus == 'approved' %}
\t\t\t\t\t\t\t<div class=\"text-center\">
\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle\" style=\"font-size: 4rem; color: #28a745;\"></i>
\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">Votre compte est vérifié !</h4>
\t\t\t\t\t\t\t\t<p class=\"text-muted\">Vous pouvez commencer à utiliser MaketOu en toute sérénité.</p>
\t\t\t\t\t\t\t\t<div class=\"mt-4\">
\t\t\t\t\t\t\t\t\t<a href=\"{{ path('seller_index') }}\" class=\"btn btn-primary me-2\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-store me-1\"></i>Ouvrir ma boutique
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_listing') }}\" class=\"btn btn-outline-primary\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-magnifier me-1\"></i>Voir les produits
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% else %}
\t\t\t\t\t\t\t<div class=\"text-center\">
\t\t\t\t\t\t\t\t<i class=\"lnr lnr-shield\" style=\"font-size: 4rem; color: #ffa200;\"></i>
\t\t\t\t\t\t\t\t<h4 class=\"mt-3\">Vérification requise</h4>
\t\t\t\t\t\t\t\t<p class=\"text-muted\">Pour utiliser toutes les fonctionnalités de MaketOu, vous devez compléter votre vérification KYC.</p>
\t\t\t\t\t\t\t\t<div class=\"mt-4\">
\t\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_account_kyc') }}\" class=\"btn btn-primary btn-lg\">
\t\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-checkmark-circle me-1\"></i> <span class=\"d-none d-md-inline\">Commencer la vérification</span>
\t\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t{% endif %}
\t\t\t\t\t{% else %}
\t\t\t\t\t\t<div class=\"text-center\">
\t\t\t\t\t\t\t<i class=\"lnr lnr-user\" style=\"font-size: 4rem; color: #007bff;\"></i>
\t\t\t\t\t\t\t<h4 class=\"mt-3\">Connectez-vous pour commencer</h4>
\t\t\t\t\t\t\t<p class=\"text-muted\">Créez un compte ou connectez-vous pour accéder à toutes les fonctionnalités de MaketOu.</p>
\t\t\t\t\t\t\t<div class=\"mt-4\">
\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_app_login') }}\" class=\"btn btn-primary btn-lg me-2\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-enter me-1\"></i>Se connecter
\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t\t<a href=\"{{ path('ui_app_register') }}\" class=\"btn btn-outline-primary btn-lg\">
\t\t\t\t\t\t\t\t\t<i class=\"lnr lnr-user-plus me-1\"></i>S'inscrire
\t\t\t\t\t\t\t\t</a>
\t\t\t\t\t\t\t</div>
\t\t\t\t\t\t</div>
\t\t\t\t\t{% endif %}
\t\t\t\t</div>
\t\t\t</div>
\t\t</div>
\t</div>
{% endblock %}
", "home/index.html.twig", "/home/u540977899/domains/maketou-ht.com/public_html/templates/home/index.html.twig");
}
}