<?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/homepage.html.twig */class __TwigTemplate_3021bd991837ee306d1f78dd01b7ec9e 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/candidates/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/homepage.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/homepage.html.twig")); // line 6 $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.', 6, $this->source); })()), "request", [], "any", false, false, false, 6), "locale", [], "any", false, false, false, 6) == "fr"); // line 7 $context["t"] = ["hero_eyebrow" => (((($tmp = // line 8(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 8, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Plateforme d’emploi nouvelle génération") : ("A new-generation job platform")), "hero_title_1" => (((($tmp = // line 9(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 9, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Faites parler") : ("Let your")), "hero_title_2" => (((($tmp = // line 10(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 10, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("votre CV.") : ("CV speak.")), "hero_title_3" => (((($tmp = // line 11(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 11, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("On s’occupe du reste.") : ("We handle the rest.")), "hero_lede" => (((($tmp = // line 12(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 12, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Whileresume met en relation les talents avec les entreprises qui recrutent — sans candidature à rallonge, sans CV à refaire 10 fois. Likez, matchez, échangez.") : ("Whileresume connects talent with hiring companies — no endless applications, no CVs rewritten ten times. Like, match, chat.")), "hero_search_placeholder" => (((($tmp = // line 13(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 13, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Un poste, une ville, une entreprise…") : ("A job, a city, a company…")), "hero_search_button" => (((($tmp = // line 14(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 14, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Rechercher") : ("Search")), "hero_byline_jobs" => (((($tmp = // line 15(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 15, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("offres en ligne") : ("jobs online")), "hero_byline_apps" => (((($tmp = // line 16(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 16, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("iOS · Android · Web") : ("iOS · Android · Web")), "hero_byline_free" => (((($tmp = // line 17(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 17, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("gratuit pour les candidats") : ("free for candidates")), "search_loading" => (((($tmp = // line 18(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 18, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Recherche…") : ("Searching…")), "search_no_results" => (((($tmp = // line 19(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 19, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Aucune offre ne correspond à votre recherche") : ("No job matches your search")), "search_no_results_hint" => (((($tmp = // line 20(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 20, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Essayez avec d’autres mots-clés") : ("Try other keywords")), "search_results_count" => (((($tmp = // line 21(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 21, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("offres trouvées") : ("jobs found")), "search_view_all" => (((($tmp = // line 22(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 22, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Voir toutes les offres") : ("See all jobs")), "search_view_offer" => (((($tmp = // line 23(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 23, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Voir l’offre") : ("View job")), "search_clear" => (((($tmp = // line 24(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 24, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Effacer") : ("Clear")), "paths_eyebrow" => (((($tmp = // line 26(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 26, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Trois manières d’entrer") : ("Three ways in")), "paths_title" => (((($tmp = // line 27(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 27, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Choisissez votre point de départ") : ("Choose your starting point")), "paths_lede" => (((($tmp = // line 28(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 28, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Que vous arriviez avec un CV bien rangé ou simplement avec l’envie de bouger, il existe une porte qui vous correspond.") : ("Whether you arrive with a polished CV or just the urge to move on, there’s a door for you.")), "path1_label" => (((($tmp = // line 29(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 29, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("J’ai déjà un CV") : ("I have a CV")), "path1_title" => (((($tmp = // line 30(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 30, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Envoyez. On lit. On améliore.") : ("Send. Read. Refine.")), "path1_desc" => (((($tmp = // line 31(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 31, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Vous déposez votre CV, on en extrait les compétences, on identifie ce qui peut être renforcé, et on régénère deux versions propres dans la langue et le thème de votre choix.") : ("You upload your CV, we extract your skills, identify what can be strengthened, and regenerate two clean versions in the language and theme of your choice.")), "path1_cta" => (((($tmp = // line 32(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 32, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Déposer mon CV") : ("Upload my CV")), "path2_label" => (((($tmp = // line 33(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 33, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Je pars de zéro") : ("Starting fresh")), "path2_title" => (((($tmp = // line 34(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 34, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Quelques étapes. Un beau CV.") : ("A few steps. A clean CV.")), "path2_desc" => (((($tmp = // line 35(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 35, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Pas de CV ? On vous accompagne dans un tunnel guidé. À la fin, vous repartez avec un document construit, lisible, prêt à être envoyé — ou à laisser parler pour vous, ici.") : ("No CV? We guide you through. At the end, you walk out with a structured, readable document, ready to send — or to let it speak for you, here.")), "path2_cta" => (((($tmp = // line 36(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 36, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Construire mon CV") : ("Build my CV")), "path3_label" => (((($tmp = // line 37(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 37, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Je veux d’abord regarder") : ("Browse first")), "path3_title" => (((($tmp = // line 38(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 38, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Liker, c’est déjà commencer.") : ("Liking is already starting.")), "path3_desc" => (((($tmp = // line 39(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 39, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Parcourez les offres et les entreprises. Likez celles qui vous parlent. On en déduit vos goûts, on vous propose mieux, et les recruteurs intéressés peuvent vous trouver.") : ("Browse jobs and companies. Like the ones that speak to you. We learn your taste, suggest better ones, and interested recruiters find you.")), "path3_cta" => (((($tmp = // line 40(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 40, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Voir les offres") : ("See jobs")), "how_eyebrow" => (((($tmp = // line 42(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 42, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Comment ça marche") : ("How it works")), "how_title" => (((($tmp = // line 43(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 43, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Quatre temps, un mouvement.") : ("Four moves, one motion.")), "how_lede" => (((($tmp = // line 44(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 44, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("On a réduit le parcours à l’essentiel. Pas de remplissage, pas de vous demander deux fois la même chose.") : ("We pared the journey down to the essentials. No filler, no asking the same thing twice.")), "step1_title" => (((($tmp = // line 45(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 45, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Vous racontez") : ("You tell")), "step1_desc" => (((($tmp = // line 46(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 46, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("CV uploadé ou tunnel guidé. On collecte ce qu’il faut savoir : compétences, parcours, envies, langues.") : ("CV uploaded or guided tunnel. We collect what matters: skills, experience, wishes, languages.")), "step2_title" => (((($tmp = // line 47(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 47, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("On analyse") : ("We analyze")), "step2_desc" => (((($tmp = // line 48(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 48, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Notre intelligence relit votre profil. Forces, axes d’amélioration : vous recevez un retour clair.") : ("Our intelligence re-reads your profile. Strengths, areas to improve: you get a clear report.")), "step3_title" => (((($tmp = // line 49(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 49, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("On génère") : ("We generate")), "step3_desc" => (((($tmp = // line 50(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 50, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Votre CV est généré dans deux thèmes, plusieurs couleurs, plusieurs langues. Téléchargeable à tout moment.") : ("Your CV is generated in two themes, multiple colors, multiple languages. Downloadable any time.")), "step4_title" => (((($tmp = // line 51(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 51, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("On vous expose") : ("We expose you")), "step4_desc" => (((($tmp = // line 52(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 52, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Votre profil devient visible des recruteurs qui cherchent exactement votre type de talent.") : ("Your profile becomes visible to recruiters looking for exactly your type of talent.")), "apps_eyebrow" => (((($tmp = // line 54(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 54, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Disponible partout") : ("Available everywhere")), "apps_title" => (((($tmp = // line 55(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 55, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Trois plateformes, une seule expérience") : ("Three platforms, one experience")), "apps_lede" => (((($tmp = // line 56(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 56, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Vos préférences vous suivent. Likez une offre dans le métro, envoyez votre CV depuis votre canapé.") : ("Your preferences follow you. Like an offer on the subway, send your CV from the couch.")), "apps_ios" => "iOS", "apps_android" => "Android", "apps_web" => (((($tmp = // line 59(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 59, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Web") : ("Web")), "apps_ios_desc" => (((($tmp = // line 60(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 60, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Téléchargez sur l’App Store") : ("Download on the App Store")), "apps_android_desc" => (((($tmp = // line 61(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 61, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Téléchargez sur Google Play") : ("Get it on Google Play")), "apps_web_desc" => (((($tmp = // line 62(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 62, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Connectez-vous depuis le navigateur") : ("Log in from your browser")), "match_eyebrow" => (((($tmp = // line 64(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 64, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Le match ne se force pas") : ("A match cannot be forced")), "match_title" => (((($tmp = // line 65(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 65, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Likez. Matchez. Échangez.") : ("Like. Match. Chat.")), "match_lede" => (((($tmp = // line 66(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 66, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Vous likez ce qui vous plaît, on apprend, et les entreprises intéressées passent la première.") : ("You like what catches your eye, we learn, and interested companies make the first move.")), "match_b1_title" => (((($tmp = // line 67(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 67, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Likez ce qui vous parle") : ("Like what speaks to you")), "match_b1_desc" => (((($tmp = // line 68(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 68, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Offres, entreprises, recruteurs. On retient tout pour mieux vous connaître.") : ("Jobs, companies, recruiters. We remember everything to know you better.")), "match_b2_title" => (((($tmp = // line 69(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 69, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Recommandations sur mesure") : ("Tailored recommendations")), "match_b2_desc" => (((($tmp = // line 70(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 70, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Plus vous likez, plus on vous propose des offres alignées avec votre profil.") : ("The more you like, the more we suggest offers aligned with your profile.")), "match_b3_title" => (((($tmp = // line 71(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 71, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Les recruteurs viennent à vous") : ("Recruiters come to you")), "match_b3_desc" => (((($tmp = // line 72(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 72, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Quand votre profil match, c’est l’entreprise qui passe la première.") : ("When your profile matches, the company makes the first move.")), "match_b4_title" => (((($tmp = // line 73(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 73, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Offres externes incluses") : ("External offers included")), "match_b4_desc" => (((($tmp = // line 74(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 74, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("On indexe aussi des offres externes pour maximiser vos chances. Lien direct vers le site de l’employeur.") : ("We also index external offers to maximize your chances. Direct link to the employer’s site.")), "keywords_title" => (((($tmp = // line 76(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 76, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Cherchez par domaine") : ("Search by field")), "keywords_lede" => (((($tmp = // line 77(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 77, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Une porte d’entrée par métier") : ("One door per craft")), "popular_title" => (((($tmp = // line 78(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 78, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Offres populaires") : ("Popular jobs")), "popular_lede" => (((($tmp = // line 79(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 79, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Une sélection d’offres ouvertes en ce moment, par catégorie") : ("A selection of currently open positions, by category")), "btn_more" => (((($tmp = // line 80(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 80, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Tout voir") : ("See all")), "articles_title" => (((($tmp = // line 82(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 82, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Conseils, ressources & guides") : ("Advice, resources & guides")), "articles_lede" => (((($tmp = // line 83(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 83, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Pour rebondir, négocier, postuler mieux.") : ("To bounce back, negotiate and apply better.")), "articles_view_all" => (((($tmp = // line 84(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 84, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Voir tous les articles") : ("See all articles")), "read_article" => (((($tmp = // line 85(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 85, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Lire") : ("Read")), "final_title" => (((($tmp = // line 87(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 87, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Prêt à propulser votre carrière ?") : ("Ready to take your career further?")), "final_subtitle" => (((($tmp = // line 88(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 88, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Rejoignez celles et ceux qui ont déjà tourné la page.") : ("Join those who have already turned the page.")), "final_candidate" => (((($tmp = // line 89(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 89, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Je suis candidat·e") : ("I’m a candidate")), "final_recruiter" => (((($tmp = // line 90(isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 90, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Je recrute") : ("I’m hiring"))]; // line 1 $this->parent = $this->load("application/whileresume/website/candidates/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 93 /** * @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["page"]) || array_key_exists("page", $context) ? $context["page"] : (function () { throw new RuntimeError('Variable "page" does not exist.', 93, $this->source); })()), "shortTitle", [], "any", false, false, false, 93), "html", null, true); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 94 /** * @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["page"]) || array_key_exists("page", $context) ? $context["page"] : (function () { throw new RuntimeError('Variable "page" does not exist.', 94, $this->source); })()), "shortDescription", [], "any", false, false, false, 94), "html", null, true); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 95 /** * @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 $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["page"]) || array_key_exists("page", $context) ? $context["page"] : (function () { throw new RuntimeError('Variable "page" does not exist.', 95, $this->source); })()), "robots", [], "any", false, false, false, 95), "html", null, true); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 96 /** * @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")); yield from $this->load("/vitrine/lexend/components/languages/canonical_classic.html.twig", 96)->unwrap()->yield($context); $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 98 /** * @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 99 yield " "; yield from $this->yieldParentBlock("css", $context, $blocks); yield " <style> /* ═══════════════════════════════════════════════════════════════════ VARIABLES ═══════════════════════════════════════════════════════════════════ */ :root{ --wr-bg:#FBFCFE; --wr-card:#FFFFFF; --wr-violet:#8A63C0; --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); } /* ═══════════════════════════════════════════════════════════════════ PLEINE LARGEUR — On retire la réservation d'espace de la sidebar droite ═══════════════════════════════════════════════════════════════════ */ 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} /* ═══════════════════════════════════════════════════════════════════ SECTIONS GENERIC — Fond UNIFIÉ partout (pas d'alternance) ═══════════════════════════════════════════════════════════════════ */ .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}} /* Filet décoratif au lieu d'un changement de couleur */ .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} /* ═══ Eyebrow ═══ */ .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)}} /* ═══ Titres — THIN + LARGE ═══ */ .wr-title{ font-family:inherit; font-weight:500; font-size:36px;line-height:1.1;letter-spacing:-0.03em; color:var(--wr-ink); margin:0 auto 16px; max-width:920px; } @media(min-width:768px){.wr-title{font-size:48px}} @media(min-width:1024px){.wr-title{font-size:58px}} .wr-title--sm{font-size:30px} @media(min-width:768px){.wr-title--sm{font-size:38px}} .wr-title em{font-style:normal;font-weight:600;color:var(--wr-violet)} .wr-lede{ font-size:17px;line-height:1.55;font-weight:400; color:var(--wr-ink-2); margin:0 auto;max-width:680px; } .wr-section-head{text-align:center;margin-bottom:56px} /* ═══════════════════════════════════════════════════════════════════ HERO — Plein texte, fond uni, animation discrète ═══════════════════════════════════════════════════════════════════ */ .hero{ position:relative; background:var(--wr-bg); padding:100px 32px 80px; overflow:hidden; } @media(max-width:768px){.hero{padding:60px 20px 60px}} /* Décor : 2 blobs très flous violet pâle, plus discrets */ .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; bottom:-200px;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-dots{ position:absolute;inset:0; background-image:radial-gradient(circle,rgba(138,99,192,.07) 1px,transparent 1px); background-size:32px 32px; mask-image:radial-gradient(ellipse 60% 45% at 50% 45%,black,transparent 80%); -webkit-mask-image:radial-gradient(ellipse 60% 45% at 50% 45%,black,transparent 80%); pointer-events:none; } .hero-inner{position:relative;z-index:2;max-width:1100px;margin:0 auto;text-align:center} .hero-badge{ display:inline-flex;align-items:center;gap:8px; padding:7px 14px;border-radius:100px; background:var(--wr-card); border:1px solid var(--wr-line-2); color:var(--wr-violet-dark); font-size:12px;font-weight:500; margin-bottom:28px; box-shadow:var(--wr-shadow); opacity:0;transform:translateY(8px); animation:wrFadeUp .8s ease forwards; } .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:#10B981;box-shadow:0 0 0 0 rgba(16,185,129,.4);animation:wrPulse2 2s ease infinite} @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)}} @keyframes wrFadeUp{to{opacity:1;transform:translateY(0)}} /* ═══ Titre hero — THIN large ═══ */ .hero-title{ font-weight:400; font-size:44px;line-height:1.04;letter-spacing:-0.04em; color:var(--wr-ink); margin:0 auto 24px; max-width:1000px; } @media(min-width:768px){.hero-title{font-size:68px;letter-spacing:-0.045em}} @media(min-width:1100px){.hero-title{font-size:88px}} .hero-title-line{display:block;opacity:0;transform:translateY(12px);animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) forwards} .hero-title-line:nth-child(1){animation-delay:.1s} .hero-title-line:nth-child(2){animation-delay:.25s} .hero-title-line:nth-child(3){animation-delay:.4s} .hero-title-accent{ color:var(--wr-violet); font-weight:500; position:relative;display:inline-block; } .hero-title-accent::after{ content:\"\"; position:absolute;left:0;right:0;bottom:.04em; height:.1em; background:var(--wr-violet); opacity:.22; transform-origin:left center; transform:scaleX(0); animation:wrUnderline 1.1s cubic-bezier(.6,0,.4,1) 1s forwards; border-radius:2px; } @keyframes wrUnderline{to{transform:scaleX(1)}} .hero-lede{ font-size:17px;line-height:1.55;color:var(--wr-ink-2);font-weight:400; margin:0 auto 36px;max-width:620px; opacity:0;animation:wrFadeUp .9s ease 1.1s forwards; } @media(min-width:768px){.hero-lede{font-size:18px}} /* ═══════════════════════════════════════════════════════════════════ HERO — RECHERCHE INLINE (avec résultats AJAX) ═══════════════════════════════════════════════════════════════════ */ .hero-search-wrap{ max-width:680px;margin:0 auto 28px; opacity:0;animation:wrFadeUp .9s ease 1.3s forwards; } .hero-search{ display:flex;align-items:center; background:var(--wr-card); border:1px solid var(--wr-line-2); border-radius:16px; padding:6px; box-shadow:0 2px 6px rgba(30,27,46,.04),0 16px 40px rgba(138,99,192,.08); transition:transform .2s,box-shadow .2s,border-color .2s,border-radius .25s; position:relative;z-index:5; } .hero-search:focus-within, .hero-search.has-results{ border-color:var(--wr-violet-2); box-shadow:0 4px 10px rgba(30,27,46,.05),0 20px 50px rgba(138,99,192,.16); } .hero-search.has-results{ border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:var(--wr-line); } .hero-search-icon{ display:flex;align-items:center;justify-content:center; width:42px;height:42px;flex-shrink:0;color:var(--wr-muted-2); } .hero-search-icon svg{width:18px;height:18px} .hero-search-input{ flex:1;border:0;outline:0;background:transparent; font-size:15px;font-family:inherit;color:var(--wr-ink); padding:0 6px;height:42px;min-width:0; } .hero-search-input::placeholder{color:var(--wr-muted-2)} .hero-search-clear{ display:none;align-items:center;justify-content:center; width:32px;height:32px;flex-shrink:0;color:var(--wr-muted-2); border:0;background:transparent;cursor:pointer;border-radius:8px; transition:background .15s,color .15s; } .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)} .hero-search-clear svg{width:14px;height:14px} .hero-search-clear.is-visible{display:inline-flex} .hero-search-btn{ background:var(--wr-violet);color:#fff; border:0;padding:0 22px;border-radius:11px; font-size:14px;font-weight:600;font-family:inherit; cursor:pointer;flex-shrink:0;height:42px; display:inline-flex;align-items:center;gap:6px; transition:background .15s,transform .15s,box-shadow .15s; box-shadow:0 4px 12px rgba(138,99,192,.3); } .hero-search-btn:hover{background:var(--wr-violet-dark);transform:translateY(-1px);box-shadow:0 6px 18px rgba(138,99,192,.4)} .hero-search-btn svg{width:13px;height:13px} @media(max-width:540px){.hero-search-btn span{display:none}.hero-search-btn{padding:0 14px}} /* Résultats inline */ .hero-search-results{ background:var(--wr-card); border:1px solid var(--wr-line); border-top:0; border-radius:0 0 16px 16px; max-height:0; overflow:hidden; transition:max-height .35s ease,padding .25s ease; text-align:left; box-shadow:0 16px 40px rgba(138,99,192,.1); padding:0 14px; } .hero-search-results.is-visible{max-height:560px;overflow-y:auto;padding:8px 14px 12px} .hero-search-results::-webkit-scrollbar{width:6px} .hero-search-results::-webkit-scrollbar-thumb{background:var(--wr-line-2);border-radius:6px} .hero-search-meta{ display:flex;align-items:center;justify-content:space-between;gap:10px; padding:10px 4px; font-size:11.5px;color:var(--wr-muted); text-transform:uppercase;letter-spacing:.08em;font-weight:600; } .hero-search-meta strong{color:var(--wr-violet);font-weight:700;font-size:13px} .hero-search-meta a{color:var(--wr-violet);font-weight:700;display:inline-flex;align-items:center;gap:4px} .hero-search-meta a svg{width:11px;height:11px} .hero-search-result{ display:flex;align-items:center;gap:12px; padding:10px 8px;border-radius:11px; text-decoration:none;color:inherit; transition:background .15s; } .hero-search-result:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit} .hero-search-result-logo{ width:38px;height:38px;border-radius:10px;flex-shrink:0; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; font-weight:700;font-size:13px;overflow:hidden; } .hero-search-result-logo img{width:100%;height:100%;object-fit:cover} .hero-search-result-info{flex:1;min-width:0} .hero-search-result-title{ font-weight:600;font-size:13.5px;color:var(--wr-ink); margin:0 0 2px;line-height:1.3; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; } .hero-search-result-meta{ font-size:11.5px;color:var(--wr-muted);margin:0; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; } .hero-search-result-cta{ font-size:11px;font-weight:600;color:var(--wr-violet); text-transform:uppercase;letter-spacing:.06em; display:inline-flex;align-items:center;gap:4px;flex-shrink:0; opacity:0;transition:opacity .15s,transform .15s;transform:translateX(-4px); } .hero-search-result:hover .hero-search-result-cta{opacity:1;transform:translateX(0)} .hero-search-result-cta svg{width:11px;height:11px} .hero-search-empty{ text-align:center;padding:36px 20px;color:var(--wr-muted); } .hero-search-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-search-empty-icon svg{width:22px;height:22px} .hero-search-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px} .hero-search-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)} .hero-search-loading{ text-align:center;padding:30px 20px;color:var(--wr-muted);font-size:13px; display:flex;align-items:center;justify-content:center;gap:10px; } .hero-search-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)}} /* Byline */ .hero-byline{ display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap; font-size:13px;color:var(--wr-muted); opacity:0;animation:wrFadeUp .9s ease 1.5s forwards; } .hero-byline strong{color:var(--wr-violet);font-weight:700;font-size:15px;margin-right:3px} .hero-byline-sep{color:var(--wr-line-2)} .hero-byline svg{width:14px;height:14px;color:#10B981;flex-shrink:0} .hero-byline span{display:inline-flex;align-items:center;gap:6px} @media(max-width:540px){.hero-byline{gap:10px;font-size:12px}.hero-byline-sep{display:none}} /* ═══════════════════════════════════════════════════════════════════ SECTION : 3 PARCOURS ═══════════════════════════════════════════════════════════════════ */ .paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px} @media(max-width:991px){.paths-grid{grid-template-columns:1fr;gap:14px}} .path-card{ position:relative; background:var(--wr-card); border:1px solid var(--wr-line); border-radius:20px;padding:28px; display:flex;flex-direction:column; transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease; box-shadow:var(--wr-shadow); } .path-card:hover{transform:translateY(-4px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2)} .path-card-illu{ width:64px;height:64px;border-radius:16px; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; margin-bottom:22px; } .path-card-illu svg{width:30px;height:30px} .path-card-label{ display:inline-block; font-size:11px;font-weight:600; color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.1em; margin-bottom:10px;align-self:flex-start; } .path-card-title{ font-weight:500;font-size:22px;line-height:1.25;letter-spacing:-0.015em; color:var(--wr-ink);margin:0 0 10px; } .path-card-desc{ font-size:14px;line-height:1.6;color:var(--wr-muted); margin:0 0 22px;flex:1; } .path-card-cta{ display:inline-flex;align-items:center;justify-content:center;gap:6px; background:var(--wr-violet);color:#fff; padding:12px 18px;border-radius:11px; font-size:13px;font-weight:600; align-self:stretch; transition:background .15s,transform .15s,box-shadow .15s; box-shadow:0 2px 8px rgba(138,99,192,.2); } .path-card-cta:hover{background:var(--wr-violet-dark);color:#fff;text-decoration:none;transform:translateY(-1px);box-shadow:0 4px 12px rgba(138,99,192,.3)} .path-card-cta svg{width:13px;height:13px;transition:transform .15s} .path-card-cta:hover svg{transform:translateX(3px)} /* ═══════════════════════════════════════════════════════════════════ MÉTHODE ═══════════════════════════════════════════════════════════════════ */ .method-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px} @media(max-width:991px){.method-grid{grid-template-columns:repeat(2,1fr)}} @media(max-width:540px){.method-grid{grid-template-columns:1fr}} .method-step{ background:var(--wr-card); border:1px solid var(--wr-line); border-radius:18px;padding:24px; transition:transform .2s,box-shadow .2s,border-color .2s; } .method-step:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-soft)} .method-num{ display:inline-flex;align-items:center;justify-content:center; width:36px;height:36px;border-radius:10px; background:var(--wr-violet-soft);color:var(--wr-violet); font-weight:700;font-size:14px;margin-bottom:16px; } .method-title{ font-weight:500;font-size:17px;line-height:1.25;letter-spacing:-0.005em; color:var(--wr-ink);margin:0 0 6px; } .method-desc{font-size:13px;line-height:1.55;color:var(--wr-muted);margin:0} /* ═══════════════════════════════════════════════════════════════════ MATCH ═══════════════════════════════════════════════════════════════════ */ .match-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center} @media(max-width:991px){.match-grid{grid-template-columns:1fr;gap:40px}} .match-text .wr-title{margin-left:0;text-align:left} .match-text .wr-lede{margin-left:0;text-align:left} .match-text .wr-eyebrow{margin-bottom:20px} .match-features{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:32px} @media(max-width:540px){.match-features{grid-template-columns:1fr}} .match-feature{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:14px;padding:18px; transition:transform .15s,border-color .15s,box-shadow .15s; } .match-feature:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)} .match-feature-icon{ width:34px;height:34px;border-radius:10px; background:var(--wr-violet-soft);color:var(--wr-violet); display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px; } .match-feature-icon svg{width:16px;height:16px} .match-feature-title{font-weight:600;font-size:14px;line-height:1.3;color:var(--wr-ink);margin:0 0 5px} .match-feature-desc{font-size:12.5px;line-height:1.5;color:var(--wr-muted);margin:0} .match-visual{position:relative;display:flex;justify-content:center;align-items:center;padding:40px 0} .match-stack{position:relative;width:100%;max-width:340px;height:340px} .match-stack-card{ position:absolute; background:var(--wr-card);border:1px solid var(--wr-line); border-radius:16px;padding:14px; display:flex;align-items:center;gap:12px; box-shadow:var(--wr-shadow);width:100%; transition:transform .3s ease; } .match-stack-card:nth-child(1){top:0;transform:rotate(-6deg) translateX(-10px);z-index:1;animation:wrFloat 6s ease-in-out infinite} .match-stack-card:nth-child(2){top:78px;left:14px;transform:rotate(2deg);z-index:3;box-shadow:0 16px 40px rgba(138,99,192,.18);animation:wrFloat 6s ease-in-out -2s infinite} .match-stack-card:nth-child(3){top:156px;transform:rotate(-3deg) translateX(8px);z-index:2;animation:wrFloat 6s ease-in-out -4s infinite} .match-stack-card:nth-child(4){top:234px;left:20px;transform:rotate(4deg);z-index:1;animation:wrFloat 6s ease-in-out -1s infinite} @keyframes wrFloat{0%,100%{transform:translateY(0) rotate(var(--r,0))}50%{transform:translateY(-6px) rotate(var(--r,0))}} .match-stack-logo{ width:38px;height:38px;border-radius:10px; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; font-weight:700;font-size:14px;flex-shrink:0; } .match-stack-info{flex:1;min-width:0} .match-stack-title{font-weight:600;font-size:13px;color:var(--wr-ink);margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3} .match-stack-meta{font-size:11px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .match-stack-heart{width:28px;height:28px;border-radius:50%;background:#FEE2E2;color:#EF4444;display:flex;align-items:center;justify-content:center;flex-shrink:0} .match-stack-heart svg{width:13px;height:13px;fill:currentColor} /* ═══════════════════════════════════════════════════════════════════ 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;font-size:18px;letter-spacing:-0.01em;color:var(--wr-ink);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)} /* ═══════════════════════════════════════════════════════════════════ KEYWORDS ═══════════════════════════════════════════════════════════════════ */ .keywords-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:920px;margin:0 auto} .keyword-pill{ display:inline-flex;align-items:center;gap:8px; padding:9px 16px;border-radius:100px; background:var(--wr-card);border:1px solid var(--wr-line-2); color:var(--wr-ink-2); font-size:13.5px;font-weight:500; transition:transform .15s,border-color .15s,background .15s,color .15s,box-shadow .15s; } .keyword-pill:hover{transform:translateY(-2px);border-color:var(--wr-violet);background:var(--wr-violet-soft);color:var(--wr-violet-dark);text-decoration:none;box-shadow:0 4px 10px rgba(138,99,192,.12)} .keyword-pill-icon{font-size:14px;line-height:1} /* ═══════════════════════════════════════════════════════════════════ OFFRES POPULAIRES ═══════════════════════════════════════════════════════════════════ */ .listings-block{margin-bottom:32px} .listings-block:last-child{margin-bottom:0} .listings-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap} .listings-block-title{ display:inline-flex;align-items:center;gap:10px; font-weight:500;font-size:18px;letter-spacing:-0.005em; color:var(--wr-ink);margin:0; } .listings-block-icon{font-size:20px;line-height:1} .listings-block-link{ display:inline-flex;align-items:center;gap:4px; padding:6px 12px;border-radius:100px; font-size:12px;font-weight:600; color:var(--wr-violet); text-transform:uppercase;letter-spacing:.06em; border:1px solid var(--wr-violet-soft); background:var(--wr-card); transition:background .15s,border-color .15s,transform .15s; } .listings-block-link:hover{background:var(--wr-violet-soft);border-color:var(--wr-violet);text-decoration:none;color:var(--wr-violet-dark);transform:translateX(2px)} .listings-block-link svg{width:11px;height:11px} .listings-jobs{display:grid;grid-template-columns:1fr 1fr;gap:10px} @media(max-width:768px){.listings-jobs{grid-template-columns:1fr}} .listing-job{ display:flex;align-items:center;gap:14px; background:var(--wr-card);border:1px solid var(--wr-line); border-radius:14px;padding:12px; transition:transform .15s,border-color .15s,box-shadow .15s; } .listing-job:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow);color:inherit;text-decoration:none} .listing-job-logo{ width:42px;height:42px;border-radius:11px;flex-shrink:0; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; font-weight:700;font-size:14px;overflow:hidden; } .listing-job-logo img{width:100%;height:100%;object-fit:cover} .listing-job-info{flex:1;min-width:0} .listing-job-title{font-weight:600;font-size:13.5px;color:var(--wr-ink);margin:0 0 2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .listing-job-meta{font-size:11.5px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .listing-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .listing-job-arrow svg{width:14px;height:14px} .listing-job:hover .listing-job-arrow{color:var(--wr-violet);transform:translateX(2px)} /* ═══════════════════════════════════════════════════════════════════ ARTICLES ═══════════════════════════════════════════════════════════════════ */ .articles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} @media(max-width:991px){.articles-grid{grid-template-columns:repeat(2,1fr)}} @media(max-width:640px){.articles-grid{grid-template-columns:1fr}} .wr-article{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:18px;overflow:hidden; display:flex;flex-direction:column; transition:transform .2s,box-shadow .2s,border-color .2s; } .wr-article:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2);color:inherit;text-decoration:none} .wr-article-img{aspect-ratio:16/10;background:var(--wr-violet-soft);overflow:hidden;flex-shrink:0} .wr-article-img img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease} .wr-article:hover .wr-article-img img{transform:scale(1.04)} .wr-article-body{padding:18px;flex:1;display:flex;flex-direction:column} .wr-article-meta{font-size:11px;font-weight:600;color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px} .wr-article-title{font-weight:500;font-size:16px;line-height:1.35;letter-spacing:-0.005em;color:var(--wr-ink);margin:0 0 8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .wr-article-excerpt{font-size:13px;line-height:1.5;color:var(--wr-muted);margin:0 0 14px;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .wr-article-link{font-size:12px;font-weight:600;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.06em;display:inline-flex;align-items:center;gap:4px} .wr-article-link svg{width:11px;height:11px;transition:transform .15s} .wr-article:hover .wr-article-link svg{transform:translateX(3px)} .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-card);border:1px solid var(--wr-line-2); color:var(--wr-violet); font-size:13px;font-weight:600; transition:background .15s,transform .15s,border-color .15s; } .articles-cta a:hover{background:var(--wr-violet-soft);border-color:var(--wr-violet);transform:translateY(-2px);text-decoration:none;color:var(--wr-violet-dark)} .articles-cta svg{width:12px;height:12px} /* ═══════════════════════════════════════════════════════════════════ CTA FINAL ═══════════════════════════════════════════════════════════════════ */ .final-card{ position:relative; background:linear-gradient(135deg,var(--wr-violet) 0%,var(--wr-violet-dark) 100%); border-radius:28px; padding:64px 32px;text-align:center; color:#fff;overflow:hidden; box-shadow:0 20px 60px -12px rgba(138,99,192,.4); } @media(max-width:768px){.final-card{padding:48px 24px;border-radius:22px}} .final-card::before{content:\"\";position:absolute;top:-100px;right:-100px;width:300px;height:300px;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 65%);pointer-events:none} .final-card::after{content:\"\";position:absolute;bottom:-120px;left:-100px;width:280px;height:280px;background:radial-gradient(circle,rgba(255,255,255,.12) 0%,transparent 65%);pointer-events:none} .final-title{font-weight:500;font-size:32px;line-height:1.1;letter-spacing:-0.025em;color:#fff;margin:0 0 14px;position:relative;z-index:2} @media(min-width:768px){.final-title{font-size:44px}} .final-subtitle{font-size:16px;line-height:1.55;color:rgba(255,255,255,.88);margin:0 auto 32px;max-width:520px;position:relative;z-index:2} .final-buttons{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;position:relative;z-index:2} .final-btn{ display:inline-flex;align-items:center;gap:8px; padding:14px 24px;border-radius:12px; font-size:14px;font-weight:600; transition:transform .15s,background .15s,box-shadow .15s; } .final-btn--primary{background:#fff;color:var(--wr-violet-dark)} .final-btn--primary:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.15);color:var(--wr-violet-dark);text-decoration:none} .final-btn--ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)} .final-btn--ghost:hover{background:rgba(255,255,255,.2);transform:translateY(-2px);color:#fff;text-decoration:none} .final-btn svg{width:14px;height:14px;transition:transform .15s} .final-btn:hover svg{transform:translateX(3px)} </style>"; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 724 /** * @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 725 yield " <div class=\"wr\"> "; // line 728 yield " <section class=\"hero\"> <span class=\"hero-dots\"></span> <div class=\"hero-inner\"> <span class=\"hero-badge\"> <span class=\"hero-badge-dot\"></span> "; // line 734 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.', 734, $this->source); })()), "hero_eyebrow", [], "any", false, false, false, 734), "html", null, true); yield " </span> <h1 class=\"hero-title\"> <span class=\"hero-title-line\">"; // line 738 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.', 738, $this->source); })()), "hero_title_1", [], "any", false, false, false, 738), "html", null, true); yield "</span> <span class=\"hero-title-line\"><span class=\"hero-title-accent\">"; // line 739 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.', 739, $this->source); })()), "hero_title_2", [], "any", false, false, false, 739), "html", null, true); yield "</span></span> <span class=\"hero-title-line\">"; // line 740 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.', 740, $this->source); })()), "hero_title_3", [], "any", false, false, false, 740), "html", null, true); yield "</span> </h1> <p class=\"hero-lede\">"; // line 743 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.', 743, $this->source); })()), "hero_lede", [], "any", false, false, false, 743), "html", null, true); yield "</p> "; // line 746 yield " <div class=\"hero-search-wrap\"> <form class=\"hero-search\" id=\"wrHeroSearch\" autocomplete=\"off\" data-search-url=\""; // line 748 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 748, $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 749 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 749, $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 "\"> <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\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/> </svg> </span> <input type=\"text\" name=\"q\" id=\"wrHeroSearchInput\" class=\"hero-search-input\" placeholder=\""; // line 755 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.', 755, $this->source); })()), "hero_search_placeholder", [], "any", false, false, false, 755), "html", null, true); yield "\" /> <button type=\"button\" class=\"hero-search-clear\" id=\"wrHeroSearchClear\" aria-label=\""; // line 756 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.', 756, $this->source); })()), "search_clear", [], "any", false, false, false, 756), "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> <button type=\"submit\" class=\"hero-search-btn\"> <span>"; // line 762 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.', 762, $this->source); })()), "hero_search_button", [], "any", false, false, false, 762), "html", null, true); yield "</span> <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> </button> </form> "; // line 770 yield " <div class=\"hero-search-results\" id=\"wrHeroSearchResults\" aria-live=\"polite\"></div> </div> <div class=\"hero-byline\"> <span><strong>"; // line 774 yield (((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.', 774, $this->source); })()), "hero_byline_jobs", [], "any", false, false, false, 774), "html", null, true); yield "</span> <span class=\"hero-byline-sep\">·</span> <span>"; // line 776 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.', 776, $this->source); })()), "hero_byline_apps", [], "any", false, false, false, 776), "html", null, true); yield "</span> <span class=\"hero-byline-sep\">·</span> <span> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg> "; // line 780 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.', 780, $this->source); })()), "hero_byline_free", [], "any", false, false, false, 780), "html", null, true); yield " </span> </div> </div> </section> "; // line 787 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <span class=\"wr-eyebrow\">"; // line 790 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.', 790, $this->source); })()), "paths_eyebrow", [], "any", false, false, false, 790), "html", null, true); yield "</span> <h2 class=\"wr-title\">"; // line 791 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.', 791, $this->source); })()), "paths_title", [], "any", false, false, false, 791), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 792 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.', 792, $this->source); })()), "paths_lede", [], "any", false, false, false, 792), "html", null, true); yield "</p> </div> <div class=\"paths-grid\"> <article class=\"path-card\"> <div class=\"path-card-illu\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/><polyline points=\"14 2 14 8 20 8\"/> <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"/> </svg> </div> <span class=\"path-card-label\">"; // line 803 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.', 803, $this->source); })()), "path1_label", [], "any", false, false, false, 803), "html", null, true); yield "</span> <h3 class=\"path-card-title\">"; // line 804 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.', 804, $this->source); })()), "path1_title", [], "any", false, false, false, 804), "html", null, true); yield "</h3> <p class=\"path-card-desc\">"; // line 805 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.', 805, $this->source); })()), "path1_desc", [], "any", false, false, false, 805), "html", null, true); yield "</p> <a href=\""; // line 806 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.', 806, $this->source); })()), "request", [], "any", false, false, false, 806), "locale", [], "any", false, false, false, 806))); yield "\" class=\"path-card-cta\"> "; // line 807 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.', 807, $this->source); })()), "path1_cta", [], "any", false, false, false, 807), "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> </article> <article class=\"path-card\"> <div class=\"path-card-illu\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M9 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2h-4\"/> <polyline points=\"9 7 12 4 15 7\"/><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"14\"/> </svg> </div> <span class=\"path-card-label\">"; // line 819 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.', 819, $this->source); })()), "path2_label", [], "any", false, false, false, 819), "html", null, true); yield "</span> <h3 class=\"path-card-title\">"; // line 820 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.', 820, $this->source); })()), "path2_title", [], "any", false, false, false, 820), "html", null, true); yield "</h3> <p class=\"path-card-desc\">"; // line 821 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.', 821, $this->source); })()), "path2_desc", [], "any", false, false, false, 821), "html", null, true); yield "</p> <a href=\""; // line 822 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.', 822, $this->source); })()), "request", [], "any", false, false, false, 822), "locale", [], "any", false, false, false, 822))); yield "\" class=\"path-card-cta\"> "; // line 823 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.', 823, $this->source); })()), "path2_cta", [], "any", false, false, false, 823), "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> </article> <article class=\"path-card\"> <div class=\"path-card-illu\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <rect x=\"2\" y=\"6\" width=\"20\" height=\"14\" rx=\"2\"/> <path d=\"M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"/> <line x1=\"2\" y1=\"13\" x2=\"22\" y2=\"13\"/> </svg> </div> <span class=\"path-card-label\">"; // line 836 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.', 836, $this->source); })()), "path3_label", [], "any", false, false, false, 836), "html", null, true); yield "</span> <h3 class=\"path-card-title\">"; // line 837 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.', 837, $this->source); })()), "path3_title", [], "any", false, false, false, 837), "html", null, true); yield "</h3> <p class=\"path-card-desc\">"; // line 838 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.', 838, $this->source); })()), "path3_desc", [], "any", false, false, false, 838), "html", null, true); yield "</p> <a href=\""; // line 839 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 839, $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=\"path-card-cta\"> "; // line 840 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.', 840, $this->source); })()), "path3_cta", [], "any", false, false, false, 840), "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> </article> </div> </div> </section> "; // line 849 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <span class=\"wr-eyebrow\">"; // line 852 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.', 852, $this->source); })()), "how_eyebrow", [], "any", false, false, false, 852), "html", null, true); yield "</span> <h2 class=\"wr-title\">"; // line 853 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.', 853, $this->source); })()), "how_title", [], "any", false, false, false, 853), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 854 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.', 854, $this->source); })()), "how_lede", [], "any", false, false, false, 854), "html", null, true); yield "</p> </div> <div class=\"method-grid\"> <div class=\"method-step\"> <div class=\"method-num\">01</div> <h3 class=\"method-title\">"; // line 860 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.', 860, $this->source); })()), "step1_title", [], "any", false, false, false, 860), "html", null, true); yield "</h3> <p class=\"method-desc\">"; // line 861 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.', 861, $this->source); })()), "step1_desc", [], "any", false, false, false, 861), "html", null, true); yield "</p> </div> <div class=\"method-step\"> <div class=\"method-num\">02</div> <h3 class=\"method-title\">"; // line 865 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.', 865, $this->source); })()), "step2_title", [], "any", false, false, false, 865), "html", null, true); yield "</h3> <p class=\"method-desc\">"; // line 866 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.', 866, $this->source); })()), "step2_desc", [], "any", false, false, false, 866), "html", null, true); yield "</p> </div> <div class=\"method-step\"> <div class=\"method-num\">03</div> <h3 class=\"method-title\">"; // line 870 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.', 870, $this->source); })()), "step3_title", [], "any", false, false, false, 870), "html", null, true); yield "</h3> <p class=\"method-desc\">"; // line 871 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.', 871, $this->source); })()), "step3_desc", [], "any", false, false, false, 871), "html", null, true); yield "</p> </div> <div class=\"method-step\"> <div class=\"method-num\">04</div> <h3 class=\"method-title\">"; // line 875 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.', 875, $this->source); })()), "step4_title", [], "any", false, false, false, 875), "html", null, true); yield "</h3> <p class=\"method-desc\">"; // line 876 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.', 876, $this->source); })()), "step4_desc", [], "any", false, false, false, 876), "html", null, true); yield "</p> </div> </div> </div> </section> "; // line 883 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"match-grid\"> <div class=\"match-text\"> <span class=\"wr-eyebrow\">"; // line 887 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.', 887, $this->source); })()), "match_eyebrow", [], "any", false, false, false, 887), "html", null, true); yield "</span> <h2 class=\"wr-title wr-title--sm\">"; // line 888 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.', 888, $this->source); })()), "match_title", [], "any", false, false, false, 888), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 889 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.', 889, $this->source); })()), "match_lede", [], "any", false, false, false, 889), "html", null, true); yield "</p> <div class=\"match-features\"> <div class=\"match-feature\"> <div class=\"match-feature-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg> </div> <h4 class=\"match-feature-title\">"; // line 896 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.', 896, $this->source); })()), "match_b1_title", [], "any", false, false, false, 896), "html", null, true); yield "</h4> <p class=\"match-feature-desc\">"; // line 897 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.', 897, $this->source); })()), "match_b1_desc", [], "any", false, false, false, 897), "html", null, true); yield "</p> </div> <div class=\"match-feature\"> <div class=\"match-feature-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\"/><circle cx=\"12\" cy=\"12\" r=\"6\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/></svg> </div> <h4 class=\"match-feature-title\">"; // line 903 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.', 903, $this->source); })()), "match_b2_title", [], "any", false, false, false, 903), "html", null, true); yield "</h4> <p class=\"match-feature-desc\">"; // line 904 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.', 904, $this->source); })()), "match_b2_desc", [], "any", false, false, false, 904), "html", null, true); yield "</p> </div> <div class=\"match-feature\"> <div class=\"match-feature-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg> </div> <h4 class=\"match-feature-title\">"; // line 910 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.', 910, $this->source); })()), "match_b3_title", [], "any", false, false, false, 910), "html", null, true); yield "</h4> <p class=\"match-feature-desc\">"; // line 911 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.', 911, $this->source); })()), "match_b3_desc", [], "any", false, false, false, 911), "html", null, true); yield "</p> </div> <div class=\"match-feature\"> <div class=\"match-feature-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/><polyline points=\"15 3 21 3 21 9\"/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"/></svg> </div> <h4 class=\"match-feature-title\">"; // line 917 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.', 917, $this->source); })()), "match_b4_title", [], "any", false, false, false, 917), "html", null, true); yield "</h4> <p class=\"match-feature-desc\">"; // line 918 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.', 918, $this->source); })()), "match_b4_desc", [], "any", false, false, false, 918), "html", null, true); yield "</p> </div> </div> </div> <div class=\"match-visual\"> <div class=\"match-stack\"> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">A</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Lead Designer</p> <p class=\"match-stack-meta\">Acme · Remote</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">N</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Frontend Engineer</p> <p class=\"match-stack-meta\">Notion · Paris</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">L</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Product Manager</p> <p class=\"match-stack-meta\">Linear · "; // line 945 yield (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 945, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("Hybride") : ("Hybrid")); yield "</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">F</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Data Analyst</p> <p class=\"match-stack-meta\">Figma · Lyon</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> </div> </div> </div> </div> </section> "; // line 964 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <span class=\"wr-eyebrow\">"; // line 967 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.', 967, $this->source); })()), "apps_eyebrow", [], "any", false, false, false, 967), "html", null, true); yield "</span> <h2 class=\"wr-title wr-title--sm\">"; // line 968 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.', 968, $this->source); })()), "apps_title", [], "any", false, false, false, 968), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 969 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.', 969, $this->source); })()), "apps_lede", [], "any", false, false, false, 969), "html", null, true); yield "</p> </div> <div class=\"apps-grid\"> <a href=\"#\" 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 977 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.', 977, $this->source); })()), "apps_ios", [], "any", false, false, false, 977), "html", null, true); yield "</h3> <p class=\"app-card-desc\">"; // line 978 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.', 978, $this->source); })()), "apps_ios_desc", [], "any", false, false, false, 978), "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=\"#\" 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 987 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.', 987, $this->source); })()), "apps_android", [], "any", false, false, false, 987), "html", null, true); yield "</h3> <p class=\"app-card-desc\">"; // line 988 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.', 988, $this->source); })()), "apps_android_desc", [], "any", false, false, false, 988), "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 993 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.', 993, $this->source); })()), "request", [], "any", false, false, false, 993), "locale", [], "any", false, false, false, 993))); yield "\" 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 997 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.', 997, $this->source); })()), "apps_web", [], "any", false, false, false, 997), "html", null, true); yield "</h3> <p class=\"app-card-desc\">"; // line 998 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.', 998, $this->source); })()), "apps_web_desc", [], "any", false, false, false, 998), "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 1008 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.', 1008, $this->source); })())) > 0))) { // line 1009 yield " <section class=\"wr-section wr-section--tight\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">"; // line 1012 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.', 1012, $this->source); })()), "keywords_title", [], "any", false, false, false, 1012), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 1013 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.', 1013, $this->source); })()), "keywords_lede", [], "any", false, false, false, 1013), "html", null, true); yield "</p> </div> <div class=\"keywords-list\"> "; // line 1017 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["popularKeywords"]) || array_key_exists("popularKeywords", $context) ? $context["popularKeywords"] : (function () { throw new RuntimeError('Variable "popularKeywords" does not exist.', 1017, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["kw"]) { // line 1018 yield " <a href=\""; if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 1018, $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 "?q="; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::urlencode(CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "keyword", [], "any", false, false, false, 1018)), "html", null, true); yield "\" class=\"keyword-pill\"> "; // line 1019 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "icon", [], "any", false, false, false, 1019)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"keyword-pill-icon\">"; yield CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "icon", [], "any", false, false, false, 1019); yield "</span>"; } // line 1020 yield " <span>"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["kw"], "label", [], "any", false, false, false, 1020), "html", null, true); yield "</span> </a> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['kw'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 1023 yield " </div> </div> </section> "; } // line 1027 yield " "; // line 1029 yield " "; if ((array_key_exists("popularJobs", $context) && (Twig\Extension\CoreExtension::length($this->env->getCharset(), (isset($context["popularJobs"]) || array_key_exists("popularJobs", $context) ? $context["popularJobs"] : (function () { throw new RuntimeError('Variable "popularJobs" does not exist.', 1029, $this->source); })())) > 0))) { // line 1030 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">"; // line 1033 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.', 1033, $this->source); })()), "popular_title", [], "any", false, false, false, 1033), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 1034 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.', 1034, $this->source); })()), "popular_lede", [], "any", false, false, false, 1034), "html", null, true); yield "</p> </div> "; // line 1037 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable((isset($context["popularJobs"]) || array_key_exists("popularJobs", $context) ? $context["popularJobs"] : (function () { throw new RuntimeError('Variable "popularJobs" does not exist.', 1037, $this->source); })())); foreach ($context['_seq'] as $context["_key"] => $context["block"]) { // line 1038 yield " "; if ((Twig\Extension\CoreExtension::length($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", false, false, false, 1038)) > 0)) { // line 1039 yield " <div class=\"listings-block\"> <div class=\"listings-block-head\"> <h3 class=\"listings-block-title\"> "; // line 1042 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["block"], "icon", [], "any", false, false, false, 1042)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<span class=\"listings-block-icon\">"; yield CoreExtension::getAttribute($this->env, $this->source, $context["block"], "icon", [], "any", false, false, false, 1042); yield "</span>"; } // line 1043 yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["block"], "label", [], "any", false, false, false, 1043), "html", null, true); yield " </h3> <a href=\""; // line 1045 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 1045, $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 "?q="; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::urlencode(CoreExtension::getAttribute($this->env, $this->source, $context["block"], "label", [], "any", false, false, false, 1045)), "html", null, true); yield "\" class=\"listings-block-link\"> "; // line 1046 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.', 1046, $this->source); })()), "btn_more", [], "any", false, false, false, 1046), "html", null, true); yield " <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg> </a> </div> <div class=\"listings-jobs\"> "; // line 1052 $context['_parent'] = $context; $context['_seq'] = CoreExtension::ensureTraversable(Twig\Extension\CoreExtension::slice($this->env->getCharset(), CoreExtension::getAttribute($this->env, $this->source, $context["block"], "jobs", [], "any", false, false, false, 1052), 0, 4)); foreach ($context['_seq'] as $context["_key"] => $context["j"]) { // line 1053 yield " <a href=\""; if ((CoreExtension::getAttribute($this->env, $this->source, $context["j"], "locale", [], "any", false, false, false, 1053) == "fr")) { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("locale_cvs_application_job_show", ["_locale" => CoreExtension::getAttribute($this->env, $this->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.', 1053, $this->source); })()), "request", [], "any", false, false, false, 1053), "locale", [], "any", false, false, false, 1053), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["j"], "slug", [], "any", false, false, false, 1053)]), "html", null, true); } else { yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("cvs_application_job_show", ["slug" => CoreExtension::getAttribute($this->env, $this->source, $context["j"], "slug", [], "any", false, false, false, 1053)]), "html", null, true); } yield "\" class=\"listing-job\"> <div class=\"listing-job-logo\"> "; // line 1055 if ((CoreExtension::getAttribute($this->env, $this->source, $context["j"], "image", [], "any", false, false, false, 1055) && CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["j"], "image", [], "any", false, false, false, 1055), "name", [], "any", false, false, false, 1055))) { // line 1056 yield " <img src=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Vich\UploaderBundle\Twig\Extension\UploaderExtension']->asset($context["j"], "imageFile"), "html", null, true); yield "\" alt=\"\"> "; } else { // line 1058 yield " "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(Twig\Extension\CoreExtension::upper($this->env->getCharset(), Twig\Extension\CoreExtension::slice($this->env->getCharset(), ((CoreExtension::getAttribute($this->env, $this->source, $context["j"], "companyName", [], "any", true, true, false, 1058)) ? (Twig\Extension\CoreExtension::default(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "companyName", [], "any", false, false, false, 1058), "?")) : ("?")), 0, 1)), "html", null, true); yield " "; } // line 1060 yield " </div> <div class=\"listing-job-info\"> <h4 class=\"listing-job-title\">"; // line 1062 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "jobTitle", [], "any", false, false, false, 1062), "html", null, true); yield "</h4> <p class=\"listing-job-meta\"> "; // line 1064 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "companyName", [], "any", false, false, false, 1064), "html", null, true); if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["j"], "city", [], "any", false, false, false, 1064)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield " · "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "city", [], "any", false, false, false, 1064), "html", null, true); } if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["j"], "employmentType", [], "any", false, false, false, 1064)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield " · "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["j"], "employmentType", [], "any", false, false, false, 1064), "html", null, true); } // line 1065 yield " </p> </div> <span class=\"listing-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> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['j'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 1072 yield " </div> </div> "; } // line 1075 yield " "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['block'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 1076 yield " </div> </section> "; } // line 1079 yield " "; // line 1081 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.', 1081, $this->source); })())) > 0))) { // line 1082 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">"; // line 1085 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["t"]) || array_key_exists("t", $context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.', 1085, $this->source); })()), "articles_title", [], "any", false, false, false, 1085), "html", null, true); yield "</h2> <p class=\"wr-lede\">"; // line 1086 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["t"]) || array_key_exists("t", $context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.', 1086, $this->source); })()), "articles_lede", [], "any", false, false, false, 1086), "html", null, true); yield "</p> </div> <div class=\"articles-grid\"> "; // line 1090 $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.', 1090, $this->source); })()), 0, 6)); foreach ($context['_seq'] as $context["_key"] => $context["a"]) { // line 1091 yield " "; $context["prefix"] = ""; // line 1092 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, 1092)]); // line 1093 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.', 1093, $this->source); })()), "request", [], "any", false, false, false, 1093), "locale", [], "any", false, false, false, 1093) != (isset($context["default_locale"]) || array_key_exists("default_locale", $context) ? $context["default_locale"] : (function () { throw new RuntimeError('Variable "default_locale" does not exist.', 1093, $this->source); })()))) { // line 1094 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.', 1094, $this->source); })()), "request", [], "any", false, false, false, 1094), "locale", [], "any", false, false, false, 1094), "slug" => CoreExtension::getAttribute($this->env, $this->source, $context["a"], "slug", [], "any", false, false, false, 1094)]); // line 1095 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.', 1095, $this->source); })()), "request", [], "any", false, false, false, 1095), "locale", [], "any", false, false, false, 1095)); // line 1096 yield " "; } // line 1097 yield " "; if ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug3", [], "any", false, false, false, 1097))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 1098 yield " "; $context["urlA"] = (((((((isset($context["prefix"]) || array_key_exists("prefix", $context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.', 1098, $this->source); })()) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 1098)) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug2", [], "any", false, false, false, 1098)) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug3", [], "any", false, false, false, 1098)); // line 1099 yield " "; } elseif ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug2", [], "any", false, false, false, 1099))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 1100 yield " "; $context["urlA"] = (((((isset($context["prefix"]) || array_key_exists("prefix", $context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.', 1100, $this->source); })()) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 1100)) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug2", [], "any", false, false, false, 1100)); // line 1101 yield " "; } elseif ((($tmp = !Twig\Extension\CoreExtension::testEmpty(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 1101))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 1102 yield " "; $context["urlA"] = (((isset($context["prefix"]) || array_key_exists("prefix", $context) ? $context["prefix"] : (function () { throw new RuntimeError('Variable "prefix" does not exist.', 1102, $this->source); })()) . "/") . CoreExtension::getAttribute($this->env, $this->source, $context["a"], "pageslug", [], "any", false, false, false, 1102)); // line 1103 yield " "; } // line 1104 yield " <a href=\""; // line 1105 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.', 1105, $this->source); })()), "html", null, true); yield "\" class=\"wr-article\"> <div class=\"wr-article-img\"> "; // line 1107 if ((($tmp = !(null === CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, $context["a"], "image", [], "any", false, false, false, 1107), "name", [], "any", false, false, false, 1107))) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { // line 1108 yield " <img src=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Vich\UploaderBundle\Twig\Extension\UploaderExtension']->asset($context["a"], "imageFile"), "html", null, true); yield "\" alt=\""; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "title", [], "any", false, false, false, 1108), "html", null, true); yield "\"> "; } // line 1110 yield " </div> <div class=\"wr-article-body\"> <p class=\"wr-article-meta\"> "; // line 1113 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Twig\Extension\CoreExtension']->formatDate(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "publishedAt", [], "any", false, false, false, 1113), (((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 1113, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) ? ("d M Y") : ("M d, Y"))), "html", null, true); if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["a"], "author", [], "any", false, false, false, 1113)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield " · "; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "author", [], "any", false, false, false, 1113), "html", null, true); } // line 1114 yield " </p> <h3 class=\"wr-article-title\">"; // line 1115 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "title", [], "any", false, false, false, 1115), "html", null, true); yield "</h3> "; // line 1116 if ((($tmp = CoreExtension::getAttribute($this->env, $this->source, $context["a"], "subtitle", [], "any", false, false, false, 1116)) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { yield "<p class=\"wr-article-excerpt\">"; yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, $context["a"], "subtitle", [], "any", false, false, false, 1116), "html", null, true); yield "</p>"; } // line 1117 yield " <span class=\"wr-article-link\"> "; // line 1118 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.', 1118, $this->source); })()), "read_article", [], "any", false, false, false, 1118), "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> </span> </div> </a> "; } $_parent = $context['_parent']; unset($context['_seq'], $context['_key'], $context['a'], $context['_parent']); $context = array_intersect_key($context, $_parent) + $_parent; // line 1124 yield " </div> <div class=\"articles-cta\"> <a href=\""; // line 1127 if ((($tmp = (isset($context["isFR"]) || array_key_exists("isFR", $context) ? $context["isFR"] : (function () { throw new RuntimeError('Variable "isFR" does not exist.', 1127, $this->source); })())) && $tmp instanceof Markup ? (string) $tmp : $tmp)) { 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 1128 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["t"]) || array_key_exists("t", $context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.', 1128, $this->source); })()), "articles_view_all", [], "any", false, false, false, 1128), "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 1135 yield " "; // line 1137 yield " <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"final-card\"> <h2 class=\"final-title\">"; // line 1140 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.', 1140, $this->source); })()), "final_title", [], "any", false, false, false, 1140), "html", null, true); yield "</h2> <p class=\"final-subtitle\">"; // line 1141 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.', 1141, $this->source); })()), "final_subtitle", [], "any", false, false, false, 1141), "html", null, true); yield "</p> <div class=\"final-buttons\"> <a href=\""; // line 1143 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.', 1143, $this->source); })()), "request", [], "any", false, false, false, 1143), "locale", [], "any", false, false, false, 1143))); yield "\" class=\"final-btn final-btn--primary\"> "; // line 1144 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env, $this->source, (isset($context["t"]) || array_key_exists("t", $context) ? $context["t"] : (function () { throw new RuntimeError('Variable "t" does not exist.', 1144, $this->source); })()), "final_candidate", [], "any", false, false, false, 1144), "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> <a href=\""; // line 1147 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.', 1147, $this->source); })()), "request", [], "any", false, false, false, 1147), "locale", [], "any", false, false, false, 1147))); yield "\" class=\"final-btn final-btn--ghost\"> "; // line 1148 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.', 1148, $this->source); })()), "final_recruiter", [], "any", false, false, false, 1148), "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> </section> </div>"; $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof); $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof); yield from []; } // line 1159 /** * @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 1160 yield " "; yield from $this->yieldParentBlock("footer_js", $context, $blocks); yield " <script> (function(){ var form = document.getElementById('wrHeroSearch'); var input = document.getElementById('wrHeroSearchInput'); var clearBtn = document.getElementById('wrHeroSearchClear'); var results = document.getElementById('wrHeroSearchResults'); if (!form || !input || !results) return; var searchUrl = form.dataset.searchUrl; var jobsListUrl = form.dataset.jobsListUrl; var debounceTimer = null; var currentRequest = null; var lastQuery = ''; var T = { loading: '"; // line 1176 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.', 1176, $this->source); })()), "search_loading", [], "any", false, false, false, 1176), "js"), "html", null, true); yield "', empty: '"; // line 1177 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.', 1177, $this->source); })()), "search_no_results", [], "any", false, false, false, 1177), "js"), "html", null, true); yield "', emptyHint:'"; // line 1178 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.', 1178, $this->source); })()), "search_no_results_hint", [], "any", false, false, false, 1178), "js"), "html", null, true); yield "', count: '"; // line 1179 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.', 1179, $this->source); })()), "search_results_count", [], "any", false, false, false, 1179), "js"), "html", null, true); yield "', viewAll: '"; // line 1180 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.', 1180, $this->source); })()), "search_view_all", [], "any", false, false, false, 1180), "js"), "html", null, true); yield "', view: '"; // line 1181 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.', 1181, $this->source); })()), "search_view_offer", [], "any", false, false, false, 1181), "js"), "html", null, true); yield "' }; function escHtml(s){ if (s == null) return ''; return String(s).replace(/[&<>\"']/g, function(c){ return {'&':'&','<':'<','>':'>','\"':'"',\"'\":'''}[c]; }); } function showResults(){ results.classList.add('is-visible'); form.classList.add('has-results'); } function hideResults(){ results.classList.remove('is-visible'); form.classList.remove('has-results'); } function setLoading(){ results.innerHTML = '<div class=\"hero-search-loading\">' + '<span class=\"hero-search-spinner\"></span>' + '<span>' + escHtml(T.loading) + '</span>' + '</div>'; showResults(); } function renderResults(payload, query){ var jobs = (payload && payload.jobs) || []; var total = (payload && typeof payload.total === 'number') ? payload.total : jobs.length; if (!jobs.length){ results.innerHTML = '<div class=\"hero-search-empty\">' + '<div class=\"hero-search-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-search-empty-title\">' + escHtml(T.empty) + '</p>' + '<p class=\"hero-search-empty-hint\">' + escHtml(T.emptyHint) + '</p>' + '</div>'; showResults(); return; } var html = '<div class=\"hero-search-meta\">' + '<span><strong>' + total + '</strong> ' + escHtml(T.count) + '</span>' + '<a href=\"' + jobsListUrl + '?q=' + encodeURIComponent(query) + '\">' + escHtml(T.viewAll) + '<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>'; jobs.slice(0, 6).forEach(function(j){ var title = j.jobTitle || j.title || ''; var company = j.companyName || j.company || ''; var city = j.city || ''; var et = j.employmentType || ''; var slug = j.slug || ''; var img = j.image || j.imageUrl || ''; var url = j.url || (jobsListUrl + '?q=' + encodeURIComponent(query)); var initial = (company || title || '?').charAt(0).toUpperCase(); var meta = [company, city, et].filter(function(x){ return x; }).join(' · '); html += '<a href=\"' + escHtml(url) + '\" class=\"hero-search-result\">' + '<div class=\"hero-search-result-logo\">' + (img ? '<img src=\"' + escHtml(img) + '\" alt=\"\">' : escHtml(initial)) + '</div>' + '<div class=\"hero-search-result-info\">' + '<p class=\"hero-search-result-title\">' + escHtml(title) + '</p>' + '<p class=\"hero-search-result-meta\">' + escHtml(meta) + '</p>' + '</div>' + '<span class=\"hero-search-result-cta\">' + escHtml(T.view) + '<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>'; }); results.innerHTML = html; showResults(); } 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; results.innerHTML = '<div class=\"hero-search-empty\">' + '<p class=\"hero-search-empty-title\">' + escHtml(T.empty) + '</p>' + '<p class=\"hero-search-empty-hint\">' + escHtml(T.emptyHint) + '</p>' + '</div>'; showResults(); }); } // Input live (debounce 280ms) 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){ hideResults(); lastQuery = ''; return; } if (q === lastQuery) return; debounceTimer = setTimeout(function(){ lastQuery = q; doSearch(q); }, 280); }); // Submit → page de résultats complète form.addEventListener('submit', function(e){ var q = input.value.trim(); if (!q) { e.preventDefault(); return; } window.location.href = jobsListUrl + '?q=' + encodeURIComponent(q); e.preventDefault(); }); // Clear clearBtn.addEventListener('click', function(){ input.value = ''; clearBtn.classList.remove('is-visible'); hideResults(); lastQuery = ''; input.focus(); }); // Escape ferme input.addEventListener('keydown', function(e){ if (e.key === 'Escape'){ hideResults(); input.blur(); } }); // Clic en dehors ferme (mais pas si on clique dedans) document.addEventListener('click', function(e){ if (!form.contains(e.target) && !results.contains(e.target)){ hideResults(); } }); // Refocus input → ré-affiche les derniers résultats si on en avait input.addEventListener('focus', function(){ if (input.value.trim().length >= 2 && results.innerHTML.trim()) showResults(); }); })(); </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/homepage.html.twig"; } /** * @codeCoverageIgnore */ public function isTraitable(): bool { return false; } /** * @codeCoverageIgnore */ public function getDebugInfo(): array { return array ( 1844 => 1181, 1840 => 1180, 1836 => 1179, 1832 => 1178, 1828 => 1177, 1824 => 1176, 1804 => 1160, 1791 => 1159, 1770 => 1148, 1766 => 1147, 1760 => 1144, 1756 => 1143, 1751 => 1141, 1747 => 1140, 1742 => 1137, 1739 => 1135, 1729 => 1128, 1721 => 1127, 1716 => 1124, 1704 => 1118, 1701 => 1117, 1695 => 1116, 1691 => 1115, 1688 => 1114, 1682 => 1113, 1677 => 1110, 1669 => 1108, 1667 => 1107, 1662 => 1105, 1659 => 1104, 1656 => 1103, 1653 => 1102, 1650 => 1101, 1647 => 1100, 1644 => 1099, 1641 => 1098, 1638 => 1097, 1635 => 1096, 1632 => 1095, 1629 => 1094, 1626 => 1093, 1623 => 1092, 1620 => 1091, 1616 => 1090, 1609 => 1086, 1605 => 1085, 1600 => 1082, 1597 => 1081, 1594 => 1079, 1589 => 1076, 1583 => 1075, 1578 => 1072, 1566 => 1065, 1556 => 1064, 1551 => 1062, 1547 => 1060, 1541 => 1058, 1535 => 1056, 1533 => 1055, 1523 => 1053, 1519 => 1052, 1510 => 1046, 1500 => 1045, 1494 => 1043, 1488 => 1042, 1483 => 1039, 1480 => 1038, 1476 => 1037, 1470 => 1034, 1466 => 1033, 1461 => 1030, 1458 => 1029, 1455 => 1027, 1449 => 1023, 1439 => 1020, 1433 => 1019, 1422 => 1018, 1418 => 1017, 1411 => 1013, 1407 => 1012, 1402 => 1009, 1399 => 1008, 1387 => 998, 1383 => 997, 1376 => 993, 1368 => 988, 1364 => 987, 1352 => 978, 1348 => 977, 1337 => 969, 1333 => 968, 1329 => 967, 1324 => 964, 1303 => 945, 1273 => 918, 1269 => 917, 1260 => 911, 1256 => 910, 1247 => 904, 1243 => 903, 1234 => 897, 1230 => 896, 1220 => 889, 1216 => 888, 1212 => 887, 1206 => 883, 1197 => 876, 1193 => 875, 1186 => 871, 1182 => 870, 1175 => 866, 1171 => 865, 1164 => 861, 1160 => 860, 1151 => 854, 1147 => 853, 1143 => 852, 1138 => 849, 1127 => 840, 1119 => 839, 1115 => 838, 1111 => 837, 1107 => 836, 1091 => 823, 1087 => 822, 1083 => 821, 1079 => 820, 1075 => 819, 1060 => 807, 1056 => 806, 1052 => 805, 1048 => 804, 1044 => 803, 1030 => 792, 1026 => 791, 1022 => 790, 1017 => 787, 1008 => 780, 1001 => 776, 994 => 774, 988 => 770, 978 => 762, 969 => 756, 965 => 755, 952 => 749, 944 => 748, 940 => 746, 935 => 743, 929 => 740, 925 => 739, 921 => 738, 914 => 734, 906 => 728, 902 => 725, 889 => 724, 253 => 99, 240 => 98, 217 => 96, 194 => 95, 171 => 94, 148 => 93, 137 => 1, 135 => 90, 134 => 89, 133 => 88, 132 => 87, 131 => 85, 130 => 84, 129 => 83, 128 => 82, 127 => 80, 126 => 79, 125 => 78, 124 => 77, 123 => 76, 122 => 74, 121 => 73, 120 => 72, 119 => 71, 118 => 70, 117 => 69, 116 => 68, 115 => 67, 114 => 66, 113 => 65, 112 => 64, 111 => 62, 110 => 61, 109 => 60, 108 => 59, 107 => 56, 106 => 55, 105 => 54, 104 => 52, 103 => 51, 102 => 50, 101 => 49, 100 => 48, 99 => 47, 98 => 46, 97 => 45, 96 => 44, 95 => 43, 94 => 42, 93 => 40, 92 => 39, 91 => 38, 90 => 37, 89 => 36, 88 => 35, 87 => 34, 86 => 33, 85 => 32, 84 => 31, 83 => 30, 82 => 29, 81 => 28, 80 => 27, 79 => 26, 78 => 24, 77 => 23, 76 => 22, 75 => 21, 74 => 20, 73 => 19, 72 => 18, 71 => 17, 70 => 16, 69 => 15, 68 => 14, 67 => 13, 66 => 12, 65 => 11, 64 => 10, 63 => 9, 62 => 8, 61 => 7, 59 => 6, 46 => 1,); } public function getSourceContext(): Source { return new Source("{% extends 'application/whileresume/website/candidates/layout-social.html.twig' %}{# ═══════════════════════════════════════════════════════════════════ STRINGS bilingues═══════════════════════════════════════════════════════════════════ #}{% set isFR = app.request.locale == 'fr' %}{% set t = { hero_eyebrow: isFR ? 'Plateforme d’emploi nouvelle génération' : 'A new-generation job platform', hero_title_1: isFR ? 'Faites parler' : 'Let your', hero_title_2: isFR ? 'votre CV.' : 'CV speak.', hero_title_3: isFR ? 'On s’occupe du reste.' : 'We handle the rest.', hero_lede: isFR ? 'Whileresume met en relation les talents avec les entreprises qui recrutent — sans candidature à rallonge, sans CV à refaire 10 fois. Likez, matchez, échangez.' : 'Whileresume connects talent with hiring companies — no endless applications, no CVs rewritten ten times. Like, match, chat.', hero_search_placeholder: isFR ? 'Un poste, une ville, une entreprise…' : 'A job, a city, a company…', hero_search_button: isFR ? 'Rechercher' : 'Search', hero_byline_jobs: isFR ? 'offres en ligne' : 'jobs online', hero_byline_apps: isFR ? 'iOS · Android · Web' : 'iOS · Android · Web', hero_byline_free: isFR ? 'gratuit pour les candidats' : 'free for candidates', search_loading: isFR ? 'Recherche…' : 'Searching…', search_no_results: isFR ? 'Aucune offre ne correspond à votre recherche' : 'No job matches your search', search_no_results_hint: isFR ? 'Essayez avec d’autres mots-clés' : 'Try other keywords', search_results_count: isFR ? 'offres trouvées' : 'jobs found', search_view_all: isFR ? 'Voir toutes les offres' : 'See all jobs', search_view_offer: isFR ? 'Voir l’offre' : 'View job', search_clear: isFR ? 'Effacer' : 'Clear', paths_eyebrow: isFR ? 'Trois manières d’entrer' : 'Three ways in', paths_title: isFR ? 'Choisissez votre point de départ' : 'Choose your starting point', paths_lede: isFR ? 'Que vous arriviez avec un CV bien rangé ou simplement avec l’envie de bouger, il existe une porte qui vous correspond.' : 'Whether you arrive with a polished CV or just the urge to move on, there’s a door for you.', path1_label: isFR ? 'J’ai déjà un CV' : 'I have a CV', path1_title: isFR ? 'Envoyez. On lit. On améliore.' : 'Send. Read. Refine.', path1_desc: isFR ? 'Vous déposez votre CV, on en extrait les compétences, on identifie ce qui peut être renforcé, et on régénère deux versions propres dans la langue et le thème de votre choix.' : 'You upload your CV, we extract your skills, identify what can be strengthened, and regenerate two clean versions in the language and theme of your choice.', path1_cta: isFR ? 'Déposer mon CV' : 'Upload my CV', path2_label: isFR ? 'Je pars de zéro' : 'Starting fresh', path2_title: isFR ? 'Quelques étapes. Un beau CV.' : 'A few steps. A clean CV.', path2_desc: isFR ? 'Pas de CV ? On vous accompagne dans un tunnel guidé. À la fin, vous repartez avec un document construit, lisible, prêt à être envoyé — ou à laisser parler pour vous, ici.' : 'No CV? We guide you through. At the end, you walk out with a structured, readable document, ready to send — or to let it speak for you, here.', path2_cta: isFR ? 'Construire mon CV' : 'Build my CV', path3_label: isFR ? 'Je veux d’abord regarder' : 'Browse first', path3_title: isFR ? 'Liker, c’est déjà commencer.' : 'Liking is already starting.', path3_desc: isFR ? 'Parcourez les offres et les entreprises. Likez celles qui vous parlent. On en déduit vos goûts, on vous propose mieux, et les recruteurs intéressés peuvent vous trouver.' : 'Browse jobs and companies. Like the ones that speak to you. We learn your taste, suggest better ones, and interested recruiters find you.', path3_cta: isFR ? 'Voir les offres' : 'See jobs', how_eyebrow: isFR ? 'Comment ça marche' : 'How it works', how_title: isFR ? 'Quatre temps, un mouvement.' : 'Four moves, one motion.', how_lede: isFR ? 'On a réduit le parcours à l’essentiel. Pas de remplissage, pas de vous demander deux fois la même chose.' : 'We pared the journey down to the essentials. No filler, no asking the same thing twice.', step1_title: isFR ? 'Vous racontez' : 'You tell', step1_desc: isFR ? 'CV uploadé ou tunnel guidé. On collecte ce qu’il faut savoir : compétences, parcours, envies, langues.' : 'CV uploaded or guided tunnel. We collect what matters: skills, experience, wishes, languages.', step2_title: isFR ? 'On analyse' : 'We analyze', step2_desc: isFR ? 'Notre intelligence relit votre profil. Forces, axes d’amélioration : vous recevez un retour clair.' : 'Our intelligence re-reads your profile. Strengths, areas to improve: you get a clear report.', step3_title: isFR ? 'On génère' : 'We generate', step3_desc: isFR ? 'Votre CV est généré dans deux thèmes, plusieurs couleurs, plusieurs langues. Téléchargeable à tout moment.' : 'Your CV is generated in two themes, multiple colors, multiple languages. Downloadable any time.', step4_title: isFR ? 'On vous expose' : 'We expose you', step4_desc: isFR ? 'Votre profil devient visible des recruteurs qui cherchent exactement votre type de talent.' : 'Your profile becomes visible to recruiters looking for exactly your type of talent.', apps_eyebrow: isFR ? 'Disponible partout' : 'Available everywhere', apps_title: isFR ? 'Trois plateformes, une seule expérience' : 'Three platforms, one experience', apps_lede: isFR ? 'Vos préférences vous suivent. Likez une offre dans le métro, envoyez votre CV depuis votre canapé.' : 'Your preferences follow you. Like an offer on the subway, send your CV from the couch.', apps_ios: 'iOS', apps_android: 'Android', apps_web: isFR ? 'Web' : 'Web', apps_ios_desc: isFR ? 'Téléchargez sur l’App Store' : 'Download on the App Store', apps_android_desc: isFR ? 'Téléchargez sur Google Play' : 'Get it on Google Play', apps_web_desc: isFR ? 'Connectez-vous depuis le navigateur' : 'Log in from your browser', match_eyebrow: isFR ? 'Le match ne se force pas' : 'A match cannot be forced', match_title: isFR ? 'Likez. Matchez. Échangez.' : 'Like. Match. Chat.', match_lede: isFR ? 'Vous likez ce qui vous plaît, on apprend, et les entreprises intéressées passent la première.' : 'You like what catches your eye, we learn, and interested companies make the first move.', match_b1_title: isFR ? 'Likez ce qui vous parle' : 'Like what speaks to you', match_b1_desc: isFR ? 'Offres, entreprises, recruteurs. On retient tout pour mieux vous connaître.' : 'Jobs, companies, recruiters. We remember everything to know you better.', match_b2_title: isFR ? 'Recommandations sur mesure' : 'Tailored recommendations', match_b2_desc: isFR ? 'Plus vous likez, plus on vous propose des offres alignées avec votre profil.' : 'The more you like, the more we suggest offers aligned with your profile.', match_b3_title: isFR ? 'Les recruteurs viennent à vous' : 'Recruiters come to you', match_b3_desc: isFR ? 'Quand votre profil match, c’est l’entreprise qui passe la première.' : 'When your profile matches, the company makes the first move.', match_b4_title: isFR ? 'Offres externes incluses' : 'External offers included', match_b4_desc: isFR ? 'On indexe aussi des offres externes pour maximiser vos chances. Lien direct vers le site de l’employeur.' : 'We also index external offers to maximize your chances. Direct link to the employer’s site.', keywords_title: isFR ? 'Cherchez par domaine' : 'Search by field', keywords_lede: isFR ? 'Une porte d’entrée par métier' : 'One door per craft', popular_title: isFR ? 'Offres populaires' : 'Popular jobs', popular_lede: isFR ? 'Une sélection d’offres ouvertes en ce moment, par catégorie' : 'A selection of currently open positions, by category', btn_more: isFR ? 'Tout voir' : 'See all', articles_title: isFR ? 'Conseils, ressources & guides' : 'Advice, resources & guides', articles_lede: isFR ? 'Pour rebondir, négocier, postuler mieux.' : 'To bounce back, negotiate and apply better.', articles_view_all: isFR ? 'Voir tous les articles' : 'See all articles', read_article: isFR ? 'Lire' : 'Read', final_title: isFR ? 'Prêt à propulser votre carrière ?' : 'Ready to take your career further?', final_subtitle: isFR ? 'Rejoignez celles et ceux qui ont déjà tourné la page.' : 'Join those who have already turned the page.', final_candidate: isFR ? 'Je suis candidat·e' : 'I’m a candidate', final_recruiter: isFR ? 'Je recrute' : 'I’m hiring'} %}{% block title %}{{ page.shortTitle }}{% endblock %}{% block description %}{{ page.shortDescription }}{% endblock %}{% block robots %}{{ page.robots }}{% endblock %}{% block canonical %}{% include \"/vitrine/lexend/components/languages/canonical_classic.html.twig\" %}{% endblock %}{% block css %} {{ parent() }} <style> /* ═══════════════════════════════════════════════════════════════════ VARIABLES ═══════════════════════════════════════════════════════════════════ */ :root{ --wr-bg:#FBFCFE; --wr-card:#FFFFFF; --wr-violet:#8A63C0; --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); } /* ═══════════════════════════════════════════════════════════════════ PLEINE LARGEUR — On retire la réservation d'espace de la sidebar droite ═══════════════════════════════════════════════════════════════════ */ 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} /* ═══════════════════════════════════════════════════════════════════ SECTIONS GENERIC — Fond UNIFIÉ partout (pas d'alternance) ═══════════════════════════════════════════════════════════════════ */ .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}} /* Filet décoratif au lieu d'un changement de couleur */ .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} /* ═══ Eyebrow ═══ */ .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)}} /* ═══ Titres — THIN + LARGE ═══ */ .wr-title{ font-family:inherit; font-weight:500; font-size:36px;line-height:1.1;letter-spacing:-0.03em; color:var(--wr-ink); margin:0 auto 16px; max-width:920px; } @media(min-width:768px){.wr-title{font-size:48px}} @media(min-width:1024px){.wr-title{font-size:58px}} .wr-title--sm{font-size:30px} @media(min-width:768px){.wr-title--sm{font-size:38px}} .wr-title em{font-style:normal;font-weight:600;color:var(--wr-violet)} .wr-lede{ font-size:17px;line-height:1.55;font-weight:400; color:var(--wr-ink-2); margin:0 auto;max-width:680px; } .wr-section-head{text-align:center;margin-bottom:56px} /* ═══════════════════════════════════════════════════════════════════ HERO — Plein texte, fond uni, animation discrète ═══════════════════════════════════════════════════════════════════ */ .hero{ position:relative; background:var(--wr-bg); padding:100px 32px 80px; overflow:hidden; } @media(max-width:768px){.hero{padding:60px 20px 60px}} /* Décor : 2 blobs très flous violet pâle, plus discrets */ .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; bottom:-200px;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-dots{ position:absolute;inset:0; background-image:radial-gradient(circle,rgba(138,99,192,.07) 1px,transparent 1px); background-size:32px 32px; mask-image:radial-gradient(ellipse 60% 45% at 50% 45%,black,transparent 80%); -webkit-mask-image:radial-gradient(ellipse 60% 45% at 50% 45%,black,transparent 80%); pointer-events:none; } .hero-inner{position:relative;z-index:2;max-width:1100px;margin:0 auto;text-align:center} .hero-badge{ display:inline-flex;align-items:center;gap:8px; padding:7px 14px;border-radius:100px; background:var(--wr-card); border:1px solid var(--wr-line-2); color:var(--wr-violet-dark); font-size:12px;font-weight:500; margin-bottom:28px; box-shadow:var(--wr-shadow); opacity:0;transform:translateY(8px); animation:wrFadeUp .8s ease forwards; } .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:#10B981;box-shadow:0 0 0 0 rgba(16,185,129,.4);animation:wrPulse2 2s ease infinite} @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)}} @keyframes wrFadeUp{to{opacity:1;transform:translateY(0)}} /* ═══ Titre hero — THIN large ═══ */ .hero-title{ font-weight:400; font-size:44px;line-height:1.04;letter-spacing:-0.04em; color:var(--wr-ink); margin:0 auto 24px; max-width:1000px; } @media(min-width:768px){.hero-title{font-size:68px;letter-spacing:-0.045em}} @media(min-width:1100px){.hero-title{font-size:88px}} .hero-title-line{display:block;opacity:0;transform:translateY(12px);animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) forwards} .hero-title-line:nth-child(1){animation-delay:.1s} .hero-title-line:nth-child(2){animation-delay:.25s} .hero-title-line:nth-child(3){animation-delay:.4s} .hero-title-accent{ color:var(--wr-violet); font-weight:500; position:relative;display:inline-block; } .hero-title-accent::after{ content:\"\"; position:absolute;left:0;right:0;bottom:.04em; height:.1em; background:var(--wr-violet); opacity:.22; transform-origin:left center; transform:scaleX(0); animation:wrUnderline 1.1s cubic-bezier(.6,0,.4,1) 1s forwards; border-radius:2px; } @keyframes wrUnderline{to{transform:scaleX(1)}} .hero-lede{ font-size:17px;line-height:1.55;color:var(--wr-ink-2);font-weight:400; margin:0 auto 36px;max-width:620px; opacity:0;animation:wrFadeUp .9s ease 1.1s forwards; } @media(min-width:768px){.hero-lede{font-size:18px}} /* ═══════════════════════════════════════════════════════════════════ HERO — RECHERCHE INLINE (avec résultats AJAX) ═══════════════════════════════════════════════════════════════════ */ .hero-search-wrap{ max-width:680px;margin:0 auto 28px; opacity:0;animation:wrFadeUp .9s ease 1.3s forwards; } .hero-search{ display:flex;align-items:center; background:var(--wr-card); border:1px solid var(--wr-line-2); border-radius:16px; padding:6px; box-shadow:0 2px 6px rgba(30,27,46,.04),0 16px 40px rgba(138,99,192,.08); transition:transform .2s,box-shadow .2s,border-color .2s,border-radius .25s; position:relative;z-index:5; } .hero-search:focus-within, .hero-search.has-results{ border-color:var(--wr-violet-2); box-shadow:0 4px 10px rgba(30,27,46,.05),0 20px 50px rgba(138,99,192,.16); } .hero-search.has-results{ border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:var(--wr-line); } .hero-search-icon{ display:flex;align-items:center;justify-content:center; width:42px;height:42px;flex-shrink:0;color:var(--wr-muted-2); } .hero-search-icon svg{width:18px;height:18px} .hero-search-input{ flex:1;border:0;outline:0;background:transparent; font-size:15px;font-family:inherit;color:var(--wr-ink); padding:0 6px;height:42px;min-width:0; } .hero-search-input::placeholder{color:var(--wr-muted-2)} .hero-search-clear{ display:none;align-items:center;justify-content:center; width:32px;height:32px;flex-shrink:0;color:var(--wr-muted-2); border:0;background:transparent;cursor:pointer;border-radius:8px; transition:background .15s,color .15s; } .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)} .hero-search-clear svg{width:14px;height:14px} .hero-search-clear.is-visible{display:inline-flex} .hero-search-btn{ background:var(--wr-violet);color:#fff; border:0;padding:0 22px;border-radius:11px; font-size:14px;font-weight:600;font-family:inherit; cursor:pointer;flex-shrink:0;height:42px; display:inline-flex;align-items:center;gap:6px; transition:background .15s,transform .15s,box-shadow .15s; box-shadow:0 4px 12px rgba(138,99,192,.3); } .hero-search-btn:hover{background:var(--wr-violet-dark);transform:translateY(-1px);box-shadow:0 6px 18px rgba(138,99,192,.4)} .hero-search-btn svg{width:13px;height:13px} @media(max-width:540px){.hero-search-btn span{display:none}.hero-search-btn{padding:0 14px}} /* Résultats inline */ .hero-search-results{ background:var(--wr-card); border:1px solid var(--wr-line); border-top:0; border-radius:0 0 16px 16px; max-height:0; overflow:hidden; transition:max-height .35s ease,padding .25s ease; text-align:left; box-shadow:0 16px 40px rgba(138,99,192,.1); padding:0 14px; } .hero-search-results.is-visible{max-height:560px;overflow-y:auto;padding:8px 14px 12px} .hero-search-results::-webkit-scrollbar{width:6px} .hero-search-results::-webkit-scrollbar-thumb{background:var(--wr-line-2);border-radius:6px} .hero-search-meta{ display:flex;align-items:center;justify-content:space-between;gap:10px; padding:10px 4px; font-size:11.5px;color:var(--wr-muted); text-transform:uppercase;letter-spacing:.08em;font-weight:600; } .hero-search-meta strong{color:var(--wr-violet);font-weight:700;font-size:13px} .hero-search-meta a{color:var(--wr-violet);font-weight:700;display:inline-flex;align-items:center;gap:4px} .hero-search-meta a svg{width:11px;height:11px} .hero-search-result{ display:flex;align-items:center;gap:12px; padding:10px 8px;border-radius:11px; text-decoration:none;color:inherit; transition:background .15s; } .hero-search-result:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit} .hero-search-result-logo{ width:38px;height:38px;border-radius:10px;flex-shrink:0; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; font-weight:700;font-size:13px;overflow:hidden; } .hero-search-result-logo img{width:100%;height:100%;object-fit:cover} .hero-search-result-info{flex:1;min-width:0} .hero-search-result-title{ font-weight:600;font-size:13.5px;color:var(--wr-ink); margin:0 0 2px;line-height:1.3; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; } .hero-search-result-meta{ font-size:11.5px;color:var(--wr-muted);margin:0; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; } .hero-search-result-cta{ font-size:11px;font-weight:600;color:var(--wr-violet); text-transform:uppercase;letter-spacing:.06em; display:inline-flex;align-items:center;gap:4px;flex-shrink:0; opacity:0;transition:opacity .15s,transform .15s;transform:translateX(-4px); } .hero-search-result:hover .hero-search-result-cta{opacity:1;transform:translateX(0)} .hero-search-result-cta svg{width:11px;height:11px} .hero-search-empty{ text-align:center;padding:36px 20px;color:var(--wr-muted); } .hero-search-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-search-empty-icon svg{width:22px;height:22px} .hero-search-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px} .hero-search-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)} .hero-search-loading{ text-align:center;padding:30px 20px;color:var(--wr-muted);font-size:13px; display:flex;align-items:center;justify-content:center;gap:10px; } .hero-search-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)}} /* Byline */ .hero-byline{ display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap; font-size:13px;color:var(--wr-muted); opacity:0;animation:wrFadeUp .9s ease 1.5s forwards; } .hero-byline strong{color:var(--wr-violet);font-weight:700;font-size:15px;margin-right:3px} .hero-byline-sep{color:var(--wr-line-2)} .hero-byline svg{width:14px;height:14px;color:#10B981;flex-shrink:0} .hero-byline span{display:inline-flex;align-items:center;gap:6px} @media(max-width:540px){.hero-byline{gap:10px;font-size:12px}.hero-byline-sep{display:none}} /* ═══════════════════════════════════════════════════════════════════ SECTION : 3 PARCOURS ═══════════════════════════════════════════════════════════════════ */ .paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px} @media(max-width:991px){.paths-grid{grid-template-columns:1fr;gap:14px}} .path-card{ position:relative; background:var(--wr-card); border:1px solid var(--wr-line); border-radius:20px;padding:28px; display:flex;flex-direction:column; transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease; box-shadow:var(--wr-shadow); } .path-card:hover{transform:translateY(-4px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2)} .path-card-illu{ width:64px;height:64px;border-radius:16px; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; margin-bottom:22px; } .path-card-illu svg{width:30px;height:30px} .path-card-label{ display:inline-block; font-size:11px;font-weight:600; color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.1em; margin-bottom:10px;align-self:flex-start; } .path-card-title{ font-weight:500;font-size:22px;line-height:1.25;letter-spacing:-0.015em; color:var(--wr-ink);margin:0 0 10px; } .path-card-desc{ font-size:14px;line-height:1.6;color:var(--wr-muted); margin:0 0 22px;flex:1; } .path-card-cta{ display:inline-flex;align-items:center;justify-content:center;gap:6px; background:var(--wr-violet);color:#fff; padding:12px 18px;border-radius:11px; font-size:13px;font-weight:600; align-self:stretch; transition:background .15s,transform .15s,box-shadow .15s; box-shadow:0 2px 8px rgba(138,99,192,.2); } .path-card-cta:hover{background:var(--wr-violet-dark);color:#fff;text-decoration:none;transform:translateY(-1px);box-shadow:0 4px 12px rgba(138,99,192,.3)} .path-card-cta svg{width:13px;height:13px;transition:transform .15s} .path-card-cta:hover svg{transform:translateX(3px)} /* ═══════════════════════════════════════════════════════════════════ MÉTHODE ═══════════════════════════════════════════════════════════════════ */ .method-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px} @media(max-width:991px){.method-grid{grid-template-columns:repeat(2,1fr)}} @media(max-width:540px){.method-grid{grid-template-columns:1fr}} .method-step{ background:var(--wr-card); border:1px solid var(--wr-line); border-radius:18px;padding:24px; transition:transform .2s,box-shadow .2s,border-color .2s; } .method-step:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-soft)} .method-num{ display:inline-flex;align-items:center;justify-content:center; width:36px;height:36px;border-radius:10px; background:var(--wr-violet-soft);color:var(--wr-violet); font-weight:700;font-size:14px;margin-bottom:16px; } .method-title{ font-weight:500;font-size:17px;line-height:1.25;letter-spacing:-0.005em; color:var(--wr-ink);margin:0 0 6px; } .method-desc{font-size:13px;line-height:1.55;color:var(--wr-muted);margin:0} /* ═══════════════════════════════════════════════════════════════════ MATCH ═══════════════════════════════════════════════════════════════════ */ .match-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center} @media(max-width:991px){.match-grid{grid-template-columns:1fr;gap:40px}} .match-text .wr-title{margin-left:0;text-align:left} .match-text .wr-lede{margin-left:0;text-align:left} .match-text .wr-eyebrow{margin-bottom:20px} .match-features{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:32px} @media(max-width:540px){.match-features{grid-template-columns:1fr}} .match-feature{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:14px;padding:18px; transition:transform .15s,border-color .15s,box-shadow .15s; } .match-feature:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)} .match-feature-icon{ width:34px;height:34px;border-radius:10px; background:var(--wr-violet-soft);color:var(--wr-violet); display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px; } .match-feature-icon svg{width:16px;height:16px} .match-feature-title{font-weight:600;font-size:14px;line-height:1.3;color:var(--wr-ink);margin:0 0 5px} .match-feature-desc{font-size:12.5px;line-height:1.5;color:var(--wr-muted);margin:0} .match-visual{position:relative;display:flex;justify-content:center;align-items:center;padding:40px 0} .match-stack{position:relative;width:100%;max-width:340px;height:340px} .match-stack-card{ position:absolute; background:var(--wr-card);border:1px solid var(--wr-line); border-radius:16px;padding:14px; display:flex;align-items:center;gap:12px; box-shadow:var(--wr-shadow);width:100%; transition:transform .3s ease; } .match-stack-card:nth-child(1){top:0;transform:rotate(-6deg) translateX(-10px);z-index:1;animation:wrFloat 6s ease-in-out infinite} .match-stack-card:nth-child(2){top:78px;left:14px;transform:rotate(2deg);z-index:3;box-shadow:0 16px 40px rgba(138,99,192,.18);animation:wrFloat 6s ease-in-out -2s infinite} .match-stack-card:nth-child(3){top:156px;transform:rotate(-3deg) translateX(8px);z-index:2;animation:wrFloat 6s ease-in-out -4s infinite} .match-stack-card:nth-child(4){top:234px;left:20px;transform:rotate(4deg);z-index:1;animation:wrFloat 6s ease-in-out -1s infinite} @keyframes wrFloat{0%,100%{transform:translateY(0) rotate(var(--r,0))}50%{transform:translateY(-6px) rotate(var(--r,0))}} .match-stack-logo{ width:38px;height:38px;border-radius:10px; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; font-weight:700;font-size:14px;flex-shrink:0; } .match-stack-info{flex:1;min-width:0} .match-stack-title{font-weight:600;font-size:13px;color:var(--wr-ink);margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3} .match-stack-meta{font-size:11px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .match-stack-heart{width:28px;height:28px;border-radius:50%;background:#FEE2E2;color:#EF4444;display:flex;align-items:center;justify-content:center;flex-shrink:0} .match-stack-heart svg{width:13px;height:13px;fill:currentColor} /* ═══════════════════════════════════════════════════════════════════ 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;font-size:18px;letter-spacing:-0.01em;color:var(--wr-ink);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)} /* ═══════════════════════════════════════════════════════════════════ KEYWORDS ═══════════════════════════════════════════════════════════════════ */ .keywords-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:920px;margin:0 auto} .keyword-pill{ display:inline-flex;align-items:center;gap:8px; padding:9px 16px;border-radius:100px; background:var(--wr-card);border:1px solid var(--wr-line-2); color:var(--wr-ink-2); font-size:13.5px;font-weight:500; transition:transform .15s,border-color .15s,background .15s,color .15s,box-shadow .15s; } .keyword-pill:hover{transform:translateY(-2px);border-color:var(--wr-violet);background:var(--wr-violet-soft);color:var(--wr-violet-dark);text-decoration:none;box-shadow:0 4px 10px rgba(138,99,192,.12)} .keyword-pill-icon{font-size:14px;line-height:1} /* ═══════════════════════════════════════════════════════════════════ OFFRES POPULAIRES ═══════════════════════════════════════════════════════════════════ */ .listings-block{margin-bottom:32px} .listings-block:last-child{margin-bottom:0} .listings-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;flex-wrap:wrap} .listings-block-title{ display:inline-flex;align-items:center;gap:10px; font-weight:500;font-size:18px;letter-spacing:-0.005em; color:var(--wr-ink);margin:0; } .listings-block-icon{font-size:20px;line-height:1} .listings-block-link{ display:inline-flex;align-items:center;gap:4px; padding:6px 12px;border-radius:100px; font-size:12px;font-weight:600; color:var(--wr-violet); text-transform:uppercase;letter-spacing:.06em; border:1px solid var(--wr-violet-soft); background:var(--wr-card); transition:background .15s,border-color .15s,transform .15s; } .listings-block-link:hover{background:var(--wr-violet-soft);border-color:var(--wr-violet);text-decoration:none;color:var(--wr-violet-dark);transform:translateX(2px)} .listings-block-link svg{width:11px;height:11px} .listings-jobs{display:grid;grid-template-columns:1fr 1fr;gap:10px} @media(max-width:768px){.listings-jobs{grid-template-columns:1fr}} .listing-job{ display:flex;align-items:center;gap:14px; background:var(--wr-card);border:1px solid var(--wr-line); border-radius:14px;padding:12px; transition:transform .15s,border-color .15s,box-shadow .15s; } .listing-job:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow);color:inherit;text-decoration:none} .listing-job-logo{ width:42px;height:42px;border-radius:11px;flex-shrink:0; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center; font-weight:700;font-size:14px;overflow:hidden; } .listing-job-logo img{width:100%;height:100%;object-fit:cover} .listing-job-info{flex:1;min-width:0} .listing-job-title{font-weight:600;font-size:13.5px;color:var(--wr-ink);margin:0 0 2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .listing-job-meta{font-size:11.5px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .listing-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .listing-job-arrow svg{width:14px;height:14px} .listing-job:hover .listing-job-arrow{color:var(--wr-violet);transform:translateX(2px)} /* ═══════════════════════════════════════════════════════════════════ ARTICLES ═══════════════════════════════════════════════════════════════════ */ .articles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px} @media(max-width:991px){.articles-grid{grid-template-columns:repeat(2,1fr)}} @media(max-width:640px){.articles-grid{grid-template-columns:1fr}} .wr-article{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:18px;overflow:hidden; display:flex;flex-direction:column; transition:transform .2s,box-shadow .2s,border-color .2s; } .wr-article:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2);color:inherit;text-decoration:none} .wr-article-img{aspect-ratio:16/10;background:var(--wr-violet-soft);overflow:hidden;flex-shrink:0} .wr-article-img img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease} .wr-article:hover .wr-article-img img{transform:scale(1.04)} .wr-article-body{padding:18px;flex:1;display:flex;flex-direction:column} .wr-article-meta{font-size:11px;font-weight:600;color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px} .wr-article-title{font-weight:500;font-size:16px;line-height:1.35;letter-spacing:-0.005em;color:var(--wr-ink);margin:0 0 8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .wr-article-excerpt{font-size:13px;line-height:1.5;color:var(--wr-muted);margin:0 0 14px;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} .wr-article-link{font-size:12px;font-weight:600;color:var(--wr-violet);text-transform:uppercase;letter-spacing:.06em;display:inline-flex;align-items:center;gap:4px} .wr-article-link svg{width:11px;height:11px;transition:transform .15s} .wr-article:hover .wr-article-link svg{transform:translateX(3px)} .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-card);border:1px solid var(--wr-line-2); color:var(--wr-violet); font-size:13px;font-weight:600; transition:background .15s,transform .15s,border-color .15s; } .articles-cta a:hover{background:var(--wr-violet-soft);border-color:var(--wr-violet);transform:translateY(-2px);text-decoration:none;color:var(--wr-violet-dark)} .articles-cta svg{width:12px;height:12px} /* ═══════════════════════════════════════════════════════════════════ CTA FINAL ═══════════════════════════════════════════════════════════════════ */ .final-card{ position:relative; background:linear-gradient(135deg,var(--wr-violet) 0%,var(--wr-violet-dark) 100%); border-radius:28px; padding:64px 32px;text-align:center; color:#fff;overflow:hidden; box-shadow:0 20px 60px -12px rgba(138,99,192,.4); } @media(max-width:768px){.final-card{padding:48px 24px;border-radius:22px}} .final-card::before{content:\"\";position:absolute;top:-100px;right:-100px;width:300px;height:300px;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 65%);pointer-events:none} .final-card::after{content:\"\";position:absolute;bottom:-120px;left:-100px;width:280px;height:280px;background:radial-gradient(circle,rgba(255,255,255,.12) 0%,transparent 65%);pointer-events:none} .final-title{font-weight:500;font-size:32px;line-height:1.1;letter-spacing:-0.025em;color:#fff;margin:0 0 14px;position:relative;z-index:2} @media(min-width:768px){.final-title{font-size:44px}} .final-subtitle{font-size:16px;line-height:1.55;color:rgba(255,255,255,.88);margin:0 auto 32px;max-width:520px;position:relative;z-index:2} .final-buttons{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;position:relative;z-index:2} .final-btn{ display:inline-flex;align-items:center;gap:8px; padding:14px 24px;border-radius:12px; font-size:14px;font-weight:600; transition:transform .15s,background .15s,box-shadow .15s; } .final-btn--primary{background:#fff;color:var(--wr-violet-dark)} .final-btn--primary:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.15);color:var(--wr-violet-dark);text-decoration:none} .final-btn--ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.25);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)} .final-btn--ghost:hover{background:rgba(255,255,255,.2);transform:translateY(-2px);color:#fff;text-decoration:none} .final-btn svg{width:14px;height:14px;transition:transform .15s} .final-btn:hover svg{transform:translateX(3px)} </style>{% endblock css %}{% block body %} <div class=\"wr\"> {# ═══════════════ HERO ═══════════════ #} <section class=\"hero\"> <span class=\"hero-dots\"></span> <div class=\"hero-inner\"> <span class=\"hero-badge\"> <span class=\"hero-badge-dot\"></span> {{ t.hero_eyebrow }} </span> <h1 class=\"hero-title\"> <span class=\"hero-title-line\">{{ t.hero_title_1 }}</span> <span class=\"hero-title-line\"><span class=\"hero-title-accent\">{{ t.hero_title_2 }}</span></span> <span class=\"hero-title-line\">{{ t.hero_title_3 }}</span> </h1> <p class=\"hero-lede\">{{ t.hero_lede }}</p> {# Recherche inline AJAX #} <div class=\"hero-search-wrap\"> <form class=\"hero-search\" id=\"wrHeroSearch\" autocomplete=\"off\" 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 %}\"> <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\"/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"/> </svg> </span> <input type=\"text\" name=\"q\" id=\"wrHeroSearchInput\" class=\"hero-search-input\" placeholder=\"{{ t.hero_search_placeholder }}\" /> <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> <button type=\"submit\" class=\"hero-search-btn\"> <span>{{ t.hero_search_button }}</span> <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> </button> </form> {# Container des résultats inline #} <div class=\"hero-search-results\" id=\"wrHeroSearchResults\" aria-live=\"polite\"></div> </div> <div class=\"hero-byline\"> <span><strong>{{ totalJobs ?? '—' }}</strong> {{ t.hero_byline_jobs }}</span> <span class=\"hero-byline-sep\">·</span> <span>{{ t.hero_byline_apps }}</span> <span class=\"hero-byline-sep\">·</span> <span> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"/></svg> {{ t.hero_byline_free }} </span> </div> </div> </section> {# ═══════════════ 3 PARCOURS ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <span class=\"wr-eyebrow\">{{ t.paths_eyebrow }}</span> <h2 class=\"wr-title\">{{ t.paths_title }}</h2> <p class=\"wr-lede\">{{ t.paths_lede }}</p> </div> <div class=\"paths-grid\"> <article class=\"path-card\"> <div class=\"path-card-illu\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"/><polyline points=\"14 2 14 8 20 8\"/> <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"/> </svg> </div> <span class=\"path-card-label\">{{ t.path1_label }}</span> <h3 class=\"path-card-title\">{{ t.path1_title }}</h3> <p class=\"path-card-desc\">{{ t.path1_desc }}</p> <a href=\"{{ path('whileresume_resume_' ~ app.request.locale) }}\" class=\"path-card-cta\"> {{ t.path1_cta }} <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> </article> <article class=\"path-card\"> <div class=\"path-card-illu\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <path d=\"M9 11H5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7a2 2 0 0 0-2-2h-4\"/> <polyline points=\"9 7 12 4 15 7\"/><line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"14\"/> </svg> </div> <span class=\"path-card-label\">{{ t.path2_label }}</span> <h3 class=\"path-card-title\">{{ t.path2_title }}</h3> <p class=\"path-card-desc\">{{ t.path2_desc }}</p> <a href=\"{{ path('whileresume_resume_' ~ app.request.locale) }}\" class=\"path-card-cta\"> {{ t.path2_cta }} <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> </article> <article class=\"path-card\"> <div class=\"path-card-illu\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"> <rect x=\"2\" y=\"6\" width=\"20\" height=\"14\" rx=\"2\"/> <path d=\"M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"/> <line x1=\"2\" y1=\"13\" x2=\"22\" y2=\"13\"/> </svg> </div> <span class=\"path-card-label\">{{ t.path3_label }}</span> <h3 class=\"path-card-title\">{{ t.path3_title }}</h3> <p class=\"path-card-desc\">{{ t.path3_desc }}</p> <a href=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}\" class=\"path-card-cta\"> {{ t.path3_cta }} <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> </article> </div> </div> </section> {# ═══════════════ MÉTHODE ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <span class=\"wr-eyebrow\">{{ t.how_eyebrow }}</span> <h2 class=\"wr-title\">{{ t.how_title }}</h2> <p class=\"wr-lede\">{{ t.how_lede }}</p> </div> <div class=\"method-grid\"> <div class=\"method-step\"> <div class=\"method-num\">01</div> <h3 class=\"method-title\">{{ t.step1_title }}</h3> <p class=\"method-desc\">{{ t.step1_desc }}</p> </div> <div class=\"method-step\"> <div class=\"method-num\">02</div> <h3 class=\"method-title\">{{ t.step2_title }}</h3> <p class=\"method-desc\">{{ t.step2_desc }}</p> </div> <div class=\"method-step\"> <div class=\"method-num\">03</div> <h3 class=\"method-title\">{{ t.step3_title }}</h3> <p class=\"method-desc\">{{ t.step3_desc }}</p> </div> <div class=\"method-step\"> <div class=\"method-num\">04</div> <h3 class=\"method-title\">{{ t.step4_title }}</h3> <p class=\"method-desc\">{{ t.step4_desc }}</p> </div> </div> </div> </section> {# ═══════════════ MATCH ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"match-grid\"> <div class=\"match-text\"> <span class=\"wr-eyebrow\">{{ t.match_eyebrow }}</span> <h2 class=\"wr-title wr-title--sm\">{{ t.match_title }}</h2> <p class=\"wr-lede\">{{ t.match_lede }}</p> <div class=\"match-features\"> <div class=\"match-feature\"> <div class=\"match-feature-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg> </div> <h4 class=\"match-feature-title\">{{ t.match_b1_title }}</h4> <p class=\"match-feature-desc\">{{ t.match_b1_desc }}</p> </div> <div class=\"match-feature\"> <div class=\"match-feature-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\"/><circle cx=\"12\" cy=\"12\" r=\"6\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/></svg> </div> <h4 class=\"match-feature-title\">{{ t.match_b2_title }}</h4> <p class=\"match-feature-desc\">{{ t.match_b2_desc }}</p> </div> <div class=\"match-feature\"> <div class=\"match-feature-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/></svg> </div> <h4 class=\"match-feature-title\">{{ t.match_b3_title }}</h4> <p class=\"match-feature-desc\">{{ t.match_b3_desc }}</p> </div> <div class=\"match-feature\"> <div class=\"match-feature-icon\"> <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/><polyline points=\"15 3 21 3 21 9\"/><line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\"/></svg> </div> <h4 class=\"match-feature-title\">{{ t.match_b4_title }}</h4> <p class=\"match-feature-desc\">{{ t.match_b4_desc }}</p> </div> </div> </div> <div class=\"match-visual\"> <div class=\"match-stack\"> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">A</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Lead Designer</p> <p class=\"match-stack-meta\">Acme · Remote</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">N</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Frontend Engineer</p> <p class=\"match-stack-meta\">Notion · Paris</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">L</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Product Manager</p> <p class=\"match-stack-meta\">Linear · {{ isFR ? 'Hybride' : 'Hybrid' }}</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> <div class=\"match-stack-card\"> <div class=\"match-stack-logo\">F</div> <div class=\"match-stack-info\"> <p class=\"match-stack-title\">Data Analyst</p> <p class=\"match-stack-meta\">Figma · Lyon</p> </div> <div class=\"match-stack-heart\"><svg viewBox=\"0 0 24 24\"><path d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/></svg></div> </div> </div> </div> </div> </div> </section> {# ═══════════════ APPS ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <span class=\"wr-eyebrow\">{{ t.apps_eyebrow }}</span> <h2 class=\"wr-title wr-title--sm\">{{ t.apps_title }}</h2> <p class=\"wr-lede\">{{ t.apps_lede }}</p> </div> <div class=\"apps-grid\"> <a href=\"#\" 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=\"#\" 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=\"{{ path('whileresume_resume_' ~ app.request.locale) }}\" 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> {# ═══════════════ KEYWORDS ═══════════════ #} {% if popularKeywords is defined and popularKeywords|length > 0 %} <section class=\"wr-section wr-section--tight\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">{{ t.keywords_title }}</h2> <p class=\"wr-lede\">{{ t.keywords_lede }}</p> </div> <div class=\"keywords-list\"> {% for kw in popularKeywords %} <a href=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}?q={{ kw.keyword|url_encode }}\" class=\"keyword-pill\"> {% if kw.icon %}<span class=\"keyword-pill-icon\">{{ kw.icon|raw }}</span>{% endif %} <span>{{ kw.label }}</span> </a> {% endfor %} </div> </div> </section> {% endif %} {# ═══════════════ OFFRES POPULAIRES ═══════════════ #} {% if popularJobs is defined and popularJobs|length > 0 %} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"wr-section-head\"> <h2 class=\"wr-title wr-title--sm\">{{ t.popular_title }}</h2> <p class=\"wr-lede\">{{ t.popular_lede }}</p> </div> {% for block in popularJobs %} {% if block.jobs|length > 0 %} <div class=\"listings-block\"> <div class=\"listings-block-head\"> <h3 class=\"listings-block-title\"> {% if block.icon %}<span class=\"listings-block-icon\">{{ block.icon|raw }}</span>{% endif %} {{ block.label }} </h3> <a href=\"{% if isFR %}{{ path('locale_whileresume_jobs_list',{'_locale':'fr'}) }}{% else %}{{ path('whileresume_jobs_list') }}{% endif %}?q={{ block.label|url_encode }}\" class=\"listings-block-link\"> {{ t.btn_more }} <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"/></svg> </a> </div> <div class=\"listings-jobs\"> {% for j in block.jobs|slice(0, 4) %} <a href=\"{% if j.locale == 'fr' %}{{ path('locale_cvs_application_job_show',{'_locale':app.request.locale,'slug':j.slug}) }}{% else %}{{ path('cvs_application_job_show',{'slug':j.slug}) }}{% endif %}\" class=\"listing-job\"> <div class=\"listing-job-logo\"> {% if j.image and j.image.name %} <img src=\"{{ vich_uploader_asset(j, 'imageFile') }}\" alt=\"\"> {% else %} {{ j.companyName|default('?')|slice(0,1)|upper }} {% endif %} </div> <div class=\"listing-job-info\"> <h4 class=\"listing-job-title\">{{ j.jobTitle }}</h4> <p class=\"listing-job-meta\"> {{ j.companyName }}{% if j.city %} · {{ j.city }}{% endif %}{% if j.employmentType %} · {{ j.employmentType }}{% endif %} </p> </div> <span class=\"listing-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> {% endfor %} </div> </div> {% endif %} {% endfor %} </div> </section> {% endif %} {# ═══════════════ 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> <p class=\"wr-lede\">{{ t.articles_lede }}</p> </div> <div class=\"articles-grid\"> {% 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-img\"> {% if a.image.name is not null %} <img src=\"{{ vich_uploader_asset(a, 'imageFile') }}\" alt=\"{{ a.title }}\"> {% endif %} </div> <div class=\"wr-article-body\"> <p class=\"wr-article-meta\"> {{ a.publishedAt|date(isFR ? 'd M Y' : 'M d, Y') }}{% if a.author %} · {{ a.author }}{% endif %} </p> <h3 class=\"wr-article-title\">{{ a.title }}</h3> {% if a.subtitle %}<p class=\"wr-article-excerpt\">{{ a.subtitle }}</p>{% endif %} <span class=\"wr-article-link\"> {{ t.read_article }} <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> </div> </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 ═══════════════ #} <section class=\"wr-section\"> <div class=\"wr-container\"> <div class=\"final-card\"> <h2 class=\"final-title\">{{ t.final_title }}</h2> <p class=\"final-subtitle\">{{ t.final_subtitle }}</p> <div class=\"final-buttons\"> <a href=\"{{ path('whileresume_resume_' ~ app.request.locale) }}\" class=\"final-btn final-btn--primary\"> {{ 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> <a href=\"{{ path('whileresume_business_' ~ app.request.locale) }}\" class=\"final-btn final-btn--ghost\"> {{ 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> </div> </div> </section> </div>{% endblock body %}{% block footer_js %} {{ parent() }} <script> (function(){ var form = document.getElementById('wrHeroSearch'); var input = document.getElementById('wrHeroSearchInput'); var clearBtn = document.getElementById('wrHeroSearchClear'); var results = document.getElementById('wrHeroSearchResults'); if (!form || !input || !results) return; var searchUrl = form.dataset.searchUrl; var jobsListUrl = form.dataset.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 showResults(){ results.classList.add('is-visible'); form.classList.add('has-results'); } function hideResults(){ results.classList.remove('is-visible'); form.classList.remove('has-results'); } function setLoading(){ results.innerHTML = '<div class=\"hero-search-loading\">' + '<span class=\"hero-search-spinner\"></span>' + '<span>' + escHtml(T.loading) + '</span>' + '</div>'; showResults(); } function renderResults(payload, query){ var jobs = (payload && payload.jobs) || []; var total = (payload && typeof payload.total === 'number') ? payload.total : jobs.length; if (!jobs.length){ results.innerHTML = '<div class=\"hero-search-empty\">' + '<div class=\"hero-search-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-search-empty-title\">' + escHtml(T.empty) + '</p>' + '<p class=\"hero-search-empty-hint\">' + escHtml(T.emptyHint) + '</p>' + '</div>'; showResults(); return; } var html = '<div class=\"hero-search-meta\">' + '<span><strong>' + total + '</strong> ' + escHtml(T.count) + '</span>' + '<a href=\"' + jobsListUrl + '?q=' + encodeURIComponent(query) + '\">' + escHtml(T.viewAll) + '<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>'; jobs.slice(0, 6).forEach(function(j){ var title = j.jobTitle || j.title || ''; var company = j.companyName || j.company || ''; var city = j.city || ''; var et = j.employmentType || ''; var slug = j.slug || ''; var img = j.image || j.imageUrl || ''; var url = j.url || (jobsListUrl + '?q=' + encodeURIComponent(query)); var initial = (company || title || '?').charAt(0).toUpperCase(); var meta = [company, city, et].filter(function(x){ return x; }).join(' · '); html += '<a href=\"' + escHtml(url) + '\" class=\"hero-search-result\">' + '<div class=\"hero-search-result-logo\">' + (img ? '<img src=\"' + escHtml(img) + '\" alt=\"\">' : escHtml(initial)) + '</div>' + '<div class=\"hero-search-result-info\">' + '<p class=\"hero-search-result-title\">' + escHtml(title) + '</p>' + '<p class=\"hero-search-result-meta\">' + escHtml(meta) + '</p>' + '</div>' + '<span class=\"hero-search-result-cta\">' + escHtml(T.view) + '<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>'; }); results.innerHTML = html; showResults(); } 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; results.innerHTML = '<div class=\"hero-search-empty\">' + '<p class=\"hero-search-empty-title\">' + escHtml(T.empty) + '</p>' + '<p class=\"hero-search-empty-hint\">' + escHtml(T.emptyHint) + '</p>' + '</div>'; showResults(); }); } // Input live (debounce 280ms) 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){ hideResults(); lastQuery = ''; return; } if (q === lastQuery) return; debounceTimer = setTimeout(function(){ lastQuery = q; doSearch(q); }, 280); }); // Submit → page de résultats complète form.addEventListener('submit', function(e){ var q = input.value.trim(); if (!q) { e.preventDefault(); return; } window.location.href = jobsListUrl + '?q=' + encodeURIComponent(q); e.preventDefault(); }); // Clear clearBtn.addEventListener('click', function(){ input.value = ''; clearBtn.classList.remove('is-visible'); hideResults(); lastQuery = ''; input.focus(); }); // Escape ferme input.addEventListener('keydown', function(e){ if (e.key === 'Escape'){ hideResults(); input.blur(); } }); // Clic en dehors ferme (mais pas si on clique dedans) document.addEventListener('click', function(e){ if (!form.contains(e.target) && !results.contains(e.target)){ hideResults(); } }); // Refocus input → ré-affiche les derniers résultats si on en avait input.addEventListener('focus', function(){ if (input.value.trim().length >= 2 && results.innerHTML.trim()) showResults(); }); })(); </script>{% endblock footer_js %}", "application/whileresume/website/candidates/homepage.html.twig", "/var/www/vhosts/mirtillostudio.fr/b1.mirtillostudio.fr/version-1/templates/application/whileresume/website/candidates/homepage.html.twig"); }}