var/cache/dev/twig/bd/bd40509ed13f6dbb752a23e5b8a19d3c.php line 38

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. use Twig\TemplateWrapper;
  15. /* application/whileresume/website/components/footer.html.twig */
  16. class __TwigTemplate_5ff04064cf35ccc3c1eb2a55968b72e6 extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->parent false;
  28.         $this->blocks = [
  29.         ];
  30.     }
  31.     protected function doDisplay(array $context, array $blocks = []): iterable
  32.     {
  33.         $macros $this->macros;
  34.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  35.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""application/whileresume/website/components/footer.html.twig"));
  36.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  37.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""application/whileresume/website/components/footer.html.twig"));
  38.         // line 1
  39.         $context["_locale"] = 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.'1$this->source); })()), "request", [], "any"falsefalsefalse1), "locale", [], "any"falsefalsefalse1);
  40.         // line 2
  41.         $context["_isFr"] = ((isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'2$this->source); })()) == "fr");
  42.         // line 3
  43.         yield "
  44. ";
  45.         // line 5
  46.         $context["footerArticles"] = $this->extensions['App\Twig\CoreExtension']->getFooterArticles((isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'5$this->source); })()), 5);
  47.         // line 6
  48.         $context["footerLandingJobs"] = $this->extensions['App\Twig\CoreExtension']->getFooterFeaturedLandingJobs((isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'6$this->source); })()), 5);
  49.         // line 7
  50.         $context["footerJobsCities"] = $this->extensions['App\Twig\CoreExtension']->getFooterJobsCities((isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'7$this->source); })()), 6);
  51.         // line 8
  52.         $context["footerEnterprisesCities"] = $this->extensions['App\Twig\CoreExtension']->getFooterEnterprisesCities((isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'8$this->source); })()), 6);
  53.         // line 9
  54.         yield "
  55. ";
  56.         // line 11
  57.         $context["_storeData"] = $this->extensions['App\Twig\CvsExtension']->getAppStoreCountries();
  58.         // line 12
  59.         $context["_storePrimary"] = ((CoreExtension::getAttribute($this->env$this->source, ($context["_storeData"] ?? null), "primary", [], "any"truetruefalse12)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env$this->source, (isset($context["_storeData"]) || array_key_exists("_storeData"$context) ? $context["_storeData"] : (function () { throw new RuntimeError('Variable "_storeData" does not exist.'12$this->source); })()), "primary", [], "any"falsefalsefalse12), [])) : ([]));
  60.         // line 13
  61.         $context["_storeOthers"] = ((CoreExtension::getAttribute($this->env$this->source, ($context["_storeData"] ?? null), "others", [], "any"truetruefalse13)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env$this->source, (isset($context["_storeData"]) || array_key_exists("_storeData"$context) ? $context["_storeData"] : (function () { throw new RuntimeError('Variable "_storeData" does not exist.'13$this->source); })()), "others", [], "any"falsefalsefalse13), [])) : ([]));
  62.         // line 14
  63.         yield "
  64. <style>
  65.     /* ---------- Footer WhileResume ---------- */
  66.     .whr-footer {
  67.         margin-top: 32px;
  68.         padding: 36px 24px 24px;
  69.         background: #F9FAFD;
  70.         border-radius: 16px;
  71.         color: #2c2c46;
  72.         width: auto;
  73.         max-width: none;
  74.         margin-left: 16px;
  75.         margin-right: 16px;
  76.     }
  77.     .theme-dark .whr-footer {
  78.         background: #2a2a3c;
  79.         color: #e9e9ef;
  80.     }
  81.     .middle-sidebar-left .whr-footer {
  82.         width: 100%;
  83.         margin-left: 0;
  84.         margin-right: 0;
  85.     }
  86.     /* Stores en haut de la col 1 */
  87.     .whr-footer .whr-stores {
  88.         display: flex;
  89.         flex-direction: column;
  90.         gap: 8px;
  91.         margin-bottom: 18px;
  92.         position: relative; /* pour le dropdown */
  93.     }
  94.     .whr-footer .whr-store-link {
  95.         display: inline-flex;
  96.         align-items: center;
  97.         gap: 10px;
  98.         padding: 8px 14px;
  99.         background: #111;
  100.         color: #fff !important;
  101.         border-radius: 10px;
  102.         font-size: 12px;
  103.         font-weight: 600;
  104.         text-decoration: none !important;
  105.         line-height: 1.2;
  106.         transition: transform .15s ease, background .2s ease;
  107.         max-width: 200px;
  108.         cursor: pointer;
  109.         border: none;
  110.         font-family: inherit;
  111.         text-align: left;
  112.     }
  113.     .whr-footer .whr-store-link:hover {
  114.         background: #2c2c46;
  115.         transform: translateY(-1px);
  116.     }
  117.     .whr-footer .whr-store-link small {
  118.         display: block;
  119.         font-weight: 400;
  120.         font-size: 10px;
  121.         opacity: .7;
  122.     }
  123.     .whr-footer .whr-store-link strong { font-size: 13px; display: block; }
  124.     /* Wrapper du bouton + dropdown (version EN) */
  125.     .whr-store-wrap {
  126.         position: relative;
  127.         display: inline-block;
  128.     }
  129.     .whr-store-wrap .whr-store-link {
  130.         width: 100%;
  131.         max-width: 200px;
  132.     }
  133.     /* === Dropdown élargi (2 colonnes + search + featured pinné) === */
  134.     .whr-store-dropdown {
  135.         position: absolute;
  136.         bottom: calc(100% + 6px);
  137.         left: 0;
  138.         width: 380px;
  139.         max-width: calc(100vw - 32px);
  140.         background: #fff;
  141.         border-radius: 12px;
  142.         box-shadow: 0 -8px 24px rgba(0,0,0,.15), 0 -2px 6px rgba(0,0,0,.08);
  143.         z-index: 1000;
  144.         display: none;
  145.         overflow: hidden;
  146.     }
  147.     .theme-dark .whr-store-dropdown {
  148.         background: #34344a;
  149.         box-shadow: 0 -8px 24px rgba(0,0,0,.4), 0 -2px 6px rgba(0,0,0,.2);
  150.     }
  151.     .whr-store-wrap.is-open .whr-store-dropdown {
  152.         display: flex;
  153.         flex-direction: column;
  154.         animation: whrFadeInUp .15s ease;
  155.     }
  156.     @keyframes whrFadeInUp {
  157.         from { opacity: 0; transform: translateY(4px); }
  158.         to { opacity: 1; transform: translateY(0); }
  159.     }
  160.     /* Chevron */
  161.     .whr-store-link .whr-store-chevron {
  162.         margin-left: auto;
  163.         font-size: 10px;
  164.         opacity: .7;
  165.         transition: transform .2s ease;
  166.     }
  167.     .whr-store-wrap.is-open .whr-store-link .whr-store-chevron {
  168.         transform: rotate(180deg);
  169.     }
  170.     /* Zone search en haut */
  171.     .whr-store-search-wrap {
  172.         padding: 10px 10px 6px;
  173.         border-bottom: 1px solid rgba(0,0,0,.06);
  174.         flex-shrink: 0;
  175.     }
  176.     .theme-dark .whr-store-search-wrap { border-bottom-color: rgba(255,255,255,.08); }
  177.     .whr-store-search {
  178.         width: 100%;
  179.         height: 34px;
  180.         padding: 0 12px 0 32px;
  181.         border: 1px solid rgba(0,0,0,.1);
  182.         border-radius: 8px;
  183.         background: #f5f5f8 url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>\") no-repeat 10px center;
  184.         font-size: 13px;
  185.         color: #2c2c46;
  186.         outline: none;
  187.         transition: border-color .15s ease, background-color .15s ease;
  188.         font-family: inherit;
  189.     }
  190.     .whr-store-search:focus {
  191.         border-color: var(--theme-color, #6C3AED);
  192.         background-color: #fff;
  193.     }
  194.     .theme-dark .whr-store-search {
  195.         background-color: #2a2a3c;
  196.         border-color: rgba(255,255,255,.1);
  197.         color: #e9e9ef;
  198.     }
  199.     .theme-dark .whr-store-search:focus { background-color: #3c3c52; }
  200.     .whr-store-search::placeholder { color: #999; }
  201.     /* Featured pinné (toujours visible, hors scroll) */
  202.     .whr-store-featured {
  203.         padding: 8px 8px 4px;
  204.         flex-shrink: 0;
  205.         border-bottom: 1px solid rgba(0,0,0,.06);
  206.     }
  207.     .theme-dark .whr-store-featured { border-bottom-color: rgba(255,255,255,.08); }
  208.     /* Zone scrollable des \"other regions\" */
  209.     .whr-store-others {
  210.         padding: 8px;
  211.         max-height: 280px;
  212.         overflow-y: auto;
  213.         flex: 1;
  214.     }
  215.     .whr-store-others::-webkit-scrollbar { width: 6px; }
  216.     .whr-store-others::-webkit-scrollbar-thumb { background: rgba(0,0,0,.15); border-radius: 3px; }
  217.     .theme-dark .whr-store-others::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); }
  218.     /* Header de section */
  219.     .whr-store-dropdown-header {
  220.         font-size: 10px;
  221.         font-weight: 700;
  222.         text-transform: uppercase;
  223.         letter-spacing: .5px;
  224.         opacity: .55;
  225.         padding: 4px 8px 6px;
  226.         color: #2c2c46;
  227.     }
  228.     .theme-dark .whr-store-dropdown-header { color: #e9e9ef; }
  229.     /* Grille 2 colonnes pour les pays */
  230.     .whr-store-grid {
  231.         display: grid;
  232.         grid-template-columns: 1fr 1fr;
  233.         gap: 2px;
  234.     }
  235.     /* Item pays */
  236.     .whr-store-country {
  237.         display: flex;
  238.         align-items: center;
  239.         gap: 8px;
  240.         padding: 7px 9px;
  241.         border-radius: 6px;
  242.         text-decoration: none !important;
  243.         color: #2c2c46 !important;
  244.         font-size: 12.5px;
  245.         transition: background .15s ease;
  246.         min-width: 0;
  247.     }
  248.     .theme-dark .whr-store-country { color: #e9e9ef !important; }
  249.     .whr-store-country:hover {
  250.         background: rgba(108, 58, 237, .08);
  251.         color: var(--theme-color, #6C3AED) !important;
  252.     }
  253.     .theme-dark .whr-store-country:hover { background: rgba(108, 58, 237, .2); }
  254.     .whr-store-country .whr-flag {
  255.         font-size: 16px;
  256.         line-height: 1;
  257.         width: 18px;
  258.         text-align: center;
  259.         flex-shrink: 0;
  260.     }
  261.     .whr-store-country .whr-country-name {
  262.         flex: 1;
  263.         font-weight: 500;
  264.         white-space: nowrap;
  265.         overflow: hidden;
  266.         text-overflow: ellipsis;
  267.         min-width: 0;
  268.     }
  269.     /* Featured = pleine largeur, plus mis en avant */
  270.     .whr-store-featured .whr-store-country {
  271.         background: linear-gradient(135deg, rgba(108, 58, 237, .08), rgba(108, 58, 237, .03));
  272.         font-weight: 600;
  273.         padding: 9px 10px;
  274.     }
  275.     .theme-dark .whr-store-featured .whr-store-country {
  276.         background: linear-gradient(135deg, rgba(108, 58, 237, .25), rgba(108, 58, 237, .1));
  277.     }
  278.     /* Message \"aucun résultat\" */
  279.     .whr-store-empty {
  280.         text-align: center;
  281.         padding: 20px 12px;
  282.         font-size: 12px;
  283.         color: #999;
  284.         font-style: italic;
  285.     }
  286.     .theme-dark .whr-store-empty { color: #aaa; }
  287.     /* Item caché par la recherche */
  288.     .whr-store-country.is-hidden { display: none; }
  289.     /* Responsive : sur mobile, 1 colonne et largeur ajustée */
  290.     @media (max-width: 575.98px) {
  291.         .whr-store-dropdown {
  292.             width: calc(100vw - 32px);
  293.             max-width: 360px;
  294.         }
  295.         .whr-store-grid {
  296.             grid-template-columns: 1fr;
  297.         }
  298.     }
  299.     /* Colonnes */
  300.     .whr-footer .whr-foot-col h4 {
  301.         font-size: 13px;
  302.         font-weight: 700;
  303.         margin: 0 0 14px 0;
  304.         color: inherit;
  305.         text-transform: uppercase;
  306.         letter-spacing: .3px;
  307.     }
  308.     .whr-footer .whr-foot-col ul {
  309.         list-style: none;
  310.         padding: 0;
  311.         margin: 0;
  312.         font-size: 13px;
  313.     }
  314.     .whr-footer .whr-foot-col ul li { margin-bottom: 10px; }
  315.     .whr-footer .whr-foot-col a {
  316.         color: inherit;
  317.         opacity: .75;
  318.         text-decoration: none;
  319.         transition: opacity .2s ease, color .2s ease;
  320.     }
  321.     .whr-footer .whr-foot-col a:hover { opacity: 1; color: var(--theme-color, #6C3AED); }
  322.     .whr-footer .whr-foot-empty {
  323.         font-size: 12px;
  324.         opacity: .5;
  325.         font-style: italic;
  326.     }
  327.     .whr-footer .whr-foot-action-links a {
  328.         display: inline-flex;
  329.         align-items: center;
  330.         gap: 8px;
  331.     }
  332.     .whr-footer .whr-foot-action-links a i {
  333.         font-size: 14px;
  334.         opacity: .7;
  335.         width: 16px;
  336.         text-align: center;
  337.     }
  338.     .whr-footer .whr-foot-col .whr-city-link {
  339.         display: inline-flex;
  340.         align-items: center;
  341.         gap: 6px;
  342.     }
  343.     .whr-footer .whr-foot-col .whr-city-link .whr-city-icon {
  344.         font-size: 14px;
  345.         line-height: 1;
  346.         display: inline-block;
  347.         width: 18px;
  348.         text-align: center;
  349.         opacity: .85;
  350.     }
  351.     .whr-footer .whr-foot-grid {
  352.         display: grid;
  353.         gap: 28px;
  354.         grid-template-columns: 1fr;
  355.     }
  356.     @media (min-width: 576px) {
  357.         .whr-footer .whr-foot-grid { grid-template-columns: 1fr 1fr; }
  358.     }
  359.     @media (min-width: 992px) {
  360.         .whr-footer .whr-foot-grid {
  361.             grid-template-columns: repeat(5, 1fr);
  362.             gap: 32px;
  363.         }
  364.     }
  365.     .whr-footer .whr-foot-bottom {
  366.         margin-top: 32px;
  367.         padding-top: 20px;
  368.         border-top: 1px solid rgba(0,0,0,.08);
  369.         display: flex;
  370.         flex-direction: column;
  371.         gap: 14px;
  372.         align-items: center;
  373.         text-align: center;
  374.     }
  375.     .theme-dark .whr-footer .whr-foot-bottom { border-top-color: rgba(255,255,255,.1); }
  376.     @media (min-width: 768px) {
  377.         .whr-footer .whr-foot-bottom {
  378.             flex-direction: row;
  379.             justify-content: space-between;
  380.             text-align: left;
  381.         }
  382.     }
  383.     .whr-footer .whr-foot-copy {
  384.         display: inline-flex;
  385.         align-items: center;
  386.         gap: 8px;
  387.         font-size: 12px;
  388.         opacity: .7;
  389.         margin: 0;
  390.     }
  391.     .whr-footer .whr-foot-copy img.whr-favicon {
  392.         width: 18px;
  393.         height: 18px;
  394.         border-radius: 4px;
  395.         flex-shrink: 0;
  396.     }
  397.     .whr-footer .whr-foot-legal {
  398.         display: flex;
  399.         flex-wrap: wrap;
  400.         gap: 6px 16px;
  401.         justify-content: center;
  402.         font-size: 12px;
  403.     }
  404.     .whr-footer .whr-foot-legal a {
  405.         color: inherit;
  406.         opacity: .75;
  407.         text-decoration: none;
  408.     }
  409.     .whr-footer .whr-foot-legal a:hover { opacity: 1; }
  410.     .whr-footer .whr-foot-legal .whr-admin-link { color: #e74c3c !important; opacity: 1; }
  411.     .whr-footer .whr-foot-social {
  412.         display: flex;
  413.         flex-wrap: wrap;
  414.         gap: 6px;
  415.         list-style: none;
  416.         padding: 0;
  417.         margin: 0;
  418.     }
  419.     .whr-footer .whr-foot-social a {
  420.         width: 32px; height: 32px;
  421.         border-radius: 8px;
  422.         background: #fff;
  423.         display: inline-flex;
  424.         align-items: center;
  425.         justify-content: center;
  426.         color: #2c2c46;
  427.         text-decoration: none !important;
  428.         transition: background .2s ease, color .2s ease, transform .15s ease;
  429.         box-shadow: 0 1px 2px rgba(0,0,0,.04);
  430.     }
  431.     .whr-footer .whr-foot-social a:hover {
  432.         background: var(--theme-color, #6C3AED);
  433.         color: #fff;
  434.         transform: translateY(-1px);
  435.     }
  436.     .theme-dark .whr-footer .whr-foot-social a {
  437.         background: #34344a;
  438.         color: #fff;
  439.         box-shadow: none;
  440.     }
  441.     .whr-footer .whr-foot-social i { font-size: 14px; }
  442.     @media (max-width: 575.98px) {
  443.         .whr-footer {
  444.             padding: 24px 18px 20px;
  445.             margin-left: 8px;
  446.             margin-right: 8px;
  447.         }
  448.         .whr-store-dropdown {
  449.             min-width: 220px;
  450.             max-width: 90vw;
  451.         }
  452.     }
  453. </style>
  454. <footer class=\"whr-footer\" role=\"contentinfo\">
  455.     ";
  456.         // line 436
  457.         yield "    <div class=\"whr-foot-grid\">
  458.         ";
  459.         // line 439
  460.         yield "        <div class=\"whr-foot-col whr-foot-col-action\">
  461.             ";
  462.         // line 440
  463.         if ((($tmp = (isset($context["connectUser"]) || array_key_exists("connectUser"$context) ? $context["connectUser"] : (function () { throw new RuntimeError('Variable "connectUser" does not exist.'440$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  464.             // line 441
  465.             yield "                <h4>";
  466.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.my_account", [], "whr-public"), "Mon compte"), "html"nulltrue);
  467.             yield "</h4>
  468.             ";
  469.         } else {
  470.             // line 443
  471.             yield "                <h4>";
  472.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.start_here", [], "whr-public"), "Commencer ici"), "html"nulltrue);
  473.             yield "</h4>
  474.             ";
  475.         }
  476.         // line 445
  477.         yield "
  478.             <div class=\"whr-stores\">
  479.                 ";
  480.         // line 448
  481.         yield "
  482.                 ";
  483.         // line 450
  484.         yield "                ";
  485.         $context["_hasIos"] = false;
  486.         // line 451
  487.         yield "                ";
  488.         $context['_parent'] = $context;
  489.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary"$context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.'451$this->source); })()));
  490.         foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  491.             if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "ios", [], "any"falsefalsefalse451)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  492.                 $context["_hasIos"] = true;
  493.             }
  494.         }
  495.         $_parent $context['_parent'];
  496.         unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  497.         $context array_intersect_key($context$_parent) + $_parent;
  498.         // line 452
  499.         yield "                ";
  500.         $context['_parent'] = $context;
  501.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'452$this->source); })()));
  502.         foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  503.             if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "ios", [], "any"falsefalsefalse452)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  504.                 $context["_hasIos"] = true;
  505.             }
  506.         }
  507.         $_parent $context['_parent'];
  508.         unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  509.         $context array_intersect_key($context$_parent) + $_parent;
  510.         // line 453
  511.         yield "
  512.                 ";
  513.         // line 454
  514.         if ((($tmp = (isset($context["_hasIos"]) || array_key_exists("_hasIos"$context) ? $context["_hasIos"] : (function () { throw new RuntimeError('Variable "_hasIos" does not exist.'454$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  515.             // line 455
  516.             yield "                    <div class=\"whr-store-wrap\" data-whr-store=\"ios\">
  517.                         <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"App Store - Choose your country\">
  518.                             <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#fff\" aria-hidden=\"true\">
  519.                                 <path d=\"M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z\"/>
  520.                             </svg>
  521.                             <span>
  522.                                     <small>";
  523.             // line 461
  524.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.download_on", [], "whr-public"), "Download on"), "html"nulltrue);
  525.             yield "</small>
  526.                                     <strong>App Store</strong>
  527.                                 </span>
  528.                             <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span>
  529.                         </button>
  530.                         <div class=\"whr-store-dropdown\" role=\"menu\">
  531.                             ";
  532.             // line 469
  533.             yield "                            ";
  534.             $context["_iosOthersCount"] = 0;
  535.             // line 470
  536.             yield "                            ";
  537.             $context['_parent'] = $context;
  538.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'470$this->source); })()));
  539.             foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  540.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "ios", [], "any"falsefalsefalse470)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  541.                     $context["_iosOthersCount"] = ((isset($context["_iosOthersCount"]) || array_key_exists("_iosOthersCount"$context) ? $context["_iosOthersCount"] : (function () { throw new RuntimeError('Variable "_iosOthersCount" does not exist.'470$this->source); })()) + 1);
  542.                 }
  543.             }
  544.             $_parent $context['_parent'];
  545.             unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  546.             $context array_intersect_key($context$_parent) + $_parent;
  547.             // line 471
  548.             yield "                            ";
  549.             if (((isset($context["_iosOthersCount"]) || array_key_exists("_iosOthersCount"$context) ? $context["_iosOthersCount"] : (function () { throw new RuntimeError('Variable "_iosOthersCount" does not exist.'471$this->source); })()) > 20)) {
  550.                 // line 472
  551.                 yield "                                <div class=\"whr-store-search-wrap\">
  552.                                     <input type=\"text\"
  553.                                            class=\"whr-store-search\"
  554.                                            placeholder=\"";
  555.                 // line 475
  556.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.search_country", [], "whr-public"), "Search country..."), "html"nulltrue);
  557.                 yield "\"
  558.                                            aria-label=\"Search country\"
  559.                                            autocomplete=\"off\">
  560.                                 </div>
  561.                             ";
  562.             }
  563.             // line 480
  564.             yield "
  565.                             ";
  566.             // line 482
  567.             yield "                            ";
  568.             $context["_iosPrimaryCount"] = 0;
  569.             // line 483
  570.             yield "                            ";
  571.             $context['_parent'] = $context;
  572.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary"$context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.'483$this->source); })()));
  573.             foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  574.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "ios", [], "any"falsefalsefalse483)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  575.                     $context["_iosPrimaryCount"] = ((isset($context["_iosPrimaryCount"]) || array_key_exists("_iosPrimaryCount"$context) ? $context["_iosPrimaryCount"] : (function () { throw new RuntimeError('Variable "_iosPrimaryCount" does not exist.'483$this->source); })()) + 1);
  576.                 }
  577.             }
  578.             $_parent $context['_parent'];
  579.             unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  580.             $context array_intersect_key($context$_parent) + $_parent;
  581.             // line 484
  582.             yield "                            ";
  583.             if (((isset($context["_iosPrimaryCount"]) || array_key_exists("_iosPrimaryCount"$context) ? $context["_iosPrimaryCount"] : (function () { throw new RuntimeError('Variable "_iosPrimaryCount" does not exist.'484$this->source); })()) > 0)) {
  584.                 // line 485
  585.                 yield "                                <div class=\"whr-store-featured\">
  586.                                     <div class=\"whr-store-dropdown-header\">
  587.                                         ";
  588.                 // line 487
  589.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.featured", [], "whr-public"), "Featured"), "html"nulltrue);
  590.                 yield "
  591.                                     </div>
  592.                                     ";
  593.                 // line 489
  594.                 $context['_parent'] = $context;
  595.                 $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary"$context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.'489$this->source); })()));
  596.                 foreach ($context['_seq'] as $context["code"] => $context["country"]) {
  597.                     // line 490
  598.                     yield "                                        ";
  599.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "ios", [], "any"falsefalsefalse490)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  600.                         // line 491
  601.                         yield "                                            <a href=\"";
  602.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "ios", [], "any"falsefalsefalse491), "html"nulltrue);
  603.                         yield "\"
  604.                                                class=\"whr-store-country\"
  605.                                                data-search=\"";
  606.                         // line 493
  607.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse493)), "html"nulltrue);
  608.                         yield " ";
  609.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html"nulltrue);
  610.                         yield "\"
  611.                                                target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  612.                                                 ";
  613.                         // line 495
  614.                         if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse495)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  615.                             yield "<span class=\"whr-flag\">";
  616.                             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse495), "html"nulltrue);
  617.                             yield "</span>";
  618.                         }
  619.                         // line 496
  620.                         yield "                                                <span class=\"whr-country-name\">";
  621.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse496), "html"nulltrue);
  622.                         yield "</span>
  623.                                             </a>
  624.                                         ";
  625.                     }
  626.                     // line 499
  627.                     yield "                                    ";
  628.                 }
  629.                 $_parent $context['_parent'];
  630.                 unset($context['_seq'], $context['code'], $context['country'], $context['_parent']);
  631.                 $context array_intersect_key($context$_parent) + $_parent;
  632.                 // line 500
  633.                 yield "                                </div>
  634.                             ";
  635.             }
  636.             // line 502
  637.             yield "
  638.                             ";
  639.             // line 504
  640.             yield "                            ";
  641.             if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'504$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  642.                 // line 505
  643.                 yield "                                <div class=\"whr-store-others\">
  644.                                     <div class=\"whr-store-dropdown-header\">
  645.                                         ";
  646.                 // line 507
  647.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.other_regions", [], "whr-public"), "Other regions"), "html"nulltrue);
  648.                 yield "
  649.                                     </div>
  650.                                     <div class=\"whr-store-grid\">
  651.                                         ";
  652.                 // line 510
  653.                 $context['_parent'] = $context;
  654.                 $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'510$this->source); })()));
  655.                 foreach ($context['_seq'] as $context["code"] => $context["country"]) {
  656.                     // line 511
  657.                     yield "                                            ";
  658.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "ios", [], "any"falsefalsefalse511)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  659.                         // line 512
  660.                         yield "                                                <a href=\"";
  661.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "ios", [], "any"falsefalsefalse512), "html"nulltrue);
  662.                         yield "\"
  663.                                                    class=\"whr-store-country\"
  664.                                                    data-search=\"";
  665.                         // line 514
  666.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse514)), "html"nulltrue);
  667.                         yield " ";
  668.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html"nulltrue);
  669.                         yield "\"
  670.                                                    target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  671.                                                     ";
  672.                         // line 516
  673.                         if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse516)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  674.                             yield "<span class=\"whr-flag\">";
  675.                             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse516), "html"nulltrue);
  676.                             yield "</span>";
  677.                         }
  678.                         // line 517
  679.                         yield "                                                    <span class=\"whr-country-name\">";
  680.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse517), "html"nulltrue);
  681.                         yield "</span>
  682.                                                 </a>
  683.                                             ";
  684.                     }
  685.                     // line 520
  686.                     yield "                                        ";
  687.                 }
  688.                 $_parent $context['_parent'];
  689.                 unset($context['_seq'], $context['code'], $context['country'], $context['_parent']);
  690.                 $context array_intersect_key($context$_parent) + $_parent;
  691.                 // line 521
  692.                 yield "                                    </div>
  693.                                     <div class=\"whr-store-empty\" style=\"display: none;\">
  694.                                         ";
  695.                 // line 523
  696.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.no_country_found", [], "whr-public"), "No country found"), "html"nulltrue);
  697.                 yield "
  698.                                     </div>
  699.                                 </div>
  700.                             ";
  701.             }
  702.             // line 527
  703.             yield "                        </div>
  704.                     </div>
  705.                 ";
  706.         }
  707.         // line 530
  708.         yield "
  709.                 ";
  710.         // line 532
  711.         yield "                ";
  712.         $context["_hasAndroid"] = false;
  713.         // line 533
  714.         yield "                ";
  715.         $context['_parent'] = $context;
  716.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary"$context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.'533$this->source); })()));
  717.         foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  718.             if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "android", [], "any"falsefalsefalse533)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  719.                 $context["_hasAndroid"] = true;
  720.             }
  721.         }
  722.         $_parent $context['_parent'];
  723.         unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  724.         $context array_intersect_key($context$_parent) + $_parent;
  725.         // line 534
  726.         yield "                ";
  727.         $context['_parent'] = $context;
  728.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'534$this->source); })()));
  729.         foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  730.             if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "android", [], "any"falsefalsefalse534)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  731.                 $context["_hasAndroid"] = true;
  732.             }
  733.         }
  734.         $_parent $context['_parent'];
  735.         unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  736.         $context array_intersect_key($context$_parent) + $_parent;
  737.         // line 535
  738.         yield "
  739.                 ";
  740.         // line 536
  741.         if ((($tmp = (isset($context["_hasAndroid"]) || array_key_exists("_hasAndroid"$context) ? $context["_hasAndroid"] : (function () { throw new RuntimeError('Variable "_hasAndroid" does not exist.'536$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  742.             // line 537
  743.             yield "                    <div class=\"whr-store-wrap\" data-whr-store=\"android\">
  744.                         <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"Google Play - Choose your country\">
  745.                             <svg width=\"18\" height=\"18\" viewBox=\"0 0 512 512\" aria-hidden=\"true\">
  746.                                 <path style=\"fill:#3A9BC8;\" d=\"M225.656,256.052L14.016,485.451l-6.442,7.052c-4.005-5.919-6.704-12.972-7.313-20.806C0.087,470.305,0,468.91,0,467.518V44.499c0-9.488,2.873-18.02,7.574-24.987L225.656,256.052z\"/>
  747.                                 <path style=\"fill:#9BCD83;\" d=\"M320.811,152.8l-95.155,103.253L7.574,19.512C19.936,1.405,45.183-6.342,66.6,6.02L320.811,152.8z\"/>
  748.                                 <path style=\"fill:#EEB84C;\" d=\"M455.056,257.27c-0.348,14.453-7.748,28.904-22.113,37.174l-112.132,64.771l-95.155-103.163L320.811,152.8l70.518,40.745l41.614,24.026C448.178,226.366,455.579,241.861,455.056,257.27z\"/>
  749.                                 <path style=\"fill:#B43F70;\" d=\"M7.591,492.492c12.368,18.116,37.599,25.838,58.976,13.496L320.775,359.22l-95.156-103.209L7.591,492.492z\"/>
  750.                             </svg>
  751.                             <span>
  752.                                     <small>";
  753.             // line 546
  754.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.available_on", [], "whr-public"), "Available on"), "html"nulltrue);
  755.             yield "</small>
  756.                                     <strong>Google Play</strong>
  757.                                 </span>
  758.                             <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span>
  759.                         </button>
  760.                         <div class=\"whr-store-dropdown\" role=\"menu\">
  761.                             ";
  762.             // line 554
  763.             yield "                            ";
  764.             $context["_androidOthersCount"] = 0;
  765.             // line 555
  766.             yield "                            ";
  767.             $context['_parent'] = $context;
  768.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'555$this->source); })()));
  769.             foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  770.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "android", [], "any"falsefalsefalse555)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  771.                     $context["_androidOthersCount"] = ((isset($context["_androidOthersCount"]) || array_key_exists("_androidOthersCount"$context) ? $context["_androidOthersCount"] : (function () { throw new RuntimeError('Variable "_androidOthersCount" does not exist.'555$this->source); })()) + 1);
  772.                 }
  773.             }
  774.             $_parent $context['_parent'];
  775.             unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  776.             $context array_intersect_key($context$_parent) + $_parent;
  777.             // line 556
  778.             yield "                            ";
  779.             if (((isset($context["_androidOthersCount"]) || array_key_exists("_androidOthersCount"$context) ? $context["_androidOthersCount"] : (function () { throw new RuntimeError('Variable "_androidOthersCount" does not exist.'556$this->source); })()) > 20)) {
  780.                 // line 557
  781.                 yield "                                <div class=\"whr-store-search-wrap\">
  782.                                     <input type=\"text\"
  783.                                            class=\"whr-store-search\"
  784.                                            placeholder=\"";
  785.                 // line 560
  786.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.search_country", [], "whr-public"), "Search country..."), "html"nulltrue);
  787.                 yield "\"
  788.                                            aria-label=\"Search country\"
  789.                                            autocomplete=\"off\">
  790.                                 </div>
  791.                             ";
  792.             }
  793.             // line 565
  794.             yield "
  795.                             ";
  796.             // line 567
  797.             yield "                            ";
  798.             $context["_androidPrimaryCount"] = 0;
  799.             // line 568
  800.             yield "                            ";
  801.             $context['_parent'] = $context;
  802.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary"$context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.'568$this->source); })()));
  803.             foreach ($context['_seq'] as $context["_key"] => $context["c"]) {
  804.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["c"], "android", [], "any"falsefalsefalse568)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  805.                     $context["_androidPrimaryCount"] = ((isset($context["_androidPrimaryCount"]) || array_key_exists("_androidPrimaryCount"$context) ? $context["_androidPrimaryCount"] : (function () { throw new RuntimeError('Variable "_androidPrimaryCount" does not exist.'568$this->source); })()) + 1);
  806.                 }
  807.             }
  808.             $_parent $context['_parent'];
  809.             unset($context['_seq'], $context['_key'], $context['c'], $context['_parent']);
  810.             $context array_intersect_key($context$_parent) + $_parent;
  811.             // line 569
  812.             yield "                            ";
  813.             if (((isset($context["_androidPrimaryCount"]) || array_key_exists("_androidPrimaryCount"$context) ? $context["_androidPrimaryCount"] : (function () { throw new RuntimeError('Variable "_androidPrimaryCount" does not exist.'569$this->source); })()) > 0)) {
  814.                 // line 570
  815.                 yield "                                <div class=\"whr-store-featured\">
  816.                                     <div class=\"whr-store-dropdown-header\">
  817.                                         ";
  818.                 // line 572
  819.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.featured", [], "whr-public"), "Featured"), "html"nulltrue);
  820.                 yield "
  821.                                     </div>
  822.                                     ";
  823.                 // line 574
  824.                 $context['_parent'] = $context;
  825.                 $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storePrimary"]) || array_key_exists("_storePrimary"$context) ? $context["_storePrimary"] : (function () { throw new RuntimeError('Variable "_storePrimary" does not exist.'574$this->source); })()));
  826.                 foreach ($context['_seq'] as $context["code"] => $context["country"]) {
  827.                     // line 575
  828.                     yield "                                        ";
  829.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "android", [], "any"falsefalsefalse575)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  830.                         // line 576
  831.                         yield "                                            <a href=\"";
  832.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "android", [], "any"falsefalsefalse576), "html"nulltrue);
  833.                         yield "\"
  834.                                                class=\"whr-store-country\"
  835.                                                data-search=\"";
  836.                         // line 578
  837.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse578)), "html"nulltrue);
  838.                         yield " ";
  839.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html"nulltrue);
  840.                         yield "\"
  841.                                                target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  842.                                                 ";
  843.                         // line 580
  844.                         if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse580)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  845.                             yield "<span class=\"whr-flag\">";
  846.                             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse580), "html"nulltrue);
  847.                             yield "</span>";
  848.                         }
  849.                         // line 581
  850.                         yield "                                                <span class=\"whr-country-name\">";
  851.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse581), "html"nulltrue);
  852.                         yield "</span>
  853.                                             </a>
  854.                                         ";
  855.                     }
  856.                     // line 584
  857.                     yield "                                    ";
  858.                 }
  859.                 $_parent $context['_parent'];
  860.                 unset($context['_seq'], $context['code'], $context['country'], $context['_parent']);
  861.                 $context array_intersect_key($context$_parent) + $_parent;
  862.                 // line 585
  863.                 yield "                                </div>
  864.                             ";
  865.             }
  866.             // line 587
  867.             yield "
  868.                             ";
  869.             // line 589
  870.             yield "                            ";
  871.             if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'589$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  872.                 // line 590
  873.                 yield "                                <div class=\"whr-store-others\">
  874.                                     <div class=\"whr-store-dropdown-header\">
  875.                                         ";
  876.                 // line 592
  877.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.other_regions", [], "whr-public"), "Other regions"), "html"nulltrue);
  878.                 yield "
  879.                                     </div>
  880.                                     <div class=\"whr-store-grid\">
  881.                                         ";
  882.                 // line 595
  883.                 $context['_parent'] = $context;
  884.                 $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_storeOthers"]) || array_key_exists("_storeOthers"$context) ? $context["_storeOthers"] : (function () { throw new RuntimeError('Variable "_storeOthers" does not exist.'595$this->source); })()));
  885.                 foreach ($context['_seq'] as $context["code"] => $context["country"]) {
  886.                     // line 596
  887.                     yield "                                            ";
  888.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "android", [], "any"falsefalsefalse596)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  889.                         // line 597
  890.                         yield "                                                <a href=\"";
  891.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "android", [], "any"falsefalsefalse597), "html"nulltrue);
  892.                         yield "\"
  893.                                                    class=\"whr-store-country\"
  894.                                                    data-search=\"";
  895.                         // line 599
  896.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse599)), "html"nulltrue);
  897.                         yield " ";
  898.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::lower($this->env->getCharset(), $context["code"]), "html"nulltrue);
  899.                         yield "\"
  900.                                                    target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  901.                                                     ";
  902.                         // line 601
  903.                         if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse601)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  904.                             yield "<span class=\"whr-flag\">";
  905.                             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "flag", [], "any"falsefalsefalse601), "html"nulltrue);
  906.                             yield "</span>";
  907.                         }
  908.                         // line 602
  909.                         yield "                                                    <span class=\"whr-country-name\">";
  910.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["country"], "label", [], "any"falsefalsefalse602), "html"nulltrue);
  911.                         yield "</span>
  912.                                                 </a>
  913.                                             ";
  914.                     }
  915.                     // line 605
  916.                     yield "                                        ";
  917.                 }
  918.                 $_parent $context['_parent'];
  919.                 unset($context['_seq'], $context['code'], $context['country'], $context['_parent']);
  920.                 $context array_intersect_key($context$_parent) + $_parent;
  921.                 // line 606
  922.                 yield "                                    </div>
  923.                                     <div class=\"whr-store-empty\" style=\"display: none;\">
  924.                                         ";
  925.                 // line 608
  926.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.no_country_found", [], "whr-public"), "No country found"), "html"nulltrue);
  927.                 yield "
  928.                                     </div>
  929.                                 </div>
  930.                             ";
  931.             }
  932.             // line 612
  933.             yield "                        </div>
  934.                     </div>
  935.                 ";
  936.         }
  937.         // line 615
  938.         yield "            </div>
  939.             <ul class=\"whr-foot-action-links\">
  940.                 <li>
  941.                     <a href=\"";
  942.         // line 619
  943.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage");
  944.         yield "\">
  945.                         <i class=\"feather-flag\"></i>
  946.                         English
  947.                     </a>
  948.                 </li>
  949.                 <li>
  950.                     <a href=\"";
  951.         // line 625
  952.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_homepage", ["_locale" => "fr"]);
  953.         yield "\">
  954.                         <i class=\"feather-flag\"></i>
  955.                         Français
  956.                     </a>
  957.                 </li>
  958.             </ul>
  959.         </div>
  960.         ";
  961.         // line 634
  962.         yield "        <div class=\"whr-foot-col\">
  963.             <h4>";
  964.         // line 635
  965.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.latest_articles", [], "whr-public"), "Articles récents"), "html"nulltrue);
  966.         yield "</h4>
  967.             ";
  968.         // line 636
  969.         if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["footerArticles"]) || array_key_exists("footerArticles"$context) ? $context["footerArticles"] : (function () { throw new RuntimeError('Variable "footerArticles" does not exist.'636$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  970.             // line 637
  971.             yield "                <ul>
  972.                     ";
  973.             // line 638
  974.             $context['_parent'] = $context;
  975.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerArticles"]) || array_key_exists("footerArticles"$context) ? $context["footerArticles"] : (function () { throw new RuntimeError('Variable "footerArticles" does not exist.'638$this->source); })()));
  976.             foreach ($context['_seq'] as $context["_key"] => $context["article"]) {
  977.                 // line 639
  978.                 yield "                        <li>
  979.                             <a href=\"";
  980.                 // line 640
  981.                 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr"$context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.'640$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  982.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_website_article", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'640$this->source); })()), "slug" => CoreExtension::getAttribute($this->env$this->source$context["article"], "slug", [], "any"falsefalsefalse640)]), "html"nulltrue);
  983.                 } else {
  984.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_website_article", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["article"], "slug", [], "any"falsefalsefalse640)]), "html"nulltrue);
  985.                 }
  986.                 yield "\"
  987.                                title=\"";
  988.                 // line 641
  989.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["article"], "title", [], "any"falsefalsefalse641), "html"nulltrue);
  990.                 yield "\">
  991.                                 ";
  992.                 // line 642
  993.                 yield ((CoreExtension::getAttribute($this->env$this->source$context["article"], "shortTitle", [], "any"falsefalsefalse642)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["article"], "shortTitle", [], "any"falsefalsefalse642), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['App\Twig\CoreExtension']->cleanSubstr(CoreExtension::getAttribute($this->env$this->source$context["article"], "title", [], "any"falsefalsefalse642), 45), "html"nulltrue)));
  994.                 yield "
  995.                             </a>
  996.                         </li>
  997.                     ";
  998.             }
  999.             $_parent $context['_parent'];
  1000.             unset($context['_seq'], $context['_key'], $context['article'], $context['_parent']);
  1001.             $context array_intersect_key($context$_parent) + $_parent;
  1002.             // line 646
  1003.             yield "                </ul>
  1004.             ";
  1005.         } else {
  1006.             // line 648
  1007.             yield "                <p class=\"whr-foot-empty\">";
  1008.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.coming_soon", [], "whr-public"), "Bientôt disponible"), "html"nulltrue);
  1009.             yield "</p>
  1010.             ";
  1011.         }
  1012.         // line 650
  1013.         yield "        </div>
  1014.         ";
  1015.         // line 653
  1016.         yield "        <div class=\"whr-foot-col\">
  1017.             <h4>";
  1018.         // line 654
  1019.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.jobs_by_city", [], "whr-public"), "Emplois par ville"), "html"nulltrue);
  1020.         yield "</h4>
  1021.             ";
  1022.         // line 655
  1023.         if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["footerJobsCities"]) || array_key_exists("footerJobsCities"$context) ? $context["footerJobsCities"] : (function () { throw new RuntimeError('Variable "footerJobsCities" does not exist.'655$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1024.             // line 656
  1025.             yield "                <ul>
  1026.                     ";
  1027.             // line 657
  1028.             $context['_parent'] = $context;
  1029.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerJobsCities"]) || array_key_exists("footerJobsCities"$context) ? $context["footerJobsCities"] : (function () { throw new RuntimeError('Variable "footerJobsCities" does not exist.'657$this->source); })()));
  1030.             foreach ($context['_seq'] as $context["_key"] => $context["city"]) {
  1031.                 // line 658
  1032.                 yield "                        <li>
  1033.                             <a class=\"whr-city-link\"
  1034.                                href=\"";
  1035.                 // line 660
  1036.                 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr"$context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.'660$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1037.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_application_jobs_filter", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'660$this->source); })()), "slug" => CoreExtension::getAttribute($this->env$this->source$context["city"], "slug", [], "any"falsefalsefalse660)]), "html"nulltrue);
  1038.                 } else {
  1039.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_application_jobs_filter", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["city"], "slug", [], "any"falsefalsefalse660)]), "html"nulltrue);
  1040.                 }
  1041.                 yield "\"
  1042.                                title=\"";
  1043.                 // line 661
  1044.                 yield ((CoreExtension::getAttribute($this->env$this->source$context["city"], "shortTitle", [], "any"falsefalsefalse661)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "shortTitle", [], "any"falsefalsefalse661), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "label", [], "any"falsefalsefalse661), "html"nulltrue)));
  1045.                 yield "\">
  1046.                                 ";
  1047.                 // line 662
  1048.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["city"], "icon", [], "any"falsefalsefalse662)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1049.                     // line 663
  1050.                     yield "                                    <span class=\"whr-city-icon\">";
  1051.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "icon", [], "any"falsefalsefalse663), "html"nulltrue);
  1052.                     yield "</span>
  1053.                                 ";
  1054.                 } else {
  1055.                     // line 665
  1056.                     yield "                                    <i class=\"feather-map-pin whr-city-icon\"></i>
  1057.                                 ";
  1058.                 }
  1059.                 // line 667
  1060.                 yield "                                <span>";
  1061.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "label", [], "any"falsefalsefalse667), "html"nulltrue);
  1062.                 yield "</span>
  1063.                             </a>
  1064.                         </li>
  1065.                     ";
  1066.             }
  1067.             $_parent $context['_parent'];
  1068.             unset($context['_seq'], $context['_key'], $context['city'], $context['_parent']);
  1069.             $context array_intersect_key($context$_parent) + $_parent;
  1070.             // line 671
  1071.             yield "                </ul>
  1072.             ";
  1073.         } else {
  1074.             // line 673
  1075.             yield "                <p class=\"whr-foot-empty\">";
  1076.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.coming_soon", [], "whr-public"), "Bientôt disponible"), "html"nulltrue);
  1077.             yield "</p>
  1078.             ";
  1079.         }
  1080.         // line 675
  1081.         yield "        </div>
  1082.         ";
  1083.         // line 678
  1084.         yield "        <div class=\"whr-foot-col\">
  1085.             <h4>";
  1086.         // line 679
  1087.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.companies_by_city", [], "whr-public"), "Entreprises par ville"), "html"nulltrue);
  1088.         yield "</h4>
  1089.             ";
  1090.         // line 680
  1091.         if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["footerEnterprisesCities"]) || array_key_exists("footerEnterprisesCities"$context) ? $context["footerEnterprisesCities"] : (function () { throw new RuntimeError('Variable "footerEnterprisesCities" does not exist.'680$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1092.             // line 681
  1093.             yield "                <ul>
  1094.                     ";
  1095.             // line 682
  1096.             $context['_parent'] = $context;
  1097.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerEnterprisesCities"]) || array_key_exists("footerEnterprisesCities"$context) ? $context["footerEnterprisesCities"] : (function () { throw new RuntimeError('Variable "footerEnterprisesCities" does not exist.'682$this->source); })()));
  1098.             foreach ($context['_seq'] as $context["_key"] => $context["city"]) {
  1099.                 // line 683
  1100.                 yield "                        <li>
  1101.                             <a class=\"whr-city-link\"
  1102.                                href=\"";
  1103.                 // line 685
  1104.                 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr"$context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.'685$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1105.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_application_companies_filter", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'685$this->source); })()), "slug" => CoreExtension::getAttribute($this->env$this->source$context["city"], "slug", [], "any"falsefalsefalse685)]), "html"nulltrue);
  1106.                 } else {
  1107.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_application_companies_filter", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["city"], "slug", [], "any"falsefalsefalse685)]), "html"nulltrue);
  1108.                 }
  1109.                 yield "\"
  1110.                                title=\"";
  1111.                 // line 686
  1112.                 yield ((CoreExtension::getAttribute($this->env$this->source$context["city"], "shortTitle", [], "any"falsefalsefalse686)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "shortTitle", [], "any"falsefalsefalse686), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "label", [], "any"falsefalsefalse686), "html"nulltrue)));
  1113.                 yield "\">
  1114.                                 ";
  1115.                 // line 687
  1116.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["city"], "icon", [], "any"falsefalsefalse687)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1117.                     // line 688
  1118.                     yield "                                    <span class=\"whr-city-icon\">";
  1119.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "icon", [], "any"falsefalsefalse688), "html"nulltrue);
  1120.                     yield "</span>
  1121.                                 ";
  1122.                 } else {
  1123.                     // line 690
  1124.                     yield "                                    <i class=\"feather-map-pin whr-city-icon\"></i>
  1125.                                 ";
  1126.                 }
  1127.                 // line 692
  1128.                 yield "                                <span>";
  1129.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["city"], "label", [], "any"falsefalsefalse692), "html"nulltrue);
  1130.                 yield "</span>
  1131.                             </a>
  1132.                         </li>
  1133.                     ";
  1134.             }
  1135.             $_parent $context['_parent'];
  1136.             unset($context['_seq'], $context['_key'], $context['city'], $context['_parent']);
  1137.             $context array_intersect_key($context$_parent) + $_parent;
  1138.             // line 696
  1139.             yield "                </ul>
  1140.             ";
  1141.         } else {
  1142.             // line 698
  1143.             yield "                <p class=\"whr-foot-empty\">";
  1144.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.coming_soon", [], "whr-public"), "Bientôt disponible"), "html"nulltrue);
  1145.             yield "</p>
  1146.             ";
  1147.         }
  1148.         // line 700
  1149.         yield "        </div>
  1150.         ";
  1151.         // line 703
  1152.         yield "        <div class=\"whr-foot-col\">
  1153.             <h4>";
  1154.         // line 704
  1155.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.footer.featured_pages", [], "whr-public"), "À découvrir"), "html"nulltrue);
  1156.         yield "</h4>
  1157.             ";
  1158.         // line 705
  1159.         if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["footerLandingJobs"]) || array_key_exists("footerLandingJobs"$context) ? $context["footerLandingJobs"] : (function () { throw new RuntimeError('Variable "footerLandingJobs" does not exist.'705$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1160.             // line 706
  1161.             yield "                <ul>
  1162.                     ";
  1163.             // line 707
  1164.             $context['_parent'] = $context;
  1165.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["footerLandingJobs"]) || array_key_exists("footerLandingJobs"$context) ? $context["footerLandingJobs"] : (function () { throw new RuntimeError('Variable "footerLandingJobs" does not exist.'707$this->source); })()));
  1166.             foreach ($context['_seq'] as $context["_key"] => $context["landing"]) {
  1167.                 // line 708
  1168.                 yield "                        <li>
  1169.                             <a href=\"";
  1170.                 // line 709
  1171.                 if ((($tmp = (isset($context["_isFr"]) || array_key_exists("_isFr"$context) ? $context["_isFr"] : (function () { throw new RuntimeError('Variable "_isFr" does not exist.'709$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1172.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_homepage_landing", ["_locale" => (isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'709$this->source); })()), "slug" => CoreExtension::getAttribute($this->env$this->source$context["landing"], "slug", [], "any"falsefalsefalse709)]), "html"nulltrue);
  1173.                 } else {
  1174.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage_landing", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["landing"], "slug", [], "any"falsefalsefalse709)]), "html"nulltrue);
  1175.                 }
  1176.                 yield "\">
  1177.                                 ";
  1178.                 // line 710
  1179.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["landing"], "title", [], "any"falsefalsefalse710), "html"nulltrue);
  1180.                 yield "
  1181.                             </a>
  1182.                         </li>
  1183.                     ";
  1184.             }
  1185.             $_parent $context['_parent'];
  1186.             unset($context['_seq'], $context['_key'], $context['landing'], $context['_parent']);
  1187.             $context array_intersect_key($context$_parent) + $_parent;
  1188.             // line 714
  1189.             yield "                </ul>
  1190.             ";
  1191.         }
  1192.         // line 716
  1193.         yield "        </div>
  1194.     </div>
  1195.     ";
  1196.         // line 720
  1197.         yield "    <div class=\"whr-foot-bottom\">
  1198.         <p class=\"whr-foot-copy\">
  1199.             ";
  1200.         // line 722
  1201.         if ((($tmp = (isset($context["favicon"]) || array_key_exists("favicon"$context) ? $context["favicon"] : (function () { throw new RuntimeError('Variable "favicon" does not exist.'722$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1202.             // line 723
  1203.             yield "                <img src=\"";
  1204.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["favicon"]) || array_key_exists("favicon"$context) ? $context["favicon"] : (function () { throw new RuntimeError('Variable "favicon" does not exist.'723$this->source); })()), "html"nulltrue);
  1205.             yield "\" alt=\"\" class=\"whr-favicon\" />
  1206.             ";
  1207.         }
  1208.         // line 725
  1209.         yield "            <span>&copy; ";
  1210.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatDate("now""Y"), "html"nulltrue);
  1211.         yield " ";
  1212.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["websitename"]) || array_key_exists("websitename"$context) ? $context["websitename"] : (function () { throw new RuntimeError('Variable "websitename" does not exist.'725$this->source); })()), "html"nulltrue);
  1213.         yield ". ";
  1214.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::default($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("layout.rights_reserved", [], "whr-public"), "Tous droits réservés."), "html"nulltrue);
  1215.         yield "</span>
  1216.         </p>
  1217.         <div class=\"whr-foot-legal\">
  1218.             ";
  1219.         // line 729
  1220.         $context["menuFooter"] = $this->extensions['App\Twig\MenuExtension']->getMenuWebsiteLocaleArray((isset($context["_locale"]) || array_key_exists("_locale"$context) ? $context["_locale"] : (function () { throw new RuntimeError('Variable "_locale" does not exist.'729$this->source); })()), "footer", (isset($context["connectUser"]) || array_key_exists("connectUser"$context) ? $context["connectUser"] : (function () { throw new RuntimeError('Variable "connectUser" does not exist.'729$this->source); })()));
  1221.         // line 730
  1222.         yield "            ";
  1223.         if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty((isset($context["menuFooter"]) || array_key_exists("menuFooter"$context) ? $context["menuFooter"] : (function () { throw new RuntimeError('Variable "menuFooter" does not exist.'730$this->source); })()))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1224.             // line 731
  1225.             yield "                ";
  1226.             $context['_parent'] = $context;
  1227.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["menuFooter"]) || array_key_exists("menuFooter"$context) ? $context["menuFooter"] : (function () { throw new RuntimeError('Variable "menuFooter" does not exist.'731$this->source); })()));
  1228.             foreach ($context['_seq'] as $context["_key"] => $context["m"]) {
  1229.                 // line 732
  1230.                 yield "                    <a href=\"";
  1231.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["m"], "link", [], "any"falsefalsefalse732), "html"nulltrue);
  1232.                 yield "\"
  1233.                        aria-label=\"";
  1234.                 // line 733
  1235.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["m"], "title", [], "any"falsefalsefalse733), "html"nulltrue);
  1236.                 yield "\"
  1237.                        title=\"";
  1238.                 // line 734
  1239.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["m"], "title", [], "any"falsefalsefalse734), "html"nulltrue);
  1240.                 yield "\"
  1241.                        ";
  1242.                 // line 735
  1243.                 if ((CoreExtension::getAttribute($this->env$this->source$context["m"], "targetBlank", [], "any"falsefalsefalse735) == 1)) {
  1244.                     yield "target=\"_blank\" rel=\"noreferrer\"";
  1245.                 }
  1246.                 yield ">
  1247.                         ";
  1248.                 // line 736
  1249.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["m"], "title", [], "any"falsefalsefalse736), "html"nulltrue);
  1250.                 yield "
  1251.                     </a>
  1252.                 ";
  1253.             }
  1254.             $_parent $context['_parent'];
  1255.             unset($context['_seq'], $context['_key'], $context['m'], $context['_parent']);
  1256.             $context array_intersect_key($context$_parent) + $_parent;
  1257.             // line 739
  1258.             yield "            ";
  1259.         }
  1260.         // line 740
  1261.         yield "            ";
  1262.         if (( !(null === CoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'740$this->source); })()), "user", [], "any"falsefalsefalse740)) && $this->extensions['Symfony\Bridge\Twig\Extension\SecurityExtension']->isGranted("ROLE_SUPER_ADMIN"))) {
  1263.             // line 741
  1264.             yield "                <a href=\"";
  1265.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("backoffice_dashboard");
  1266.             yield "\" class=\"whr-admin-link\" title=\"Administration\">
  1267.                     <i class=\"feather-settings\"></i> Administration
  1268.                 </a>
  1269.             ";
  1270.         }
  1271.         // line 745
  1272.         yield "        </div>
  1273.         <ul class=\"whr-foot-social\">
  1274.             ";
  1275.         // line 748
  1276.         if ((($tmp = (isset($context["facebook"]) || array_key_exists("facebook"$context) ? $context["facebook"] : (function () { throw new RuntimeError('Variable "facebook" does not exist.'748$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1277.             // line 749
  1278.             yield "                <li><a href=\"";
  1279.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["facebook"]) || array_key_exists("facebook"$context) ? $context["facebook"] : (function () { throw new RuntimeError('Variable "facebook" does not exist.'749$this->source); })()), "html"nulltrue);
  1280.             yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><i class=\"feather-facebook\"></i></a></li>
  1281.             ";
  1282.         }
  1283.         // line 751
  1284.         yield "            ";
  1285.         if ((($tmp = (isset($context["twitter"]) || array_key_exists("twitter"$context) ? $context["twitter"] : (function () { throw new RuntimeError('Variable "twitter" does not exist.'751$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1286.             // line 752
  1287.             yield "                <li><a href=\"";
  1288.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["twitter"]) || array_key_exists("twitter"$context) ? $context["twitter"] : (function () { throw new RuntimeError('Variable "twitter" does not exist.'752$this->source); })()), "html"nulltrue);
  1289.             yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"X / Twitter\"><i class=\"feather-twitter\"></i></a></li>
  1290.             ";
  1291.         }
  1292.         // line 754
  1293.         yield "            ";
  1294.         if ((($tmp = (isset($context["instagram"]) || array_key_exists("instagram"$context) ? $context["instagram"] : (function () { throw new RuntimeError('Variable "instagram" does not exist.'754$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1295.             // line 755
  1296.             yield "                <li><a href=\"";
  1297.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["instagram"]) || array_key_exists("instagram"$context) ? $context["instagram"] : (function () { throw new RuntimeError('Variable "instagram" does not exist.'755$this->source); })()), "html"nulltrue);
  1298.             yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><i class=\"feather-instagram\"></i></a></li>
  1299.             ";
  1300.         }
  1301.         // line 757
  1302.         yield "            ";
  1303.         if ((($tmp = (isset($context["linkedin"]) || array_key_exists("linkedin"$context) ? $context["linkedin"] : (function () { throw new RuntimeError('Variable "linkedin" does not exist.'757$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1304.             // line 758
  1305.             yield "                <li><a href=\"";
  1306.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["linkedin"]) || array_key_exists("linkedin"$context) ? $context["linkedin"] : (function () { throw new RuntimeError('Variable "linkedin" does not exist.'758$this->source); })()), "html"nulltrue);
  1307.             yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><i class=\"feather-linkedin\"></i></a></li>
  1308.             ";
  1309.         }
  1310.         // line 760
  1311.         yield "            ";
  1312.         if ((($tmp = (isset($context["youtube"]) || array_key_exists("youtube"$context) ? $context["youtube"] : (function () { throw new RuntimeError('Variable "youtube" does not exist.'760$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1313.             // line 761
  1314.             yield "                <li><a href=\"";
  1315.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["youtube"]) || array_key_exists("youtube"$context) ? $context["youtube"] : (function () { throw new RuntimeError('Variable "youtube" does not exist.'761$this->source); })()), "html"nulltrue);
  1316.             yield "\" target=\"_blank\" rel=\"noopener\" aria-label=\"YouTube\"><i class=\"feather-youtube\"></i></a></li>
  1317.             ";
  1318.         }
  1319.         // line 763
  1320.         yield "        </ul>
  1321.     </div>
  1322. </footer>
  1323. ";
  1324.         // line 769
  1325.         yield "<script>
  1326.     (function() {
  1327.         'use strict';
  1328.         function closeAllDropdowns() {
  1329.             document.querySelectorAll('.whr-store-wrap.is-open').forEach(function(w) {
  1330.                 w.classList.remove('is-open');
  1331.                 var b = w.querySelector('.whr-store-link');
  1332.                 if (b) b.setAttribute('aria-expanded', 'false');
  1333.                 // Reset search à la fermeture
  1334.                 var input = w.querySelector('.whr-store-search');
  1335.                 if (input) {
  1336.                     input.value = '';
  1337.                     applyFilter(w, '');
  1338.                 }
  1339.             });
  1340.         }
  1341.         function applyFilter(wrap, query) {
  1342.             query = (query || '').trim().toLowerCase();
  1343.             var items = wrap.querySelectorAll('.whr-store-country');
  1344.             var othersWrap = wrap.querySelector('.whr-store-others');
  1345.             var emptyMsg = wrap.querySelector('.whr-store-empty');
  1346.             var grid = wrap.querySelector('.whr-store-grid');
  1347.             var visibleInOthers = 0;
  1348.             items.forEach(function(item) {
  1349.                 var searchData = item.dataset.search || '';
  1350.                 var matches = query === '' || searchData.indexOf(query) !== -1;
  1351.                 if (matches) {
  1352.                     item.classList.remove('is-hidden');
  1353.                     // Compter uniquement les items dans la grille \"others\" (pas le featured)
  1354.                     if (grid && grid.contains(item)) {
  1355.                         visibleInOthers++;
  1356.                     }
  1357.                 } else {
  1358.                     item.classList.add('is-hidden');
  1359.                 }
  1360.             });
  1361.             // Afficher le message \"aucun résultat\" si rien ne matche dans others
  1362.             if (emptyMsg && grid) {
  1363.                 if (query !== '' && visibleInOthers === 0) {
  1364.                     grid.style.display = 'none';
  1365.                     emptyMsg.style.display = 'block';
  1366.                 } else {
  1367.                     grid.style.display = '';
  1368.                     emptyMsg.style.display = 'none';
  1369.                 }
  1370.             }
  1371.         }
  1372.         function initWhrStoreDropdowns() {
  1373.             var wraps = document.querySelectorAll('.whr-store-wrap');
  1374.             if (!wraps.length) return;
  1375.             wraps.forEach(function(wrap) {
  1376.                 var btn = wrap.querySelector('.whr-store-link');
  1377.                 if (!btn || btn.dataset.whrInit === '1') return;
  1378.                 btn.dataset.whrInit = '1';
  1379.                 // === Toggle au clic sur le bouton ===
  1380.                 btn.addEventListener('click', function(e) {
  1381.                     e.preventDefault();
  1382.                     e.stopPropagation();
  1383.                     var isOpen = wrap.classList.contains('is-open');
  1384.                     closeAllDropdowns();
  1385.                     if (!isOpen) {
  1386.                         wrap.classList.add('is-open');
  1387.                         btn.setAttribute('aria-expanded', 'true');
  1388.                         // Auto-focus sur la search à l'ouverture (desktop seulement,
  1389.                         // pour éviter le clavier qui pop sur mobile)
  1390.                         var input = wrap.querySelector('.whr-store-search');
  1391.                         if (input && window.innerWidth >= 768) {
  1392.                             setTimeout(function() { input.focus(); }, 50);
  1393.                         }
  1394.                     }
  1395.                 });
  1396.                 // === Filtrage live sur la search ===
  1397.                 var input = wrap.querySelector('.whr-store-search');
  1398.                 if (input) {
  1399.                     input.addEventListener('input', function() {
  1400.                         applyFilter(wrap, this.value);
  1401.                     });
  1402.                     // Empêcher la fermeture du dropdown quand on clique dans le champ
  1403.                     input.addEventListener('click', function(e) {
  1404.                         e.stopPropagation();
  1405.                     });
  1406.                     // Échap dans le champ → vider la recherche d'abord, puis fermer
  1407.                     input.addEventListener('keydown', function(e) {
  1408.                         if (e.key === 'Escape') {
  1409.                             if (this.value !== '') {
  1410.                                 this.value = '';
  1411.                                 applyFilter(wrap, '');
  1412.                                 e.stopPropagation();
  1413.                             }
  1414.                         }
  1415.                     });
  1416.                 }
  1417.             });
  1418.             // === Listeners globaux (un seul fois) ===
  1419.             if (!document.body.dataset.whrStoreOutsideInit) {
  1420.                 document.body.dataset.whrStoreOutsideInit = '1';
  1421.                 // Click outside → close
  1422.                 document.addEventListener('click', function(e) {
  1423.                     if (!e.target.closest('.whr-store-wrap')) {
  1424.                         closeAllDropdowns();
  1425.                     }
  1426.                 });
  1427.                 // ESC → close
  1428.                 document.addEventListener('keydown', function(e) {
  1429.                     if (e.key === 'Escape') {
  1430.                         closeAllDropdowns();
  1431.                     }
  1432.                 });
  1433.             }
  1434.         }
  1435.         if (document.readyState === 'loading') {
  1436.             document.addEventListener('DOMContentLoaded', initWhrStoreDropdowns);
  1437.         } else {
  1438.             initWhrStoreDropdowns();
  1439.         }
  1440.     })();
  1441. </script>
  1442. ";
  1443.         
  1444.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1445.         
  1446.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1447.         yield from [];
  1448.     }
  1449.     /**
  1450.      * @codeCoverageIgnore
  1451.      */
  1452.     public function getTemplateName(): string
  1453.     {
  1454.         return "application/whileresume/website/components/footer.html.twig";
  1455.     }
  1456.     /**
  1457.      * @codeCoverageIgnore
  1458.      */
  1459.     public function isTraitable(): bool
  1460.     {
  1461.         return false;
  1462.     }
  1463.     /**
  1464.      * @codeCoverageIgnore
  1465.      */
  1466.     public function getDebugInfo(): array
  1467.     {
  1468.         return array (  1376 => 769,  1369 => 763,  1363 => 761,  1360 => 760,  1354 => 758,  1351 => 757,  1345 => 755,  1342 => 754,  1336 => 752,  1333 => 751,  1327 => 749,  1325 => 748,  1320 => 745,  1312 => 741,  1309 => 740,  1306 => 739,  1297 => 736,  1291 => 735,  1287 => 734,  1283 => 733,  1278 => 732,  1273 => 731,  1270 => 730,  1268 => 729,  1256 => 725,  1250 => 723,  1248 => 722,  1244 => 720,  1239 => 716,  1235 => 714,  1225 => 710,  1217 => 709,  1214 => 708,  1210 => 707,  1207 => 706,  1205 => 705,  1201 => 704,  1198 => 703,  1194 => 700,  1188 => 698,  1184 => 696,  1173 => 692,  1169 => 690,  1163 => 688,  1161 => 687,  1157 => 686,  1149 => 685,  1145 => 683,  1141 => 682,  1138 => 681,  1136 => 680,  1132 => 679,  1129 => 678,  1125 => 675,  1119 => 673,  1115 => 671,  1104 => 667,  1100 => 665,  1094 => 663,  1092 => 662,  1088 => 661,  1080 => 660,  1076 => 658,  1072 => 657,  1069 => 656,  1067 => 655,  1063 => 654,  1060 => 653,  1056 => 650,  1050 => 648,  1046 => 646,  1036 => 642,  1032 => 641,  1024 => 640,  1021 => 639,  1017 => 638,  1014 => 637,  1012 => 636,  1008 => 635,  1005 => 634,  994 => 625,  985 => 619,  979 => 615,  974 => 612,  967 => 608,  963 => 606,  957 => 605,  950 => 602,  944 => 601,  937 => 599,  931 => 597,  928 => 596,  924 => 595,  918 => 592,  914 => 590,  911 => 589,  908 => 587,  904 => 585,  898 => 584,  891 => 581,  885 => 580,  878 => 578,  872 => 576,  869 => 575,  865 => 574,  860 => 572,  856 => 570,  853 => 569,  841 => 568,  838 => 567,  835 => 565,  827 => 560,  822 => 557,  819 => 556,  807 => 555,  804 => 554,  794 => 546,  783 => 537,  781 => 536,  778 => 535,  766 => 534,  754 => 533,  751 => 532,  748 => 530,  743 => 527,  736 => 523,  732 => 521,  726 => 520,  719 => 517,  713 => 516,  706 => 514,  700 => 512,  697 => 511,  693 => 510,  687 => 507,  683 => 505,  680 => 504,  677 => 502,  673 => 500,  667 => 499,  660 => 496,  654 => 495,  647 => 493,  641 => 491,  638 => 490,  634 => 489,  629 => 487,  625 => 485,  622 => 484,  610 => 483,  607 => 482,  604 => 480,  596 => 475,  591 => 472,  588 => 471,  576 => 470,  573 => 469,  563 => 461,  555 => 455,  553 => 454,  550 => 453,  538 => 452,  526 => 451,  523 => 450,  520 => 448,  516 => 445,  510 => 443,  504 => 441,  502 => 440,  499 => 439,  495 => 436,  72 => 14,  70 => 13,  68 => 12,  66 => 11,  63 => 9,  61 => 8,  59 => 7,  57 => 6,  55 => 5,  52 => 3,  50 => 2,  48 => 1,);
  1469.     }
  1470.     public function getSourceContext(): Source
  1471.     {
  1472.         return new Source("{% set _locale = app.request.locale %}
  1473. {% set _isFr = _locale == 'fr' %}
  1474. {# Données dynamiques #}
  1475. {% set footerArticles = getFooterArticles(_locale, 5) %}
  1476. {% set footerLandingJobs = getFooterFeaturedLandingJobs(_locale, 5) %}
  1477. {% set footerJobsCities = getFooterJobsCities(_locale, 6) %}
  1478. {% set footerEnterprisesCities = getFooterEnterprisesCities(_locale, 6) %}
  1479. {# Liens stores : nouvelle source de vérité (table cvs_app_store_links) #}
  1480. {% set _storeData = getAppStoreCountries() %}
  1481. {% set _storePrimary = _storeData.primary|default({}) %}
  1482. {% set _storeOthers = _storeData.others|default({}) %}
  1483. <style>
  1484.     /* ---------- Footer WhileResume ---------- */
  1485.     .whr-footer {
  1486.         margin-top: 32px;
  1487.         padding: 36px 24px 24px;
  1488.         background: #F9FAFD;
  1489.         border-radius: 16px;
  1490.         color: #2c2c46;
  1491.         width: auto;
  1492.         max-width: none;
  1493.         margin-left: 16px;
  1494.         margin-right: 16px;
  1495.     }
  1496.     .theme-dark .whr-footer {
  1497.         background: #2a2a3c;
  1498.         color: #e9e9ef;
  1499.     }
  1500.     .middle-sidebar-left .whr-footer {
  1501.         width: 100%;
  1502.         margin-left: 0;
  1503.         margin-right: 0;
  1504.     }
  1505.     /* Stores en haut de la col 1 */
  1506.     .whr-footer .whr-stores {
  1507.         display: flex;
  1508.         flex-direction: column;
  1509.         gap: 8px;
  1510.         margin-bottom: 18px;
  1511.         position: relative; /* pour le dropdown */
  1512.     }
  1513.     .whr-footer .whr-store-link {
  1514.         display: inline-flex;
  1515.         align-items: center;
  1516.         gap: 10px;
  1517.         padding: 8px 14px;
  1518.         background: #111;
  1519.         color: #fff !important;
  1520.         border-radius: 10px;
  1521.         font-size: 12px;
  1522.         font-weight: 600;
  1523.         text-decoration: none !important;
  1524.         line-height: 1.2;
  1525.         transition: transform .15s ease, background .2s ease;
  1526.         max-width: 200px;
  1527.         cursor: pointer;
  1528.         border: none;
  1529.         font-family: inherit;
  1530.         text-align: left;
  1531.     }
  1532.     .whr-footer .whr-store-link:hover {
  1533.         background: #2c2c46;
  1534.         transform: translateY(-1px);
  1535.     }
  1536.     .whr-footer .whr-store-link small {
  1537.         display: block;
  1538.         font-weight: 400;
  1539.         font-size: 10px;
  1540.         opacity: .7;
  1541.     }
  1542.     .whr-footer .whr-store-link strong { font-size: 13px; display: block; }
  1543.     /* Wrapper du bouton + dropdown (version EN) */
  1544.     .whr-store-wrap {
  1545.         position: relative;
  1546.         display: inline-block;
  1547.     }
  1548.     .whr-store-wrap .whr-store-link {
  1549.         width: 100%;
  1550.         max-width: 200px;
  1551.     }
  1552.     /* === Dropdown élargi (2 colonnes + search + featured pinné) === */
  1553.     .whr-store-dropdown {
  1554.         position: absolute;
  1555.         bottom: calc(100% + 6px);
  1556.         left: 0;
  1557.         width: 380px;
  1558.         max-width: calc(100vw - 32px);
  1559.         background: #fff;
  1560.         border-radius: 12px;
  1561.         box-shadow: 0 -8px 24px rgba(0,0,0,.15), 0 -2px 6px rgba(0,0,0,.08);
  1562.         z-index: 1000;
  1563.         display: none;
  1564.         overflow: hidden;
  1565.     }
  1566.     .theme-dark .whr-store-dropdown {
  1567.         background: #34344a;
  1568.         box-shadow: 0 -8px 24px rgba(0,0,0,.4), 0 -2px 6px rgba(0,0,0,.2);
  1569.     }
  1570.     .whr-store-wrap.is-open .whr-store-dropdown {
  1571.         display: flex;
  1572.         flex-direction: column;
  1573.         animation: whrFadeInUp .15s ease;
  1574.     }
  1575.     @keyframes whrFadeInUp {
  1576.         from { opacity: 0; transform: translateY(4px); }
  1577.         to { opacity: 1; transform: translateY(0); }
  1578.     }
  1579.     /* Chevron */
  1580.     .whr-store-link .whr-store-chevron {
  1581.         margin-left: auto;
  1582.         font-size: 10px;
  1583.         opacity: .7;
  1584.         transition: transform .2s ease;
  1585.     }
  1586.     .whr-store-wrap.is-open .whr-store-link .whr-store-chevron {
  1587.         transform: rotate(180deg);
  1588.     }
  1589.     /* Zone search en haut */
  1590.     .whr-store-search-wrap {
  1591.         padding: 10px 10px 6px;
  1592.         border-bottom: 1px solid rgba(0,0,0,.06);
  1593.         flex-shrink: 0;
  1594.     }
  1595.     .theme-dark .whr-store-search-wrap { border-bottom-color: rgba(255,255,255,.08); }
  1596.     .whr-store-search {
  1597.         width: 100%;
  1598.         height: 34px;
  1599.         padding: 0 12px 0 32px;
  1600.         border: 1px solid rgba(0,0,0,.1);
  1601.         border-radius: 8px;
  1602.         background: #f5f5f8 url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>\") no-repeat 10px center;
  1603.         font-size: 13px;
  1604.         color: #2c2c46;
  1605.         outline: none;
  1606.         transition: border-color .15s ease, background-color .15s ease;
  1607.         font-family: inherit;
  1608.     }
  1609.     .whr-store-search:focus {
  1610.         border-color: var(--theme-color, #6C3AED);
  1611.         background-color: #fff;
  1612.     }
  1613.     .theme-dark .whr-store-search {
  1614.         background-color: #2a2a3c;
  1615.         border-color: rgba(255,255,255,.1);
  1616.         color: #e9e9ef;
  1617.     }
  1618.     .theme-dark .whr-store-search:focus { background-color: #3c3c52; }
  1619.     .whr-store-search::placeholder { color: #999; }
  1620.     /* Featured pinné (toujours visible, hors scroll) */
  1621.     .whr-store-featured {
  1622.         padding: 8px 8px 4px;
  1623.         flex-shrink: 0;
  1624.         border-bottom: 1px solid rgba(0,0,0,.06);
  1625.     }
  1626.     .theme-dark .whr-store-featured { border-bottom-color: rgba(255,255,255,.08); }
  1627.     /* Zone scrollable des \"other regions\" */
  1628.     .whr-store-others {
  1629.         padding: 8px;
  1630.         max-height: 280px;
  1631.         overflow-y: auto;
  1632.         flex: 1;
  1633.     }
  1634.     .whr-store-others::-webkit-scrollbar { width: 6px; }
  1635.     .whr-store-others::-webkit-scrollbar-thumb { background: rgba(0,0,0,.15); border-radius: 3px; }
  1636.     .theme-dark .whr-store-others::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); }
  1637.     /* Header de section */
  1638.     .whr-store-dropdown-header {
  1639.         font-size: 10px;
  1640.         font-weight: 700;
  1641.         text-transform: uppercase;
  1642.         letter-spacing: .5px;
  1643.         opacity: .55;
  1644.         padding: 4px 8px 6px;
  1645.         color: #2c2c46;
  1646.     }
  1647.     .theme-dark .whr-store-dropdown-header { color: #e9e9ef; }
  1648.     /* Grille 2 colonnes pour les pays */
  1649.     .whr-store-grid {
  1650.         display: grid;
  1651.         grid-template-columns: 1fr 1fr;
  1652.         gap: 2px;
  1653.     }
  1654.     /* Item pays */
  1655.     .whr-store-country {
  1656.         display: flex;
  1657.         align-items: center;
  1658.         gap: 8px;
  1659.         padding: 7px 9px;
  1660.         border-radius: 6px;
  1661.         text-decoration: none !important;
  1662.         color: #2c2c46 !important;
  1663.         font-size: 12.5px;
  1664.         transition: background .15s ease;
  1665.         min-width: 0;
  1666.     }
  1667.     .theme-dark .whr-store-country { color: #e9e9ef !important; }
  1668.     .whr-store-country:hover {
  1669.         background: rgba(108, 58, 237, .08);
  1670.         color: var(--theme-color, #6C3AED) !important;
  1671.     }
  1672.     .theme-dark .whr-store-country:hover { background: rgba(108, 58, 237, .2); }
  1673.     .whr-store-country .whr-flag {
  1674.         font-size: 16px;
  1675.         line-height: 1;
  1676.         width: 18px;
  1677.         text-align: center;
  1678.         flex-shrink: 0;
  1679.     }
  1680.     .whr-store-country .whr-country-name {
  1681.         flex: 1;
  1682.         font-weight: 500;
  1683.         white-space: nowrap;
  1684.         overflow: hidden;
  1685.         text-overflow: ellipsis;
  1686.         min-width: 0;
  1687.     }
  1688.     /* Featured = pleine largeur, plus mis en avant */
  1689.     .whr-store-featured .whr-store-country {
  1690.         background: linear-gradient(135deg, rgba(108, 58, 237, .08), rgba(108, 58, 237, .03));
  1691.         font-weight: 600;
  1692.         padding: 9px 10px;
  1693.     }
  1694.     .theme-dark .whr-store-featured .whr-store-country {
  1695.         background: linear-gradient(135deg, rgba(108, 58, 237, .25), rgba(108, 58, 237, .1));
  1696.     }
  1697.     /* Message \"aucun résultat\" */
  1698.     .whr-store-empty {
  1699.         text-align: center;
  1700.         padding: 20px 12px;
  1701.         font-size: 12px;
  1702.         color: #999;
  1703.         font-style: italic;
  1704.     }
  1705.     .theme-dark .whr-store-empty { color: #aaa; }
  1706.     /* Item caché par la recherche */
  1707.     .whr-store-country.is-hidden { display: none; }
  1708.     /* Responsive : sur mobile, 1 colonne et largeur ajustée */
  1709.     @media (max-width: 575.98px) {
  1710.         .whr-store-dropdown {
  1711.             width: calc(100vw - 32px);
  1712.             max-width: 360px;
  1713.         }
  1714.         .whr-store-grid {
  1715.             grid-template-columns: 1fr;
  1716.         }
  1717.     }
  1718.     /* Colonnes */
  1719.     .whr-footer .whr-foot-col h4 {
  1720.         font-size: 13px;
  1721.         font-weight: 700;
  1722.         margin: 0 0 14px 0;
  1723.         color: inherit;
  1724.         text-transform: uppercase;
  1725.         letter-spacing: .3px;
  1726.     }
  1727.     .whr-footer .whr-foot-col ul {
  1728.         list-style: none;
  1729.         padding: 0;
  1730.         margin: 0;
  1731.         font-size: 13px;
  1732.     }
  1733.     .whr-footer .whr-foot-col ul li { margin-bottom: 10px; }
  1734.     .whr-footer .whr-foot-col a {
  1735.         color: inherit;
  1736.         opacity: .75;
  1737.         text-decoration: none;
  1738.         transition: opacity .2s ease, color .2s ease;
  1739.     }
  1740.     .whr-footer .whr-foot-col a:hover { opacity: 1; color: var(--theme-color, #6C3AED); }
  1741.     .whr-footer .whr-foot-empty {
  1742.         font-size: 12px;
  1743.         opacity: .5;
  1744.         font-style: italic;
  1745.     }
  1746.     .whr-footer .whr-foot-action-links a {
  1747.         display: inline-flex;
  1748.         align-items: center;
  1749.         gap: 8px;
  1750.     }
  1751.     .whr-footer .whr-foot-action-links a i {
  1752.         font-size: 14px;
  1753.         opacity: .7;
  1754.         width: 16px;
  1755.         text-align: center;
  1756.     }
  1757.     .whr-footer .whr-foot-col .whr-city-link {
  1758.         display: inline-flex;
  1759.         align-items: center;
  1760.         gap: 6px;
  1761.     }
  1762.     .whr-footer .whr-foot-col .whr-city-link .whr-city-icon {
  1763.         font-size: 14px;
  1764.         line-height: 1;
  1765.         display: inline-block;
  1766.         width: 18px;
  1767.         text-align: center;
  1768.         opacity: .85;
  1769.     }
  1770.     .whr-footer .whr-foot-grid {
  1771.         display: grid;
  1772.         gap: 28px;
  1773.         grid-template-columns: 1fr;
  1774.     }
  1775.     @media (min-width: 576px) {
  1776.         .whr-footer .whr-foot-grid { grid-template-columns: 1fr 1fr; }
  1777.     }
  1778.     @media (min-width: 992px) {
  1779.         .whr-footer .whr-foot-grid {
  1780.             grid-template-columns: repeat(5, 1fr);
  1781.             gap: 32px;
  1782.         }
  1783.     }
  1784.     .whr-footer .whr-foot-bottom {
  1785.         margin-top: 32px;
  1786.         padding-top: 20px;
  1787.         border-top: 1px solid rgba(0,0,0,.08);
  1788.         display: flex;
  1789.         flex-direction: column;
  1790.         gap: 14px;
  1791.         align-items: center;
  1792.         text-align: center;
  1793.     }
  1794.     .theme-dark .whr-footer .whr-foot-bottom { border-top-color: rgba(255,255,255,.1); }
  1795.     @media (min-width: 768px) {
  1796.         .whr-footer .whr-foot-bottom {
  1797.             flex-direction: row;
  1798.             justify-content: space-between;
  1799.             text-align: left;
  1800.         }
  1801.     }
  1802.     .whr-footer .whr-foot-copy {
  1803.         display: inline-flex;
  1804.         align-items: center;
  1805.         gap: 8px;
  1806.         font-size: 12px;
  1807.         opacity: .7;
  1808.         margin: 0;
  1809.     }
  1810.     .whr-footer .whr-foot-copy img.whr-favicon {
  1811.         width: 18px;
  1812.         height: 18px;
  1813.         border-radius: 4px;
  1814.         flex-shrink: 0;
  1815.     }
  1816.     .whr-footer .whr-foot-legal {
  1817.         display: flex;
  1818.         flex-wrap: wrap;
  1819.         gap: 6px 16px;
  1820.         justify-content: center;
  1821.         font-size: 12px;
  1822.     }
  1823.     .whr-footer .whr-foot-legal a {
  1824.         color: inherit;
  1825.         opacity: .75;
  1826.         text-decoration: none;
  1827.     }
  1828.     .whr-footer .whr-foot-legal a:hover { opacity: 1; }
  1829.     .whr-footer .whr-foot-legal .whr-admin-link { color: #e74c3c !important; opacity: 1; }
  1830.     .whr-footer .whr-foot-social {
  1831.         display: flex;
  1832.         flex-wrap: wrap;
  1833.         gap: 6px;
  1834.         list-style: none;
  1835.         padding: 0;
  1836.         margin: 0;
  1837.     }
  1838.     .whr-footer .whr-foot-social a {
  1839.         width: 32px; height: 32px;
  1840.         border-radius: 8px;
  1841.         background: #fff;
  1842.         display: inline-flex;
  1843.         align-items: center;
  1844.         justify-content: center;
  1845.         color: #2c2c46;
  1846.         text-decoration: none !important;
  1847.         transition: background .2s ease, color .2s ease, transform .15s ease;
  1848.         box-shadow: 0 1px 2px rgba(0,0,0,.04);
  1849.     }
  1850.     .whr-footer .whr-foot-social a:hover {
  1851.         background: var(--theme-color, #6C3AED);
  1852.         color: #fff;
  1853.         transform: translateY(-1px);
  1854.     }
  1855.     .theme-dark .whr-footer .whr-foot-social a {
  1856.         background: #34344a;
  1857.         color: #fff;
  1858.         box-shadow: none;
  1859.     }
  1860.     .whr-footer .whr-foot-social i { font-size: 14px; }
  1861.     @media (max-width: 575.98px) {
  1862.         .whr-footer {
  1863.             padding: 24px 18px 20px;
  1864.             margin-left: 8px;
  1865.             margin-right: 8px;
  1866.         }
  1867.         .whr-store-dropdown {
  1868.             min-width: 220px;
  1869.             max-width: 90vw;
  1870.         }
  1871.     }
  1872. </style>
  1873. <footer class=\"whr-footer\" role=\"contentinfo\">
  1874.     {# === Grille principale 5 colonnes === #}
  1875.     <div class=\"whr-foot-grid\">
  1876.         {# ===== Col 1 : Mon compte / Commencer ici ===== #}
  1877.         <div class=\"whr-foot-col whr-foot-col-action\">
  1878.             {% if connectUser %}
  1879.                 <h4>{{ 'layout.footer.my_account'|trans({}, 'whr-public')|default('Mon compte') }}</h4>
  1880.             {% else %}
  1881.                 <h4>{{ 'layout.footer.start_here'|trans({}, 'whr-public')|default('Commencer ici') }}</h4>
  1882.             {% endif %}
  1883.             <div class=\"whr-stores\">
  1884.                 {# === Dropdown unifié (FR & EN) — la version FR aura FR en featured, la EN aura US === #}
  1885.                 {# -- Bouton App Store + dropdown -- #}
  1886.                 {% set _hasIos = false %}
  1887.                 {% for c in _storePrimary %}{% if c.ios %}{% set _hasIos = true %}{% endif %}{% endfor %}
  1888.                 {% for c in _storeOthers %}{% if c.ios %}{% set _hasIos = true %}{% endif %}{% endfor %}
  1889.                 {% if _hasIos %}
  1890.                     <div class=\"whr-store-wrap\" data-whr-store=\"ios\">
  1891.                         <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"App Store - Choose your country\">
  1892.                             <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#fff\" aria-hidden=\"true\">
  1893.                                 <path d=\"M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z\"/>
  1894.                             </svg>
  1895.                             <span>
  1896.                                     <small>{{ 'layout.download_on'|trans({}, 'whr-public')|default('Download on') }}</small>
  1897.                                     <strong>App Store</strong>
  1898.                                 </span>
  1899.                             <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span>
  1900.                         </button>
  1901.                         <div class=\"whr-store-dropdown\" role=\"menu\">
  1902.                             {# Search bar (n'apparaît que si > 20 pays \"others\") #}
  1903.                             {% set _iosOthersCount = 0 %}
  1904.                             {% for c in _storeOthers %}{% if c.ios %}{% set _iosOthersCount = _iosOthersCount + 1 %}{% endif %}{% endfor %}
  1905.                             {% if _iosOthersCount > 20 %}
  1906.                                 <div class=\"whr-store-search-wrap\">
  1907.                                     <input type=\"text\"
  1908.                                            class=\"whr-store-search\"
  1909.                                            placeholder=\"{{ 'layout.search_country'|trans({}, 'whr-public')|default('Search country...') }}\"
  1910.                                            aria-label=\"Search country\"
  1911.                                            autocomplete=\"off\">
  1912.                                 </div>
  1913.                             {% endif %}
  1914.                             {# Featured (pinné, pas dans le scroll) #}
  1915.                             {% set _iosPrimaryCount = 0 %}
  1916.                             {% for c in _storePrimary %}{% if c.ios %}{% set _iosPrimaryCount = _iosPrimaryCount + 1 %}{% endif %}{% endfor %}
  1917.                             {% if _iosPrimaryCount > 0 %}
  1918.                                 <div class=\"whr-store-featured\">
  1919.                                     <div class=\"whr-store-dropdown-header\">
  1920.                                         {{ 'layout.featured'|trans({}, 'whr-public')|default('Featured') }}
  1921.                                     </div>
  1922.                                     {% for code, country in _storePrimary %}
  1923.                                         {% if country.ios %}
  1924.                                             <a href=\"{{ country.ios }}\"
  1925.                                                class=\"whr-store-country\"
  1926.                                                data-search=\"{{ country.label|lower }} {{ code|lower }}\"
  1927.                                                target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  1928.                                                 {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %}
  1929.                                                 <span class=\"whr-country-name\">{{ country.label }}</span>
  1930.                                             </a>
  1931.                                         {% endif %}
  1932.                                     {% endfor %}
  1933.                                 </div>
  1934.                             {% endif %}
  1935.                             {# Other regions (grille 2 colonnes, scrollable) #}
  1936.                             {% if _storeOthers is not empty %}
  1937.                                 <div class=\"whr-store-others\">
  1938.                                     <div class=\"whr-store-dropdown-header\">
  1939.                                         {{ 'layout.other_regions'|trans({}, 'whr-public')|default('Other regions') }}
  1940.                                     </div>
  1941.                                     <div class=\"whr-store-grid\">
  1942.                                         {% for code, country in _storeOthers %}
  1943.                                             {% if country.ios %}
  1944.                                                 <a href=\"{{ country.ios }}\"
  1945.                                                    class=\"whr-store-country\"
  1946.                                                    data-search=\"{{ country.label|lower }} {{ code|lower }}\"
  1947.                                                    target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  1948.                                                     {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %}
  1949.                                                     <span class=\"whr-country-name\">{{ country.label }}</span>
  1950.                                                 </a>
  1951.                                             {% endif %}
  1952.                                         {% endfor %}
  1953.                                     </div>
  1954.                                     <div class=\"whr-store-empty\" style=\"display: none;\">
  1955.                                         {{ 'layout.no_country_found'|trans({}, 'whr-public')|default('No country found') }}
  1956.                                     </div>
  1957.                                 </div>
  1958.                             {% endif %}
  1959.                         </div>
  1960.                     </div>
  1961.                 {% endif %}
  1962.                 {# -- Bouton Google Play + dropdown -- #}
  1963.                 {% set _hasAndroid = false %}
  1964.                 {% for c in _storePrimary %}{% if c.android %}{% set _hasAndroid = true %}{% endif %}{% endfor %}
  1965.                 {% for c in _storeOthers %}{% if c.android %}{% set _hasAndroid = true %}{% endif %}{% endfor %}
  1966.                 {% if _hasAndroid %}
  1967.                     <div class=\"whr-store-wrap\" data-whr-store=\"android\">
  1968.                         <button type=\"button\" class=\"whr-store-link\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"Google Play - Choose your country\">
  1969.                             <svg width=\"18\" height=\"18\" viewBox=\"0 0 512 512\" aria-hidden=\"true\">
  1970.                                 <path style=\"fill:#3A9BC8;\" d=\"M225.656,256.052L14.016,485.451l-6.442,7.052c-4.005-5.919-6.704-12.972-7.313-20.806C0.087,470.305,0,468.91,0,467.518V44.499c0-9.488,2.873-18.02,7.574-24.987L225.656,256.052z\"/>
  1971.                                 <path style=\"fill:#9BCD83;\" d=\"M320.811,152.8l-95.155,103.253L7.574,19.512C19.936,1.405,45.183-6.342,66.6,6.02L320.811,152.8z\"/>
  1972.                                 <path style=\"fill:#EEB84C;\" d=\"M455.056,257.27c-0.348,14.453-7.748,28.904-22.113,37.174l-112.132,64.771l-95.155-103.163L320.811,152.8l70.518,40.745l41.614,24.026C448.178,226.366,455.579,241.861,455.056,257.27z\"/>
  1973.                                 <path style=\"fill:#B43F70;\" d=\"M7.591,492.492c12.368,18.116,37.599,25.838,58.976,13.496L320.775,359.22l-95.156-103.209L7.591,492.492z\"/>
  1974.                             </svg>
  1975.                             <span>
  1976.                                     <small>{{ 'layout.available_on'|trans({}, 'whr-public')|default('Available on') }}</small>
  1977.                                     <strong>Google Play</strong>
  1978.                                 </span>
  1979.                             <span class=\"whr-store-chevron\" aria-hidden=\"true\">▲</span>
  1980.                         </button>
  1981.                         <div class=\"whr-store-dropdown\" role=\"menu\">
  1982.                             {# Search bar (n'apparaît que si > 20 pays \"others\") #}
  1983.                             {% set _androidOthersCount = 0 %}
  1984.                             {% for c in _storeOthers %}{% if c.android %}{% set _androidOthersCount = _androidOthersCount + 1 %}{% endif %}{% endfor %}
  1985.                             {% if _androidOthersCount > 20 %}
  1986.                                 <div class=\"whr-store-search-wrap\">
  1987.                                     <input type=\"text\"
  1988.                                            class=\"whr-store-search\"
  1989.                                            placeholder=\"{{ 'layout.search_country'|trans({}, 'whr-public')|default('Search country...') }}\"
  1990.                                            aria-label=\"Search country\"
  1991.                                            autocomplete=\"off\">
  1992.                                 </div>
  1993.                             {% endif %}
  1994.                             {# Featured (pinné) #}
  1995.                             {% set _androidPrimaryCount = 0 %}
  1996.                             {% for c in _storePrimary %}{% if c.android %}{% set _androidPrimaryCount = _androidPrimaryCount + 1 %}{% endif %}{% endfor %}
  1997.                             {% if _androidPrimaryCount > 0 %}
  1998.                                 <div class=\"whr-store-featured\">
  1999.                                     <div class=\"whr-store-dropdown-header\">
  2000.                                         {{ 'layout.featured'|trans({}, 'whr-public')|default('Featured') }}
  2001.                                     </div>
  2002.                                     {% for code, country in _storePrimary %}
  2003.                                         {% if country.android %}
  2004.                                             <a href=\"{{ country.android }}\"
  2005.                                                class=\"whr-store-country\"
  2006.                                                data-search=\"{{ country.label|lower }} {{ code|lower }}\"
  2007.                                                target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  2008.                                                 {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %}
  2009.                                                 <span class=\"whr-country-name\">{{ country.label }}</span>
  2010.                                             </a>
  2011.                                         {% endif %}
  2012.                                     {% endfor %}
  2013.                                 </div>
  2014.                             {% endif %}
  2015.                             {# Other regions (grille 2 colonnes) #}
  2016.                             {% if _storeOthers is not empty %}
  2017.                                 <div class=\"whr-store-others\">
  2018.                                     <div class=\"whr-store-dropdown-header\">
  2019.                                         {{ 'layout.other_regions'|trans({}, 'whr-public')|default('Other regions') }}
  2020.                                     </div>
  2021.                                     <div class=\"whr-store-grid\">
  2022.                                         {% for code, country in _storeOthers %}
  2023.                                             {% if country.android %}
  2024.                                                 <a href=\"{{ country.android }}\"
  2025.                                                    class=\"whr-store-country\"
  2026.                                                    data-search=\"{{ country.label|lower }} {{ code|lower }}\"
  2027.                                                    target=\"_blank\" rel=\"noopener\" role=\"menuitem\">
  2028.                                                     {% if country.flag %}<span class=\"whr-flag\">{{ country.flag }}</span>{% endif %}
  2029.                                                     <span class=\"whr-country-name\">{{ country.label }}</span>
  2030.                                                 </a>
  2031.                                             {% endif %}
  2032.                                         {% endfor %}
  2033.                                     </div>
  2034.                                     <div class=\"whr-store-empty\" style=\"display: none;\">
  2035.                                         {{ 'layout.no_country_found'|trans({}, 'whr-public')|default('No country found') }}
  2036.                                     </div>
  2037.                                 </div>
  2038.                             {% endif %}
  2039.                         </div>
  2040.                     </div>
  2041.                 {% endif %}
  2042.             </div>
  2043.             <ul class=\"whr-foot-action-links\">
  2044.                 <li>
  2045.                     <a href=\"{{ path('whileresume_homepage') }}\">
  2046.                         <i class=\"feather-flag\"></i>
  2047.                         English
  2048.                     </a>
  2049.                 </li>
  2050.                 <li>
  2051.                     <a href=\"{{ path('locale_whileresume_homepage',{'_locale':'fr'}) }}\">
  2052.                         <i class=\"feather-flag\"></i>
  2053.                         Français
  2054.                     </a>
  2055.                 </li>
  2056.             </ul>
  2057.         </div>
  2058.         {# ===== Col 2 : Articles récents (featured) ===== #}
  2059.         <div class=\"whr-foot-col\">
  2060.             <h4>{{ 'layout.footer.latest_articles'|trans({}, 'whr-public')|default('Articles récents') }}</h4>
  2061.             {% if footerArticles is not empty %}
  2062.                 <ul>
  2063.                     {% for article in footerArticles %}
  2064.                         <li>
  2065.                             <a href=\"{% if _isFr %}{{ path('locale_cvs_website_article', {'_locale': _locale, 'slug': article.slug}) }}{% else %}{{ path('cvs_website_article', {'slug': article.slug}) }}{% endif %}\"
  2066.                                title=\"{{ article.title }}\">
  2067.                                 {{ article.shortTitle ?: cleanSubstr(article.title, 45) }}
  2068.                             </a>
  2069.                         </li>
  2070.                     {% endfor %}
  2071.                 </ul>
  2072.             {% else %}
  2073.                 <p class=\"whr-foot-empty\">{{ 'layout.footer.coming_soon'|trans({}, 'whr-public')|default('Bientôt disponible') }}</p>
  2074.             {% endif %}
  2075.         </div>
  2076.         {# ===== Col 3 : Emplois par ville ===== #}
  2077.         <div class=\"whr-foot-col\">
  2078.             <h4>{{ 'layout.footer.jobs_by_city'|trans({}, 'whr-public')|default('Emplois par ville') }}</h4>
  2079.             {% if footerJobsCities is not empty %}
  2080.                 <ul>
  2081.                     {% for city in footerJobsCities %}
  2082.                         <li>
  2083.                             <a class=\"whr-city-link\"
  2084.                                href=\"{% if _isFr %}{{ path('locale_cvs_application_jobs_filter', {'_locale': _locale, 'slug': city.slug}) }}{% else %}{{ path('cvs_application_jobs_filter', {'slug': city.slug}) }}{% endif %}\"
  2085.                                title=\"{{ city.shortTitle ?: city.label }}\">
  2086.                                 {% if city.icon %}
  2087.                                     <span class=\"whr-city-icon\">{{ city.icon }}</span>
  2088.                                 {% else %}
  2089.                                     <i class=\"feather-map-pin whr-city-icon\"></i>
  2090.                                 {% endif %}
  2091.                                 <span>{{ city.label }}</span>
  2092.                             </a>
  2093.                         </li>
  2094.                     {% endfor %}
  2095.                 </ul>
  2096.             {% else %}
  2097.                 <p class=\"whr-foot-empty\">{{ 'layout.footer.coming_soon'|trans({}, 'whr-public')|default('Bientôt disponible') }}</p>
  2098.             {% endif %}
  2099.         </div>
  2100.         {# ===== Col 4 : Entreprises par ville ===== #}
  2101.         <div class=\"whr-foot-col\">
  2102.             <h4>{{ 'layout.footer.companies_by_city'|trans({}, 'whr-public')|default('Entreprises par ville') }}</h4>
  2103.             {% if footerEnterprisesCities is not empty %}
  2104.                 <ul>
  2105.                     {% for city in footerEnterprisesCities %}
  2106.                         <li>
  2107.                             <a class=\"whr-city-link\"
  2108.                                href=\"{% if _isFr %}{{ path('locale_cvs_application_companies_filter', {'_locale': _locale, 'slug': city.slug}) }}{% else %}{{ path('cvs_application_companies_filter', {'slug': city.slug}) }}{% endif %}\"
  2109.                                title=\"{{ city.shortTitle ?: city.label }}\">
  2110.                                 {% if city.icon %}
  2111.                                     <span class=\"whr-city-icon\">{{ city.icon }}</span>
  2112.                                 {% else %}
  2113.                                     <i class=\"feather-map-pin whr-city-icon\"></i>
  2114.                                 {% endif %}
  2115.                                 <span>{{ city.label }}</span>
  2116.                             </a>
  2117.                         </li>
  2118.                     {% endfor %}
  2119.                 </ul>
  2120.             {% else %}
  2121.                 <p class=\"whr-foot-empty\">{{ 'layout.footer.coming_soon'|trans({}, 'whr-public')|default('Bientôt disponible') }}</p>
  2122.             {% endif %}
  2123.         </div>
  2124.         {# ===== Col 5 : Pages SEO (LandingJobs featured) ===== #}
  2125.         <div class=\"whr-foot-col\">
  2126.             <h4>{{ 'layout.footer.featured_pages'|trans({}, 'whr-public')|default('À découvrir') }}</h4>
  2127.             {% if footerLandingJobs is not empty %}
  2128.                 <ul>
  2129.                     {% for landing in footerLandingJobs %}
  2130.                         <li>
  2131.                             <a href=\"{% if _isFr %}{{ path('locale_whileresume_homepage_landing', {'_locale': _locale, 'slug': landing.slug}) }}{% else %}{{ path('whileresume_homepage_landing', {'slug': landing.slug}) }}{% endif %}\">
  2132.                                 {{ landing.title }}
  2133.                             </a>
  2134.                         </li>
  2135.                     {% endfor %}
  2136.                 </ul>
  2137.             {% endif %}
  2138.         </div>
  2139.     </div>
  2140.     {# === Bas du footer === #}
  2141.     <div class=\"whr-foot-bottom\">
  2142.         <p class=\"whr-foot-copy\">
  2143.             {% if favicon %}
  2144.                 <img src=\"{{ favicon }}\" alt=\"\" class=\"whr-favicon\" />
  2145.             {% endif %}
  2146.             <span>&copy; {{ \"now\"|date('Y') }} {{ websitename }}. {{ 'layout.rights_reserved'|trans({}, 'whr-public')|default('Tous droits réservés.') }}</span>
  2147.         </p>
  2148.         <div class=\"whr-foot-legal\">
  2149.             {% set menuFooter = getMenuWebsiteLocaleArray(_locale, \"footer\", connectUser) %}
  2150.             {% if menuFooter is not empty %}
  2151.                 {% for m in menuFooter %}
  2152.                     <a href=\"{{ m.link }}\"
  2153.                        aria-label=\"{{ m.title }}\"
  2154.                        title=\"{{ m.title }}\"
  2155.                        {% if m.targetBlank == 1 %}target=\"_blank\" rel=\"noreferrer\"{% endif %}>
  2156.                         {{ m.title }}
  2157.                     </a>
  2158.                 {% endfor %}
  2159.             {% endif %}
  2160.             {% if app.user is not null and is_granted(\"ROLE_SUPER_ADMIN\") %}
  2161.                 <a href=\"{{ path('backoffice_dashboard') }}\" class=\"whr-admin-link\" title=\"Administration\">
  2162.                     <i class=\"feather-settings\"></i> Administration
  2163.                 </a>
  2164.             {% endif %}
  2165.         </div>
  2166.         <ul class=\"whr-foot-social\">
  2167.             {% if facebook %}
  2168.                 <li><a href=\"{{ facebook }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><i class=\"feather-facebook\"></i></a></li>
  2169.             {% endif %}
  2170.             {% if twitter %}
  2171.                 <li><a href=\"{{ twitter }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"X / Twitter\"><i class=\"feather-twitter\"></i></a></li>
  2172.             {% endif %}
  2173.             {% if instagram %}
  2174.                 <li><a href=\"{{ instagram }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><i class=\"feather-instagram\"></i></a></li>
  2175.             {% endif %}
  2176.             {% if linkedin %}
  2177.                 <li><a href=\"{{ linkedin }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><i class=\"feather-linkedin\"></i></a></li>
  2178.             {% endif %}
  2179.             {% if youtube %}
  2180.                 <li><a href=\"{{ youtube }}\" target=\"_blank\" rel=\"noopener\" aria-label=\"YouTube\"><i class=\"feather-youtube\"></i></a></li>
  2181.             {% endif %}
  2182.         </ul>
  2183.     </div>
  2184. </footer>
  2185. {# ====== JS dropdown stores (vanilla, autonome, pas de dépendance) ====== #}
  2186. <script>
  2187.     (function() {
  2188.         'use strict';
  2189.         function closeAllDropdowns() {
  2190.             document.querySelectorAll('.whr-store-wrap.is-open').forEach(function(w) {
  2191.                 w.classList.remove('is-open');
  2192.                 var b = w.querySelector('.whr-store-link');
  2193.                 if (b) b.setAttribute('aria-expanded', 'false');
  2194.                 // Reset search à la fermeture
  2195.                 var input = w.querySelector('.whr-store-search');
  2196.                 if (input) {
  2197.                     input.value = '';
  2198.                     applyFilter(w, '');
  2199.                 }
  2200.             });
  2201.         }
  2202.         function applyFilter(wrap, query) {
  2203.             query = (query || '').trim().toLowerCase();
  2204.             var items = wrap.querySelectorAll('.whr-store-country');
  2205.             var othersWrap = wrap.querySelector('.whr-store-others');
  2206.             var emptyMsg = wrap.querySelector('.whr-store-empty');
  2207.             var grid = wrap.querySelector('.whr-store-grid');
  2208.             var visibleInOthers = 0;
  2209.             items.forEach(function(item) {
  2210.                 var searchData = item.dataset.search || '';
  2211.                 var matches = query === '' || searchData.indexOf(query) !== -1;
  2212.                 if (matches) {
  2213.                     item.classList.remove('is-hidden');
  2214.                     // Compter uniquement les items dans la grille \"others\" (pas le featured)
  2215.                     if (grid && grid.contains(item)) {
  2216.                         visibleInOthers++;
  2217.                     }
  2218.                 } else {
  2219.                     item.classList.add('is-hidden');
  2220.                 }
  2221.             });
  2222.             // Afficher le message \"aucun résultat\" si rien ne matche dans others
  2223.             if (emptyMsg && grid) {
  2224.                 if (query !== '' && visibleInOthers === 0) {
  2225.                     grid.style.display = 'none';
  2226.                     emptyMsg.style.display = 'block';
  2227.                 } else {
  2228.                     grid.style.display = '';
  2229.                     emptyMsg.style.display = 'none';
  2230.                 }
  2231.             }
  2232.         }
  2233.         function initWhrStoreDropdowns() {
  2234.             var wraps = document.querySelectorAll('.whr-store-wrap');
  2235.             if (!wraps.length) return;
  2236.             wraps.forEach(function(wrap) {
  2237.                 var btn = wrap.querySelector('.whr-store-link');
  2238.                 if (!btn || btn.dataset.whrInit === '1') return;
  2239.                 btn.dataset.whrInit = '1';
  2240.                 // === Toggle au clic sur le bouton ===
  2241.                 btn.addEventListener('click', function(e) {
  2242.                     e.preventDefault();
  2243.                     e.stopPropagation();
  2244.                     var isOpen = wrap.classList.contains('is-open');
  2245.                     closeAllDropdowns();
  2246.                     if (!isOpen) {
  2247.                         wrap.classList.add('is-open');
  2248.                         btn.setAttribute('aria-expanded', 'true');
  2249.                         // Auto-focus sur la search à l'ouverture (desktop seulement,
  2250.                         // pour éviter le clavier qui pop sur mobile)
  2251.                         var input = wrap.querySelector('.whr-store-search');
  2252.                         if (input && window.innerWidth >= 768) {
  2253.                             setTimeout(function() { input.focus(); }, 50);
  2254.                         }
  2255.                     }
  2256.                 });
  2257.                 // === Filtrage live sur la search ===
  2258.                 var input = wrap.querySelector('.whr-store-search');
  2259.                 if (input) {
  2260.                     input.addEventListener('input', function() {
  2261.                         applyFilter(wrap, this.value);
  2262.                     });
  2263.                     // Empêcher la fermeture du dropdown quand on clique dans le champ
  2264.                     input.addEventListener('click', function(e) {
  2265.                         e.stopPropagation();
  2266.                     });
  2267.                     // Échap dans le champ → vider la recherche d'abord, puis fermer
  2268.                     input.addEventListener('keydown', function(e) {
  2269.                         if (e.key === 'Escape') {
  2270.                             if (this.value !== '') {
  2271.                                 this.value = '';
  2272.                                 applyFilter(wrap, '');
  2273.                                 e.stopPropagation();
  2274.                             }
  2275.                         }
  2276.                     });
  2277.                 }
  2278.             });
  2279.             // === Listeners globaux (un seul fois) ===
  2280.             if (!document.body.dataset.whrStoreOutsideInit) {
  2281.                 document.body.dataset.whrStoreOutsideInit = '1';
  2282.                 // Click outside → close
  2283.                 document.addEventListener('click', function(e) {
  2284.                     if (!e.target.closest('.whr-store-wrap')) {
  2285.                         closeAllDropdowns();
  2286.                     }
  2287.                 });
  2288.                 // ESC → close
  2289.                 document.addEventListener('keydown', function(e) {
  2290.                     if (e.key === 'Escape') {
  2291.                         closeAllDropdowns();
  2292.                     }
  2293.                 });
  2294.             }
  2295.         }
  2296.         if (document.readyState === 'loading') {
  2297.             document.addEventListener('DOMContentLoaded', initWhrStoreDropdowns);
  2298.         } else {
  2299.             initWhrStoreDropdowns();
  2300.         }
  2301.     })();
  2302. </script>
  2303. ""application/whileresume/website/components/footer.html.twig""/var/www/vhosts/mirtillostudio.fr/b1.mirtillostudio.fr/version-1/templates/application/whileresume/website/components/footer.html.twig");
  2304.     }
  2305. }