<?phpuse Twig\Environment;use Twig\Error\LoaderError;use Twig\Error\RuntimeError;use Twig\Extension\CoreExtension;use Twig\Extension\SandboxExtension;use Twig\Markup;use Twig\Sandbox\SecurityError;use Twig\Sandbox\SecurityNotAllowedTagError;use Twig\Sandbox\SecurityNotAllowedFilterError;use Twig\Sandbox\SecurityNotAllowedFunctionError;use Twig\Source;use Twig\Template;use Twig\TemplateWrapper;/* application/whileresume/website/candidates/landing.html.twig */class __TwigTemplate_10cc8cb044f9600f3bc02fb267163596 extends Template{ private Source $source; /** * @var array<string, Template> */ private array $macros = []; public function __construct(Environment $env) { parent::__construct($env); $this->source = $this->getSourceContext(); $this->blocks = [ 'title' => [$this, 'block_title'], 'description' => [$this, 'block_description'], 'robots' => [$this, 'block_robots'], 'canonical' => [$this, 'block_canonical'], 'css' => [$this, 'block_css'], 'body' => [$this, 'block_body'], 'footer_js' => [$this, 'block_footer_js'], ]; } protected function doGetParent(array $context): bool|string|Template|TemplateWrapper { // line 1 return "application/whileresume/website/layout-social.html.twig"; } protected function doDisplay(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "application/whileresume/website/candidates/landing.html.twig")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "application/whileresume/website/candidates/landing.html.twig")); // line 3 $context["isFR"] = (CoreExtension::getAttribute($this->env, $this->source, 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.', 3, $this->source); })()), "request", [], "any", false, false, false, 3), "locale", [], "any", false, false, false, 3) == "fr"); // line 5 $context["_keys"] = ["hero_search_placeholder", "hero_popular_label", "hero_byline_jobs", "hero_byline_apps", "hero_byline_free", "hero_kbd_enter", "hero_cta_signup", "hero_cta_login", "search_loading", "search_no_results", "search_no_results_hint", "search_results_count", "search_view_all", "search_view_offer", "search_clear", "how_title", "apps_ios", "apps_android", "apps_web", "apps_ios_desc", "apps_android_desc", "apps_web_desc", "articles_title", "articles_view_all", "read_article", "final_title", "final_recruiter_label", "final_recruiter_title", "final_recruiter_desc", "final_candidate_label", "final_candidate_title", "final_candidate_desc", "final_candidate", "final_recruiter"]; // line 18 $context["t"] = []; // line 19 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["_keys"]) || array_key_exists("_keys", $context) ? $context["_keys"] : (function () { throw new RuntimeError('Variable "_keys" does not exist.', 19, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["k"]) { // line 20 $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.', 20, $this->source); })()), [ (string)$context["k"] => $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans(("homepage." . $context["k"]), [], "whr-public")]); } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['k'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 1 $this->parent = $this->load("application/whileresume/website/layout-social.html.twig", 1); yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks)); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); } // line 23 /** * @return iterable<null|scalar|\Stringable> */ public function block_title(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "title")); yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 23, $this->source); })()), "shortTitle", [], "any", false, false, false, 23), "html", null, true); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 24 /** * @return iterable<null|scalar|\Stringable> */ public function block_description(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "description")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "description")); yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 24, $this->source); })()), "shortDescription", [], "any", false, false, false, 24), "html", null, true); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 25 /** * @return iterable<null|scalar|\Stringable> */ public function block_robots(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "robots")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "robots")); yield "index,follow"; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 26 /** * @return iterable<null|scalar|\Stringable> */ public function block_canonical(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "canonical")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "canonical")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 28 /** * @return iterable<null|scalar|\Stringable> */ public function block_css(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "css")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "css")); // line 29 yield " "; yield from $this->yieldParentBlock("css", $context, $blocks); yield " <style> :root{ --wr-bg:#FBFCFE; --wr-bg-2:#F4F6FB; --wr-card:#FFFFFF; --wr-violet:#8A63C1; --wr-violet-2:#A98AD3; --wr-violet-soft:#F2EDFA; --wr-violet-softer:#F8F4FD; --wr-violet-dark:#6B47A6; --wr-ink:#1E1B2E; --wr-ink-2:#374151; --wr-muted:#6B7280; --wr-muted-2:#9CA3AF; --wr-line:#EEF1F7; --wr-line-2:#E5E9F0; --wr-shadow:0 1px 2px rgba(30,27,46,.04),0 4px 16px rgba(30,27,46,.04); --wr-shadow-hover:0 4px 8px rgba(138,99,192,.08),0 12px 32px rgba(138,99,192,.1); --wr-acc-yellow:#FEF3C7; --wr-acc-yellow-fg:#B45309; --wr-acc-green:#D1FAE5; --wr-acc-green-fg:#047857; --wr-acc-pink:#FCE7F3; --wr-acc-pink-fg:#BE185D; --wr-acc-blue:#DBEAFE; --wr-acc-blue-fg:#1E40AF; --wr-acc-orange:#FED7AA; --wr-acc-orange-fg:#C2410C; --wr-acc-violet:#EDE9FE; --wr-acc-violet-fg:#6D28D9; --wr-acc-cyan:#CFFAFE; --wr-acc-cyan-fg:#0E7490; } body .main-content.right-chat-active{padding-right:0!important} body .main-content{padding-right:0!important} body .right-chat{display:none!important} body .middle-sidebar-bottom .middle-sidebar-left{padding-right:0!important;max-width:none!important;width:100%!important} body .middle-sidebar-bottom{max-width:none!important} .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} @media(max-width:991px){.wr{margin:0 -15px}} .wr *{box-sizing:border-box} .wr a{color:inherit;text-decoration:none} .wr-section{padding:80px 32px;background:var(--wr-bg);position:relative} .wr-section--tight{padding:48px 32px} @media(max-width:768px){.wr-section{padding:56px 20px}.wr-section--tight{padding:36px 20px}} .wr-section + .wr-section::before{ content:\"\";position:absolute;top:0;left:50%;transform:translateX(-50%); width:80px;height:1px; background:linear-gradient(90deg,transparent,var(--wr-line-2),transparent); } .wr-container{max-width:1200px;margin:0 auto;position:relative} .wr-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:100px;background:var(--wr-violet-soft);color:var(--wr-violet-dark);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;margin-bottom:22px} .wr-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse 2.4s ease-in-out infinite} @keyframes wrPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}} .wr-title{font-family:inherit !important;font-weight:700 !important;font-size:28px;line-height:1.15;letter-spacing:-0.025em;color:var(--wr-ink) !important;margin:0 auto 16px;max-width:1200px;text-align:center} @media(min-width:768px){.wr-title{font-size:34px}} @media(min-width:1024px){.wr-title{font-size:40px}} .wr-title--sm{font-size:24px} @media(min-width:768px){.wr-title--sm{font-size:30px}} .wr-title em{font-style:normal;font-weight:700 !important;color:var(--wr-violet) !important} .wr-lede{font-size:17px;line-height:1.55;font-weight:400;color:var(--wr-ink-2) !important;margin:0 auto;max-width:680px} .wr-section-head{text-align:center;margin-bottom:56px} @keyframes wrFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}} @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)}} .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)} .reveal.is-revealed{opacity:1;transform:translateY(0)} .reveal--left{transform:translateX(-32px) translateY(0)} .reveal--left.is-revealed{transform:translateX(0)} .reveal--right{transform:translateX(32px) translateY(0)} .reveal--right.is-revealed{transform:translateX(0)} .reveal--scale{transform:scale(.96);opacity:0} .reveal--scale.is-revealed{transform:scale(1);opacity:1} .reveal[data-reveal-delay=\"1\"]{transition-delay:.08s} .reveal[data-reveal-delay=\"2\"]{transition-delay:.16s} .reveal[data-reveal-delay=\"3\"]{transition-delay:.24s} .reveal[data-reveal-delay=\"4\"]{transition-delay:.32s} @media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}} /* ═══ HERO ═══ */ .hero{position:relative;background:var(--wr-bg);padding:24px 32px 0;overflow:hidden} @media(max-width:768px){.hero{padding:18px 18px 0}} .hero::before{content:\"\";position:absolute;top:-260px;right:-180px;width:560px;height:560px;background:radial-gradient(circle,rgba(138,99,192,.14) 0%,transparent 65%);pointer-events:none;filter:blur(50px)} .hero::after{content:\"\";position:absolute;top:120px;left:-180px;width:480px;height:480px;background:radial-gradient(circle,rgba(138,99,192,.09) 0%,transparent 65%);pointer-events:none;filter:blur(50px)} .hero-inner{position:relative;z-index:2;max-width:1200px;margin:0 auto;text-align:center} .hero-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 16px;border-radius:100px;background:var(--wr-violet-soft);color:var(--wr-violet-dark);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px;opacity:0;transform:translateY(8px);animation:wrFadeUp .8s ease forwards} .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse2 2s ease infinite} /* H1 — on force la couleur et la taille pour battre les styles globaux du layout social */ .wr .hero-title{font-family:inherit !important;font-weight:700 !important;font-size:32px;line-height:1.05;letter-spacing:-0.04em;color:var(--wr-ink) !important;margin:0 auto 12px;width:100%;max-width:1200px;opacity:0;transform:translateY(12px);animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) .15s forwards;text-align:center} @media(min-width:768px){.wr .hero-title{font-size:48px;letter-spacing:-0.045em}} @media(min-width:1100px){.wr .hero-title{font-size:57px;letter-spacing:-0.045em}} .wr .hero-title-accent{color:var(--wr-violet) !important;font-weight:700 !important} .wr .hero-lede{font-size:16px;line-height:1.5;color:var(--wr-ink-2) !important;font-weight:400;margin:0 auto 16px;max-width:680px;opacity:0;animation:wrFadeUp .9s ease .4s forwards;text-align:center} @media(min-width:768px){.wr .hero-lede{font-size:18px}} .wr .hero-lede-accent{color:var(--wr-violet) !important;font-weight:600} .hero-search-wrap{max-width:1200px;margin:0 auto 12px;opacity:0;animation:wrFadeUp .9s ease .55s forwards;position:relative;z-index:5} .hero-search{background:var(--wr-card);border-radius:14px;box-shadow:0 0 20px 0 rgba(0,0,0,0.05),0 16px 40px rgba(138,99,192,.06);padding:10px;position:relative} .hero-search-inner{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:#F9FAFB;border:1px solid #E5E7EB;transition:border-color .2s,background .2s} .hero-search-inner:focus-within{border-color:rgba(138,99,192,.4);background:#fff} .hero-search-icon{color:var(--wr-muted-2);display:flex;flex-shrink:0} .hero-search-icon svg{width:16px;height:16px} .hero-search-input{flex:1;border:0;outline:0;background:transparent;font-size:14.5px;font-family:inherit;color:var(--wr-ink);padding:6px 0;min-width:0} .hero-search-input::placeholder{color:var(--wr-muted-2)} .hero-search-clear{background:none;border:0;color:var(--wr-muted-2);cursor:pointer;padding:4px;display:none;font-family:inherit;border-radius:6px;transition:background .15s,color .15s} .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)} .hero-search-clear.is-visible{display:flex;align-items:center} .hero-search-clear svg{width:14px;height:14px} .hero-search-kbd{display:none;align-items:center;padding:3px 8px;background:#fff;border:1px solid #E5E7EB;border-radius:6px;font-size:10.5px;font-weight:600;color:var(--wr-muted);font-family:inherit;letter-spacing:.02em;white-space:nowrap;flex-shrink:0} .hero-search-inner:focus-within .hero-search-kbd{display:inline-flex} .hero-jobs-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 22px 10px;border-bottom:1px solid var(--wr-line);margin-bottom:4px} @media(max-width:540px){.hero-jobs-header{padding:12px 16px 8px}} .hero-jobs-count{font-size:11.5px;color:var(--wr-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600} .hero-jobs-count strong{color:var(--wr-violet);font-weight:800;font-size:13px;margin-right:4px} .hero-jobs-link{font-size:11px;font-weight:700;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.08em;text-decoration:none;display:inline-flex;align-items:center;gap:5px;transition:color .15s,transform .15s} .hero-jobs-link:hover{color:var(--wr-violet-dark);text-decoration:none;transform:translateX(2px)} .hero-jobs-link svg{width:11px;height:11px} .hero-jobs-empty{text-align:center;padding:48px 20px;color:var(--wr-muted)} .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} .hero-jobs-empty-icon svg{width:22px;height:22px} .hero-jobs-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px} .hero-jobs-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)} .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} .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} @keyframes wrSpin{to{transform:rotate(360deg)}} .hero-popular{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-bottom:18px;opacity:0;animation:wrFadeUp .9s ease .7s forwards} .hero-popular-label{font-size:11px;font-weight:600;color:var(--wr-muted);text-transform:uppercase;letter-spacing:.06em;margin-right:4px} .hero-popular-pill{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:100px;background:var(--wr-violet-soft);color:var(--wr-violet);font-size:12.5px;font-weight:500;font-family:inherit;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,transform .15s,color .15s} .hero-popular-pill:hover{background:#EDE9FE;border-color:rgba(138,99,192,.2);transform:translateY(-1px);color:var(--wr-violet);text-decoration:none} .hero-popular-pill.is-active{background:var(--wr-violet);color:#fff;border-color:var(--wr-violet)} .hero-popular-pill.is-active:hover{background:var(--wr-violet-dark);color:#fff} .hero-popular-pill-icon{font-size:13px;line-height:1} .hero-cta{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:24px 0 8px;opacity:0;animation:wrFadeUp .9s ease 1.1s forwards} .hero-cta-btn,.hero-cta-btn:link,.hero-cta-btn:visited,.hero-cta-btn:hover,.hero-cta-btn:focus,.hero-cta-btn:active{color:#fff !important;text-decoration:none !important} .hero-cta-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:11px;font-size:13.5px;font-weight:700;font-family:inherit;line-height:1;background:var(--wr-violet);border:1px solid var(--wr-violet);box-shadow:0 4px 14px rgba(138,99,193,.32);transition:background .15s,border-color .15s,transform .15s,box-shadow .15s} .hero-cta-btn:hover{background:var(--wr-violet-dark);border-color:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 20px rgba(138,99,193,.4)} .hero-cta-btn svg{width:15px;height:15px;flex-shrink:0;stroke:#fff !important;color:#fff !important} .hero-cta-btn span{color:#fff !important} @media(max-width:540px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta-btn{justify-content:center}} .hero-default-jobs{position:relative;z-index:2;max-width:1200px;margin:0 auto;background:var(--wr-card);border:1px solid var(--wr-line);border-radius:18px;padding:8px 0;box-shadow:var(--wr-shadow);opacity:0;animation:wrFadeUp .9s ease 1s forwards;text-align:left} .hero-default-job{display:flex;align-items:center;gap:16px;padding:14px 22px;text-decoration:none;color:inherit;border-bottom:1px solid var(--wr-line);transition:background .15s} .hero-default-job:last-child{border-bottom:0} .hero-default-job:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit} .hero-default-job-logo{width:42px;height:42px;border-radius:11px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;overflow:hidden} .hero-default-job-logo img{width:100%;height:100%;object-fit:cover} .hero-default-job:nth-child(7n+1) .hero-default-job-logo{background:var(--wr-acc-yellow);color:var(--wr-acc-yellow-fg)} .hero-default-job:nth-child(7n+2) .hero-default-job-logo{background:var(--wr-acc-green);color:var(--wr-acc-green-fg)} .hero-default-job:nth-child(7n+3) .hero-default-job-logo{background:var(--wr-acc-pink);color:var(--wr-acc-pink-fg)} .hero-default-job:nth-child(7n+4) .hero-default-job-logo{background:var(--wr-acc-blue);color:var(--wr-acc-blue-fg)} .hero-default-job:nth-child(7n+5) .hero-default-job-logo{background:var(--wr-acc-orange);color:var(--wr-acc-orange-fg)} .hero-default-job:nth-child(7n+6) .hero-default-job-logo{background:var(--wr-acc-violet);color:var(--wr-acc-violet-fg)} .hero-default-job:nth-child(7n+7) .hero-default-job-logo{background:var(--wr-acc-cyan);color:var(--wr-acc-cyan-fg)} .hero-default-job-info{flex:1;min-width:0} .hero-default-job-title{font-weight:600 !important;font-size:14.5px;color:var(--wr-ink) !important;margin:0 0 2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .hero-default-job-meta{font-size:12.5px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px} .hero-default-job-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--wr-muted-2);flex-shrink:0} .hero-default-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .hero-default-job-arrow svg{width:15px;height:15px} .hero-default-job:hover .hero-default-job-arrow{color:var(--wr-violet);transform:translateX(3px)} @media(max-width:768px){.hero-default-jobs{margin:0 -18px;border-radius:14px}.hero-default-job{padding:12px 16px;gap:12px}.hero-default-job-logo{width:36px;height:36px;font-size:13px}.hero-default-job-title{font-size:13.5px}.hero-default-job-meta{font-size:11.5px;gap:6px;flex-wrap:wrap;white-space:normal}} /* ═══ HOW IT WORKS ═══ */ .how-card{background:#F4ECE1;border-radius:24px;padding:32px 24px;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;position:relative} @media(max-width:991px){.how-card{grid-template-columns:1fr;gap:8px;padding:24px 16px}} @media(min-width:992px){.how-card .how-step + .how-step{border-left:1px solid rgba(28,25,22,.08)}} .how-step{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 20px;gap:16px} .how-step-illu{width:100%;max-width:280px;aspect-ratio:1/1;border-radius:16px;background:rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;margin-bottom:4px;overflow:hidden} .how-step-illu img{width:100%;height:100%;object-fit:contain;display:block} .how-step-title{font-weight:700 !important;font-size:18px;line-height:1.3;letter-spacing:-0.01em;color:var(--wr-ink) !important;margin:0} @media(min-width:992px){.how-step-title{font-size:20px}} .how-step-desc{font-size:14px;line-height:1.55;color:var(--wr-ink-2) !important;margin:0;max-width:320px} /* ═══ FEATURES 01-04 ═══ */ .feat-block{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;margin-bottom:64px} .feat-block:last-child{margin-bottom:0} @media(max-width:991px){.feat-block{grid-template-columns:1fr;gap:24px;margin-bottom:48px}} .feat-block:nth-child(odd) .feat-illu{order:2} .feat-block:nth-child(odd) .feat-content{order:1} .feat-block:nth-child(even) .feat-illu{order:1} .feat-block:nth-child(even) .feat-content{order:2} @media(max-width:991px){.feat-block .feat-illu{order:1}.feat-block .feat-content{order:2}} .feat-illu{background:#F5EDE3;border-radius:20px;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;color:var(--wr-violet);overflow:hidden;position:relative} .feat-illu img{width:100%;height:100%;object-fit:contain;display:block} .feat-content{display:flex;flex-direction:column;gap:18px} .feat-label{font-size:30px;font-weight:800 !important;color:var(--wr-ink) !important;letter-spacing:-0.02em;margin:0;line-height:1} .feat-title{font-weight:700 !important;font-size:24px;line-height:1.2;letter-spacing:-0.02em;color:var(--wr-ink) !important;margin:0} @media(min-width:768px){.feat-title{font-size:28px}} @media(min-width:1100px){.feat-title{font-size:30px}} .feat-desc{display:flex;flex-direction:column;gap:14px} .feat-desc p,.feat-desc li,.feat-desc span,.feat-desc div,.feat-desc strong,.feat-desc em{font-size:16px;line-height:1.6;color:var(--wr-ink-2);margin:0;opacity:.85} .feat-desc p{margin:0 0 8px} .feat-desc p:last-child{margin-bottom:0} /* Bloc HTML riche descriptionPage2/3 — forcer 16px sur tout le contenu */ .wr-rich-description{margin-top:18px;text-align:center;color:var(--wr-muted)} .wr-rich-description, .wr-rich-description p, .wr-rich-description li, .wr-rich-description span, .wr-rich-description div, .wr-rich-description strong, .wr-rich-description em, .wr-rich-description a{font-size:16px;line-height:1.6} .wr-rich-description p{margin:0 0 10px} .wr-rich-description p:last-child{margin-bottom:0} .feat-desc strong{color:var(--wr-ink);font-weight:700;opacity:1} .feat-quote{background:var(--wr-card);border:1px solid var(--wr-line);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:10px;margin-top:8px} .feat-quote-text{font-size:14px;line-height:1.55;color:var(--wr-ink-2);margin:0;font-style:italic} .feat-quote-author{display:flex;flex-direction:column} .feat-quote-name{font-size:13px;font-weight:700;color:var(--wr-ink);margin:0} .feat-quote-role{font-size:12px;color:var(--wr-muted);margin:0} /* ═══ APPS ═══ */ .apps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} @media(max-width:768px){.apps-grid{grid-template-columns:1fr}} .app-card{background:var(--wr-card);border:1px solid var(--wr-line);border-radius:18px;padding:24px;display:flex;flex-direction:column;align-items:flex-start;transition:transform .2s,border-color .2s,box-shadow .2s} .app-card:hover{transform:translateY(-3px);border-color:var(--wr-violet-2);box-shadow:var(--wr-shadow-hover);color:inherit;text-decoration:none} .app-card-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:18px} .app-card-icon svg{width:22px;height:22px} .app-card-name{font-weight:500 !important;font-size:18px;letter-spacing:-0.01em;color:var(--wr-ink) !important;margin:0 0 6px} .app-card-desc{font-size:13px;line-height:1.5;color:var(--wr-muted);margin:0 0 16px;flex:1} .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} .app-card-cta svg{width:11px;height:11px;transition:transform .15s} .app-card:hover .app-card-cta svg{transform:translateX(3px)} /* ═══ ARTICLES ═══ */ .articles-list{display:flex;flex-direction:column;gap:10px;max-width:1200px;margin:0 auto} .wr-article{background:var(--wr-card);border-radius:14px;padding:14px;box-shadow:0 0 16px 0 rgba(0,0,0,0.04);display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;transition:transform .15s,box-shadow .2s} .wr-article:hover{transform:translateY(-1px);box-shadow:0 4px 20px rgba(138,99,192,.1);color:inherit;text-decoration:none} .wr-article-logo{width:50px;height:50px;border-radius:12px;flex-shrink:0;background:linear-gradient(135deg,#EDE9FE,#DDD6FE);display:flex;align-items:center;justify-content:center;color:var(--wr-violet);overflow:hidden} .wr-article-logo svg{width:24px;height:24px;opacity:.9} .wr-article-info{flex:1;min-width:0} .wr-article-title{font-size:14px;font-weight:700 !important;color:var(--wr-ink) !important;line-height:1.3;margin:0 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wr-article-meta{font-size:12px;color:var(--wr-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px;margin:0} .wr-article-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:#D1D5DB;flex-shrink:0} .wr-article-badge{font-size:11px;font-weight:600;color:var(--wr-violet);background:var(--wr-violet-soft);padding:3px 9px;border-radius:100px;white-space:nowrap;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em} .wr-article-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .wr-article:hover .wr-article-arrow{color:var(--wr-violet);transform:translateX(2px)} .wr-article-arrow svg{width:18px;height:18px} @media(max-width:540px){.wr-article{padding:12px;gap:10px}.wr-article-logo{width:42px;height:42px}.wr-article-logo svg{width:20px;height:20px}.wr-article-title{font-size:13px}.wr-article-meta{font-size:11px;gap:6px;flex-wrap:wrap;white-space:normal}.wr-article-badge{display:none}} .articles-cta{text-align:center;margin-top:36px} .articles-cta a{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:11px;background:var(--wr-violet);color:#fff;font-size:13px;font-weight:600;text-decoration:none;box-shadow:0 4px 12px rgba(138,99,192,.3);transition:background .15s,transform .15s,box-shadow .15s} .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} .articles-cta svg{width:12px;height:12px;transition:transform .15s} .articles-cta a:hover svg{transform:translateX(3px)} /* ═══ CTA FINAL ═══ */ .final-card{position:relative;background:linear-gradient(135deg,#8A63C0 0%,#9D7BCC 100%);border-radius:28px;padding:48px 40px;color:#fff;overflow:hidden;box-shadow:0 20px 60px -12px rgba(138,99,192,.4)} @media(max-width:768px){.final-card{padding:32px 22px;border-radius:22px}} .final-title{font-weight:800 !important;font-size:28px;line-height:1.15;letter-spacing:-0.02em;color:#fff !important;margin:0 0 36px;max-width:780px} @media(min-width:768px){.final-title{font-size:38px}} .final-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px} @media(max-width:768px){.final-grid{grid-template-columns:1fr;gap:14px}} .final-sub{background:#fff;border-radius:18px;padding:28px;display:flex;flex-direction:column} @media(max-width:768px){.final-sub{padding:22px}} .final-sub-head{display:flex;align-items:center;gap:14px;margin-bottom:18px} .final-sub-icon{width:44px;height:44px;border-radius:11px;background:var(--wr-violet-soft);color:var(--wr-violet);display:flex;align-items:center;justify-content:center;flex-shrink:0} .final-sub-icon svg{width:22px;height:22px} .final-sub-label{font-size:12.5px;font-weight:700;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.1em} .final-sub-title{font-weight:800 !important;font-size:18px;line-height:1.3;letter-spacing:-0.01em;color:var(--wr-ink) !important;margin:0 0 10px} .final-sub-desc{font-size:14px;line-height:1.55;color:var(--wr-muted);margin:0 0 24px;flex:1} .final-sub-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--wr-violet);color:#fff;padding:14px 18px;border-radius:11px;font-size:14px;font-weight:700;text-decoration:none;transition:background .15s,transform .15s,box-shadow .15s;box-shadow:0 4px 12px rgba(138,99,192,.3)} .final-sub-btn:hover{background:var(--wr-violet-dark);color:#fff;transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,192,.4);text-decoration:none} .final-sub-btn svg{width:14px;height:14px;transition:transform .15s} .final-sub-btn:hover svg{transform:translateX(3px)} </style>"; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 303 /** * @return iterable<null|scalar|\Stringable> */ public function block_body(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "body")); // line 304 yield " <div class=\"wr\"> "; // line 307 yield " <section class=\"hero\" style=\"padding-top:60px;\"> <div class=\"hero-inner\"> <h1 class=\"hero-title\">"; // line 310 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 310, $this->source); })()), "titlePage", [], "any", false, false, false, 310); yield "</h1> <p class=\"hero-lede\">"; // line 312 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 312, $this->source); })()), "descriptionPage", [], "any", false, false, false, 312); yield "</p> "; // line 316 yield " "; $context["_firstKeyword"] = ""; // line 317 yield " "; 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.', 317, $this->source); })())) > 0))) { // line 318 yield " "; $context["_firstKw"] = Twig\Extension\CoreExtension::first($this->env->getCharset(), (isset($context["popularKeywords"]) || array_key_exists("popularKeywords", $context) ? $context["popularKeywords"] : (function () { throw new RuntimeError('Variable "popularKeywords" does not exist.', 318, $this->source); })())); // line 319 yield " "; $context["_firstKeyword"] = (((CoreExtension::getAttribute($this->env, $this->source, ($context["_firstKw"] ?? null), "keyword", [], "any", true, true, false, 319) && !(null === CoreExtension::getAttribute($this->env, $this->source, (isset($context["_firstKw"]) || array_key_exists("_firstKw", $context) ? $context["_firstKw"] : (function () { throw new RuntimeError('Variable "_firstKw" does not exist.', 319, $this->source); })()), "keyword", [], "any", false, false, false, 319)))) ? (CoreExtension::getAttribute($this->env, $this->source, (isset($context["_firstKw"]) || array_key_exists("_firstKw", $context) ? $context["_firstKw"] : (function () { throw new RuntimeError('Variable "_firstKw" does not exist.', 319, $this->source); })()), "keyword", [], "any", false, false, false, 319)) : ((((CoreExtension::getAttribute($this->env, $this->source, ($context["_firstKw"] ?? null), "searchKeyword", [], "any", true, true, false, 319) && !(null === CoreExtension::getAttribute($this->env, $this->source, (isset($context["_firstKw"]) || array_key_exists("_firstKw", $context) ? $context["_firstKw"] : (function () { throw new RuntimeError('Variable "_firstKw" does not exist.', 319, $this->source); })()), "searchKeyword", [], "any", false, false, false, 319)))) ? (CoreExtension::getAttribute($this->env, $this->source, (isset($context["_firstKw"]) || array_key_exists("_firstKw", $context) ? $context["_firstKw"] : (function () { throw new RuntimeError('Variable "_firstKw" does not exist.', 319, $this->source); })()), "searchKeyword", [], "any", false, false, false, 319)) : ((((CoreExtension::getAttribute($this->env, $this->source, ($context["_firstKw"] ?? null), "label", [], "any", true, true, false, 319) && !(null === CoreExtension::getAttribute($this->env, $this->source, (isset($context["_firstKw"]) || array_key_exists("_firstKw", $context) ? $context["_firstKw"] : (function () { throw new RuntimeError('Variable "_firstKw" does not exist.', 319, $this->source); })()), "label", [], "any", false, false, false, 319)))) ? (CoreExtension::getAttribute($this->env, $this->source, (isset($context["_firstKw"]) || array_key_exists("_firstKw", $context) ? $context["_firstKw"] : (function () { throw new RuntimeError('Variable "_firstKw" does not exist.', 319, $this->source); })()), "label", [], "any", false, false, false, 319)) : ("")))))); // line 320 yield " <div class=\"hero-popular\"> <span class=\"hero-popular-label\">"; // line 321 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.', 321, $this->source); })()), "hero_popular_label", [], "any", false, false, false, 321), "html", null, true); yield "</span> "; // line 322 $context['_parent'] = $context; $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.', 322, $this->source); })()), 0, 5)); $context['loop'] = [ 'parent' => $context['_parent'], 'index0' => 0, 'index' => 1, 'first' => true, ]; if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) { $length = count($context['_seq']); $context['loop']['revindex0'] = $length - 1; $context['loop']['revindex'] = $length; $context['loop']['length'] = $length; $context['loop']['last'] = 1 === $length; } foreach ($context['_seq'] as $context["_key"] => $context["kw"]) { // line 323 yield " <button type=\"button\" class=\"hero-popular-pill"; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["loop"], "first", [], "any", false, false, false, 323)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield " is-active"; } yield "\" data-keyword=\""; // line 324 yield (((CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "keyword", [], "any", true, true, false, 324) && !(null === CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "keyword", [], "any", false, false, false, 324)))) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "keyword", [], "any", false, false, false, 324), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "searchKeyword", [], "any", false, false, false, 324), "html", null, true))); yield "\" data-label=\""; // line 325 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "label", [], "any", false, false, false, 325), "html", null, true); yield "\"> "; // line 326 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "icon", [], "any", false, false, false, 326)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"hero-popular-pill-icon\">"; yield CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "icon", [], "any", false, false, false, 326); yield "</span>"; } // line 327 yield " <span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "label", [], "any", false, false, false, 327), "html", null, true); yield "</span> </button> "; ++$context['loop']['index0']; ++$context['loop']['index']; $context['loop']['first'] = false; if (isset($context['loop']['revindex0'], $context['loop']['revindex'])) { --$context['loop']['revindex0']; --$context['loop']['revindex']; $context['loop']['last'] = 0 === $context['loop']['revindex0']; } } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['kw'], $context['_parent'], $context['loop']); $context = array_intersect_key($context, $_parent) + $_parent; // line 330 yield " </div> "; } // line 332 yield " "; // line 334 yield " <div class=\"hero-search-wrap\"> <div class=\"hero-search\" id=\"wrHeroSearch\" data-search-url=\""; // line 336 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 336, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_api_jobs_search", ["_locale" => "fr"]); } else { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("api_jobs_search"); } yield "\" data-jobs-list-url=\""; // line 337 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 337, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_jobs_list", ["_locale" => "fr"]); } else { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_jobs_list"); } yield "\"> <div class=\"hero-search-inner\"> <span class=\"hero-search-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"M21 21l-4.35-4.35\"/> </svg> </span> <input type=\"text\" name=\"q\" id=\"wrHeroSearchInput\" class=\"hero-search-input\" placeholder=\""; // line 345 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.', 345, $this->source); })()), "hero_search_placeholder", [], "any", false, false, false, 345), "html", null, true); yield "\" value=\""; // line 346 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_firstKeyword"]) || array_key_exists("_firstKeyword", $context) ? $context["_firstKeyword"] : (function () { throw new RuntimeError('Variable "_firstKeyword" does not exist.', 346, $this->source); })()), "html", null, true); yield "\" autocomplete=\"off\" /> <span class=\"hero-search-kbd\">↵ "; // line 348 yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 348, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Entrée") : ("Enter")); yield "</span> <button type=\"button\" class=\"hero-search-clear\" id=\"wrHeroSearchClear\" aria-label=\""; // line 349 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.', 349, $this->source); })()), "search_clear", [], "any", false, false, false, 349), "html", null, true); yield "\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/> </svg> </button> </div> </div> </div> "; // line 359 yield " "; $context["_heroCount"] = 0; // line 360 yield " "; $context["_heroTotal"] = 0; // line 361 yield " "; if (array_key_exists("popularJobsForVisitor", $context)) { // line 362 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["popularJobsForVisitor"]) || array_key_exists("popularJobsForVisitor", $context) ? $context["popularJobsForVisitor"] : (function () { throw new RuntimeError('Variable "popularJobsForVisitor" does not exist.', 362, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["block"]) { // line 363 yield " "; if (CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", true, true, false, 363)) { $context["_heroTotal"] = ((isset($context["_heroTotal"]) || array_key_exists("_heroTotal", $context) ? $context["_heroTotal"] : (function () { throw new RuntimeError('Variable "_heroTotal" does not exist.', 363, $this->source); })()) + Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", false, false, false, 363))); } // line 364 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['block'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 365 yield " "; } // line 366 yield " <div class=\"hero-default-jobs\" id=\"wrHeroJobsList\"> <div class=\"hero-jobs-header\" id=\"wrHeroJobsHeader\"> <span class=\"hero-jobs-count\" id=\"wrHeroJobsCount\"> <strong>"; // line 370 yield (((isset($context["_heroTotal"]) || array_key_exists("_heroTotal", $context) ? $context["_heroTotal"] : (function () { throw new RuntimeError('Variable "_heroTotal" does not exist.', 370, $this->source); })())) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["_heroTotal"], "html", null, true)) : ((((array_key_exists("totalJobs", $context) && !(null === $context["totalJobs"]))) ? ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["totalJobs"], "html", null, true)) : ("")))); yield "</strong>"; 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.', 370, $this->source); })()), "search_results_count", [], "any", false, false, false, 370), "html", null, true); yield " </span> <a href=\""; // line 372 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 372, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_whileresume_jobs_list", ["_locale" => "fr"]); } else { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_jobs_list"); } yield "\" class=\"hero-jobs-link\" id=\"wrHeroJobsLink\"> "; // line 373 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.', 373, $this->source); })()), "search_view_all", [], "any", false, false, false, 373), "html", null, true); yield " <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> </a> </div> <div id=\"wrHeroJobsBody\"> "; // line 381 if ((array_key_exists("popularJobsForVisitor", $context) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["popularJobsForVisitor"]) || array_key_exists("popularJobsForVisitor", $context) ? $context["popularJobsForVisitor"] : (function () { throw new RuntimeError('Variable "popularJobsForVisitor" does not exist.', 381, $this->source); })())) > 0))) { // line 382 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["popularJobsForVisitor"]) || array_key_exists("popularJobsForVisitor", $context) ? $context["popularJobsForVisitor"] : (function () { throw new RuntimeError('Variable "popularJobsForVisitor" does not exist.', 382, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["block"]) { // line 383 yield " "; if ((CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", true, true, false, 383) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", false, false, false, 383)) > 0))) { // line 384 yield " "; $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", false, false, false, 384)); foreach ($context['_seq'] as $context["_key"] => $context["j"]) { // line 385 yield " "; if (((isset($context["_heroCount"]) || array_key_exists("_heroCount", $context) ? $context["_heroCount"] : (function () { throw new RuntimeError('Variable "_heroCount" does not exist.', 385, $this->source); })()) < 6)) { // line 386 yield " <a href=\"#\" class=\"hero-default-job\"> <div class=\"hero-default-job-logo\"> "; // line 388 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"], "jobTitle", [], "any", true, true, false, 388) && !(null === CoreExtension::getAttribute($this->env, $this->source, $context["j"], "jobTitle", [], "any", false, false, false, 388)))) ? (CoreExtension::getAttribute($this->env, $this->source, $context["j"], "jobTitle", [], "any", false, false, false, 388)) : ("?")), 0, 1)), "html", null, true); yield " </div> <div class=\"hero-default-job-info\"> <h3 class=\"hero-default-job-title\">"; // line 391 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "jobTitle", [], "any", false, false, false, 391), "html", null, true); yield "</h3> <p class=\"hero-default-job-meta\"> "; // line 393 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["j"], "city", [], "any", false, false, false, 393)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "city", [], "any", false, false, false, 393), "html", null, true); yield "</span>"; } // line 394 yield " "; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["j"], "employmentType", [], "any", false, false, false, 394)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 395 yield " <span class=\"hero-default-job-meta-sep\"></span> <span>"; // line 396 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "employmentType", [], "any", false, false, false, 396), "html", null, true); yield "</span> "; } // line 398 yield " </p> </div> <span class=\"hero-default-job-arrow\"> <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> </span> </a> "; // line 404 $context["_heroCount"] = ((isset($context["_heroCount"]) || array_key_exists("_heroCount", $context) ? $context["_heroCount"] : (function () { throw new RuntimeError('Variable "_heroCount" does not exist.', 404, $this->source); })()) + 1); // line 405 yield " "; } // line 406 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['j'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 407 yield " "; } // line 408 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['block'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 409 yield " "; } // line 410 yield " </div> </div> "; // line 414 yield " "; 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.', 414, $this->source); })()), "user", [], "any", false, false, false, 414))) { // line 415 yield " <div class=\"hero-cta\"> <a href=\""; // line 416 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath(("whileresume_resume_" . CoreExtension::getAttribute($this->env, $this->source, 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.', 416, $this->source); })()), "request", [], "any", false, false, false, 416), "locale", [], "any", false, false, false, 416))); yield "\" class=\"hero-cta-btn\"> <svg viewBox=\"0 0 24 24\" 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> "; // line 420 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.', 420, $this->source); })()), "hero_cta_signup", [], "any", false, false, false, 420), "html", null, true); yield " </a> <a href=\""; // line 422 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 422, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_app_login", ["_locale" => "fr"]); } else { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("app_login"); } yield "\" class=\"hero-cta-btn\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <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\"/> </svg> "; // line 426 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.', 426, $this->source); })()), "hero_cta_login", [], "any", false, false, false, 426), "html", null, true); yield " </a> </div> "; } // line 430 yield " "; // line 431 if ((CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 431, $this->source); })()), "descriptionPage2", [], "any", false, false, false, 431) || CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 431, $this->source); })()), "descriptionPage3", [], "any", false, false, false, 431))) { // line 432 yield " <div class=\"wr-rich-description\"> "; // line 433 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 433, $this->source); })()), "descriptionPage2", [], "any", false, false, false, 433)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<div>"; yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 433, $this->source); })()), "descriptionPage2", [], "any", false, false, false, 433); yield "</div>"; } // line 434 yield " "; if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 434, $this->source); })()), "descriptionPage3", [], "any", false, false, false, 434)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<div>"; yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 434, $this->source); })()), "descriptionPage3", [], "any", false, false, false, 434); yield "</div>"; } // line 435 yield " </div> "; } // line 437 yield " </div> </section> "; // line 442 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title\">"; // line 445 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.', 445, $this->source); })()), "how_title", [], "any", false, false, false, 445), "html", null, true); yield "</h2> </div> <div class=\"how-card\"> <div class=\"how-step reveal\" data-reveal-delay=\"1\"> <div class=\"how-step-illu\"> <img src=\"/uploads/rh/mascotte_register.png\" alt=\""; // line 451 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 451, $this->source); })()), "titleWork1", [], "any", false, false, false, 451), "html", null, true); yield "\" loading=\"lazy\"> </div> <h3 class=\"how-step-title\">"; // line 453 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 453, $this->source); })()), "titleWork1", [], "any", false, false, false, 453); yield "</h3> <p class=\"how-step-desc\">"; // line 454 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 454, $this->source); })()), "descriptionWork1", [], "any", false, false, false, 454); yield "</p> </div> <div class=\"how-step reveal\" data-reveal-delay=\"2\"> <div class=\"how-step-illu\"> <img src=\"/uploads/rh/mascotte_upload2.png\" alt=\""; // line 459 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 459, $this->source); })()), "titleWork2", [], "any", false, false, false, 459), "html", null, true); yield "\" loading=\"lazy\"> </div> <h3 class=\"how-step-title\">"; // line 461 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 461, $this->source); })()), "titleWork2", [], "any", false, false, false, 461); yield "</h3> <p class=\"how-step-desc\">"; // line 462 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 462, $this->source); })()), "descriptionWork2", [], "any", false, false, false, 462); yield "</p> </div> <div class=\"how-step reveal\" data-reveal-delay=\"3\"> <div class=\"how-step-illu\"> <img src=\"/uploads/rh/mascotte_reunion.png\" alt=\""; // line 467 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 467, $this->source); })()), "titleWork3", [], "any", false, false, false, 467), "html", null, true); yield "\" loading=\"lazy\"> </div> <h3 class=\"how-step-title\">"; // line 469 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 469, $this->source); })()), "titleWork3", [], "any", false, false, false, 469); yield "</h3> <p class=\"how-step-desc\">"; // line 470 yield CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 470, $this->source); })()), "descriptionWork3", [], "any", false, false, false, 470); yield "</p> </div> </div> </div> </section> "; // line 477 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> "; // line 480 $context["_featImages"] = ["/uploads/rh/mascotte_filtrage3.png", "/uploads/rh/mascotte_upload.png", "/uploads/rh/mascotte_register.png", "/uploads/rh/mascotte_reunion.png"]; // line 486 yield " "; // line 487 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable(range(1, 4)); foreach ($context['_seq'] as $context["_key"] => $context["i"]) { // line 488 yield " "; $context["_label"] = ((CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 488, $this->source); })()), ("labelPresentation" . $context["i"]), [], "any", false, false, false, 488)) ? (CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 488, $this->source); })()), ("labelPresentation" . $context["i"]), [], "any", false, false, false, 488)) : ((("0" . $context["i"]) . "."))); // line 489 yield " "; $context["_title"] = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 489, $this->source); })()), ("titlePresentation" . $context["i"]), [], "any", false, false, false, 489); // line 490 yield " "; $context["_desc"] = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 490, $this->source); })()), ("descriptionPresentation" . $context["i"]), [], "any", false, false, false, 490); // line 491 yield " "; $context["_quote"] = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 491, $this->source); })()), ("citationPresentation" . $context["i"]), [], "any", false, false, false, 491); // line 492 yield " "; $context["_author"] = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 492, $this->source); })()), ("authorPresentation" . $context["i"]), [], "any", false, false, false, 492); // line 493 yield " "; $context["_role"] = CoreExtension::getAttribute($this->env, $this->source, (isset($context["landing"]) || array_key_exists("landing", $context) ? $context["landing"] : (function () { throw new RuntimeError('Variable "landing" does not exist.', 493, $this->source); })()), ("rolePresentation" . $context["i"]), [], "any", false, false, false, 493); // line 494 yield " "; // line 495 if ((((isset($context["_title"]) || array_key_exists("_title", $context) ? $context["_title"] : (function () { throw new RuntimeError('Variable "_title" does not exist.', 495, $this->source); })()) || (isset($context["_desc"]) || array_key_exists("_desc", $context) ? $context["_desc"] : (function () { throw new RuntimeError('Variable "_desc" does not exist.', 495, $this->source); })())) || (isset($context["_quote"]) || array_key_exists("_quote", $context) ? $context["_quote"] : (function () { throw new RuntimeError('Variable "_quote" does not exist.', 495, $this->source); })()))) { // line 496 yield " <div class=\"feat-block reveal\"> <div class=\"feat-illu\"> <img src=\""; // line 498 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["_featImages"]) || array_key_exists("_featImages", $context) ? $context["_featImages"] : (function () { throw new RuntimeError('Variable "_featImages" does not exist.', 498, $this->source); })()), ($context["i"] - 1), [], "array", false, false, false, 498), "html", null, true); yield "\" alt=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_title"]) || array_key_exists("_title", $context) ? $context["_title"] : (function () { throw new RuntimeError('Variable "_title" does not exist.', 498, $this->source); })()), "html", null, true); yield "\" loading=\"lazy\"> </div> <div class=\"feat-content\"> "; // line 501 if ((($tmp = (isset($context["_label"]) || array_key_exists("_label", $context) ? $context["_label"] : (function () { throw new RuntimeError('Variable "_label" does not exist.', 501, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"feat-label\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_label"]) || array_key_exists("_label", $context) ? $context["_label"] : (function () { throw new RuntimeError('Variable "_label" does not exist.', 501, $this->source); })()), "html", null, true); yield "</span>"; } // line 502 yield " "; if ((($tmp = (isset($context["_title"]) || array_key_exists("_title", $context) ? $context["_title"] : (function () { throw new RuntimeError('Variable "_title" does not exist.', 502, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<h3 class=\"feat-title\">"; yield (isset($context["_title"]) || array_key_exists("_title", $context) ? $context["_title"] : (function () { throw new RuntimeError('Variable "_title" does not exist.', 502, $this->source); })()); yield "</h3>"; } // line 503 yield " "; if ((($tmp = (isset($context["_desc"]) || array_key_exists("_desc", $context) ? $context["_desc"] : (function () { throw new RuntimeError('Variable "_desc" does not exist.', 503, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 504 yield " <div class=\"feat-desc\"> <p>"; // line 505 yield (isset($context["_desc"]) || array_key_exists("_desc", $context) ? $context["_desc"] : (function () { throw new RuntimeError('Variable "_desc" does not exist.', 505, $this->source); })()); yield "</p> </div> "; } // line 508 yield " "; if ((($tmp = (isset($context["_quote"]) || array_key_exists("_quote", $context) ? $context["_quote"] : (function () { throw new RuntimeError('Variable "_quote" does not exist.', 508, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 509 yield " <div class=\"feat-quote\"> <p class=\"feat-quote-text\">"; // line 510 yield (isset($context["_quote"]) || array_key_exists("_quote", $context) ? $context["_quote"] : (function () { throw new RuntimeError('Variable "_quote" does not exist.', 510, $this->source); })()); yield "</p> "; // line 511 if (((isset($context["_author"]) || array_key_exists("_author", $context) ? $context["_author"] : (function () { throw new RuntimeError('Variable "_author" does not exist.', 511, $this->source); })()) || (isset($context["_role"]) || array_key_exists("_role", $context) ? $context["_role"] : (function () { throw new RuntimeError('Variable "_role" does not exist.', 511, $this->source); })()))) { // line 512 yield " <div class=\"feat-quote-author\"> "; // line 513 if ((($tmp = (isset($context["_author"]) || array_key_exists("_author", $context) ? $context["_author"] : (function () { throw new RuntimeError('Variable "_author" does not exist.', 513, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<p class=\"feat-quote-name\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_author"]) || array_key_exists("_author", $context) ? $context["_author"] : (function () { throw new RuntimeError('Variable "_author" does not exist.', 513, $this->source); })()), "html", null, true); yield "</p>"; } // line 514 yield " "; if ((($tmp = (isset($context["_role"]) || array_key_exists("_role", $context) ? $context["_role"] : (function () { throw new RuntimeError('Variable "_role" does not exist.', 514, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<p class=\"feat-quote-role\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["_role"]) || array_key_exists("_role", $context) ? $context["_role"] : (function () { throw new RuntimeError('Variable "_role" does not exist.', 514, $this->source); })()), "html", null, true); yield "</p>"; } // line 515 yield " </div> "; } // line 517 yield " </div> "; } // line 519 yield " </div> </div> "; } // line 522 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['i'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 523 yield " </div> </section> "; // line 528 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"apps-grid\"> <a href=\""; // line 531 yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 531, $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.', 531, $this->source); })()), "#")) : ("#")), "html", null, true)) : ($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.', 531, $this->source); })()), "#")) : ("#")), "html", null, true))); yield "\" class=\"app-card\"> <span class=\"app-card-icon\"> <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> </span> <h3 class=\"app-card-name\">"; // line 535 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.', 535, $this->source); })()), "apps_ios", [], "any", false, false, false, 535), "html", null, true); yield "</h3> <p class=\"app-card-desc\">"; // line 536 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.', 536, $this->source); })()), "apps_ios_desc", [], "any", false, false, false, 536), "html", null, true); yield "</p> <span class=\"app-card-cta\">App Store <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> </span> </a> <a href=\""; // line 541 yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 541, $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.', 541, $this->source); })()), "#")) : ("#")), "html", null, true)) : ($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.', 541, $this->source); })()), "#")) : ("#")), "html", null, true))); yield "\" class=\"app-card\"> <span class=\"app-card-icon\"> <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> </span> <h3 class=\"app-card-name\">"; // line 545 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.', 545, $this->source); })()), "apps_android", [], "any", false, false, false, 545), "html", null, true); yield "</h3> <p class=\"app-card-desc\">"; // line 546 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.', 546, $this->source); })()), "apps_android_desc", [], "any", false, false, false, 546), "html", null, true); yield "</p> <span class=\"app-card-cta\">Google Play <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> </span> </a> <a href=\""; // line 551 if ((CoreExtension::getAttribute($this->env, $this->source, 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.', 551, $this->source); })()), "request", [], "any", false, false, false, 551), "locale", [], "any", false, false, false, 551) == "en")) { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("whileresume_homepage"); } else { 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->source, 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.', 551, $this->source); })()), "request", [], "any", false, false, false, 551), "locale", [], "any", false, false, false, 551)]), "html", null, true); } yield "#register\" class=\"app-card\"> <span class=\"app-card-icon\"> <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> </span> <h3 class=\"app-card-name\">"; // line 555 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.', 555, $this->source); })()), "apps_web", [], "any", false, false, false, 555), "html", null, true); yield "</h3> <p class=\"app-card-desc\">"; // line 556 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.', 556, $this->source); })()), "apps_web_desc", [], "any", false, false, false, 556), "html", null, true); yield "</p> <span class=\"app-card-cta\">whileresume.com <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> </span> </a> </div> </div> </section> "; // line 566 yield " "; 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.', 566, $this->source); })())) > 0))) { // line 567 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">"; // line 570 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.', 570, $this->source); })()), "articles_title", [], "any", false, false, false, 570), "html", null, true); yield "</h2> </div> <div class=\"articles-list\"> "; // line 574 $context['_parent'] = $context; $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.', 574, $this->source); })()), 0, 6)); foreach ($context['_seq'] as $context["_key"] => $context["a"]) { // line 575 yield " "; $context["prefix"] = ""; // line 576 yield " "; $context["urlA"] = $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_website_article", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["a"], "slug", [], "any", false, false, false, 576)]); // line 577 yield " "; if ((CoreExtension::getAttribute($this->env, $this->source, 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.', 577, $this->source); })()), "request", [], "any", false, false, false, 577), "locale", [], "any", false, false, false, 577) != (isset($context["default_locale"]) || array_key_exists("default_locale", $context) ? $context["default_locale"] : (function () { throw new RuntimeError('Variable "default_locale" does not exist.', 577, $this->source); })()))) { // line 578 yield " "; $context["urlA"] = $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_website_article", ["_locale" => CoreExtension::getAttribute($this->env, $this->source, 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.', 578, $this->source); })()), "request", [], "any", false, false, false, 578), "locale", [], "any", false, false, false, 578), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["a"], "slug", [], "any", false, false, false, 578)]); // line 579 yield " "; $context["prefix"] = ("/" . CoreExtension::getAttribute($this->env, $this->source, 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.', 579, $this->source); })()), "request", [], "any", false, false, false, 579), "locale", [], "any", false, false, false, 579)); // line 580 yield " "; } // line 581 yield " "; if ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug3", [], "any", false, false, false, 581))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 582 yield " "; $context["urlA"] = (((((((isset($context["prefix"]) || array_key_exists("prefix", $context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.', 582, $this->source); })()) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 582)) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug2", [], "any", false, false, false, 582)) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug3", [], "any", false, false, false, 582)); // line 583 yield " "; } elseif ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug2", [], "any", false, false, false, 583))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 584 yield " "; $context["urlA"] = (((((isset($context["prefix"]) || array_key_exists("prefix", $context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.', 584, $this->source); })()) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 584)) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug2", [], "any", false, false, false, 584)); // line 585 yield " "; } elseif ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 585))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 586 yield " "; $context["urlA"] = (((isset($context["prefix"]) || array_key_exists("prefix", $context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.', 586, $this->source); })()) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 586)); // line 587 yield " "; } // line 588 yield " <a href=\""; // line 589 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.', 589, $this->source); })()), "html", null, true); yield "\" class=\"wr-article\"> <div class=\"wr-article-logo\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"/> <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"/> </svg> </div> <div class=\"wr-article-info\"> <h3 class=\"wr-article-title\">"; // line 597 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "title", [], "any", false, false, false, 597), "html", null, true); yield "</h3> <div class=\"wr-article-meta\"> "; // line 599 if ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "subtitle", [], "any", false, false, false, 599))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 600 yield " <span>"; yield (((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["a"], "subtitle", [], "any", false, false, false, 600)) > 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", false, false, false, 600), 0, 60) . "…"), "html", null, true)) : ($this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "subtitle", [], "any", false, false, false, 600), "html", null, true))); yield "</span> "; } // line 602 yield " </div> </div> <span class=\"wr-article-badge\">"; // line 604 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.', 604, $this->source); })()), "read_article", [], "any", false, false, false, 604), "html", null, true); yield "</span> <span class=\"wr-article-arrow\"> <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> </span> </a> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['a'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 612 yield " </div> <div class=\"articles-cta\"> <a href=\""; // line 615 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 615, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_website_articles", ["_locale" => "fr"]); } else { yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_website_articles"); } yield "\"> "; // line 616 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.', 616, $this->source); })()), "articles_view_all", [], "any", false, false, false, 616), "html", null, true); yield " <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> </a> </div> </div> </section> "; } // line 623 yield " "; // line 625 yield " "; 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.', 625, $this->source); })()), "user", [], "any", false, false, false, 625))) { // line 626 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"final-card\"> <h2 class=\"final-title\">"; // line 630 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.', 630, $this->source); })()), "final_title", [], "any", false, false, false, 630), "html", null, true); yield "</h2> <div class=\"final-grid\"> "; // line 634 yield " <div class=\"final-sub\"> <div class=\"final-sub-head\"> <span class=\"final-sub-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"/> <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"/> </svg> </span> <span class=\"final-sub-label\">"; // line 642 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.', 642, $this->source); })()), "final_recruiter_label", [], "any", false, false, false, 642), "html", null, true); yield "</span> </div> <h3 class=\"final-sub-title\">"; // line 644 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.', 644, $this->source); })()), "final_recruiter_title", [], "any", false, false, false, 644), "html", null, true); yield "</h3> <p class=\"final-sub-desc\">"; // line 645 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.', 645, $this->source); })()), "final_recruiter_desc", [], "any", false, false, false, 645), "html", null, true); yield "</p> <a href=\""; // line 646 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath(("whileresume_business_" . CoreExtension::getAttribute($this->env, $this->source, 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.', 646, $this->source); })()), "request", [], "any", false, false, false, 646), "locale", [], "any", false, false, false, 646))); yield "\" class=\"final-sub-btn\"> "; // line 647 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.', 647, $this->source); })()), "final_recruiter", [], "any", false, false, false, 647), "html", null, true); yield " <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> </a> </div> "; // line 653 yield " <div class=\"final-sub\"> <div class=\"final-sub-head\"> <span class=\"final-sub-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/> <circle cx=\"12\" cy=\"7\" r=\"4\"/> </svg> </span> <span class=\"final-sub-label\">"; // line 661 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.', 661, $this->source); })()), "final_candidate_label", [], "any", false, false, false, 661), "html", null, true); yield "</span> </div> <h3 class=\"final-sub-title\">"; // line 663 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.', 663, $this->source); })()), "final_candidate_title", [], "any", false, false, false, 663), "html", null, true); yield "</h3> <p class=\"final-sub-desc\">"; // line 664 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.', 664, $this->source); })()), "final_candidate_desc", [], "any", false, false, false, 664), "html", null, true); yield "</p> <a href=\""; // line 665 yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath(("whileresume_resume_" . CoreExtension::getAttribute($this->env, $this->source, 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.', 665, $this->source); })()), "request", [], "any", false, false, false, 665), "locale", [], "any", false, false, false, 665))); yield "\" class=\"final-sub-btn\"> "; // line 666 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.', 666, $this->source); })()), "final_candidate", [], "any", false, false, false, 666), "html", null, true); yield " <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> </a> </div> </div> </div> </div> </section> "; } // line 675 yield " </div>"; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 679 /** * @return iterable<null|scalar|\Stringable> */ public function block_footer_js(array $context, array $blocks = []): iterable { $macros = $this->macros; $__internal_5a27a8ba21ca79b61932376b2fa922d2 = $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"]; $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "footer_js")); $__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"]; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "footer_js")); // line 680 yield " "; yield from $this->yieldParentBlock("footer_js", $context, $blocks); yield " <script> (function(){ var search = document.getElementById('wrHeroSearch'); var input = document.getElementById('wrHeroSearchInput'); var clearBtn = document.getElementById('wrHeroSearchClear'); var jobsBody = document.getElementById('wrHeroJobsBody'); var countEl = document.getElementById('wrHeroJobsCount'); var linkEl = document.getElementById('wrHeroJobsLink'); if (!search || !input || !jobsBody) return; var searchUrl = search.dataset.searchUrl; var jobsListUrl = search.dataset.jobsListUrl; var defaultBodyHtml = jobsBody.innerHTML; var defaultCountHtml = countEl ? countEl.innerHTML : ''; var defaultLinkHref = linkEl ? linkEl.getAttribute('href') : jobsListUrl; var debounceTimer = null; var currentRequest = null; var lastQuery = ''; var T = { loading: '"; // line 703 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.', 703, $this->source); })()), "search_loading", [], "any", false, false, false, 703), "js"), "html", null, true); yield "', empty: '"; // line 704 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.', 704, $this->source); })()), "search_no_results", [], "any", false, false, false, 704), "js"), "html", null, true); yield "', emptyHint: '"; // line 705 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.', 705, $this->source); })()), "search_no_results_hint", [], "any", false, false, false, 705), "js"), "html", null, true); yield "', count: '"; // line 706 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.', 706, $this->source); })()), "search_results_count", [], "any", false, false, false, 706), "js"), "html", null, true); yield "', viewAll: '"; // line 707 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.', 707, $this->source); })()), "search_view_all", [], "any", false, false, false, 707), "js"), "html", null, true); yield "', view: '"; // line 708 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.', 708, $this->source); })()), "search_view_offer", [], "any", false, false, false, 708), "js"), "html", null, true); yield "' }; function escHtml(s){ if (s == null) return ''; return String(s).replace(/[&<>\"']/g, function(c){ return {'&':'&','<':'<','>':'>','\"':'"',\"'\":'''}[c]; }); } function setHeaderCount(total){ if (!countEl) return; countEl.innerHTML = '<strong>' + total + '</strong>' + escHtml(T.count); } function setHeaderLink(href){ if (!linkEl) return; linkEl.setAttribute('href', href); } function setLoading(){ jobsBody.innerHTML = '<div class=\"hero-jobs-loading\"><span class=\"hero-jobs-spinner\"></span><span>' + escHtml(T.loading) + '</span></div>'; } function setEmpty(){ jobsBody.innerHTML = '<div class=\"hero-jobs-empty\">' + '<div class=\"hero-jobs-empty-icon\">' + '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' + '<circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/>' + '</svg></div>' + '<p class=\"hero-jobs-empty-title\">' + escHtml(T.empty) + '</p>' + '<p class=\"hero-jobs-empty-hint\">' + escHtml(T.emptyHint) + '</p>' + '</div>'; } function restoreDefault(){ jobsBody.innerHTML = defaultBodyHtml; if (countEl) countEl.innerHTML = defaultCountHtml; if (linkEl) linkEl.setAttribute('href', defaultLinkHref); } function renderResults(payload, query){ var jobs = (payload && payload.jobs) || []; var total = (payload && typeof payload.total === 'number') ? payload.total : jobs.length; setHeaderCount(total); setHeaderLink(jobsListUrl + '?q=' + encodeURIComponent(query)); if (!jobs.length){ setEmpty(); return; } var html = ''; jobs.slice(0, 6).forEach(function(j){ var title = j.jobTitle || j.title || ''; var company = j.companyName || j.company || ''; var city = j.city || ''; var country = j.country || ''; var et = j.employmentType || ''; var img = j.image || j.imageUrl || ''; var url = j.url || (jobsListUrl + '?q=' + encodeURIComponent(query)); var initial = (company || title || '?').charAt(0).toUpperCase(); var location = city + (country ? ', ' + country : ''); var metaParts = []; if (company) metaParts.push('<span>' + escHtml(company) + '</span>'); if (location) metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(location) + '</span>'); if (et) metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(et) + '</span>'); html += '<a href=\"' + escHtml(url) + '\" class=\"hero-default-job\">' + '<div class=\"hero-default-job-logo\">' + (img ? '<img src=\"' + escHtml(img) + '\" alt=\"\">' : escHtml(initial)) + '</div>' + '<div class=\"hero-default-job-info\">' + '<h3 class=\"hero-default-job-title\">' + escHtml(title) + '</h3>' + '<p class=\"hero-default-job-meta\">' + metaParts.join('') + '</p>' + '</div>' + '<span class=\"hero-default-job-arrow\">' + '<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>' + '</span>' + '</a>'; }); jobsBody.innerHTML = html; } function doSearch(query){ if (currentRequest && currentRequest.abort) { try { currentRequest.abort(); } catch(e){} } setLoading(); var url = searchUrl + (searchUrl.indexOf('?') > -1 ? '&' : '?') + 'q=' + encodeURIComponent(query); var ctrl = (typeof AbortController !== 'undefined') ? new AbortController() : null; currentRequest = ctrl; fetch(url, { headers: { 'Accept': 'application/json' }, signal: ctrl ? ctrl.signal : undefined }) .then(function(r){ return r.ok ? r.json() : Promise.reject(r.status); }) .then(function(data){ renderResults(data, query); }) .catch(function(err){ if (err && err.name === 'AbortError') return; setEmpty(); }); } input.addEventListener('input', function(){ var q = input.value.trim(); clearBtn.classList.toggle('is-visible', q.length > 0); if (debounceTimer) clearTimeout(debounceTimer); if (q.length < 2){ restoreDefault(); lastQuery = ''; return; } if (q === lastQuery) return; debounceTimer = setTimeout(function(){ lastQuery = q; doSearch(q); }, 280); }); input.addEventListener('keydown', function(e){ if (e.key === 'Enter'){ e.preventDefault(); var q = input.value.trim(); if (!q) return; window.location.href = jobsListUrl + '?q=' + encodeURIComponent(q); } if (e.key === 'Escape'){ input.value = ''; clearBtn.classList.remove('is-visible'); restoreDefault(); lastQuery = ''; input.blur(); } }); clearBtn.addEventListener('click', function(){ input.value = ''; clearBtn.classList.remove('is-visible'); restoreDefault(); lastQuery = ''; input.focus(); }); document.querySelectorAll('.hero-popular-pill').forEach(function(pill){ pill.addEventListener('click', function(){ var keyword = pill.dataset.keyword || pill.dataset.label || ''; if (!keyword) return; document.querySelectorAll('.hero-popular-pill').forEach(function(p){ p.classList.remove('is-active'); }); pill.classList.add('is-active'); input.value = keyword; clearBtn.classList.add('is-visible'); lastQuery = keyword; doSearch(keyword); input.focus(); }); }); // Si l'input est pré-rempli (1er keyword populaire), on lance la recherche automatiquement var initialQuery = input.value.trim(); if (initialQuery.length >= 2) { clearBtn.classList.add('is-visible'); lastQuery = initialQuery; doSearch(initialQuery); } })(); (function(){ var els = document.querySelectorAll('.reveal'); if (!els.length) return; if (!('IntersectionObserver' in window)){ els.forEach(function(el){ el.classList.add('is-revealed'); }); return; } var io = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ if (entry.isIntersecting){ entry.target.classList.add('is-revealed'); io.unobserve(entry.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' }); els.forEach(function(el){ io.observe(el); }); })(); </script>"; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } /** * @codeCoverageIgnore */ public function getTemplateName(): string { return "application/whileresume/website/candidates/landing.html.twig"; } /** * @codeCoverageIgnore */ public function isTraitable(): bool { return false; } /** * @codeCoverageIgnore */ public function getDebugInfo(): array { return array ( 1408 => 708, 1404 => 707, 1400 => 706, 1396 => 705, 1392 => 704, 1388 => 703, 1361 => 680, 1348 => 679, 1335 => 675, 1323 => 666, 1319 => 665, 1315 => 664, 1311 => 663, 1306 => 661, 1296 => 653, 1288 => 647, 1284 => 646, 1280 => 645, 1276 => 644, 1271 => 642, 1261 => 634, 1255 => 630, 1249 => 626, 1246 => 625, 1243 => 623, 1233 => 616, 1225 => 615, 1220 => 612, 1206 => 604, 1202 => 602, 1196 => 600, 1194 => 599, 1189 => 597, 1178 => 589, 1175 => 588, 1172 => 587, 1169 => 586, 1166 => 585, 1163 => 584, 1160 => 583, 1157 => 582, 1154 => 581, 1151 => 580, 1148 => 579, 1145 => 578, 1142 => 577, 1139 => 576, 1136 => 575, 1132 => 574, 1125 => 570, 1120 => 567, 1117 => 566, 1105 => 556, 1101 => 555, 1090 => 551, 1082 => 546, 1078 => 545, 1071 => 541, 1063 => 536, 1059 => 535, 1052 => 531, 1047 => 528, 1041 => 523, 1035 => 522, 1030 => 519, 1026 => 517, 1022 => 515, 1015 => 514, 1009 => 513, 1006 => 512, 1004 => 511, 1000 => 510, 997 => 509, 994 => 508, 988 => 505, 985 => 504, 982 => 503, 975 => 502, 969 => 501, 961 => 498, 957 => 496, 955 => 495, 952 => 494, 949 => 493, 946 => 492, 943 => 491, 940 => 490, 937 => 489, 934 => 488, 930 => 487, 927 => 486, 925 => 480, 920 => 477, 911 => 470, 907 => 469, 902 => 467, 894 => 462, 890 => 461, 885 => 459, 877 => 454, 873 => 453, 868 => 451, 859 => 445, 854 => 442, 848 => 437, 844 => 435, 837 => 434, 831 => 433, 828 => 432, 826 => 431, 823 => 430, 816 => 426, 805 => 422, 800 => 420, 793 => 416, 790 => 415, 787 => 414, 782 => 410, 779 => 409, 773 => 408, 770 => 407, 764 => 406, 761 => 405, 759 => 404, 751 => 398, 746 => 396, 743 => 395, 740 => 394, 734 => 393, 729 => 391, 723 => 388, 719 => 386, 716 => 385, 711 => 384, 708 => 383, 703 => 382, 701 => 381, 690 => 373, 682 => 372, 675 => 370, 669 => 366, 666 => 365, 660 => 364, 655 => 363, 650 => 362, 647 => 361, 644 => 360, 641 => 359, 629 => 349, 625 => 348, 620 => 346, 616 => 345, 601 => 337, 593 => 336, 589 => 334, 586 => 332, 582 => 330, 564 => 327, 558 => 326, 554 => 325, 550 => 324, 543 => 323, 526 => 322, 522 => 321, 519 => 320, 516 => 319, 513 => 318, 510 => 317, 507 => 316, 502 => 312, 497 => 310, 492 => 307, 488 => 304, 475 => 303, 190 => 29, 177 => 28, 155 => 26, 132 => 25, 109 => 24, 86 => 23, 75 => 1, 69 => 20, 65 => 19, 63 => 18, 61 => 5, 59 => 3, 46 => 1,); } public function getSourceContext(): Source { return new Source("{% extends 'application/whileresume/website/layout-social.html.twig' %}{% set isFR = app.request.locale == 'fr' %}{% set _keys = [ 'hero_search_placeholder','hero_popular_label', 'hero_byline_jobs','hero_byline_apps','hero_byline_free','hero_kbd_enter', 'hero_cta_signup','hero_cta_login', 'search_loading','search_no_results','search_no_results_hint','search_results_count','search_view_all','search_view_offer','search_clear', 'how_title', 'apps_ios','apps_android','apps_web','apps_ios_desc','apps_android_desc','apps_web_desc', 'articles_title','articles_view_all','read_article', 'final_title', 'final_recruiter_label','final_recruiter_title','final_recruiter_desc', 'final_candidate_label','final_candidate_title','final_candidate_desc', 'final_candidate','final_recruiter'] %}{% set t = {} %}{% for k in _keys %} {% set t = t|merge({(k): ('homepage.' ~ k)|trans({}, 'whr-public')}) %}{% endfor %}{% block title %}{{ landing.shortTitle }}{% endblock %}{% block description %}{{ landing.shortDescription }}{% endblock %}{% block robots %}index,follow{% endblock %}{% block canonical %}{#% include \"/vitrine/lexend/components/languages/canonical_classic.html.twig\" %#}{% endblock %}{% block css %} {{ parent() }} <style> :root{ --wr-bg:#FBFCFE; --wr-bg-2:#F4F6FB; --wr-card:#FFFFFF; --wr-violet:#8A63C1; --wr-violet-2:#A98AD3; --wr-violet-soft:#F2EDFA; --wr-violet-softer:#F8F4FD; --wr-violet-dark:#6B47A6; --wr-ink:#1E1B2E; --wr-ink-2:#374151; --wr-muted:#6B7280; --wr-muted-2:#9CA3AF; --wr-line:#EEF1F7; --wr-line-2:#E5E9F0; --wr-shadow:0 1px 2px rgba(30,27,46,.04),0 4px 16px rgba(30,27,46,.04); --wr-shadow-hover:0 4px 8px rgba(138,99,192,.08),0 12px 32px rgba(138,99,192,.1); --wr-acc-yellow:#FEF3C7; --wr-acc-yellow-fg:#B45309; --wr-acc-green:#D1FAE5; --wr-acc-green-fg:#047857; --wr-acc-pink:#FCE7F3; --wr-acc-pink-fg:#BE185D; --wr-acc-blue:#DBEAFE; --wr-acc-blue-fg:#1E40AF; --wr-acc-orange:#FED7AA; --wr-acc-orange-fg:#C2410C; --wr-acc-violet:#EDE9FE; --wr-acc-violet-fg:#6D28D9; --wr-acc-cyan:#CFFAFE; --wr-acc-cyan-fg:#0E7490; } body .main-content.right-chat-active{padding-right:0!important} body .main-content{padding-right:0!important} body .right-chat{display:none!important} body .middle-sidebar-bottom .middle-sidebar-left{padding-right:0!important;max-width:none!important;width:100%!important} body .middle-sidebar-bottom{max-width:none!important} .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} @media(max-width:991px){.wr{margin:0 -15px}} .wr *{box-sizing:border-box} .wr a{color:inherit;text-decoration:none} .wr-section{padding:80px 32px;background:var(--wr-bg);position:relative} .wr-section--tight{padding:48px 32px} @media(max-width:768px){.wr-section{padding:56px 20px}.wr-section--tight{padding:36px 20px}} .wr-section + .wr-section::before{ content:\"\";position:absolute;top:0;left:50%;transform:translateX(-50%); width:80px;height:1px; background:linear-gradient(90deg,transparent,var(--wr-line-2),transparent); } .wr-container{max-width:1200px;margin:0 auto;position:relative} .wr-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:100px;background:var(--wr-violet-soft);color:var(--wr-violet-dark);font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.12em;margin-bottom:22px} .wr-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse 2.4s ease-in-out infinite} @keyframes wrPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}} .wr-title{font-family:inherit !important;font-weight:700 !important;font-size:28px;line-height:1.15;letter-spacing:-0.025em;color:var(--wr-ink) !important;margin:0 auto 16px;max-width:1200px;text-align:center} @media(min-width:768px){.wr-title{font-size:34px}} @media(min-width:1024px){.wr-title{font-size:40px}} .wr-title--sm{font-size:24px} @media(min-width:768px){.wr-title--sm{font-size:30px}} .wr-title em{font-style:normal;font-weight:700 !important;color:var(--wr-violet) !important} .wr-lede{font-size:17px;line-height:1.55;font-weight:400;color:var(--wr-ink-2) !important;margin:0 auto;max-width:680px} .wr-section-head{text-align:center;margin-bottom:56px} @keyframes wrFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}} @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)}} .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)} .reveal.is-revealed{opacity:1;transform:translateY(0)} .reveal--left{transform:translateX(-32px) translateY(0)} .reveal--left.is-revealed{transform:translateX(0)} .reveal--right{transform:translateX(32px) translateY(0)} .reveal--right.is-revealed{transform:translateX(0)} .reveal--scale{transform:scale(.96);opacity:0} .reveal--scale.is-revealed{transform:scale(1);opacity:1} .reveal[data-reveal-delay=\"1\"]{transition-delay:.08s} .reveal[data-reveal-delay=\"2\"]{transition-delay:.16s} .reveal[data-reveal-delay=\"3\"]{transition-delay:.24s} .reveal[data-reveal-delay=\"4\"]{transition-delay:.32s} @media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}} /* ═══ HERO ═══ */ .hero{position:relative;background:var(--wr-bg);padding:24px 32px 0;overflow:hidden} @media(max-width:768px){.hero{padding:18px 18px 0}} .hero::before{content:\"\";position:absolute;top:-260px;right:-180px;width:560px;height:560px;background:radial-gradient(circle,rgba(138,99,192,.14) 0%,transparent 65%);pointer-events:none;filter:blur(50px)} .hero::after{content:\"\";position:absolute;top:120px;left:-180px;width:480px;height:480px;background:radial-gradient(circle,rgba(138,99,192,.09) 0%,transparent 65%);pointer-events:none;filter:blur(50px)} .hero-inner{position:relative;z-index:2;max-width:1200px;margin:0 auto;text-align:center} .hero-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 16px;border-radius:100px;background:var(--wr-violet-soft);color:var(--wr-violet-dark);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px;opacity:0;transform:translateY(8px);animation:wrFadeUp .8s ease forwards} .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse2 2s ease infinite} /* H1 — on force la couleur et la taille pour battre les styles globaux du layout social */ .wr .hero-title{font-family:inherit !important;font-weight:700 !important;font-size:32px;line-height:1.05;letter-spacing:-0.04em;color:var(--wr-ink) !important;margin:0 auto 12px;width:100%;max-width:1200px;opacity:0;transform:translateY(12px);animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) .15s forwards;text-align:center} @media(min-width:768px){.wr .hero-title{font-size:48px;letter-spacing:-0.045em}} @media(min-width:1100px){.wr .hero-title{font-size:57px;letter-spacing:-0.045em}} .wr .hero-title-accent{color:var(--wr-violet) !important;font-weight:700 !important} .wr .hero-lede{font-size:16px;line-height:1.5;color:var(--wr-ink-2) !important;font-weight:400;margin:0 auto 16px;max-width:680px;opacity:0;animation:wrFadeUp .9s ease .4s forwards;text-align:center} @media(min-width:768px){.wr .hero-lede{font-size:18px}} .wr .hero-lede-accent{color:var(--wr-violet) !important;font-weight:600} .hero-search-wrap{max-width:1200px;margin:0 auto 12px;opacity:0;animation:wrFadeUp .9s ease .55s forwards;position:relative;z-index:5} .hero-search{background:var(--wr-card);border-radius:14px;box-shadow:0 0 20px 0 rgba(0,0,0,0.05),0 16px 40px rgba(138,99,192,.06);padding:10px;position:relative} .hero-search-inner{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:#F9FAFB;border:1px solid #E5E7EB;transition:border-color .2s,background .2s} .hero-search-inner:focus-within{border-color:rgba(138,99,192,.4);background:#fff} .hero-search-icon{color:var(--wr-muted-2);display:flex;flex-shrink:0} .hero-search-icon svg{width:16px;height:16px} .hero-search-input{flex:1;border:0;outline:0;background:transparent;font-size:14.5px;font-family:inherit;color:var(--wr-ink);padding:6px 0;min-width:0} .hero-search-input::placeholder{color:var(--wr-muted-2)} .hero-search-clear{background:none;border:0;color:var(--wr-muted-2);cursor:pointer;padding:4px;display:none;font-family:inherit;border-radius:6px;transition:background .15s,color .15s} .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)} .hero-search-clear.is-visible{display:flex;align-items:center} .hero-search-clear svg{width:14px;height:14px} .hero-search-kbd{display:none;align-items:center;padding:3px 8px;background:#fff;border:1px solid #E5E7EB;border-radius:6px;font-size:10.5px;font-weight:600;color:var(--wr-muted);font-family:inherit;letter-spacing:.02em;white-space:nowrap;flex-shrink:0} .hero-search-inner:focus-within .hero-search-kbd{display:inline-flex} .hero-jobs-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 22px 10px;border-bottom:1px solid var(--wr-line);margin-bottom:4px} @media(max-width:540px){.hero-jobs-header{padding:12px 16px 8px}} .hero-jobs-count{font-size:11.5px;color:var(--wr-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600} .hero-jobs-count strong{color:var(--wr-violet);font-weight:800;font-size:13px;margin-right:4px} .hero-jobs-link{font-size:11px;font-weight:700;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.08em;text-decoration:none;display:inline-flex;align-items:center;gap:5px;transition:color .15s,transform .15s} .hero-jobs-link:hover{color:var(--wr-violet-dark);text-decoration:none;transform:translateX(2px)} .hero-jobs-link svg{width:11px;height:11px} .hero-jobs-empty{text-align:center;padding:48px 20px;color:var(--wr-muted)} .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} .hero-jobs-empty-icon svg{width:22px;height:22px} .hero-jobs-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px} .hero-jobs-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)} .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} .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} @keyframes wrSpin{to{transform:rotate(360deg)}} .hero-popular{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-bottom:18px;opacity:0;animation:wrFadeUp .9s ease .7s forwards} .hero-popular-label{font-size:11px;font-weight:600;color:var(--wr-muted);text-transform:uppercase;letter-spacing:.06em;margin-right:4px} .hero-popular-pill{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:100px;background:var(--wr-violet-soft);color:var(--wr-violet);font-size:12.5px;font-weight:500;font-family:inherit;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,transform .15s,color .15s} .hero-popular-pill:hover{background:#EDE9FE;border-color:rgba(138,99,192,.2);transform:translateY(-1px);color:var(--wr-violet);text-decoration:none} .hero-popular-pill.is-active{background:var(--wr-violet);color:#fff;border-color:var(--wr-violet)} .hero-popular-pill.is-active:hover{background:var(--wr-violet-dark);color:#fff} .hero-popular-pill-icon{font-size:13px;line-height:1} .hero-cta{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin:24px 0 8px;opacity:0;animation:wrFadeUp .9s ease 1.1s forwards} .hero-cta-btn,.hero-cta-btn:link,.hero-cta-btn:visited,.hero-cta-btn:hover,.hero-cta-btn:focus,.hero-cta-btn:active{color:#fff !important;text-decoration:none !important} .hero-cta-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:11px;font-size:13.5px;font-weight:700;font-family:inherit;line-height:1;background:var(--wr-violet);border:1px solid var(--wr-violet);box-shadow:0 4px 14px rgba(138,99,193,.32);transition:background .15s,border-color .15s,transform .15s,box-shadow .15s} .hero-cta-btn:hover{background:var(--wr-violet-dark);border-color:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 20px rgba(138,99,193,.4)} .hero-cta-btn svg{width:15px;height:15px;flex-shrink:0;stroke:#fff !important;color:#fff !important} .hero-cta-btn span{color:#fff !important} @media(max-width:540px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta-btn{justify-content:center}} .hero-default-jobs{position:relative;z-index:2;max-width:1200px;margin:0 auto;background:var(--wr-card);border:1px solid var(--wr-line);border-radius:18px;padding:8px 0;box-shadow:var(--wr-shadow);opacity:0;animation:wrFadeUp .9s ease 1s forwards;text-align:left} .hero-default-job{display:flex;align-items:center;gap:16px;padding:14px 22px;text-decoration:none;color:inherit;border-bottom:1px solid var(--wr-line);transition:background .15s} .hero-default-job:last-child{border-bottom:0} .hero-default-job:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit} .hero-default-job-logo{width:42px;height:42px;border-radius:11px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;overflow:hidden} .hero-default-job-logo img{width:100%;height:100%;object-fit:cover} .hero-default-job:nth-child(7n+1) .hero-default-job-logo{background:var(--wr-acc-yellow);color:var(--wr-acc-yellow-fg)} .hero-default-job:nth-child(7n+2) .hero-default-job-logo{background:var(--wr-acc-green);color:var(--wr-acc-green-fg)} .hero-default-job:nth-child(7n+3) .hero-default-job-logo{background:var(--wr-acc-pink);color:var(--wr-acc-pink-fg)} .hero-default-job:nth-child(7n+4) .hero-default-job-logo{background:var(--wr-acc-blue);color:var(--wr-acc-blue-fg)} .hero-default-job:nth-child(7n+5) .hero-default-job-logo{background:var(--wr-acc-orange);color:var(--wr-acc-orange-fg)} .hero-default-job:nth-child(7n+6) .hero-default-job-logo{background:var(--wr-acc-violet);color:var(--wr-acc-violet-fg)} .hero-default-job:nth-child(7n+7) .hero-default-job-logo{background:var(--wr-acc-cyan);color:var(--wr-acc-cyan-fg)} .hero-default-job-info{flex:1;min-width:0} .hero-default-job-title{font-weight:600 !important;font-size:14.5px;color:var(--wr-ink) !important;margin:0 0 2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .hero-default-job-meta{font-size:12.5px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px} .hero-default-job-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--wr-muted-2);flex-shrink:0} .hero-default-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .hero-default-job-arrow svg{width:15px;height:15px} .hero-default-job:hover .hero-default-job-arrow{color:var(--wr-violet);transform:translateX(3px)} @media(max-width:768px){.hero-default-jobs{margin:0 -18px;border-radius:14px}.hero-default-job{padding:12px 16px;gap:12px}.hero-default-job-logo{width:36px;height:36px;font-size:13px}.hero-default-job-title{font-size:13.5px}.hero-default-job-meta{font-size:11.5px;gap:6px;flex-wrap:wrap;white-space:normal}} /* ═══ HOW IT WORKS ═══ */ .how-card{background:#F4ECE1;border-radius:24px;padding:32px 24px;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;position:relative} @media(max-width:991px){.how-card{grid-template-columns:1fr;gap:8px;padding:24px 16px}} @media(min-width:992px){.how-card .how-step + .how-step{border-left:1px solid rgba(28,25,22,.08)}} .how-step{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 20px;gap:16px} .how-step-illu{width:100%;max-width:280px;aspect-ratio:1/1;border-radius:16px;background:rgba(255,255,255,.5);display:flex;align-items:center;justify-content:center;margin-bottom:4px;overflow:hidden} .how-step-illu img{width:100%;height:100%;object-fit:contain;display:block} .how-step-title{font-weight:700 !important;font-size:18px;line-height:1.3;letter-spacing:-0.01em;color:var(--wr-ink) !important;margin:0} @media(min-width:992px){.how-step-title{font-size:20px}} .how-step-desc{font-size:14px;line-height:1.55;color:var(--wr-ink-2) !important;margin:0;max-width:320px} /* ═══ FEATURES 01-04 ═══ */ .feat-block{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;margin-bottom:64px} .feat-block:last-child{margin-bottom:0} @media(max-width:991px){.feat-block{grid-template-columns:1fr;gap:24px;margin-bottom:48px}} .feat-block:nth-child(odd) .feat-illu{order:2} .feat-block:nth-child(odd) .feat-content{order:1} .feat-block:nth-child(even) .feat-illu{order:1} .feat-block:nth-child(even) .feat-content{order:2} @media(max-width:991px){.feat-block .feat-illu{order:1}.feat-block .feat-content{order:2}} .feat-illu{background:#F5EDE3;border-radius:20px;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;color:var(--wr-violet);overflow:hidden;position:relative} .feat-illu img{width:100%;height:100%;object-fit:contain;display:block} .feat-content{display:flex;flex-direction:column;gap:18px} .feat-label{font-size:30px;font-weight:800 !important;color:var(--wr-ink) !important;letter-spacing:-0.02em;margin:0;line-height:1} .feat-title{font-weight:700 !important;font-size:24px;line-height:1.2;letter-spacing:-0.02em;color:var(--wr-ink) !important;margin:0} @media(min-width:768px){.feat-title{font-size:28px}} @media(min-width:1100px){.feat-title{font-size:30px}} .feat-desc{display:flex;flex-direction:column;gap:14px} .feat-desc p,.feat-desc li,.feat-desc span,.feat-desc div,.feat-desc strong,.feat-desc em{font-size:16px;line-height:1.6;color:var(--wr-ink-2);margin:0;opacity:.85} .feat-desc p{margin:0 0 8px} .feat-desc p:last-child{margin-bottom:0} /* Bloc HTML riche descriptionPage2/3 — forcer 16px sur tout le contenu */ .wr-rich-description{margin-top:18px;text-align:center;color:var(--wr-muted)} .wr-rich-description, .wr-rich-description p, .wr-rich-description li, .wr-rich-description span, .wr-rich-description div, .wr-rich-description strong, .wr-rich-description em, .wr-rich-description a{font-size:16px;line-height:1.6} .wr-rich-description p{margin:0 0 10px} .wr-rich-description p:last-child{margin-bottom:0} .feat-desc strong{color:var(--wr-ink);font-weight:700;opacity:1} .feat-quote{background:var(--wr-card);border:1px solid var(--wr-line);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:10px;margin-top:8px} .feat-quote-text{font-size:14px;line-height:1.55;color:var(--wr-ink-2);margin:0;font-style:italic} .feat-quote-author{display:flex;flex-direction:column} .feat-quote-name{font-size:13px;font-weight:700;color:var(--wr-ink);margin:0} .feat-quote-role{font-size:12px;color:var(--wr-muted);margin:0} /* ═══ APPS ═══ */ .apps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} @media(max-width:768px){.apps-grid{grid-template-columns:1fr}} .app-card{background:var(--wr-card);border:1px solid var(--wr-line);border-radius:18px;padding:24px;display:flex;flex-direction:column;align-items:flex-start;transition:transform .2s,border-color .2s,box-shadow .2s} .app-card:hover{transform:translateY(-3px);border-color:var(--wr-violet-2);box-shadow:var(--wr-shadow-hover);color:inherit;text-decoration:none} .app-card-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:18px} .app-card-icon svg{width:22px;height:22px} .app-card-name{font-weight:500 !important;font-size:18px;letter-spacing:-0.01em;color:var(--wr-ink) !important;margin:0 0 6px} .app-card-desc{font-size:13px;line-height:1.5;color:var(--wr-muted);margin:0 0 16px;flex:1} .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} .app-card-cta svg{width:11px;height:11px;transition:transform .15s} .app-card:hover .app-card-cta svg{transform:translateX(3px)} /* ═══ ARTICLES ═══ */ .articles-list{display:flex;flex-direction:column;gap:10px;max-width:1200px;margin:0 auto} .wr-article{background:var(--wr-card);border-radius:14px;padding:14px;box-shadow:0 0 16px 0 rgba(0,0,0,0.04);display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;transition:transform .15s,box-shadow .2s} .wr-article:hover{transform:translateY(-1px);box-shadow:0 4px 20px rgba(138,99,192,.1);color:inherit;text-decoration:none} .wr-article-logo{width:50px;height:50px;border-radius:12px;flex-shrink:0;background:linear-gradient(135deg,#EDE9FE,#DDD6FE);display:flex;align-items:center;justify-content:center;color:var(--wr-violet);overflow:hidden} .wr-article-logo svg{width:24px;height:24px;opacity:.9} .wr-article-info{flex:1;min-width:0} .wr-article-title{font-size:14px;font-weight:700 !important;color:var(--wr-ink) !important;line-height:1.3;margin:0 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wr-article-meta{font-size:12px;color:var(--wr-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:8px;margin:0} .wr-article-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:#D1D5DB;flex-shrink:0} .wr-article-badge{font-size:11px;font-weight:600;color:var(--wr-violet);background:var(--wr-violet-soft);padding:3px 9px;border-radius:100px;white-space:nowrap;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em} .wr-article-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .wr-article:hover .wr-article-arrow{color:var(--wr-violet);transform:translateX(2px)} .wr-article-arrow svg{width:18px;height:18px} @media(max-width:540px){.wr-article{padding:12px;gap:10px}.wr-article-logo{width:42px;height:42px}.wr-article-logo svg{width:20px;height:20px}.wr-article-title{font-size:13px}.wr-article-meta{font-size:11px;gap:6px;flex-wrap:wrap;white-space:normal}.wr-article-badge{display:none}} .articles-cta{text-align:center;margin-top:36px} .articles-cta a{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;border-radius:11px;background:var(--wr-violet);color:#fff;font-size:13px;font-weight:600;text-decoration:none;box-shadow:0 4px 12px rgba(138,99,192,.3);transition:background .15s,transform .15s,box-shadow .15s} .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} .articles-cta svg{width:12px;height:12px;transition:transform .15s} .articles-cta a:hover svg{transform:translateX(3px)} /* ═══ CTA FINAL ═══ */ .final-card{position:relative;background:linear-gradient(135deg,#8A63C0 0%,#9D7BCC 100%);border-radius:28px;padding:48px 40px;color:#fff;overflow:hidden;box-shadow:0 20px 60px -12px rgba(138,99,192,.4)} @media(max-width:768px){.final-card{padding:32px 22px;border-radius:22px}} .final-title{font-weight:800 !important;font-size:28px;line-height:1.15;letter-spacing:-0.02em;color:#fff !important;margin:0 0 36px;max-width:780px} @media(min-width:768px){.final-title{font-size:38px}} .final-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px} @media(max-width:768px){.final-grid{grid-template-columns:1fr;gap:14px}} .final-sub{background:#fff;border-radius:18px;padding:28px;display:flex;flex-direction:column} @media(max-width:768px){.final-sub{padding:22px}} .final-sub-head{display:flex;align-items:center;gap:14px;margin-bottom:18px} .final-sub-icon{width:44px;height:44px;border-radius:11px;background:var(--wr-violet-soft);color:var(--wr-violet);display:flex;align-items:center;justify-content:center;flex-shrink:0} .final-sub-icon svg{width:22px;height:22px} .final-sub-label{font-size:12.5px;font-weight:700;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.1em} .final-sub-title{font-weight:800 !important;font-size:18px;line-height:1.3;letter-spacing:-0.01em;color:var(--wr-ink) !important;margin:0 0 10px} .final-sub-desc{font-size:14px;line-height:1.55;color:var(--wr-muted);margin:0 0 24px;flex:1} .final-sub-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--wr-violet);color:#fff;padding:14px 18px;border-radius:11px;font-size:14px;font-weight:700;text-decoration:none;transition:background .15s,transform .15s,box-shadow .15s;box-shadow:0 4px 12px rgba(138,99,192,.3)} .final-sub-btn:hover{background:var(--wr-violet-dark);color:#fff;transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,192,.4);text-decoration:none} .final-sub-btn svg{width:14px;height:14px;transition:transform .15s} .final-sub-btn:hover svg{transform:translateX(3px)} </style>{% endblock css %}{% block body %} <div class=\"wr\"> {# ═══════════════ HERO ═══════════════ #} <section class=\"hero\" style=\"padding-top:60px;\"> <div class=\"hero-inner\"> <h1 class=\"hero-title\">{{ landing.titlePage|raw }}</h1> <p class=\"hero-lede\">{{ landing.descriptionPage|raw }}</p> {# Pills \"Populaire\" — au-dessus de la recherche. Le 1er keyword est utilisé comme valeur par défaut du champ de recherche. #} {% set _firstKeyword = '' %} {% if popularKeywords is defined and popularKeywords|length > 0 %} {% set _firstKw = popularKeywords|first %} {% set _firstKeyword = _firstKw.keyword ?? _firstKw.searchKeyword ?? _firstKw.label ?? '' %} <div class=\"hero-popular\"> <span class=\"hero-popular-label\">{{ t.hero_popular_label }}</span> {% for kw in popularKeywords|slice(0, 5) %} <button type=\"button\" class=\"hero-popular-pill{% if loop.first %} is-active{% endif %}\" data-keyword=\"{{ kw.keyword ?? kw.searchKeyword }}\" data-label=\"{{ kw.label }}\"> {% if kw.icon %}<span class=\"hero-popular-pill-icon\">{{ kw.icon|raw }}</span>{% endif %} <span>{{ kw.label }}</span> </button> {% endfor %} </div> {% endif %} {# Recherche inline AJAX #} <div class=\"hero-search-wrap\"> <div class=\"hero-search\" id=\"wrHeroSearch\" data-search-url=\"{% if isFR %}{{ path('locale_api_jobs_search',{'_locale':'fr'}) }}{% else %}{{ path('api_jobs_search') }}{% endif %}\" data-jobs-list-url=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}\"> <div class=\"hero-search-inner\"> <span class=\"hero-search-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"M21 21l-4.35-4.35\"/> </svg> </span> <input type=\"text\" name=\"q\" id=\"wrHeroSearchInput\" class=\"hero-search-input\" placeholder=\"{{ t.hero_search_placeholder }}\" value=\"{{ _firstKeyword }}\" autocomplete=\"off\" /> <span class=\"hero-search-kbd\">↵ {{ isFR ? 'Entrée' : 'Enter' }}</span> <button type=\"button\" class=\"hero-search-clear\" id=\"wrHeroSearchClear\" aria-label=\"{{ t.search_clear }}\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/> </svg> </button> </div> </div> </div> {# Liste de jobs — par défaut popularJobsForVisitor #} {% set _heroCount = 0 %} {% set _heroTotal = 0 %} {% if popularJobsForVisitor is defined %} {% for block in popularJobsForVisitor %} {% if block.jobs is defined %}{% set _heroTotal = _heroTotal + block.jobs|length %}{% endif %} {% endfor %} {% endif %} <div class=\"hero-default-jobs\" id=\"wrHeroJobsList\"> <div class=\"hero-jobs-header\" id=\"wrHeroJobsHeader\"> <span class=\"hero-jobs-count\" id=\"wrHeroJobsCount\"> <strong>{{ _heroTotal ?: (totalJobs ?? '') }}</strong>{{ t.search_results_count }} </span> <a href=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}\" class=\"hero-jobs-link\" id=\"wrHeroJobsLink\"> {{ t.search_view_all }} <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> </a> </div> <div id=\"wrHeroJobsBody\"> {% if popularJobsForVisitor is defined and popularJobsForVisitor|length > 0 %} {% for block in popularJobsForVisitor %} {% if block.jobs is defined and block.jobs|length > 0 %} {% for j in block.jobs %} {% if _heroCount < 6 %} <a href=\"#\" class=\"hero-default-job\"> <div class=\"hero-default-job-logo\"> {{ (j.jobTitle ?? '?')|slice(0,1)|upper }} </div> <div class=\"hero-default-job-info\"> <h3 class=\"hero-default-job-title\">{{ j.jobTitle }}</h3> <p class=\"hero-default-job-meta\"> {% if j.city %}<span>{{ j.city }}</span>{% endif %} {% if j.employmentType %} <span class=\"hero-default-job-meta-sep\"></span> <span>{{ j.employmentType }}</span> {% endif %} </p> </div> <span class=\"hero-default-job-arrow\"> <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> </span> </a> {% set _heroCount = _heroCount + 1 %} {% endif %} {% endfor %} {% endif %} {% endfor %} {% endif %} </div> </div> {# CTA pour utilisateurs non connectés #} {% if app.user is null %} <div class=\"hero-cta\"> <a href=\"{{ path('whileresume_resume_' ~ app.request.locale) }}\" class=\"hero-cta-btn\"> <svg viewBox=\"0 0 24 24\" 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> {{ t.hero_cta_signup }} </a> <a href=\"{% if isFR %}{{ path('locale_app_login',{'_locale':'fr'}) }}{% else %}{{ path('app_login') }}{% endif %}\" class=\"hero-cta-btn\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <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\"/> </svg> {{ t.hero_cta_login }} </a> </div> {% endif %} {% if landing.descriptionPage2 or landing.descriptionPage3 %} <div class=\"wr-rich-description\"> {% if landing.descriptionPage2 %}<div>{{ landing.descriptionPage2|raw }}</div>{% endif %} {% if landing.descriptionPage3 %}<div>{{ landing.descriptionPage3|raw }}</div>{% endif %} </div> {% endif %} </div> </section> {# ═══════════════ COMMENT ÇA MARCHE ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title\">{{ t.how_title }}</h2> </div> <div class=\"how-card\"> <div class=\"how-step reveal\" data-reveal-delay=\"1\"> <div class=\"how-step-illu\"> <img src=\"/uploads/rh/mascotte_register.png\" alt=\"{{ landing.titleWork1 }}\" loading=\"lazy\"> </div> <h3 class=\"how-step-title\">{{ landing.titleWork1|raw }}</h3> <p class=\"how-step-desc\">{{ landing.descriptionWork1|raw }}</p> </div> <div class=\"how-step reveal\" data-reveal-delay=\"2\"> <div class=\"how-step-illu\"> <img src=\"/uploads/rh/mascotte_upload2.png\" alt=\"{{ landing.titleWork2 }}\" loading=\"lazy\"> </div> <h3 class=\"how-step-title\">{{ landing.titleWork2|raw }}</h3> <p class=\"how-step-desc\">{{ landing.descriptionWork2|raw }}</p> </div> <div class=\"how-step reveal\" data-reveal-delay=\"3\"> <div class=\"how-step-illu\"> <img src=\"/uploads/rh/mascotte_reunion.png\" alt=\"{{ landing.titleWork3 }}\" loading=\"lazy\"> </div> <h3 class=\"how-step-title\">{{ landing.titleWork3|raw }}</h3> <p class=\"how-step-desc\">{{ landing.descriptionWork3|raw }}</p> </div> </div> </div> </section> {# ═══════════════ FEATURES 01-04 ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> {% set _featImages = [ '/uploads/rh/mascotte_filtrage3.png', '/uploads/rh/mascotte_upload.png', '/uploads/rh/mascotte_register.png', '/uploads/rh/mascotte_reunion.png' ] %} {% for i in 1..4 %} {% set _label = attribute(landing, 'labelPresentation' ~ i) ?: ('0' ~ i ~ '.') %} {% set _title = attribute(landing, 'titlePresentation' ~ i) %} {% set _desc = attribute(landing, 'descriptionPresentation' ~ i) %} {% set _quote = attribute(landing, 'citationPresentation' ~ i) %} {% set _author = attribute(landing, 'authorPresentation' ~ i) %} {% set _role = attribute(landing, 'rolePresentation' ~ i) %} {% if _title or _desc or _quote %} <div class=\"feat-block reveal\"> <div class=\"feat-illu\"> <img src=\"{{ _featImages[i-1] }}\" alt=\"{{ _title }}\" loading=\"lazy\"> </div> <div class=\"feat-content\"> {% if _label %}<span class=\"feat-label\">{{ _label }}</span>{% endif %} {% if _title %}<h3 class=\"feat-title\">{{ _title|raw }}</h3>{% endif %} {% if _desc %} <div class=\"feat-desc\"> <p>{{ _desc|raw }}</p> </div> {% endif %} {% if _quote %} <div class=\"feat-quote\"> <p class=\"feat-quote-text\">{{ _quote|raw }}</p> {% if _author or _role %} <div class=\"feat-quote-author\"> {% if _author %}<p class=\"feat-quote-name\">{{ _author }}</p>{% endif %} {% if _role %}<p class=\"feat-quote-role\">{{ _role }}</p>{% endif %} </div> {% endif %} </div> {% endif %} </div> </div> {% endif %} {% endfor %} </div> </section> {# ═══════════════ APPS ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"apps-grid\"> <a href=\"{{ isFR ? (ios_fr|default('#')) : (ios_us|default('#')) }}\" class=\"app-card\"> <span class=\"app-card-icon\"> <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> </span> <h3 class=\"app-card-name\">{{ t.apps_ios }}</h3> <p class=\"app-card-desc\">{{ t.apps_ios_desc }}</p> <span class=\"app-card-cta\">App Store <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> </span> </a> <a href=\"{{ isFR ? (android_fr|default('#')) : (android_us|default('#')) }}\" class=\"app-card\"> <span class=\"app-card-icon\"> <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> </span> <h3 class=\"app-card-name\">{{ t.apps_android }}</h3> <p class=\"app-card-desc\">{{ t.apps_android_desc }}</p> <span class=\"app-card-cta\">Google Play <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> </span> </a> <a href=\"{% if app.request.locale == 'en' %}{{ path('whileresume_homepage') }}{% else %}{{ path('locale_whileresume_homepage',{'_locale':app.request.locale}) }}{% endif %}#register\" class=\"app-card\"> <span class=\"app-card-icon\"> <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> </span> <h3 class=\"app-card-name\">{{ t.apps_web }}</h3> <p class=\"app-card-desc\">{{ t.apps_web_desc }}</p> <span class=\"app-card-cta\">whileresume.com <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> </span> </a> </div> </div> </section> {# ═══════════════ ARTICLES ═══════════════ #} {% if articles is defined and articles|length > 0 %} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">{{ t.articles_title }}</h2> </div> <div class=\"articles-list\"> {% for a in articles|slice(0,6) %} {% set prefix = \"\" %} {% set urlA = path('cvs_website_article',{'slug': a.slug}) %} {% if app.request.locale != default_locale %} {% set urlA = path('locale_cvs_website_article',{'_locale':app.request.locale,'slug': a.slug}) %} {% set prefix = \"/\" ~ app.request.locale %} {% endif %} {% if a.pageslug3 is not empty %} {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 ~ '/' ~ a.pageslug3 %} {% elseif a.pageslug2 is not empty %} {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 %} {% elseif a.pageslug is not empty %} {% set urlA = prefix ~ '/' ~ a.pageslug %} {% endif %} <a href=\"{{ urlA }}\" class=\"wr-article\"> <div class=\"wr-article-logo\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"/> <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"/> </svg> </div> <div class=\"wr-article-info\"> <h3 class=\"wr-article-title\">{{ a.title }}</h3> <div class=\"wr-article-meta\"> {% if a.subtitle is not empty %} <span>{{ a.subtitle|length > 60 ? a.subtitle|slice(0,60) ~ '…' : a.subtitle }}</span> {% endif %} </div> </div> <span class=\"wr-article-badge\">{{ t.read_article }}</span> <span class=\"wr-article-arrow\"> <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> </span> </a> {% endfor %} </div> <div class=\"articles-cta\"> <a href=\"{% if isFR %}{{ path('locale_cvs_website_articles',{'_locale':'fr'}) }}{% else %}{{ path('cvs_website_articles') }}{% endif %}\"> {{ t.articles_view_all }} <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> </a> </div> </div> </section> {% endif %} {# ═══════════════ CTA FINAL (visiteurs anonymes uniquement) ═══════════════ #} {% if app.user is null %} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"final-card\"> <h2 class=\"final-title\">{{ t.final_title }}</h2> <div class=\"final-grid\"> {# Recruteur #} <div class=\"final-sub\"> <div class=\"final-sub-head\"> <span class=\"final-sub-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <rect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"/> <path d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"/> </svg> </span> <span class=\"final-sub-label\">{{ t.final_recruiter_label }}</span> </div> <h3 class=\"final-sub-title\">{{ t.final_recruiter_title }}</h3> <p class=\"final-sub-desc\">{{ t.final_recruiter_desc }}</p> <a href=\"{{ path('whileresume_business_' ~ app.request.locale) }}\" class=\"final-sub-btn\"> {{ t.final_recruiter }} <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> </a> </div> {# Candidat #} <div class=\"final-sub\"> <div class=\"final-sub-head\"> <span class=\"final-sub-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\"/> <circle cx=\"12\" cy=\"7\" r=\"4\"/> </svg> </span> <span class=\"final-sub-label\">{{ t.final_candidate_label }}</span> </div> <h3 class=\"final-sub-title\">{{ t.final_candidate_title }}</h3> <p class=\"final-sub-desc\">{{ t.final_candidate_desc }}</p> <a href=\"{{ path('whileresume_resume_' ~ app.request.locale) }}\" class=\"final-sub-btn\"> {{ t.final_candidate }} <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> </a> </div> </div> </div> </div> </section> {% endif %} </div>{% endblock body %}{% block footer_js %} {{ parent() }} <script> (function(){ var search = document.getElementById('wrHeroSearch'); var input = document.getElementById('wrHeroSearchInput'); var clearBtn = document.getElementById('wrHeroSearchClear'); var jobsBody = document.getElementById('wrHeroJobsBody'); var countEl = document.getElementById('wrHeroJobsCount'); var linkEl = document.getElementById('wrHeroJobsLink'); if (!search || !input || !jobsBody) return; var searchUrl = search.dataset.searchUrl; var jobsListUrl = search.dataset.jobsListUrl; var defaultBodyHtml = jobsBody.innerHTML; var defaultCountHtml = countEl ? countEl.innerHTML : ''; var defaultLinkHref = linkEl ? linkEl.getAttribute('href') : jobsListUrl; var debounceTimer = null; var currentRequest = null; var lastQuery = ''; var T = { loading: '{{ t.search_loading|escape('js') }}', empty: '{{ t.search_no_results|escape('js') }}', emptyHint: '{{ t.search_no_results_hint|escape('js') }}', count: '{{ t.search_results_count|escape('js') }}', viewAll: '{{ t.search_view_all|escape('js') }}', view: '{{ t.search_view_offer|escape('js') }}' }; function escHtml(s){ if (s == null) return ''; return String(s).replace(/[&<>\"']/g, function(c){ return {'&':'&','<':'<','>':'>','\"':'"',\"'\":'''}[c]; }); } function setHeaderCount(total){ if (!countEl) return; countEl.innerHTML = '<strong>' + total + '</strong>' + escHtml(T.count); } function setHeaderLink(href){ if (!linkEl) return; linkEl.setAttribute('href', href); } function setLoading(){ jobsBody.innerHTML = '<div class=\"hero-jobs-loading\"><span class=\"hero-jobs-spinner\"></span><span>' + escHtml(T.loading) + '</span></div>'; } function setEmpty(){ jobsBody.innerHTML = '<div class=\"hero-jobs-empty\">' + '<div class=\"hero-jobs-empty-icon\">' + '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">' + '<circle cx=\"11\" cy=\"11\" r=\"8\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/>' + '</svg></div>' + '<p class=\"hero-jobs-empty-title\">' + escHtml(T.empty) + '</p>' + '<p class=\"hero-jobs-empty-hint\">' + escHtml(T.emptyHint) + '</p>' + '</div>'; } function restoreDefault(){ jobsBody.innerHTML = defaultBodyHtml; if (countEl) countEl.innerHTML = defaultCountHtml; if (linkEl) linkEl.setAttribute('href', defaultLinkHref); } function renderResults(payload, query){ var jobs = (payload && payload.jobs) || []; var total = (payload && typeof payload.total === 'number') ? payload.total : jobs.length; setHeaderCount(total); setHeaderLink(jobsListUrl + '?q=' + encodeURIComponent(query)); if (!jobs.length){ setEmpty(); return; } var html = ''; jobs.slice(0, 6).forEach(function(j){ var title = j.jobTitle || j.title || ''; var company = j.companyName || j.company || ''; var city = j.city || ''; var country = j.country || ''; var et = j.employmentType || ''; var img = j.image || j.imageUrl || ''; var url = j.url || (jobsListUrl + '?q=' + encodeURIComponent(query)); var initial = (company || title || '?').charAt(0).toUpperCase(); var location = city + (country ? ', ' + country : ''); var metaParts = []; if (company) metaParts.push('<span>' + escHtml(company) + '</span>'); if (location) metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(location) + '</span>'); if (et) metaParts.push('<span class=\"hero-default-job-meta-sep\"></span><span>' + escHtml(et) + '</span>'); html += '<a href=\"' + escHtml(url) + '\" class=\"hero-default-job\">' + '<div class=\"hero-default-job-logo\">' + (img ? '<img src=\"' + escHtml(img) + '\" alt=\"\">' : escHtml(initial)) + '</div>' + '<div class=\"hero-default-job-info\">' + '<h3 class=\"hero-default-job-title\">' + escHtml(title) + '</h3>' + '<p class=\"hero-default-job-meta\">' + metaParts.join('') + '</p>' + '</div>' + '<span class=\"hero-default-job-arrow\">' + '<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>' + '</span>' + '</a>'; }); jobsBody.innerHTML = html; } function doSearch(query){ if (currentRequest && currentRequest.abort) { try { currentRequest.abort(); } catch(e){} } setLoading(); var url = searchUrl + (searchUrl.indexOf('?') > -1 ? '&' : '?') + 'q=' + encodeURIComponent(query); var ctrl = (typeof AbortController !== 'undefined') ? new AbortController() : null; currentRequest = ctrl; fetch(url, { headers: { 'Accept': 'application/json' }, signal: ctrl ? ctrl.signal : undefined }) .then(function(r){ return r.ok ? r.json() : Promise.reject(r.status); }) .then(function(data){ renderResults(data, query); }) .catch(function(err){ if (err && err.name === 'AbortError') return; setEmpty(); }); } input.addEventListener('input', function(){ var q = input.value.trim(); clearBtn.classList.toggle('is-visible', q.length > 0); if (debounceTimer) clearTimeout(debounceTimer); if (q.length < 2){ restoreDefault(); lastQuery = ''; return; } if (q === lastQuery) return; debounceTimer = setTimeout(function(){ lastQuery = q; doSearch(q); }, 280); }); input.addEventListener('keydown', function(e){ if (e.key === 'Enter'){ e.preventDefault(); var q = input.value.trim(); if (!q) return; window.location.href = jobsListUrl + '?q=' + encodeURIComponent(q); } if (e.key === 'Escape'){ input.value = ''; clearBtn.classList.remove('is-visible'); restoreDefault(); lastQuery = ''; input.blur(); } }); clearBtn.addEventListener('click', function(){ input.value = ''; clearBtn.classList.remove('is-visible'); restoreDefault(); lastQuery = ''; input.focus(); }); document.querySelectorAll('.hero-popular-pill').forEach(function(pill){ pill.addEventListener('click', function(){ var keyword = pill.dataset.keyword || pill.dataset.label || ''; if (!keyword) return; document.querySelectorAll('.hero-popular-pill').forEach(function(p){ p.classList.remove('is-active'); }); pill.classList.add('is-active'); input.value = keyword; clearBtn.classList.add('is-visible'); lastQuery = keyword; doSearch(keyword); input.focus(); }); }); // Si l'input est pré-rempli (1er keyword populaire), on lance la recherche automatiquement var initialQuery = input.value.trim(); if (initialQuery.length >= 2) { clearBtn.classList.add('is-visible'); lastQuery = initialQuery; doSearch(initialQuery); } })(); (function(){ var els = document.querySelectorAll('.reveal'); if (!els.length) return; if (!('IntersectionObserver' in window)){ els.forEach(function(el){ el.classList.add('is-revealed'); }); return; } var io = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ if (entry.isIntersecting){ entry.target.classList.add('is-revealed'); io.unobserve(entry.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' }); els.forEach(function(el){ io.observe(el); }); })(); </script>{% endblock footer_js %}", "application/whileresume/website/candidates/landing.html.twig", "/var/www/vhosts/mirtillostudio.fr/b1.mirtillostudio.fr/version-1/templates/application/whileresume/website/candidates/landing.html.twig"); }}