{% extends 'vitrine/lexend/layout.html.twig' %}{% block title %}{{ page.shortTitle }}{% endblock title %}{% block description %}{{ page.shortDescription }}{% endblock description %}{% block robots %}{{ page.robots }}{% endblock robots %}{% block meta_social %}{{ parent() }}{% include "/vitrine/components/socialmedia.html.twig" with { 'page':page,'social_type':'website' } %}{% endblock meta_social %}{% block meta %}{{ parent() }}{% include "/vitrine/components/author.html.twig" with {'page':page } %}{% endblock meta %}{% block canonical %}{% include "/vitrine/lexend/components/languages/canonical_classic.html.twig" %}{% endblock canonical %}{% block body_header %} {% embed "/vitrine/lexend/components/header.html.twig" with {'navcolor':'blue','navtype':'default'} %} {% block header_content %} {% include "/vitrine/lexend/components/languages/classic.html.twig" %} {% endblock %} {% block header_content2 %} {% include "/vitrine/lexend/components/languages/classic_mobile.html.twig" %} {% endblock %} {% endembed %}{% endblock body_header %}{% block css %} {# ====== STYLES ====== #} <style> .wr-search-section{position:relative;z-index:2;width:100%;max-width:720px;margin:0 auto} .wr-search-bar{display:flex;align-items:center;background:#fff;border-radius:16px;padding:6px;box-shadow:0 4px 24px rgba(108,58,237,.08),0 1px 3px rgba(0,0,0,.04);border:2px solid transparent;transition:border-color .3s,box-shadow .3s;cursor:pointer} .wr-search-bar:hover,.wr-search-bar.active{border-color:rgba(108,58,237,.2);box-shadow:0 8px 32px rgba(108,58,237,.12),0 2px 6px rgba(0,0,0,.04)} .wr-search-icon{padding:12px 14px;color:#9CA3AF;display:flex;align-items:center;flex-shrink:0} .wr-search-input-wrapper{flex:1;position:relative;height:48px;display:flex;align-items:center;overflow:hidden} .wr-search-typed-text{font-size:16px;color:#1E1B2E;white-space:nowrap} .wr-search-cursor{display:inline-block;width:2px;height:20px;background:var(--color-primary,#6C3AED);margin-left:2px;animation:wrBlink 1s step-end infinite;vertical-align:middle} @keyframes wrBlink{0%,100%{opacity:1}50%{opacity:0}} .wr-search-placeholder{color:#9CA3AF;font-size:16px} .wr-search-real-input{width:100%;border:none;outline:none;font-size:16px;color:#1E1B2E;background:transparent;font-family:inherit} .wr-search-real-input::placeholder{color:#9CA3AF} .wr-search-btn{background:var(--color-primary,#6C3AED);color:#fff;border:none;padding:12px 24px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .2s,transform .15s;flex-shrink:0;font-family:inherit} .wr-search-btn:hover{filter:brightness(1.1);transform:scale(1.02)} @media(max-width:640px){.wr-search-btn span{display:none}.wr-search-btn{padding:12px 14px}} .wr-search-tags{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap;justify-content:center} .wr-search-tags>span.wr-label{font-size:13px;color:#9CA3AF} .wr-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 12px;border-radius:100px;font-size:13px;font-weight:500;background:#fff;color:#4B5563;border:1px solid rgba(0,0,0,.06);cursor:pointer;transition:all .2s;text-decoration:none} .wr-tag:hover{background:#F5F3FF;color:var(--color-primary,#6C3AED);border-color:rgba(108,58,237,.2)} .wr-search-results{position:relative;background:#fff;border-radius:16px;box-shadow:0 12px 48px rgba(0,0,0,.1),0 2px 8px rgba(0,0,0,.04);padding:0;max-height:0;overflow:hidden;transition:max-height .5s ease,padding .5s ease,margin .5s ease,opacity .4s ease;z-index:10;opacity:0;margin-top:0} .wr-search-results.visible{max-height:2000px;padding:8px;margin-top:12px;opacity:1} .wr-result-item{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:12px;cursor:pointer;transition:background .2s,opacity .3s ease,transform .3s ease;opacity:0;transform:translateY(8px);text-decoration:none;color:inherit} .wr-result-item.show{opacity:1;transform:translateY(0)} .wr-result-item:hover{background:#F5F3FF} .wr-result-item+.wr-result-item{border-top:1px solid rgba(0,0,0,.04)} .wr-result-logo{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;font-weight:700} .wr-result-logo img{width:100%;height:100%;object-fit:cover;border-radius:10px} .wr-result-info{flex:1;text-align:left;min-width:0} .wr-result-title{font-size:14px;font-weight:600;color:#1E1B2E;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wr-result-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:#9CA3AF;flex-wrap:wrap} .wr-result-company{color:#4B5563;font-weight:500} .wr-result-badge{display:inline-flex;padding:2px 8px;border-radius:6px;font-size:11px;font-weight:600} .wr-badge-new{background:#DCFCE7;color:#16A34A} .wr-badge-hot{background:#FEF3C7;color:#D97706} .wr-badge-expire{background:#FEE2E2;color:#DC2626} .wr-result-salary{font-size:13px;font-weight:600;color:var(--color-primary,#6C3AED);white-space:nowrap} .wr-result-actions{display:flex;align-items:center;gap:8px;flex-shrink:0} .wr-like-btn{background:none;border:none;cursor:pointer;padding:6px;border-radius:8px;transition:transform .2s,background .2s;display:flex;align-items:center} .wr-like-btn:hover{transform:scale(1.15);background:rgba(239,68,68,.06)} .wr-like-btn svg{width:20px;height:20px;stroke:#D1D5DB;fill:none;transition:all .2s} .wr-like-btn.liked svg{stroke:#EF4444;fill:#EF4444} .wr-results-cta-overlay{position:relative;margin-top:4px;border-radius:12px;overflow:hidden} .wr-results-blurred{padding:10px 14px;display:flex;flex-direction:column;gap:10px;filter:blur(5px);opacity:.5;pointer-events:none;user-select:none} .wr-blurred-row{display:flex;align-items:center;gap:12px} .wr-blurred-circle{width:44px;height:44px;border-radius:10px;background:#E5E7EB;flex-shrink:0} .wr-blurred-lines{flex:1;display:flex;flex-direction:column;gap:6px} .wr-blurred-line{height:10px;border-radius:5px;background:#E5E7EB} .wr-blurred-line:first-child{width:60%}.wr-blurred-line:last-child{width:40%} .wr-cta-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(255,255,255,.65);backdrop-filter:blur(2px);border-radius:12px;gap:8px} .wr-cta-overlay-text{font-size:14px;font-weight:600;color:#1E1B2E} .wr-cta-overlay-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 20px;background:var(--color-primary,#6C3AED);color:#fff;border:none;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s;text-decoration:none;font-family:inherit} .wr-cta-overlay-btn:hover{filter:brightness(1.1);transform:translateY(-1px)} .wr-results-count{text-align:center;padding:10px;font-size:13px;color:#9CA3AF;border-top:1px solid rgba(0,0,0,.04);margin-top:4px} .wr-results-count strong{color:var(--color-primary,#6C3AED)} .wr-hero-badge{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid rgba(108,58,237,.15);padding:6px 16px;border-radius:100px;font-size:13px;font-weight:500;color:var(--color-primary,#6C3AED)} .wr-hero-badge .wr-dot{width:8px;height:8px;background:#22C55E;border-radius:50%;animation:wrPulseDot 2s ease-in-out infinite} @keyframes wrPulseDot{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}} .wr-video-cta{display:inline-flex;align-items:center;gap:6px;background:rgba(108,58,237,.06);padding:6px 14px;border-radius:100px;font-weight:500;color:var(--color-primary,#6C3AED);font-size:14px} {# === Styles mode connectรฉ === #} .wr-loading{text-align:center;padding:30px 20px} .wr-spinner{display:inline-block;width:28px;height:28px;border:3px solid rgba(108,58,237,.15);border-top-color:var(--color-primary,#6C3AED);border-radius:50%;animation:wrSpin .7s linear infinite} @keyframes wrSpin{to{transform:rotate(360deg)}} .wr-empty-state,.wr-coming-soon{text-align:center;padding:40px 20px} .wr-empty-icon,.wr-coming-icon{font-size:40px;margin-bottom:12px} .wr-empty-title,.wr-coming-title{font-size:16px;font-weight:600;color:#1E1B2E;margin:0 0 6px} .wr-empty-text,.wr-coming-text{font-size:14px;color:#9CA3AF;margin:0} .wr-load-more{display:flex;justify-content:center;padding:12px 8px 4px} .wr-load-more-btn{background:none;border:2px solid var(--color-primary,#6C3AED);color:var(--color-primary,#6C3AED);padding:8px 24px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit} .wr-load-more-btn:hover{background:var(--color-primary,#6C3AED);color:#fff} .wr-load-more-btn:disabled{opacity:.5;cursor:not-allowed} {# === Styles offres populaires === #} .wr-popular-card{display:block;text-decoration:none;color:inherit;background:#fff;border-radius:14px;padding:16px;border:1px solid rgba(0,0,0,.06);transition:transform .2s,box-shadow .2s} .wr-popular-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.08)} .wr-popular-avatar{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;flex-shrink:0} .wr-popular-title{font-size:14px;font-weight:600;color:#1E1B2E;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wr-popular-meta{font-size:12px;color:#9CA3AF;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .wr-popular-badge{display:inline-flex;padding:2px 10px;border-radius:6px;font-size:11px;font-weight:600} .wr-popular-date{font-size:11px;color:#6B7280} </style>{% endblock css %}{% block body %} <div id="hero_header" class="hero-header section panel overflow-hidden"> <div class="position-absolute top-0 start-0 end-0 h-screen bg-secondary dark:bg-gray-300 dark:bg-opacity-15 rounded-bottom-2 lg:rounded-bottom-5"></div> <div class="section-outer panel py-8 lg:py-9 xl:py-10"> <div class="container"> <div class="section-inner panel"> <div class="d-none xl:d-block"> <div class="position-absolute rounded-circle border border-dashed border-primary-300 dark:border-white dark:border-opacity-15 cstack w-56px h-56px d-none lg:d-block" style="top: 5%; left: 5%" data-anime="translateY: [0, 10]; easing: linear; loop: true; direction: alternate; delay: 0;"><img class="p-narrow rounded-circle" src="/uploads/no_avatar.png" alt="Anonymous candidate"></div> <div class="position-absolute rounded-circle border border-dashed border-primary-300 dark:border-white dark:border-opacity-15 cstack w-56px h-56px d-none lg:d-block" style="top: 20%; left: 10%" data-anime="translateY: [0, 15]; easing: linear; loop: true; direction: alternate; delay: 25;"><img class="p-narrow rounded-circle" src="/uploads/no_avatar.png" alt="Anonymous candidate"></div> <div class="position-absolute rounded-circle border border-dashed border-primary-300 dark:border-white dark:border-opacity-15 cstack w-56px h-56px d-none lg:d-block" style="top: 35%; left: 0%" data-anime="translateY: [0, 5]; easing: linear; loop: true; direction: alternate; delay: 25;"><img class="p-narrow rounded-circle" src="/uploads/no_avatar.png" alt="Anonymous candidate"></div> <div class="position-absolute rounded-circle border border-dashed border-primary-300 dark:border-white dark:border-opacity-15 cstack w-56px h-56px d-none lg:d-block" style="top: 5%; right: 5%" data-anime="translateY: [0, 10]; easing: linear; loop: true; direction: alternate; delay: 0;"><img class="p-narrow rounded-circle" src="/uploads/no_avatar.png" alt="Anonymous candidate"></div> <div class="position-absolute rounded-circle border border-dashed border-primary-300 dark:border-white dark:border-opacity-15 cstack w-56px h-56px d-none lg:d-block" style="top: 20%; right: 10%" data-anime="translateY: [0, 15]; easing: linear; loop: true; direction: alternate; delay: 25;"><img class="p-narrow rounded-circle" src="/uploads/no_avatar.png" alt="Anonymous candidate"></div> <div class="position-absolute rounded-circle border border-dashed border-primary-300 dark:border-white dark:border-opacity-15 cstack w-56px h-56px d-none lg:d-block" style="top: 35%; right: 0%" data-anime="translateY: [0, 5]; easing: linear; loop: true; direction: alternate; delay: 25;"><img class="p-narrow rounded-circle" src="/uploads/no_avatar.png" alt="Anonymous candidate"></div> </div> <div class="row child-cols-12 justify-center items-center g-8"> <div class="lg:col-12"> <div class="panel vstack gap-4 lg:gap-6"> <div class="panel vstack justify-center items-center gap-2 px-2 pt-4 text-center"> <div class="wr-hero-badge"> ๐ +20,000 job listings </div> <h1 class="h3 md:h2 lg:display-4 m-0">The next-gen <span class="text-primary dark:text-tertiary">career board</span> โ your next job is already looking for you</h1> <p class="fs-6 xl:fs-4 xl:px-10 dark:text-white text-opacity-70"> Create your profile on <span class="text-primary dark:text-tertiary">Whileresume</span> and let <span class="text-primary dark:text-tertiary">opportunities</span> come to you </p> </div> {# ====== SEARCH BAR ====== #} <div class="wr-search-section" id="wrSearchSection"> <div class="wr-search-bar{#% if app.user %#} active{#% endif %#}" id="wrSearchBar"> <div class="wr-search-icon"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg> </div> <div class="wr-search-input-wrapper"> {#% if app.user %#} <input type="text" id="wrSearchInput" class="wr-search-real-input" placeholder="Search a job title, company, city..." autocomplete="off"> {#% else %} <span class="wr-search-typed-text" id="wrTypedText"></span><span class="wr-search-cursor" id="wrCursor"></span> <span class="wr-search-placeholder" id="wrPlaceholder">Fullstack Developer, UX Designer, Teacher...</span> {% endif %#} </div> <button class="wr-search-btn" id="wrSearchBtn"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/></svg> <span>Search</span> </button> </div> <div class="wr-search-tags"> <span class="wr-label">Popular:</span> {% for pk in popularKeywords %} <span class="wr-tag" data-search="{{ pk.keyword }}">{{ pk.icon }} {{ pk.label }}</span> {% endfor %} </div> </div> {# ====== CTA BUTTONS ====== #} <div class="panel vstack justify-center items-center text-center"> <div class="vstack md:hstack justify-center"> <a href="{{ ios_us }}" class="btn btn-md btn-outline-primary dark:border-tertiary dark:text-tertiary dark:hover:bg-tertiary dark:hover:text-primary-700 border-2 px-3 w-auto" style="margin-top:10px;"> Download for iOS <svg fill="#000000" width="25px" height="25px" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M18.71 19.5C17.88 20.74 17 21.95 15.66 21.97C14.32 22 13.89 21.18 12.37 21.18C10.84 21.18 10.37 21.95 9.09997 22C7.78997 22.05 6.79997 20.68 5.95997 19.47C4.24997 17 2.93997 12.45 4.69997 9.39C5.56997 7.87 7.12997 6.91 8.81997 6.88C10.1 6.86 11.32 7.75 12.11 7.75C12.89 7.75 14.37 6.68 15.92 6.84C16.57 6.87 18.39 7.1 19.56 8.82C19.47 8.88 17.39 10.1 17.41 12.63C17.44 15.65 20.06 16.66 20.09 16.67C20.06 16.74 19.67 18.11 18.71 19.5ZM13 3.5C13.73 2.67 14.94 2.04 15.94 2C16.07 3.17 15.6 4.35 14.9 5.19C14.21 6.04 13.07 6.7 11.95 6.61C11.8 5.46 12.36 4.26 13 3.5Z"/></svg> </a> <a href="{{ android_us }}" class="btn btn-md btn-outline-primary dark:border-tertiary dark:text-tertiary dark:hover:bg-tertiary dark:hover:text-primary-700 border-2 px-3 w-auto" style="margin-top:10px; margin-left:10px;"> Download for Android <svg height="20px" width="20px" version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" xml:space="preserve"><g><g><path style="fill:#3A9BC8;" d="M225.656,256.052L14.016,485.451l-6.442,7.052c-4.005-5.919-6.704-12.972-7.313-20.806C0.087,470.305,0,468.91,0,467.518V44.499c0-9.488,2.873-18.02,7.574-24.987L225.656,256.052z"/><path style="fill:#9BCD83;" d="M320.811,152.8l-95.155,103.253L7.574,19.512C19.936,1.405,45.183-6.342,66.6,6.02L320.811,152.8z"/><path style="fill:#EEB84C;" d="M455.056,257.27c-0.348,14.453-7.748,28.904-22.113,37.174l-112.132,64.771l-95.155-103.163L320.811,152.8l70.518,40.745l41.614,24.026C448.178,226.366,455.579,241.861,455.056,257.27z"/><path style="fill:#B43F70;" d="M7.591,492.492c12.368,18.116,37.599,25.838,58.976,13.496L320.775,359.22l-95.156-103.209L7.591,492.492z"/></g><path style="opacity:0.2;fill:#FFFFFF;" d="M454.067,246.447c-2.453-11.518-9.483-22.156-21.124-28.876l-41.614-24.026L320.811,152.8L66.6,6.02C45.183-6.342,19.936,1.405,7.574,19.512C2.873,26.479,0,35.011,0,44.499v243.72c36.681,3.114,74.226,4.746,112.451,4.746c47.984,0,94.85-2.644,140.318-7.505l-27.027-29.314l27.038,29.314C323.988,277.849,391.567,264.55,454.067,246.447z"/></g></svg> </a> </div> </div> {# ====== RESULTS ====== #} {#% if app.user %#} {# ========== LOGGED IN: real AJAX results ========== #} <div class="wr-search-results visible" id="wrSearchResults" style="max-height:none;opacity:1;padding:8px;margin-top:12px;"> <div id="wrJobsList"></div> <div id="wrLoading" class="wr-loading"> <div class="wr-spinner"></div> </div> <div id="wrEmptyState" class="wr-empty-state" style="display:none;"> <div class="wr-empty-icon">๐</div> <p class="wr-empty-title">No job matches your search</p> <p class="wr-empty-text">Try different keywords or check the popular searches above</p> </div> <div id="wrComingSoon" class="wr-coming-soon" style="display:none;"> <div class="wr-coming-icon">๐</div> <p class="wr-coming-title">New jobs coming soon!</p> <p class="wr-coming-text">We add new opportunities every day.<br>Come back soon or enable notifications to stay informed.</p> </div> <div id="wrLoadMore" class="wr-load-more" style="display:none;"> <button class="wr-load-more-btn" id="wrLoadMoreBtn">See more jobs</button> </div> <div class="wr-results-count" id="wrResultsCount" style="display:none;"> <strong id="wrTotalCount">0</strong> jobs found </div> </div> {#% else %} <div class="wr-search-results" id="wrSearchResults"> <div id="wrResultsList"></div> <div class="wr-results-cta-overlay"> <div class="wr-results-blurred"> <div class="wr-blurred-row"><div class="wr-blurred-circle"></div><div class="wr-blurred-lines"><div class="wr-blurred-line"></div><div class="wr-blurred-line"></div></div></div> <div class="wr-blurred-row"><div class="wr-blurred-circle"></div><div class="wr-blurred-lines"><div class="wr-blurred-line"></div><div class="wr-blurred-line"></div></div></div> </div> <div class="wr-cta-overlay"> <span class="wr-cta-overlay-text">๐ Sign up to see all jobs</span> <a href="{{ path('whileresume_resume_' ~ app.request.locale) }}" class="wr-cta-overlay-btn">Create my profile for free <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M7 17l9.2-9.2M17 17V7H7"/></svg></a> </div> </div> {% if totalJobs is defined and totalJobs > 0 %} <div class="wr-results-count"> <strong>+{{ totalJobs|number_format(0, ',', ' ') }} jobs</strong> found </div> {% endif %} </div> {% endif %#} <div class="panel vstack justify-center items-center text-center"> <div class="vstack sm:hstack items-center justify-center gap-1 fs-6 text-gray-900 dark:text-white"> <span class="wr-video-cta">๐ฅ Share your <strong> video resume </strong> to increase your chances</span> </div> <div class="vstack sm:hstack items-center justify-center gap-1 fs-6 text-gray-900 dark:text-white"> <span class="desc">Did you know? <a href="https://www.welcometothejungle.com/fr/articles/marche-cache-emploi-candidater" target="_blank">40%</a> of job offers remain hidden and are directly given to recruiters</span> </div> </div> </div> </div> </div> </div> </div> </div> </div> {#% if app.user %#} <script> (function(){ var LIKED_IDS = {{ likedJobIds|json_encode|raw }}; var IS_CANDIDATE = {{ (app.user.typeAccount is defined and app.user.typeAccount == 'candidate') ? 'true' : 'false' }}; var JOB_BASE_URL = '/job/'; var SEARCH_API = '{{ path("api_jobs_search") }}'; var LIKE_API = '{{ path("api_jobs_like") }}'; var palette = [ {bg:'#EDE9FE',color:'#7C3AED'},{bg:'#DBEAFE',color:'#2563EB'}, {bg:'#D1FAE5',color:'#059669'},{bg:'#FEF3C7',color:'#D97706'}, {bg:'#FCE7F3',color:'#DB2777'},{bg:'#FEE2E2',color:'#DC2626'}, {bg:'#E0E7FF',color:'#4338CA'},{bg:'#CCFBF1',color:'#0D9488'} ]; function getColor(name){ var h=0;for(var i=0;i<name.length;i++) h=name.charCodeAt(i)+((h<<5)-h); return palette[Math.abs(h)%palette.length]; } var searchInput = document.getElementById('wrSearchInput'); var searchBtn = document.getElementById('wrSearchBtn'); var jobsList = document.getElementById('wrJobsList'); var loading = document.getElementById('wrLoading'); var emptyState = document.getElementById('wrEmptyState'); var comingSoon = document.getElementById('wrComingSoon'); var loadMoreWrap = document.getElementById('wrLoadMore'); var loadMoreBtn = document.getElementById('wrLoadMoreBtn'); var resultsCount = document.getElementById('wrResultsCount'); var totalCountEl = document.getElementById('wrTotalCount'); var currentQuery = ''; var currentOffset = 0; var LIMIT = 10; var isLoading = false; var debounceTimer; var heartSvg = '<svg viewBox="0 0 24 24" 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>'; function renderJob(job){ var col = getColor(job.companyName); var logoHtml; if(job.image){ logoHtml = '<div class="wr-result-logo"><img src="'+job.image+'" alt="'+job.companyName+'"></div>'; } else { logoHtml = '<div class="wr-result-logo" style="background:'+col.bg+';color:'+col.color+';">'+job.logo+'</div>'; } var badgeHtml = ''; if(job.isNew) badgeHtml = '<span class="wr-result-badge wr-badge-new">New</span>'; var salaryHtml = job.salary ? '<span class="wr-result-salary">'+job.salary+'</span>' : ''; var likeHtml = ''; if(IS_CANDIDATE){ var likedClass = LIKED_IDS.indexOf(job.id) !== -1 ? ' liked' : ''; likeHtml = '<button class="wr-like-btn'+likedClass+'" data-job-id="'+job.id+'" title="Save">'+heartSvg+'</button>'; } var remoteHtml = ''; if(job.remoteWork && job.remoteWork !== '' && job.remoteWork !== 'no'){ var remoteLabel = job.remoteWork === 'full' ? 'Full remote' : (job.remoteWork === 'hybrid' ? 'Hybrid' : job.remoteWork); remoteHtml = '<span>ยท</span><span>'+remoteLabel+'</span>'; } var div = document.createElement('a'); div.className = 'wr-result-item'; div.href = JOB_BASE_URL + job.slug; div.innerHTML = logoHtml + '<div class="wr-result-info">' + '<div class="wr-result-title">' + job.jobTitle + '</div>' + '<div class="wr-result-meta">' + '<span class="wr-result-company">' + job.companyName + '</span>' + (job.city ? '<span>ยท</span><span>' + job.city + '</span>' : '') + '<span>ยท</span><span>' + job.employmentType + '</span>' + remoteHtml + badgeHtml + '</div>' + '</div>' + '<div class="wr-result-actions">' + salaryHtml + likeHtml + '</div>'; return div; } function fetchJobs(query, offset, append){ if(isLoading) return; isLoading = true; if(!append){ jobsList.innerHTML = ''; loadMoreWrap.style.display = 'none'; resultsCount.style.display = 'none'; } loading.style.display = 'block'; emptyState.style.display = 'none'; comingSoon.style.display = 'none'; var url = SEARCH_API + '?q=' + encodeURIComponent(query) + '&offset=' + offset + '&limit=' + LIMIT; fetch(url, {credentials:'same-origin'}) .then(function(r){ return r.json(); }) .then(function(data){ loading.style.display = 'none'; isLoading = false; if(data.total === 0 && query === ''){ comingSoon.style.display = 'block'; return; } if(data.total === 0 && query !== ''){ emptyState.style.display = 'block'; return; } data.jobs.forEach(function(job, i){ var el = renderJob(job); jobsList.appendChild(el); setTimeout(function(){ el.classList.add('show'); }, 50 + i * 60); }); totalCountEl.textContent = data.total; resultsCount.style.display = 'block'; if(data.hasMore){ loadMoreWrap.style.display = 'flex'; } else { loadMoreWrap.style.display = 'none'; } currentOffset = offset + data.jobs.length; }) .catch(function(err){ console.error('Search error:', err); loading.style.display = 'none'; isLoading = false; }); } function toggleLike(btn){ var jobId = parseInt(btn.getAttribute('data-job-id')); fetch(LIKE_API, { method: 'POST', credentials: 'same-origin', headers: {'Content-Type':'application/json'}, body: JSON.stringify({jobId: jobId}) }) .then(function(r){ return r.json(); }) .then(function(data){ if(data.liked){ btn.classList.add('liked'); if(LIKED_IDS.indexOf(jobId) === -1) LIKED_IDS.push(jobId); } else { btn.classList.remove('liked'); var idx = LIKED_IDS.indexOf(jobId); if(idx !== -1) LIKED_IDS.splice(idx, 1); } }) .catch(function(err){ console.error('Like error:', err); }); } jobsList.addEventListener('click', function(e){ var likeBtn = e.target.closest('.wr-like-btn'); if(likeBtn){ e.preventDefault(); e.stopPropagation(); toggleLike(likeBtn); } }); searchInput.addEventListener('input', function(){ clearTimeout(debounceTimer); debounceTimer = setTimeout(function(){ currentQuery = searchInput.value.trim(); currentOffset = 0; fetchJobs(currentQuery, 0, false); }, 350); }); searchBtn.addEventListener('click', function(e){ e.preventDefault(); clearTimeout(debounceTimer); currentQuery = searchInput.value.trim(); currentOffset = 0; fetchJobs(currentQuery, 0, false); }); searchInput.addEventListener('keydown', function(e){ if(e.key === 'Enter'){ e.preventDefault(); clearTimeout(debounceTimer); currentQuery = searchInput.value.trim(); currentOffset = 0; fetchJobs(currentQuery, 0, false); } }); loadMoreBtn.addEventListener('click', function(){ fetchJobs(currentQuery, currentOffset, true); }); document.querySelectorAll('.wr-tag').forEach(function(tag){ tag.addEventListener('click', function(){ var s = tag.getAttribute('data-search'); searchInput.value = s; currentQuery = s; currentOffset = 0; fetchJobs(s, 0, false); }); }); fetchJobs('', 0, false); })(); </script> {#% else %} <script> (function(){ var palette = [ {bg:'#EDE9FE',color:'#7C3AED'},{bg:'#DBEAFE',color:'#2563EB'}, {bg:'#D1FAE5',color:'#059669'},{bg:'#FEF3C7',color:'#D97706'}, {bg:'#FCE7F3',color:'#DB2777'},{bg:'#FEE2E2',color:'#DC2626'}, {bg:'#E0E7FF',color:'#4338CA'},{bg:'#CCFBF1',color:'#0D9488'} ]; function getColor(name){ var h=0;for(var i=0;i<name.length;i++) h=name.charCodeAt(i)+((h<<5)-h); return palette[Math.abs(h)%palette.length]; } var JOB_BASE_URL = '/job/'; var searches = {{ popularJobsForVisitor|json_encode|raw }}; var typedEl=document.getElementById('wrTypedText'),placeholderEl=document.getElementById('wrPlaceholder'),searchBar=document.getElementById('wrSearchBar'),searchResults=document.getElementById('wrSearchResults'),resultsList=document.getElementById('wrResultsList'); var currentSearch=0,charIndex=0,animTimeout; var resultsVisible=false; function buildResults(items){ resultsList.innerHTML=''; if(!items || items.length === 0){ resultsList.innerHTML='<div style="text-align:center;padding:20px;color:#9CA3AF;font-size:14px;">No jobs found for this search</div>'; return; } items.forEach(function(d){ var col = getColor(d.jobTitle); var initial = d.jobTitle ? d.jobTitle.charAt(0).toUpperCase() : '?'; var badgeHtml = ''; if(d.diffDays <= 3){ badgeHtml = '<span class="wr-result-badge wr-badge-new">๐ New</span>'; } else if(d.daysUntilExpiry <= 5 && d.daysUntilExpiry > 0){ badgeHtml = '<span class="wr-result-badge wr-badge-expire">โณ Expires in '+d.daysUntilExpiry+'d</span>'; } else if(d.daysUntilExpiry <= 0){ badgeHtml = '<span class="wr-result-badge wr-badge-expire">โณ Expired</span>'; } var dateHtml = '<span class="wr-popular-date" style="font-size:12px;color:#6B7280;">๐
'+d.createdAt+'</span>'; var div=document.createElement('a'); div.className='wr-result-item'; div.href=JOB_BASE_URL + d.slug; div.innerHTML= '<div class="wr-result-logo" style="background:'+col.bg+';color:'+col.color+';">'+initial+'</div>'+ '<div class="wr-result-info">'+ '<div class="wr-result-title">'+d.jobTitle+'</div>'+ '<div class="wr-result-meta">'+ '<span>๐ '+d.city+'</span>'+ '<span>ยท</span><span>'+d.employmentType+'</span>'+ badgeHtml+ '</div>'+ '</div>'+ '<div class="wr-result-actions">'+dateHtml+'</div>'; resultsList.appendChild(div); }); } function showResults(){ searchResults.classList.add('visible'); searchBar.classList.add('active'); resultsVisible=true; resultsList.querySelectorAll('.wr-result-item').forEach(function(item,i){ setTimeout(function(){item.classList.add('show');},100+i*80); }); } function updateResults(items){ var old=resultsList.querySelectorAll('.wr-result-item'); old.forEach(function(item){item.classList.remove('show');}); setTimeout(function(){ buildResults(items); resultsList.querySelectorAll('.wr-result-item').forEach(function(item,i){ setTimeout(function(){item.classList.add('show');},50+i*80); }); },200); } function typeText(text,cb){ if(charIndex<text.length){typedEl.textContent+=text[charIndex];charIndex++;animTimeout=setTimeout(function(){typeText(text,cb)},70+Math.random()*50)}else{cb&&cb()} } function deleteText(cb){ var t=typedEl.textContent;if(t.length>0){typedEl.textContent=t.slice(0,-1);animTimeout=setTimeout(function(){deleteText(cb)},35)}else{cb&&cb()} } function runAnimation(){ if(searches.length === 0) return; var data=searches[currentSearch];placeholderEl.style.display='none';charIndex=0; typeText(data.text,function(){ animTimeout=setTimeout(function(){ if(resultsVisible){updateResults(data.jobs)}else{buildResults(data.jobs);showResults()} animTimeout=setTimeout(function(){ deleteText(function(){currentSearch=(currentSearch+1)%searches.length;animTimeout=setTimeout(runAnimation,800)}); },4000); },500); }); } if(searches.length > 0){ var firstData=searches[0]; placeholderEl.style.display='none'; typedEl.textContent=firstData.text; buildResults(firstData.jobs); showResults(); currentSearch=1 % searches.length; animTimeout=setTimeout(function(){deleteText(function(){animTimeout=setTimeout(runAnimation,800)})},3000); } document.querySelectorAll('.wr-tag').forEach(function(tag){ tag.addEventListener('click',function(){ clearTimeout(animTimeout);typedEl.textContent='';placeholderEl.style.display='none';charIndex=0; var s=tag.getAttribute('data-search'); var data=searches.find(function(x){return x.searchKeyword===s})||searches.find(function(x){return x.text===s})||searches[0]; if(data){ typeText(data.text,function(){setTimeout(function(){if(resultsVisible){updateResults(data.jobs)}else{buildResults(data.jobs);showResults()}},400)}); } }); }); })(); </script> {% endif %#} <div id="how_it_works" class="how-it-works section panel overflow-hidden" style="margin-top:30px;"> <div class="section-outer panel"> <div class="container"> <div style="text-align:center; margin-bottom:50px;"> <h2 class="h4 sm:h3 xl:h2 m-0">How does it work?</h2> </div> <div class="section-inner panel vstack border rounded-3 overflow-hidden" style="background-color:#F4ECE1;"> <div class="row child-cols-12 md:child-cols justify-center col-match g-4 sep uc-grid"> <div class="min-w-1/4"> <div class="panel vstack items-center gap-2 text-center p-5 xl:py-8"> {#<span class="icon-box w-40px md:w-48px h-40px md:h-48px rounded-circle cstack bg-primary dark:bg-tertiary text-tertiary dark:text-primary">1</span>#} <img class="w-100" src="/uploads/rh/mascotte_register.png" alt="Alice signs up on Whileresume"> <h3 class="h5 lg:h4 m-0">I sign up for free</h3> <p class="fs-6">Connect with companies actively looking for profiles like yours, across a wide range of industries.</p> </div> </div> <div class="min-w-1/4"> <div class="panel vstack items-center gap-2 text-center p-5 xl:py-8"> {# <span class="icon-box w-40px md:w-48px h-40px md:h-48px rounded-circle cstack bg-primary dark:bg-tertiary text-tertiary dark:text-primary">2</span> #} <img class="w-100" src="/uploads/rh/mascotte_upload2.png" alt="Alice uploads her resume on Whileresume"> <h3 class="h5 lg:h4 m-0">I upload my resume</h3> <p class="fs-6"> I upload my resume in PDF format and/or my video presentation. I define my skills, level, and expectations.</p> </div> </div> <div class="min-w-100 lg:min-w-1/4"> <div class="panel vstack items-center gap-2 text-center p-5 xl:py-8"> {# <span class="icon-box w-40px md:w-48px h-40px md:h-48px rounded-circle cstack bg-primary dark:bg-tertiary text-tertiary dark:text-primary">3</span> #} <img class="w-100" src="/uploads/rh/mascotte_reunion.png" alt="Alice meets an IT recruiter"> <h3 class="h5 lg:h4 m-0">Companies contact me</h3> <p class="fs-6">They use our filters to find my profile and contact me directly with matching opportunities, or I can apply directly to open positions.</p> </div> </div> </div> </div> </div> </div> </div> <div id="main_features" class="main-features section panel overflow-hidden"> <div class="section-outer panel py-6 lg:py-8 xl:py-10"> <div class="container"> <div class="row child-cols col-match justify-between g-4 lg:g-8 xl:g-10"> <div class="col-12 sm:col-6 order-0 lg:order-1"> <div class="panel w-100"><img src="/uploads/rh/mascotte_filtrage3.png" title="Criteria-based filtering" alt="Criteria-based filtering" class="rounded-2" style="background-color:#F5EDE3;"></div> </div> <div class="col-12 sm:col-6 order-1 lg:order-0"> <div class="panel vstack justify-between gap-4 sm:gap-6 h-100"> <div> <div class="panel vstack gap-2"> <span class="fs-6 fw-bold m-0 text-primary">01.</span> <h2 class="h4 lg:h3 xl:h2 m-0">Criteria-based filtering</h2> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80"><strong>Define once</strong> your essential criteria: desired position, industry, preferred city, and work preferences. Our advanced filtering system allows recruiters to identify you precisely based on your expectations.</p> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80">No more irrelevant opportunities: only offers that truly match your profile will reach out to you.</p> </div> </div> <div> <div class="p-3 panel vstack gap-3 rounded border"> <p class="fs-6 dark:text-white">"Finally, a recruitment platform that works for me. I set my essential criteria just once and only receive opportunities that actually match my profile. It saves me time and makes the whole process much more efficient."</p> <div class="panel hstack gap-1"><div class="panel vstack items-start gap-0"><h6 class="h6 m-0">Clark PHILLIP</h6><span class="fs-7 opacity-70">Data Engineer</span></div></div> </div> </div> </div> </div> </div> <div class="row child-cols col-match justify-between g-4 lg:g-8 xl:g-10" style="margin-top:40px;"> <div class="col-12 sm:col-6 order-0 lg:order-1"> <div class="panel w-100"><img src="/uploads/rh/mascotte_upload.png" title="Alice uploads her resume" alt="Alice uploads her resume" class="rounded-2" style="background-color:#F5EDE3;"></div> </div> <div class="col-12 sm:col-6 order-1 lg:order-0"> <div class="panel vstack justify-between gap-4 sm:gap-6 h-100"> <div> <div class="panel vstack gap-2"> <span class="fs-6 fw-bold m-0 text-primary">02.</span> <h2 class="h4 lg:h3 xl:h2 m-0">Smart optimization</h2> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80"><strong>Upload your existing resume</strong> and let Whileresume analyze it automatically. The system extracts and structures all your information to create an <strong>optimized presentation</strong> tailored to your profile.</p> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80">Whileresume identifies and highlights your <strong>soft skills</strong> (leadership, communication, adaptability...), your <strong>hard skills</strong> (technical expertise, tools, certifications), your <strong>professional experience</strong> with quantifiable achievements, and your <strong>notable projects</strong>.</p> </div> </div> <div> <div class="p-3 panel vstack gap-3 rounded border"> <p class="fs-6 dark:text-white">"The AI-powered tool helps me build a strong profile by integrating all the key skills from my resume. It makes it easier for companies to find me than on any other platform, which means more opportunities."</p> <div class="panel hstack gap-1"><div class="panel vstack items-start gap-0"><h6 class="h6 m-0">Alicia GEVERS</h6><span class="fs-7 opacity-70">Digital Marketer</span></div></div> </div> </div> </div> </div> </div> <div class="row child-cols col-match justify-between g-4 lg:g-8 xl:g-10" style="margin-top:40px;"> <div class="col-12 sm:col-6 order-0 lg:order-1"> <div class="panel w-100"><img src="/uploads/rh/mascotte_register.png" class="rounded-2" alt="A recruiter receives a stack of qualified resumes" loading="lazy"></div> </div> <div class="col-12 sm:col-6 order-1 lg:order-0"> <div class="panel vstack justify-between gap-4 sm:gap-6 h-100"> <div> <div class="panel vstack gap-2"> <span class="fs-6 fw-bold m-0 text-primary">03.</span> <h2 class="h4 lg:h3 xl:h2 m-0">Qualified search</h2> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80">No need to actively search anymore: <strong>recruiters</strong> find you through <strong>your predefined criteria</strong>. Your profile stays visible 24/7 to companies & recruiters that match your expectations.</p> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80">You save time while multiplying <strong>your career opportunities</strong>. Job searching finally becomes passive and efficient.</p> </div> </div> <div> <div class="p-3 panel vstack gap-3 rounded border"> <p class="fs-6 dark:text-white">"This platform cuts out the noise. Every message I receive is a real opportunity that matches my profile. It's truly refreshing to finally have a recruitment process that respects my time."</p> <div class="panel hstack gap-1"><div class="panel vstack items-start gap-0"><h6 class="h6 m-0">Bryan OSHEN</h6><span class="fs-7 opacity-70">Product Owner</span></div></div> </div> </div> </div> </div> </div> <div class="row child-cols col-match justify-between g-4 lg:g-8 xl:g-10" style="margin-top:40px;"> <div class="col-12 sm:col-6 order-0 lg:order-1"> <div class="panel w-100"><img src="/uploads/rh/mascotte_reunion.png" alt="" class="rounded-2"></div> </div> <div class="col-12 sm:col-6 order-1 lg:order-0"> <div class="panel vstack justify-between gap-4 sm:gap-6 h-100"> <div> <div class="panel vstack gap-2"> <span class="fs-6 fw-bold m-0 text-primary">04.</span> <h2 class="h4 lg:h3 xl:h2 m-0">Qualified direct contact</h2> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80">Recruiters contact you <strong>directly</strong> only if they have <strong>a concrete opportunity</strong> that matches your criteria. Every <strong>contact</strong> you receive is <strong>qualified and relevant</strong>.</p> <p class="fs-6 lg:fs-5 opacity-70 dark:opacity-80">You avoid irrelevant solicitations and focus on real opportunities. The recruitment process becomes more transparent and respectful of your time.</p> </div> </div> <div> <div class="p-3 panel vstack gap-3 rounded border"> <p class="fs-6 dark:text-white">"Since I started using Whileresume, I only receive offers that truly match my profile. Within two weeks, I landed three interviews for roles I'm genuinely excited about. It's a real time and energy saver."</p> <div class="panel hstack gap-1"> <div class="panel vstack items-start gap-0"> <h6 class="h6 m-0">Sophie MARCHAND</h6> <span class="fs-7 opacity-70">Senior Full-Stack Developer</span> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div id="pre_cta" class="pre-cta section panel overflow-hidden"> <div class="section-outer panel pb-4 sm:pb-6 xl:pb-9"> <div class="container max-w-xl"> <div class="section-inner panel p-4 md:p-6 lg:p-8 rounded-1-5 lg:rounded-2 bg-secondary dark:bg-gray-800 dark:text-white" data-anime="onview: -200; translateY: [24, 0]; opacity: [0, 1]; easing: easeOutCubic; duration: 500;" style="transform: translateY(0px); opacity: 1;"> <div class="vstack items-center gap-2 mx-auto text-center" data-anime="onview: -200; targets: >*; translateY: [48, 0]; opacity: [0, 1]; easing: easeOutCubic; duration: 500; delay: anime.stagger(100, {start: 200});"> <h2 class="h3 m-0"> Whileresume connects talent with high-growth companies </h2> <div class="row" style="margin-top:15px;"> <div class="col-md-6"> <div style="background-color:white; text-align:left; border-radius:20px; padding:20px;"> <h3 class="h3 m-0" style="color:purple;">Recruiter</h3> <p class="fs-6 text-dark dark:text-white text-opacity-70" style="margin-top:10px;"> We connect the best talent in the market with growing companies looking for exceptional collaborators. </p> <a href="{{ path('whileresume_business_' ~ app.request.locale) }}" class="btn btn-md btn-primary rounded-default text-white shadow-xs" style="margin-top:10px;">I'm hiring <i class="icon-2 unicon-arrow-up-right rtl:-rotate-90"></i></a> </div> </div> <div class="col-md-6"> <div style="background-color:white; text-align:left; border-radius:20px; padding:20px;"> <h3 class="h3 m-0" style="color:purple;">Candidate</h3> <p class="fs-6 text-dark dark:text-white text-opacity-70" style="margin-top:10px;"> We support you in your search for the ideal position within the most promising companies in the market. </p> <a href="{{ path('whileresume_resume_' ~ app.request.locale) }}" class="btn btn-md btn-primary rounded-default text-white shadow-xs" style="margin-top:10px;">I'm looking for a job <i class="icon-2 unicon-arrow-up-right rtl:-rotate-90"></i></a> </div> </div> </div> </div> </div> </div> </div> </div> <div id="faq" class="faq section panel" style="margin-bottom:100px;"> <div class="section panel"> <div class="container"> <div class="section-inner panel"> <div class="row child-cols-12 col-match gy-2 lg:gy-6"> <div> <div class="vstack items-center text-center gap-2"> <h2 class="h4 lg:h3 m-0">How does it work?</h2> </div> </div> <div> <div class="panel"> <ul class="uc-accordion gap-1 max-w-850px mx-auto" data-uc-accordion="targets: > li; multiple: false;"> <li class="panel p-3 lg:p-4 rounded-1-5 bg-secondary dark:bg-gray-300 dark:bg-opacity-15"> <a class="uc-accordion-title h6 md:h5 lg:h4 ls-0 fw-bold ltr:pe-4 rtl:ps-4" href="#">How do recruiters find me?</a> <div class="uc-accordion-content lg:fs-5 opacity-70"> <p>Recruiters use our advanced filters (position, sector, city, preferences) to identify candidates who exactly match their needs. Your profile appears only in relevant searches according to your predefined criteria.</p> </div> </li> <li class="panel p-3 lg:p-4 rounded-1-5 bg-secondary dark:bg-gray-300 dark:bg-opacity-15"> <a class="uc-accordion-title h6 md:h5 lg:h4 ls-0 fw-bold ltr:pe-4 rtl:ps-4" href="#">Can I modify my criteria after registration?</a> <div class="uc-accordion-content lg:fs-5 opacity-70"> <p>Yes, you can modify your position, sector, city and contract type preferences at any time. These changes are immediately reflected in recruiters' searches.</p> </div> </li> <li class="panel p-3 lg:p-4 rounded-1-5 bg-secondary dark:bg-gray-300 dark:bg-opacity-15"> <a class="uc-accordion-title h6 md:h5 lg:h4 ls-0 fw-bold ltr:pe-4 rtl:ps-4" href="#">How does AI work to create my resume?</a> <div class="uc-accordion-content lg:fs-5 opacity-70"> <p>AI analyzes your information and creates a professional resume adapted to your sector. You can choose from different formats (European, corporate, themed) and AI automatically optimizes the presentation of your skills to maximize your impact.</p> </div> </li> <li class="panel p-3 lg:p-4 rounded-1-5 bg-secondary dark:bg-gray-300 dark:bg-opacity-15"> <a class="uc-accordion-title h6 md:h5 lg:h4 ls-0 fw-bold ltr:pe-4 rtl:ps-4" href="#">Is my personal data protected?</a> <div class="uc-accordion-content lg:fs-5 opacity-70"> <p>All your data is encrypted and stored securely. You have complete control over your profile and can choose to use an anonymous resume if you wish. No information is shared without your consent.</p> </div> </li> <li class="panel p-3 lg:p-4 rounded-1-5 bg-secondary dark:bg-gray-300 dark:bg-opacity-15"> <a class="uc-accordion-title h6 md:h5 lg:h4 ls-0 fw-bold ltr:pe-4 rtl:ps-4" href="#">What happens when a recruiter contacts me?</a> <div class="uc-accordion-content lg:fs-5 opacity-70"> <p>You receive a notification with the opportunity details. The recruiter contacts you directly because your profile matches their search criteria. You can then communicate and decide if the opportunity interests you.</p> </div> </li> <li class="panel p-3 lg:p-4 rounded-1-5 bg-secondary dark:bg-gray-300 dark:bg-opacity-15"> <a class="uc-accordion-title h6 md:h5 lg:h4 ls-0 fw-bold ltr:pe-4 rtl:ps-4" href="#">Is the platform really free?</a> <div class="uc-accordion-content lg:fs-5 opacity-70"> <p>Yes, registration and use of the platform are 100% free for candidates. You can create your profile, upload your resume, use AI and receive contacts from recruiters without any fees.</p> </div> </li> </ul> </div> </div> </div> </div> </div> </div> </div> <div id="articles" class="faq section panel" style="margin-bottom:100px;"> <div class="section-outer panel"> <div class="container"> <div style="margin-bottom:50px; margin-top:50px;"> <div class="vstack items-center text-center gap-2"> <h2 class="h4 lg:h3 m-0">Our articles to help you apply</h2> </div> </div> <div class="row child-cols-12 sm:child-cols-4 col-match gy-4 gx-2 xl:gx-4"> {% for article in articles %} {% set urlArticle = path('blog_article',{'slug': article.slug}) %} {% if article.pageslug3 is not empty %} {% set urlArticle = article.pageslug ~ '/' ~ article.pageslug2 ~ '/' ~ article.pageslug3 %} {% elseif article.pageslug2 is not empty %} {% set urlArticle = article.pageslug ~ '/' ~ article.pageslug2 %} {% elseif article.pageslug is not empty %} {% set urlArticle = article.pageslug %} {% endif %} <div class="col-12"> <article class="post type-post panel rounded-3 p-2 md:p-4 bg-secondary dark:bg-gray-800"> <div class="panel row child-cols-12 sm:child-cols items-center g-3 md:g-4"> <div class="sm:col-4 md:col-6 lg:col-4"> <div class="panel"> {% if article.image.name is not null %} <figure class="featured-image m-0 rounded ratio ratio-1x1 rounded-2 uc-transition-toggle overflow-hidden"> <img class="media-cover image uc-transition-scale-up uc-transition-opaque" src="{{ vich_uploader_asset(article, 'imageFile') }}" alt="{{ article.title }}" title="{{ article.title }}"> <a class="position-cover" data-caption="Maximizing your reach with marketing strategies" href="#"></a> </figure> {% else %} <figure class="featured-image m-0 rounded ratio ratio-1x1 rounded-2 uc-transition-toggle overflow-hidden"> <img class="media-cover image uc-transition-scale-up uc-transition-opaque" src="/uploads/no_article.jpg" alt="{{ article.title }}" title="{{ article.title }}"> <a class="position-cover" data-caption="Maximizing your reach with marketing strategies" href="#"></a> </figure> {% endif %} </div> </div> <div> <div class="vstack items-start gap-2 md:gap-3"> <ul class="post-meta nav-x ft-tertiary justify-start gap-1 fs-7"> <li> <div class="post-date hstack gap-narrow"> <span>{{ article.publishedAt|date("d, M, Y") }}</span> </div> </li> </ul> <h3 class="h4 sm:h5 md:h4 lg:h3 m-0 m-0"> <a class="text-none" href="{{ urlArticle }}">{{ article.title }}</a> </h3> <p class="fs-6 md:fs-5 d-none md:d-block">{{ article.subtitle }}</p> <a class="btn btn-text text-primary border-bottom d-inline-flex fs-7 md:fs-6 my-1 md:my-2 d-none md:d-block" href="{{ urlArticle }}"> Read the article </a> </div> </div> </div> </article> </div> {% endfor %} </div> </div> </div> </div> <div id="pre_cta" class="pre-cta section panel overflow-hidden"> <div class="section-outer panel pb-4 sm:pb-6 xl:pb-9"> <div class="container max-w-xl"> <div class="section-inner panel p-4 md:p-6 lg:p-8 rounded-1-5 lg:rounded-2 bg-secondary dark:bg-gray-800 dark:text-white" data-anime="onview: -200; translateY: [24, 0]; opacity: [0, 1]; easing: easeOutCubic; duration: 500;" style="transform: translateY(0px); opacity: 1;"> <div class="vstack items-center gap-2 mx-auto text-center" data-anime="onview: -200; targets: >*; translateY: [48, 0]; opacity: [0, 1]; easing: easeOutCubic; duration: 500; delay: anime.stagger(100, {start: 200});"> <h2 class="h3 m-0"> Whileresume connects talent with high-growth companies </h2> <div class="row" style="margin-top:15px;"> <div class="col-md-6"> <div style="background-color:white; text-align:left; border-radius:20px; padding:20px;"> <h3 class="h3 m-0" style="color:purple;">Recruiter</h3> <p class="fs-6 text-dark dark:text-white text-opacity-70" style="margin-top:10px;"> We connect the best talent in the market with growing companies looking for exceptional collaborators. </p> <a href="{{ path('whileresume_business_' ~ app.request.locale) }}" class="btn btn-md btn-primary rounded-default text-white shadow-xs" style="margin-top:10px;">I'm hiring <i class="icon-2 unicon-arrow-up-right rtl:-rotate-90"></i></a> </div> </div> <div class="col-md-6"> <div style="background-color:white; text-align:left; border-radius:20px; padding:20px;"> <h3 class="h3 m-0" style="color:purple;">Candidate</h3> <p class="fs-6 text-dark dark:text-white text-opacity-70" style="margin-top:10px;"> We support you in your search for the ideal position within the most promising companies in the market. </p> <a href="{{ path('whileresume_resume_' ~ app.request.locale) }}" class="btn btn-md btn-primary rounded-default text-white shadow-xs" style="margin-top:10px;">I'm looking for a job <i class="icon-2 unicon-arrow-up-right rtl:-rotate-90"></i></a> </div> </div> </div> </div> </div> </div> </div> </div>{% endblock body %}