var/cache/dev/twig/53/53f6a6248bee9e9c2b12d5129ecf484c.php line 49

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/candidates/homepage.html.twig */
  16. class __TwigTemplate_3021bd991837ee306d1f78dd01b7ec9e 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->blocks = [
  28.             'title' => [$this'block_title'],
  29.             'description' => [$this'block_description'],
  30.             'robots' => [$this'block_robots'],
  31.             'canonical' => [$this'block_canonical'],
  32.             'css' => [$this'block_css'],
  33.             'body' => [$this'block_body'],
  34.             'footer_js' => [$this'block_footer_js'],
  35.         ];
  36.     }
  37.     protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  38.     {
  39.         // line 1
  40.         return "application/whileresume/website/layout-social.html.twig";
  41.     }
  42.     protected function doDisplay(array $context, array $blocks = []): iterable
  43.     {
  44.         $macros $this->macros;
  45.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  46.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""application/whileresume/website/candidates/homepage.html.twig"));
  47.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  48.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""application/whileresume/website/candidates/homepage.html.twig"));
  49.         // line 3
  50.         $context["isFR"] = (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.'3$this->source); })()), "request", [], "any"falsefalsefalse3), "locale", [], "any"falsefalsefalse3) == "fr");
  51.         // line 5
  52.         $context["_keys"] = ["hero_eyebrow""hero_title_pre""hero_title_accent""hero_title_post""hero_title_accent2""hero_title_2""hero_lede_pre""hero_lede_brand""hero_lede_mid""hero_lede_word""hero_lede_post""hero_cta_signup""hero_cta_login""hero_search_placeholder""hero_popular_label""hero_btn_ios""hero_btn_android""hero_default_title""hero_search_button""hero_byline_jobs""hero_byline_apps""hero_byline_free""hero_kbd_enter""search_loading""search_no_results""search_no_results_hint""search_results_count""search_view_all""search_view_offer""search_clear""how_eyebrow""how_title""how_lede""how1_title""how1_desc""how2_title""how2_desc""how3_title""how3_desc""feat1_label""feat1_title""feat1_p1""feat1_p2""feat1_quote""feat1_author""feat1_role""feat2_label""feat2_title""feat2_p1""feat2_p2""feat2_quote""feat2_author""feat2_role""feat3_label""feat3_title""feat3_p1""feat3_p2""feat3_quote""feat3_author""feat3_role""feat4_label""feat4_title""feat4_p1""feat4_p2""feat4_quote""feat4_author""feat4_role""signup_eyebrow""signup_title""signup_lede""signup_email_ph""signup_pass_ph""signup_pass2_ph""signup_terms_pre""signup_terms_link""signup_btn""signup_login_pre""signup_login_link""signup_perk1""signup_perk2""signup_perk3""apps_eyebrow""apps_title""apps_lede""apps_ios""apps_android""apps_web""apps_ios_desc""apps_android_desc""apps_web_desc""articles_title""articles_view_all""read_article""final_eyebrow""final_title""final_recruiter_label""final_recruiter_title""final_recruiter_desc""final_candidate_label""final_candidate_title""final_candidate_desc""final_candidate""final_recruiter"];
  53.         // line 29
  54.         $context["t"] = [];
  55.         // line 30
  56.         $context['_parent'] = $context;
  57.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_keys"]) || array_key_exists("_keys"$context) ? $context["_keys"] : (function () { throw new RuntimeError('Variable "_keys" does not exist.'30$this->source); })()));
  58.         foreach ($context['_seq'] as $context["_key"] => $context["k"]) {
  59.             // line 31
  60.             $context["t"] = Twig\Extension\CoreExtension::merge((isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'31$this->source); })()), [ (string)$context["k"] => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(("homepage." $context["k"]), [], "whr-public")]);
  61.         }
  62.         $_parent $context['_parent'];
  63.         unset($context['_seq'], $context['_key'], $context['k'], $context['_parent']);
  64.         $context array_intersect_key($context$_parent) + $_parent;
  65.         // line 1
  66.         $this->parent $this->load("application/whileresume/website/layout-social.html.twig"1);
  67.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  68.         
  69.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  70.         
  71.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  72.     }
  73.     // line 35
  74.     /**
  75.      * @return iterable<null|scalar|\Stringable>
  76.      */
  77.     public function block_title(array $context, array $blocks = []): iterable
  78.     {
  79.         $macros $this->macros;
  80.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  81.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  82.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  83.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  84.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["page"]) || array_key_exists("page"$context) ? $context["page"] : (function () { throw new RuntimeError('Variable "page" does not exist.'35$this->source); })()), "shortTitle", [], "any"falsefalsefalse35), "html"nulltrue);
  85.         
  86.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  87.         
  88.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  89.         yield from [];
  90.     }
  91.     // line 36
  92.     /**
  93.      * @return iterable<null|scalar|\Stringable>
  94.      */
  95.     public function block_description(array $context, array $blocks = []): iterable
  96.     {
  97.         $macros $this->macros;
  98.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  99.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""description"));
  100.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  101.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""description"));
  102.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["page"]) || array_key_exists("page"$context) ? $context["page"] : (function () { throw new RuntimeError('Variable "page" does not exist.'36$this->source); })()), "shortDescription", [], "any"falsefalsefalse36), "html"nulltrue);
  103.         
  104.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  105.         
  106.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  107.         yield from [];
  108.     }
  109.     // line 37
  110.     /**
  111.      * @return iterable<null|scalar|\Stringable>
  112.      */
  113.     public function block_robots(array $context, array $blocks = []): iterable
  114.     {
  115.         $macros $this->macros;
  116.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  117.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""robots"));
  118.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  119.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""robots"));
  120.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["page"]) || array_key_exists("page"$context) ? $context["page"] : (function () { throw new RuntimeError('Variable "page" does not exist.'37$this->source); })()), "robots", [], "any"falsefalsefalse37), "html"nulltrue);
  121.         
  122.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  123.         
  124.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  125.         yield from [];
  126.     }
  127.     // line 38
  128.     /**
  129.      * @return iterable<null|scalar|\Stringable>
  130.      */
  131.     public function block_canonical(array $context, array $blocks = []): iterable
  132.     {
  133.         $macros $this->macros;
  134.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  135.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""canonical"));
  136.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  137.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""canonical"));
  138.         yield from $this->load("/vitrine/lexend/components/languages/canonical_classic.html.twig"38)->unwrap()->yield($context);
  139.         
  140.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  141.         
  142.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  143.         yield from [];
  144.     }
  145.     // line 40
  146.     /**
  147.      * @return iterable<null|scalar|\Stringable>
  148.      */
  149.     public function block_css(array $context, array $blocks = []): iterable
  150.     {
  151.         $macros $this->macros;
  152.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  153.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""css"));
  154.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  155.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""css"));
  156.         // line 41
  157.         yield "    ";
  158.         yield from $this->yieldParentBlock("css"$context$blocks);
  159.         yield "
  160.     <style>
  161.         :root{
  162.             --wr-bg:#FBFCFE;
  163.             --wr-bg-2:#F4F6FB;
  164.             --wr-card:#FFFFFF;
  165.             --wr-violet:#8A63C1;
  166.             --wr-violet-2:#A98AD3;
  167.             --wr-violet-soft:#F2EDFA;
  168.             --wr-violet-softer:#F8F4FD;
  169.             --wr-violet-dark:#6B47A6;
  170.             --wr-ink:#1E1B2E;
  171.             --wr-ink-2:#374151;
  172.             --wr-muted:#6B7280;
  173.             --wr-muted-2:#9CA3AF;
  174.             --wr-line:#EEF1F7;
  175.             --wr-line-2:#E5E9F0;
  176.             --wr-shadow:0 1px 2px rgba(30,27,46,.04),0 4px 16px rgba(30,27,46,.04);
  177.             --wr-shadow-hover:0 4px 8px rgba(138,99,192,.08),0 12px 32px rgba(138,99,192,.1);
  178.             /* Accents colorés pour les logos d'offres (lettres) */
  179.             --wr-acc-yellow:#FEF3C7;  --wr-acc-yellow-fg:#B45309;
  180.             --wr-acc-green:#D1FAE5;   --wr-acc-green-fg:#047857;
  181.             --wr-acc-pink:#FCE7F3;    --wr-acc-pink-fg:#BE185D;
  182.             --wr-acc-blue:#DBEAFE;    --wr-acc-blue-fg:#1E40AF;
  183.             --wr-acc-orange:#FED7AA;  --wr-acc-orange-fg:#C2410C;
  184.             --wr-acc-violet:#EDE9FE;  --wr-acc-violet-fg:#6D28D9;
  185.             --wr-acc-cyan:#CFFAFE;    --wr-acc-cyan-fg:#0E7490;
  186.         }
  187.         /* ═══════════════════════════════════════════════════════════════════
  188.            PLEINE LARGEUR — On retire la réservation d'espace de la sidebar droite
  189.            ═══════════════════════════════════════════════════════════════════ */
  190.         body .main-content.right-chat-active{padding-right:0!important}
  191.         body .main-content{padding-right:0!important}
  192.         body .right-chat{display:none!important}
  193.         body .middle-sidebar-bottom .middle-sidebar-left{padding-right:0!important;max-width:none!important;width:100%!important}
  194.         body .middle-sidebar-bottom{max-width:none!important}
  195.         .wr{margin:-15px -15px 0;background:var(--wr-bg);color:var(--wr-ink);font-family:inherit;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
  196.         @media(max-width:991px){.wr{margin:0 -15px}}
  197.         .wr *{box-sizing:border-box}
  198.         .wr a{color:inherit;text-decoration:none}
  199.         /* ═══════════════════════════════════════════════════════════════════
  200.            SECTIONS GENERIC — Fond UNIFIÉ partout (pas d'alternance)
  201.            ═══════════════════════════════════════════════════════════════════ */
  202.         .wr-section{padding:80px 32px;background:var(--wr-bg);position:relative}
  203.         .wr-section--tight{padding:48px 32px}
  204.         @media(max-width:768px){.wr-section{padding:56px 20px}.wr-section--tight{padding:36px 20px}}
  205.         /* Filet décoratif au lieu d'un changement de couleur */
  206.         .wr-section + .wr-section::before{
  207.             content:\"\";
  208.             position:absolute;top:0;left:50%;transform:translateX(-50%);
  209.             width:80px;height:1px;
  210.             background:linear-gradient(90deg,transparent,var(--wr-line-2),transparent);
  211.         }
  212.         .wr-container{max-width:1200px;margin:0 auto;position:relative}
  213.         /* ═══ Eyebrow ═══ */
  214.         .wr-eyebrow{
  215.             display:inline-flex;align-items:center;gap:8px;
  216.             padding:6px 14px;border-radius:100px;
  217.             background:var(--wr-violet-soft);
  218.             color:var(--wr-violet-dark);
  219.             font-size:11.5px;font-weight:600;
  220.             text-transform:uppercase;letter-spacing:.12em;
  221.             margin-bottom:22px;
  222.         }
  223.         .wr-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse 2.4s ease-in-out infinite}
  224.         @keyframes wrPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}
  225.         /* ═══ Titres ═══ */
  226.         .wr-title{
  227.             font-family:inherit;
  228.             font-weight:700;
  229.             font-size:28px;line-height:1.15;letter-spacing:-0.025em;
  230.             color:var(--wr-ink);
  231.             margin:0 auto 16px;
  232.             max-width:1200px;
  233.         }
  234.         @media(min-width:768px){.wr-title{font-size:34px}}
  235.         @media(min-width:1024px){.wr-title{font-size:40px}}
  236.         .wr-title--sm{font-size:24px}
  237.         @media(min-width:768px){.wr-title--sm{font-size:30px}}
  238.         .wr-title em{font-style:normal;font-weight:700;color:var(--wr-violet)}
  239.         .wr-lede{
  240.             font-size:17px;line-height:1.55;font-weight:400;
  241.             color:var(--wr-ink-2);
  242.             margin:0 auto;max-width:680px;
  243.         }
  244.         .wr-section-head{text-align:center;margin-bottom:56px}
  245.         /* ═══════════════════════════════════════════════════════════════════
  246.            HERO — Style soft, recherche dashboard, boutons pleins
  247.            ═══════════════════════════════════════════════════════════════════ */
  248.         @keyframes wrFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
  249.         @keyframes wrPulse2{0%{box-shadow:0 0 0 0 rgba(16,185,129,.4)}70%{box-shadow:0 0 0 8px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
  250.         /* ═══ Reveal au scroll (Intersection Observer ajoute .is-revealed) ═══ */
  251.         .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
  252.         .reveal.is-revealed{opacity:1;transform:translateY(0)}
  253.         .reveal--left{transform:translateX(-32px) translateY(0)}
  254.         .reveal--left.is-revealed{transform:translateX(0)}
  255.         .reveal--right{transform:translateX(32px) translateY(0)}
  256.         .reveal--right.is-revealed{transform:translateX(0)}
  257.         .reveal--scale{transform:scale(.96);opacity:0}
  258.         .reveal--scale.is-revealed{transform:scale(1);opacity:1}
  259.         .reveal[data-reveal-delay=\"1\"]{transition-delay:.08s}
  260.         .reveal[data-reveal-delay=\"2\"]{transition-delay:.16s}
  261.         .reveal[data-reveal-delay=\"3\"]{transition-delay:.24s}
  262.         .reveal[data-reveal-delay=\"4\"]{transition-delay:.32s}
  263.         @media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}}
  264.         .hero{
  265.             position:relative;
  266.             background:var(--wr-bg);
  267.             padding:24px 32px 0;
  268.             overflow:hidden;
  269.         }
  270.         @media(max-width:768px){.hero{padding:18px 18px 0}}
  271.         /* Décor : 2 blobs très flous violet pâle */
  272.         .hero::before{
  273.             content:\"\";position:absolute;
  274.             top:-260px;right:-180px;width:560px;height:560px;
  275.             background:radial-gradient(circle,rgba(138,99,192,.14) 0%,transparent 65%);
  276.             pointer-events:none;filter:blur(50px);
  277.         }
  278.         .hero::after{
  279.             content:\"\";position:absolute;
  280.             top:120px;left:-180px;width:480px;height:480px;
  281.             background:radial-gradient(circle,rgba(138,99,192,.09) 0%,transparent 65%);
  282.             pointer-events:none;filter:blur(50px);
  283.         }
  284.         .hero-inner{position:relative;z-index:2;max-width:1200px;margin:0 auto;text-align:center}
  285.         /* ═══ Eyebrow ═══ */
  286.         .hero-badge{
  287.             display:inline-flex;align-items:center;gap:8px;
  288.             padding:7px 16px;border-radius:100px;
  289.             background:var(--wr-violet-soft);
  290.             color:var(--wr-violet-dark);
  291.             font-size:12px;font-weight:600;
  292.             text-transform:uppercase;letter-spacing:.1em;
  293.             margin-bottom:10px;
  294.             opacity:0;transform:translateY(8px);
  295.             animation:wrFadeUp .8s ease forwards;
  296.         }
  297.         .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse2 2s ease infinite}
  298.         /* ═══ Titre — 57px desktop, plein largeur conteneur ═══ */
  299.         .hero-title{
  300.             font-weight:700;
  301.             font-size:24px;line-height:1.05;letter-spacing:-0.04em;
  302.             color:var(--wr-ink);
  303.             margin:0 auto 12px;
  304.             width:100%;max-width:1200px;
  305.             opacity:0;transform:translateY(12px);
  306.             animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) .15s forwards;
  307.         }
  308.         @media(min-width:768px){.hero-title{font-size:40px;letter-spacing:-0.045em}}
  309.         @media(min-width:1100px){.hero-title{font-size:57px;letter-spacing:-0.045em}}
  310.         .hero-title-accent{
  311.             color:var(--wr-violet);
  312.         }
  313.         .hero-lede{
  314.             font-size:15px;line-height:1.5;color:var(--wr-ink-2);font-weight:400;
  315.             margin:0 auto 16px;max-width:680px;
  316.             opacity:0;animation:wrFadeUp .9s ease .4s forwards;
  317.         }
  318.         @media(min-width:768px){.hero-lede{font-size:17px}}
  319.         .hero-lede-accent{color:var(--wr-violet);font-weight:600}
  320.         /* ═══ Recherche — pleine largeur (alignée sur la liste 1200px) ═══ */
  321.         .hero-search-wrap{
  322.             max-width:1200px;margin:0 auto 12px;
  323.             opacity:0;animation:wrFadeUp .9s ease .55s forwards;
  324.             position:relative;z-index:5;
  325.         }
  326.         .hero-search{
  327.             background:var(--wr-card);
  328.             border-radius:14px;
  329.             box-shadow:0 0 20px 0 rgba(0,0,0,0.05),0 16px 40px rgba(138,99,192,.06);
  330.             padding:10px;
  331.             position:relative;
  332.         }
  333.         .hero-search-inner{
  334.             display:flex;align-items:center;gap:10px;
  335.             padding:10px 14px;border-radius:10px;
  336.             background:#F9FAFB;border:1px solid #E5E7EB;
  337.             transition:border-color .2s,background .2s;
  338.         }
  339.         .hero-search-inner:focus-within{
  340.             border-color:rgba(138,99,192,.4);
  341.             background:#fff;
  342.         }
  343.         .hero-search-icon{color:var(--wr-muted-2);display:flex;flex-shrink:0}
  344.         .hero-search-icon svg{width:16px;height:16px}
  345.         .hero-search-input{
  346.             flex:1;border:0;outline:0;background:transparent;
  347.             font-size:14.5px;font-family:inherit;color:var(--wr-ink);
  348.             padding:6px 0;min-width:0;
  349.         }
  350.         .hero-search-input::placeholder{color:var(--wr-muted-2)}
  351.         .hero-search-clear{
  352.             background:none;border:0;color:var(--wr-muted-2);cursor:pointer;
  353.             padding:4px;display:none;font-family:inherit;
  354.             border-radius:6px;transition:background .15s,color .15s;
  355.         }
  356.         .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)}
  357.         .hero-search-clear.is-visible{display:flex;align-items:center}
  358.         .hero-search-clear svg{width:14px;height:14px}
  359.         .hero-search-kbd{
  360.             display:none;align-items:center;
  361.             padding:3px 8px;background:#fff;border:1px solid #E5E7EB;border-radius:6px;
  362.             font-size:10.5px;font-weight:600;color:var(--wr-muted);
  363.             font-family:inherit;letter-spacing:.02em;white-space:nowrap;flex-shrink:0;
  364.         }
  365.         .hero-search-inner:focus-within .hero-search-kbd{display:inline-flex}
  366.         /* ═══ États de la liste de jobs (header, empty, loading) ═══ */
  367.         .hero-jobs-header{
  368.             display:flex;align-items:center;justify-content:space-between;gap:10px;
  369.             padding:14px 22px 10px;
  370.             border-bottom:1px solid var(--wr-line);
  371.             margin-bottom:4px;
  372.         }
  373.         @media(max-width:540px){.hero-jobs-header{padding:12px 16px 8px}}
  374.         .hero-jobs-count{
  375.             font-size:11.5px;color:var(--wr-muted);
  376.             text-transform:uppercase;letter-spacing:.08em;font-weight:600;
  377.         }
  378.         .hero-jobs-count strong{color:var(--wr-violet);font-weight:800;font-size:13px;margin-right:4px}
  379.         .hero-jobs-link{
  380.             font-size:11px;font-weight:700;
  381.             color:var(--wr-violet);
  382.             text-transform:uppercase;letter-spacing:.08em;
  383.             text-decoration:none;
  384.             display:inline-flex;align-items:center;gap:5px;
  385.             transition:color .15s,transform .15s;
  386.         }
  387.         .hero-jobs-link:hover{color:var(--wr-violet-dark);text-decoration:none;transform:translateX(2px)}
  388.         .hero-jobs-link svg{width:11px;height:11px}
  389.         .hero-jobs-empty{text-align:center;padding:48px 20px;color:var(--wr-muted)}
  390.         .hero-jobs-empty-icon{width:48px;height:48px;border-radius:14px;background:var(--wr-violet-soft);color:var(--wr-violet);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}
  391.         .hero-jobs-empty-icon svg{width:22px;height:22px}
  392.         .hero-jobs-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px}
  393.         .hero-jobs-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)}
  394.         .hero-jobs-loading{text-align:center;padding:36px 20px;color:var(--wr-muted);font-size:13px;display:flex;align-items:center;justify-content:center;gap:10px}
  395.         .hero-jobs-spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--wr-violet-soft);border-top-color:var(--wr-violet);animation:wrSpin .7s linear infinite}
  396.         @keyframes wrSpin{to{transform:rotate(360deg)}}
  397.         /* ═══ Pills \"Populaire\" sous la recherche ═══ */
  398.         .hero-popular{
  399.             display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;
  400.             margin-bottom:18px;
  401.             opacity:0;animation:wrFadeUp .9s ease .7s forwards;
  402.         }
  403.         .hero-popular-label{
  404.             font-size:11px;font-weight:600;color:var(--wr-muted);
  405.             text-transform:uppercase;letter-spacing:.06em;
  406.             margin-right:4px;
  407.         }
  408.         .hero-popular-pill{
  409.             display:inline-flex;align-items:center;gap:5px;
  410.             padding:6px 12px;border-radius:100px;
  411.             background:var(--wr-violet-soft);
  412.             color:var(--wr-violet);
  413.             font-size:12.5px;font-weight:500;font-family:inherit;
  414.             text-decoration:none;cursor:pointer;
  415.             border:1px solid transparent;
  416.             transition:background .15s,border-color .15s,transform .15s,color .15s;
  417.         }
  418.         .hero-popular-pill:hover{
  419.             background:#EDE9FE;
  420.             border-color:rgba(138,99,192,.2);
  421.             transform:translateY(-1px);
  422.             color:var(--wr-violet);
  423.             text-decoration:none;
  424.         }
  425.         .hero-popular-pill.is-active{
  426.             background:var(--wr-violet);color:#fff;border-color:var(--wr-violet);
  427.         }
  428.         .hero-popular-pill.is-active:hover{background:var(--wr-violet-dark);color:#fff}
  429.         .hero-popular-pill-icon{font-size:13px;line-height:1}
  430.         /* ═══ CTA hero (boutons inscription + connexion pour anonymes) ═══ */
  431.         .hero-cta{
  432.             display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  433.             margin:24px 0 8px;
  434.             opacity:0;animation:wrFadeUp .9s ease 1.1s forwards;
  435.         }
  436.         .hero-cta-btn,
  437.         .hero-cta-btn:link,
  438.         .hero-cta-btn:visited,
  439.         .hero-cta-btn:hover,
  440.         .hero-cta-btn:focus,
  441.         .hero-cta-btn:active{
  442.             color:#fff !important;
  443.             text-decoration:none !important;
  444.         }
  445.         .hero-cta-btn{
  446.             display:inline-flex;align-items:center;gap:8px;
  447.             padding:11px 20px;border-radius:11px;
  448.             font-size:13.5px;font-weight:700;font-family:inherit;
  449.             line-height:1;
  450.             background:var(--wr-violet);border:1px solid var(--wr-violet);
  451.             box-shadow:0 4px 14px rgba(138,99,193,.32);
  452.             transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;
  453.         }
  454.         .hero-cta-btn:hover{
  455.             background:var(--wr-violet-dark);border-color:var(--wr-violet-dark);
  456.             transform:translateY(-2px);
  457.             box-shadow:0 6px 20px rgba(138,99,193,.4);
  458.         }
  459.         .hero-cta-btn svg{width:15px;height:15px;flex-shrink:0;stroke:#fff !important;color:#fff !important}
  460.         .hero-cta-btn span{color:#fff !important}
  461.         @media(max-width:540px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta-btn{justify-content:center}}
  462.         /* ═══ Boutons stores — VIOLET PLEIN BLANC ═══ */
  463.         .hero-stores{
  464.             display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  465.             margin-bottom:48px;
  466.             opacity:0;animation:wrFadeUp .9s ease .85s forwards;
  467.         }
  468.         .hero-store-btn{
  469.             display:inline-flex;align-items:center;gap:10px;
  470.             padding:13px 24px;border-radius:12px;
  471.             background:var(--wr-violet);
  472.             border:0;
  473.             color:#fff;
  474.             font-size:14px;font-weight:600;
  475.             text-decoration:none;
  476.             transition:background .15s,transform .15s,box-shadow .15s;
  477.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  478.         }
  479.         .hero-store-btn:hover{
  480.             background:var(--wr-violet-dark);
  481.             color:#fff;
  482.             transform:translateY(-2px);
  483.             box-shadow:0 8px 22px rgba(138,99,192,.4);
  484.             text-decoration:none;
  485.         }
  486.         .hero-store-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px}
  487.         .hero-store-btn-icon svg{width:18px;height:18px}
  488.         @media(max-width:540px){.hero-stores{flex-direction:column;align-items:stretch;gap:10px}.hero-store-btn{justify-content:center}}
  489.         /* ═══════════════════════════════════════════════════════════════════
  490.            LISTE PAR DÉFAUT SOUS LE HERO (offres récentes)
  491.            ═══════════════════════════════════════════════════════════════════ */
  492.         .hero-default-jobs{
  493.             position:relative;z-index:2;
  494.             max-width:1200px;margin:0 auto;
  495.             background:var(--wr-card);
  496.             border:1px solid var(--wr-line);
  497.             border-radius:18px;
  498.             padding:8px 0;
  499.             box-shadow:var(--wr-shadow);
  500.             opacity:0;animation:wrFadeUp .9s ease 1s forwards;
  501.             text-align:left;
  502.         }
  503.         .hero-default-job{
  504.             display:flex;align-items:center;gap:16px;
  505.             padding:14px 22px;
  506.             text-decoration:none;color:inherit;
  507.             border-bottom:1px solid var(--wr-line);
  508.             transition:background .15s;
  509.         }
  510.         .hero-default-job:last-child{border-bottom:0}
  511.         .hero-default-job:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit}
  512.         .hero-default-job-logo{
  513.             width:42px;height:42px;border-radius:11px;flex-shrink:0;
  514.             display:flex;align-items:center;justify-content:center;
  515.             font-weight:700;font-size:16px;overflow:hidden;
  516.         }
  517.         .hero-default-job-logo img{width:100%;height:100%;object-fit:cover}
  518.         /* 7 variantes de couleurs cyclées par index */
  519.         .hero-default-job:nth-child(7n+1) .hero-default-job-logo{background:var(--wr-acc-yellow);color:var(--wr-acc-yellow-fg)}
  520.         .hero-default-job:nth-child(7n+2) .hero-default-job-logo{background:var(--wr-acc-green);color:var(--wr-acc-green-fg)}
  521.         .hero-default-job:nth-child(7n+3) .hero-default-job-logo{background:var(--wr-acc-pink);color:var(--wr-acc-pink-fg)}
  522.         .hero-default-job:nth-child(7n+4) .hero-default-job-logo{background:var(--wr-acc-blue);color:var(--wr-acc-blue-fg)}
  523.         .hero-default-job:nth-child(7n+5) .hero-default-job-logo{background:var(--wr-acc-orange);color:var(--wr-acc-orange-fg)}
  524.         .hero-default-job:nth-child(7n+6) .hero-default-job-logo{background:var(--wr-acc-violet);color:var(--wr-acc-violet-fg)}
  525.         .hero-default-job:nth-child(7n+7) .hero-default-job-logo{background:var(--wr-acc-cyan);color:var(--wr-acc-cyan-fg)}
  526.         .hero-default-job-info{flex:1;min-width:0}
  527.         .hero-default-job-title{
  528.             font-weight:600;font-size:14.5px;color:var(--wr-ink);
  529.             margin:0 0 2px;line-height:1.3;
  530.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  531.         }
  532.         .hero-default-job-meta{
  533.             font-size:12.5px;color:var(--wr-muted);margin:0;
  534.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  535.             display:flex;align-items:center;gap:8px;
  536.         }
  537.         .hero-default-job-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--wr-muted-2);flex-shrink:0}
  538.         .hero-default-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  539.         .hero-default-job-arrow svg{width:15px;height:15px}
  540.         .hero-default-job:hover .hero-default-job-arrow{color:var(--wr-violet);transform:translateX(3px)}
  541.         @media(max-width:768px){
  542.             .hero-default-jobs{margin:0 -18px;border-radius:14px}
  543.             .hero-default-job{padding:12px 16px;gap:12px}
  544.             .hero-default-job-logo{width:36px;height:36px;font-size:13px}
  545.             .hero-default-job-title{font-size:13.5px}
  546.             .hero-default-job-meta{font-size:11.5px;gap:6px;flex-wrap:wrap;white-space:normal}
  547.         }
  548.         /* ═══════════════════════════════════════════════════════════════════
  549.            SECTION : 3 PARCOURS
  550.            ═══════════════════════════════════════════════════════════════════ */
  551.         .paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
  552.         @media(max-width:991px){.paths-grid{grid-template-columns:1fr;gap:14px}}
  553.         .path-card{
  554.             position:relative;
  555.             background:var(--wr-card);
  556.             border:1px solid var(--wr-line);
  557.             border-radius:20px;padding:28px;
  558.             display:flex;flex-direction:column;
  559.             transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
  560.             box-shadow:var(--wr-shadow);
  561.         }
  562.         .path-card:hover{transform:translateY(-4px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2)}
  563.         .path-card-illu{
  564.             width:64px;height:64px;border-radius:16px;
  565.             background:var(--wr-violet-soft);color:var(--wr-violet);
  566.             display:flex;align-items:center;justify-content:center;
  567.             margin-bottom:22px;
  568.         }
  569.         .path-card-illu svg{width:30px;height:30px}
  570.         .path-card-label{
  571.             display:inline-block;
  572.             font-size:11px;font-weight:600;
  573.             color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.1em;
  574.             margin-bottom:10px;align-self:flex-start;
  575.         }
  576.         .path-card-title{
  577.             font-weight:500;font-size:22px;line-height:1.25;letter-spacing:-0.015em;
  578.             color:var(--wr-ink);margin:0 0 10px;
  579.         }
  580.         .path-card-desc{
  581.             font-size:14px;line-height:1.6;color:var(--wr-muted);
  582.             margin:0 0 22px;flex:1;
  583.         }
  584.         .path-card-cta{
  585.             display:inline-flex;align-items:center;justify-content:center;gap:6px;
  586.             background:var(--wr-violet);color:#fff;
  587.             padding:12px 18px;border-radius:11px;
  588.             font-size:13px;font-weight:600;
  589.             align-self:stretch;
  590.             transition:background .15s,transform .15s,box-shadow .15s;
  591.             box-shadow:0 2px 8px rgba(138,99,192,.2);
  592.         }
  593.         .path-card-cta:hover{background:var(--wr-violet-dark);color:#fff;text-decoration:none;transform:translateY(-1px);box-shadow:0 4px 12px rgba(138,99,192,.3)}
  594.         .path-card-cta svg{width:13px;height:13px;transition:transform .15s}
  595.         .path-card-cta:hover svg{transform:translateX(3px)}
  596.         /* ═══════════════════════════════════════════════════════════════════
  597.            COMMENT ÇA MARCHE — Card crème englobante avec 3 sous-cards
  598.            ═══════════════════════════════════════════════════════════════════ */
  599.         .how-card{
  600.             background:#F4ECE1;
  601.             border-radius:24px;
  602.             padding:32px 24px;
  603.             display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
  604.             position:relative;
  605.         }
  606.         @media(max-width:991px){.how-card{grid-template-columns:1fr;gap:8px;padding:24px 16px}}
  607.         @media(min-width:992px){
  608.             /* Séparateurs verticaux entre les 3 cellules */
  609.             .how-card .how-step + .how-step{border-left:1px solid rgba(28,25,22,.08)}
  610.         }
  611.         .how-step{
  612.             display:flex;flex-direction:column;align-items:center;text-align:center;
  613.             padding:16px 20px;
  614.             gap:16px;
  615.         }
  616.         .how-step-illu{
  617.             width:100%;max-width:280px;aspect-ratio:1/1;
  618.             border-radius:16px;
  619.             background:rgba(255,255,255,.5);
  620.             display:flex;align-items:center;justify-content:center;
  621.             margin-bottom:4px;
  622.             overflow:hidden;
  623.         }
  624.         .how-step-illu img{width:100%;height:100%;object-fit:contain;display:block}
  625.         .how-step-illu svg{width:55%;height:55%;opacity:.85}
  626.         .how-step-title{
  627.             font-weight:700;font-size:18px;line-height:1.3;letter-spacing:-0.01em;
  628.             color:var(--wr-ink);margin:0;
  629.         }
  630.         @media(min-width:992px){.how-step-title{font-size:20px}}
  631.         .how-step-desc{
  632.             font-size:14px;line-height:1.55;color:var(--wr-ink-2);
  633.             margin:0;max-width:320px;
  634.         }
  635.         /* ═══════════════════════════════════════════════════════════════════
  636.            FEATURES 01-04 — Splits alternés image/texte avec témoignages
  637.            ═══════════════════════════════════════════════════════════════════ */
  638.         .feat-block{
  639.             display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;
  640.             margin-bottom:64px;
  641.         }
  642.         .feat-block:last-child{margin-bottom:0}
  643.         @media(max-width:991px){
  644.             .feat-block{grid-template-columns:1fr;gap:24px;margin-bottom:48px}
  645.         }
  646.         /* Alterner : 01 illu droite, 02 illu gauche, 03 illu droite, 04 illu gauche */
  647.         .feat-block:nth-child(odd) .feat-illu{order:2}
  648.         .feat-block:nth-child(odd) .feat-content{order:1}
  649.         .feat-block:nth-child(even) .feat-illu{order:1}
  650.         .feat-block:nth-child(even) .feat-content{order:2}
  651.         @media(max-width:991px){
  652.             .feat-block .feat-illu{order:1}
  653.             .feat-block .feat-content{order:2}
  654.         }
  655.         .feat-illu{
  656.             background:#F5EDE3;
  657.             border-radius:20px;
  658.             aspect-ratio:1/1;
  659.             display:flex;align-items:center;justify-content:center;
  660.             color:var(--wr-violet);
  661.             overflow:hidden;
  662.             position:relative;
  663.         }
  664.         .feat-illu img{width:100%;height:100%;object-fit:contain;display:block}
  665.         .feat-illu svg{width:50%;height:50%;opacity:.85}
  666.         .feat-content{display:flex;flex-direction:column;gap:18px}
  667.         .feat-label{
  668.             font-size:30px;font-weight:800;
  669.             color:var(--wr-ink);
  670.             letter-spacing:-0.02em;
  671.             margin:0;line-height:1;
  672.         }
  673.         .feat-title{
  674.             font-weight:700;font-size:24px;line-height:1.2;letter-spacing:-0.02em;
  675.             color:var(--wr-ink);margin:0;
  676.         }
  677.         @media(min-width:768px){.feat-title{font-size:28px}}
  678.         @media(min-width:1100px){.feat-title{font-size:30px}}
  679.         .feat-desc{
  680.             display:flex;flex-direction:column;gap:14px;
  681.         }
  682.         .feat-desc p{
  683.             font-size:15px;line-height:1.6;color:var(--wr-ink-2);
  684.             margin:0;opacity:.85;
  685.         }
  686.         @media(min-width:1100px){.feat-desc p{font-size:16px}}
  687.         .feat-desc strong{color:var(--wr-ink);font-weight:700;opacity:1}
  688.         .feat-quote{
  689.             background:var(--wr-card);
  690.             border:1px solid var(--wr-line);
  691.             border-radius:14px;
  692.             padding:18px 20px;
  693.             display:flex;flex-direction:column;gap:10px;
  694.             margin-top:8px;
  695.         }
  696.         .feat-quote-text{
  697.             font-size:14px;line-height:1.55;color:var(--wr-ink-2);
  698.             margin:0;font-style:italic;
  699.         }
  700.         .feat-quote-author{
  701.             display:flex;flex-direction:column;
  702.         }
  703.         .feat-quote-name{font-size:13px;font-weight:700;color:var(--wr-ink);margin:0}
  704.         .feat-quote-role{font-size:12px;color:var(--wr-muted);margin:0}
  705.         /* ═══════════════════════════════════════════════════════════════════
  706.            MATCH
  707.            ═══════════════════════════════════════════════════════════════════ */
  708.         .match-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center}
  709.         @media(max-width:991px){.match-grid{grid-template-columns:1fr;gap:40px}}
  710.         .match-text .wr-title{margin-left:0;text-align:left}
  711.         .match-text .wr-lede{margin-left:0;text-align:left}
  712.         .match-text .wr-eyebrow{margin-bottom:20px}
  713.         .match-features{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:32px}
  714.         @media(max-width:540px){.match-features{grid-template-columns:1fr}}
  715.         .match-feature{
  716.             background:var(--wr-card);border:1px solid var(--wr-line);
  717.             border-radius:14px;padding:18px;
  718.             transition:transform .15s,border-color .15s,box-shadow .15s;
  719.         }
  720.         .match-feature:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)}
  721.         .match-feature-icon{
  722.             width:34px;height:34px;border-radius:10px;
  723.             background:var(--wr-violet-soft);color:var(--wr-violet);
  724.             display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px;
  725.         }
  726.         .match-feature-icon svg{width:16px;height:16px}
  727.         .match-feature-title{font-weight:600;font-size:14px;line-height:1.3;color:var(--wr-ink);margin:0 0 5px}
  728.         .match-feature-desc{font-size:12.5px;line-height:1.5;color:var(--wr-muted);margin:0}
  729.         .match-visual{position:relative;display:flex;justify-content:center;align-items:center;padding:40px 0}
  730.         .match-stack{position:relative;width:100%;max-width:340px;height:340px}
  731.         .match-stack-card{
  732.             position:absolute;
  733.             background:var(--wr-card);border:1px solid var(--wr-line);
  734.             border-radius:16px;padding:14px;
  735.             display:flex;align-items:center;gap:12px;
  736.             box-shadow:var(--wr-shadow);width:100%;
  737.             transition:transform .3s ease,box-shadow .3s ease;
  738.             cursor:pointer;
  739.         }
  740.         .match-stack-card:hover{
  741.             transform:translateY(-4px) rotate(0deg)!important;
  742.             box-shadow:0 20px 50px rgba(138,99,192,.22)!important;
  743.             z-index:10!important;
  744.         }
  745.         .match-stack-card:nth-child(1){top:0;transform:rotate(-6deg) translateX(-10px);z-index:1;animation:wrFloat1 6s ease-in-out infinite}
  746.         .match-stack-card:nth-child(2){top:78px;left:14px;transform:rotate(2deg);z-index:3;box-shadow:0 16px 40px rgba(138,99,192,.18);animation:wrFloat2 6s ease-in-out -2s infinite}
  747.         .match-stack-card:nth-child(3){top:156px;transform:rotate(-3deg) translateX(8px);z-index:2;animation:wrFloat3 6s ease-in-out -4s infinite}
  748.         .match-stack-card:nth-child(4){top:234px;left:20px;transform:rotate(4deg);z-index:1;animation:wrFloat4 6s ease-in-out -1s infinite}
  749.         @keyframes wrFloat1{0%,100%{transform:rotate(-6deg) translate(-10px,0)}50%{transform:rotate(-6deg) translate(-10px,-8px)}}
  750.         @keyframes wrFloat2{0%,100%{transform:rotate(2deg) translate(0,0)}50%{transform:rotate(2deg) translate(0,-6px)}}
  751.         @keyframes wrFloat3{0%,100%{transform:rotate(-3deg) translate(8px,0)}50%{transform:rotate(-3deg) translate(8px,-7px)}}
  752.         @keyframes wrFloat4{0%,100%{transform:rotate(4deg) translate(0,0)}50%{transform:rotate(4deg) translate(0,-5px)}}
  753.         .match-stack-logo{
  754.             width:38px;height:38px;border-radius:10px;
  755.             background:var(--wr-violet-soft);color:var(--wr-violet);
  756.             display:flex;align-items:center;justify-content:center;
  757.             font-weight:700;font-size:14px;flex-shrink:0;
  758.         }
  759.         .match-stack-info{flex:1;min-width:0}
  760.         .match-stack-title{font-weight:600;font-size:13px;color:var(--wr-ink);margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
  761.         .match-stack-meta{font-size:11px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  762.         .match-stack-heart{
  763.             width:28px;height:28px;border-radius:50%;
  764.             background:#FEE2E2;color:#EF4444;
  765.             display:flex;align-items:center;justify-content:center;flex-shrink:0;
  766.             animation:wrHeartbeat 1.6s ease-in-out infinite;
  767.         }
  768.         .match-stack-card:nth-child(1) .match-stack-heart{animation-delay:0s}
  769.         .match-stack-card:nth-child(2) .match-stack-heart{animation-delay:.4s}
  770.         .match-stack-card:nth-child(3) .match-stack-heart{animation-delay:.8s}
  771.         .match-stack-card:nth-child(4) .match-stack-heart{animation-delay:1.2s}
  772.         .match-stack-heart svg{width:13px;height:13px;fill:currentColor}
  773.         @keyframes wrHeartbeat{
  774.             0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,.4)}
  775.             10%{transform:scale(1.18);box-shadow:0 0 0 0 rgba(239,68,68,.4)}
  776.             20%{transform:scale(1)}
  777.             30%{transform:scale(1.12)}
  778.             40%{transform:scale(1);box-shadow:0 0 0 10px rgba(239,68,68,0)}
  779.             100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}
  780.         }
  781.         /* ═══════════════════════════════════════════════════════════════════
  782.            SIGNUP FORM (entre feat 02 et 03)
  783.            ═══════════════════════════════════════════════════════════════════ */
  784.         .signup-card{
  785.             position:relative;
  786.             max-width:980px;margin:64px auto;
  787.             background:linear-gradient(135deg, #FFFFFF 0%, #FAF7FF 100%);
  788.             border:1px solid var(--wr-line);
  789.             border-radius:32px;
  790.             padding:48px 40px;
  791.             box-shadow:0 4px 12px rgba(30,27,46,.04), 0 24px 64px rgba(138,99,192,.1);
  792.             overflow:hidden;
  793.         }
  794.         @media(max-width:768px){.signup-card{padding:32px 22px;border-radius:24px;margin:48px auto}}
  795.         /* Décor : 2 blobs violet pâle dans les coins */
  796.         .signup-card::before{
  797.             content:\"\";position:absolute;
  798.             top:-120px;right:-120px;width:340px;height:340px;
  799.             background:radial-gradient(circle,rgba(138,99,192,.12) 0%,transparent 65%);
  800.             pointer-events:none;filter:blur(40px);
  801.         }
  802.         .signup-card::after{
  803.             content:\"\";position:absolute;
  804.             bottom:-100px;left:-80px;width:280px;height:280px;
  805.             background:radial-gradient(circle,rgba(138,99,192,.08) 0%,transparent 65%);
  806.             pointer-events:none;filter:blur(40px);
  807.         }
  808.         .signup-inner{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1.2fr;gap:48px;align-items:center}
  809.         @media(max-width:880px){.signup-inner{grid-template-columns:1fr;gap:28px}}
  810.         .signup-text{display:flex;flex-direction:column;gap:14px}
  811.         .signup-eyebrow{
  812.             display:inline-flex;align-items:center;gap:8px;
  813.             padding:7px 14px;border-radius:100px;
  814.             background:var(--wr-violet-soft);color:var(--wr-violet-dark);
  815.             font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  816.             align-self:flex-start;
  817.         }
  818.         .signup-title{
  819.             font-weight:700;font-size:28px;line-height:1.15;letter-spacing:-0.02em;
  820.             color:var(--wr-ink);margin:0;
  821.         }
  822.         @media(min-width:768px){.signup-title{font-size:34px}}
  823.         .signup-lede{font-size:15px;line-height:1.55;color:var(--wr-ink-2);margin:0;opacity:.85}
  824.         .signup-perks{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  825.         .signup-perk{
  826.             display:inline-flex;align-items:center;gap:6px;
  827.             padding:6px 12px;border-radius:100px;
  828.             background:var(--wr-card);border:1px solid var(--wr-line-2);
  829.             font-size:12px;font-weight:600;color:var(--wr-ink-2);
  830.         }
  831.         .signup-perk svg{width:13px;height:13px;color:#10B981;stroke-width:3;flex-shrink:0}
  832.         .signup-form{
  833.             background:var(--wr-card);
  834.             border:1px solid var(--wr-line);
  835.             border-radius:20px;
  836.             padding:24px;
  837.             display:flex;flex-direction:column;gap:12px;
  838.             box-shadow:0 1px 2px rgba(30,27,46,.03);
  839.         }
  840.         .signup-form-error{
  841.             background:#FEF2F2;border:1px solid #FECACA;
  842.             color:#991B1B;
  843.             border-radius:12px;
  844.             padding:10px 14px;
  845.             font-size:13px;line-height:1.45;
  846.             margin:0;
  847.         }
  848.         .signup-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  849.         @media(max-width:540px){.signup-row{grid-template-columns:1fr}}
  850.         .signup-field{display:flex;flex-direction:column;gap:0}
  851.         .signup-card .signup-form input[type=\"email\"],
  852.         .signup-card .signup-form input[type=\"password\"],
  853.         .signup-card .signup-form input[type=\"text\"]{
  854.             width:100%;
  855.             padding:13px 14px;
  856.             border:1px solid var(--wr-line-2);border-radius:11px;
  857.             background:#FAFBFD;
  858.             font-size:14px;font-family:inherit;color:var(--wr-ink);
  859.             outline:none;
  860.             transition:border-color .15s,background .15s,box-shadow .15s;
  861.             box-sizing:border-box;
  862.         }
  863.         .signup-card .signup-form input[type=\"email\"]:focus,
  864.         .signup-card .signup-form input[type=\"password\"]:focus,
  865.         .signup-card .signup-form input[type=\"text\"]:focus{
  866.             border-color:var(--wr-violet);background:#fff;
  867.             box-shadow:0 0 0 3px rgba(138,99,192,.12);
  868.         }
  869.         .signup-card .signup-form input::placeholder{color:var(--wr-muted-2)}
  870.         .signup-terms{
  871.             display:flex;align-items:flex-start;gap:10px;
  872.             font-size:12.5px;line-height:1.45;color:var(--wr-muted);
  873.             margin:4px 0 0;
  874.         }
  875.         .signup-card .signup-form input[type=\"checkbox\"]{
  876.             width:16px;height:16px;flex-shrink:0;margin-top:2px;accent-color:var(--wr-violet);cursor:pointer;
  877.         }
  878.         .signup-terms a{color:var(--wr-violet);font-weight:600;text-decoration:underline}
  879.         .signup-terms a:hover{color:var(--wr-violet-dark)}
  880.         .signup-recaptcha{margin:4px 0 0}
  881.         .signup-recaptcha > div{max-width:100%}
  882.         .signup-submit{
  883.             width:100%;
  884.             padding:14px 22px;border-radius:12px;
  885.             background:var(--wr-violet);color:#fff;border:0;
  886.             font-size:14.5px;font-weight:700;font-family:inherit;
  887.             cursor:pointer;
  888.             display:inline-flex;align-items:center;justify-content:center;gap:8px;
  889.             box-shadow:0 4px 14px rgba(138,99,192,.32);
  890.             transition:background .15s,transform .15s,box-shadow .15s;
  891.             margin-top:6px;
  892.         }
  893.         .signup-submit:hover{background:var(--wr-violet-dark);transform:translateY(-1px);box-shadow:0 6px 20px rgba(138,99,192,.4)}
  894.         .signup-submit svg{width:14px;height:14px;transition:transform .15s}
  895.         .signup-submit:hover svg{transform:translateX(3px)}
  896.         .signup-login{
  897.             text-align:center;font-size:13px;color:var(--wr-muted);margin:6px 0 0;
  898.         }
  899.         .signup-login a{color:var(--wr-violet);font-weight:600;text-decoration:none}
  900.         .signup-login a:hover{color:var(--wr-violet-dark);text-decoration:underline}
  901.         /* ═══════════════════════════════════════════════════════════════════
  902.            APPS
  903.            ═══════════════════════════════════════════════════════════════════ */
  904.         .apps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
  905.         @media(max-width:768px){.apps-grid{grid-template-columns:1fr}}
  906.         .app-card{
  907.             background:var(--wr-card);border:1px solid var(--wr-line);
  908.             border-radius:18px;padding:24px;
  909.             display:flex;flex-direction:column;align-items:flex-start;
  910.             transition:transform .2s,border-color .2s,box-shadow .2s;
  911.         }
  912.         .app-card:hover{transform:translateY(-3px);border-color:var(--wr-violet-2);box-shadow:var(--wr-shadow-hover);color:inherit;text-decoration:none}
  913.         .app-card-icon{
  914.             width:48px;height:48px;border-radius:14px;
  915.             background:var(--wr-violet-soft);color:var(--wr-violet);
  916.             display:inline-flex;align-items:center;justify-content:center;
  917.             margin-bottom:18px;
  918.         }
  919.         .app-card-icon svg{width:22px;height:22px}
  920.         .app-card-name{font-weight:500;font-size:18px;letter-spacing:-0.01em;color:var(--wr-ink);margin:0 0 6px}
  921.         .app-card-desc{font-size:13px;line-height:1.5;color:var(--wr-muted);margin:0 0 16px;flex:1}
  922.         .app-card-cta{font-size:12px;font-weight:600;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.1em;display:inline-flex;align-items:center;gap:6px}
  923.         .app-card-cta svg{width:11px;height:11px;transition:transform .15s}
  924.         .app-card:hover .app-card-cta svg{transform:translateX(3px)}
  925.         /* ═══════════════════════════════════════════════════════════════════
  926.            KEYWORDS
  927.            ═══════════════════════════════════════════════════════════════════ */
  928.         .keywords-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:1200px;margin:0 auto}
  929.         .keyword-pill{
  930.             display:inline-flex;align-items:center;gap:8px;
  931.             padding:9px 16px;border-radius:100px;
  932.             background:var(--wr-card);border:1px solid var(--wr-line-2);
  933.             color:var(--wr-ink-2);
  934.             font-size:13.5px;font-weight:500;
  935.             transition:transform .15s,border-color .15s,background .15s,color .15s,box-shadow .15s;
  936.         }
  937.         .keyword-pill:hover{transform:translateY(-2px);border-color:var(--wr-violet);background:var(--wr-violet-soft);color:var(--wr-violet-dark);text-decoration:none;box-shadow:0 4px 10px rgba(138,99,192,.12)}
  938.         .keyword-pill-icon{font-size:14px;line-height:1}
  939.         /* ═══════════════════════════════════════════════════════════════════
  940.            OFFRES POPULAIRES
  941.            ═══════════════════════════════════════════════════════════════════ */
  942.         .listings-block{margin-bottom:32px}
  943.         .listings-block:last-child{margin-bottom:0}
  944.         .listings-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
  945.         .listings-block-title{
  946.             display:inline-flex;align-items:center;gap:10px;
  947.             font-weight:500;font-size:18px;letter-spacing:-0.005em;
  948.             color:var(--wr-ink);margin:0;
  949.         }
  950.         .listings-block-icon{font-size:20px;line-height:1}
  951.         .listings-block-link{
  952.             display:inline-flex;align-items:center;gap:4px;
  953.             padding:6px 12px;border-radius:100px;
  954.             font-size:12px;font-weight:600;
  955.             color:var(--wr-violet);
  956.             text-transform:uppercase;letter-spacing:.06em;
  957.             border:1px solid var(--wr-violet-soft);
  958.             background:var(--wr-card);
  959.             transition:background .15s,border-color .15s,transform .15s;
  960.         }
  961.         .listings-block-link:hover{background:var(--wr-violet-soft);border-color:var(--wr-violet);text-decoration:none;color:var(--wr-violet-dark);transform:translateX(2px)}
  962.         .listings-block-link svg{width:11px;height:11px}
  963.         .listings-jobs{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  964.         @media(max-width:768px){.listings-jobs{grid-template-columns:1fr}}
  965.         .listing-job{
  966.             display:flex;align-items:center;gap:14px;
  967.             background:var(--wr-card);border:1px solid var(--wr-line);
  968.             border-radius:14px;padding:12px;
  969.             transition:transform .15s,border-color .15s,box-shadow .15s;
  970.         }
  971.         .listing-job:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow);color:inherit;text-decoration:none}
  972.         .listing-job-logo{
  973.             width:42px;height:42px;border-radius:11px;flex-shrink:0;
  974.             background:var(--wr-violet-soft);color:var(--wr-violet);
  975.             display:flex;align-items:center;justify-content:center;
  976.             font-weight:700;font-size:14px;overflow:hidden;
  977.         }
  978.         .listing-job-logo img{width:100%;height:100%;object-fit:cover}
  979.         .listing-job-info{flex:1;min-width:0}
  980.         .listing-job-title{font-weight:600;font-size:13.5px;color:var(--wr-ink);margin:0 0 2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  981.         .listing-job-meta{font-size:11.5px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  982.         .listing-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  983.         .listing-job-arrow svg{width:14px;height:14px}
  984.         .listing-job:hover .listing-job-arrow{color:var(--wr-violet);transform:translateX(2px)}
  985.         /* ═══════════════════════════════════════════════════════════════════
  986.            ARTICLES — Liste sans miniatures (style identique aux jobs-card)
  987.            ═══════════════════════════════════════════════════════════════════ */
  988.         .articles-list{display:flex;flex-direction:column;gap:10px;max-width:1200px;margin:0 auto}
  989.         .wr-article{
  990.             background:var(--wr-card);border-radius:14px;padding:14px;
  991.             box-shadow:0 0 16px 0 rgba(0,0,0,0.04);
  992.             display:flex;align-items:center;gap:14px;
  993.             text-decoration:none;color:inherit;
  994.             transition:transform .15s,box-shadow .2s;
  995.         }
  996.         .wr-article:hover{
  997.             transform:translateY(-1px);
  998.             box-shadow:0 4px 20px rgba(138,99,192,.1);
  999.             color:inherit;text-decoration:none;
  1000.         }
  1001.         .wr-article-logo{
  1002.             width:50px;height:50px;border-radius:12px;flex-shrink:0;
  1003.             background:linear-gradient(135deg,#EDE9FE,#DDD6FE);
  1004.             display:flex;align-items:center;justify-content:center;
  1005.             color:var(--wr-violet);overflow:hidden;
  1006.         }
  1007.         .wr-article-logo svg{width:24px;height:24px;opacity:.9}
  1008.         .wr-article-info{flex:1;min-width:0}
  1009.         .wr-article-title{
  1010.             font-size:14px;font-weight:700;color:var(--wr-ink);
  1011.             line-height:1.3;margin:0 0 4px;
  1012.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1013.         }
  1014.         .wr-article-meta{
  1015.             font-size:12px;color:var(--wr-muted);
  1016.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  1017.             display:flex;align-items:center;gap:8px;margin:0;
  1018.         }
  1019.         .wr-article-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:#D1D5DB;flex-shrink:0}
  1020.         .wr-article-badge{
  1021.             font-size:11px;font-weight:600;
  1022.             color:var(--wr-violet);background:var(--wr-violet-soft);
  1023.             padding:3px 9px;border-radius:100px;
  1024.             white-space:nowrap;flex-shrink:0;
  1025.             text-transform:uppercase;letter-spacing:.04em;
  1026.         }
  1027.         .wr-article-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  1028.         .wr-article:hover .wr-article-arrow{color:var(--wr-violet);transform:translateX(2px)}
  1029.         .wr-article-arrow svg{width:18px;height:18px}
  1030.         @media(max-width:540px){
  1031.             .wr-article{padding:12px;gap:10px}
  1032.             .wr-article-logo{width:42px;height:42px}
  1033.             .wr-article-logo svg{width:20px;height:20px}
  1034.             .wr-article-title{font-size:13px}
  1035.             .wr-article-meta{font-size:11px;gap:6px;flex-wrap:wrap;white-space:normal}
  1036.             .wr-article-badge{display:none}
  1037.         }
  1038.         .articles-cta{text-align:center;margin-top:36px}
  1039.         .articles-cta a{
  1040.             display:inline-flex;align-items:center;gap:8px;
  1041.             padding:12px 22px;border-radius:11px;
  1042.             background:var(--wr-violet);color:#fff;
  1043.             font-size:13px;font-weight:600;
  1044.             text-decoration:none;
  1045.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  1046.             transition:background .15s,transform .15s,box-shadow .15s;
  1047.         }
  1048.         .articles-cta a:hover{background:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,192,.4);text-decoration:none;color:#fff}
  1049.         .articles-cta svg{width:12px;height:12px;transition:transform .15s}
  1050.         .articles-cta a:hover svg{transform:translateX(3px)}
  1051.         /* ═══════════════════════════════════════════════════════════════════
  1052.            CTA FINAL — Card violet plein avec eyebrow + 2 sous-cards
  1053.            ═══════════════════════════════════════════════════════════════════ */
  1054.         .final-card{
  1055.             position:relative;
  1056.             background:linear-gradient(135deg,#8A63C0 0%,#9D7BCC 100%);
  1057.             border-radius:28px;
  1058.             padding:48px 40px;
  1059.             color:#fff;overflow:hidden;
  1060.             box-shadow:0 20px 60px -12px rgba(138,99,192,.4);
  1061.         }
  1062.         @media(max-width:768px){.final-card{padding:32px 22px;border-radius:22px}}
  1063.         .final-eyebrow{
  1064.             display:inline-flex;align-items:center;gap:8px;
  1065.             padding:8px 18px;border-radius:100px;
  1066.             background:rgba(255,255,255,.2);
  1067.             color:#fff;
  1068.             font-size:12px;font-weight:700;
  1069.             text-transform:uppercase;letter-spacing:.12em;
  1070.             margin-bottom:20px;
  1071.             backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  1072.         }
  1073.         .final-eyebrow svg{width:13px;height:13px;fill:currentColor}
  1074.         .final-title{
  1075.             font-weight:800;font-size:28px;line-height:1.15;letter-spacing:-0.02em;
  1076.             color:#fff;margin:0 0 36px;
  1077.             max-width:780px;
  1078.         }
  1079.         @media(min-width:768px){.final-title{font-size:38px}}
  1080.         /* Grille 2 sous-cards */
  1081.         .final-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
  1082.         @media(max-width:768px){.final-grid{grid-template-columns:1fr;gap:14px}}
  1083.         .final-sub{
  1084.             background:#fff;
  1085.             border-radius:18px;
  1086.             padding:28px;
  1087.             display:flex;flex-direction:column;
  1088.         }
  1089.         @media(max-width:768px){.final-sub{padding:22px}}
  1090.         .final-sub-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
  1091.         .final-sub-icon{
  1092.             width:44px;height:44px;border-radius:11px;
  1093.             background:var(--wr-violet-soft);color:var(--wr-violet);
  1094.             display:flex;align-items:center;justify-content:center;flex-shrink:0;
  1095.         }
  1096.         .final-sub-icon svg{width:22px;height:22px}
  1097.         .final-sub-label{
  1098.             font-size:12.5px;font-weight:700;
  1099.             color:var(--wr-violet);
  1100.             text-transform:uppercase;letter-spacing:.1em;
  1101.         }
  1102.         .final-sub-title{
  1103.             font-weight:800;font-size:18px;line-height:1.3;letter-spacing:-0.01em;
  1104.             color:var(--wr-ink);margin:0 0 10px;
  1105.         }
  1106.         .final-sub-desc{
  1107.             font-size:14px;line-height:1.55;color:var(--wr-muted);
  1108.             margin:0 0 24px;flex:1;
  1109.         }
  1110.         .final-sub-btn{
  1111.             display:flex;align-items:center;justify-content:center;gap:8px;
  1112.             background:var(--wr-violet);color:#fff;
  1113.             padding:14px 18px;border-radius:11px;
  1114.             font-size:14px;font-weight:700;
  1115.             text-decoration:none;
  1116.             transition:background .15s,transform .15s,box-shadow .15s;
  1117.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  1118.         }
  1119.         .final-sub-btn:hover{
  1120.             background:var(--wr-violet-dark);color:#fff;
  1121.             transform:translateY(-2px);
  1122.             box-shadow:0 6px 18px rgba(138,99,192,.4);
  1123.             text-decoration:none;
  1124.         }
  1125.         .final-sub-btn svg{width:14px;height:14px;transition:transform .15s}
  1126.         .final-sub-btn:hover svg{transform:translateX(3px)}
  1127.     </style>
  1128. ";
  1129.         
  1130.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1131.         
  1132.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1133.         yield from [];
  1134.     }
  1135.     // line 1073
  1136.     /**
  1137.      * @return iterable<null|scalar|\Stringable>
  1138.      */
  1139.     public function block_body(array $context, array $blocks = []): iterable
  1140.     {
  1141.         $macros $this->macros;
  1142.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  1143.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  1144.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  1145.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  1146.         // line 1074
  1147.         yield "    <div class=\"wr\">
  1148.         ";
  1149.         // line 1077
  1150.         yield "        <section class=\"hero\">
  1151.             <div class=\"hero-inner\">
  1152.             <span class=\"hero-badge\">
  1153.                 <span class=\"hero-badge-dot\"></span>
  1154.                 ";
  1155.         // line 1081
  1156.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1081$this->source); })()), "hero_eyebrow", [], "any"falsefalsefalse1081), "html"nulltrue);
  1157.         yield "
  1158.             </span>
  1159.                 <h1 class=\"hero-title\">
  1160.                     <span class=\"hero-title-accent\">";
  1161.         // line 1085
  1162.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1085$this->source); })()), "hero_title_accent", [], "any"falsefalsefalse1085), "html"nulltrue);
  1163.         yield "</span> ";
  1164.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1085$this->source); })()), "hero_title_post", [], "any"falsefalsefalse1085), "html"nulltrue);
  1165.         yield "<br>
  1166.                     <span class=\"hero-title-accent\">";
  1167.         // line 1086
  1168.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1086$this->source); })()), "hero_title_accent2", [], "any"falsefalsefalse1086), "html"nulltrue);
  1169.         yield "</span> ";
  1170.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1086$this->source); })()), "hero_title_2", [], "any"falsefalsefalse1086), "html"nulltrue);
  1171.         yield "
  1172.                 </h1>
  1173.                 <p class=\"hero-lede\">
  1174.                     ";
  1175.         // line 1090
  1176.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1090$this->source); })()), "hero_lede_pre", [], "any"falsefalsefalse1090), "html"nulltrue);
  1177.         yield "
  1178.                     <span class=\"hero-lede-accent\">";
  1179.         // line 1091
  1180.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1091$this->source); })()), "hero_lede_brand", [], "any"falsefalsefalse1091), "html"nulltrue);
  1181.         yield "</span>
  1182.                     ";
  1183.         // line 1092
  1184.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1092$this->source); })()), "hero_lede_mid", [], "any"falsefalsefalse1092), "html"nulltrue);
  1185.         yield "
  1186.                     <span class=\"hero-lede-accent\">";
  1187.         // line 1093
  1188.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1093$this->source); })()), "hero_lede_word", [], "any"falsefalsefalse1093), "html"nulltrue);
  1189.         yield "</span>
  1190.                     ";
  1191.         // line 1094
  1192.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1094$this->source); })()), "hero_lede_post", [], "any"falsefalsefalse1094), "html"nulltrue);
  1193.         yield "
  1194.                 </p>
  1195.                 ";
  1196.         // line 1098
  1197.         yield "                ";
  1198.         if ((array_key_exists("popularKeywords"$context) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["popularKeywords"]) || array_key_exists("popularKeywords"$context) ? $context["popularKeywords"] : (function () { throw new RuntimeError('Variable "popularKeywords" does not exist.'1098$this->source); })())) > 0))) {
  1199.             // line 1099
  1200.             yield "                    <div class=\"hero-popular\">
  1201.                         <span class=\"hero-popular-label\">";
  1202.             // line 1100
  1203.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1100$this->source); })()), "hero_popular_label", [], "any"falsefalsefalse1100), "html"nulltrue);
  1204.             yield "</span>
  1205.                         ";
  1206.             // line 1101
  1207.             $context['_parent'] = $context;
  1208.             $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::slice($this->env->getCharset(), (isset($context["popularKeywords"]) || array_key_exists("popularKeywords"$context) ? $context["popularKeywords"] : (function () { throw new RuntimeError('Variable "popularKeywords" does not exist.'1101$this->source); })()), 05));
  1209.             foreach ($context['_seq'] as $context["_key"] => $context["kw"]) {
  1210.                 // line 1102
  1211.                 yield "                            <button type=\"button\"
  1212.                                     class=\"hero-popular-pill\"
  1213.                                     data-keyword=\"";
  1214.                 // line 1104
  1215.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["kw"], "keyword", [], "any"falsefalsefalse1104), "html"nulltrue);
  1216.                 yield "\"
  1217.                                     data-label=\"";
  1218.                 // line 1105
  1219.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["kw"], "label", [], "any"falsefalsefalse1105), "html"nulltrue);
  1220.                 yield "\">
  1221.                                 ";
  1222.                 // line 1106
  1223.                 if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["kw"], "icon", [], "any"falsefalsefalse1106)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1224.                     yield "<span class=\"hero-popular-pill-icon\">";
  1225.                     yield CoreExtension::getAttribute($this->env$this->source$context["kw"], "icon", [], "any"falsefalsefalse1106);
  1226.                     yield "</span>";
  1227.                 }
  1228.                 // line 1107
  1229.                 yield "                                <span>";
  1230.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["kw"], "label", [], "any"falsefalsefalse1107), "html"nulltrue);
  1231.                 yield "</span>
  1232.                             </button>
  1233.                         ";
  1234.             }
  1235.             $_parent $context['_parent'];
  1236.             unset($context['_seq'], $context['_key'], $context['kw'], $context['_parent']);
  1237.             $context array_intersect_key($context$_parent) + $_parent;
  1238.             // line 1110
  1239.             yield "                    </div>
  1240.                 ";
  1241.         }
  1242.         // line 1112
  1243.         yield "
  1244.                 ";
  1245.         // line 1114
  1246.         yield "                <div class=\"hero-search-wrap\">
  1247.                     <div class=\"hero-search\" id=\"wrHeroSearch\"
  1248.                          data-search-url=\"";
  1249.         // line 1116
  1250.         if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1116$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1251.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_api_jobs_search", ["_locale" => "fr"]);
  1252.         } else {
  1253.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("api_jobs_search");
  1254.         }
  1255.         yield "\"
  1256.                          data-jobs-list-url=\"";
  1257.         // line 1117
  1258.         if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1117$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1259.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_jobs_list", ["_locale" => "fr"]);
  1260.         } else {
  1261.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_jobs_list");
  1262.         }
  1263.         yield "\">
  1264.                         <div class=\"hero-search-inner\">
  1265.                         <span class=\"hero-search-icon\">
  1266.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  1267.                                 <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"M21 21l-4.35-4.35\"/>
  1268.                             </svg>
  1269.                         </span>
  1270.                             <input type=\"text\" name=\"q\" id=\"wrHeroSearchInput\" class=\"hero-search-input\"
  1271.                                    placeholder=\"";
  1272.         // line 1125
  1273.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1125$this->source); })()), "hero_search_placeholder", [], "any"falsefalsefalse1125), "html"nulltrue);
  1274.         yield "\"
  1275.                                    autocomplete=\"off\" />
  1276.                             <span class=\"hero-search-kbd\">↵ ";
  1277.         // line 1127
  1278.         yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1127$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) ? ("Entrée") : ("Enter"));
  1279.         yield "</span>
  1280.                             <button type=\"button\" class=\"hero-search-clear\" id=\"wrHeroSearchClear\" aria-label=\"";
  1281.         // line 1128
  1282.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1128$this->source); })()), "search_clear", [], "any"falsefalsefalse1128), "html"nulltrue);
  1283.         yield "\">
  1284.                                 <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  1285.                                     <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>
  1286.                                 </svg>
  1287.                             </button>
  1288.                         </div>
  1289.                     </div>
  1290.                 </div>
  1291.                 ";
  1292.         // line 1138
  1293.         yield "                ";
  1294.         // line 1139
  1295.         yield "                ";
  1296.         $context["_heroCount"] = 0;
  1297.         // line 1140
  1298.         yield "
  1299.                 <div class=\"hero-default-jobs\" id=\"wrHeroJobsList\">
  1300.                     <div class=\"hero-jobs-header\" id=\"wrHeroJobsHeader\">
  1301.                     <span class=\"hero-jobs-count\" id=\"wrHeroJobsCount\">
  1302.                         <strong>";
  1303.         // line 1144
  1304.         yield (((array_key_exists("totalJobs"$context) &&  !(null === $context["totalJobs"]))) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["totalJobs"], "html"nulltrue)) : (0));
  1305.         yield "</strong>";
  1306.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1144$this->source); })()), "search_results_count", [], "any"falsefalsefalse1144), "html"nulltrue);
  1307.         yield "
  1308.                     </span>
  1309.                         <a href=\"";
  1310.         // line 1146
  1311.         if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1146$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1312.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_jobs_list", ["_locale" => "fr"]);
  1313.         } else {
  1314.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_jobs_list");
  1315.         }
  1316.         yield "\" class=\"hero-jobs-link\" id=\"wrHeroJobsLink\">
  1317.                             ";
  1318.         // line 1147
  1319.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1147$this->source); })()), "search_view_all", [], "any"falsefalsefalse1147), "html"nulltrue);
  1320.         yield "
  1321.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  1322.                                 <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/>
  1323.                             </svg>
  1324.                         </a>
  1325.                     </div>
  1326.                     <div id=\"wrHeroJobsBody\">
  1327.                         ";
  1328.         // line 1155
  1329.         if ((array_key_exists("randomJobs"$context) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["randomJobs"]) || array_key_exists("randomJobs"$context) ? $context["randomJobs"] : (function () { throw new RuntimeError('Variable "randomJobs" does not exist.'1155$this->source); })())) > 0))) {
  1330.             // line 1156
  1331.             yield "                            ";
  1332.             $context['_parent'] = $context;
  1333.             $context['_seq'] = CoreExtension::ensureTraversable((isset($context["randomJobs"]) || array_key_exists("randomJobs"$context) ? $context["randomJobs"] : (function () { throw new RuntimeError('Variable "randomJobs" does not exist.'1156$this->source); })()));
  1334.             foreach ($context['_seq'] as $context["_key"] => $context["j"]) {
  1335.                 // line 1157
  1336.                 yield "                                ";
  1337.                 if (((isset($context["_heroCount"]) || array_key_exists("_heroCount"$context) ? $context["_heroCount"] : (function () { throw new RuntimeError('Variable "_heroCount" does not exist.'1157$this->source); })()) < 6)) {
  1338.                     // line 1158
  1339.                     yield "                                    <a href=\"";
  1340.                     if ((CoreExtension::getAttribute($this->env$this->source$context["j"], "locale", [], "any"falsefalsefalse1158) == "fr")) {
  1341.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_application_job_show", ["_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.'1158$this->source); })()), "request", [], "any"falsefalsefalse1158), "locale", [], "any"falsefalsefalse1158), "slug" => CoreExtension::getAttribute($this->env$this->source$context["j"], "slug", [], "any"falsefalsefalse1158)]), "html"nulltrue);
  1342.                     } else {
  1343.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_application_job_show", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["j"], "slug", [], "any"falsefalsefalse1158)]), "html"nulltrue);
  1344.                     }
  1345.                     yield "\" class=\"hero-default-job\">
  1346.                                         <div class=\"hero-default-job-logo\">
  1347.                                             ";
  1348.                     // line 1160
  1349.                     if ((CoreExtension::getAttribute($this->env$this->source$context["j"], "image", [], "any"falsefalsefalse1160) && CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source$context["j"], "image", [], "any"falsefalsefalse1160), "name", [], "any"falsefalsefalse1160))) {
  1350.                         // line 1161
  1351.                         yield "                                                <img src=\"";
  1352.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Vich\UploaderBundle\Twig\Extension\UploaderExtension']->asset($context["j"], "imageFile"), "html"nulltrue);
  1353.                         yield "\" alt=\"\">
  1354.                                             ";
  1355.                     } else {
  1356.                         // line 1163
  1357.                         yield "                                                ";
  1358.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::upper($this->env->getCharset(), Twig\Extension\CoreExtension::slice($this->env->getCharset(), ((CoreExtension::getAttribute($this->env$this->source$context["j"], "companyName", [], "any"truetruefalse1163)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env$this->source$context["j"], "companyName", [], "any"falsefalsefalse1163), "?")) : ("?")), 01)), "html"nulltrue);
  1359.                         yield "
  1360.                                             ";
  1361.                     }
  1362.                     // line 1165
  1363.                     yield "                                        </div>
  1364.                                         <div class=\"hero-default-job-info\">
  1365.                                             <h3 class=\"hero-default-job-title\">";
  1366.                     // line 1167
  1367.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["j"], "jobTitle", [], "any"falsefalsefalse1167), "html"nulltrue);
  1368.                     yield "</h3>
  1369.                                             <p class=\"hero-default-job-meta\">
  1370.                                                 ";
  1371.                     // line 1169
  1372.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["j"], "companyName", [], "any"falsefalsefalse1169)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1373.                         yield "<span>";
  1374.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["j"], "companyName", [], "any"falsefalsefalse1169), "html"nulltrue);
  1375.                         yield "</span>";
  1376.                     }
  1377.                     // line 1170
  1378.                     yield "                                                ";
  1379.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["j"], "city", [], "any"falsefalsefalse1170)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1380.                         // line 1171
  1381.                         yield "                                                    <span class=\"hero-default-job-meta-sep\"></span>
  1382.                                                     <span>";
  1383.                         // line 1172
  1384.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["j"], "city", [], "any"falsefalsefalse1172), "html"nulltrue);
  1385.                         if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["j"], "country", [], "any"falsefalsefalse1172)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1386.                             yield ", ";
  1387.                             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["j"], "country", [], "any"falsefalsefalse1172), "html"nulltrue);
  1388.                         }
  1389.                         yield "</span>
  1390.                                                 ";
  1391.                     }
  1392.                     // line 1174
  1393.                     yield "                                                ";
  1394.                     if ((($tmp CoreExtension::getAttribute($this->env$this->source$context["j"], "employmentType", [], "any"falsefalsefalse1174)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1395.                         // line 1175
  1396.                         yield "                                                    <span class=\"hero-default-job-meta-sep\"></span>
  1397.                                                     <span>";
  1398.                         // line 1176
  1399.                         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["j"], "employmentType", [], "any"falsefalsefalse1176), "html"nulltrue);
  1400.                         yield "</span>
  1401.                                                 ";
  1402.                     }
  1403.                     // line 1178
  1404.                     yield "                                            </p>
  1405.                                         </div>
  1406.                                         <span class=\"hero-default-job-arrow\">
  1407.                                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg>
  1408.                                         </span>
  1409.                                     </a>
  1410.                                     ";
  1411.                     // line 1184
  1412.                     $context["_heroCount"] = ((isset($context["_heroCount"]) || array_key_exists("_heroCount"$context) ? $context["_heroCount"] : (function () { throw new RuntimeError('Variable "_heroCount" does not exist.'1184$this->source); })()) + 1);
  1413.                     // line 1185
  1414.                     yield "                                ";
  1415.                 }
  1416.                 // line 1186
  1417.                 yield "                            ";
  1418.             }
  1419.             $_parent $context['_parent'];
  1420.             unset($context['_seq'], $context['_key'], $context['j'], $context['_parent']);
  1421.             $context array_intersect_key($context$_parent) + $_parent;
  1422.             // line 1187
  1423.             yield "                        ";
  1424.         }
  1425.         // line 1188
  1426.         yield "                    </div>
  1427.                 </div>
  1428.                 ";
  1429.         // line 1192
  1430.         yield "                ";
  1431.         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.'1192$this->source); })()), "user", [], "any"falsefalsefalse1192))) {
  1432.             // line 1193
  1433.             yield "                    <div class=\"hero-cta\">
  1434.                         <a href=\"#register\" class=\"hero-cta-btn\">
  1435.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  1436.                                 <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"8.5\" cy=\"7\" r=\"4\"/><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"/><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"/>
  1437.                             </svg>
  1438.                             ";
  1439.             // line 1198
  1440.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1198$this->source); })()), "hero_cta_signup", [], "any"falsefalsefalse1198), "html"nulltrue);
  1441.             yield "
  1442.                         </a>
  1443.                         <a href=\"";
  1444.             // line 1200
  1445.             if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1200$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1446.                 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_app_login", ["_locale" => "fr"]);
  1447.             } else {
  1448.                 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_login");
  1449.             }
  1450.             yield "\" class=\"hero-cta-btn\">
  1451.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  1452.                                 <path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/><polyline points=\"10 17 15 12 10 7\"/><line x1=\"15\" y1=\"12\" x2=\"3\" y2=\"12\"/>
  1453.                             </svg>
  1454.                             ";
  1455.             // line 1204
  1456.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1204$this->source); })()), "hero_cta_login", [], "any"falsefalsefalse1204), "html"nulltrue);
  1457.             yield "
  1458.                         </a>
  1459.                     </div>
  1460.                 ";
  1461.         }
  1462.         // line 1208
  1463.         yield "            </div>
  1464.         </section>
  1465.         ";
  1466.         // line 1212
  1467.         yield "        <section class=\"wr-section\">
  1468.             <div class=\"wr-container\">
  1469.                 <div class=\"wr-section-head\">
  1470.                     <h2 class=\"wr-title\">";
  1471.         // line 1215
  1472.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1215$this->source); })()), "how_title", [], "any"falsefalsefalse1215), "html"nulltrue);
  1473.         yield "</h2>
  1474.                 </div>
  1475.                 <div class=\"how-card\">
  1476.                     <div class=\"how-step reveal\" data-reveal-delay=\"1\">
  1477.                         <div class=\"how-step-illu\">
  1478.                             <img src=\"/uploads/rh/mascotte_register.png\" alt=\"";
  1479.         // line 1221
  1480.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1221$this->source); })()), "how1_title", [], "any"falsefalsefalse1221), "html"nulltrue);
  1481.         yield "\" loading=\"lazy\">
  1482.                         </div>
  1483.                         <h3 class=\"how-step-title\">";
  1484.         // line 1223
  1485.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1223$this->source); })()), "how1_title", [], "any"falsefalsefalse1223), "html"nulltrue);
  1486.         yield "</h3>
  1487.                         <p class=\"how-step-desc\">";
  1488.         // line 1224
  1489.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1224$this->source); })()), "how1_desc", [], "any"falsefalsefalse1224), "html"nulltrue);
  1490.         yield "</p>
  1491.                     </div>
  1492.                     <div class=\"how-step reveal\" data-reveal-delay=\"2\">
  1493.                         <div class=\"how-step-illu\">
  1494.                             <img src=\"/uploads/rh/mascotte_upload2.png\" alt=\"";
  1495.         // line 1229
  1496.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1229$this->source); })()), "how2_title", [], "any"falsefalsefalse1229), "html"nulltrue);
  1497.         yield "\" loading=\"lazy\">
  1498.                         </div>
  1499.                         <h3 class=\"how-step-title\">";
  1500.         // line 1231
  1501.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1231$this->source); })()), "how2_title", [], "any"falsefalsefalse1231), "html"nulltrue);
  1502.         yield "</h3>
  1503.                         <p class=\"how-step-desc\">";
  1504.         // line 1232
  1505.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1232$this->source); })()), "how2_desc", [], "any"falsefalsefalse1232), "html"nulltrue);
  1506.         yield "</p>
  1507.                     </div>
  1508.                     <div class=\"how-step reveal\" data-reveal-delay=\"3\">
  1509.                         <div class=\"how-step-illu\">
  1510.                             <img src=\"/uploads/rh/mascotte_reunion.png\" alt=\"";
  1511.         // line 1237
  1512.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1237$this->source); })()), "how3_title", [], "any"falsefalsefalse1237), "html"nulltrue);
  1513.         yield "\" loading=\"lazy\">
  1514.                         </div>
  1515.                         <h3 class=\"how-step-title\">";
  1516.         // line 1239
  1517.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1239$this->source); })()), "how3_title", [], "any"falsefalsefalse1239), "html"nulltrue);
  1518.         yield "</h3>
  1519.                         <p class=\"how-step-desc\">";
  1520.         // line 1240
  1521.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1240$this->source); })()), "how3_desc", [], "any"falsefalsefalse1240), "html"nulltrue);
  1522.         yield "</p>
  1523.                     </div>
  1524.                 </div>
  1525.             </div>
  1526.         </section>
  1527.         ";
  1528.         // line 1247
  1529.         yield "        <section class=\"wr-section\">
  1530.             <div class=\"wr-container\">
  1531.                 ";
  1532.         // line 1251
  1533.         yield "                <div class=\"feat-block reveal\">
  1534.                     <div class=\"feat-illu\">
  1535.                         <img src=\"/uploads/rh/mascotte_filtrage3.png\" alt=\"";
  1536.         // line 1253
  1537.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1253$this->source); })()), "feat1_title", [], "any"falsefalsefalse1253), "html"nulltrue);
  1538.         yield "\" loading=\"lazy\">
  1539.                     </div>
  1540.                     <div class=\"feat-content\">
  1541.                         <span class=\"feat-label\">";
  1542.         // line 1256
  1543.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1256$this->source); })()), "feat1_label", [], "any"falsefalsefalse1256), "html"nulltrue);
  1544.         yield "</span>
  1545.                         <h3 class=\"feat-title\">";
  1546.         // line 1257
  1547.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1257$this->source); })()), "feat1_title", [], "any"falsefalsefalse1257), "html"nulltrue);
  1548.         yield "</h3>
  1549.                         <div class=\"feat-desc\">
  1550.                             <p>";
  1551.         // line 1259
  1552.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1259$this->source); })()), "feat1_p1", [], "any"falsefalsefalse1259);
  1553.         yield "</p>
  1554.                             <p>";
  1555.         // line 1260
  1556.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1260$this->source); })()), "feat1_p2", [], "any"falsefalsefalse1260);
  1557.         yield "</p>
  1558.                         </div>
  1559.                         <div class=\"feat-quote\">
  1560.                             <p class=\"feat-quote-text\">";
  1561.         // line 1263
  1562.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1263$this->source); })()), "feat1_quote", [], "any"falsefalsefalse1263), "html"nulltrue);
  1563.         yield "</p>
  1564.                             <div class=\"feat-quote-author\">
  1565.                                 <p class=\"feat-quote-name\">";
  1566.         // line 1265
  1567.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1265$this->source); })()), "feat1_author", [], "any"falsefalsefalse1265), "html"nulltrue);
  1568.         yield "</p>
  1569.                                 <p class=\"feat-quote-role\">";
  1570.         // line 1266
  1571.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1266$this->source); })()), "feat1_role", [], "any"falsefalsefalse1266), "html"nulltrue);
  1572.         yield "</p>
  1573.                             </div>
  1574.                         </div>
  1575.                     </div>
  1576.                 </div>
  1577.                 ";
  1578.         // line 1273
  1579.         yield "                <div class=\"feat-block reveal\">
  1580.                     <div class=\"feat-illu\">
  1581.                         <img src=\"/uploads/rh/mascotte_upload.png\" alt=\"";
  1582.         // line 1275
  1583.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1275$this->source); })()), "feat2_title", [], "any"falsefalsefalse1275), "html"nulltrue);
  1584.         yield "\" loading=\"lazy\">
  1585.                     </div>
  1586.                     <div class=\"feat-content\">
  1587.                         <span class=\"feat-label\">";
  1588.         // line 1278
  1589.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1278$this->source); })()), "feat2_label", [], "any"falsefalsefalse1278), "html"nulltrue);
  1590.         yield "</span>
  1591.                         <h3 class=\"feat-title\">";
  1592.         // line 1279
  1593.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1279$this->source); })()), "feat2_title", [], "any"falsefalsefalse1279), "html"nulltrue);
  1594.         yield "</h3>
  1595.                         <div class=\"feat-desc\">
  1596.                             <p>";
  1597.         // line 1281
  1598.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1281$this->source); })()), "feat2_p1", [], "any"falsefalsefalse1281);
  1599.         yield "</p>
  1600.                             <p>";
  1601.         // line 1282
  1602.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1282$this->source); })()), "feat2_p2", [], "any"falsefalsefalse1282);
  1603.         yield "</p>
  1604.                         </div>
  1605.                         <div class=\"feat-quote\">
  1606.                             <p class=\"feat-quote-text\">";
  1607.         // line 1285
  1608.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1285$this->source); })()), "feat2_quote", [], "any"falsefalsefalse1285), "html"nulltrue);
  1609.         yield "</p>
  1610.                             <div class=\"feat-quote-author\">
  1611.                                 <p class=\"feat-quote-name\">";
  1612.         // line 1287
  1613.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1287$this->source); })()), "feat2_author", [], "any"falsefalsefalse1287), "html"nulltrue);
  1614.         yield "</p>
  1615.                                 <p class=\"feat-quote-role\">";
  1616.         // line 1288
  1617.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1288$this->source); })()), "feat2_role", [], "any"falsefalsefalse1288), "html"nulltrue);
  1618.         yield "</p>
  1619.                             </div>
  1620.                         </div>
  1621.                     </div>
  1622.                 </div>
  1623.                 ";
  1624.         // line 1294
  1625.         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.'1294$this->source); })()), "user", [], "any"falsefalsefalse1294))) {
  1626.             // line 1295
  1627.             yield "                    ";
  1628.             // line 1296
  1629.             yield "                    <div class=\"signup-card reveal reveal--scale\" id=\"register\">
  1630.                         <div class=\"signup-inner\">
  1631.                             <div class=\"signup-text\">
  1632.                             <span class=\"signup-eyebrow\">
  1633.                                 <svg viewBox=\"0 0 24 24\" width=\"13\" height=\"13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"8.5\" cy=\"7\" r=\"4\"/><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"/><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"/></svg>
  1634.                                 ";
  1635.             // line 1301
  1636.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1301$this->source); })()), "signup_eyebrow", [], "any"falsefalsefalse1301), "html"nulltrue);
  1637.             yield "
  1638.                             </span>
  1639.                                 <h3 class=\"signup-title\">";
  1640.             // line 1303
  1641.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1303$this->source); })()), "signup_title", [], "any"falsefalsefalse1303), "html"nulltrue);
  1642.             yield "</h3>
  1643.                                 <p class=\"signup-lede\">";
  1644.             // line 1304
  1645.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1304$this->source); })()), "signup_lede", [], "any"falsefalsefalse1304), "html"nulltrue);
  1646.             yield "</p>
  1647.                                 <div class=\"signup-perks\">
  1648.                                 <span class=\"signup-perk\">
  1649.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>
  1650.                                     ";
  1651.             // line 1308
  1652.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1308$this->source); })()), "signup_perk1", [], "any"falsefalsefalse1308), "html"nulltrue);
  1653.             yield "
  1654.                                 </span>
  1655.                                     <span class=\"signup-perk\">
  1656.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>
  1657.                                     ";
  1658.             // line 1312
  1659.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1312$this->source); })()), "signup_perk2", [], "any"falsefalsefalse1312), "html"nulltrue);
  1660.             yield "
  1661.                                 </span>
  1662.                                     <span class=\"signup-perk\">
  1663.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>
  1664.                                     ";
  1665.             // line 1316
  1666.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1316$this->source); })()), "signup_perk3", [], "any"falsefalsefalse1316), "html"nulltrue);
  1667.             yield "
  1668.                                 </span>
  1669.                                 </div>
  1670.                             </div>
  1671.                             ";
  1672.             // line 1321
  1673.             if (array_key_exists("form"$context)) {
  1674.                 // line 1322
  1675.                 yield "                                ";
  1676.                 // line 1323
  1677.                 yield "                                ";
  1678.                 yield                 $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->renderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1323$this->source); })()), 'form_start', ["attr" => ["class" => "signup-form""novalidate" => "novalidate"]]);
  1679.                 yield "
  1680.                                 ";
  1681.                 // line 1324
  1682.                 yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1324$this->source); })()), 'errors');
  1683.                 yield "
  1684.                                 ";
  1685.                 // line 1325
  1686.                 $context['_parent'] = $context;
  1687.                 $context['_seq'] = CoreExtension::ensureTraversable(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.'1325$this->source); })()), "flashes", ["danger"], "method"falsefalsefalse1325));
  1688.                 foreach ($context['_seq'] as $context["_key"] => $context["message"]) {
  1689.                     // line 1326
  1690.                     yield "                                    <p class=\"signup-form-error\">";
  1691.                     yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["message"], "html"nulltrue);
  1692.                     yield "</p>
  1693.                                 ";
  1694.                 }
  1695.                 $_parent $context['_parent'];
  1696.                 unset($context['_seq'], $context['_key'], $context['message'], $context['_parent']);
  1697.                 $context array_intersect_key($context$_parent) + $_parent;
  1698.                 // line 1328
  1699.                 yield "
  1700.                                 <div class=\"signup-field\">
  1701.                                     ";
  1702.                 // line 1330
  1703.                 yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(CoreExtension::getAttribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1330$this->source); })()), "email", [], "any"falsefalsefalse1330), 'widget', ["attr" => ["placeholder" => CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1330$this->source); })()), "signup_email_ph", [], "any"falsefalsefalse1330)]]);
  1704.                 yield "
  1705.                                 </div>
  1706.                                 <div class=\"signup-row\">
  1707.                                     <div class=\"signup-field\">
  1708.                                         ";
  1709.                 // line 1335
  1710.                 yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1335$this->source); })()), "password", [], "any"falsefalsefalse1335), "first", [], "any"falsefalsefalse1335), 'widget', ["attr" => ["placeholder" => CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1335$this->source); })()), "signup_pass_ph", [], "any"falsefalsefalse1335)]]);
  1711.                 yield "
  1712.                                     </div>
  1713.                                     <div class=\"signup-field\">
  1714.                                         ";
  1715.                 // line 1338
  1716.                 yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1338$this->source); })()), "password", [], "any"falsefalsefalse1338), "second", [], "any"falsefalsefalse1338), 'widget', ["attr" => ["placeholder" => CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1338$this->source); })()), "signup_pass2_ph", [], "any"falsefalsefalse1338)]]);
  1717.                 yield "
  1718.                                     </div>
  1719.                                 </div>
  1720.                                 <label class=\"signup-terms\">
  1721.                                     ";
  1722.                 // line 1343
  1723.                 yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(CoreExtension::getAttribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1343$this->source); })()), "acceptTerm", [], "any"falsefalsefalse1343), 'widget');
  1724.                 yield "
  1725.                                     <span>
  1726.                                         ";
  1727.                 // line 1345
  1728.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1345$this->source); })()), "signup_terms_pre", [], "any"falsefalsefalse1345), "html"nulltrue);
  1729.                 yield "
  1730.                                         <a href=\"";
  1731.                 // line 1346
  1732.                 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1346$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1733.                     yield "/fr/protections-donnees-candidats";
  1734.                 } else {
  1735.                     yield "/data-protection-candidates";
  1736.                 }
  1737.                 yield "\" target=\"_blank\" rel=\"noopener\">";
  1738.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1346$this->source); })()), "signup_terms_link", [], "any"falsefalsefalse1346), "html"nulltrue);
  1739.                 yield "</a>.
  1740.                                     </span>
  1741.                                 </label>
  1742.                                 ";
  1743.                 // line 1350
  1744.                 if (CoreExtension::getAttribute($this->env$this->source, ($context["form"] ?? null), "recaptcha", [], "any"truetruefalse1350)) {
  1745.                     // line 1351
  1746.                     yield "                                    <div class=\"signup-recaptcha\">";
  1747.                     yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock(CoreExtension::getAttribute($this->env$this->source, (isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1351$this->source); })()), "recaptcha", [], "any"falsefalsefalse1351), 'widget');
  1748.                     yield "</div>
  1749.                                 ";
  1750.                 }
  1751.                 // line 1353
  1752.                 yield "
  1753.                                 <button type=\"submit\" class=\"signup-submit\">
  1754.                                     ";
  1755.                 // line 1355
  1756.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1355$this->source); })()), "signup_btn", [], "any"falsefalsefalse1355), "html"nulltrue);
  1757.                 yield "
  1758.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  1759.                                 </button>
  1760.                                 ";
  1761.                 // line 1359
  1762.                 yield $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->searchAndRenderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1359$this->source); })()), 'rest');
  1763.                 yield "
  1764.                                 ";
  1765.                 // line 1360
  1766.                 yield                 $this->env->getRuntime('Symfony\Component\Form\FormRenderer')->renderBlock((isset($context["form"]) || array_key_exists("form"$context) ? $context["form"] : (function () { throw new RuntimeError('Variable "form" does not exist.'1360$this->source); })()), 'form_end');
  1767.                 yield "
  1768.                             ";
  1769.             }
  1770.             // line 1362
  1771.             yield "                        </div>
  1772.                     </div>
  1773.                 ";
  1774.         }
  1775.         // line 1365
  1776.         yield "
  1777.                 ";
  1778.         // line 1367
  1779.         yield "                <div class=\"feat-block reveal\">
  1780.                     <div class=\"feat-illu\">
  1781.                         <img src=\"/uploads/rh/mascotte_register.png\" alt=\"";
  1782.         // line 1369
  1783.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1369$this->source); })()), "feat3_title", [], "any"falsefalsefalse1369), "html"nulltrue);
  1784.         yield "\" loading=\"lazy\">
  1785.                     </div>
  1786.                     <div class=\"feat-content\">
  1787.                         <span class=\"feat-label\">";
  1788.         // line 1372
  1789.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1372$this->source); })()), "feat3_label", [], "any"falsefalsefalse1372), "html"nulltrue);
  1790.         yield "</span>
  1791.                         <h3 class=\"feat-title\">";
  1792.         // line 1373
  1793.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1373$this->source); })()), "feat3_title", [], "any"falsefalsefalse1373), "html"nulltrue);
  1794.         yield "</h3>
  1795.                         <div class=\"feat-desc\">
  1796.                             <p>";
  1797.         // line 1375
  1798.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1375$this->source); })()), "feat3_p1", [], "any"falsefalsefalse1375);
  1799.         yield "</p>
  1800.                             <p>";
  1801.         // line 1376
  1802.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1376$this->source); })()), "feat3_p2", [], "any"falsefalsefalse1376);
  1803.         yield "</p>
  1804.                         </div>
  1805.                         <div class=\"feat-quote\">
  1806.                             <p class=\"feat-quote-text\">";
  1807.         // line 1379
  1808.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1379$this->source); })()), "feat3_quote", [], "any"falsefalsefalse1379), "html"nulltrue);
  1809.         yield "</p>
  1810.                             <div class=\"feat-quote-author\">
  1811.                                 <p class=\"feat-quote-name\">";
  1812.         // line 1381
  1813.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1381$this->source); })()), "feat3_author", [], "any"falsefalsefalse1381), "html"nulltrue);
  1814.         yield "</p>
  1815.                                 <p class=\"feat-quote-role\">";
  1816.         // line 1382
  1817.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1382$this->source); })()), "feat3_role", [], "any"falsefalsefalse1382), "html"nulltrue);
  1818.         yield "</p>
  1819.                             </div>
  1820.                         </div>
  1821.                     </div>
  1822.                 </div>
  1823.                 ";
  1824.         // line 1389
  1825.         yield "                <div class=\"feat-block reveal\">
  1826.                     <div class=\"feat-illu\">
  1827.                         <img src=\"/uploads/rh/mascotte_reunion.png\" alt=\"";
  1828.         // line 1391
  1829.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1391$this->source); })()), "feat4_title", [], "any"falsefalsefalse1391), "html"nulltrue);
  1830.         yield "\" loading=\"lazy\">
  1831.                     </div>
  1832.                     <div class=\"feat-content\">
  1833.                         <span class=\"feat-label\">";
  1834.         // line 1394
  1835.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1394$this->source); })()), "feat4_label", [], "any"falsefalsefalse1394), "html"nulltrue);
  1836.         yield "</span>
  1837.                         <h3 class=\"feat-title\">";
  1838.         // line 1395
  1839.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1395$this->source); })()), "feat4_title", [], "any"falsefalsefalse1395), "html"nulltrue);
  1840.         yield "</h3>
  1841.                         <div class=\"feat-desc\">
  1842.                             <p>";
  1843.         // line 1397
  1844.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1397$this->source); })()), "feat4_p1", [], "any"falsefalsefalse1397);
  1845.         yield "</p>
  1846.                             <p>";
  1847.         // line 1398
  1848.         yield CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1398$this->source); })()), "feat4_p2", [], "any"falsefalsefalse1398);
  1849.         yield "</p>
  1850.                         </div>
  1851.                         <div class=\"feat-quote\">
  1852.                             <p class=\"feat-quote-text\">";
  1853.         // line 1401
  1854.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1401$this->source); })()), "feat4_quote", [], "any"falsefalsefalse1401), "html"nulltrue);
  1855.         yield "</p>
  1856.                             <div class=\"feat-quote-author\">
  1857.                                 <p class=\"feat-quote-name\">";
  1858.         // line 1403
  1859.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1403$this->source); })()), "feat4_author", [], "any"falsefalsefalse1403), "html"nulltrue);
  1860.         yield "</p>
  1861.                                 <p class=\"feat-quote-role\">";
  1862.         // line 1404
  1863.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1404$this->source); })()), "feat4_role", [], "any"falsefalsefalse1404), "html"nulltrue);
  1864.         yield "</p>
  1865.                             </div>
  1866.                         </div>
  1867.                     </div>
  1868.                 </div>
  1869.             </div>
  1870.         </section>
  1871.         ";
  1872.         // line 1415
  1873.         yield "        <section class=\"wr-section\">
  1874.             <div class=\"wr-container\">
  1875.                 <div class=\"apps-grid\">
  1876.                     <a href=\"";
  1877.         // line 1418
  1878.         yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1418$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((array_key_exists("ios_fr"$context)) ? (Twig\Extension\CoreExtension::default((isset($context["ios_fr"]) || array_key_exists("ios_fr"$context) ? $context["ios_fr"] : (function () { throw new RuntimeError('Variable "ios_fr" does not exist.'1418$this->source); })()), "#")) : ("#")), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((array_key_exists("ios_us"$context)) ? (Twig\Extension\CoreExtension::default((isset($context["ios_us"]) || array_key_exists("ios_us"$context) ? $context["ios_us"] : (function () { throw new RuntimeError('Variable "ios_us" does not exist.'1418$this->source); })()), "#")) : ("#")), "html"nulltrue)));
  1879.         yield "\" class=\"app-card\">
  1880.                     <span class=\"app-card-icon\">
  1881.                         <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\"/></svg>
  1882.                     </span>
  1883.                         <h3 class=\"app-card-name\">";
  1884.         // line 1422
  1885.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1422$this->source); })()), "apps_ios", [], "any"falsefalsefalse1422), "html"nulltrue);
  1886.         yield "</h3>
  1887.                         <p class=\"app-card-desc\">";
  1888.         // line 1423
  1889.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1423$this->source); })()), "apps_ios_desc", [], "any"falsefalsefalse1423), "html"nulltrue);
  1890.         yield "</p>
  1891.                         <span class=\"app-card-cta\">App Store
  1892.                         <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  1893.                     </span>
  1894.                     </a>
  1895.                     <a href=\"";
  1896.         // line 1428
  1897.         yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1428$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((array_key_exists("android_fr"$context)) ? (Twig\Extension\CoreExtension::default((isset($context["android_fr"]) || array_key_exists("android_fr"$context) ? $context["android_fr"] : (function () { throw new RuntimeError('Variable "android_fr" does not exist.'1428$this->source); })()), "#")) : ("#")), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(((array_key_exists("android_us"$context)) ? (Twig\Extension\CoreExtension::default((isset($context["android_us"]) || array_key_exists("android_us"$context) ? $context["android_us"] : (function () { throw new RuntimeError('Variable "android_us" does not exist.'1428$this->source); })()), "#")) : ("#")), "html"nulltrue)));
  1898.         yield "\" class=\"app-card\">
  1899.                     <span class=\"app-card-icon\">
  1900.                         <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.523 15.34c-.583 0-1.06-.477-1.06-1.06 0-.582.477-1.06 1.06-1.06.583 0 1.06.478 1.06 1.06 0 .583-.477 1.06-1.06 1.06m-11.046 0c-.583 0-1.06-.477-1.06-1.06 0-.582.477-1.06 1.06-1.06.583 0 1.06.478 1.06 1.06 0 .583-.477 1.06-1.06 1.06m11.427-6.176l2.114-3.66a.439.439 0 0 0-.16-.6.439.439 0 0 0-.6.16l-2.142 3.71a13.07 13.07 0 0 0-5.116-1.034c-1.823 0-3.55.376-5.116 1.034l-2.14-3.71a.439.439 0 1 0-.76.44l2.113 3.66C2.486 10.78.659 13.658.5 17h23c-.16-3.342-1.987-6.22-5.595-7.836\"/></svg>
  1901.                     </span>
  1902.                         <h3 class=\"app-card-name\">";
  1903.         // line 1432
  1904.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1432$this->source); })()), "apps_android", [], "any"falsefalsefalse1432), "html"nulltrue);
  1905.         yield "</h3>
  1906.                         <p class=\"app-card-desc\">";
  1907.         // line 1433
  1908.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1433$this->source); })()), "apps_android_desc", [], "any"falsefalsefalse1433), "html"nulltrue);
  1909.         yield "</p>
  1910.                         <span class=\"app-card-cta\">Google Play
  1911.                         <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  1912.                     </span>
  1913.                     </a>
  1914.                     <a href=\"";
  1915.         // line 1438
  1916.         if ((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.'1438$this->source); })()), "request", [], "any"falsefalsefalse1438), "locale", [], "any"falsefalsefalse1438) == "en")) {
  1917.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage");
  1918.         } else {
  1919.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_homepage", ["_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.'1438$this->source); })()), "request", [], "any"falsefalsefalse1438), "locale", [], "any"falsefalsefalse1438)]), "html"nulltrue);
  1920.         }
  1921.         yield "#register\" class=\"app-card\">
  1922.                         <span class=\"app-card-icon\">
  1923.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/></svg>
  1924.                         </span>
  1925.                         <h3 class=\"app-card-name\">";
  1926.         // line 1442
  1927.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1442$this->source); })()), "apps_web", [], "any"falsefalsefalse1442), "html"nulltrue);
  1928.         yield "</h3>
  1929.                         <p class=\"app-card-desc\">";
  1930.         // line 1443
  1931.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1443$this->source); })()), "apps_web_desc", [], "any"falsefalsefalse1443), "html"nulltrue);
  1932.         yield "</p>
  1933.                         <span class=\"app-card-cta\">whileresume.com
  1934.                         <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  1935.                     </span>
  1936.                     </a>
  1937.                 </div>
  1938.             </div>
  1939.         </section>
  1940.         ";
  1941.         // line 1454
  1942.         yield "        ";
  1943.         if ((array_key_exists("articles"$context) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["articles"]) || array_key_exists("articles"$context) ? $context["articles"] : (function () { throw new RuntimeError('Variable "articles" does not exist.'1454$this->source); })())) > 0))) {
  1944.             // line 1455
  1945.             yield "            <section class=\"wr-section\">
  1946.                 <div class=\"wr-container\">
  1947.                     <div class=\"wr-section-head\">
  1948.                         <h2 class=\"wr-title wr-title--sm\">";
  1949.             // line 1458
  1950.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1458$this->source); })()), "articles_title", [], "any"falsefalsefalse1458), "html"nulltrue);
  1951.             yield "</h2>
  1952.                     </div>
  1953.                     <div class=\"articles-list\">
  1954.                         ";
  1955.             // line 1462
  1956.             $context['_parent'] = $context;
  1957.             $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::slice($this->env->getCharset(), (isset($context["articles"]) || array_key_exists("articles"$context) ? $context["articles"] : (function () { throw new RuntimeError('Variable "articles" does not exist.'1462$this->source); })()), 06));
  1958.             foreach ($context['_seq'] as $context["_key"] => $context["a"]) {
  1959.                 // line 1463
  1960.                 yield "                            ";
  1961.                 $context["prefix"] = "";
  1962.                 // line 1464
  1963.                 yield "                            ";
  1964.                 $context["urlA"] = $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_website_article", ["slug" => CoreExtension::getAttribute($this->env$this->source$context["a"], "slug", [], "any"falsefalsefalse1464)]);
  1965.                 // line 1465
  1966.                 yield "                            ";
  1967.                 if ((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.'1465$this->source); })()), "request", [], "any"falsefalsefalse1465), "locale", [], "any"falsefalsefalse1465) != (isset($context["default_locale"]) || array_key_exists("default_locale"$context) ? $context["default_locale"] : (function () { throw new RuntimeError('Variable "default_locale" does not exist.'1465$this->source); })()))) {
  1968.                     // line 1466
  1969.                     yield "                                ";
  1970.                     $context["urlA"] = $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_website_article", ["_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.'1466$this->source); })()), "request", [], "any"falsefalsefalse1466), "locale", [], "any"falsefalsefalse1466), "slug" => CoreExtension::getAttribute($this->env$this->source$context["a"], "slug", [], "any"falsefalsefalse1466)]);
  1971.                     // line 1467
  1972.                     yield "                                ";
  1973.                     $context["prefix"] = ("/" 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.'1467$this->source); })()), "request", [], "any"falsefalsefalse1467), "locale", [], "any"falsefalsefalse1467));
  1974.                     // line 1468
  1975.                     yield "                            ";
  1976.                 }
  1977.                 // line 1469
  1978.                 yield "                            ";
  1979.                 if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug3", [], "any"falsefalsefalse1469))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1980.                     // line 1470
  1981.                     yield "                                ";
  1982.                     $context["urlA"] = (((((((isset($context["prefix"]) || array_key_exists("prefix"$context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.'1470$this->source); })()) . "/") . CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug", [], "any"falsefalsefalse1470)) . "/") . CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug2", [], "any"falsefalsefalse1470)) . "/") . CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug3", [], "any"falsefalsefalse1470));
  1983.                     // line 1471
  1984.                     yield "                            ";
  1985.                 } elseif ((($tmp =  !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug2", [], "any"falsefalsefalse1471))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1986.                     // line 1472
  1987.                     yield "                                ";
  1988.                     $context["urlA"] = (((((isset($context["prefix"]) || array_key_exists("prefix"$context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.'1472$this->source); })()) . "/") . CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug", [], "any"falsefalsefalse1472)) . "/") . CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug2", [], "any"falsefalsefalse1472));
  1989.                     // line 1473
  1990.                     yield "                            ";
  1991.                 } elseif ((($tmp =  !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug", [], "any"falsefalsefalse1473))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  1992.                     // line 1474
  1993.                     yield "                                ";
  1994.                     $context["urlA"] = (((isset($context["prefix"]) || array_key_exists("prefix"$context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.'1474$this->source); })()) . "/") . CoreExtension::getAttribute($this->env$this->source$context["a"], "pageslug", [], "any"falsefalsefalse1474));
  1995.                     // line 1475
  1996.                     yield "                            ";
  1997.                 }
  1998.                 // line 1476
  1999.                 yield "
  2000.                             <a href=\"";
  2001.                 // line 1477
  2002.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["urlA"]) || array_key_exists("urlA"$context) ? $context["urlA"] : (function () { throw new RuntimeError('Variable "urlA" does not exist.'1477$this->source); })()), "html"nulltrue);
  2003.                 yield "\" class=\"wr-article\">
  2004.                                 <div class=\"wr-article-logo\">
  2005.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  2006.                                         <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"/>
  2007.                                         <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"/>
  2008.                                     </svg>
  2009.                                 </div>
  2010.                                 <div class=\"wr-article-info\">
  2011.                                     <h3 class=\"wr-article-title\">";
  2012.                 // line 1485
  2013.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["a"], "title", [], "any"falsefalsefalse1485), "html"nulltrue);
  2014.                 yield "</h3>
  2015.                                     <div class=\"wr-article-meta\">
  2016.                                         ";
  2017.                 // line 1487
  2018.                 if ((($tmp =  !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env$this->source$context["a"], "subtitle", [], "any"falsefalsefalse1487))) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  2019.                     // line 1488
  2020.                     yield "                                            <span>";
  2021.                     yield (((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["a"], "subtitle", [], "any"falsefalsefalse1488)) > 60)) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((Twig\Extension\CoreExtension::slice($this->env->getCharset(), CoreExtension::getAttribute($this->env$this->source$context["a"], "subtitle", [], "any"falsefalsefalse1488), 060) . "…"), "html"nulltrue)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["a"], "subtitle", [], "any"falsefalsefalse1488), "html"nulltrue)));
  2022.                     yield "</span>
  2023.                                         ";
  2024.                 }
  2025.                 // line 1490
  2026.                 yield "                                    </div>
  2027.                                 </div>
  2028.                                 <span class=\"wr-article-badge\">";
  2029.                 // line 1492
  2030.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1492$this->source); })()), "read_article", [], "any"falsefalsefalse1492), "html"nulltrue);
  2031.                 yield "</span>
  2032.                                 <span class=\"wr-article-arrow\">
  2033.                                 <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  2034.                                     <polyline points=\"9 18 15 12 9 6\"/>
  2035.                                 </svg>
  2036.                             </span>
  2037.                             </a>
  2038.                         ";
  2039.             }
  2040.             $_parent $context['_parent'];
  2041.             unset($context['_seq'], $context['_key'], $context['a'], $context['_parent']);
  2042.             $context array_intersect_key($context$_parent) + $_parent;
  2043.             // line 1500
  2044.             yield "                    </div>
  2045.                     <div class=\"articles-cta\">
  2046.                         <a href=\"";
  2047.             // line 1503
  2048.             if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR"$context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.'1503$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  2049.                 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_website_articles", ["_locale" => "fr"]);
  2050.             } else {
  2051.                 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_website_articles");
  2052.             }
  2053.             yield "\">
  2054.                             ";
  2055.             // line 1504
  2056.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1504$this->source); })()), "articles_view_all", [], "any"falsefalsefalse1504), "html"nulltrue);
  2057.             yield "
  2058.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  2059.                         </a>
  2060.                     </div>
  2061.                 </div>
  2062.             </section>
  2063.         ";
  2064.         }
  2065.         // line 1511
  2066.         yield "
  2067.         ";
  2068.         // line 1513
  2069.         yield "        ";
  2070.         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.'1513$this->source); })()), "user", [], "any"falsefalsefalse1513))) {
  2071.             // line 1514
  2072.             yield "            <section class=\"wr-section\">
  2073.                 <div class=\"wr-container\">
  2074.                     <div class=\"final-card\">
  2075.                         <h2 class=\"final-title\">";
  2076.             // line 1518
  2077.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1518$this->source); })()), "final_title", [], "any"falsefalsefalse1518), "html"nulltrue);
  2078.             yield "</h2>
  2079.                         <div class=\"final-grid\">
  2080.                             ";
  2081.             // line 1522
  2082.             yield "                            <div class=\"final-sub\">
  2083.                                 <div class=\"final-sub-head\">
  2084.                             <span class=\"final-sub-icon\">
  2085.                                 <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  2086.                                     <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"/>
  2087.                                     <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"/>
  2088.                                 </svg>
  2089.                             </span>
  2090.                                     <span class=\"final-sub-label\">";
  2091.             // line 1530
  2092.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1530$this->source); })()), "final_recruiter_label", [], "any"falsefalsefalse1530), "html"nulltrue);
  2093.             yield "</span>
  2094.                                 </div>
  2095.                                 <h3 class=\"final-sub-title\">";
  2096.             // line 1532
  2097.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1532$this->source); })()), "final_recruiter_title", [], "any"falsefalsefalse1532), "html"nulltrue);
  2098.             yield "</h3>
  2099.                                 <p class=\"final-sub-desc\">";
  2100.             // line 1533
  2101.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1533$this->source); })()), "final_recruiter_desc", [], "any"falsefalsefalse1533), "html"nulltrue);
  2102.             yield "</p>
  2103.                                 <a href=\"";
  2104.             // line 1534
  2105.             yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath(("whileresume_business_" 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.'1534$this->source); })()), "request", [], "any"falsefalsefalse1534), "locale", [], "any"falsefalsefalse1534)));
  2106.             yield "\" class=\"final-sub-btn\">
  2107.                                     ";
  2108.             // line 1535
  2109.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1535$this->source); })()), "final_recruiter", [], "any"falsefalsefalse1535), "html"nulltrue);
  2110.             yield "
  2111.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  2112.                                 </a>
  2113.                             </div>
  2114.                             ";
  2115.             // line 1541
  2116.             yield "                            <div class=\"final-sub\">
  2117.                                 <div class=\"final-sub-head\">
  2118.                                 <span class=\"final-sub-icon\">
  2119.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  2120.                                         <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/>
  2121.                                         <circle cx=\"12\" cy=\"7\" r=\"4\"/>
  2122.                                     </svg>
  2123.                                 </span>
  2124.                                     <span class=\"final-sub-label\">";
  2125.             // line 1549
  2126.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1549$this->source); })()), "final_candidate_label", [], "any"falsefalsefalse1549), "html"nulltrue);
  2127.             yield "</span>
  2128.                                 </div>
  2129.                                 <h3 class=\"final-sub-title\">";
  2130.             // line 1551
  2131.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1551$this->source); })()), "final_candidate_title", [], "any"falsefalsefalse1551), "html"nulltrue);
  2132.             yield "</h3>
  2133.                                 <p class=\"final-sub-desc\">";
  2134.             // line 1552
  2135.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1552$this->source); })()), "final_candidate_desc", [], "any"falsefalsefalse1552), "html"nulltrue);
  2136.             yield "</p>
  2137.                                 <a href=\"";
  2138.             // line 1553
  2139.             if ((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.'1553$this->source); })()), "request", [], "any"falsefalsefalse1553), "locale", [], "any"falsefalsefalse1553) == "en")) {
  2140.                 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage");
  2141.             } else {
  2142.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_homepage", ["_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.'1553$this->source); })()), "request", [], "any"falsefalsefalse1553), "locale", [], "any"falsefalsefalse1553)]), "html"nulltrue);
  2143.             }
  2144.             yield "#register\" class=\"final-sub-btn\">
  2145.                                     ";
  2146.             // line 1554
  2147.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1554$this->source); })()), "final_candidate", [], "any"falsefalsefalse1554), "html"nulltrue);
  2148.             yield "
  2149.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  2150.                                 </a>
  2151.                             </div>
  2152.                         </div>
  2153.                     </div>
  2154.                 </div>
  2155.             </section>
  2156.         ";
  2157.         }
  2158.         // line 1563
  2159.         yield "    </div>
  2160. ";
  2161.         
  2162.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  2163.         
  2164.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  2165.         yield from [];
  2166.     }
  2167.     // line 1566
  2168.     /**
  2169.      * @return iterable<null|scalar|\Stringable>
  2170.      */
  2171.     public function block_footer_js(array $context, array $blocks = []): iterable
  2172.     {
  2173.         $macros $this->macros;
  2174.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  2175.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""footer_js"));
  2176.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2177.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""footer_js"));
  2178.         // line 1567
  2179.         yield "    ";
  2180.         yield from $this->yieldParentBlock("footer_js"$context$blocks);
  2181.         yield "
  2182.     <script>
  2183.         (function(){
  2184.             var search   = document.getElementById('wrHeroSearch');
  2185.             var input    = document.getElementById('wrHeroSearchInput');
  2186.             var clearBtn = document.getElementById('wrHeroSearchClear');
  2187.             var jobsBody = document.getElementById('wrHeroJobsBody');
  2188.             var countEl  = document.getElementById('wrHeroJobsCount');
  2189.             var linkEl   = document.getElementById('wrHeroJobsLink');
  2190.             if (!search || !input || !jobsBody) return;
  2191.             var searchUrl   = search.dataset.searchUrl;
  2192.             var jobsListUrl = search.dataset.jobsListUrl;
  2193.             // On garde l'état initial pour pouvoir le restaurer
  2194.             var defaultBodyHtml  = jobsBody.innerHTML;
  2195.             var defaultCountHtml = countEl ? countEl.innerHTML : '';
  2196.             var defaultLinkHref  = linkEl ? linkEl.getAttribute('href') : jobsListUrl;
  2197.             var debounceTimer = null;
  2198.             var currentRequest = null;
  2199.             var lastQuery = '';
  2200.             var T = {
  2201.                 loading:      '";
  2202.         // line 1591
  2203.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1591$this->source); })()), "search_loading", [], "any"falsefalsefalse1591), "js"), "html"nulltrue);
  2204.         yield "',
  2205.                 empty:        '";
  2206.         // line 1592
  2207.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1592$this->source); })()), "search_no_results", [], "any"falsefalsefalse1592), "js"), "html"nulltrue);
  2208.         yield "',
  2209.                 emptyHint:    '";
  2210.         // line 1593
  2211.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1593$this->source); })()), "search_no_results_hint", [], "any"falsefalsefalse1593), "js"), "html"nulltrue);
  2212.         yield "',
  2213.                 count:        '";
  2214.         // line 1594
  2215.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1594$this->source); })()), "search_results_count", [], "any"falsefalsefalse1594), "js"), "html"nulltrue);
  2216.         yield "',
  2217.                 viewAll:      '";
  2218.         // line 1595
  2219.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1595$this->source); })()), "search_view_all", [], "any"falsefalsefalse1595), "js"), "html"nulltrue);
  2220.         yield "',
  2221.                 view:         '";
  2222.         // line 1596
  2223.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["t"]) || array_key_exists("t"$context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.'1596$this->source); })()), "search_view_offer", [], "any"falsefalsefalse1596), "js"), "html"nulltrue);
  2224.         yield "'
  2225.             };
  2226.             function escHtml(s){
  2227.                 if (s == null) return '';
  2228.                 return String(s).replace(/[&<>\"']/g, function(c){
  2229.                     return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c];
  2230.                 });
  2231.             }
  2232.             function setHeaderCount(total){
  2233.                 if (!countEl) return;
  2234.                 countEl.innerHTML = '<strong>' + total + '</strong>' + escHtml(T.count);
  2235.             }
  2236.             function setHeaderLink(href){
  2237.                 if (!linkEl) return;
  2238.                 linkEl.setAttribute('href', href);
  2239.             }
  2240.             function setLoading(){
  2241.                 jobsBody.innerHTML =
  2242.                     '<div class=\"hero-jobs-loading\">' +
  2243.                     '<span class=\"hero-jobs-spinner\"></span>' +
  2244.                     '<span>' + escHtml(T.loading) + '</span>' +
  2245.                     '</div>';
  2246.             }
  2247.             function setEmpty(){
  2248.                 jobsBody.innerHTML =
  2249.                     '<div class=\"hero-jobs-empty\">' +
  2250.                     '<div class=\"hero-jobs-empty-icon\">' +
  2251.                     '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' +
  2252.                     '<circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/>' +
  2253.                     '</svg>' +
  2254.                     '</div>' +
  2255.                     '<p class=\"hero-jobs-empty-title\">' + escHtml(T.empty) + '</p>' +
  2256.                     '<p class=\"hero-jobs-empty-hint\">' + escHtml(T.emptyHint) + '</p>' +
  2257.                     '</div>';
  2258.             }
  2259.             function restoreDefault(){
  2260.                 jobsBody.innerHTML = defaultBodyHtml;
  2261.                 if (countEl) countEl.innerHTML = defaultCountHtml;
  2262.                 if (linkEl) linkEl.setAttribute('href', defaultLinkHref);
  2263.             }
  2264.             function renderResults(payload, query){
  2265.                 var jobs  = (payload && payload.jobs)  || [];
  2266.                 var total = (payload && typeof payload.total === 'number') ? payload.total : jobs.length;
  2267.                 setHeaderCount(total);
  2268.                 setHeaderLink(jobsListUrl + '?q=' + encodeURIComponent(query));
  2269.                 if (!jobs.length){
  2270.                     setEmpty();
  2271.                     return;
  2272.                 }
  2273.                 var html = '';
  2274.                 jobs.slice(0, 6).forEach(function(j){
  2275.                     var title   = j.jobTitle || j.title || '';
  2276.                     var company = j.companyName || j.company || '';
  2277.                     var city    = j.city || '';
  2278.                     var country = j.country || '';
  2279.                     var et      = j.employmentType || '';
  2280.                     var img     = j.image || j.imageUrl || '';
  2281.                     var url     = j.url || (jobsListUrl + '?q=' + encodeURIComponent(query));
  2282.                     var initial = (company || title || '?').charAt(0).toUpperCase();
  2283.                     var location = city + (country ? ', ' + country : '');
  2284.                     var metaParts = [];
  2285.                     if (company)  metaParts.push('<span>' + escHtml(company) + '</span>');
  2286.                     if (location) metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(location) + '</span>');
  2287.                     if (et)       metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(et) + '</span>');
  2288.                     html +=
  2289.                         '<a href=\"' + escHtml(url) + '\" class=\"hero-default-job\">' +
  2290.                         '<div class=\"hero-default-job-logo\">' +
  2291.                         (img
  2292.                             ? '<img src=\"' + escHtml(img) + '\" alt=\"\">'
  2293.                             : escHtml(initial)) +
  2294.                         '</div>' +
  2295.                         '<div class=\"hero-default-job-info\">' +
  2296.                         '<h3 class=\"hero-default-job-title\">' + escHtml(title) + '</h3>' +
  2297.                         '<p class=\"hero-default-job-meta\">' + metaParts.join('') + '</p>' +
  2298.                         '</div>' +
  2299.                         '<span class=\"hero-default-job-arrow\">' +
  2300.                         '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg>' +
  2301.                         '</span>' +
  2302.                         '</a>';
  2303.                 });
  2304.                 jobsBody.innerHTML = html;
  2305.             }
  2306.             function doSearch(query){
  2307.                 if (currentRequest && currentRequest.abort) {
  2308.                     try { currentRequest.abort(); } catch(e){}
  2309.                 }
  2310.                 setLoading();
  2311.                 var url = searchUrl + (searchUrl.indexOf('?') > -1 ? '&' : '?') + 'q=' + encodeURIComponent(query);
  2312.                 var ctrl = (typeof AbortController !== 'undefined') ? new AbortController() : null;
  2313.                 currentRequest = ctrl;
  2314.                 fetch(url, { headers: { 'Accept': 'application/json' }, signal: ctrl ? ctrl.signal : undefined })
  2315.                     .then(function(r){ return r.ok ? r.json() : Promise.reject(r.status); })
  2316.                     .then(function(data){ renderResults(data, query); })
  2317.                     .catch(function(err){
  2318.                         if (err && err.name === 'AbortError') return;
  2319.                         setEmpty();
  2320.                     });
  2321.             }
  2322.             // Input live (debounce 280ms)
  2323.             input.addEventListener('input', function(){
  2324.                 var q = input.value.trim();
  2325.                 clearBtn.classList.toggle('is-visible', q.length > 0);
  2326.                 if (debounceTimer) clearTimeout(debounceTimer);
  2327.                 if (q.length < 2){
  2328.                     restoreDefault();
  2329.                     lastQuery = '';
  2330.                     return;
  2331.                 }
  2332.                 if (q === lastQuery) return;
  2333.                 debounceTimer = setTimeout(function(){
  2334.                     lastQuery = q;
  2335.                     doSearch(q);
  2336.                 }, 280);
  2337.             });
  2338.             // Enter → page de résultats complète
  2339.             input.addEventListener('keydown', function(e){
  2340.                 if (e.key === 'Enter'){
  2341.                     e.preventDefault();
  2342.                     var q = input.value.trim();
  2343.                     if (!q) return;
  2344.                     window.location.href = jobsListUrl + '?q=' + encodeURIComponent(q);
  2345.                 }
  2346.                 if (e.key === 'Escape'){
  2347.                     input.value = '';
  2348.                     clearBtn.classList.remove('is-visible');
  2349.                     restoreDefault();
  2350.                     lastQuery = '';
  2351.                     input.blur();
  2352.                 }
  2353.             });
  2354.             // Clear
  2355.             clearBtn.addEventListener('click', function(){
  2356.                 input.value = '';
  2357.                 clearBtn.classList.remove('is-visible');
  2358.                 restoreDefault();
  2359.                 lastQuery = '';
  2360.                 input.focus();
  2361.             });
  2362.             // Pills \"Populaire\" — au clic, on remplit l'input et on lance la recherche
  2363.             document.querySelectorAll('.hero-popular-pill').forEach(function(pill){
  2364.                 pill.addEventListener('click', function(){
  2365.                     var keyword = pill.dataset.keyword || pill.dataset.label || '';
  2366.                     if (!keyword) return;
  2367.                     // Visuel actif
  2368.                     document.querySelectorAll('.hero-popular-pill').forEach(function(p){ p.classList.remove('is-active'); });
  2369.                     pill.classList.add('is-active');
  2370.                     input.value = keyword;
  2371.                     clearBtn.classList.add('is-visible');
  2372.                     lastQuery = keyword;
  2373.                     doSearch(keyword);
  2374.                     input.focus();
  2375.                 });
  2376.             });
  2377.         })();
  2378.         /* ═══ Reveal au scroll (Intersection Observer) ═══ */
  2379.         (function(){
  2380.             var els = document.querySelectorAll('.reveal');
  2381.             if (!els.length) return;
  2382.             if (!('IntersectionObserver' in window)){
  2383.                 // Fallback : tout révéler
  2384.                 els.forEach(function(el){ el.classList.add('is-revealed'); });
  2385.                 return;
  2386.             }
  2387.             var io = new IntersectionObserver(function(entries){
  2388.                 entries.forEach(function(entry){
  2389.                     if (entry.isIntersecting){
  2390.                         entry.target.classList.add('is-revealed');
  2391.                         io.unobserve(entry.target);
  2392.                     }
  2393.                 });
  2394.             }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' });
  2395.             els.forEach(function(el){ io.observe(el); });
  2396.         })();
  2397.     </script>
  2398. ";
  2399.         
  2400.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  2401.         
  2402.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  2403.         yield from [];
  2404.     }
  2405.     /**
  2406.      * @codeCoverageIgnore
  2407.      */
  2408.     public function getTemplateName(): string
  2409.     {
  2410.         return "application/whileresume/website/candidates/homepage.html.twig";
  2411.     }
  2412.     /**
  2413.      * @codeCoverageIgnore
  2414.      */
  2415.     public function isTraitable(): bool
  2416.     {
  2417.         return false;
  2418.     }
  2419.     /**
  2420.      * @codeCoverageIgnore
  2421.      */
  2422.     public function getDebugInfo(): array
  2423.     {
  2424.         return array (  2363 => 1596,  2359 => 1595,  2355 => 1594,  2351 => 1593,  2347 => 1592,  2343 => 1591,  2315 => 1567,  2302 => 1566,  2290 => 1563,  2278 => 1554,  2270 => 1553,  2266 => 1552,  2262 => 1551,  2257 => 1549,  2247 => 1541,  2239 => 1535,  2235 => 1534,  2231 => 1533,  2227 => 1532,  2222 => 1530,  2212 => 1522,  2206 => 1518,  2200 => 1514,  2197 => 1513,  2194 => 1511,  2184 => 1504,  2176 => 1503,  2171 => 1500,  2157 => 1492,  2153 => 1490,  2147 => 1488,  2145 => 1487,  2140 => 1485,  2129 => 1477,  2126 => 1476,  2123 => 1475,  2120 => 1474,  2117 => 1473,  2114 => 1472,  2111 => 1471,  2108 => 1470,  2105 => 1469,  2102 => 1468,  2099 => 1467,  2096 => 1466,  2093 => 1465,  2090 => 1464,  2087 => 1463,  2083 => 1462,  2076 => 1458,  2071 => 1455,  2068 => 1454,  2055 => 1443,  2051 => 1442,  2040 => 1438,  2032 => 1433,  2028 => 1432,  2021 => 1428,  2013 => 1423,  2009 => 1422,  2002 => 1418,  1997 => 1415,  1984 => 1404,  1980 => 1403,  1975 => 1401,  1969 => 1398,  1965 => 1397,  1960 => 1395,  1956 => 1394,  1950 => 1391,  1946 => 1389,  1937 => 1382,  1933 => 1381,  1928 => 1379,  1922 => 1376,  1918 => 1375,  1913 => 1373,  1909 => 1372,  1903 => 1369,  1899 => 1367,  1896 => 1365,  1891 => 1362,  1886 => 1360,  1882 => 1359,  1875 => 1355,  1871 => 1353,  1865 => 1351,  1863 => 1350,  1850 => 1346,  1846 => 1345,  1841 => 1343,  1833 => 1338,  1827 => 1335,  1819 => 1330,  1815 => 1328,  1806 => 1326,  1802 => 1325,  1798 => 1324,  1793 => 1323,  1791 => 1322,  1789 => 1321,  1781 => 1316,  1774 => 1312,  1767 => 1308,  1760 => 1304,  1756 => 1303,  1751 => 1301,  1744 => 1296,  1742 => 1295,  1740 => 1294,  1731 => 1288,  1727 => 1287,  1722 => 1285,  1716 => 1282,  1712 => 1281,  1707 => 1279,  1703 => 1278,  1697 => 1275,  1693 => 1273,  1684 => 1266,  1680 => 1265,  1675 => 1263,  1669 => 1260,  1665 => 1259,  1660 => 1257,  1656 => 1256,  1650 => 1253,  1646 => 1251,  1641 => 1247,  1632 => 1240,  1628 => 1239,  1623 => 1237,  1615 => 1232,  1611 => 1231,  1606 => 1229,  1598 => 1224,  1594 => 1223,  1589 => 1221,  1580 => 1215,  1575 => 1212,  1570 => 1208,  1563 => 1204,  1552 => 1200,  1547 => 1198,  1540 => 1193,  1537 => 1192,  1532 => 1188,  1529 => 1187,  1523 => 1186,  1520 => 1185,  1518 => 1184,  1510 => 1178,  1505 => 1176,  1502 => 1175,  1499 => 1174,  1490 => 1172,  1487 => 1171,  1484 => 1170,  1478 => 1169,  1473 => 1167,  1469 => 1165,  1463 => 1163,  1457 => 1161,  1455 => 1160,  1445 => 1158,  1442 => 1157,  1437 => 1156,  1435 => 1155,  1424 => 1147,  1416 => 1146,  1409 => 1144,  1403 => 1140,  1400 => 1139,  1398 => 1138,  1386 => 1128,  1382 => 1127,  1377 => 1125,  1362 => 1117,  1354 => 1116,  1350 => 1114,  1347 => 1112,  1343 => 1110,  1333 => 1107,  1327 => 1106,  1323 => 1105,  1319 => 1104,  1315 => 1102,  1311 => 1101,  1307 => 1100,  1304 => 1099,  1301 => 1098,  1295 => 1094,  1291 => 1093,  1287 => 1092,  1283 => 1091,  1279 => 1090,  1270 => 1086,  1264 => 1085,  1257 => 1081,  1251 => 1077,  1247 => 1074,  1234 => 1073,  191 => 41,  178 => 40,  155 => 38,  132 => 37,  109 => 36,  86 => 35,  75 => 1,  69 => 31,  65 => 30,  63 => 29,  61 => 5,  59 => 3,  46 => 1,);
  2425.     }
  2426.     public function getSourceContext(): Source
  2427.     {
  2428.         return new Source("{% extends 'application/whileresume/website/layout-social.html.twig' %}
  2429. {% set isFR = app.request.locale == 'fr' %}
  2430. {% set _keys = [
  2431.     'hero_eyebrow','hero_title_pre','hero_title_accent','hero_title_post','hero_title_accent2','hero_title_2',
  2432.     'hero_lede_pre','hero_lede_brand','hero_lede_mid','hero_lede_word','hero_lede_post',
  2433.     'hero_cta_signup','hero_cta_login',
  2434.     'hero_search_placeholder','hero_popular_label','hero_btn_ios','hero_btn_android',
  2435.     'hero_default_title','hero_search_button','hero_byline_jobs','hero_byline_apps','hero_byline_free','hero_kbd_enter',
  2436.     'search_loading','search_no_results','search_no_results_hint','search_results_count','search_view_all','search_view_offer','search_clear',
  2437.     'how_eyebrow','how_title','how_lede',
  2438.     'how1_title','how1_desc','how2_title','how2_desc','how3_title','how3_desc',
  2439.     'feat1_label','feat1_title','feat1_p1','feat1_p2','feat1_quote','feat1_author','feat1_role',
  2440.     'feat2_label','feat2_title','feat2_p1','feat2_p2','feat2_quote','feat2_author','feat2_role',
  2441.     'feat3_label','feat3_title','feat3_p1','feat3_p2','feat3_quote','feat3_author','feat3_role',
  2442.     'feat4_label','feat4_title','feat4_p1','feat4_p2','feat4_quote','feat4_author','feat4_role',
  2443.     'signup_eyebrow','signup_title','signup_lede','signup_email_ph','signup_pass_ph','signup_pass2_ph',
  2444.     'signup_terms_pre','signup_terms_link','signup_btn','signup_login_pre','signup_login_link',
  2445.     'signup_perk1','signup_perk2','signup_perk3',
  2446.     'apps_eyebrow','apps_title','apps_lede','apps_ios','apps_android','apps_web','apps_ios_desc','apps_android_desc','apps_web_desc',
  2447.     'articles_title','articles_view_all','read_article',
  2448.     'final_eyebrow','final_title',
  2449.     'final_recruiter_label','final_recruiter_title','final_recruiter_desc',
  2450.     'final_candidate_label','final_candidate_title','final_candidate_desc',
  2451.     'final_candidate','final_recruiter'
  2452. ] %}
  2453. {% set t = {} %}
  2454. {% for k in _keys %}
  2455.     {% set t = t|merge({(k): ('homepage.' ~ k)|trans({}, 'whr-public')}) %}
  2456. {% endfor %}
  2457. {% block title %}{{ page.shortTitle }}{% endblock %}
  2458. {% block description %}{{ page.shortDescription }}{% endblock %}
  2459. {% block robots %}{{ page.robots }}{% endblock %}
  2460. {% block canonical %}{% include \"/vitrine/lexend/components/languages/canonical_classic.html.twig\" %}{% endblock %}
  2461. {% block css %}
  2462.     {{ parent() }}
  2463.     <style>
  2464.         :root{
  2465.             --wr-bg:#FBFCFE;
  2466.             --wr-bg-2:#F4F6FB;
  2467.             --wr-card:#FFFFFF;
  2468.             --wr-violet:#8A63C1;
  2469.             --wr-violet-2:#A98AD3;
  2470.             --wr-violet-soft:#F2EDFA;
  2471.             --wr-violet-softer:#F8F4FD;
  2472.             --wr-violet-dark:#6B47A6;
  2473.             --wr-ink:#1E1B2E;
  2474.             --wr-ink-2:#374151;
  2475.             --wr-muted:#6B7280;
  2476.             --wr-muted-2:#9CA3AF;
  2477.             --wr-line:#EEF1F7;
  2478.             --wr-line-2:#E5E9F0;
  2479.             --wr-shadow:0 1px 2px rgba(30,27,46,.04),0 4px 16px rgba(30,27,46,.04);
  2480.             --wr-shadow-hover:0 4px 8px rgba(138,99,192,.08),0 12px 32px rgba(138,99,192,.1);
  2481.             /* Accents colorés pour les logos d'offres (lettres) */
  2482.             --wr-acc-yellow:#FEF3C7;  --wr-acc-yellow-fg:#B45309;
  2483.             --wr-acc-green:#D1FAE5;   --wr-acc-green-fg:#047857;
  2484.             --wr-acc-pink:#FCE7F3;    --wr-acc-pink-fg:#BE185D;
  2485.             --wr-acc-blue:#DBEAFE;    --wr-acc-blue-fg:#1E40AF;
  2486.             --wr-acc-orange:#FED7AA;  --wr-acc-orange-fg:#C2410C;
  2487.             --wr-acc-violet:#EDE9FE;  --wr-acc-violet-fg:#6D28D9;
  2488.             --wr-acc-cyan:#CFFAFE;    --wr-acc-cyan-fg:#0E7490;
  2489.         }
  2490.         /* ═══════════════════════════════════════════════════════════════════
  2491.            PLEINE LARGEUR — On retire la réservation d'espace de la sidebar droite
  2492.            ═══════════════════════════════════════════════════════════════════ */
  2493.         body .main-content.right-chat-active{padding-right:0!important}
  2494.         body .main-content{padding-right:0!important}
  2495.         body .right-chat{display:none!important}
  2496.         body .middle-sidebar-bottom .middle-sidebar-left{padding-right:0!important;max-width:none!important;width:100%!important}
  2497.         body .middle-sidebar-bottom{max-width:none!important}
  2498.         .wr{margin:-15px -15px 0;background:var(--wr-bg);color:var(--wr-ink);font-family:inherit;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
  2499.         @media(max-width:991px){.wr{margin:0 -15px}}
  2500.         .wr *{box-sizing:border-box}
  2501.         .wr a{color:inherit;text-decoration:none}
  2502.         /* ═══════════════════════════════════════════════════════════════════
  2503.            SECTIONS GENERIC — Fond UNIFIÉ partout (pas d'alternance)
  2504.            ═══════════════════════════════════════════════════════════════════ */
  2505.         .wr-section{padding:80px 32px;background:var(--wr-bg);position:relative}
  2506.         .wr-section--tight{padding:48px 32px}
  2507.         @media(max-width:768px){.wr-section{padding:56px 20px}.wr-section--tight{padding:36px 20px}}
  2508.         /* Filet décoratif au lieu d'un changement de couleur */
  2509.         .wr-section + .wr-section::before{
  2510.             content:\"\";
  2511.             position:absolute;top:0;left:50%;transform:translateX(-50%);
  2512.             width:80px;height:1px;
  2513.             background:linear-gradient(90deg,transparent,var(--wr-line-2),transparent);
  2514.         }
  2515.         .wr-container{max-width:1200px;margin:0 auto;position:relative}
  2516.         /* ═══ Eyebrow ═══ */
  2517.         .wr-eyebrow{
  2518.             display:inline-flex;align-items:center;gap:8px;
  2519.             padding:6px 14px;border-radius:100px;
  2520.             background:var(--wr-violet-soft);
  2521.             color:var(--wr-violet-dark);
  2522.             font-size:11.5px;font-weight:600;
  2523.             text-transform:uppercase;letter-spacing:.12em;
  2524.             margin-bottom:22px;
  2525.         }
  2526.         .wr-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse 2.4s ease-in-out infinite}
  2527.         @keyframes wrPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}
  2528.         /* ═══ Titres ═══ */
  2529.         .wr-title{
  2530.             font-family:inherit;
  2531.             font-weight:700;
  2532.             font-size:28px;line-height:1.15;letter-spacing:-0.025em;
  2533.             color:var(--wr-ink);
  2534.             margin:0 auto 16px;
  2535.             max-width:1200px;
  2536.         }
  2537.         @media(min-width:768px){.wr-title{font-size:34px}}
  2538.         @media(min-width:1024px){.wr-title{font-size:40px}}
  2539.         .wr-title--sm{font-size:24px}
  2540.         @media(min-width:768px){.wr-title--sm{font-size:30px}}
  2541.         .wr-title em{font-style:normal;font-weight:700;color:var(--wr-violet)}
  2542.         .wr-lede{
  2543.             font-size:17px;line-height:1.55;font-weight:400;
  2544.             color:var(--wr-ink-2);
  2545.             margin:0 auto;max-width:680px;
  2546.         }
  2547.         .wr-section-head{text-align:center;margin-bottom:56px}
  2548.         /* ═══════════════════════════════════════════════════════════════════
  2549.            HERO — Style soft, recherche dashboard, boutons pleins
  2550.            ═══════════════════════════════════════════════════════════════════ */
  2551.         @keyframes wrFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
  2552.         @keyframes wrPulse2{0%{box-shadow:0 0 0 0 rgba(16,185,129,.4)}70%{box-shadow:0 0 0 8px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
  2553.         /* ═══ Reveal au scroll (Intersection Observer ajoute .is-revealed) ═══ */
  2554.         .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
  2555.         .reveal.is-revealed{opacity:1;transform:translateY(0)}
  2556.         .reveal--left{transform:translateX(-32px) translateY(0)}
  2557.         .reveal--left.is-revealed{transform:translateX(0)}
  2558.         .reveal--right{transform:translateX(32px) translateY(0)}
  2559.         .reveal--right.is-revealed{transform:translateX(0)}
  2560.         .reveal--scale{transform:scale(.96);opacity:0}
  2561.         .reveal--scale.is-revealed{transform:scale(1);opacity:1}
  2562.         .reveal[data-reveal-delay=\"1\"]{transition-delay:.08s}
  2563.         .reveal[data-reveal-delay=\"2\"]{transition-delay:.16s}
  2564.         .reveal[data-reveal-delay=\"3\"]{transition-delay:.24s}
  2565.         .reveal[data-reveal-delay=\"4\"]{transition-delay:.32s}
  2566.         @media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}}
  2567.         .hero{
  2568.             position:relative;
  2569.             background:var(--wr-bg);
  2570.             padding:24px 32px 0;
  2571.             overflow:hidden;
  2572.         }
  2573.         @media(max-width:768px){.hero{padding:18px 18px 0}}
  2574.         /* Décor : 2 blobs très flous violet pâle */
  2575.         .hero::before{
  2576.             content:\"\";position:absolute;
  2577.             top:-260px;right:-180px;width:560px;height:560px;
  2578.             background:radial-gradient(circle,rgba(138,99,192,.14) 0%,transparent 65%);
  2579.             pointer-events:none;filter:blur(50px);
  2580.         }
  2581.         .hero::after{
  2582.             content:\"\";position:absolute;
  2583.             top:120px;left:-180px;width:480px;height:480px;
  2584.             background:radial-gradient(circle,rgba(138,99,192,.09) 0%,transparent 65%);
  2585.             pointer-events:none;filter:blur(50px);
  2586.         }
  2587.         .hero-inner{position:relative;z-index:2;max-width:1200px;margin:0 auto;text-align:center}
  2588.         /* ═══ Eyebrow ═══ */
  2589.         .hero-badge{
  2590.             display:inline-flex;align-items:center;gap:8px;
  2591.             padding:7px 16px;border-radius:100px;
  2592.             background:var(--wr-violet-soft);
  2593.             color:var(--wr-violet-dark);
  2594.             font-size:12px;font-weight:600;
  2595.             text-transform:uppercase;letter-spacing:.1em;
  2596.             margin-bottom:10px;
  2597.             opacity:0;transform:translateY(8px);
  2598.             animation:wrFadeUp .8s ease forwards;
  2599.         }
  2600.         .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse2 2s ease infinite}
  2601.         /* ═══ Titre — 57px desktop, plein largeur conteneur ═══ */
  2602.         .hero-title{
  2603.             font-weight:700;
  2604.             font-size:24px;line-height:1.05;letter-spacing:-0.04em;
  2605.             color:var(--wr-ink);
  2606.             margin:0 auto 12px;
  2607.             width:100%;max-width:1200px;
  2608.             opacity:0;transform:translateY(12px);
  2609.             animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) .15s forwards;
  2610.         }
  2611.         @media(min-width:768px){.hero-title{font-size:40px;letter-spacing:-0.045em}}
  2612.         @media(min-width:1100px){.hero-title{font-size:57px;letter-spacing:-0.045em}}
  2613.         .hero-title-accent{
  2614.             color:var(--wr-violet);
  2615.         }
  2616.         .hero-lede{
  2617.             font-size:15px;line-height:1.5;color:var(--wr-ink-2);font-weight:400;
  2618.             margin:0 auto 16px;max-width:680px;
  2619.             opacity:0;animation:wrFadeUp .9s ease .4s forwards;
  2620.         }
  2621.         @media(min-width:768px){.hero-lede{font-size:17px}}
  2622.         .hero-lede-accent{color:var(--wr-violet);font-weight:600}
  2623.         /* ═══ Recherche — pleine largeur (alignée sur la liste 1200px) ═══ */
  2624.         .hero-search-wrap{
  2625.             max-width:1200px;margin:0 auto 12px;
  2626.             opacity:0;animation:wrFadeUp .9s ease .55s forwards;
  2627.             position:relative;z-index:5;
  2628.         }
  2629.         .hero-search{
  2630.             background:var(--wr-card);
  2631.             border-radius:14px;
  2632.             box-shadow:0 0 20px 0 rgba(0,0,0,0.05),0 16px 40px rgba(138,99,192,.06);
  2633.             padding:10px;
  2634.             position:relative;
  2635.         }
  2636.         .hero-search-inner{
  2637.             display:flex;align-items:center;gap:10px;
  2638.             padding:10px 14px;border-radius:10px;
  2639.             background:#F9FAFB;border:1px solid #E5E7EB;
  2640.             transition:border-color .2s,background .2s;
  2641.         }
  2642.         .hero-search-inner:focus-within{
  2643.             border-color:rgba(138,99,192,.4);
  2644.             background:#fff;
  2645.         }
  2646.         .hero-search-icon{color:var(--wr-muted-2);display:flex;flex-shrink:0}
  2647.         .hero-search-icon svg{width:16px;height:16px}
  2648.         .hero-search-input{
  2649.             flex:1;border:0;outline:0;background:transparent;
  2650.             font-size:14.5px;font-family:inherit;color:var(--wr-ink);
  2651.             padding:6px 0;min-width:0;
  2652.         }
  2653.         .hero-search-input::placeholder{color:var(--wr-muted-2)}
  2654.         .hero-search-clear{
  2655.             background:none;border:0;color:var(--wr-muted-2);cursor:pointer;
  2656.             padding:4px;display:none;font-family:inherit;
  2657.             border-radius:6px;transition:background .15s,color .15s;
  2658.         }
  2659.         .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)}
  2660.         .hero-search-clear.is-visible{display:flex;align-items:center}
  2661.         .hero-search-clear svg{width:14px;height:14px}
  2662.         .hero-search-kbd{
  2663.             display:none;align-items:center;
  2664.             padding:3px 8px;background:#fff;border:1px solid #E5E7EB;border-radius:6px;
  2665.             font-size:10.5px;font-weight:600;color:var(--wr-muted);
  2666.             font-family:inherit;letter-spacing:.02em;white-space:nowrap;flex-shrink:0;
  2667.         }
  2668.         .hero-search-inner:focus-within .hero-search-kbd{display:inline-flex}
  2669.         /* ═══ États de la liste de jobs (header, empty, loading) ═══ */
  2670.         .hero-jobs-header{
  2671.             display:flex;align-items:center;justify-content:space-between;gap:10px;
  2672.             padding:14px 22px 10px;
  2673.             border-bottom:1px solid var(--wr-line);
  2674.             margin-bottom:4px;
  2675.         }
  2676.         @media(max-width:540px){.hero-jobs-header{padding:12px 16px 8px}}
  2677.         .hero-jobs-count{
  2678.             font-size:11.5px;color:var(--wr-muted);
  2679.             text-transform:uppercase;letter-spacing:.08em;font-weight:600;
  2680.         }
  2681.         .hero-jobs-count strong{color:var(--wr-violet);font-weight:800;font-size:13px;margin-right:4px}
  2682.         .hero-jobs-link{
  2683.             font-size:11px;font-weight:700;
  2684.             color:var(--wr-violet);
  2685.             text-transform:uppercase;letter-spacing:.08em;
  2686.             text-decoration:none;
  2687.             display:inline-flex;align-items:center;gap:5px;
  2688.             transition:color .15s,transform .15s;
  2689.         }
  2690.         .hero-jobs-link:hover{color:var(--wr-violet-dark);text-decoration:none;transform:translateX(2px)}
  2691.         .hero-jobs-link svg{width:11px;height:11px}
  2692.         .hero-jobs-empty{text-align:center;padding:48px 20px;color:var(--wr-muted)}
  2693.         .hero-jobs-empty-icon{width:48px;height:48px;border-radius:14px;background:var(--wr-violet-soft);color:var(--wr-violet);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px}
  2694.         .hero-jobs-empty-icon svg{width:22px;height:22px}
  2695.         .hero-jobs-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px}
  2696.         .hero-jobs-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)}
  2697.         .hero-jobs-loading{text-align:center;padding:36px 20px;color:var(--wr-muted);font-size:13px;display:flex;align-items:center;justify-content:center;gap:10px}
  2698.         .hero-jobs-spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--wr-violet-soft);border-top-color:var(--wr-violet);animation:wrSpin .7s linear infinite}
  2699.         @keyframes wrSpin{to{transform:rotate(360deg)}}
  2700.         /* ═══ Pills \"Populaire\" sous la recherche ═══ */
  2701.         .hero-popular{
  2702.             display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;
  2703.             margin-bottom:18px;
  2704.             opacity:0;animation:wrFadeUp .9s ease .7s forwards;
  2705.         }
  2706.         .hero-popular-label{
  2707.             font-size:11px;font-weight:600;color:var(--wr-muted);
  2708.             text-transform:uppercase;letter-spacing:.06em;
  2709.             margin-right:4px;
  2710.         }
  2711.         .hero-popular-pill{
  2712.             display:inline-flex;align-items:center;gap:5px;
  2713.             padding:6px 12px;border-radius:100px;
  2714.             background:var(--wr-violet-soft);
  2715.             color:var(--wr-violet);
  2716.             font-size:12.5px;font-weight:500;font-family:inherit;
  2717.             text-decoration:none;cursor:pointer;
  2718.             border:1px solid transparent;
  2719.             transition:background .15s,border-color .15s,transform .15s,color .15s;
  2720.         }
  2721.         .hero-popular-pill:hover{
  2722.             background:#EDE9FE;
  2723.             border-color:rgba(138,99,192,.2);
  2724.             transform:translateY(-1px);
  2725.             color:var(--wr-violet);
  2726.             text-decoration:none;
  2727.         }
  2728.         .hero-popular-pill.is-active{
  2729.             background:var(--wr-violet);color:#fff;border-color:var(--wr-violet);
  2730.         }
  2731.         .hero-popular-pill.is-active:hover{background:var(--wr-violet-dark);color:#fff}
  2732.         .hero-popular-pill-icon{font-size:13px;line-height:1}
  2733.         /* ═══ CTA hero (boutons inscription + connexion pour anonymes) ═══ */
  2734.         .hero-cta{
  2735.             display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  2736.             margin:24px 0 8px;
  2737.             opacity:0;animation:wrFadeUp .9s ease 1.1s forwards;
  2738.         }
  2739.         .hero-cta-btn,
  2740.         .hero-cta-btn:link,
  2741.         .hero-cta-btn:visited,
  2742.         .hero-cta-btn:hover,
  2743.         .hero-cta-btn:focus,
  2744.         .hero-cta-btn:active{
  2745.             color:#fff !important;
  2746.             text-decoration:none !important;
  2747.         }
  2748.         .hero-cta-btn{
  2749.             display:inline-flex;align-items:center;gap:8px;
  2750.             padding:11px 20px;border-radius:11px;
  2751.             font-size:13.5px;font-weight:700;font-family:inherit;
  2752.             line-height:1;
  2753.             background:var(--wr-violet);border:1px solid var(--wr-violet);
  2754.             box-shadow:0 4px 14px rgba(138,99,193,.32);
  2755.             transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;
  2756.         }
  2757.         .hero-cta-btn:hover{
  2758.             background:var(--wr-violet-dark);border-color:var(--wr-violet-dark);
  2759.             transform:translateY(-2px);
  2760.             box-shadow:0 6px 20px rgba(138,99,193,.4);
  2761.         }
  2762.         .hero-cta-btn svg{width:15px;height:15px;flex-shrink:0;stroke:#fff !important;color:#fff !important}
  2763.         .hero-cta-btn span{color:#fff !important}
  2764.         @media(max-width:540px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta-btn{justify-content:center}}
  2765.         /* ═══ Boutons stores — VIOLET PLEIN BLANC ═══ */
  2766.         .hero-stores{
  2767.             display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  2768.             margin-bottom:48px;
  2769.             opacity:0;animation:wrFadeUp .9s ease .85s forwards;
  2770.         }
  2771.         .hero-store-btn{
  2772.             display:inline-flex;align-items:center;gap:10px;
  2773.             padding:13px 24px;border-radius:12px;
  2774.             background:var(--wr-violet);
  2775.             border:0;
  2776.             color:#fff;
  2777.             font-size:14px;font-weight:600;
  2778.             text-decoration:none;
  2779.             transition:background .15s,transform .15s,box-shadow .15s;
  2780.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  2781.         }
  2782.         .hero-store-btn:hover{
  2783.             background:var(--wr-violet-dark);
  2784.             color:#fff;
  2785.             transform:translateY(-2px);
  2786.             box-shadow:0 8px 22px rgba(138,99,192,.4);
  2787.             text-decoration:none;
  2788.         }
  2789.         .hero-store-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px}
  2790.         .hero-store-btn-icon svg{width:18px;height:18px}
  2791.         @media(max-width:540px){.hero-stores{flex-direction:column;align-items:stretch;gap:10px}.hero-store-btn{justify-content:center}}
  2792.         /* ═══════════════════════════════════════════════════════════════════
  2793.            LISTE PAR DÉFAUT SOUS LE HERO (offres récentes)
  2794.            ═══════════════════════════════════════════════════════════════════ */
  2795.         .hero-default-jobs{
  2796.             position:relative;z-index:2;
  2797.             max-width:1200px;margin:0 auto;
  2798.             background:var(--wr-card);
  2799.             border:1px solid var(--wr-line);
  2800.             border-radius:18px;
  2801.             padding:8px 0;
  2802.             box-shadow:var(--wr-shadow);
  2803.             opacity:0;animation:wrFadeUp .9s ease 1s forwards;
  2804.             text-align:left;
  2805.         }
  2806.         .hero-default-job{
  2807.             display:flex;align-items:center;gap:16px;
  2808.             padding:14px 22px;
  2809.             text-decoration:none;color:inherit;
  2810.             border-bottom:1px solid var(--wr-line);
  2811.             transition:background .15s;
  2812.         }
  2813.         .hero-default-job:last-child{border-bottom:0}
  2814.         .hero-default-job:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit}
  2815.         .hero-default-job-logo{
  2816.             width:42px;height:42px;border-radius:11px;flex-shrink:0;
  2817.             display:flex;align-items:center;justify-content:center;
  2818.             font-weight:700;font-size:16px;overflow:hidden;
  2819.         }
  2820.         .hero-default-job-logo img{width:100%;height:100%;object-fit:cover}
  2821.         /* 7 variantes de couleurs cyclées par index */
  2822.         .hero-default-job:nth-child(7n+1) .hero-default-job-logo{background:var(--wr-acc-yellow);color:var(--wr-acc-yellow-fg)}
  2823.         .hero-default-job:nth-child(7n+2) .hero-default-job-logo{background:var(--wr-acc-green);color:var(--wr-acc-green-fg)}
  2824.         .hero-default-job:nth-child(7n+3) .hero-default-job-logo{background:var(--wr-acc-pink);color:var(--wr-acc-pink-fg)}
  2825.         .hero-default-job:nth-child(7n+4) .hero-default-job-logo{background:var(--wr-acc-blue);color:var(--wr-acc-blue-fg)}
  2826.         .hero-default-job:nth-child(7n+5) .hero-default-job-logo{background:var(--wr-acc-orange);color:var(--wr-acc-orange-fg)}
  2827.         .hero-default-job:nth-child(7n+6) .hero-default-job-logo{background:var(--wr-acc-violet);color:var(--wr-acc-violet-fg)}
  2828.         .hero-default-job:nth-child(7n+7) .hero-default-job-logo{background:var(--wr-acc-cyan);color:var(--wr-acc-cyan-fg)}
  2829.         .hero-default-job-info{flex:1;min-width:0}
  2830.         .hero-default-job-title{
  2831.             font-weight:600;font-size:14.5px;color:var(--wr-ink);
  2832.             margin:0 0 2px;line-height:1.3;
  2833.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  2834.         }
  2835.         .hero-default-job-meta{
  2836.             font-size:12.5px;color:var(--wr-muted);margin:0;
  2837.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  2838.             display:flex;align-items:center;gap:8px;
  2839.         }
  2840.         .hero-default-job-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--wr-muted-2);flex-shrink:0}
  2841.         .hero-default-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  2842.         .hero-default-job-arrow svg{width:15px;height:15px}
  2843.         .hero-default-job:hover .hero-default-job-arrow{color:var(--wr-violet);transform:translateX(3px)}
  2844.         @media(max-width:768px){
  2845.             .hero-default-jobs{margin:0 -18px;border-radius:14px}
  2846.             .hero-default-job{padding:12px 16px;gap:12px}
  2847.             .hero-default-job-logo{width:36px;height:36px;font-size:13px}
  2848.             .hero-default-job-title{font-size:13.5px}
  2849.             .hero-default-job-meta{font-size:11.5px;gap:6px;flex-wrap:wrap;white-space:normal}
  2850.         }
  2851.         /* ═══════════════════════════════════════════════════════════════════
  2852.            SECTION : 3 PARCOURS
  2853.            ═══════════════════════════════════════════════════════════════════ */
  2854.         .paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
  2855.         @media(max-width:991px){.paths-grid{grid-template-columns:1fr;gap:14px}}
  2856.         .path-card{
  2857.             position:relative;
  2858.             background:var(--wr-card);
  2859.             border:1px solid var(--wr-line);
  2860.             border-radius:20px;padding:28px;
  2861.             display:flex;flex-direction:column;
  2862.             transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
  2863.             box-shadow:var(--wr-shadow);
  2864.         }
  2865.         .path-card:hover{transform:translateY(-4px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2)}
  2866.         .path-card-illu{
  2867.             width:64px;height:64px;border-radius:16px;
  2868.             background:var(--wr-violet-soft);color:var(--wr-violet);
  2869.             display:flex;align-items:center;justify-content:center;
  2870.             margin-bottom:22px;
  2871.         }
  2872.         .path-card-illu svg{width:30px;height:30px}
  2873.         .path-card-label{
  2874.             display:inline-block;
  2875.             font-size:11px;font-weight:600;
  2876.             color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.1em;
  2877.             margin-bottom:10px;align-self:flex-start;
  2878.         }
  2879.         .path-card-title{
  2880.             font-weight:500;font-size:22px;line-height:1.25;letter-spacing:-0.015em;
  2881.             color:var(--wr-ink);margin:0 0 10px;
  2882.         }
  2883.         .path-card-desc{
  2884.             font-size:14px;line-height:1.6;color:var(--wr-muted);
  2885.             margin:0 0 22px;flex:1;
  2886.         }
  2887.         .path-card-cta{
  2888.             display:inline-flex;align-items:center;justify-content:center;gap:6px;
  2889.             background:var(--wr-violet);color:#fff;
  2890.             padding:12px 18px;border-radius:11px;
  2891.             font-size:13px;font-weight:600;
  2892.             align-self:stretch;
  2893.             transition:background .15s,transform .15s,box-shadow .15s;
  2894.             box-shadow:0 2px 8px rgba(138,99,192,.2);
  2895.         }
  2896.         .path-card-cta:hover{background:var(--wr-violet-dark);color:#fff;text-decoration:none;transform:translateY(-1px);box-shadow:0 4px 12px rgba(138,99,192,.3)}
  2897.         .path-card-cta svg{width:13px;height:13px;transition:transform .15s}
  2898.         .path-card-cta:hover svg{transform:translateX(3px)}
  2899.         /* ═══════════════════════════════════════════════════════════════════
  2900.            COMMENT ÇA MARCHE — Card crème englobante avec 3 sous-cards
  2901.            ═══════════════════════════════════════════════════════════════════ */
  2902.         .how-card{
  2903.             background:#F4ECE1;
  2904.             border-radius:24px;
  2905.             padding:32px 24px;
  2906.             display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
  2907.             position:relative;
  2908.         }
  2909.         @media(max-width:991px){.how-card{grid-template-columns:1fr;gap:8px;padding:24px 16px}}
  2910.         @media(min-width:992px){
  2911.             /* Séparateurs verticaux entre les 3 cellules */
  2912.             .how-card .how-step + .how-step{border-left:1px solid rgba(28,25,22,.08)}
  2913.         }
  2914.         .how-step{
  2915.             display:flex;flex-direction:column;align-items:center;text-align:center;
  2916.             padding:16px 20px;
  2917.             gap:16px;
  2918.         }
  2919.         .how-step-illu{
  2920.             width:100%;max-width:280px;aspect-ratio:1/1;
  2921.             border-radius:16px;
  2922.             background:rgba(255,255,255,.5);
  2923.             display:flex;align-items:center;justify-content:center;
  2924.             margin-bottom:4px;
  2925.             overflow:hidden;
  2926.         }
  2927.         .how-step-illu img{width:100%;height:100%;object-fit:contain;display:block}
  2928.         .how-step-illu svg{width:55%;height:55%;opacity:.85}
  2929.         .how-step-title{
  2930.             font-weight:700;font-size:18px;line-height:1.3;letter-spacing:-0.01em;
  2931.             color:var(--wr-ink);margin:0;
  2932.         }
  2933.         @media(min-width:992px){.how-step-title{font-size:20px}}
  2934.         .how-step-desc{
  2935.             font-size:14px;line-height:1.55;color:var(--wr-ink-2);
  2936.             margin:0;max-width:320px;
  2937.         }
  2938.         /* ═══════════════════════════════════════════════════════════════════
  2939.            FEATURES 01-04 — Splits alternés image/texte avec témoignages
  2940.            ═══════════════════════════════════════════════════════════════════ */
  2941.         .feat-block{
  2942.             display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;
  2943.             margin-bottom:64px;
  2944.         }
  2945.         .feat-block:last-child{margin-bottom:0}
  2946.         @media(max-width:991px){
  2947.             .feat-block{grid-template-columns:1fr;gap:24px;margin-bottom:48px}
  2948.         }
  2949.         /* Alterner : 01 illu droite, 02 illu gauche, 03 illu droite, 04 illu gauche */
  2950.         .feat-block:nth-child(odd) .feat-illu{order:2}
  2951.         .feat-block:nth-child(odd) .feat-content{order:1}
  2952.         .feat-block:nth-child(even) .feat-illu{order:1}
  2953.         .feat-block:nth-child(even) .feat-content{order:2}
  2954.         @media(max-width:991px){
  2955.             .feat-block .feat-illu{order:1}
  2956.             .feat-block .feat-content{order:2}
  2957.         }
  2958.         .feat-illu{
  2959.             background:#F5EDE3;
  2960.             border-radius:20px;
  2961.             aspect-ratio:1/1;
  2962.             display:flex;align-items:center;justify-content:center;
  2963.             color:var(--wr-violet);
  2964.             overflow:hidden;
  2965.             position:relative;
  2966.         }
  2967.         .feat-illu img{width:100%;height:100%;object-fit:contain;display:block}
  2968.         .feat-illu svg{width:50%;height:50%;opacity:.85}
  2969.         .feat-content{display:flex;flex-direction:column;gap:18px}
  2970.         .feat-label{
  2971.             font-size:30px;font-weight:800;
  2972.             color:var(--wr-ink);
  2973.             letter-spacing:-0.02em;
  2974.             margin:0;line-height:1;
  2975.         }
  2976.         .feat-title{
  2977.             font-weight:700;font-size:24px;line-height:1.2;letter-spacing:-0.02em;
  2978.             color:var(--wr-ink);margin:0;
  2979.         }
  2980.         @media(min-width:768px){.feat-title{font-size:28px}}
  2981.         @media(min-width:1100px){.feat-title{font-size:30px}}
  2982.         .feat-desc{
  2983.             display:flex;flex-direction:column;gap:14px;
  2984.         }
  2985.         .feat-desc p{
  2986.             font-size:15px;line-height:1.6;color:var(--wr-ink-2);
  2987.             margin:0;opacity:.85;
  2988.         }
  2989.         @media(min-width:1100px){.feat-desc p{font-size:16px}}
  2990.         .feat-desc strong{color:var(--wr-ink);font-weight:700;opacity:1}
  2991.         .feat-quote{
  2992.             background:var(--wr-card);
  2993.             border:1px solid var(--wr-line);
  2994.             border-radius:14px;
  2995.             padding:18px 20px;
  2996.             display:flex;flex-direction:column;gap:10px;
  2997.             margin-top:8px;
  2998.         }
  2999.         .feat-quote-text{
  3000.             font-size:14px;line-height:1.55;color:var(--wr-ink-2);
  3001.             margin:0;font-style:italic;
  3002.         }
  3003.         .feat-quote-author{
  3004.             display:flex;flex-direction:column;
  3005.         }
  3006.         .feat-quote-name{font-size:13px;font-weight:700;color:var(--wr-ink);margin:0}
  3007.         .feat-quote-role{font-size:12px;color:var(--wr-muted);margin:0}
  3008.         /* ═══════════════════════════════════════════════════════════════════
  3009.            MATCH
  3010.            ═══════════════════════════════════════════════════════════════════ */
  3011.         .match-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center}
  3012.         @media(max-width:991px){.match-grid{grid-template-columns:1fr;gap:40px}}
  3013.         .match-text .wr-title{margin-left:0;text-align:left}
  3014.         .match-text .wr-lede{margin-left:0;text-align:left}
  3015.         .match-text .wr-eyebrow{margin-bottom:20px}
  3016.         .match-features{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:32px}
  3017.         @media(max-width:540px){.match-features{grid-template-columns:1fr}}
  3018.         .match-feature{
  3019.             background:var(--wr-card);border:1px solid var(--wr-line);
  3020.             border-radius:14px;padding:18px;
  3021.             transition:transform .15s,border-color .15s,box-shadow .15s;
  3022.         }
  3023.         .match-feature:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)}
  3024.         .match-feature-icon{
  3025.             width:34px;height:34px;border-radius:10px;
  3026.             background:var(--wr-violet-soft);color:var(--wr-violet);
  3027.             display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px;
  3028.         }
  3029.         .match-feature-icon svg{width:16px;height:16px}
  3030.         .match-feature-title{font-weight:600;font-size:14px;line-height:1.3;color:var(--wr-ink);margin:0 0 5px}
  3031.         .match-feature-desc{font-size:12.5px;line-height:1.5;color:var(--wr-muted);margin:0}
  3032.         .match-visual{position:relative;display:flex;justify-content:center;align-items:center;padding:40px 0}
  3033.         .match-stack{position:relative;width:100%;max-width:340px;height:340px}
  3034.         .match-stack-card{
  3035.             position:absolute;
  3036.             background:var(--wr-card);border:1px solid var(--wr-line);
  3037.             border-radius:16px;padding:14px;
  3038.             display:flex;align-items:center;gap:12px;
  3039.             box-shadow:var(--wr-shadow);width:100%;
  3040.             transition:transform .3s ease,box-shadow .3s ease;
  3041.             cursor:pointer;
  3042.         }
  3043.         .match-stack-card:hover{
  3044.             transform:translateY(-4px) rotate(0deg)!important;
  3045.             box-shadow:0 20px 50px rgba(138,99,192,.22)!important;
  3046.             z-index:10!important;
  3047.         }
  3048.         .match-stack-card:nth-child(1){top:0;transform:rotate(-6deg) translateX(-10px);z-index:1;animation:wrFloat1 6s ease-in-out infinite}
  3049.         .match-stack-card:nth-child(2){top:78px;left:14px;transform:rotate(2deg);z-index:3;box-shadow:0 16px 40px rgba(138,99,192,.18);animation:wrFloat2 6s ease-in-out -2s infinite}
  3050.         .match-stack-card:nth-child(3){top:156px;transform:rotate(-3deg) translateX(8px);z-index:2;animation:wrFloat3 6s ease-in-out -4s infinite}
  3051.         .match-stack-card:nth-child(4){top:234px;left:20px;transform:rotate(4deg);z-index:1;animation:wrFloat4 6s ease-in-out -1s infinite}
  3052.         @keyframes wrFloat1{0%,100%{transform:rotate(-6deg) translate(-10px,0)}50%{transform:rotate(-6deg) translate(-10px,-8px)}}
  3053.         @keyframes wrFloat2{0%,100%{transform:rotate(2deg) translate(0,0)}50%{transform:rotate(2deg) translate(0,-6px)}}
  3054.         @keyframes wrFloat3{0%,100%{transform:rotate(-3deg) translate(8px,0)}50%{transform:rotate(-3deg) translate(8px,-7px)}}
  3055.         @keyframes wrFloat4{0%,100%{transform:rotate(4deg) translate(0,0)}50%{transform:rotate(4deg) translate(0,-5px)}}
  3056.         .match-stack-logo{
  3057.             width:38px;height:38px;border-radius:10px;
  3058.             background:var(--wr-violet-soft);color:var(--wr-violet);
  3059.             display:flex;align-items:center;justify-content:center;
  3060.             font-weight:700;font-size:14px;flex-shrink:0;
  3061.         }
  3062.         .match-stack-info{flex:1;min-width:0}
  3063.         .match-stack-title{font-weight:600;font-size:13px;color:var(--wr-ink);margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
  3064.         .match-stack-meta{font-size:11px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  3065.         .match-stack-heart{
  3066.             width:28px;height:28px;border-radius:50%;
  3067.             background:#FEE2E2;color:#EF4444;
  3068.             display:flex;align-items:center;justify-content:center;flex-shrink:0;
  3069.             animation:wrHeartbeat 1.6s ease-in-out infinite;
  3070.         }
  3071.         .match-stack-card:nth-child(1) .match-stack-heart{animation-delay:0s}
  3072.         .match-stack-card:nth-child(2) .match-stack-heart{animation-delay:.4s}
  3073.         .match-stack-card:nth-child(3) .match-stack-heart{animation-delay:.8s}
  3074.         .match-stack-card:nth-child(4) .match-stack-heart{animation-delay:1.2s}
  3075.         .match-stack-heart svg{width:13px;height:13px;fill:currentColor}
  3076.         @keyframes wrHeartbeat{
  3077.             0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,.4)}
  3078.             10%{transform:scale(1.18);box-shadow:0 0 0 0 rgba(239,68,68,.4)}
  3079.             20%{transform:scale(1)}
  3080.             30%{transform:scale(1.12)}
  3081.             40%{transform:scale(1);box-shadow:0 0 0 10px rgba(239,68,68,0)}
  3082.             100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}
  3083.         }
  3084.         /* ═══════════════════════════════════════════════════════════════════
  3085.            SIGNUP FORM (entre feat 02 et 03)
  3086.            ═══════════════════════════════════════════════════════════════════ */
  3087.         .signup-card{
  3088.             position:relative;
  3089.             max-width:980px;margin:64px auto;
  3090.             background:linear-gradient(135deg, #FFFFFF 0%, #FAF7FF 100%);
  3091.             border:1px solid var(--wr-line);
  3092.             border-radius:32px;
  3093.             padding:48px 40px;
  3094.             box-shadow:0 4px 12px rgba(30,27,46,.04), 0 24px 64px rgba(138,99,192,.1);
  3095.             overflow:hidden;
  3096.         }
  3097.         @media(max-width:768px){.signup-card{padding:32px 22px;border-radius:24px;margin:48px auto}}
  3098.         /* Décor : 2 blobs violet pâle dans les coins */
  3099.         .signup-card::before{
  3100.             content:\"\";position:absolute;
  3101.             top:-120px;right:-120px;width:340px;height:340px;
  3102.             background:radial-gradient(circle,rgba(138,99,192,.12) 0%,transparent 65%);
  3103.             pointer-events:none;filter:blur(40px);
  3104.         }
  3105.         .signup-card::after{
  3106.             content:\"\";position:absolute;
  3107.             bottom:-100px;left:-80px;width:280px;height:280px;
  3108.             background:radial-gradient(circle,rgba(138,99,192,.08) 0%,transparent 65%);
  3109.             pointer-events:none;filter:blur(40px);
  3110.         }
  3111.         .signup-inner{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1.2fr;gap:48px;align-items:center}
  3112.         @media(max-width:880px){.signup-inner{grid-template-columns:1fr;gap:28px}}
  3113.         .signup-text{display:flex;flex-direction:column;gap:14px}
  3114.         .signup-eyebrow{
  3115.             display:inline-flex;align-items:center;gap:8px;
  3116.             padding:7px 14px;border-radius:100px;
  3117.             background:var(--wr-violet-soft);color:var(--wr-violet-dark);
  3118.             font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  3119.             align-self:flex-start;
  3120.         }
  3121.         .signup-title{
  3122.             font-weight:700;font-size:28px;line-height:1.15;letter-spacing:-0.02em;
  3123.             color:var(--wr-ink);margin:0;
  3124.         }
  3125.         @media(min-width:768px){.signup-title{font-size:34px}}
  3126.         .signup-lede{font-size:15px;line-height:1.55;color:var(--wr-ink-2);margin:0;opacity:.85}
  3127.         .signup-perks{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  3128.         .signup-perk{
  3129.             display:inline-flex;align-items:center;gap:6px;
  3130.             padding:6px 12px;border-radius:100px;
  3131.             background:var(--wr-card);border:1px solid var(--wr-line-2);
  3132.             font-size:12px;font-weight:600;color:var(--wr-ink-2);
  3133.         }
  3134.         .signup-perk svg{width:13px;height:13px;color:#10B981;stroke-width:3;flex-shrink:0}
  3135.         .signup-form{
  3136.             background:var(--wr-card);
  3137.             border:1px solid var(--wr-line);
  3138.             border-radius:20px;
  3139.             padding:24px;
  3140.             display:flex;flex-direction:column;gap:12px;
  3141.             box-shadow:0 1px 2px rgba(30,27,46,.03);
  3142.         }
  3143.         .signup-form-error{
  3144.             background:#FEF2F2;border:1px solid #FECACA;
  3145.             color:#991B1B;
  3146.             border-radius:12px;
  3147.             padding:10px 14px;
  3148.             font-size:13px;line-height:1.45;
  3149.             margin:0;
  3150.         }
  3151.         .signup-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  3152.         @media(max-width:540px){.signup-row{grid-template-columns:1fr}}
  3153.         .signup-field{display:flex;flex-direction:column;gap:0}
  3154.         .signup-card .signup-form input[type=\"email\"],
  3155.         .signup-card .signup-form input[type=\"password\"],
  3156.         .signup-card .signup-form input[type=\"text\"]{
  3157.             width:100%;
  3158.             padding:13px 14px;
  3159.             border:1px solid var(--wr-line-2);border-radius:11px;
  3160.             background:#FAFBFD;
  3161.             font-size:14px;font-family:inherit;color:var(--wr-ink);
  3162.             outline:none;
  3163.             transition:border-color .15s,background .15s,box-shadow .15s;
  3164.             box-sizing:border-box;
  3165.         }
  3166.         .signup-card .signup-form input[type=\"email\"]:focus,
  3167.         .signup-card .signup-form input[type=\"password\"]:focus,
  3168.         .signup-card .signup-form input[type=\"text\"]:focus{
  3169.             border-color:var(--wr-violet);background:#fff;
  3170.             box-shadow:0 0 0 3px rgba(138,99,192,.12);
  3171.         }
  3172.         .signup-card .signup-form input::placeholder{color:var(--wr-muted-2)}
  3173.         .signup-terms{
  3174.             display:flex;align-items:flex-start;gap:10px;
  3175.             font-size:12.5px;line-height:1.45;color:var(--wr-muted);
  3176.             margin:4px 0 0;
  3177.         }
  3178.         .signup-card .signup-form input[type=\"checkbox\"]{
  3179.             width:16px;height:16px;flex-shrink:0;margin-top:2px;accent-color:var(--wr-violet);cursor:pointer;
  3180.         }
  3181.         .signup-terms a{color:var(--wr-violet);font-weight:600;text-decoration:underline}
  3182.         .signup-terms a:hover{color:var(--wr-violet-dark)}
  3183.         .signup-recaptcha{margin:4px 0 0}
  3184.         .signup-recaptcha > div{max-width:100%}
  3185.         .signup-submit{
  3186.             width:100%;
  3187.             padding:14px 22px;border-radius:12px;
  3188.             background:var(--wr-violet);color:#fff;border:0;
  3189.             font-size:14.5px;font-weight:700;font-family:inherit;
  3190.             cursor:pointer;
  3191.             display:inline-flex;align-items:center;justify-content:center;gap:8px;
  3192.             box-shadow:0 4px 14px rgba(138,99,192,.32);
  3193.             transition:background .15s,transform .15s,box-shadow .15s;
  3194.             margin-top:6px;
  3195.         }
  3196.         .signup-submit:hover{background:var(--wr-violet-dark);transform:translateY(-1px);box-shadow:0 6px 20px rgba(138,99,192,.4)}
  3197.         .signup-submit svg{width:14px;height:14px;transition:transform .15s}
  3198.         .signup-submit:hover svg{transform:translateX(3px)}
  3199.         .signup-login{
  3200.             text-align:center;font-size:13px;color:var(--wr-muted);margin:6px 0 0;
  3201.         }
  3202.         .signup-login a{color:var(--wr-violet);font-weight:600;text-decoration:none}
  3203.         .signup-login a:hover{color:var(--wr-violet-dark);text-decoration:underline}
  3204.         /* ═══════════════════════════════════════════════════════════════════
  3205.            APPS
  3206.            ═══════════════════════════════════════════════════════════════════ */
  3207.         .apps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
  3208.         @media(max-width:768px){.apps-grid{grid-template-columns:1fr}}
  3209.         .app-card{
  3210.             background:var(--wr-card);border:1px solid var(--wr-line);
  3211.             border-radius:18px;padding:24px;
  3212.             display:flex;flex-direction:column;align-items:flex-start;
  3213.             transition:transform .2s,border-color .2s,box-shadow .2s;
  3214.         }
  3215.         .app-card:hover{transform:translateY(-3px);border-color:var(--wr-violet-2);box-shadow:var(--wr-shadow-hover);color:inherit;text-decoration:none}
  3216.         .app-card-icon{
  3217.             width:48px;height:48px;border-radius:14px;
  3218.             background:var(--wr-violet-soft);color:var(--wr-violet);
  3219.             display:inline-flex;align-items:center;justify-content:center;
  3220.             margin-bottom:18px;
  3221.         }
  3222.         .app-card-icon svg{width:22px;height:22px}
  3223.         .app-card-name{font-weight:500;font-size:18px;letter-spacing:-0.01em;color:var(--wr-ink);margin:0 0 6px}
  3224.         .app-card-desc{font-size:13px;line-height:1.5;color:var(--wr-muted);margin:0 0 16px;flex:1}
  3225.         .app-card-cta{font-size:12px;font-weight:600;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.1em;display:inline-flex;align-items:center;gap:6px}
  3226.         .app-card-cta svg{width:11px;height:11px;transition:transform .15s}
  3227.         .app-card:hover .app-card-cta svg{transform:translateX(3px)}
  3228.         /* ═══════════════════════════════════════════════════════════════════
  3229.            KEYWORDS
  3230.            ═══════════════════════════════════════════════════════════════════ */
  3231.         .keywords-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:1200px;margin:0 auto}
  3232.         .keyword-pill{
  3233.             display:inline-flex;align-items:center;gap:8px;
  3234.             padding:9px 16px;border-radius:100px;
  3235.             background:var(--wr-card);border:1px solid var(--wr-line-2);
  3236.             color:var(--wr-ink-2);
  3237.             font-size:13.5px;font-weight:500;
  3238.             transition:transform .15s,border-color .15s,background .15s,color .15s,box-shadow .15s;
  3239.         }
  3240.         .keyword-pill:hover{transform:translateY(-2px);border-color:var(--wr-violet);background:var(--wr-violet-soft);color:var(--wr-violet-dark);text-decoration:none;box-shadow:0 4px 10px rgba(138,99,192,.12)}
  3241.         .keyword-pill-icon{font-size:14px;line-height:1}
  3242.         /* ═══════════════════════════════════════════════════════════════════
  3243.            OFFRES POPULAIRES
  3244.            ═══════════════════════════════════════════════════════════════════ */
  3245.         .listings-block{margin-bottom:32px}
  3246.         .listings-block:last-child{margin-bottom:0}
  3247.         .listings-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap}
  3248.         .listings-block-title{
  3249.             display:inline-flex;align-items:center;gap:10px;
  3250.             font-weight:500;font-size:18px;letter-spacing:-0.005em;
  3251.             color:var(--wr-ink);margin:0;
  3252.         }
  3253.         .listings-block-icon{font-size:20px;line-height:1}
  3254.         .listings-block-link{
  3255.             display:inline-flex;align-items:center;gap:4px;
  3256.             padding:6px 12px;border-radius:100px;
  3257.             font-size:12px;font-weight:600;
  3258.             color:var(--wr-violet);
  3259.             text-transform:uppercase;letter-spacing:.06em;
  3260.             border:1px solid var(--wr-violet-soft);
  3261.             background:var(--wr-card);
  3262.             transition:background .15s,border-color .15s,transform .15s;
  3263.         }
  3264.         .listings-block-link:hover{background:var(--wr-violet-soft);border-color:var(--wr-violet);text-decoration:none;color:var(--wr-violet-dark);transform:translateX(2px)}
  3265.         .listings-block-link svg{width:11px;height:11px}
  3266.         .listings-jobs{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  3267.         @media(max-width:768px){.listings-jobs{grid-template-columns:1fr}}
  3268.         .listing-job{
  3269.             display:flex;align-items:center;gap:14px;
  3270.             background:var(--wr-card);border:1px solid var(--wr-line);
  3271.             border-radius:14px;padding:12px;
  3272.             transition:transform .15s,border-color .15s,box-shadow .15s;
  3273.         }
  3274.         .listing-job:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow);color:inherit;text-decoration:none}
  3275.         .listing-job-logo{
  3276.             width:42px;height:42px;border-radius:11px;flex-shrink:0;
  3277.             background:var(--wr-violet-soft);color:var(--wr-violet);
  3278.             display:flex;align-items:center;justify-content:center;
  3279.             font-weight:700;font-size:14px;overflow:hidden;
  3280.         }
  3281.         .listing-job-logo img{width:100%;height:100%;object-fit:cover}
  3282.         .listing-job-info{flex:1;min-width:0}
  3283.         .listing-job-title{font-weight:600;font-size:13.5px;color:var(--wr-ink);margin:0 0 2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  3284.         .listing-job-meta{font-size:11.5px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  3285.         .listing-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  3286.         .listing-job-arrow svg{width:14px;height:14px}
  3287.         .listing-job:hover .listing-job-arrow{color:var(--wr-violet);transform:translateX(2px)}
  3288.         /* ═══════════════════════════════════════════════════════════════════
  3289.            ARTICLES — Liste sans miniatures (style identique aux jobs-card)
  3290.            ═══════════════════════════════════════════════════════════════════ */
  3291.         .articles-list{display:flex;flex-direction:column;gap:10px;max-width:1200px;margin:0 auto}
  3292.         .wr-article{
  3293.             background:var(--wr-card);border-radius:14px;padding:14px;
  3294.             box-shadow:0 0 16px 0 rgba(0,0,0,0.04);
  3295.             display:flex;align-items:center;gap:14px;
  3296.             text-decoration:none;color:inherit;
  3297.             transition:transform .15s,box-shadow .2s;
  3298.         }
  3299.         .wr-article:hover{
  3300.             transform:translateY(-1px);
  3301.             box-shadow:0 4px 20px rgba(138,99,192,.1);
  3302.             color:inherit;text-decoration:none;
  3303.         }
  3304.         .wr-article-logo{
  3305.             width:50px;height:50px;border-radius:12px;flex-shrink:0;
  3306.             background:linear-gradient(135deg,#EDE9FE,#DDD6FE);
  3307.             display:flex;align-items:center;justify-content:center;
  3308.             color:var(--wr-violet);overflow:hidden;
  3309.         }
  3310.         .wr-article-logo svg{width:24px;height:24px;opacity:.9}
  3311.         .wr-article-info{flex:1;min-width:0}
  3312.         .wr-article-title{
  3313.             font-size:14px;font-weight:700;color:var(--wr-ink);
  3314.             line-height:1.3;margin:0 0 4px;
  3315.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  3316.         }
  3317.         .wr-article-meta{
  3318.             font-size:12px;color:var(--wr-muted);
  3319.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  3320.             display:flex;align-items:center;gap:8px;margin:0;
  3321.         }
  3322.         .wr-article-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:#D1D5DB;flex-shrink:0}
  3323.         .wr-article-badge{
  3324.             font-size:11px;font-weight:600;
  3325.             color:var(--wr-violet);background:var(--wr-violet-soft);
  3326.             padding:3px 9px;border-radius:100px;
  3327.             white-space:nowrap;flex-shrink:0;
  3328.             text-transform:uppercase;letter-spacing:.04em;
  3329.         }
  3330.         .wr-article-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  3331.         .wr-article:hover .wr-article-arrow{color:var(--wr-violet);transform:translateX(2px)}
  3332.         .wr-article-arrow svg{width:18px;height:18px}
  3333.         @media(max-width:540px){
  3334.             .wr-article{padding:12px;gap:10px}
  3335.             .wr-article-logo{width:42px;height:42px}
  3336.             .wr-article-logo svg{width:20px;height:20px}
  3337.             .wr-article-title{font-size:13px}
  3338.             .wr-article-meta{font-size:11px;gap:6px;flex-wrap:wrap;white-space:normal}
  3339.             .wr-article-badge{display:none}
  3340.         }
  3341.         .articles-cta{text-align:center;margin-top:36px}
  3342.         .articles-cta a{
  3343.             display:inline-flex;align-items:center;gap:8px;
  3344.             padding:12px 22px;border-radius:11px;
  3345.             background:var(--wr-violet);color:#fff;
  3346.             font-size:13px;font-weight:600;
  3347.             text-decoration:none;
  3348.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  3349.             transition:background .15s,transform .15s,box-shadow .15s;
  3350.         }
  3351.         .articles-cta a:hover{background:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,192,.4);text-decoration:none;color:#fff}
  3352.         .articles-cta svg{width:12px;height:12px;transition:transform .15s}
  3353.         .articles-cta a:hover svg{transform:translateX(3px)}
  3354.         /* ═══════════════════════════════════════════════════════════════════
  3355.            CTA FINAL — Card violet plein avec eyebrow + 2 sous-cards
  3356.            ═══════════════════════════════════════════════════════════════════ */
  3357.         .final-card{
  3358.             position:relative;
  3359.             background:linear-gradient(135deg,#8A63C0 0%,#9D7BCC 100%);
  3360.             border-radius:28px;
  3361.             padding:48px 40px;
  3362.             color:#fff;overflow:hidden;
  3363.             box-shadow:0 20px 60px -12px rgba(138,99,192,.4);
  3364.         }
  3365.         @media(max-width:768px){.final-card{padding:32px 22px;border-radius:22px}}
  3366.         .final-eyebrow{
  3367.             display:inline-flex;align-items:center;gap:8px;
  3368.             padding:8px 18px;border-radius:100px;
  3369.             background:rgba(255,255,255,.2);
  3370.             color:#fff;
  3371.             font-size:12px;font-weight:700;
  3372.             text-transform:uppercase;letter-spacing:.12em;
  3373.             margin-bottom:20px;
  3374.             backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  3375.         }
  3376.         .final-eyebrow svg{width:13px;height:13px;fill:currentColor}
  3377.         .final-title{
  3378.             font-weight:800;font-size:28px;line-height:1.15;letter-spacing:-0.02em;
  3379.             color:#fff;margin:0 0 36px;
  3380.             max-width:780px;
  3381.         }
  3382.         @media(min-width:768px){.final-title{font-size:38px}}
  3383.         /* Grille 2 sous-cards */
  3384.         .final-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
  3385.         @media(max-width:768px){.final-grid{grid-template-columns:1fr;gap:14px}}
  3386.         .final-sub{
  3387.             background:#fff;
  3388.             border-radius:18px;
  3389.             padding:28px;
  3390.             display:flex;flex-direction:column;
  3391.         }
  3392.         @media(max-width:768px){.final-sub{padding:22px}}
  3393.         .final-sub-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
  3394.         .final-sub-icon{
  3395.             width:44px;height:44px;border-radius:11px;
  3396.             background:var(--wr-violet-soft);color:var(--wr-violet);
  3397.             display:flex;align-items:center;justify-content:center;flex-shrink:0;
  3398.         }
  3399.         .final-sub-icon svg{width:22px;height:22px}
  3400.         .final-sub-label{
  3401.             font-size:12.5px;font-weight:700;
  3402.             color:var(--wr-violet);
  3403.             text-transform:uppercase;letter-spacing:.1em;
  3404.         }
  3405.         .final-sub-title{
  3406.             font-weight:800;font-size:18px;line-height:1.3;letter-spacing:-0.01em;
  3407.             color:var(--wr-ink);margin:0 0 10px;
  3408.         }
  3409.         .final-sub-desc{
  3410.             font-size:14px;line-height:1.55;color:var(--wr-muted);
  3411.             margin:0 0 24px;flex:1;
  3412.         }
  3413.         .final-sub-btn{
  3414.             display:flex;align-items:center;justify-content:center;gap:8px;
  3415.             background:var(--wr-violet);color:#fff;
  3416.             padding:14px 18px;border-radius:11px;
  3417.             font-size:14px;font-weight:700;
  3418.             text-decoration:none;
  3419.             transition:background .15s,transform .15s,box-shadow .15s;
  3420.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  3421.         }
  3422.         .final-sub-btn:hover{
  3423.             background:var(--wr-violet-dark);color:#fff;
  3424.             transform:translateY(-2px);
  3425.             box-shadow:0 6px 18px rgba(138,99,192,.4);
  3426.             text-decoration:none;
  3427.         }
  3428.         .final-sub-btn svg{width:14px;height:14px;transition:transform .15s}
  3429.         .final-sub-btn:hover svg{transform:translateX(3px)}
  3430.     </style>
  3431. {% endblock css %}
  3432. {% block body %}
  3433.     <div class=\"wr\">
  3434.         {# ═══════════════ HERO ═══════════════ #}
  3435.         <section class=\"hero\">
  3436.             <div class=\"hero-inner\">
  3437.             <span class=\"hero-badge\">
  3438.                 <span class=\"hero-badge-dot\"></span>
  3439.                 {{ t.hero_eyebrow }}
  3440.             </span>
  3441.                 <h1 class=\"hero-title\">
  3442.                     <span class=\"hero-title-accent\">{{ t.hero_title_accent }}</span> {{ t.hero_title_post }}<br>
  3443.                     <span class=\"hero-title-accent\">{{ t.hero_title_accent2 }}</span> {{ t.hero_title_2 }}
  3444.                 </h1>
  3445.                 <p class=\"hero-lede\">
  3446.                     {{ t.hero_lede_pre }}
  3447.                     <span class=\"hero-lede-accent\">{{ t.hero_lede_brand }}</span>
  3448.                     {{ t.hero_lede_mid }}
  3449.                     <span class=\"hero-lede-accent\">{{ t.hero_lede_word }}</span>
  3450.                     {{ t.hero_lede_post }}
  3451.                 </p>
  3452.                 {# Pills \"Populaire\" — AU-DESSUS de la recherche, cliquer remplit l'input #}
  3453.                 {% if popularKeywords is defined and popularKeywords|length > 0 %}
  3454.                     <div class=\"hero-popular\">
  3455.                         <span class=\"hero-popular-label\">{{ t.hero_popular_label }}</span>
  3456.                         {% for kw in popularKeywords|slice(0, 5) %}
  3457.                             <button type=\"button\"
  3458.                                     class=\"hero-popular-pill\"
  3459.                                     data-keyword=\"{{ kw.keyword }}\"
  3460.                                     data-label=\"{{ kw.label }}\">
  3461.                                 {% if kw.icon %}<span class=\"hero-popular-pill-icon\">{{ kw.icon|raw }}</span>{% endif %}
  3462.                                 <span>{{ kw.label }}</span>
  3463.                             </button>
  3464.                         {% endfor %}
  3465.                     </div>
  3466.                 {% endif %}
  3467.                 {# Recherche inline AJAX — style dashboard jobs #}
  3468.                 <div class=\"hero-search-wrap\">
  3469.                     <div class=\"hero-search\" id=\"wrHeroSearch\"
  3470.                          data-search-url=\"{% if isFR %}{{ path('locale_api_jobs_search',{'_locale':'fr'}) }}{% else %}{{ path('api_jobs_search') }}{% endif %}\"
  3471.                          data-jobs-list-url=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}\">
  3472.                         <div class=\"hero-search-inner\">
  3473.                         <span class=\"hero-search-icon\">
  3474.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3475.                                 <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"M21 21l-4.35-4.35\"/>
  3476.                             </svg>
  3477.                         </span>
  3478.                             <input type=\"text\" name=\"q\" id=\"wrHeroSearchInput\" class=\"hero-search-input\"
  3479.                                    placeholder=\"{{ t.hero_search_placeholder }}\"
  3480.                                    autocomplete=\"off\" />
  3481.                             <span class=\"hero-search-kbd\">↵ {{ isFR ? 'Entrée' : 'Enter' }}</span>
  3482.                             <button type=\"button\" class=\"hero-search-clear\" id=\"wrHeroSearchClear\" aria-label=\"{{ t.search_clear }}\">
  3483.                                 <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3484.                                     <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>
  3485.                                 </svg>
  3486.                             </button>
  3487.                         </div>
  3488.                     </div>
  3489.                 </div>
  3490.                 {# Liste de jobs — par défaut jobs aléatoires, remplacée par les résultats AJAX #}
  3491.                 {# Le compteur affiche le nombre total d'offres en ligne (toutes langues confondues) #}
  3492.                 {% set _heroCount = 0 %}
  3493.                 <div class=\"hero-default-jobs\" id=\"wrHeroJobsList\">
  3494.                     <div class=\"hero-jobs-header\" id=\"wrHeroJobsHeader\">
  3495.                     <span class=\"hero-jobs-count\" id=\"wrHeroJobsCount\">
  3496.                         <strong>{{ totalJobs ?? 0 }}</strong>{{ t.search_results_count }}
  3497.                     </span>
  3498.                         <a href=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}\" class=\"hero-jobs-link\" id=\"wrHeroJobsLink\">
  3499.                             {{ t.search_view_all }}
  3500.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3501.                                 <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/>
  3502.                             </svg>
  3503.                         </a>
  3504.                     </div>
  3505.                     <div id=\"wrHeroJobsBody\">
  3506.                         {% if randomJobs is defined and randomJobs|length > 0 %}
  3507.                             {% for j in randomJobs %}
  3508.                                 {% if _heroCount < 6 %}
  3509.                                     <a href=\"{% if j.locale == 'fr' %}{{ path('locale_cvs_application_job_show',{'_locale':app.request.locale,'slug':j.slug}) }}{% else %}{{ path('cvs_application_job_show',{'slug':j.slug}) }}{% endif %}\" class=\"hero-default-job\">
  3510.                                         <div class=\"hero-default-job-logo\">
  3511.                                             {% if j.image and j.image.name %}
  3512.                                                 <img src=\"{{ vich_uploader_asset(j, 'imageFile') }}\" alt=\"\">
  3513.                                             {% else %}
  3514.                                                 {{ j.companyName|default('?')|slice(0,1)|upper }}
  3515.                                             {% endif %}
  3516.                                         </div>
  3517.                                         <div class=\"hero-default-job-info\">
  3518.                                             <h3 class=\"hero-default-job-title\">{{ j.jobTitle }}</h3>
  3519.                                             <p class=\"hero-default-job-meta\">
  3520.                                                 {% if j.companyName %}<span>{{ j.companyName }}</span>{% endif %}
  3521.                                                 {% if j.city %}
  3522.                                                     <span class=\"hero-default-job-meta-sep\"></span>
  3523.                                                     <span>{{ j.city }}{% if j.country %}, {{ j.country }}{% endif %}</span>
  3524.                                                 {% endif %}
  3525.                                                 {% if j.employmentType %}
  3526.                                                     <span class=\"hero-default-job-meta-sep\"></span>
  3527.                                                     <span>{{ j.employmentType }}</span>
  3528.                                                 {% endif %}
  3529.                                             </p>
  3530.                                         </div>
  3531.                                         <span class=\"hero-default-job-arrow\">
  3532.                                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg>
  3533.                                         </span>
  3534.                                     </a>
  3535.                                     {% set _heroCount = _heroCount + 1 %}
  3536.                                 {% endif %}
  3537.                             {% endfor %}
  3538.                         {% endif %}
  3539.                     </div>
  3540.                 </div>
  3541.                 {# CTA pour utilisateurs non connectés : Inscription + Connexion #}
  3542.                 {% if app.user is null %}
  3543.                     <div class=\"hero-cta\">
  3544.                         <a href=\"#register\" class=\"hero-cta-btn\">
  3545.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3546.                                 <path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"8.5\" cy=\"7\" r=\"4\"/><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"/><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"/>
  3547.                             </svg>
  3548.                             {{ t.hero_cta_signup }}
  3549.                         </a>
  3550.                         <a href=\"{% if isFR %}{{ path('locale_app_login',{'_locale':'fr'}) }}{% else %}{{ path('app_login') }}{% endif %}\" class=\"hero-cta-btn\">
  3551.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3552.                                 <path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/><polyline points=\"10 17 15 12 10 7\"/><line x1=\"15\" y1=\"12\" x2=\"3\" y2=\"12\"/>
  3553.                             </svg>
  3554.                             {{ t.hero_cta_login }}
  3555.                         </a>
  3556.                     </div>
  3557.                 {% endif %}
  3558.             </div>
  3559.         </section>
  3560.         {# ═══════════════ COMMENT ÇA MARCHE ═══════════════ #}
  3561.         <section class=\"wr-section\">
  3562.             <div class=\"wr-container\">
  3563.                 <div class=\"wr-section-head\">
  3564.                     <h2 class=\"wr-title\">{{ t.how_title }}</h2>
  3565.                 </div>
  3566.                 <div class=\"how-card\">
  3567.                     <div class=\"how-step reveal\" data-reveal-delay=\"1\">
  3568.                         <div class=\"how-step-illu\">
  3569.                             <img src=\"/uploads/rh/mascotte_register.png\" alt=\"{{ t.how1_title }}\" loading=\"lazy\">
  3570.                         </div>
  3571.                         <h3 class=\"how-step-title\">{{ t.how1_title }}</h3>
  3572.                         <p class=\"how-step-desc\">{{ t.how1_desc }}</p>
  3573.                     </div>
  3574.                     <div class=\"how-step reveal\" data-reveal-delay=\"2\">
  3575.                         <div class=\"how-step-illu\">
  3576.                             <img src=\"/uploads/rh/mascotte_upload2.png\" alt=\"{{ t.how2_title }}\" loading=\"lazy\">
  3577.                         </div>
  3578.                         <h3 class=\"how-step-title\">{{ t.how2_title }}</h3>
  3579.                         <p class=\"how-step-desc\">{{ t.how2_desc }}</p>
  3580.                     </div>
  3581.                     <div class=\"how-step reveal\" data-reveal-delay=\"3\">
  3582.                         <div class=\"how-step-illu\">
  3583.                             <img src=\"/uploads/rh/mascotte_reunion.png\" alt=\"{{ t.how3_title }}\" loading=\"lazy\">
  3584.                         </div>
  3585.                         <h3 class=\"how-step-title\">{{ t.how3_title }}</h3>
  3586.                         <p class=\"how-step-desc\">{{ t.how3_desc }}</p>
  3587.                     </div>
  3588.                 </div>
  3589.             </div>
  3590.         </section>
  3591.         {# ═══════════════ FEATURES 01-04 ═══════════════ #}
  3592.         <section class=\"wr-section\">
  3593.             <div class=\"wr-container\">
  3594.                 {# Feature 01 — Filtrage par critères #}
  3595.                 <div class=\"feat-block reveal\">
  3596.                     <div class=\"feat-illu\">
  3597.                         <img src=\"/uploads/rh/mascotte_filtrage3.png\" alt=\"{{ t.feat1_title }}\" loading=\"lazy\">
  3598.                     </div>
  3599.                     <div class=\"feat-content\">
  3600.                         <span class=\"feat-label\">{{ t.feat1_label }}</span>
  3601.                         <h3 class=\"feat-title\">{{ t.feat1_title }}</h3>
  3602.                         <div class=\"feat-desc\">
  3603.                             <p>{{ t.feat1_p1|raw }}</p>
  3604.                             <p>{{ t.feat1_p2|raw }}</p>
  3605.                         </div>
  3606.                         <div class=\"feat-quote\">
  3607.                             <p class=\"feat-quote-text\">{{ t.feat1_quote }}</p>
  3608.                             <div class=\"feat-quote-author\">
  3609.                                 <p class=\"feat-quote-name\">{{ t.feat1_author }}</p>
  3610.                                 <p class=\"feat-quote-role\">{{ t.feat1_role }}</p>
  3611.                             </div>
  3612.                         </div>
  3613.                     </div>
  3614.                 </div>
  3615.                 {# Feature 02 — Optimisation intelligente #}
  3616.                 <div class=\"feat-block reveal\">
  3617.                     <div class=\"feat-illu\">
  3618.                         <img src=\"/uploads/rh/mascotte_upload.png\" alt=\"{{ t.feat2_title }}\" loading=\"lazy\">
  3619.                     </div>
  3620.                     <div class=\"feat-content\">
  3621.                         <span class=\"feat-label\">{{ t.feat2_label }}</span>
  3622.                         <h3 class=\"feat-title\">{{ t.feat2_title }}</h3>
  3623.                         <div class=\"feat-desc\">
  3624.                             <p>{{ t.feat2_p1|raw }}</p>
  3625.                             <p>{{ t.feat2_p2|raw }}</p>
  3626.                         </div>
  3627.                         <div class=\"feat-quote\">
  3628.                             <p class=\"feat-quote-text\">{{ t.feat2_quote }}</p>
  3629.                             <div class=\"feat-quote-author\">
  3630.                                 <p class=\"feat-quote-name\">{{ t.feat2_author }}</p>
  3631.                                 <p class=\"feat-quote-role\">{{ t.feat2_role }}</p>
  3632.                             </div>
  3633.                         </div>
  3634.                     </div>
  3635.                 </div>
  3636.                 {% if app.user is null %}
  3637.                     {# ═════ INSCRIPTION (entre feat 02 et 03) ═════ #}
  3638.                     <div class=\"signup-card reveal reveal--scale\" id=\"register\">
  3639.                         <div class=\"signup-inner\">
  3640.                             <div class=\"signup-text\">
  3641.                             <span class=\"signup-eyebrow\">
  3642.                                 <svg viewBox=\"0 0 24 24\" width=\"13\" height=\"13\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"/><circle cx=\"8.5\" cy=\"7\" r=\"4\"/><line x1=\"20\" y1=\"8\" x2=\"20\" y2=\"14\"/><line x1=\"23\" y1=\"11\" x2=\"17\" y2=\"11\"/></svg>
  3643.                                 {{ t.signup_eyebrow }}
  3644.                             </span>
  3645.                                 <h3 class=\"signup-title\">{{ t.signup_title }}</h3>
  3646.                                 <p class=\"signup-lede\">{{ t.signup_lede }}</p>
  3647.                                 <div class=\"signup-perks\">
  3648.                                 <span class=\"signup-perk\">
  3649.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>
  3650.                                     {{ t.signup_perk1 }}
  3651.                                 </span>
  3652.                                     <span class=\"signup-perk\">
  3653.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>
  3654.                                     {{ t.signup_perk2 }}
  3655.                                 </span>
  3656.                                     <span class=\"signup-perk\">
  3657.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg>
  3658.                                     {{ t.signup_perk3 }}
  3659.                                 </span>
  3660.                                 </div>
  3661.                             </div>
  3662.                             {% if form is defined %}
  3663.                                 {# Cas 1 : le controller passe le formulaire Symfony — rendu via form_widget #}
  3664.                                 {{ form_start(form, {'attr': {'class': 'signup-form', 'novalidate': 'novalidate'}}) }}
  3665.                                 {{ form_errors(form) }}
  3666.                                 {% for message in app.flashes('danger') %}
  3667.                                     <p class=\"signup-form-error\">{{ message }}</p>
  3668.                                 {% endfor %}
  3669.                                 <div class=\"signup-field\">
  3670.                                     {{ form_widget(form.email, {'attr': {'placeholder': t.signup_email_ph}}) }}
  3671.                                 </div>
  3672.                                 <div class=\"signup-row\">
  3673.                                     <div class=\"signup-field\">
  3674.                                         {{ form_widget(form.password.first, {'attr': {'placeholder': t.signup_pass_ph}}) }}
  3675.                                     </div>
  3676.                                     <div class=\"signup-field\">
  3677.                                         {{ form_widget(form.password.second, {'attr': {'placeholder': t.signup_pass2_ph}}) }}
  3678.                                     </div>
  3679.                                 </div>
  3680.                                 <label class=\"signup-terms\">
  3681.                                     {{ form_widget(form.acceptTerm) }}
  3682.                                     <span>
  3683.                                         {{ t.signup_terms_pre }}
  3684.                                         <a href=\"{% if isFR %}/fr/protections-donnees-candidats{% else %}/data-protection-candidates{% endif %}\" target=\"_blank\" rel=\"noopener\">{{ t.signup_terms_link }}</a>.
  3685.                                     </span>
  3686.                                 </label>
  3687.                                 {% if form.recaptcha is defined %}
  3688.                                     <div class=\"signup-recaptcha\">{{ form_widget(form.recaptcha) }}</div>
  3689.                                 {% endif %}
  3690.                                 <button type=\"submit\" class=\"signup-submit\">
  3691.                                     {{ t.signup_btn }}
  3692.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3693.                                 </button>
  3694.                                 {{ form_rest(form) }}
  3695.                                 {{ form_end(form) }}
  3696.                             {% endif %}
  3697.                         </div>
  3698.                     </div>
  3699.                 {% endif %}
  3700.                 {# Feature 03 — Recherche qualifiée #}
  3701.                 <div class=\"feat-block reveal\">
  3702.                     <div class=\"feat-illu\">
  3703.                         <img src=\"/uploads/rh/mascotte_register.png\" alt=\"{{ t.feat3_title }}\" loading=\"lazy\">
  3704.                     </div>
  3705.                     <div class=\"feat-content\">
  3706.                         <span class=\"feat-label\">{{ t.feat3_label }}</span>
  3707.                         <h3 class=\"feat-title\">{{ t.feat3_title }}</h3>
  3708.                         <div class=\"feat-desc\">
  3709.                             <p>{{ t.feat3_p1|raw }}</p>
  3710.                             <p>{{ t.feat3_p2|raw }}</p>
  3711.                         </div>
  3712.                         <div class=\"feat-quote\">
  3713.                             <p class=\"feat-quote-text\">{{ t.feat3_quote }}</p>
  3714.                             <div class=\"feat-quote-author\">
  3715.                                 <p class=\"feat-quote-name\">{{ t.feat3_author }}</p>
  3716.                                 <p class=\"feat-quote-role\">{{ t.feat3_role }}</p>
  3717.                             </div>
  3718.                         </div>
  3719.                     </div>
  3720.                 </div>
  3721.                 {# Feature 04 — Contact direct qualifié #}
  3722.                 <div class=\"feat-block reveal\">
  3723.                     <div class=\"feat-illu\">
  3724.                         <img src=\"/uploads/rh/mascotte_reunion.png\" alt=\"{{ t.feat4_title }}\" loading=\"lazy\">
  3725.                     </div>
  3726.                     <div class=\"feat-content\">
  3727.                         <span class=\"feat-label\">{{ t.feat4_label }}</span>
  3728.                         <h3 class=\"feat-title\">{{ t.feat4_title }}</h3>
  3729.                         <div class=\"feat-desc\">
  3730.                             <p>{{ t.feat4_p1|raw }}</p>
  3731.                             <p>{{ t.feat4_p2|raw }}</p>
  3732.                         </div>
  3733.                         <div class=\"feat-quote\">
  3734.                             <p class=\"feat-quote-text\">{{ t.feat4_quote }}</p>
  3735.                             <div class=\"feat-quote-author\">
  3736.                                 <p class=\"feat-quote-name\">{{ t.feat4_author }}</p>
  3737.                                 <p class=\"feat-quote-role\">{{ t.feat4_role }}</p>
  3738.                             </div>
  3739.                         </div>
  3740.                     </div>
  3741.                 </div>
  3742.             </div>
  3743.         </section>
  3744.         {# ═══════════════ APPS ═══════════════ #}
  3745.         <section class=\"wr-section\">
  3746.             <div class=\"wr-container\">
  3747.                 <div class=\"apps-grid\">
  3748.                     <a href=\"{{ isFR ? (ios_fr|default('#')) : (ios_us|default('#')) }}\" class=\"app-card\">
  3749.                     <span class=\"app-card-icon\">
  3750.                         <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09l.01-.01zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z\"/></svg>
  3751.                     </span>
  3752.                         <h3 class=\"app-card-name\">{{ t.apps_ios }}</h3>
  3753.                         <p class=\"app-card-desc\">{{ t.apps_ios_desc }}</p>
  3754.                         <span class=\"app-card-cta\">App Store
  3755.                         <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3756.                     </span>
  3757.                     </a>
  3758.                     <a href=\"{{ isFR ? (android_fr|default('#')) : (android_us|default('#')) }}\" class=\"app-card\">
  3759.                     <span class=\"app-card-icon\">
  3760.                         <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.523 15.34c-.583 0-1.06-.477-1.06-1.06 0-.582.477-1.06 1.06-1.06.583 0 1.06.478 1.06 1.06 0 .583-.477 1.06-1.06 1.06m-11.046 0c-.583 0-1.06-.477-1.06-1.06 0-.582.477-1.06 1.06-1.06.583 0 1.06.478 1.06 1.06 0 .583-.477 1.06-1.06 1.06m11.427-6.176l2.114-3.66a.439.439 0 0 0-.16-.6.439.439 0 0 0-.6.16l-2.142 3.71a13.07 13.07 0 0 0-5.116-1.034c-1.823 0-3.55.376-5.116 1.034l-2.14-3.71a.439.439 0 1 0-.76.44l2.113 3.66C2.486 10.78.659 13.658.5 17h23c-.16-3.342-1.987-6.22-5.595-7.836\"/></svg>
  3761.                     </span>
  3762.                         <h3 class=\"app-card-name\">{{ t.apps_android }}</h3>
  3763.                         <p class=\"app-card-desc\">{{ t.apps_android_desc }}</p>
  3764.                         <span class=\"app-card-cta\">Google Play
  3765.                         <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3766.                     </span>
  3767.                     </a>
  3768.                     <a href=\"{% if app.request.locale == 'en' %}{{ path('whileresume_homepage') }}{% else %}{{ path('locale_whileresume_homepage',{'_locale':app.request.locale}) }}{% endif %}#register\" class=\"app-card\">
  3769.                         <span class=\"app-card-icon\">
  3770.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"2\" y1=\"12\" x2=\"22\" y2=\"12\"/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"/></svg>
  3771.                         </span>
  3772.                         <h3 class=\"app-card-name\">{{ t.apps_web }}</h3>
  3773.                         <p class=\"app-card-desc\">{{ t.apps_web_desc }}</p>
  3774.                         <span class=\"app-card-cta\">whileresume.com
  3775.                         <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3776.                     </span>
  3777.                     </a>
  3778.                 </div>
  3779.             </div>
  3780.         </section>
  3781.         {# ═══════════════ ARTICLES ═══════════════ #}
  3782.         {% if articles is defined and articles|length > 0 %}
  3783.             <section class=\"wr-section\">
  3784.                 <div class=\"wr-container\">
  3785.                     <div class=\"wr-section-head\">
  3786.                         <h2 class=\"wr-title wr-title--sm\">{{ t.articles_title }}</h2>
  3787.                     </div>
  3788.                     <div class=\"articles-list\">
  3789.                         {% for a in articles|slice(0,6) %}
  3790.                             {% set prefix = \"\" %}
  3791.                             {% set urlA = path('cvs_website_article',{'slug': a.slug}) %}
  3792.                             {% if app.request.locale != default_locale %}
  3793.                                 {% set urlA = path('locale_cvs_website_article',{'_locale':app.request.locale,'slug': a.slug}) %}
  3794.                                 {% set prefix = \"/\" ~ app.request.locale %}
  3795.                             {% endif %}
  3796.                             {% if a.pageslug3 is not empty %}
  3797.                                 {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 ~ '/' ~ a.pageslug3 %}
  3798.                             {% elseif a.pageslug2 is not empty %}
  3799.                                 {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 %}
  3800.                             {% elseif a.pageslug is not empty %}
  3801.                                 {% set urlA = prefix ~ '/' ~ a.pageslug %}
  3802.                             {% endif %}
  3803.                             <a href=\"{{ urlA }}\" class=\"wr-article\">
  3804.                                 <div class=\"wr-article-logo\">
  3805.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3806.                                         <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"/>
  3807.                                         <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"/>
  3808.                                     </svg>
  3809.                                 </div>
  3810.                                 <div class=\"wr-article-info\">
  3811.                                     <h3 class=\"wr-article-title\">{{ a.title }}</h3>
  3812.                                     <div class=\"wr-article-meta\">
  3813.                                         {% if a.subtitle is not empty %}
  3814.                                             <span>{{ a.subtitle|length > 60 ? a.subtitle|slice(0,60) ~ '…' : a.subtitle }}</span>
  3815.                                         {% endif %}
  3816.                                     </div>
  3817.                                 </div>
  3818.                                 <span class=\"wr-article-badge\">{{ t.read_article }}</span>
  3819.                                 <span class=\"wr-article-arrow\">
  3820.                                 <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3821.                                     <polyline points=\"9 18 15 12 9 6\"/>
  3822.                                 </svg>
  3823.                             </span>
  3824.                             </a>
  3825.                         {% endfor %}
  3826.                     </div>
  3827.                     <div class=\"articles-cta\">
  3828.                         <a href=\"{% if isFR %}{{ path('locale_cvs_website_articles',{'_locale':'fr'}) }}{% else %}{{ path('cvs_website_articles') }}{% endif %}\">
  3829.                             {{ t.articles_view_all }}
  3830.                             <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3831.                         </a>
  3832.                     </div>
  3833.                 </div>
  3834.             </section>
  3835.         {% endif %}
  3836.         {# ═══════════════ CTA FINAL ═══════════════ #}
  3837.         {% if app.user is null %}
  3838.             <section class=\"wr-section\">
  3839.                 <div class=\"wr-container\">
  3840.                     <div class=\"final-card\">
  3841.                         <h2 class=\"final-title\">{{ t.final_title }}</h2>
  3842.                         <div class=\"final-grid\">
  3843.                             {# Recruteur #}
  3844.                             <div class=\"final-sub\">
  3845.                                 <div class=\"final-sub-head\">
  3846.                             <span class=\"final-sub-icon\">
  3847.                                 <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3848.                                     <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"/>
  3849.                                     <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"/>
  3850.                                 </svg>
  3851.                             </span>
  3852.                                     <span class=\"final-sub-label\">{{ t.final_recruiter_label }}</span>
  3853.                                 </div>
  3854.                                 <h3 class=\"final-sub-title\">{{ t.final_recruiter_title }}</h3>
  3855.                                 <p class=\"final-sub-desc\">{{ t.final_recruiter_desc }}</p>
  3856.                                 <a href=\"{{ path('whileresume_business_' ~ app.request.locale) }}\" class=\"final-sub-btn\">
  3857.                                     {{ t.final_recruiter }}
  3858.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3859.                                 </a>
  3860.                             </div>
  3861.                             {# Candidat #}
  3862.                             <div class=\"final-sub\">
  3863.                                 <div class=\"final-sub-head\">
  3864.                                 <span class=\"final-sub-icon\">
  3865.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">
  3866.                                         <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/>
  3867.                                         <circle cx=\"12\" cy=\"7\" r=\"4\"/>
  3868.                                     </svg>
  3869.                                 </span>
  3870.                                     <span class=\"final-sub-label\">{{ t.final_candidate_label }}</span>
  3871.                                 </div>
  3872.                                 <h3 class=\"final-sub-title\">{{ t.final_candidate_title }}</h3>
  3873.                                 <p class=\"final-sub-desc\">{{ t.final_candidate_desc }}</p>
  3874.                                 <a href=\"{% if app.request.locale == 'en' %}{{ path('whileresume_homepage') }}{% else %}{{ path('locale_whileresume_homepage',{'_locale':app.request.locale}) }}{% endif %}#register\" class=\"final-sub-btn\">
  3875.                                     {{ t.final_candidate }}
  3876.                                     <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/><polyline points=\"12 5 19 12 12 19\"/></svg>
  3877.                                 </a>
  3878.                             </div>
  3879.                         </div>
  3880.                     </div>
  3881.                 </div>
  3882.             </section>
  3883.         {% endif %}
  3884.     </div>
  3885. {% endblock body %}
  3886. {% block footer_js %}
  3887.     {{ parent() }}
  3888.     <script>
  3889.         (function(){
  3890.             var search   = document.getElementById('wrHeroSearch');
  3891.             var input    = document.getElementById('wrHeroSearchInput');
  3892.             var clearBtn = document.getElementById('wrHeroSearchClear');
  3893.             var jobsBody = document.getElementById('wrHeroJobsBody');
  3894.             var countEl  = document.getElementById('wrHeroJobsCount');
  3895.             var linkEl   = document.getElementById('wrHeroJobsLink');
  3896.             if (!search || !input || !jobsBody) return;
  3897.             var searchUrl   = search.dataset.searchUrl;
  3898.             var jobsListUrl = search.dataset.jobsListUrl;
  3899.             // On garde l'état initial pour pouvoir le restaurer
  3900.             var defaultBodyHtml  = jobsBody.innerHTML;
  3901.             var defaultCountHtml = countEl ? countEl.innerHTML : '';
  3902.             var defaultLinkHref  = linkEl ? linkEl.getAttribute('href') : jobsListUrl;
  3903.             var debounceTimer = null;
  3904.             var currentRequest = null;
  3905.             var lastQuery = '';
  3906.             var T = {
  3907.                 loading:      '{{ t.search_loading|escape('js') }}',
  3908.                 empty:        '{{ t.search_no_results|escape('js') }}',
  3909.                 emptyHint:    '{{ t.search_no_results_hint|escape('js') }}',
  3910.                 count:        '{{ t.search_results_count|escape('js') }}',
  3911.                 viewAll:      '{{ t.search_view_all|escape('js') }}',
  3912.                 view:         '{{ t.search_view_offer|escape('js') }}'
  3913.             };
  3914.             function escHtml(s){
  3915.                 if (s == null) return '';
  3916.                 return String(s).replace(/[&<>\"']/g, function(c){
  3917.                     return {'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c];
  3918.                 });
  3919.             }
  3920.             function setHeaderCount(total){
  3921.                 if (!countEl) return;
  3922.                 countEl.innerHTML = '<strong>' + total + '</strong>' + escHtml(T.count);
  3923.             }
  3924.             function setHeaderLink(href){
  3925.                 if (!linkEl) return;
  3926.                 linkEl.setAttribute('href', href);
  3927.             }
  3928.             function setLoading(){
  3929.                 jobsBody.innerHTML =
  3930.                     '<div class=\"hero-jobs-loading\">' +
  3931.                     '<span class=\"hero-jobs-spinner\"></span>' +
  3932.                     '<span>' + escHtml(T.loading) + '</span>' +
  3933.                     '</div>';
  3934.             }
  3935.             function setEmpty(){
  3936.                 jobsBody.innerHTML =
  3937.                     '<div class=\"hero-jobs-empty\">' +
  3938.                     '<div class=\"hero-jobs-empty-icon\">' +
  3939.                     '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' +
  3940.                     '<circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/>' +
  3941.                     '</svg>' +
  3942.                     '</div>' +
  3943.                     '<p class=\"hero-jobs-empty-title\">' + escHtml(T.empty) + '</p>' +
  3944.                     '<p class=\"hero-jobs-empty-hint\">' + escHtml(T.emptyHint) + '</p>' +
  3945.                     '</div>';
  3946.             }
  3947.             function restoreDefault(){
  3948.                 jobsBody.innerHTML = defaultBodyHtml;
  3949.                 if (countEl) countEl.innerHTML = defaultCountHtml;
  3950.                 if (linkEl) linkEl.setAttribute('href', defaultLinkHref);
  3951.             }
  3952.             function renderResults(payload, query){
  3953.                 var jobs  = (payload && payload.jobs)  || [];
  3954.                 var total = (payload && typeof payload.total === 'number') ? payload.total : jobs.length;
  3955.                 setHeaderCount(total);
  3956.                 setHeaderLink(jobsListUrl + '?q=' + encodeURIComponent(query));
  3957.                 if (!jobs.length){
  3958.                     setEmpty();
  3959.                     return;
  3960.                 }
  3961.                 var html = '';
  3962.                 jobs.slice(0, 6).forEach(function(j){
  3963.                     var title   = j.jobTitle || j.title || '';
  3964.                     var company = j.companyName || j.company || '';
  3965.                     var city    = j.city || '';
  3966.                     var country = j.country || '';
  3967.                     var et      = j.employmentType || '';
  3968.                     var img     = j.image || j.imageUrl || '';
  3969.                     var url     = j.url || (jobsListUrl + '?q=' + encodeURIComponent(query));
  3970.                     var initial = (company || title || '?').charAt(0).toUpperCase();
  3971.                     var location = city + (country ? ', ' + country : '');
  3972.                     var metaParts = [];
  3973.                     if (company)  metaParts.push('<span>' + escHtml(company) + '</span>');
  3974.                     if (location) metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(location) + '</span>');
  3975.                     if (et)       metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(et) + '</span>');
  3976.                     html +=
  3977.                         '<a href=\"' + escHtml(url) + '\" class=\"hero-default-job\">' +
  3978.                         '<div class=\"hero-default-job-logo\">' +
  3979.                         (img
  3980.                             ? '<img src=\"' + escHtml(img) + '\" alt=\"\">'
  3981.                             : escHtml(initial)) +
  3982.                         '</div>' +
  3983.                         '<div class=\"hero-default-job-info\">' +
  3984.                         '<h3 class=\"hero-default-job-title\">' + escHtml(title) + '</h3>' +
  3985.                         '<p class=\"hero-default-job-meta\">' + metaParts.join('') + '</p>' +
  3986.                         '</div>' +
  3987.                         '<span class=\"hero-default-job-arrow\">' +
  3988.                         '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg>' +
  3989.                         '</span>' +
  3990.                         '</a>';
  3991.                 });
  3992.                 jobsBody.innerHTML = html;
  3993.             }
  3994.             function doSearch(query){
  3995.                 if (currentRequest && currentRequest.abort) {
  3996.                     try { currentRequest.abort(); } catch(e){}
  3997.                 }
  3998.                 setLoading();
  3999.                 var url = searchUrl + (searchUrl.indexOf('?') > -1 ? '&' : '?') + 'q=' + encodeURIComponent(query);
  4000.                 var ctrl = (typeof AbortController !== 'undefined') ? new AbortController() : null;
  4001.                 currentRequest = ctrl;
  4002.                 fetch(url, { headers: { 'Accept': 'application/json' }, signal: ctrl ? ctrl.signal : undefined })
  4003.                     .then(function(r){ return r.ok ? r.json() : Promise.reject(r.status); })
  4004.                     .then(function(data){ renderResults(data, query); })
  4005.                     .catch(function(err){
  4006.                         if (err && err.name === 'AbortError') return;
  4007.                         setEmpty();
  4008.                     });
  4009.             }
  4010.             // Input live (debounce 280ms)
  4011.             input.addEventListener('input', function(){
  4012.                 var q = input.value.trim();
  4013.                 clearBtn.classList.toggle('is-visible', q.length > 0);
  4014.                 if (debounceTimer) clearTimeout(debounceTimer);
  4015.                 if (q.length < 2){
  4016.                     restoreDefault();
  4017.                     lastQuery = '';
  4018.                     return;
  4019.                 }
  4020.                 if (q === lastQuery) return;
  4021.                 debounceTimer = setTimeout(function(){
  4022.                     lastQuery = q;
  4023.                     doSearch(q);
  4024.                 }, 280);
  4025.             });
  4026.             // Enter → page de résultats complète
  4027.             input.addEventListener('keydown', function(e){
  4028.                 if (e.key === 'Enter'){
  4029.                     e.preventDefault();
  4030.                     var q = input.value.trim();
  4031.                     if (!q) return;
  4032.                     window.location.href = jobsListUrl + '?q=' + encodeURIComponent(q);
  4033.                 }
  4034.                 if (e.key === 'Escape'){
  4035.                     input.value = '';
  4036.                     clearBtn.classList.remove('is-visible');
  4037.                     restoreDefault();
  4038.                     lastQuery = '';
  4039.                     input.blur();
  4040.                 }
  4041.             });
  4042.             // Clear
  4043.             clearBtn.addEventListener('click', function(){
  4044.                 input.value = '';
  4045.                 clearBtn.classList.remove('is-visible');
  4046.                 restoreDefault();
  4047.                 lastQuery = '';
  4048.                 input.focus();
  4049.             });
  4050.             // Pills \"Populaire\" — au clic, on remplit l'input et on lance la recherche
  4051.             document.querySelectorAll('.hero-popular-pill').forEach(function(pill){
  4052.                 pill.addEventListener('click', function(){
  4053.                     var keyword = pill.dataset.keyword || pill.dataset.label || '';
  4054.                     if (!keyword) return;
  4055.                     // Visuel actif
  4056.                     document.querySelectorAll('.hero-popular-pill').forEach(function(p){ p.classList.remove('is-active'); });
  4057.                     pill.classList.add('is-active');
  4058.                     input.value = keyword;
  4059.                     clearBtn.classList.add('is-visible');
  4060.                     lastQuery = keyword;
  4061.                     doSearch(keyword);
  4062.                     input.focus();
  4063.                 });
  4064.             });
  4065.         })();
  4066.         /* ═══ Reveal au scroll (Intersection Observer) ═══ */
  4067.         (function(){
  4068.             var els = document.querySelectorAll('.reveal');
  4069.             if (!els.length) return;
  4070.             if (!('IntersectionObserver' in window)){
  4071.                 // Fallback : tout révéler
  4072.                 els.forEach(function(el){ el.classList.add('is-revealed'); });
  4073.                 return;
  4074.             }
  4075.             var io = new IntersectionObserver(function(entries){
  4076.                 entries.forEach(function(entry){
  4077.                     if (entry.isIntersecting){
  4078.                         entry.target.classList.add('is-revealed');
  4079.                         io.unobserve(entry.target);
  4080.                     }
  4081.                 });
  4082.             }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' });
  4083.             els.forEach(function(el){ io.observe(el); });
  4084.         })();
  4085.     </script>
  4086. {% endblock footer_js %}
  4087. ""application/whileresume/website/candidates/homepage.html.twig""/var/www/vhosts/mirtillostudio.fr/b1.mirtillostudio.fr/version-1/templates/application/whileresume/website/candidates/homepage.html.twig");
  4088.     }
  4089. }