var/cache/dev/twig/df/dfbee6214afe9ce7fca5b8c02b02fc3e.php line 54

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/escapade-destination.html.twig */
  15. class __TwigTemplate_16fd5c3d2dfbb1870001d7672b1b1ba4 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.             'header_classes' => [$this'block_header_classes'],
  27.             'navbar_theme' => [$this'block_navbar_theme'],
  28.             'body' => [$this'block_body'],
  29.             'extra_head' => [$this'block_extra_head'],
  30.         ];
  31.     }
  32.     protected function doGetParent(array $context)
  33.     {
  34.         // line 2
  35.         return "base.html.twig";
  36.     }
  37.     protected function doDisplay(array $context, array $blocks = [])
  38.     {
  39.         $macros $this->macros;
  40.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  41.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""default/escapade-destination.html.twig"));
  42.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  43.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""default/escapade-destination.html.twig"));
  44.         $this->parent $this->loadTemplate("base.html.twig""default/escapade-destination.html.twig"2);
  45.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  46.         
  47.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  48.         
  49.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  50.     }
  51.     // line 4
  52.     public function block_title($context, array $blocks = [])
  53.     {
  54.         $macros $this->macros;
  55.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  56.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  57.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  58.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  59.         yield "O'Escapade — ";
  60.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'4$this->source); })()), "title", [], "any"falsefalsefalse4), "html"nulltrue);
  61.         yield " | O Tropik – Agence de voyage en Guadeloupe ";
  62.         
  63.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  64.         
  65.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  66.         return; yield '';
  67.     }
  68.     // line 5
  69.     public function block_seo($context, array $blocks = [])
  70.     {
  71.         $macros $this->macros;
  72.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  73.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""seo"));
  74.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  75.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""seo"));
  76.         // line 6
  77.         yield " <meta name=\"description\" content=\"";
  78.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'6$this->source); })()), "description", [], "any"falsefalsefalse6), "html"nulltrue);
  79.         yield "\" >
  80. \t<meta property=\"og:title\" content=\"";
  81.         // line 8
  82.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'8$this->source); })()), "metaTitle", [], "any"falsefalsefalse8), "html"nulltrue);
  83.         yield "\" />
  84. \t<meta property=\"og:type\" content=\"Website\" />
  85. \t<meta property=\"og:description\" content=\"";
  86.         // line 10
  87.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'10$this->source); })()), "metaDescription", [], "any"falsefalsefalse10), "html"nulltrue);
  88.         yield "\" />
  89. \t<meta property=\"og:url\" content=\"";
  90.         // line 11
  91.         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.'11$this->source); })()), "request", [], "any"falsefalsefalse11), "uri", [], "any"falsefalsefalse11)), "html"nulltrue);
  92.         yield "\" />
  93. \t<meta property=\"og:image\" content=\"";
  94.         // line 12
  95.         yield "\" />
  96. \t<meta name =\"twitter:card\" content=\"summary_large_image\" />
  97. \t<meta name=\"twitter:title\" content=\"";
  98.         // line 15
  99.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'15$this->source); })()), "metaTitle", [], "any"falsefalsefalse15), "html"nulltrue);
  100.         yield "\">
  101. \t<meta name=\"twitter:description\" content=\"";
  102.         // line 16
  103.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'16$this->source); })()), "metaDescription", [], "any"falsefalsefalse16), "html"nulltrue);
  104.         yield "\">
  105. \t<meta name=\"twitter:image\" content=\"";
  106.         // line 17
  107.         yield "\">
  108. ";
  109.         
  110.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  111.         
  112.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  113.         return; yield '';
  114.     }
  115.     // line 20
  116.     public function block_header_classes($context, array $blocks = [])
  117.     {
  118.         $macros $this->macros;
  119.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  120.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""header_classes"));
  121.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  122.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""header_classes"));
  123.         yield "header-overlay";
  124.         
  125.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  126.         
  127.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  128.         return; yield '';
  129.     }
  130.     // line 21
  131.     public function block_navbar_theme($context, array $blocks = [])
  132.     {
  133.         $macros $this->macros;
  134.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  135.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""navbar_theme"));
  136.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  137.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""navbar_theme"));
  138.         yield "navbar-dark";
  139.         
  140.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  141.         
  142.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  143.         return; yield '';
  144.     }
  145.     // line 23
  146.     public function block_body($context, array $blocks = [])
  147.     {
  148.         $macros $this->macros;
  149.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  150.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  151.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  152.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  153.         // line 24
  154.         yield "
  155. ";
  156.         // line 28
  157.         yield "<section class=\"hero hero--offer-fallback is-animated position-relative text-white\">
  158.   <div class=\"hero__media ratio ratio-21x9\">
  159.     ";
  160.         // line 30
  161.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'30$this->source); })()), "img", [], "any"falsefalsefalse30)) {
  162.             // line 31
  163.             yield "      <img src=\"";
  164.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(("img/offer/" CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'31$this->source); })()), "img", [], "any"falsefalsefalse31))), "html"nulltrue);
  165.             yield "\"
  166.            alt=\"";
  167.             // line 32
  168.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'32$this->source); })()), "title", [], "any"falsefalsefalse32), "html"nulltrue);
  169.             yield "\"
  170.            class=\"hero__img object-fit-cover w-100 h-100\">
  171.     ";
  172.         } else {
  173.             // line 35
  174.             yield "      <img src=\"";
  175.             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, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'35$this->source); })()), "destination", [], "any"falsefalsefalse35), "slug", [], "any"falsefalsefalse35)) . "/") . CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'35$this->source); })()), "destination", [], "any"falsefalsefalse35), "img", [], "any"falsefalsefalse35))), "html"nulltrue);
  176.             yield "\"
  177.            alt=\"";
  178.             // line 36
  179.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'36$this->source); })()), "title", [], "any"falsefalsefalse36), "html"nulltrue);
  180.             yield "\"
  181.            class=\"hero__img object-fit-cover w-100 h-100\">
  182.     ";
  183.         }
  184.         // line 39
  185.         yield "  </div>
  186.   <div class=\"hero__overlay hero__overlay--left\">
  187.     <div class=\"container\">
  188.       <div class=\"hero__card\" style=\"max-width: 600px;\">
  189.         <h1 class=\"hero__title display-5 fw-bold txt-ot-green mb-3\">";
  190.         // line 44
  191.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'44$this->source); })()), "title", [], "any"falsefalsefalse44), "html"nulltrue);
  192.         yield "</h1>
  193.         <p class=\"hero__subtitle mb-3\">";
  194.         // line 45
  195.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'45$this->source); })()), "subtitle", [], "any"falsefalsefalse45), "html"nulltrue);
  196.         yield "</p>
  197.         ";
  198.         // line 47
  199.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'47$this->source); })()), "includedText", [], "any"falsefalsefalse47)) {
  200.             // line 48
  201.             yield "          <h6 class=\"fw-bold txt-ot-green mb-2\">Inclus :</h6>
  202.           <ul class=\"list-unstyled mb-0\">
  203.             ";
  204.             // line 50
  205.             $context['_parent'] = $context;
  206.             $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::split($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'50$this->source); })()), "includedText", [], "any"falsefalsefalse50), "
  207. "));
  208.             foreach ($context['_seq'] as $context["_key"] => $context["line"]) {
  209.                 // line 51
  210.                 yield "              ";
  211.                 if ((Twig\Extension\CoreExtension::trim($context["line"]) != "")) {
  212.                     // line 52
  213.                     yield "                <li class=\"mb-1\">✔️ ";
  214.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["line"], "html"nulltrue);
  215.                     yield "</li>
  216.               ";
  217.                 }
  218.                 // line 54
  219.                 yield "            ";
  220.             }
  221.             $_parent $context['_parent'];
  222.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['line'], $context['_parent'], $context['loop']);
  223.             $context array_intersect_key($context$_parent) + $_parent;
  224.             // line 55
  225.             yield "          </ul>
  226.         ";
  227.         }
  228.         // line 57
  229.         yield "      </div>
  230.     </div>
  231.   </div>
  232. </section>
  233. ";
  234.         // line 63
  235.         yield "<nav class=\"container my-4\" aria-label=\"breadcrumb\">
  236.   <ol class=\"breadcrumb small\">
  237.     <li class=\"breadcrumb-item\"><a href=\"";
  238.         // line 65
  239.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app");
  240.         yield "\">Accueil</a></li>
  241.     <li class=\"breadcrumb-item\"><a href=\"";
  242.         // line 66
  243.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.escapade");
  244.         yield "\">O'escapade</a></li>
  245.     <li class=\"breadcrumb-item active\" aria-current=\"page\">";
  246.         // line 67
  247.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'67$this->source); })()), "destination", [], "any"falsefalsefalse67), "name", [], "any"falsefalsefalse67), "html"nulltrue);
  248.         yield "</li>
  249.   </ol>
  250. </nav>
  251. ";
  252.         // line 71
  253.         if ((isset($context["formules"]) || array_key_exists("formules"$context) ? $context["formules"] : (function () { throw new RuntimeError('Variable "formules" does not exist.'71$this->source); })())) {
  254.             // line 75
  255.             yield "<section class=\"container py-5\">
  256.   <h2 class=\"display-6 lh-1 fw-bold txt-ot-green mb-4\">Nos formules O’Escapade</h2>
  257.   <div class=\"row row-cols-1 row-cols-md-2 g-4\">
  258.   ";
  259.             // line 80
  260.             $context['_parent'] = $context;
  261.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["formules"]) || array_key_exists("formules"$context) ? $context["formules"] : (function () { throw new RuntimeError('Variable "formules" does not exist.'80$this->source); })()));
  262.             foreach ($context['_seq'] as $context["_key"] => $context["f"]) {
  263.                 // line 81
  264.                 yield "    ";
  265.                 // line 82
  266.                 yield "    <div class=\"col\">
  267.       <div class=\"card h-100 border-0 shadow-sm rounded-4 overflow-hidden\">
  268.         <div class=\"card-body p-4\">
  269.           <span class=\"badge bg-ot-green text-white mb-3\">";
  270.                 // line 85
  271.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["f"], "durationLabel", [], "any"falsefalsefalse85), "html"nulltrue);
  272.                 yield "</span>
  273.           <h3 class=\"h5 fw-bold mb-3\">";
  274.                 // line 86
  275.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["f"], "title", [], "any"falsefalsefalse86), "html"nulltrue);
  276.                 yield "</h3>
  277.           <p class=\"small text-muted mb-2\"><i class=\"bi bi-calendar-week\"></i> Départs :</p>
  278.           <ul class=\"small mb-3\">
  279.             ";
  280.                 // line 90
  281.                 $context['_parent'] = $context;
  282.                 $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::split($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["f"], "departuresText", [], "any"falsefalsefalse90), "
  283. "));
  284.                 foreach ($context['_seq'] as $context["_key"] => $context["line"]) {
  285.                     // line 91
  286.                     yield "                ";
  287.                     if ((Twig\Extension\CoreExtension::trim($context["line"]) != "")) {
  288.                         // line 92
  289.                         yield "                   <li class=\"mb-1\">";
  290.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["line"], "html"nulltrue);
  291.                         yield "</li>
  292.                 ";
  293.                     }
  294.                     // line 94
  295.                     yield "            ";
  296.                 }
  297.                 $_parent $context['_parent'];
  298.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['line'], $context['_parent'], $context['loop']);
  299.                 $context array_intersect_key($context$_parent) + $_parent;
  300.                 // line 95
  301.                 yield "          </ul>
  302.           <p class=\"small text-muted mb-2\"><i class=\"bi bi-airplane\"></i> Transports :</p>
  303.           <ul class=\"small mb-3\">
  304.             ";
  305.                 // line 99
  306.                 $context['_parent'] = $context;
  307.                 $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::split($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["f"], "transportText", [], "any"falsefalsefalse99), "
  308. "));
  309.                 foreach ($context['_seq'] as $context["_key"] => $context["line"]) {
  310.                     // line 100
  311.                     yield "                ";
  312.                     if ((Twig\Extension\CoreExtension::trim($context["line"]) != "")) {
  313.                         // line 101
  314.                         yield "                   <li class=\"mb-1\">";
  315.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["line"], "html"nulltrue);
  316.                         yield "</li>
  317.                 ";
  318.                     }
  319.                     // line 103
  320.                     yield "            ";
  321.                 }
  322.                 $_parent $context['_parent'];
  323.                 unset($context['_seq'], $context['_iterated'], $context['_key'], $context['line'], $context['_parent'], $context['loop']);
  324.                 $context array_intersect_key($context$_parent) + $_parent;
  325.                 // line 104
  326.                 yield "          </ul>
  327.           <p class=\"text-muted small mb-4\">";
  328.                 // line 106
  329.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["f"], "description", [], "any"falsefalsefalse106), "html"nulltrue);
  330.                 yield "</p>
  331.           <a href=\"";
  332.                 // line 107
  333.                 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("o.devis");
  334.                 yield "\" class=\"btn btn-outline-ot-green rounded-pill\">Demander un devis</a>
  335.         </div>
  336.       </div>
  337.     </div>
  338.     ";
  339.             }
  340.             $_parent $context['_parent'];
  341.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['f'], $context['_parent'], $context['loop']);
  342.             $context array_intersect_key($context$_parent) + $_parent;
  343.             // line 112
  344.             yield "</section>
  345.   ";
  346.         }
  347.         // line 114
  348.         yield "
  349. ";
  350.         // line 118
  351.         yield "<section class=\"container py-4 py-md-5\">
  352.   <div class=\"row g-4\">
  353.     <div class=\"col-12 col-lg-6\">
  354.       <p class=\"text-muted small mb-1\">";
  355.         // line 121
  356.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'121$this->source); })()), "title", [], "any"falsefalsefalse121), "html"nulltrue);
  357.         yield "</p>
  358.       <h2 class=\"display-6 lh-1 fw-bold txt-ot-green mb-3\">Hébergement</h2>
  359.       <p class=\"text-muted\">
  360.         Notre sélection d’hôtels partenaires pour une escapade sans fausse note : confort, localisation idéale et accueil au top.
  361.       </p>
  362.     </div>
  363.   </div>
  364.   <div class=\"row g-3 g-md-4 mt-2\">
  365.     ";
  366.         // line 130
  367.         $context['_parent'] = $context;
  368.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["offerHebergement"]) || array_key_exists("offerHebergement"$context) ? $context["offerHebergement"] : (function () { throw new RuntimeError('Variable "offerHebergement" does not exist.'130$this->source); })()));
  369.         foreach ($context['_seq'] as $context["_key"] => $context["h"]) {
  370.             // line 131
  371.             yield "      <div class=\"col-12 col-sm-6 col-lg-4\">
  372.         <article class=\"card hotel-card border-0 shadow-sm h-100 rounded-4 overflow-hidden\">
  373.           <a href=\"";
  374.             // line 133
  375.             yield "\" class=\"stretched-link text-decoration-none\">
  376.             <div class=\"ratio ratio-4x3\">
  377.               <img src=\"";
  378.             // line 135
  379.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(((((("img/hotels/" CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["h"], "hebergement", [], "any"falsefalsefalse135), "country", [], "any"falsefalsefalse135), "slug", [], "any"falsefalsefalse135)) . "/") . CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["h"], "hebergement", [], "any"falsefalsefalse135), "slug", [], "any"falsefalsefalse135)) . "/") . CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["h"], "hebergement", [], "any"falsefalsefalse135), "img", [], "any"falsefalsefalse135))), "html"nulltrue);
  380.             yield "\" alt=\"";
  381.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["h"], "hebergement", [], "any"falsefalsefalse135), "name", [], "any"falsefalsefalse135), "html"nulltrue);
  382.             yield " — photo de l’hôtel\" class=\"object-fit-cover w-100 h-100\">
  383.             </div>
  384.             <div class=\"card-body\">
  385.               <h3 class=\"h6 mb-1 d-flex justify-content-between align-items-baseline\">
  386.                 <span class=\"hotel-name\">";
  387.             // line 139
  388.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["h"], "hebergement", [], "any"falsefalsefalse139), "name", [], "any"falsefalsefalse139), "html"nulltrue);
  389.             yield "</span>
  390.                 <span class=\"hotel-price\">à partir de ";
  391.             // line 140
  392.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["h"], "priceFrom", [], "any"falsefalsefalse140), "html"nulltrue);
  393.             yield "€</span>
  394.               </h3>
  395.               <p class=\"small text-muted mb-0\">";
  396.             // line 142
  397.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["h"], "blurb", [], "any"falsefalsefalse142), "html"nulltrue);
  398.             yield "</p>
  399.             </div>
  400.           </a>
  401.         </article>
  402.       </div>
  403.     ";
  404.         }
  405.         $_parent $context['_parent'];
  406.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['h'], $context['_parent'], $context['loop']);
  407.         $context array_intersect_key($context$_parent) + $_parent;
  408.         // line 148
  409.         yield "  </div>
  410. </section>
  411. ";
  412.         // line 151
  413.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'151$this->source); })()), "widget", [], "any"falsefalsefalse151)) {
  414.             // line 152
  415.             yield "<div class=\"container\">
  416.   <h2 class=\"h3 txt-ot-green fw-bold mb-3\">Activités</h2>
  417. <div class=\"widget\">
  418.   ";
  419.             // line 155
  420.             yield CoreExtension::getAttribute($this->env$this->source, (isset($context["offer"]) || array_key_exists("offer"$context) ? $context["offer"] : (function () { throw new RuntimeError('Variable "offer" does not exist.'155$this->source); })()), "widget", [], "any"falsefalsefalse155);
  421.             yield "
  422. </div>
  423. </div>
  424. ";
  425.         }
  426.         // line 159
  427.         yield "
  428. ";
  429.         // line 177
  430.         yield "
  431. ";
  432.         // line 195
  433.         yield "
  434. ";
  435.         // line 199
  436.         yield "<section class=\"py-5 bg-white\">
  437.   <div class=\"container\">
  438.     <header class=\"mb-3\">
  439.       <h2 class=\"h3 txt-ot-green mb-1 fw-bold\">Nos O'offres du moment</h2>
  440.       <p class=\"text-muted mb-0\">Découvrez nos dernières expériences en immersion !</p>
  441.     </header>
  442.     <div class=\"row g-3 g-md-4\">
  443.       ";
  444.         // line 207
  445.         $context["offres"] = [["title" => "Carnaval St Lucie""img" => "carnaval.jpg""url" => "#"], ["title" => "Croisière Caraïbes""img" => "caraibes.jpg""url" => "#"], ["title" => "Spring Break Cancun""img" => "cancun.jpg""url" => "#"], ["title" => "Road trip Route 66""img" => "road-66.jpg""url" => "#"]];
  446.         // line 213
  447.         yield "      ";
  448.         $context['_parent'] = $context;
  449.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["offres"]) || array_key_exists("offres"$context) ? $context["offres"] : (function () { throw new RuntimeError('Variable "offres" does not exist.'213$this->source); })()));
  450.         foreach ($context['_seq'] as $context["_key"] => $context["o"]) {
  451.             // line 214
  452.             yield "      <div class=\"col-12 col-sm-6 col-lg-3\">
  453.         <article class=\"card card-offer border-0 shadow-sm h-100 overflow-hidden rounded-4\">
  454.           <a href=\"";
  455.             // line 216
  456.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["o"], "url", [], "any"falsefalsefalse216), "html"nulltrue);
  457.             yield "\" class=\"stretched-link text-decoration-none text-white\">
  458.             <div class=\"ratio ratio-4x5\">
  459.               <img src=\"";
  460.             // line 218
  461.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl(("img/offre/" CoreExtension::getAttribute($this->env$this->source$context["o"], "img", [], "any"falsefalsefalse218))), "html"nulltrue);
  462.             yield "\" alt=\"";
  463.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["o"], "title", [], "any"falsefalsefalse218), "html"nulltrue);
  464.             yield "\" class=\"object-fit-cover w-100 h-100\">
  465.             </div>
  466.             <div class=\"card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4\">
  467.               <h3 class=\"h5 fw-bold text-white text-shadow-sm mb-3\">";
  468.             // line 221
  469.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["o"], "title", [], "any"falsefalsefalse221), "html"nulltrue);
  470.             yield "</h3>
  471.               <div>
  472.                 <span class=\"btn btn-outline-light btn-sm\">Découvrir</span>
  473.               </div>
  474.             </div>
  475.           </a>
  476.         </article>
  477.       </div>
  478.       ";
  479.         }
  480.         $_parent $context['_parent'];
  481.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['o'], $context['_parent'], $context['loop']);
  482.         $context array_intersect_key($context$_parent) + $_parent;
  483.         // line 230
  484.         yield "    </div>
  485.     <div class=\"section-divider mx-auto my-5\"></div>
  486.   </div>
  487. </section>
  488. ";
  489.         
  490.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  491.         
  492.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  493.         return; yield '';
  494.     }
  495.     // line 238
  496.     public function block_extra_head($context, array $blocks = [])
  497.     {
  498.         $macros $this->macros;
  499.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  500.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""extra_head"));
  501.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  502.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""extra_head"));
  503.         // line 239
  504.         yield "  ";
  505.         yield from $this->yieldParentBlock("extra_head"$context$blocks);
  506.         yield "
  507.   <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css\">
  508.   <style>
  509.     .text-shadow-sm{ text-shadow:0 2px 4px rgba(0,0,0,.35); }
  510.     .text-ot-green{ color: var(--ot-primary, #2ea37a); }
  511.   </style>
  512. ";
  513.         
  514.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  515.         
  516.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  517.         return; yield '';
  518.     }
  519.     /**
  520.      * @codeCoverageIgnore
  521.      */
  522.     public function getTemplateName()
  523.     {
  524.         return "default/escapade-destination.html.twig";
  525.     }
  526.     /**
  527.      * @codeCoverageIgnore
  528.      */
  529.     public function isTraitable()
  530.     {
  531.         return false;
  532.     }
  533.     /**
  534.      * @codeCoverageIgnore
  535.      */
  536.     public function getDebugInfo()
  537.     {
  538.         return array (  559 => 239,  549 => 238,  532 => 230,  517 => 221,  509 => 218,  504 => 216,  500 => 214,  495 => 213,  493 => 207,  483 => 199,  480 => 195,  477 => 177,  474 => 159,  467 => 155,  462 => 152,  460 => 151,  455 => 148,  443 => 142,  438 => 140,  434 => 139,  425 => 135,  421 => 133,  417 => 131,  413 => 130,  401 => 121,  396 => 118,  393 => 114,  389 => 112,  378 => 107,  374 => 106,  370 => 104,  364 => 103,  358 => 101,  355 => 100,  350 => 99,  344 => 95,  338 => 94,  332 => 92,  329 => 91,  324 => 90,  317 => 86,  313 => 85,  308 => 82,  306 => 81,  302 => 80,  295 => 75,  293 => 71,  286 => 67,  282 => 66,  278 => 65,  274 => 63,  267 => 57,  263 => 55,  257 => 54,  251 => 52,  248 => 51,  243 => 50,  239 => 48,  237 => 47,  232 => 45,  228 => 44,  221 => 39,  215 => 36,  210 => 35,  204 => 32,  199 => 31,  197 => 30,  193 => 28,  190 => 24,  180 => 23,  160 => 21,  140 => 20,  128 => 17,  124 => 16,  120 => 15,  115 => 12,  111 => 11,  107 => 10,  102 => 8,  96 => 6,  86 => 5,  64 => 4,  41 => 2,);
  539.     }
  540.     public function getSourceContext()
  541.     {
  542.         return new Source("{# templates/escapade/show.html.twig #}
  543. {% extends 'base.html.twig' %}
  544. {% block title %}O'Escapade — {{ offer.title }} | O Tropik – Agence de voyage en Guadeloupe {% endblock %}
  545. {% block seo %}
  546.  <meta name=\"description\" content=\"{{offer.description}}\" >
  547. \t<meta property=\"og:title\" content=\"{{offer.metaTitle}}\" />
  548. \t<meta property=\"og:type\" content=\"Website\" />
  549. \t<meta property=\"og:description\" content=\"{{offer.metaDescription}}\" />
  550. \t<meta property=\"og:url\" content=\"{{absolute_url( app.request.uri)}}\" />
  551. \t<meta property=\"og:image\" content=\"{#{asset('img/asset/cardimg-fb.jpg')}#}\" />
  552. \t<meta name =\"twitter:card\" content=\"summary_large_image\" />
  553. \t<meta name=\"twitter:title\" content=\"{{offer.metaTitle}}\">
  554. \t<meta name=\"twitter:description\" content=\"{{offer.metaDescription}}\">
  555. \t<meta name=\"twitter:image\" content=\"{#{asset('img/asset/cardimg-fb.jpg')}#}\">
  556. {% endblock %}
  557. {# Header standard ou overlay si besoin sur le hero #}
  558. {% block header_classes %}header-overlay{% endblock %}
  559. {% block navbar_theme %}navbar-dark{% endblock %}
  560. {% block body %}
  561. {# -----------------------------
  562.    HERO Escapade (avec inclus)
  563. ------------------------------ #}
  564. <section class=\"hero hero--offer-fallback is-animated position-relative text-white\">
  565.   <div class=\"hero__media ratio ratio-21x9\">
  566.     {% if offer.img %}
  567.       <img src=\"{{ asset('img/offer/' ~ offer.img) }}\"
  568.            alt=\"{{ offer.title }}\"
  569.            class=\"hero__img object-fit-cover w-100 h-100\">
  570.     {% else %}
  571.       <img src=\"{{ asset('img/destination/' ~ offer.destination.slug ~ '/' ~ offer.destination.img) }}\"
  572.            alt=\"{{ offer.title }}\"
  573.            class=\"hero__img object-fit-cover w-100 h-100\">
  574.     {% endif %}
  575.   </div>
  576.   <div class=\"hero__overlay hero__overlay--left\">
  577.     <div class=\"container\">
  578.       <div class=\"hero__card\" style=\"max-width: 600px;\">
  579.         <h1 class=\"hero__title display-5 fw-bold txt-ot-green mb-3\">{{ offer.title }}</h1>
  580.         <p class=\"hero__subtitle mb-3\">{{ offer.subtitle }}</p>
  581.         {% if offer.includedText %}
  582.           <h6 class=\"fw-bold txt-ot-green mb-2\">Inclus :</h6>
  583.           <ul class=\"list-unstyled mb-0\">
  584.             {% for line in offer.includedText|split(\"\\n\") %}
  585.               {% if line|trim != '' %}
  586.                 <li class=\"mb-1\">✔️ {{ line }}</li>
  587.               {% endif %}
  588.             {% endfor %}
  589.           </ul>
  590.         {% endif %}
  591.       </div>
  592.     </div>
  593.   </div>
  594. </section>
  595. {# Fil d'Ariane #}
  596. <nav class=\"container my-4\" aria-label=\"breadcrumb\">
  597.   <ol class=\"breadcrumb small\">
  598.     <li class=\"breadcrumb-item\"><a href=\"{{ path('app') }}\">Accueil</a></li>
  599.     <li class=\"breadcrumb-item\"><a href=\"{{ path('o.escapade') }}\">O'escapade</a></li>
  600.     <li class=\"breadcrumb-item active\" aria-current=\"page\">{{offer.destination.name}}</li>
  601.   </ol>
  602. </nav>
  603. {% if formules %}
  604. {# -----------------------------
  605.    Formules
  606. ------------------------------ #}
  607. <section class=\"container py-5\">
  608.   <h2 class=\"display-6 lh-1 fw-bold txt-ot-green mb-4\">Nos formules O’Escapade</h2>
  609.   <div class=\"row row-cols-1 row-cols-md-2 g-4\">
  610.   {% for f in formules %}
  611.     {# Formule 1 #}
  612.     <div class=\"col\">
  613.       <div class=\"card h-100 border-0 shadow-sm rounded-4 overflow-hidden\">
  614.         <div class=\"card-body p-4\">
  615.           <span class=\"badge bg-ot-green text-white mb-3\">{{f.durationLabel}}</span>
  616.           <h3 class=\"h5 fw-bold mb-3\">{{f.title}}</h3>
  617.           <p class=\"small text-muted mb-2\"><i class=\"bi bi-calendar-week\"></i> Départs :</p>
  618.           <ul class=\"small mb-3\">
  619.             {% for line in f.departuresText|split(\"\\n\") %}
  620.                 {% if line|trim != '' %}
  621.                    <li class=\"mb-1\">{{ line }}</li>
  622.                 {% endif %}
  623.             {% endfor %}
  624.           </ul>
  625.           <p class=\"small text-muted mb-2\"><i class=\"bi bi-airplane\"></i> Transports :</p>
  626.           <ul class=\"small mb-3\">
  627.             {% for line in f.transportText|split(\"\\n\") %}
  628.                 {% if line|trim != '' %}
  629.                    <li class=\"mb-1\">{{ line }}</li>
  630.                 {% endif %}
  631.             {% endfor %}
  632.           </ul>
  633.           <p class=\"text-muted small mb-4\">{{f.description}}</p>
  634.           <a href=\"{{ path('o.devis') }}\" class=\"btn btn-outline-ot-green rounded-pill\">Demander un devis</a>
  635.         </div>
  636.       </div>
  637.     </div>
  638.     {% endfor %}
  639. </section>
  640.   {% endif %}
  641. {# -----------------------------
  642.    SECTION 1 — Hébergement (SÉLECTION D'HÔTELS)
  643. ------------------------------ #}
  644. <section class=\"container py-4 py-md-5\">
  645.   <div class=\"row g-4\">
  646.     <div class=\"col-12 col-lg-6\">
  647.       <p class=\"text-muted small mb-1\">{{offer.title}}</p>
  648.       <h2 class=\"display-6 lh-1 fw-bold txt-ot-green mb-3\">Hébergement</h2>
  649.       <p class=\"text-muted\">
  650.         Notre sélection d’hôtels partenaires pour une escapade sans fausse note : confort, localisation idéale et accueil au top.
  651.       </p>
  652.     </div>
  653.   </div>
  654.   <div class=\"row g-3 g-md-4 mt-2\">
  655.     {% for h in offerHebergement %}
  656.       <div class=\"col-12 col-sm-6 col-lg-4\">
  657.         <article class=\"card hotel-card border-0 shadow-sm h-100 rounded-4 overflow-hidden\">
  658.           <a href=\"{#{ h.url }#}\" class=\"stretched-link text-decoration-none\">
  659.             <div class=\"ratio ratio-4x3\">
  660.               <img src=\"{{asset('img/hotels/' ~ h.hebergement.country.slug ~ '/' ~ h.hebergement.slug ~ '/' ~ h.hebergement.img)}}\" alt=\"{{ h.hebergement.name }} — photo de l’hôtel\" class=\"object-fit-cover w-100 h-100\">
  661.             </div>
  662.             <div class=\"card-body\">
  663.               <h3 class=\"h6 mb-1 d-flex justify-content-between align-items-baseline\">
  664.                 <span class=\"hotel-name\">{{ h.hebergement.name }}</span>
  665.                 <span class=\"hotel-price\">à partir de {{ h.priceFrom }}€</span>
  666.               </h3>
  667.               <p class=\"small text-muted mb-0\">{{ h.blurb }}</p>
  668.             </div>
  669.           </a>
  670.         </article>
  671.       </div>
  672.     {% endfor %}
  673.   </div>
  674. </section>
  675. {% if offer.widget %}
  676. <div class=\"container\">
  677.   <h2 class=\"h3 txt-ot-green fw-bold mb-3\">Activités</h2>
  678. <div class=\"widget\">
  679.   {{offer.widget|raw}}
  680. </div>
  681. </div>
  682. {% endif %}
  683. {# -----------------------------
  684.    SECTION 2 — Parade (texte gauche, image droite)
  685. ------------------------------ 
  686. <section class=\"container py-4 py-md-5\">
  687.   <div class=\"row g-4 align-items-center\">
  688.     <div class=\"col-12 col-lg-6 order-1 order-lg-0\">
  689.       <p class=\"text-muted small mb-1\">{{ escapade.kicker|default('Carnaval St Lucie') }}</p>
  690.       <h2 class=\"display-6 lh-1 fw-bold text-ot-green mb-3\">Parade</h2>
  691.       <p class=\"text-muted\">Lorem Ipsum is simply dummy text of the printing and typesetting industry…</p>
  692.     </div>
  693.     <div class=\"col-12 col-lg-6 order-0 order-lg-1\">
  694.       <div class=\"ratio ratio-4x3 rounded-4 overflow-hidden shadow-sm\">
  695.         <img src=\"{{ asset(escapade.parade_img|default('img/escapade/parade.jpg')) }}\" alt=\"Parade\" class=\"object-fit-cover w-100 h-100\">
  696.       </div>
  697.     </div>
  698.   </div>
  699. </section>#}
  700. {# -----------------------------
  701.    SECTION 3 — Activités (image gauche, texte droite)
  702. ------------------------------ 
  703. <section class=\"container py-4 py-md-5\">
  704.   <div class=\"row g-4 align-items-center\">
  705.     <div class=\"col-12 col-lg-6\">
  706.       <div class=\"ratio ratio-4x3 rounded-4 overflow-hidden shadow-sm\">
  707.         <img src=\"{{ asset(escapade.activites_img|default('img/escapade/activity.jpg')) }}\" alt=\"Activités\" class=\"object-fit-cover w-100 h-100\">
  708.       </div>
  709.     </div>
  710.     <div class=\"col-12 col-lg-6\">
  711.       <p class=\"text-muted small mb-1\">{{ escapade.kicker|default('Carnaval St Lucie') }}</p>
  712.       <h2 class=\"display-6 lh-1 fw-bold text-ot-green mb-3\">Activités</h2>
  713.       <p class=\"text-muted\">Lorem Ipsum is simply dummy text of the printing and typesetting industry…</p>
  714.     </div>
  715.   </div>
  716. </section> #}
  717. {# -----------------------------
  718.    OFFRES DU MOMENT — réutilisation grille cartes maquette
  719. ------------------------------ #}
  720. <section class=\"py-5 bg-white\">
  721.   <div class=\"container\">
  722.     <header class=\"mb-3\">
  723.       <h2 class=\"h3 txt-ot-green mb-1 fw-bold\">Nos O'offres du moment</h2>
  724.       <p class=\"text-muted mb-0\">Découvrez nos dernières expériences en immersion !</p>
  725.     </header>
  726.     <div class=\"row g-3 g-md-4\">
  727.       {% set offres = [
  728.         { title: 'Carnaval St Lucie', img: 'carnaval.jpg', url: '#' },
  729.         { title: 'Croisière Caraïbes', img: 'caraibes.jpg', url: '#' },
  730.         { title: 'Spring Break Cancun', img: 'cancun.jpg', url: '#' },
  731.         { title: 'Road trip Route 66', img: 'road-66.jpg', url: '#' }
  732.       ] %}
  733.       {% for o in offres %}
  734.       <div class=\"col-12 col-sm-6 col-lg-3\">
  735.         <article class=\"card card-offer border-0 shadow-sm h-100 overflow-hidden rounded-4\">
  736.           <a href=\"{{ o.url }}\" class=\"stretched-link text-decoration-none text-white\">
  737.             <div class=\"ratio ratio-4x5\">
  738.               <img src=\"{{ asset('img/offre/' ~ o.img) }}\" alt=\"{{ o.title }}\" class=\"object-fit-cover w-100 h-100\">
  739.             </div>
  740.             <div class=\"card-img-overlay d-flex flex-column justify-content-end p-3 p-md-4\">
  741.               <h3 class=\"h5 fw-bold text-white text-shadow-sm mb-3\">{{ o.title }}</h3>
  742.               <div>
  743.                 <span class=\"btn btn-outline-light btn-sm\">Découvrir</span>
  744.               </div>
  745.             </div>
  746.           </a>
  747.         </article>
  748.       </div>
  749.       {% endfor %}
  750.     </div>
  751.     <div class=\"section-divider mx-auto my-5\"></div>
  752.   </div>
  753. </section>
  754. {% endblock %}
  755. {% block extra_head %}
  756.   {{ parent() }}
  757.   <link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css\">
  758.   <style>
  759.     .text-shadow-sm{ text-shadow:0 2px 4px rgba(0,0,0,.35); }
  760.     .text-ot-green{ color: var(--ot-primary, #2ea37a); }
  761.   </style>
  762. {% endblock %}
  763. ""default/escapade-destination.html.twig""/home/ladomitiyc/otropik/templates/default/escapade-destination.html.twig");
  764.     }
  765. }