var/cache/dev/twig/82/82a161c396d2b64cfdf4d3a1475862e1a045e993116936c37fe2c5ad17eeca94.php line 40

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. /* default/index.html.twig */
  15. class __TwigTemplate_4c3c0a9931f1599e18aee538fc3e21a57812ad5a3f3adcb6fb1619c3a2d1e198 extends Template
  16. {
  17.     private $source;
  18.     private $macros = [];
  19.     public function __construct(Environment $env)
  20.     {
  21.         parent::__construct($env);
  22.         $this->source $this->getSourceContext();
  23.         $this->blocks = [
  24.             'title' => [$this'block_title'],
  25.             'seo' => [$this'block_seo'],
  26.             'body' => [$this'block_body'],
  27.         ];
  28.     }
  29.     protected function doGetParent(array $context)
  30.     {
  31.         // line 1
  32.         return "base.html.twig";
  33.     }
  34.     protected function doDisplay(array $context, array $blocks = [])
  35.     {
  36.         $macros $this->macros;
  37.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  38.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""default/index.html.twig"));
  39.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  40.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""default/index.html.twig"));
  41.         $this->parent $this->loadTemplate("base.html.twig""default/index.html.twig"1);
  42.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  43.         
  44.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  45.         
  46.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  47.     }
  48.     // line 2
  49.     public function block_title($context, array $blocks = [])
  50.     {
  51.         $macros $this->macros;
  52.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  53.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  54.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  55.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  56.         yield "OTropik – Agence de voyage en Guadeloupe | Circuits & Séjours sur mesure";
  57.         
  58.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  59.         
  60.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  61.         return; yield '';
  62.     }
  63.     // line 3
  64.     public function block_seo($context, array $blocks = [])
  65.     {
  66.         $macros $this->macros;
  67.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  68.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""seo"));
  69.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  70.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""seo"));
  71.         // line 4
  72.         yield " <meta name=\"description\" content=\"Découvrez OTropik, agence de voyages proposant circuits, séjours, roadtrips et croisières sur mesure depuis la Guadeloupe vers le monde entier.\" >
  73. \t<meta property=\"og:title\" content=\"OTropik – Agence de voyages, circuits et séjours sur mesure\" />
  74. \t<meta property=\"og:type\" content=\"Website\" />
  75. \t<meta property=\"og:description\" content=\"Explorez le monde avec OTropik : circuits, séjours, roadtrips et croisières sur mesure depuis la Guadeloupe.\" />
  76. \t<meta property=\"og:url\" content=\"";
  77.         // line 9
  78.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\HttpFoundationExtension']->generateAbsoluteUrl(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'9$this->source); })()), "request", [], "any"falsefalsefalse9), "uri", [], "any"falsefalsefalse9)), "html"nulltrue);
  79.         yield "\" />
  80. \t<meta property=\"og:image\" content=\"";
  81.         // line 10
  82.         yield "\" />
  83. \t<meta name =\"twitter:card\" content=\"summary_large_image\" />
  84. \t<meta name=\"twitter:title\" content=\"OTropik – Agence de voyages, circuits et séjours sur mesure\">
  85. \t<meta name=\"twitter:description\" content=\"Explorez le monde avec OTropik : circuits, séjours, roadtrips et croisières sur mesure depuis la Guadeloupe.\">
  86. \t<meta name=\"twitter:image\" content=\"";
  87.         // line 15
  88.         yield "\">
  89. ";
  90.         
  91.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  92.         
  93.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  94.         return; yield '';
  95.     }
  96.     // line 18
  97.     public function block_body($context, array $blocks = [])
  98.     {
  99.         $macros $this->macros;
  100.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  101.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  102.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  103.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  104.         // line 19
  105.         yield "
  106. ";
  107.         // line 23
  108.         yield "<section class=\"section-hero position-relative\">
  109.   <picture>
  110.   ";
  111.         // line 25
  112.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["banner"]) || array_key_exists("banner"$context) ? $context["banner"] : (function () { throw new RuntimeError('Variable "banner" does not exist.'25$this->source); })()), "img", [], "any"falsefalsefalse25)) {
  113.             // line 26
  114.             yield "  <img src=\"";
  115.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/banner/"), "html"nulltrue);
  116.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["banner"]) || array_key_exists("banner"$context) ? $context["banner"] : (function () { throw new RuntimeError('Variable "banner" does not exist.'26$this->source); })()), "img", [], "any"falsefalsefalse26), "html"nulltrue);
  117.             yield "\" alt=\"Plage paradisiaque\" class=\"hero-bg w-100 h-100\">
  118.   ";
  119.         } else {
  120.             // line 28
  121.             yield "    <img src=\"";
  122.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/3004.jpg"), "html"nulltrue);
  123.             yield "\" alt=\"Plage paradisiaque en Guadeloupe\" class=\"hero-bg w-100 h-100\">
  124.   ";
  125.         }
  126.         // line 30
  127.         yield "  </picture>
  128.   <div class=\"hero-overlay container py-5 text-center text-white\">
  129.     <img src=\"";
  130.         // line 32
  131.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/logo-otropik.png"), "html"nulltrue);
  132.         yield "\" alt=\"Otropik\" class=\"mb-3\" style=\"max-width: 240px; height: auto;\">
  133.     <p class=\"lead fw-semibold text-shadow-sm\">N&#39;imaginez plus vos vacances, vivez-les !</p>
  134.     <form class=\"d-flex justify-content-center mt-4\" action=\"";
  135.         // line 35
  136.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("search");
  137.         yield "\" method=\"get\" role=\"search\" aria-label=\"Recherche de séjours\">
  138.       <div class=\"search-pill bg-white rounded-pill shadow-lg d-flex align-items-center overflow-hidden w-100\" style=\"max-width:760px;\">
  139.         <input class=\"form-control border-0 px-4 py-3 flex-grow-1\" type=\"search\" name=\"q\" placeholder=\"Où partez-vous ? (ex: Guadeloupe, New York, croisière…)\" aria-label=\"Rechercher\">
  140.         <button class=\"btn btn-primary rounded-0 px-4 py-3\" type=\"submit\">Rechercher</button>
  141.       </div>
  142.     </form>
  143.     <div class=\"d-flex gap-2 justify-content-center mt-3 flex-wrap\">
  144.       <a href=\"";
  145.         // line 43
  146.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.circuit");
  147.         yield "\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; Circuit</a>
  148.       <a href=\"";
  149.         // line 44
  150.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.escapade");
  151.         yield "\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; Escapade</a>
  152.       <a href=\"";
  153.         // line 45
  154.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.roadtrip");
  155.         yield "\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; RoadTrip</a>
  156.        <a href=\"";
  157.         // line 46
  158.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.croisiere");
  159.         yield "\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; Croisière</a>
  160.     </div>
  161.   </div>
  162. </section>
  163. ";
  164.         // line 54
  165.         yield "<section class=\"py-5 bg-white\">
  166.   <div class=\"container\">
  167.     <header class=\"d-flex flex-wrap align-items-center justify-content-between gap-3 mb-3\">
  168.       <div>
  169.         <h2 class=\"h3 text-success mb-1 fw-bold\">Nos O&#39;ffres du moment</h2>
  170.         <p class=\"text-muted mb-0\">Découvrez nos dernières expériences en immersion !</p>
  171.       </div>
  172.      <div class=\"d-flex gap-2 flex-wrap\">
  173.         <a href=\"";
  174.         // line 62
  175.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.circuit");
  176.         yield "\" class=\"chip\">O&#39; Circuit</a>
  177.         <a href=\"";
  178.         // line 63
  179.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.escapade");
  180.         yield "\" class=\"chip\">O&#39; Escapade</a>
  181.         <a href=\"";
  182.         // line 64
  183.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.roadtrip");
  184.         yield "\" class=\"chip\">O&#39; RoadTrip</a>
  185.       </div> 
  186.     </header>
  187.     <div class=\"row g-3 g-md-4\">
  188.       ";
  189.         // line 69
  190.         $context['_parent'] = $context;
  191.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["ourOffer"]) || array_key_exists("ourOffer"$context) ? $context["ourOffer"] : (function () { throw new RuntimeError('Variable "ourOffer" does not exist.'69$this->source); })()));
  192.         foreach ($context['_seq'] as $context["_key"] => $context["o"]) {
  193.             // line 70
  194.             yield "      <div class=\"col-12 col-sm-6 col-lg-3\">
  195.         <article class=\"card card-offer border-0 shadow-sm h-10s0 overflow-hidden rounded-4\">
  196.           ";
  197.             // line 72
  198.             if ((=== CoreExtension::compare(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["o"], "type", [], "any"falsefalsefalse72), "id", [], "any"falsefalsefalse72), 1))) {
  199.                 // line 73
  200.                 yield "          <a href=\"";
  201.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.escapade.destination", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["o"], "slug", [], "any"falsefalsefalse73)]), "html"nulltrue);
  202.                 yield "\" class=\"stretched-link text-decoration-none text-white\">
  203.           ";
  204.             } elseif ((=== CoreExtension::compare(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source,             // line 74
  205. $context["o"], "type", [], "any"falsefalsefalse74), "id", [], "any"falsefalsefalse74), 2))) {
  206.                 // line 75
  207.                 yield "          <a href=\"";
  208.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.circuit.destination", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["o"], "slug", [], "any"falsefalsefalse75)]), "html"nulltrue);
  209.                 yield "\" class=\"stretched-link text-decoration-none text-white\">
  210.           ";
  211.             } elseif ((=== CoreExtension::compare(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source,             // line 76
  212. $context["o"], "type", [], "any"falsefalsefalse76), "id", [], "any"falsefalsefalse76), 3))) {
  213.                 // line 77
  214.                 yield "          <a href=\"";
  215.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.roadtrip.destination", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["o"], "slug", [], "any"falsefalsefalse77)]), "html"nulltrue);
  216.                 yield "\" class=\"stretched-link text-decoration-none text-white\">
  217.           ";
  218.             }
  219.             // line 79
  220.             yield "            <div class=\"ratio ratio-4x5\">
  221.               <img src=\"";
  222.             // line 80
  223.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(((((("img/offer/" CoreExtension::getAttribute($this->env$this->source$context["o"], "file", [], "any"falsefalsefalse80)) . "/") . CoreExtension::getAttribute($this->env$this->source$context["o"], "slug", [], "any"falsefalsefalse80)) . "/") . CoreExtension::getAttribute($this->env$this->source$context["o"], "img", [], "any"falsefalsefalse80))), "html"nulltrue);
  224.             yield "\" alt=\"";
  225.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["o"], "file", [], "any"falsefalsefalse80), "html"nulltrue);
  226.             yield "\" class=\"object-fit-cover w-100 h-100\">
  227.             </div>
  228.             <div class=\"card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4\">
  229.               <span>";
  230.             // line 83
  231.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["o"], "type", [], "any"falsefalsefalse83), "name", [], "any"falsefalsefalse83), "html"nulltrue);
  232.             yield "</span>
  233.               <h3 class=\"h5 fw-bold text-white text-shadow-sm mb-3\">";
  234.             // line 84
  235.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["o"], "title", [], "any"falsefalsefalse84), "html"nulltrue);
  236.             yield "</h3>
  237.               <div>
  238.                 <span class=\"btn btn-outline-light btn-sm rounded-pill\">Découvrir</span>
  239.               </div>
  240.             </div>
  241.           </a>
  242.         </article>
  243.       </div>
  244.       ";
  245.         }
  246.         $_parent $context['_parent'];
  247.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['o'], $context['_parent'], $context['loop']);
  248.         $context array_intersect_key($context$_parent) + $_parent;
  249.         // line 93
  250.         yield "    </div>
  251.     <div class=\"section-divider mx-auto my-5\"></div>
  252.   </div>
  253. </section>
  254. ";
  255.         // line 102
  256.         yield "<section class=\"py-5 bg-white\">
  257.   <div class=\"container\">
  258.     <header class=\"mb-3\">
  259.       <h2 class=\"h3 text-success mb-1 fw-bold\">Nos O&#39;Sélections</h2>
  260.       <p class=\"text-muted mb-0\">Découvrez nos dernières expériences en immersion !</p>
  261.     </header>
  262.     <div class=\"row g-3 g-md-4\">
  263.  ";
  264.         // line 111
  265.         $context['_parent'] = $context;
  266.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["offEscapade"]) || array_key_exists("offEscapade"$context) ? $context["offEscapade"] : (function () { throw new RuntimeError('Variable "offEscapade" does not exist.'111$this->source); })()));
  267.         foreach ($context['_seq'] as $context["_key"] => $context["offer"]) {
  268.             // line 112
  269.             yield "    <div class=\"col-12 col-sm-6 col-lg-3\">
  270.       <article class=\"card card-dest border-0 shadow-sm h-100 overflow-hidden rounded-4\">
  271.       ";
  272.             // line 114
  273.             if (CoreExtension::getAttribute($this->env$this->source$context["offer"], "destination", [], "any"falsefalsefalse114)) {
  274.                 // line 115
  275.                 yield "        <a href=\"";
  276.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.escapade.destination", ["slug" => CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["offer"], "destination", [], "any"falsefalsefalse115), "slug", [], "any"falsefalsefalse115)]), "html"nulltrue);
  277.                 yield "\" class=\"stretched-link text-decoration-none text-white\">
  278.           <div class=\"ratio ratio-4x5\">
  279.               <img src=\"";
  280.                 // line 117
  281.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(((("img/destination/" CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["offer"], "destination", [], "any"falsefalsefalse117), "slug", [], "any"falsefalsefalse117)) . "/") . CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["offer"], "destination", [], "any"falsefalsefalse117), "img", [], "any"falsefalsefalse117))), "html"nulltrue);
  282.                 yield "\" alt=\"";
  283.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["offer"], "title", [], "any"falsefalsefalse117), "html"nulltrue);
  284.                 yield "\" class=\"object-fit-cover w-100 h-100\">
  285.           </div>
  286.           <div class=\"card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4\">
  287.              ";
  288.                 // line 121
  289.                 yield "                <h3 class=\"h5 fw-bold text-white text-shadow-sm mb-0\">";
  290.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["offer"], "title", [], "any"falsefalsefalse121), "html"nulltrue);
  291.                 yield "</h3>
  292.               <div class=\"mt-3\">
  293.                   <span class=\"btn btn-outline-light btn-sm rounded-pill\">Découvrir</span>
  294.               </div>
  295.           </div>
  296.           </a>
  297.         ";
  298.             }
  299.             // line 128
  300.             yield "        </article>
  301.       </div>
  302. ";
  303.         }
  304.         $_parent $context['_parent'];
  305.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['offer'], $context['_parent'], $context['loop']);
  306.         $context array_intersect_key($context$_parent) + $_parent;
  307.         // line 131
  308.         yield "
  309.     <div class=\"section-divider mx-auto my-5\"></div>
  310.   </div>
  311. </section>
  312. ";
  313.         // line 139
  314.         yield "<section class=\"cta-parallax text-white text-center\">
  315.   ";
  316.         // line 141
  317.         yield "  <div class=\"cta-parallax__bg\" style=\"--bg:url('";
  318.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/para.jpg"), "html"nulltrue);
  319.         yield "');\"></div>
  320.   <div class=\"cta-parallax__overlay\"></div>
  321.   <div class=\"container position-relative py-5 py-lg-7\">
  322.     <h2 class=\"display-6 fw-bold text-shadow-sm mb-3\">Une envie de voyage particulière ?</h2>
  323.     ";
  324.         // line 149
  325.         yield "    <ul class=\"cta-chips list-unstyled mx-auto mb-3\" role=\"list\" aria-label=\"Idées de voyages\">
  326.       ";
  327.         // line 150
  328.         $context["tags"] = ["Randonnée""Road trip""Croisière""Immersion""Aventure""Découverte"];
  329.         // line 151
  330.         yield "      ";
  331.         // line 154
  332.         yield "      ";
  333.         $context['_parent'] = $context;
  334.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["continents"]) || array_key_exists("continents"$context) ? $context["continents"] : (function () { throw new RuntimeError('Variable "continents" does not exist.'154$this->source); })()));
  335.         foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  336.             // line 155
  337.             yield "        <a class=\"chip chip--ghost\" href=\"";
  338.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.continent", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["c"], "slug", [], "any"falsefalsefalse155)]), "html"nulltrue);
  339.             yield "\"><li>";
  340.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["c"], "name", [], "any"falsefalsefalse155), "html"nulltrue);
  341.             yield "</li></a> 
  342.       ";
  343.         }
  344.         $_parent $context['_parent'];
  345.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['c'], $context['_parent'], $context['loop']);
  346.         $context array_intersect_key($context$_parent) + $_parent;
  347.         // line 157
  348.         yield "    </ul>
  349.     <p class=\"opacity-90 mb-4\">Construisez votre voyage avec un spécialiste</p>
  350.     <div class=\"d-flex gap-2 justify-content-center flex-wrap\">
  351.       <a href=\"";
  352.         // line 162
  353.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.contact");
  354.         yield "\" class=\"btn btn-outline-light rounded-pill\">Nous contacter</a>
  355.       <a href=\"";
  356.         // line 163
  357.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.devis");
  358.         yield "\" class=\"btn btn-primary rounded-pill\">Demander un devis</a>
  359.     </div>
  360.   </div>
  361. </section>
  362. ";
  363.         // line 171
  364.         yield "<section class=\"py-5 bg-white\">
  365.   <div class=\"container\">
  366.     ";
  367.         // line 175
  368.         yield "    <div class=\"row align-items-center g-4\">
  369.       <div class=\"col-12 col-lg-6\">
  370.         <div id=\"carouselAtouts\" class=\"carousel slide rounded-4 overflow-hidden shadow-sm\" data-bs-ride=\"carousel\">
  371.           <div class=\"carousel-inner\">
  372.             <div class=\"carousel-item active\">
  373.               <img src=\"";
  374.         // line 180
  375.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/photo-agence.jpg"), "html"nulltrue);
  376.         yield "\" class=\"d-block w-100 object-fit-cover\" alt=\"Voyage 1\">
  377.             </div>
  378.             <div class=\"carousel-item\">
  379.               <img src=\"";
  380.         // line 183
  381.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/photo-agence-0.jpg"), "html"nulltrue);
  382.         yield "\" class=\"d-block w-100 object-fit-cover\" alt=\"Voyage 2\">
  383.             </div>
  384.           </div>
  385.           <button class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselAtouts\" data-bs-slide=\"prev\">
  386.             <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>
  387.             <span class=\"visually-hidden\">Précédent</span>
  388.           </button>
  389.           <button class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselAtouts\" data-bs-slide=\"next\">
  390.             <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>
  391.             <span class=\"visually-hidden\">Suivant</span>
  392.           </button>
  393.         </div>
  394.       </div>
  395.       <div class=\"col-12 col-lg-6\">
  396.         <h2 class=\"h3 txt-ot-green fw-bold mb-3\">Pourquoi voyager avec O’TROPIK ?</h2>
  397.         <p class=\"text-muted\">Chez O’TROPIK, agence de voyage en Guadeloupe, nous croyons que chaque voyage doit être unique, conçu avec soin et entièrement adapté à vos envies. Spécialisée dans les voyages sur mesure au départ des Antilles, notre équipe met son expertise au service de vos projets d’évasion.</p>
  398.         <p class=\"text-muted\">Forte d’une solide expérience dans le secteur du tourisme et animée par une véritable passion pour le voyage, notre agence accompagne les voyageurs dans la création de séjours personnalisés, circuits et escapades vers des destinations d’exception.</p>
  399.         <p class=\"text-muted\">Notre priorité : vous offrir des vacances inoubliables, avec un accompagnement attentif et privilégié à chaque étape, de la conception de votre itinéraire jusqu’à votre retour en Guadeloupe.</p>
  400.       ";
  401.         // line 205
  402.         yield 
  403.       </div>
  404.     </div>
  405.     ";
  406.         // line 210
  407.         yield "    <div class=\"row mt-5 mb-2\">
  408.       <div class=\"col-12 mb-3\">
  409.         <h2 class=\"h3 fw-bold txt-ot-green\">O’ Atouts</h2>
  410.         <p class=\"text-muted mb-0\">Parce que chaque détail compte, voici ce qui rend nos voyages uniques.</p>
  411.       </div>
  412.       ";
  413.         // line 215
  414.         $context['_parent'] = $context;
  415.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["atouts"]) || array_key_exists("atouts"$context) ? $context["atouts"] : (function () { throw new RuntimeError('Variable "atouts" does not exist.'215$this->source); })()));
  416.         foreach ($context['_seq'] as $context["_key"] => $context["a"]) {
  417.             // line 216
  418.             yield "         <div class=\"col-12 col-md-6 col-lg-3 mb-3\">
  419.         <div class=\"p-3 text-center h-100 border rounded-4 shadow-sm\">
  420.           <strong class=\"txt-ot-green\">";
  421.             // line 218
  422.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["a"], "title", [], "any"falsefalsefalse218), "html"nulltrue);
  423.             yield "</strong><br>
  424.           <small class=\"text-muted\">";
  425.             // line 219
  426.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["a"], "description", [], "any"falsefalsefalse219), "html"nulltrue);
  427.             yield "</small>
  428.         </div>
  429.       </div>
  430.       ";
  431.         }
  432.         $_parent $context['_parent'];
  433.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['a'], $context['_parent'], $context['loop']);
  434.         $context array_intersect_key($context$_parent) + $_parent;
  435.         // line 223
  436.         yield "    </div>
  437.     <div class=\"section-divider mx-auto my-5\"></div>
  438.   </div>
  439. </section>
  440. <section>
  441. <h2 class=\"h3 fw-bold txt-ot-green text-center\"> Accréditations & partenaires de confiance</h2>
  442.   <div class=\"partner-slider\">
  443.   <div class=\"track\">
  444.     <img src=\"/img/logos/apst.png\" alt=\"APST\">
  445.     <img src=\"/img/logos/assurever.png\" alt=\"Assurever\">
  446.     <img src=\"/img/logos/hiscox.png\" alt=\"Hiscox\">
  447.     <img src=\"/img/logos/iata.png\" alt=\"IATA\">
  448.     <img src=\"/img/logos/atout-france.png\" alt=\"Atout France\">
  449.     <img src=\"/img/logos/tourcom.png\" alt=\"TourCom\">
  450.   </div>
  451. </div>
  452. </section>
  453. ";
  454.         // line 264
  455.         yield "
  456. ";
  457.         // line 268
  458.         yield "<section class=\"py-5 bg-white\">
  459.   <div class=\"container\">
  460.     <div class=\"row text-center g-4\">
  461.       <div class=\"col-12 col-md-4\">
  462.         <div class=\"contact-ico mb-2\" style=\"font-size: 2em;color: #1a8754;\"><i class=\"bi bi-clock\"></i></div>
  463.         <h3 class=\"text-success h6 fw-bold\">Horaire Agence</h3>
  464.         <p class=\"small text-muted mb-0\">Du lundi au Vendredi de 09h à 12h et de 13H à 17h00 <br>Un samedi sur deux</p>
  465.       </div>
  466.       <div class=\"col-12 col-md-4\">
  467.         <div class=\"contact-ico mb-2\" style=\"font-size: 2em;color: #1a8754;\"><i class=\"bi bi-telephone\"></i></div>
  468.         <h3 class=\"text-success h6 fw-bold\">Téléphone</h3>
  469.        
  470.         <p class=\"small text-muted mb-0\">
  471.         ";
  472.         // line 281
  473.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'281$this->source); })()), "phone", [], "any"falsefalsefalse281)) {
  474.             yield 
  475.         Bureau : <a class=\"link-info\" href=\"tel:+590590505134\">";
  476.             // line 282
  477.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'282$this->source); })()), "phone", [], "any"falsefalsefalse282), "html"nulltrue);
  478.             yield "</a><br> ";
  479.         }
  480.         // line 283
  481.         yield "        ";
  482.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'283$this->source); })()), "mobile", [], "any"falsefalsefalse283)) {
  483.             yield 
  484.         Mobile : <a class=\"link-info\" href=\"tel:+590690357030\">";
  485.             // line 284
  486.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'284$this->source); })()), "mobile", [], "any"falsefalsefalse284), "html"nulltrue);
  487.             yield "</a><br> ";
  488.         }
  489.         // line 285
  490.         yield "        ";
  491.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'285$this->source); })()), "mobileTwo", [], "any"falsefalsefalse285)) {
  492.             yield 
  493.         Mobile : <a class=\"link-info\" href=\"tel:+590690762562\">";
  494.             // line 286
  495.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'286$this->source); })()), "mobileTwo", [], "any"falsefalsefalse286), "html"nulltrue);
  496.             yield "</a> ";
  497.         }
  498.         // line 287
  499.         yield "
  500.         </p>
  501.       </div>
  502.       <div class=\"col-12 col-md-4\">
  503.         <div class=\"contact-ico mb-2\" style=\"font-size: 2em;color: #1a8754;\"><i class=\"bi bi-geo-alt\"></i></div>
  504.         <h3 class=\"text-success h6 fw-bold\">Localisation</h3>
  505.         <p class=\"small text-muted mb-0\">";
  506.         // line 293
  507.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'293$this->source); })()), "adress", [], "any"falsefalsefalse293), "html"nulltrue);
  508.         yield " <br> ";
  509.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'293$this->source); })()), "zip", [], "any"falsefalsefalse293), "html"nulltrue);
  510.         yield " ";
  511.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["infos"]) || array_key_exists("infos"$context) ? $context["infos"] : (function () { throw new RuntimeError('Variable "infos" does not exist.'293$this->source); })()), "city", [], "any"falsefalsefalse293), "html"nulltrue);
  512.         yield " </p>
  513.       </div>
  514.     </div>
  515.   </div>
  516. </section>
  517. <script>
  518. document.addEventListener(\"DOMContentLoaded\", function () {
  519.   const slider = document.querySelector('.partner-slider');
  520.   const track = slider.querySelector('.track');
  521.   const logos = [...track.children];
  522.   const dotsContainer = slider.querySelector('.dots');
  523.   // clone images to simulate infinite scroll visually
  524.   logos.forEach(logo => {
  525.     const clone = logo.cloneNode(true);
  526.     track.appendChild(clone);
  527.   });
  528.   // create dots
  529.   logos.forEach((_, i) => {
  530.     const dot = document.createElement('span');
  531.     if (i === 0) dot.classList.add('active');
  532.     dotsContainer.appendChild(dot);
  533.   });
  534.   let index = 0;
  535.   const dots = [...dotsContainer.children];
  536.   setInterval(() => {
  537.     index = (index + 1) % logos.length;
  538.     dots.forEach(d => d.classList.remove('active'));
  539.     dots[index].classList.add('active');
  540.   }, 3000);
  541. });
  542. </script>
  543. ";
  544.         
  545.         $__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
  546.         
  547.         $__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
  548.         return; yield '';
  549.     }
  550.     /**
  551.      * @codeCoverageIgnore
  552.      */
  553.     public function getTemplateName()
  554.     {
  555.         return "default/index.html.twig";
  556.     }
  557.     /**
  558.      * @codeCoverageIgnore
  559.      */
  560.     public function isTraitable()
  561.     {
  562.         return false;
  563.     }
  564.     /**
  565.      * @codeCoverageIgnore
  566.      */
  567.     public function getDebugInfo()
  568.     {
  569.         return array (  558 => 293,  550 => 287,  546 => 286,  541 => 285,  537 => 284,  532 => 283,  528 => 282,  524 => 281,  509 => 268,  506 => 264,  481 => 223,  471 => 219,  467 => 218,  463 => 216,  459 => 215,  452 => 210,  446 => 205,  423 => 183,  417 => 180,  410 => 175,  405 => 171,  397 => 163,  393 => 162,  386 => 157,  375 => 155,  370 => 154,  368 => 151,  366 => 150,  363 => 149,  352 => 141,  349 => 139,  342 => 131,  334 => 128,  323 => 121,  315 => 117,  309 => 115,  307 => 114,  303 => 112,  299 => 111,  288 => 102,  280 => 93,  265 => 84,  261 => 83,  253 => 80,  250 => 79,  244 => 77,  242 => 76,  237 => 75,  235 => 74,  230 => 73,  228 => 72,  224 => 70,  220 => 69,  212 => 64,  208 => 63,  204 => 62,  194 => 54,  186 => 46,  182 => 45,  178 => 44,  174 => 43,  163 => 35,  157 => 32,  153 => 30,  147 => 28,  140 => 26,  138 => 25,  134 => 23,  131 => 19,  121 => 18,  109 => 15,  102 => 10,  98 => 9,  91 => 4,  81 => 3,  61 => 2,  38 => 1,);
  570.     }
  571.     public function getSourceContext()
  572.     {
  573.         return new Source("{% extends 'base.html.twig' %}
  574. {% block title %}OTropik – Agence de voyage en Guadeloupe | Circuits & Séjours sur mesure{% endblock %}
  575. {% block seo %}
  576.  <meta name=\"description\" content=\"Découvrez OTropik, agence de voyages proposant circuits, séjours, roadtrips et croisières sur mesure depuis la Guadeloupe vers le monde entier.\" >
  577. \t<meta property=\"og:title\" content=\"OTropik – Agence de voyages, circuits et séjours sur mesure\" />
  578. \t<meta property=\"og:type\" content=\"Website\" />
  579. \t<meta property=\"og:description\" content=\"Explorez le monde avec OTropik : circuits, séjours, roadtrips et croisières sur mesure depuis la Guadeloupe.\" />
  580. \t<meta property=\"og:url\" content=\"{{absolute_url( app.request.uri)}}\" />
  581. \t<meta property=\"og:image\" content=\"{#{asset('img/asset/cardimg-fb.jpg')}#}\" />
  582. \t<meta name =\"twitter:card\" content=\"summary_large_image\" />
  583. \t<meta name=\"twitter:title\" content=\"OTropik – Agence de voyages, circuits et séjours sur mesure\">
  584. \t<meta name=\"twitter:description\" content=\"Explorez le monde avec OTropik : circuits, séjours, roadtrips et croisières sur mesure depuis la Guadeloupe.\">
  585. \t<meta name=\"twitter:image\" content=\"{#{asset('img/asset/cardimg-fb.jpg')}#}\">
  586. {% endblock %}
  587. {% block body %}
  588. {# -----------------------------
  589.    HERO avec fond + recherche
  590. ------------------------------ #}
  591. <section class=\"section-hero position-relative\">
  592.   <picture>
  593.   {% if banner.img %}
  594.   <img src=\"{{ asset('img/banner/')}}{{banner.img}}\" alt=\"Plage paradisiaque\" class=\"hero-bg w-100 h-100\">
  595.   {% else %}
  596.     <img src=\"{{ asset('img/3004.jpg') }}\" alt=\"Plage paradisiaque en Guadeloupe\" class=\"hero-bg w-100 h-100\">
  597.   {% endif %}
  598.   </picture>
  599.   <div class=\"hero-overlay container py-5 text-center text-white\">
  600.     <img src=\"{{ asset('img/logo-otropik.png') }}\" alt=\"Otropik\" class=\"mb-3\" style=\"max-width: 240px; height: auto;\">
  601.     <p class=\"lead fw-semibold text-shadow-sm\">N&#39;imaginez plus vos vacances, vivez-les !</p>
  602.     <form class=\"d-flex justify-content-center mt-4\" action=\"{{ path('search') }}\" method=\"get\" role=\"search\" aria-label=\"Recherche de séjours\">
  603.       <div class=\"search-pill bg-white rounded-pill shadow-lg d-flex align-items-center overflow-hidden w-100\" style=\"max-width:760px;\">
  604.         <input class=\"form-control border-0 px-4 py-3 flex-grow-1\" type=\"search\" name=\"q\" placeholder=\"Où partez-vous ? (ex: Guadeloupe, New York, croisière…)\" aria-label=\"Rechercher\">
  605.         <button class=\"btn btn-primary rounded-0 px-4 py-3\" type=\"submit\">Rechercher</button>
  606.       </div>
  607.     </form>
  608.     <div class=\"d-flex gap-2 justify-content-center mt-3 flex-wrap\">
  609.       <a href=\"{{ path('o.circuit') }}\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; Circuit</a>
  610.       <a href=\"{{ path('o.escapade') }}\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; Escapade</a>
  611.       <a href=\"{{ path('o.roadtrip') }}\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; RoadTrip</a>
  612.        <a href=\"{{ path('o.croisiere') }}\" class=\"btn btn-outline-light btn-sm rounded-pill\">O&#39; Croisière</a>
  613.     </div>
  614.   </div>
  615. </section>
  616. {# -----------------------------
  617.    Offres du moment + chips
  618. ------------------------------ #}
  619. <section class=\"py-5 bg-white\">
  620.   <div class=\"container\">
  621.     <header class=\"d-flex flex-wrap align-items-center justify-content-between gap-3 mb-3\">
  622.       <div>
  623.         <h2 class=\"h3 text-success mb-1 fw-bold\">Nos O&#39;ffres du moment</h2>
  624.         <p class=\"text-muted mb-0\">Découvrez nos dernières expériences en immersion !</p>
  625.       </div>
  626.      <div class=\"d-flex gap-2 flex-wrap\">
  627.         <a href=\"{{ path('o.circuit') }}\" class=\"chip\">O&#39; Circuit</a>
  628.         <a href=\"{{ path('o.escapade') }}\" class=\"chip\">O&#39; Escapade</a>
  629.         <a href=\"{{ path('o.roadtrip') }}\" class=\"chip\">O&#39; RoadTrip</a>
  630.       </div> 
  631.     </header>
  632.     <div class=\"row g-3 g-md-4\">
  633.       {% for o in ourOffer %}
  634.       <div class=\"col-12 col-sm-6 col-lg-3\">
  635.         <article class=\"card card-offer border-0 shadow-sm h-10s0 overflow-hidden rounded-4\">
  636.           {% if o.type.id ==  1 %}
  637.           <a href=\"{{ path('o.escapade.destination',{slug:o.slug})}}\" class=\"stretched-link text-decoration-none text-white\">
  638.           {% elseif o.type.id == 2 %}
  639.           <a href=\"{{ path('o.circuit.destination',{slug:o.slug})}}\" class=\"stretched-link text-decoration-none text-white\">
  640.           {% elseif o.type.id == 3 %}
  641.           <a href=\"{{ path('o.roadtrip.destination',{slug:o.slug})}}\" class=\"stretched-link text-decoration-none text-white\">
  642.           {% endif %}
  643.             <div class=\"ratio ratio-4x5\">
  644.               <img src=\"{{asset('img/offer/' ~ o.file  ~ '/' ~ o.slug  ~ '/' ~ o.img)}}\" alt=\"{{ o.file }}\" class=\"object-fit-cover w-100 h-100\">
  645.             </div>
  646.             <div class=\"card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4\">
  647.               <span>{{ o.type.name }}</span>
  648.               <h3 class=\"h5 fw-bold text-white text-shadow-sm mb-3\">{{ o.title }}</h3>
  649.               <div>
  650.                 <span class=\"btn btn-outline-light btn-sm rounded-pill\">Découvrir</span>
  651.               </div>
  652.             </div>
  653.           </a>
  654.         </article>
  655.       </div>
  656.       {% endfor %}
  657.     </div>
  658.     <div class=\"section-divider mx-auto my-5\"></div>
  659.   </div>
  660. </section>
  661. {# -----------------------------
  662.    O&#39;Selection (grille 4 cartes)
  663. ------------------------------ #}
  664. <section class=\"py-5 bg-white\">
  665.   <div class=\"container\">
  666.     <header class=\"mb-3\">
  667.       <h2 class=\"h3 text-success mb-1 fw-bold\">Nos O&#39;Sélections</h2>
  668.       <p class=\"text-muted mb-0\">Découvrez nos dernières expériences en immersion !</p>
  669.     </header>
  670.     <div class=\"row g-3 g-md-4\">
  671.  {% for offer in offEscapade %}
  672.     <div class=\"col-12 col-sm-6 col-lg-3\">
  673.       <article class=\"card card-dest border-0 shadow-sm h-100 overflow-hidden rounded-4\">
  674.       {% if offer.destination %}
  675.         <a href=\"{{ path('o.escapade.destination',{slug:offer.destination.slug}) }}\" class=\"stretched-link text-decoration-none text-white\">
  676.           <div class=\"ratio ratio-4x5\">
  677.               <img src=\"{{asset('img/destination/' ~ offer.destination.slug  ~ '/' ~ offer.destination.img)}}\" alt=\"{{ offer.title }}\" class=\"object-fit-cover w-100 h-100\">
  678.           </div>
  679.           <div class=\"card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4\">
  680.              {# <span class=\"badge bg-light text-dark rounded-pill small mb-2\">{{ c.badge }}</span> #}
  681.                 <h3 class=\"h5 fw-bold text-white text-shadow-sm mb-0\">{{ offer.title }}</h3>
  682.               <div class=\"mt-3\">
  683.                   <span class=\"btn btn-outline-light btn-sm rounded-pill\">Découvrir</span>
  684.               </div>
  685.           </div>
  686.           </a>
  687.         {% endif %}
  688.         </article>
  689.       </div>
  690. {% endfor %}
  691.     <div class=\"section-divider mx-auto my-5\"></div>
  692.   </div>
  693. </section>
  694. {# -----------------------------
  695.    Bandeau CTA parallax
  696. ------------------------------ #}
  697. <section class=\"cta-parallax text-white text-center\">
  698.   {# bg en CSS via variable -> parallax #}
  699.   <div class=\"cta-parallax__bg\" style=\"--bg:url('{{ asset('img/para.jpg') }}');\"></div>
  700.   <div class=\"cta-parallax__overlay\"></div>
  701.   <div class=\"container position-relative py-5 py-lg-7\">
  702.     <h2 class=\"display-6 fw-bold text-shadow-sm mb-3\">Une envie de voyage particulière ?</h2>
  703.     {# tags / chips #}
  704.     <ul class=\"cta-chips list-unstyled mx-auto mb-3\" role=\"list\" aria-label=\"Idées de voyages\">
  705.       {% set tags = ['Randonnée','Road trip','Croisière','Immersion','Aventure','Découverte'] %}
  706.       {#{% for t in tags %}
  707.         <li class=\"chip chip--ghost\">{{ t }}</li>
  708.       {% endfor %}#}
  709.       {% for c in continents %}
  710.         <a class=\"chip chip--ghost\" href=\"{{path('o.continent',{slug:c.slug})}}\"><li>{{ c.name }}</li></a> 
  711.       {% endfor %}
  712.     </ul>
  713.     <p class=\"opacity-90 mb-4\">Construisez votre voyage avec un spécialiste</p>
  714.     <div class=\"d-flex gap-2 justify-content-center flex-wrap\">
  715.       <a href=\"{{ path('o.contact') }}\" class=\"btn btn-outline-light rounded-pill\">Nous contacter</a>
  716.       <a href=\"{{ path('o.devis') }}\" class=\"btn btn-primary rounded-pill\">Demander un devis</a>
  717.     </div>
  718.   </div>
  719. </section>
  720. {# -----------------------------
  721.    Pourquoi voyager avec nous + O’Atouts
  722. ------------------------------ #}
  723. <section class=\"py-5 bg-white\">
  724.   <div class=\"container\">
  725.     {# --- Partie Pourquoi voyager avec nous --- #}
  726.     <div class=\"row align-items-center g-4\">
  727.       <div class=\"col-12 col-lg-6\">
  728.         <div id=\"carouselAtouts\" class=\"carousel slide rounded-4 overflow-hidden shadow-sm\" data-bs-ride=\"carousel\">
  729.           <div class=\"carousel-inner\">
  730.             <div class=\"carousel-item active\">
  731.               <img src=\"{{ asset('img/photo-agence.jpg') }}\" class=\"d-block w-100 object-fit-cover\" alt=\"Voyage 1\">
  732.             </div>
  733.             <div class=\"carousel-item\">
  734.               <img src=\"{{ asset('img/photo-agence-0.jpg') }}\" class=\"d-block w-100 object-fit-cover\" alt=\"Voyage 2\">
  735.             </div>
  736.           </div>
  737.           <button class=\"carousel-control-prev\" type=\"button\" data-bs-target=\"#carouselAtouts\" data-bs-slide=\"prev\">
  738.             <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>
  739.             <span class=\"visually-hidden\">Précédent</span>
  740.           </button>
  741.           <button class=\"carousel-control-next\" type=\"button\" data-bs-target=\"#carouselAtouts\" data-bs-slide=\"next\">
  742.             <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>
  743.             <span class=\"visually-hidden\">Suivant</span>
  744.           </button>
  745.         </div>
  746.       </div>
  747.       <div class=\"col-12 col-lg-6\">
  748.         <h2 class=\"h3 txt-ot-green fw-bold mb-3\">Pourquoi voyager avec O’TROPIK ?</h2>
  749.         <p class=\"text-muted\">Chez O’TROPIK, agence de voyage en Guadeloupe, nous croyons que chaque voyage doit être unique, conçu avec soin et entièrement adapté à vos envies. Spécialisée dans les voyages sur mesure au départ des Antilles, notre équipe met son expertise au service de vos projets d’évasion.</p>
  750.         <p class=\"text-muted\">Forte d’une solide expérience dans le secteur du tourisme et animée par une véritable passion pour le voyage, notre agence accompagne les voyageurs dans la création de séjours personnalisés, circuits et escapades vers des destinations d’exception.</p>
  751.         <p class=\"text-muted\">Notre priorité : vous offrir des vacances inoubliables, avec un accompagnement attentif et privilégié à chaque étape, de la conception de votre itinéraire jusqu’à votre retour en Guadeloupe.</p>
  752.       {# <div class=\"mt-4\">
  753.           <a href=\"{#{ path('app_agence') }}\" class=\"btn btn-primary\">En savoir plus</a>
  754.         </div> #} 
  755.       </div>
  756.     </div>
  757.     {# --- O’Atouts (sous la row principale) --- #}
  758.     <div class=\"row mt-5 mb-2\">
  759.       <div class=\"col-12 mb-3\">
  760.         <h2 class=\"h3 fw-bold txt-ot-green\">O’ Atouts</h2>
  761.         <p class=\"text-muted mb-0\">Parce que chaque détail compte, voici ce qui rend nos voyages uniques.</p>
  762.       </div>
  763.       {% for a in atouts %}
  764.          <div class=\"col-12 col-md-6 col-lg-3 mb-3\">
  765.         <div class=\"p-3 text-center h-100 border rounded-4 shadow-sm\">
  766.           <strong class=\"txt-ot-green\">{{a.title}}</strong><br>
  767.           <small class=\"text-muted\">{{a.description}}</small>
  768.         </div>
  769.       </div>
  770.       {% endfor %}
  771.     </div>
  772.     <div class=\"section-divider mx-auto my-5\"></div>
  773.   </div>
  774. </section>
  775. <section>
  776. <h2 class=\"h3 fw-bold txt-ot-green text-center\"> Accréditations & partenaires de confiance</h2>
  777.   <div class=\"partner-slider\">
  778.   <div class=\"track\">
  779.     <img src=\"/img/logos/apst.png\" alt=\"APST\">
  780.     <img src=\"/img/logos/assurever.png\" alt=\"Assurever\">
  781.     <img src=\"/img/logos/hiscox.png\" alt=\"Hiscox\">
  782.     <img src=\"/img/logos/iata.png\" alt=\"IATA\">
  783.     <img src=\"/img/logos/atout-france.png\" alt=\"Atout France\">
  784.     <img src=\"/img/logos/tourcom.png\" alt=\"TourCom\">
  785.   </div>
  786. </div>
  787. </section>
  788. {# -----------------------------
  789.    Call to action (bandeau photo)
  790. ------------------------------ 
  791. <section class=\"position-relative overflow-hidden\">
  792.   <div class=\"ratio ratio-21x9\">
  793.     <img src=\"{{ asset('img/cta-tourist.jpg') }}\" alt=\"Famille en voyage\" class=\"object-fit-cover w-100 h-100\">
  794.   </div>
  795.   <div class=\"position-absolute top-0 start-0 w-100 h-100 d-flex align-items-center\">
  796.     <div class=\"container\">
  797.       <div class=\"row\">
  798.         <div class=\"col-12 col-lg-6 text-white\">
  799.           <h2 class=\"h4 mb-1\">Call to action</h2>
  800.           <p class=\"mb-0 opacity-90\">Accroche…</p>
  801.         </div>
  802.       </div>
  803.     </div>
  804.   </div>
  805. </section>. #}
  806. {# -----------------------------
  807.    Infos contact (3 colonnes)
  808. ------------------------------ #}
  809. <section class=\"py-5 bg-white\">
  810.   <div class=\"container\">
  811.     <div class=\"row text-center g-4\">
  812.       <div class=\"col-12 col-md-4\">
  813.         <div class=\"contact-ico mb-2\" style=\"font-size: 2em;color: #1a8754;\"><i class=\"bi bi-clock\"></i></div>
  814.         <h3 class=\"text-success h6 fw-bold\">Horaire Agence</h3>
  815.         <p class=\"small text-muted mb-0\">Du lundi au Vendredi de 09h à 12h et de 13H à 17h00 <br>Un samedi sur deux</p>
  816.       </div>
  817.       <div class=\"col-12 col-md-4\">
  818.         <div class=\"contact-ico mb-2\" style=\"font-size: 2em;color: #1a8754;\"><i class=\"bi bi-telephone\"></i></div>
  819.         <h3 class=\"text-success h6 fw-bold\">Téléphone</h3>
  820.        
  821.         <p class=\"small text-muted mb-0\">
  822.         {% if infos.phone %} 
  823.         Bureau : <a class=\"link-info\" href=\"tel:+590590505134\">{{infos.phone}}</a><br> {% endif %}
  824.         {% if infos.mobile %} 
  825.         Mobile : <a class=\"link-info\" href=\"tel:+590690357030\">{{infos.mobile}}</a><br> {% endif %}
  826.         {% if infos.mobileTwo %} 
  827.         Mobile : <a class=\"link-info\" href=\"tel:+590690762562\">{{infos.mobileTwo}}</a> {% endif %}
  828.         </p>
  829.       </div>
  830.       <div class=\"col-12 col-md-4\">
  831.         <div class=\"contact-ico mb-2\" style=\"font-size: 2em;color: #1a8754;\"><i class=\"bi bi-geo-alt\"></i></div>
  832.         <h3 class=\"text-success h6 fw-bold\">Localisation</h3>
  833.         <p class=\"small text-muted mb-0\">{{infos.adress}} <br> {{infos.zip}} {{infos.city}} </p>
  834.       </div>
  835.     </div>
  836.   </div>
  837. </section>
  838. <script>
  839. document.addEventListener(\"DOMContentLoaded\", function () {
  840.   const slider = document.querySelector('.partner-slider');
  841.   const track = slider.querySelector('.track');
  842.   const logos = [...track.children];
  843.   const dotsContainer = slider.querySelector('.dots');
  844.   // clone images to simulate infinite scroll visually
  845.   logos.forEach(logo => {
  846.     const clone = logo.cloneNode(true);
  847.     track.appendChild(clone);
  848.   });
  849.   // create dots
  850.   logos.forEach((_, i) => {
  851.     const dot = document.createElement('span');
  852.     if (i === 0) dot.classList.add('active');
  853.     dotsContainer.appendChild(dot);
  854.   });
  855.   let index = 0;
  856.   const dots = [...dotsContainer.children];
  857.   setInterval(() => {
  858.     index = (index + 1) % logos.length;
  859.     dots.forEach(d => d.classList.remove('active'));
  860.     dots[index].classList.add('active');
  861.   }, 3000);
  862. });
  863. </script>
  864. {% endblock %}""default/index.html.twig""/home/ladomitiyc/otropik/templates/default/index.html.twig");
  865.     }
  866. }