{% extends 'application/whileresume/website/layout-social.html.twig' %}{% set isFR = app.request.locale == 'fr' %}{% set _keys = [ 'hero_eyebrow', 'hero_title_a1','hero_title_p1','hero_title_a2','hero_title_p2','hero_title_a3','hero_title_p3', 'hero_lede', 'how_title', 'how1_title','how1_desc','how2_title','how2_desc','how3_title','how3_desc', 'feat1_label','feat1_title','feat1_p1','feat1_p2','feat1_quote','feat1_author','feat1_role', 'feat2_label','feat2_title','feat2_p1','feat2_p2','feat2_quote','feat2_author','feat2_role', 'feat3_label','feat3_title','feat3_p1','feat3_p2','feat3_quote','feat3_author','feat3_role', 'feat4_label','feat4_title','feat4_p1','feat4_p2','feat4_quote','feat4_author','feat4_role', 'signup_eyebrow','signup_title','signup_lede', 'signup_name_ph','signup_lastname_ph','signup_email_ph','signup_pass_ph','signup_pass2_ph', 'signup_terms_pre','signup_terms_link','signup_terms_and','signup_terms_link2','signup_btn','signup_login_pre','signup_login_link', 'signup_perk1','signup_perk2','signup_perk3', 'pricing_title','pricing_lede','pricing_plus', 'pricing1_name','pricing1_desc','pricing1_price','pricing1_unit','pricing1_cta','pricing1_note', 'pricing1_b1','pricing1_b2','pricing1_b3','pricing1_b4','pricing1_b5', 'pricing2_name','pricing2_desc','pricing2_price','pricing2_unit','pricing2_cta','pricing2_note', 'pricing2_b1','pricing2_b2','pricing2_b3','pricing2_b4','pricing2_b5', 'pricing3_name','pricing3_desc','pricing3_price','pricing3_price_old','pricing3_unit','pricing3_cta','pricing3_note', 'pricing3_b1','pricing3_b2','pricing3_b3','pricing3_b4','pricing3_b5','pricing3_b6','pricing3_b7', 'pricing4_name','pricing4_desc','pricing4_price','pricing4_unit','pricing4_cta','pricing4_note', 'pricing4_b1','pricing4_b2','pricing4_b3','pricing4_b4','pricing4_b5','pricing4_b6','pricing4_b7','pricing4_b8','pricing4_b9','pricing4_b10','pricing4_b11', 'compare_title', 'compare_us_rank','compare_linkedin_rank','compare_indeed_rank', 'compare_us_name','compare_linkedin_name','compare_indeed_name', 'compare_row1_label','compare_row1_us','compare_row1_linkedin','compare_row1_indeed', 'compare_row2_label','compare_row2_us','compare_row2_linkedin','compare_row2_indeed', 'compare_row3_label','compare_row3_us','compare_row3_linkedin','compare_row3_indeed', 'compare_row4_label','compare_row4_us','compare_row4_linkedin','compare_row4_indeed', 'compare_row5_label','compare_row5_us','compare_row5_linkedin','compare_row5_indeed', 'articles_title','articles_view_all','read_article', 'faq_title','faq_lede','faq_q1','faq_a1','faq_q2','faq_a2','faq_q3','faq_a3'] %}{% set t = {} %}{% for k in _keys %} {% set t = t|merge({(k): ('homepage_business.' ~ k)|trans({}, 'whr-public')}) %}{% endfor %}{% block title %}{{ page.shortTitle }}{% endblock %}{% block description %}{{ page.shortDescription }}{% endblock %}{% block robots %}{{ page.robots }}{% endblock %}{% block canonical %} {# Override : on n'inclut pas canonical_classic car les routes business ne suivent pas la convention "locale_<route>" attendue. On gère manuellement canonical + hreflang ici. #} {% set _urlFr = url('whileresume_business_fr') %} {% set _urlEn = url('whileresume_business_en') %} <link rel="canonical" href="{{ isFR ? _urlFr : _urlEn }}" /> <link rel="alternate" hreflang="fr" href="{{ _urlFr }}" /> <link rel="alternate" hreflang="en" href="{{ _urlEn }}" /> <link rel="alternate" hreflang="x-default" href="{{ _urlEn }}" />{% endblock %}{% block css %} {{ parent() }} <style> /* ═══════════════════════════════════════════════════════════════════ VARIABLES ═══════════════════════════════════════════════════════════════════ */ :root{ --wr-bg:#FBFCFE; --wr-bg-2:#F4F6FB; --wr-card:#FFFFFF; --wr-violet:#8A63C1; --wr-violet-2:#A98AD3; --wr-violet-soft:#F2EDFA; --wr-violet-softer:#F8F4FD; --wr-violet-dark:#6B47A6; --wr-ink:#1E1B2E; --wr-ink-2:#374151; --wr-muted:#6B7280; --wr-muted-2:#9CA3AF; --wr-line:#EEF1F7; --wr-line-2:#E5E9F0; --wr-shadow:0 1px 2px rgba(30,27,46,.04),0 4px 16px rgba(30,27,46,.04); --wr-shadow-hover:0 4px 8px rgba(138,99,192,.08),0 12px 32px rgba(138,99,192,.1); /* Accents colorés pour les logos d'offres (lettres) */ --wr-acc-yellow:#FEF3C7; --wr-acc-yellow-fg:#B45309; --wr-acc-green:#D1FAE5; --wr-acc-green-fg:#047857; --wr-acc-pink:#FCE7F3; --wr-acc-pink-fg:#BE185D; --wr-acc-blue:#DBEAFE; --wr-acc-blue-fg:#1E40AF; --wr-acc-orange:#FED7AA; --wr-acc-orange-fg:#C2410C; --wr-acc-violet:#EDE9FE; --wr-acc-violet-fg:#6D28D9; --wr-acc-cyan:#CFFAFE; --wr-acc-cyan-fg:#0E7490; } /* ═══════════════════════════════════════════════════════════════════ 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 ═══ */ .wr-title{ font-family:inherit; font-weight:700; font-size:28px;line-height:1.15;letter-spacing:-0.025em; color:var(--wr-ink); margin:0 auto 16px; max-width:1200px; } @media(min-width:768px){.wr-title{font-size:34px}} @media(min-width:1024px){.wr-title{font-size:40px}} .wr-title--sm{font-size:24px} @media(min-width:768px){.wr-title--sm{font-size:30px}} .wr-title em{font-style:normal;font-weight:700;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 — Style soft, recherche dashboard, boutons pleins ═══════════════════════════════════════════════════════════════════ */ @keyframes wrFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}} @keyframes wrPulse2{0%{box-shadow:0 0 0 0 rgba(16,185,129,.4)}70%{box-shadow:0 0 0 8px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}} /* ═══ Reveal au scroll (Intersection Observer ajoute .is-revealed) ═══ */ .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)} .reveal.is-revealed{opacity:1;transform:translateY(0)} .reveal--left{transform:translateX(-32px) translateY(0)} .reveal--left.is-revealed{transform:translateX(0)} .reveal--right{transform:translateX(32px) translateY(0)} .reveal--right.is-revealed{transform:translateX(0)} .reveal--scale{transform:scale(.96);opacity:0} .reveal--scale.is-revealed{transform:scale(1);opacity:1} .reveal[data-reveal-delay="1"]{transition-delay:.08s} .reveal[data-reveal-delay="2"]{transition-delay:.16s} .reveal[data-reveal-delay="3"]{transition-delay:.24s} .reveal[data-reveal-delay="4"]{transition-delay:.32s} @media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}} .hero{ position:relative; background:var(--wr-bg); padding:24px 32px 0; overflow:hidden; } @media(max-width:768px){.hero{padding:18px 18px 0}} /* Décor : 2 blobs très flous violet pâle */ .hero::before{ content:"";position:absolute; top:-260px;right:-180px;width:560px;height:560px; background:radial-gradient(circle,rgba(138,99,192,.14) 0%,transparent 65%); pointer-events:none;filter:blur(50px); } .hero::after{ content:"";position:absolute; top:120px;left:-180px;width:480px;height:480px; background:radial-gradient(circle,rgba(138,99,192,.09) 0%,transparent 65%); pointer-events:none;filter:blur(50px); } .hero-inner{position:relative;z-index:2;max-width:1200px;margin:0 auto;text-align:center} /* ═══ Eyebrow ═══ */ .hero-badge{ display:inline-flex;align-items:center;gap:8px; padding:7px 16px;border-radius:100px; background:var(--wr-violet-soft); color:var(--wr-violet-dark); font-size:12px;font-weight:600; text-transform:uppercase;letter-spacing:.1em; margin-bottom:10px; opacity:0;transform:translateY(8px); animation:wrFadeUp .8s ease forwards; } .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse2 2s ease infinite} /* ═══ Titre — 57px desktop, plein largeur conteneur ═══ */ .hero-title{ font-weight:700; font-size:24px;line-height:1.05;letter-spacing:-0.04em; color:var(--wr-ink); margin:0 auto 12px; width:100%;max-width:1200px; opacity:0;transform:translateY(12px); animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) .15s forwards; } @media(min-width:768px){.hero-title{font-size:40px;letter-spacing:-0.045em}} @media(min-width:1100px){.hero-title{font-size:57px;letter-spacing:-0.045em}} .hero-title-accent{ color:var(--wr-violet); } .hero-lede{ font-size:15px;line-height:1.5;color:var(--wr-ink-2);font-weight:400; margin:0 auto 16px;max-width:680px; opacity:0;animation:wrFadeUp .9s ease .4s forwards; } @media(min-width:768px){.hero-lede{font-size:17px}} .hero-lede-accent{color:var(--wr-violet);font-weight:600} /* ═══ Recherche — pleine largeur (alignée sur la liste 1200px) ═══ */ .hero-search-wrap{ max-width:1200px;margin:0 auto 12px; opacity:0;animation:wrFadeUp .9s ease .55s forwards; position:relative;z-index:5; } .hero-search{ background:var(--wr-card); border-radius:14px; box-shadow:0 0 20px 0 rgba(0,0,0,0.05),0 16px 40px rgba(138,99,192,.06); padding:10px; position:relative; } .hero-search-inner{ display:flex;align-items:center;gap:10px; padding:10px 14px;border-radius:10px; background:#F9FAFB;border:1px solid #E5E7EB; transition:border-color .2s,background .2s; } .hero-search-inner:focus-within{ border-color:rgba(138,99,192,.4); background:#fff; } .hero-search-icon{color:var(--wr-muted-2);display:flex;flex-shrink:0} .hero-search-icon svg{width:16px;height:16px} .hero-search-input{ flex:1;border:0;outline:0;background:transparent; font-size:14.5px;font-family:inherit;color:var(--wr-ink); padding:6px 0;min-width:0; } .hero-search-input::placeholder{color:var(--wr-muted-2)} .hero-search-clear{ background:none;border:0;color:var(--wr-muted-2);cursor:pointer; padding:4px;display:none;font-family:inherit; border-radius:6px;transition:background .15s,color .15s; } .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)} .hero-search-clear.is-visible{display:flex;align-items:center} .hero-search-clear svg{width:14px;height:14px} .hero-search-kbd{ display:none;align-items:center; padding:3px 8px;background:#fff;border:1px solid #E5E7EB;border-radius:6px; font-size:10.5px;font-weight:600;color:var(--wr-muted); font-family:inherit;letter-spacing:.02em;white-space:nowrap;flex-shrink:0; } .hero-search-inner:focus-within .hero-search-kbd{display:inline-flex} /* ═══ États de la liste de jobs (header, empty, loading) ═══ */ .hero-jobs-header{ display:flex;align-items:center;justify-content:space-between;gap:10px; padding:14px 22px 10px; border-bottom:1px solid var(--wr-line); margin-bottom:4px; } @media(max-width:540px){.hero-jobs-header{padding:12px 16px 8px}} .hero-jobs-count{ font-size:11.5px;color:var(--wr-muted); text-transform:uppercase;letter-spacing:.08em;font-weight:600; } .hero-jobs-count strong{color:var(--wr-violet);font-weight:800;font-size:13px;margin-right:4px} .hero-jobs-link{ font-size:11px;font-weight:700; color:var(--wr-violet); text-transform:uppercase;letter-spacing:.08em; text-decoration:none; display:inline-flex;align-items:center;gap:5px; transition:color .15s,transform .15s; } .hero-jobs-link:hover{color:var(--wr-violet-dark);text-decoration:none;transform:translateX(2px)} .hero-jobs-link svg{width:11px;height:11px} .hero-jobs-empty{text-align:center;padding:48px 20px;color:var(--wr-muted)} .hero-jobs-empty-icon{width:48px;height:48px;border-radius:14px;background:var(--wr-violet-soft);color:var(--wr-violet);display:inline-flex;align-items:center;justify-content:center;margin-bottom:14px} .hero-jobs-empty-icon svg{width:22px;height:22px} .hero-jobs-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px} .hero-jobs-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)} .hero-jobs-loading{text-align:center;padding:36px 20px;color:var(--wr-muted);font-size:13px;display:flex;align-items:center;justify-content:center;gap:10px} .hero-jobs-spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--wr-violet-soft);border-top-color:var(--wr-violet);animation:wrSpin .7s linear infinite} @keyframes wrSpin{to{transform:rotate(360deg)}} /* ═══ Pills "Populaire" sous la recherche ═══ */ .hero-popular{ display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap; margin-bottom:18px; opacity:0;animation:wrFadeUp .9s ease .7s forwards; } .hero-popular-label{ font-size:11px;font-weight:600;color:var(--wr-muted); text-transform:uppercase;letter-spacing:.06em; margin-right:4px; } .hero-popular-pill{ display:inline-flex;align-items:center;gap:5px; padding:6px 12px;border-radius:100px; background:var(--wr-violet-soft); color:var(--wr-violet); font-size:12.5px;font-weight:500;font-family:inherit; text-decoration:none;cursor:pointer; border:1px solid transparent; transition:background .15s,border-color .15s,transform .15s,color .15s; } .hero-popular-pill:hover{ background:#EDE9FE; border-color:rgba(138,99,192,.2); transform:translateY(-1px); color:var(--wr-violet); text-decoration:none; } .hero-popular-pill.is-active{ background:var(--wr-violet);color:#fff;border-color:var(--wr-violet); } .hero-popular-pill.is-active:hover{background:var(--wr-violet-dark);color:#fff} .hero-popular-pill-icon{font-size:13px;line-height:1} /* ═══ CTA hero (boutons inscription + connexion pour anonymes) ═══ */ .hero-cta{ display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap; margin:24px 0 8px; opacity:0;animation:wrFadeUp .9s ease 1.1s forwards; } .hero-cta-btn, .hero-cta-btn:link, .hero-cta-btn:visited, .hero-cta-btn:hover, .hero-cta-btn:focus, .hero-cta-btn:active{ color:#fff !important; text-decoration:none !important; } .hero-cta-btn{ display:inline-flex;align-items:center;gap:8px; padding:11px 20px;border-radius:11px; font-size:13.5px;font-weight:700;font-family:inherit; line-height:1; background:var(--wr-violet);border:1px solid var(--wr-violet); box-shadow:0 4px 14px rgba(138,99,193,.32); transition:background .15s,border-color .15s,transform .15s,box-shadow .15s; } .hero-cta-btn:hover{ background:var(--wr-violet-dark);border-color:var(--wr-violet-dark); transform:translateY(-2px); box-shadow:0 6px 20px rgba(138,99,193,.4); } .hero-cta-btn svg{width:15px;height:15px;flex-shrink:0;stroke:#fff !important;color:#fff !important} .hero-cta-btn span{color:#fff !important} @media(max-width:540px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta-btn{justify-content:center}} /* ═══ Boutons stores — VIOLET PLEIN BLANC ═══ */ .hero-stores{ display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap; margin-bottom:48px; opacity:0;animation:wrFadeUp .9s ease .85s forwards; } .hero-store-btn{ display:inline-flex;align-items:center;gap:10px; padding:13px 24px;border-radius:12px; background:var(--wr-violet); border:0; color:#fff; font-size:14px;font-weight:600; text-decoration:none; transition:background .15s,transform .15s,box-shadow .15s; box-shadow:0 4px 12px rgba(138,99,192,.3); } .hero-store-btn:hover{ background:var(--wr-violet-dark); color:#fff; transform:translateY(-2px); box-shadow:0 8px 22px rgba(138,99,192,.4); text-decoration:none; } .hero-store-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px} .hero-store-btn-icon svg{width:18px;height:18px} @media(max-width:540px){.hero-stores{flex-direction:column;align-items:stretch;gap:10px}.hero-store-btn{justify-content:center}} /* ═══════════════════════════════════════════════════════════════════ LISTE PAR DÉFAUT SOUS LE HERO (offres récentes) ═══════════════════════════════════════════════════════════════════ */ .hero-default-jobs{ position:relative;z-index:2; max-width:1200px;margin:0 auto; background:var(--wr-card); border:1px solid var(--wr-line); border-radius:18px; padding:8px 0; box-shadow:var(--wr-shadow); opacity:0;animation:wrFadeUp .9s ease 1s forwards; text-align:left; } .hero-default-job{ display:flex;align-items:center;gap:16px; padding:14px 22px; text-decoration:none;color:inherit; border-bottom:1px solid var(--wr-line); transition:background .15s; } .hero-default-job:last-child{border-bottom:0} .hero-default-job:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit} .hero-default-job-logo{ width:42px;height:42px;border-radius:11px;flex-shrink:0; display:flex;align-items:center;justify-content:center; font-weight:700;font-size:16px;overflow:hidden; } .hero-default-job-logo img{width:100%;height:100%;object-fit:cover} /* 7 variantes de couleurs cyclées par index */ .hero-default-job:nth-child(7n+1) .hero-default-job-logo{background:var(--wr-acc-yellow);color:var(--wr-acc-yellow-fg)} .hero-default-job:nth-child(7n+2) .hero-default-job-logo{background:var(--wr-acc-green);color:var(--wr-acc-green-fg)} .hero-default-job:nth-child(7n+3) .hero-default-job-logo{background:var(--wr-acc-pink);color:var(--wr-acc-pink-fg)} .hero-default-job:nth-child(7n+4) .hero-default-job-logo{background:var(--wr-acc-blue);color:var(--wr-acc-blue-fg)} .hero-default-job:nth-child(7n+5) .hero-default-job-logo{background:var(--wr-acc-orange);color:var(--wr-acc-orange-fg)} .hero-default-job:nth-child(7n+6) .hero-default-job-logo{background:var(--wr-acc-violet);color:var(--wr-acc-violet-fg)} .hero-default-job:nth-child(7n+7) .hero-default-job-logo{background:var(--wr-acc-cyan);color:var(--wr-acc-cyan-fg)} .hero-default-job-info{flex:1;min-width:0} .hero-default-job-title{ font-weight:600;font-size:14.5px;color:var(--wr-ink); margin:0 0 2px;line-height:1.3; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; } .hero-default-job-meta{ font-size:12.5px;color:var(--wr-muted);margin:0; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; display:flex;align-items:center;gap:8px; } .hero-default-job-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--wr-muted-2);flex-shrink:0} .hero-default-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .hero-default-job-arrow svg{width:15px;height:15px} .hero-default-job:hover .hero-default-job-arrow{color:var(--wr-violet);transform:translateX(3px)} @media(max-width:768px){ .hero-default-jobs{margin:0 -18px;border-radius:14px} .hero-default-job{padding:12px 16px;gap:12px} .hero-default-job-logo{width:36px;height:36px;font-size:13px} .hero-default-job-title{font-size:13.5px} .hero-default-job-meta{font-size:11.5px;gap:6px;flex-wrap:wrap;white-space:normal} } /* ═══════════════════════════════════════════════════════════════════ 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)} /* ═══════════════════════════════════════════════════════════════════ COMMENT ÇA MARCHE — Card crème englobante avec 3 sous-cards ═══════════════════════════════════════════════════════════════════ */ .how-card{ background:#F4ECE1; border-radius:24px; padding:32px 24px; display:grid;grid-template-columns:repeat(3,1fr);gap:24px; position:relative; } @media(max-width:991px){.how-card{grid-template-columns:1fr;gap:8px;padding:24px 16px}} @media(min-width:992px){ /* Séparateurs verticaux entre les 3 cellules */ .how-card .how-step + .how-step{border-left:1px solid rgba(28,25,22,.08)} } .how-step{ display:flex;flex-direction:column;align-items:center;text-align:center; padding:16px 20px; gap:16px; } .how-step-illu{ width:100%;max-width:280px;aspect-ratio:1/1; border-radius:16px; background:rgba(255,255,255,.5); display:flex;align-items:center;justify-content:center; margin-bottom:4px; overflow:hidden; } .how-step-illu img{width:100%;height:100%;object-fit:contain;display:block} .how-step-illu svg{width:55%;height:55%;opacity:.85} .how-step-title{ font-weight:700;font-size:18px;line-height:1.3;letter-spacing:-0.01em; color:var(--wr-ink);margin:0; } @media(min-width:992px){.how-step-title{font-size:20px}} .how-step-desc{ font-size:14px;line-height:1.55;color:var(--wr-ink-2); margin:0;max-width:320px; } /* ═══════════════════════════════════════════════════════════════════ FEATURES 01-04 — Splits alternés image/texte avec témoignages ═══════════════════════════════════════════════════════════════════ */ .feat-block{ display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center; margin-bottom:64px; } .feat-block:last-child{margin-bottom:0} @media(max-width:991px){ .feat-block{grid-template-columns:1fr;gap:24px;margin-bottom:48px} } /* Alterner : 01 illu droite, 02 illu gauche, 03 illu droite, 04 illu gauche */ .feat-block:nth-child(odd) .feat-illu{order:2} .feat-block:nth-child(odd) .feat-content{order:1} .feat-block:nth-child(even) .feat-illu{order:1} .feat-block:nth-child(even) .feat-content{order:2} @media(max-width:991px){ .feat-block .feat-illu{order:1} .feat-block .feat-content{order:2} } .feat-illu{ background:#F5EDE3; border-radius:20px; aspect-ratio:1/1; display:flex;align-items:center;justify-content:center; color:var(--wr-violet); overflow:hidden; position:relative; } .feat-illu img{width:100%;height:100%;object-fit:contain;display:block} .feat-illu svg{width:50%;height:50%;opacity:.85} .feat-content{display:flex;flex-direction:column;gap:18px} .feat-label{ font-size:30px;font-weight:800; color:var(--wr-ink); letter-spacing:-0.02em; margin:0;line-height:1; } .feat-title{ font-weight:700;font-size:24px;line-height:1.2;letter-spacing:-0.02em; color:var(--wr-ink);margin:0; } @media(min-width:768px){.feat-title{font-size:28px}} @media(min-width:1100px){.feat-title{font-size:30px}} .feat-desc{ display:flex;flex-direction:column;gap:14px; } .feat-desc p{ font-size:15px;line-height:1.6;color:var(--wr-ink-2); margin:0;opacity:.85; } @media(min-width:1100px){.feat-desc p{font-size:16px}} .feat-desc strong{color:var(--wr-ink);font-weight:700;opacity:1} .feat-quote{ background:var(--wr-card); border:1px solid var(--wr-line); border-radius:14px; padding:18px 20px; display:flex;flex-direction:column;gap:10px; margin-top:8px; } .feat-quote-text{ font-size:14px;line-height:1.55;color:var(--wr-ink-2); margin:0;font-style:italic; } .feat-quote-author{ display:flex;flex-direction:column; } .feat-quote-name{font-size:13px;font-weight:700;color:var(--wr-ink);margin:0} .feat-quote-role{font-size:12px;color:var(--wr-muted);margin:0} /* ═══════════════════════════════════════════════════════════════════ 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,box-shadow .3s ease; cursor:pointer; } .match-stack-card:hover{ transform:translateY(-4px) rotate(0deg)!important; box-shadow:0 20px 50px rgba(138,99,192,.22)!important; z-index:10!important; } .match-stack-card:nth-child(1){top:0;transform:rotate(-6deg) translateX(-10px);z-index:1;animation:wrFloat1 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:wrFloat2 6s ease-in-out -2s infinite} .match-stack-card:nth-child(3){top:156px;transform:rotate(-3deg) translateX(8px);z-index:2;animation:wrFloat3 6s ease-in-out -4s infinite} .match-stack-card:nth-child(4){top:234px;left:20px;transform:rotate(4deg);z-index:1;animation:wrFloat4 6s ease-in-out -1s infinite} @keyframes wrFloat1{0%,100%{transform:rotate(-6deg) translate(-10px,0)}50%{transform:rotate(-6deg) translate(-10px,-8px)}} @keyframes wrFloat2{0%,100%{transform:rotate(2deg) translate(0,0)}50%{transform:rotate(2deg) translate(0,-6px)}} @keyframes wrFloat3{0%,100%{transform:rotate(-3deg) translate(8px,0)}50%{transform:rotate(-3deg) translate(8px,-7px)}} @keyframes wrFloat4{0%,100%{transform:rotate(4deg) translate(0,0)}50%{transform:rotate(4deg) translate(0,-5px)}} .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; animation:wrHeartbeat 1.6s ease-in-out infinite; } .match-stack-card:nth-child(1) .match-stack-heart{animation-delay:0s} .match-stack-card:nth-child(2) .match-stack-heart{animation-delay:.4s} .match-stack-card:nth-child(3) .match-stack-heart{animation-delay:.8s} .match-stack-card:nth-child(4) .match-stack-heart{animation-delay:1.2s} .match-stack-heart svg{width:13px;height:13px;fill:currentColor} @keyframes wrHeartbeat{ 0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,.4)} 10%{transform:scale(1.18);box-shadow:0 0 0 0 rgba(239,68,68,.4)} 20%{transform:scale(1)} 30%{transform:scale(1.12)} 40%{transform:scale(1);box-shadow:0 0 0 10px rgba(239,68,68,0)} 100%{box-shadow:0 0 0 0 rgba(239,68,68,0)} } /* ═══════════════════════════════════════════════════════════════════ SIGNUP FORM (entre feat 02 et 03) ═══════════════════════════════════════════════════════════════════ */ .signup-section{padding-top:0 !important} .signup-card{ position:relative; max-width:980px;margin:0 auto 64px; background:linear-gradient(135deg, #FFFFFF 0%, #FAF7FF 100%); border:1px solid var(--wr-line); border-radius:32px; padding:48px 40px; box-shadow:0 4px 12px rgba(30,27,46,.04), 0 24px 64px rgba(138,99,192,.1); overflow:hidden; } @media(max-width:768px){.signup-card{padding:32px 22px;border-radius:24px;margin:0 auto 48px}} /* Décor : 2 blobs violet pâle dans les coins */ .signup-card::before{ content:"";position:absolute; top:-120px;right:-120px;width:340px;height:340px; background:radial-gradient(circle,rgba(138,99,192,.12) 0%,transparent 65%); pointer-events:none;filter:blur(40px); } .signup-card::after{ content:"";position:absolute; bottom:-100px;left:-80px;width:280px;height:280px; background:radial-gradient(circle,rgba(138,99,192,.08) 0%,transparent 65%); pointer-events:none;filter:blur(40px); } .signup-inner{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1.2fr;gap:48px;align-items:center} @media(max-width:880px){.signup-inner{grid-template-columns:1fr;gap:28px}} .signup-text{display:flex;flex-direction:column;gap:14px} .signup-eyebrow{ display:inline-flex;align-items:center;gap:8px; padding:7px 14px;border-radius:100px; background:var(--wr-violet-soft);color:var(--wr-violet-dark); font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase; align-self:flex-start; } .signup-title{ font-weight:700;font-size:28px;line-height:1.15;letter-spacing:-0.02em; color:var(--wr-ink);margin:0; } @media(min-width:768px){.signup-title{font-size:34px}} .signup-lede{font-size:15px;line-height:1.55;color:var(--wr-ink-2);margin:0;opacity:.85} .signup-perks{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px} .signup-perk{ display:inline-flex;align-items:center;gap:6px; padding:6px 12px;border-radius:100px; background:var(--wr-card);border:1px solid var(--wr-line-2); font-size:12px;font-weight:600;color:var(--wr-ink-2); } .signup-perk svg{width:13px;height:13px;color:#10B981;stroke-width:3;flex-shrink:0} .signup-form{ background:var(--wr-card); border:1px solid var(--wr-line); border-radius:20px; padding:24px; display:flex;flex-direction:column;gap:12px; box-shadow:0 1px 2px rgba(30,27,46,.03); } .signup-form-error{ background:#FEF2F2;border:1px solid #FECACA; color:#991B1B; border-radius:12px; padding:10px 14px; font-size:13px;line-height:1.45; margin:0; } .signup-row{display:grid;grid-template-columns:1fr 1fr;gap:10px} @media(max-width:540px){.signup-row{grid-template-columns:1fr}} .signup-field{display:flex;flex-direction:column;gap:0} .signup-card .signup-form input[type="email"], .signup-card .signup-form input[type="password"], .signup-card .signup-form input[type="text"]{ width:100%; padding:13px 14px; border:1px solid var(--wr-line-2);border-radius:11px; background:#FAFBFD; font-size:14px;font-family:inherit;color:var(--wr-ink); outline:none; transition:border-color .15s,background .15s,box-shadow .15s; box-sizing:border-box; } .signup-card .signup-form input[type="email"]:focus, .signup-card .signup-form input[type="password"]:focus, .signup-card .signup-form input[type="text"]:focus{ border-color:var(--wr-violet);background:#fff; box-shadow:0 0 0 3px rgba(138,99,192,.12); } .signup-card .signup-form input::placeholder{color:var(--wr-muted-2)} .signup-terms{ display:flex;align-items:flex-start;gap:10px; font-size:12.5px;line-height:1.45;color:var(--wr-muted); margin:4px 0 0; } .signup-card .signup-form input[type="checkbox"]{ width:16px;height:16px;flex-shrink:0;margin-top:2px;accent-color:var(--wr-violet);cursor:pointer; } .signup-terms a{color:var(--wr-violet);font-weight:600;text-decoration:underline} .signup-terms a:hover{color:var(--wr-violet-dark)} .signup-recaptcha{margin:4px 0 0} .signup-recaptcha > div{max-width:100%} .signup-submit{ width:100%; padding:14px 22px;border-radius:12px; background:var(--wr-violet);color:#fff;border:0; font-size:14.5px;font-weight:700;font-family:inherit; cursor:pointer; display:inline-flex;align-items:center;justify-content:center;gap:8px; box-shadow:0 4px 14px rgba(138,99,192,.32); transition:background .15s,transform .15s,box-shadow .15s; margin-top:6px; } .signup-submit:hover{background:var(--wr-violet-dark);transform:translateY(-1px);box-shadow:0 6px 20px rgba(138,99,192,.4)} .signup-submit svg{width:14px;height:14px;transition:transform .15s} .signup-submit:hover svg{transform:translateX(3px)} .signup-login{ text-align:center;font-size:13px;color:var(--wr-muted);margin:6px 0 0; } .signup-login a{color:var(--wr-violet);font-weight:600;text-decoration:none} .signup-login a:hover{color:var(--wr-violet-dark);text-decoration:underline} /* ═══════════════════════════════════════════════════════════════════ PRICING — 4 tiers (Gratuit / Unique / Business / Business+) ═══════════════════════════════════════════════════════════════════ */ .pricing-grid{display:grid;gap:18px;max-width:980px;margin:0 auto} .pricing-grid--2{grid-template-columns:repeat(2,1fr)} .pricing-grid--mt{margin-top:24px} @media(max-width:768px){.pricing-grid--2{grid-template-columns:1fr;gap:14px}} .pricing-card{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:22px;padding:32px 26px; display:flex;flex-direction:column;gap:20px; box-shadow:var(--wr-shadow); transition:transform .2s,box-shadow .25s,border-color .2s; position:relative; } .pricing-card:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-soft)} .pricing-card--featured{ background:#F4ECE1; border-color:#E5D8C5; } .pricing-card--featured:hover{border-color:var(--wr-violet)} .pricing-badge{ position:absolute;top:24px;right:24px; background:var(--wr-violet);color:#fff !important; font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em; padding:6px 12px;border-radius:6px; box-shadow:0 4px 12px rgba(138,99,193,.32); } .pricing-head{display:flex;flex-direction:column;gap:6px} .pricing-name{font-weight:800;font-size:22px;letter-spacing:-0.01em;color:var(--wr-ink);margin:0} .pricing-desc{font-size:14px;line-height:1.5;color:var(--wr-muted);margin:0} .pricing-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap} .pricing-price-amount{font-size:38px;font-weight:800;color:var(--wr-ink);letter-spacing:-0.03em;line-height:1} .pricing-price-amount--quote{font-size:32px} .pricing-price-old{font-size:22px;font-weight:600;color:var(--wr-muted-2);text-decoration:line-through;align-self:baseline} .pricing-price-unit{font-size:13px;color:var(--wr-muted);font-weight:500;width:100%;line-height:1.5} .pricing-features{display:flex;flex-direction:column;gap:10px;list-style:none;padding:0;margin:0} .pricing-feature{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.45;color:var(--wr-ink-2)} .pricing-feature-check{ width:18px;height:18px;border-radius:50%;flex-shrink:0; background:var(--wr-violet);color:#fff; display:inline-flex;align-items:center;justify-content:center; margin-top:1px; } .pricing-feature-check svg{width:11px;height:11px;stroke-width:3;stroke:#fff} .pricing-plus{ font-size:18px;font-weight:700;color:var(--wr-muted-2); text-align:center;margin:4px 0;line-height:1;list-style:none; } .pricing-cta{ display:flex;align-items:center;justify-content:center;gap:8px; padding:13px 18px;border-radius:11px; background:var(--wr-violet);color:#fff !important; font-size:14px;font-weight:700; box-shadow:0 4px 12px rgba(138,99,193,.3); transition:background .15s,transform .15s,box-shadow .15s; text-decoration:none !important; } .pricing-cta:hover{background:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,193,.4)} .pricing-cta svg{width:14px;height:14px;transition:transform .15s;stroke:#fff} .pricing-cta:hover svg{transform:translateX(3px)} .pricing-note{font-size:12px;color:var(--wr-muted);text-align:center;margin:0} /* ═══════════════════════════════════════════════════════════════════ COMPARISON — 3 cards (Whileresume / LinkedIn / Indeed) ═══════════════════════════════════════════════════════════════════ */ .compare-cards{ display:grid;grid-template-columns:repeat(3,1fr);gap:18px; max-width:1100px;margin:0 auto; } @media(max-width:991px){.compare-cards{grid-template-columns:1fr;gap:14px}} .compare-card{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:18px; padding:8px; display:flex;flex-direction:column;gap:8px; box-shadow:var(--wr-shadow); transition:transform .2s,box-shadow .25s,border-color .2s; } .compare-card:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover)} .compare-card--featured{border:2px solid #10B981} .compare-card-head{ display:flex;align-items:center;gap:12px; background:var(--wr-violet-soft); padding:14px 18px;border-radius:12px; } .compare-card-logo{width:32px;height:32px;object-fit:contain;flex-shrink:0} .compare-card-title{ font-weight:700;font-size:18px;letter-spacing:-0.01em; color:var(--wr-ink);margin:0; } .compare-card-body{padding:8px 12px;display:flex;flex-direction:column} .compare-row{ padding:14px 0; border-bottom:1px solid var(--wr-line); } .compare-row:last-child{border-bottom:0} .compare-row-label{ font-size:14px;color:var(--wr-muted); margin:0 0 8px;line-height:1.4; } .compare-row-value{ display:inline-flex;align-items:center;gap:6px; font-size:15px;font-weight:600;margin:0; } .compare-row-value svg{width:18px;height:18px;flex-shrink:0} .compare-row-value--good{color:var(--wr-violet)} .compare-row-value--good svg{stroke:var(--wr-violet)} .compare-row-value--warn{color:#F59E0B} .compare-row-value--warn svg{stroke:#F59E0B} .compare-row-value--bad{color:#EF4444} .compare-row-value--bad svg{stroke:#EF4444} /* ═══════════════════════════════════════════════════════════════════ FAQ — Accordéons natifs (details/summary) ═══════════════════════════════════════════════════════════════════ */ .faq-list{display:flex;flex-direction:column;gap:10px;max-width:850px;margin:0 auto} .faq-item{ background:var(--wr-card);border:1px solid var(--wr-line); border-radius:14px; transition:border-color .2s,box-shadow .2s; } .faq-item[open]{border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)} .faq-q{ list-style:none;cursor:pointer; padding:18px 22px; display:flex;align-items:center;justify-content:space-between;gap:16px; font-weight:700;font-size:15.5px;letter-spacing:-0.005em;color:var(--wr-ink); transition:color .15s; } .faq-q::-webkit-details-marker{display:none} .faq-q:hover{color:var(--wr-violet)} .faq-chevron{width:18px;height:18px;flex-shrink:0;color:var(--wr-violet);transition:transform .25s} .faq-item[open] .faq-chevron{transform:rotate(180deg)} .faq-a{padding:0 22px 22px;color:var(--wr-ink-2);font-size:14.5px;line-height:1.6} .faq-a p{margin:0} /* ═══════════════════════════════════════════════════════════════════ ARTICLES — Liste sans miniatures (style identique aux jobs-card) ═══════════════════════════════════════════════════════════════════ */ .articles-list{display:flex;flex-direction:column;gap:10px;max-width:1200px;margin:0 auto} .wr-article{ background:var(--wr-card);border-radius:14px;padding:14px; box-shadow:0 0 16px 0 rgba(0,0,0,0.04); display:flex;align-items:center;gap:14px; text-decoration:none;color:inherit; transition:transform .15s,box-shadow .2s; } .wr-article:hover{ transform:translateY(-1px); box-shadow:0 4px 20px rgba(138,99,192,.1); color:inherit;text-decoration:none; } .wr-article-logo{ width:50px;height:50px;border-radius:12px;flex-shrink:0; background:linear-gradient(135deg,#EDE9FE,#DDD6FE); display:flex;align-items:center;justify-content:center; color:var(--wr-violet);overflow:hidden; } .wr-article-logo svg{width:24px;height:24px;opacity:.9} .wr-article-info{flex:1;min-width:0} .wr-article-title{ font-size:14px;font-weight:700;color:var(--wr-ink); line-height:1.3;margin:0 0 4px; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; } .wr-article-meta{ font-size:12px;color:var(--wr-muted); white-space:nowrap;overflow:hidden;text-overflow:ellipsis; display:flex;align-items:center;gap:8px;margin:0; } .wr-article-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:#D1D5DB;flex-shrink:0} .wr-article-badge{ font-size:11px;font-weight:600; color:var(--wr-violet);background:var(--wr-violet-soft); padding:3px 9px;border-radius:100px; white-space:nowrap;flex-shrink:0; text-transform:uppercase;letter-spacing:.04em; } .wr-article-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s} .wr-article:hover .wr-article-arrow{color:var(--wr-violet);transform:translateX(2px)} .wr-article-arrow svg{width:18px;height:18px} @media(max-width:540px){ .wr-article{padding:12px;gap:10px} .wr-article-logo{width:42px;height:42px} .wr-article-logo svg{width:20px;height:20px} .wr-article-title{font-size:13px} .wr-article-meta{font-size:11px;gap:6px;flex-wrap:wrap;white-space:normal} .wr-article-badge{display:none} } .articles-cta{text-align:center;margin-top:36px} .articles-cta a{ display:inline-flex;align-items:center;gap:8px; padding:12px 22px;border-radius:11px; background:var(--wr-violet);color:#fff; font-size:13px;font-weight:600; text-decoration:none; box-shadow:0 4px 12px rgba(138,99,192,.3); transition:background .15s,transform .15s,box-shadow .15s; } .articles-cta a:hover{background:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,192,.4);text-decoration:none;color:#fff} .articles-cta svg{width:12px;height:12px;transition:transform .15s} .articles-cta a:hover svg{transform:translateX(3px)} /* ═══════════════════════════════════════════════════════════════════ CTA FINAL — Card violet plein avec eyebrow + 2 sous-cards ═══════════════════════════════════════════════════════════════════ */ .final-card{ position:relative; background:linear-gradient(135deg,#8A63C0 0%,#9D7BCC 100%); border-radius:28px; padding:48px 40px; color:#fff;overflow:hidden; box-shadow:0 20px 60px -12px rgba(138,99,192,.4); } .final-card--center{text-align:center} .final-card--center .final-eyebrow{margin-left:auto;margin-right:auto} .final-title--center{margin-left:auto;margin-right:auto;text-align:center} .final-lede{font-size:16px;line-height:1.55;color:rgba(255,255,255,.92);margin:0 auto 28px;max-width:600px} @media(min-width:768px){.final-lede{font-size:18px}} .final-cta-btn{ display:inline-flex;align-items:center;gap:10px; padding:14px 28px;border-radius:12px; background:#fff;color:var(--wr-violet-dark) !important; font-size:14.5px;font-weight:800;text-decoration:none !important; box-shadow:0 6px 20px rgba(0,0,0,.18); transition:transform .15s,box-shadow .15s; } .final-cta-btn:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.22);color:var(--wr-violet-dark) !important} .final-cta-btn svg{width:14px;height:14px;transition:transform .15s;stroke:var(--wr-violet-dark)} .final-cta-btn:hover svg{transform:translateX(4px)} @media(max-width:768px){.final-card{padding:32px 22px;border-radius:22px}} .final-eyebrow{ display:inline-flex;align-items:center;gap:8px; padding:8px 18px;border-radius:100px; background:rgba(255,255,255,.2); color:#fff; font-size:12px;font-weight:700; text-transform:uppercase;letter-spacing:.12em; margin-bottom:20px; backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px); } .final-eyebrow svg{width:13px;height:13px;fill:currentColor} .final-title{ font-weight:800;font-size:28px;line-height:1.15;letter-spacing:-0.02em; color:#fff;margin:0 0 36px; max-width:780px; } @media(min-width:768px){.final-title{font-size:38px}} /* Grille 2 sous-cards */ .final-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px} @media(max-width:768px){.final-grid{grid-template-columns:1fr;gap:14px}} .final-sub{ background:#fff; border-radius:18px; padding:28px; display:flex;flex-direction:column; } @media(max-width:768px){.final-sub{padding:22px}} .final-sub-head{display:flex;align-items:center;gap:14px;margin-bottom:18px} .final-sub-icon{ width:44px;height:44px;border-radius:11px; background:var(--wr-violet-soft);color:var(--wr-violet); display:flex;align-items:center;justify-content:center;flex-shrink:0; } .final-sub-icon svg{width:22px;height:22px} .final-sub-label{ font-size:12.5px;font-weight:700; color:var(--wr-violet); text-transform:uppercase;letter-spacing:.1em; } .final-sub-title{ font-weight:800;font-size:18px;line-height:1.3;letter-spacing:-0.01em; color:var(--wr-ink);margin:0 0 10px; } .final-sub-desc{ font-size:14px;line-height:1.55;color:var(--wr-muted); margin:0 0 24px;flex:1; } .final-sub-btn{ display:flex;align-items:center;justify-content:center;gap:8px; background:var(--wr-violet);color:#fff; padding:14px 18px;border-radius:11px; font-size:14px;font-weight:700; text-decoration:none; transition:background .15s,transform .15s,box-shadow .15s; box-shadow:0 4px 12px rgba(138,99,192,.3); } .final-sub-btn:hover{ background:var(--wr-violet-dark);color:#fff; transform:translateY(-2px); box-shadow:0 6px 18px rgba(138,99,192,.4); text-decoration:none; } .final-sub-btn svg{width:14px;height:14px;transition:transform .15s} .final-sub-btn:hover svg{transform:translateX(3px)} </style>{% endblock css %}{% block body %} <div class="wr"> {# ═══════════════ HERO ═══════════════ #} <section class="hero"> <div class="hero-inner"> <span class="hero-badge"> <span class="hero-badge-dot"></span> {{ t.hero_eyebrow }} </span> {# H1 sur 2 lignes : Ligne 1 : "Publiez vos offres, attirez les bons talents," Ligne 2 : "échangez directement" Avec les 3 verbes en violet. #} <h1 class="hero-title"> <span class="hero-title-accent">{{ t.hero_title_a1 }}</span> {{ t.hero_title_p1 }} <span class="hero-title-accent">{{ t.hero_title_a2 }}</span> {{ t.hero_title_p2 }}<br> <span class="hero-title-accent">{{ t.hero_title_a3 }}</span> {{ t.hero_title_p3 }} </h1> <p class="hero-lede">{{ t.hero_lede }}</p> </div> </section> {% if app.user is null %} {# ═══════════════ INSCRIPTION (juste après le hero) ═══════════════ #} <section class="wr-section signup-section"> <div class="wr-container"> <div class="signup-card reveal reveal--scale" id="wr-signup"> <div class="signup-inner"> <div class="signup-text"> <span class="signup-eyebrow"> <svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="8" x2="20" y2="14"/><line x1="23" y1="11" x2="17" y2="11"/></svg> {{ t.signup_eyebrow }} </span> <h3 class="signup-title">{{ t.signup_title }}</h3> <p class="signup-lede">{{ t.signup_lede }}</p> <div class="signup-perks"> <span class="signup-perk"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.signup_perk1 }} </span> <span class="signup-perk"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.signup_perk2 }} </span> <span class="signup-perk"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.signup_perk3 }} </span> </div> </div> {% if form is defined %} {# Form Symfony complet rendu via les widgets #} {{ form_start(form, {'attr': {'class': 'signup-form', 'novalidate': 'novalidate'}}) }} {{ form_errors(form) }} {% for message in app.flashes('danger') %} <p class="signup-form-error">{{ message }}</p> {% endfor %} {# Prénom + nom #} <div class="signup-row"> {% if form.name is defined %} <div class="signup-field"> {{ form_widget(form.name, {'attr': {'placeholder': t.signup_name_ph}}) }} </div> {% endif %} {% if form.lastname is defined %} <div class="signup-field"> {{ form_widget(form.lastname, {'attr': {'placeholder': t.signup_lastname_ph}}) }} </div> {% endif %} </div> {# Email pro #} <div class="signup-field"> {{ form_widget(form.email, {'attr': {'placeholder': t.signup_email_ph}}) }} </div> {# Mot de passe + confirmation #} <div class="signup-row"> <div class="signup-field"> {{ form_widget(form.password.first, {'attr': {'placeholder': t.signup_pass_ph}}) }} </div> <div class="signup-field"> {{ form_widget(form.password.second, {'attr': {'placeholder': t.signup_pass2_ph}}) }} </div> </div> <label class="signup-terms"> {{ form_widget(form.acceptTerm) }} <span> {{ t.signup_terms_pre }} <a href="{% if isFR %}/fr/protections-donnees-recruteurs{% else %}/data-protection-recruiters{% endif %}" target="_blank" rel="noopener">{{ t.signup_terms_link }}</a> {{ t.signup_terms_and }} <a href="{% if isFR %}/fr/conditions-generales-vente{% else %}/general-terms{% endif %}" target="_blank" rel="noopener">{{ t.signup_terms_link2 }}</a>. </span> </label> {% if form.recaptcha is defined %} <div class="signup-recaptcha">{{ form_widget(form.recaptcha) }}</div> {% endif %} <button type="submit" class="signup-submit"> {{ t.signup_btn }} <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> <p class="signup-login"> {{ t.signup_login_pre }} <a href="{% if isFR %}{{ path('locale_app_login',{'_locale':'fr'}) }}{% else %}{{ path('app_login') }}{% endif %}">{{ t.signup_login_link }}</a> </p> {{ form_rest(form) }} {{ form_end(form) }} {% endif %} </div> </div> </div> </section> {% endif %} {# ═══════════════ COMMENT ÇA MARCHE ═══════════════ #} <section class="wr-section"> <div class="wr-container"> <div class="wr-section-head"> <h2 class="wr-title">{{ t.how_title }}</h2> </div> <div class="how-card"> <div class="how-step reveal" data-reveal-delay="1"> <div class="how-step-illu"> <img src="/uploads/rh/mascotte_register.png" alt="{{ t.how1_title }}" loading="lazy"> </div> <h3 class="how-step-title">{{ t.how1_title }}</h3> <p class="how-step-desc">{{ t.how1_desc }}</p> </div> <div class="how-step reveal" data-reveal-delay="2"> <div class="how-step-illu"> <img src="/uploads/rh/mascotte_upload2.png" alt="{{ t.how2_title }}" loading="lazy"> </div> <h3 class="how-step-title">{{ t.how2_title }}</h3> <p class="how-step-desc">{{ t.how2_desc }}</p> </div> <div class="how-step reveal" data-reveal-delay="3"> <div class="how-step-illu"> <img src="/uploads/rh/mascotte_reunion.png" alt="{{ t.how3_title }}" loading="lazy"> </div> <h3 class="how-step-title">{{ t.how3_title }}</h3> <p class="how-step-desc">{{ t.how3_desc }}</p> </div> </div> </div> </section> {# ═══════════════ FEATURES 01-04 ═══════════════ #} <section class="wr-section"> <div class="wr-container"> {# Feature 01 — Filtrage par critères #} <div class="feat-block reveal"> <div class="feat-illu"> <img src="/uploads/rh/mascotte_filtrage3.png" alt="{{ t.feat1_title }}" loading="lazy"> </div> <div class="feat-content"> <span class="feat-label">{{ t.feat1_label }}</span> <h3 class="feat-title">{{ t.feat1_title }}</h3> <div class="feat-desc"> <p>{{ t.feat1_p1|raw }}</p> <p>{{ t.feat1_p2|raw }}</p> </div> <div class="feat-quote"> <p class="feat-quote-text">{{ t.feat1_quote }}</p> <div class="feat-quote-author"> <p class="feat-quote-name">{{ t.feat1_author }}</p> <p class="feat-quote-role">{{ t.feat1_role }}</p> </div> </div> </div> </div> {# Feature 02 — Optimisation intelligente #} <div class="feat-block reveal"> <div class="feat-illu"> <img src="/uploads/rh/mascotte_upload.png" alt="{{ t.feat2_title }}" loading="lazy"> </div> <div class="feat-content"> <span class="feat-label">{{ t.feat2_label }}</span> <h3 class="feat-title">{{ t.feat2_title }}</h3> <div class="feat-desc"> <p>{{ t.feat2_p1|raw }}</p> <p>{{ t.feat2_p2|raw }}</p> </div> <div class="feat-quote"> <p class="feat-quote-text">{{ t.feat2_quote }}</p> <div class="feat-quote-author"> <p class="feat-quote-name">{{ t.feat2_author }}</p> <p class="feat-quote-role">{{ t.feat2_role }}</p> </div> </div> </div> </div> {# Feature 03 — Recherche qualifiée #} <div class="feat-block reveal"> <div class="feat-illu"> <img src="/uploads/rh/mascotte_register.png" alt="{{ t.feat3_title }}" loading="lazy"> </div> <div class="feat-content"> <span class="feat-label">{{ t.feat3_label }}</span> <h3 class="feat-title">{{ t.feat3_title }}</h3> <div class="feat-desc"> <p>{{ t.feat3_p1|raw }}</p> <p>{{ t.feat3_p2|raw }}</p> </div> <div class="feat-quote"> <p class="feat-quote-text">{{ t.feat3_quote }}</p> <div class="feat-quote-author"> <p class="feat-quote-name">{{ t.feat3_author }}</p> <p class="feat-quote-role">{{ t.feat3_role }}</p> </div> </div> </div> </div> {# Feature 04 — Contact direct qualifié #} <div class="feat-block reveal"> <div class="feat-illu"> <img src="/uploads/rh/mascotte_reunion.png" alt="{{ t.feat4_title }}" loading="lazy"> </div> <div class="feat-content"> <span class="feat-label">{{ t.feat4_label }}</span> <h3 class="feat-title">{{ t.feat4_title }}</h3> <div class="feat-desc"> <p>{{ t.feat4_p1|raw }}</p> <p>{{ t.feat4_p2|raw }}</p> </div> <div class="feat-quote"> <p class="feat-quote-text">{{ t.feat4_quote }}</p> <div class="feat-quote-author"> <p class="feat-quote-name">{{ t.feat4_author }}</p> <p class="feat-quote-role">{{ t.feat4_role }}</p> </div> </div> </div> </div> </div> </section> {% if app.user is null %} {# ═══════════════ PRICING ═══════════════ #} <section class="wr-section" id="pricing"> <div class="wr-container"> <div class="wr-section-head"> <h2 class="wr-title">{{ t.pricing_title }}</h2> <p class="wr-lede">{{ t.pricing_lede }}</p> </div> {# Première rangée : Gratuit + Unique #} <div class="pricing-grid pricing-grid--2"> {# Tier 1 - Gratuit #} <div class="pricing-card reveal" data-reveal-delay="1"> <div class="pricing-head"> <h3 class="pricing-name">{{ t.pricing1_name }}</h3> <p class="pricing-desc">{{ t.pricing1_desc }}</p> </div> <div class="pricing-price"> <span class="pricing-price-amount">{{ t.pricing1_price }}</span> <span class="pricing-price-unit">{{ t.pricing1_unit }}</span> </div> <ul class="pricing-features"> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing1_b1 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing1_b2 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing1_b3 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing1_b4 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing1_b5 }}</li> </ul> <a href="#wr-signup" class="pricing-cta"> {{ t.pricing1_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> <p class="pricing-note">{{ t.pricing1_note }}</p> </div> {# Tier 2 - Unique #} <div class="pricing-card reveal" data-reveal-delay="2"> <div class="pricing-head"> <h3 class="pricing-name">{{ t.pricing2_name }}</h3> <p class="pricing-desc">{{ t.pricing2_desc }}</p> </div> <div class="pricing-price"> <span class="pricing-price-amount">{{ t.pricing2_price }}</span> <span class="pricing-price-unit">{{ t.pricing2_unit }}</span> </div> <ul class="pricing-features"> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing2_b1 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing2_b2 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing2_b3 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing2_b4 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing2_b5 }}</li> </ul> <a href="#wr-signup" class="pricing-cta"> {{ t.pricing2_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> <p class="pricing-note">{{ t.pricing2_note }}</p> </div> </div> {# Deuxième rangée : Business (populaire) + Business+ #} <div class="pricing-grid pricing-grid--2 pricing-grid--mt"> {# Tier 3 - Business (featured) #} <div class="pricing-card pricing-card--featured reveal" data-reveal-delay="1"> <span class="pricing-badge">{{ isFR ? 'Populaire' : 'Popular' }}</span> <div class="pricing-head"> <h3 class="pricing-name">{{ t.pricing3_name }}</h3> <p class="pricing-desc">{{ t.pricing3_desc }}</p> </div> <div class="pricing-price"> <span class="pricing-price-amount">{{ t.pricing3_price }}</span> {% if t.pricing3_price_old %}<span class="pricing-price-old">{{ t.pricing3_price_old }}</span>{% endif %} <span class="pricing-price-unit">{{ t.pricing3_unit }}</span> </div> <a href="#wr-signup" class="pricing-cta"> {{ t.pricing3_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> <p class="pricing-note">{{ t.pricing3_note }}</p> <ul class="pricing-features"> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b1 }}</li> <li class="pricing-plus">{{ t.pricing_plus }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b2 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b3 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b4 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b5 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b6 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing3_b7 }}</li> </ul> </div> {# Tier 4 - Business+ (Sur devis) #} <div class="pricing-card reveal" data-reveal-delay="2"> <div class="pricing-head"> <h3 class="pricing-name">{{ t.pricing4_name }}</h3> <p class="pricing-desc">{{ t.pricing4_desc }}</p> </div> <div class="pricing-price"> <span class="pricing-price-amount pricing-price-amount--quote">{{ t.pricing4_price }}</span> </div> <a href="mailto:contact@whileresume.com?subject={{ t.pricing4_cta|url_encode }}" class="pricing-cta"> {{ t.pricing4_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> <p class="pricing-note">{{ t.pricing4_note }}</p> <ul class="pricing-features"> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b1 }}</li> <li class="pricing-plus">{{ t.pricing_plus }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b2 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b3 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b4 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b5 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b6 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b7 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b8 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b9 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b10 }}</li> <li class="pricing-feature"><span class="pricing-feature-check"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg></span>{{ t.pricing4_b11 }}</li> </ul> </div> </div> </div> </section> {% endif %} {# ═══════════════ COMPARISON ═══════════════ #} <section class="wr-section"> <div class="wr-container"> <div class="wr-section-head"> <h2 class="wr-title">{{ t.compare_title }}</h2> </div> <div class="compare-cards"> {# Card 1 - Whileresume #} <div class="compare-card compare-card--featured reveal" data-reveal-delay="1"> <div class="compare-card-head"> <img class="compare-card-logo" src="https://whileresume.com/uploads/favicon.png" alt="Whileresume"> <h3 class="compare-card-title">{{ t.compare_us_rank }} {{ t.compare_us_name }}</h3> </div> <div class="compare-card-body"> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row1_label }}</p> <p class="compare-row-value compare-row-value--good"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row1_us }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row2_label }}</p> <p class="compare-row-value compare-row-value--good"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row2_us }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row3_label }}</p> <p class="compare-row-value compare-row-value--good"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row3_us }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row4_label }}</p> <p class="compare-row-value compare-row-value--good"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row4_us }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row5_label }}</p> <p class="compare-row-value compare-row-value--good"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row5_us }} </p> </div> </div> </div> {# Card 2 - LinkedIn #} <div class="compare-card reveal" data-reveal-delay="2"> <div class="compare-card-head"> <img class="compare-card-logo" src="/images/linkedin.png" alt="LinkedIn"> <h3 class="compare-card-title">{{ t.compare_linkedin_rank }} {{ t.compare_linkedin_name }}</h3> </div> <div class="compare-card-body"> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row1_label }}</p> <p class="compare-row-value compare-row-value--warn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row1_linkedin }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row2_label }}</p> <p class="compare-row-value compare-row-value--bad"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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> {{ t.compare_row2_linkedin }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row3_label }}</p> <p class="compare-row-value compare-row-value--warn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row3_linkedin }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row4_label }}</p> <p class="compare-row-value compare-row-value--warn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row4_linkedin }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row5_label }}</p> <p class="compare-row-value compare-row-value--good"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row5_linkedin }} </p> </div> </div> </div> {# Card 3 - Indeed #} <div class="compare-card reveal" data-reveal-delay="3"> <div class="compare-card-head"> <img class="compare-card-logo" src="/images/indeed.png" alt="Indeed"> <h3 class="compare-card-title">{{ t.compare_indeed_rank }} {{ t.compare_indeed_name }}</h3> </div> <div class="compare-card-body"> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row1_label }}</p> <p class="compare-row-value compare-row-value--warn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row1_indeed }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row2_label }}</p> <p class="compare-row-value compare-row-value--bad"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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> {{ t.compare_row2_indeed }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row3_label }}</p> <p class="compare-row-value compare-row-value--warn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row3_indeed }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row4_label }}</p> <p class="compare-row-value compare-row-value--warn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg> {{ t.compare_row4_indeed }} </p> </div> <div class="compare-row"> <p class="compare-row-label">{{ t.compare_row5_label }}</p> <p class="compare-row-value compare-row-value--bad"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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> {{ t.compare_row5_indeed }} </p> </div> </div> </div> </div> </div> </section> {# ═══════════════ ARTICLES ═══════════════ #} {% if articles is defined and articles|length > 0 %} <section class="wr-section"> <div class="wr-container"> <div class="wr-section-head"> <h2 class="wr-title wr-title--sm">{{ t.articles_title }}</h2> </div> <div class="articles-list"> {% for a in articles|slice(0,6) %} {% set prefix = "" %} {% set urlA = path('cvs_website_article',{'slug': a.slug}) %} {% if app.request.locale != default_locale %} {% set urlA = path('locale_cvs_website_article',{'_locale':app.request.locale,'slug': a.slug}) %} {% set prefix = "/" ~ app.request.locale %} {% endif %} {% if a.pageslug3 is not empty %} {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 ~ '/' ~ a.pageslug3 %} {% elseif a.pageslug2 is not empty %} {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 %} {% elseif a.pageslug is not empty %} {% set urlA = prefix ~ '/' ~ a.pageslug %} {% endif %} <a href="{{ urlA }}" class="wr-article"> <div class="wr-article-logo"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/> <path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/> </svg> </div> <div class="wr-article-info"> <h3 class="wr-article-title">{{ a.title }}</h3> <div class="wr-article-meta"> {% if a.subtitle is not empty %} <span>{{ a.subtitle|length > 60 ? a.subtitle|slice(0,60) ~ '…' : a.subtitle }}</span> {% endif %} </div> </div> <span class="wr-article-badge">{{ t.read_article }}</span> <span class="wr-article-arrow"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <polyline points="9 18 15 12 9 6"/> </svg> </span> </a> {% endfor %} </div> <div class="articles-cta"> <a href="{% if isFR %}{{ path('locale_cvs_website_articles',{'_locale':'fr'}) }}{% else %}{{ path('cvs_website_articles') }}{% endif %}"> {{ t.articles_view_all }} <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> </a> </div> </div> </section> {% endif %} {# ═══════════════ FAQ ═══════════════ #} <section class="wr-section" id="faq"> <div class="wr-container"> <div class="wr-section-head"> <h2 class="wr-title">{{ t.faq_title }}</h2> <p class="wr-lede">{{ t.faq_lede }}</p> </div> <div class="faq-list"> <details class="faq-item reveal" data-reveal-delay="1"> <summary class="faq-q"> <span>{{ t.faq_q1 }}</span> <svg class="faq-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg> </summary> <div class="faq-a"><p>{{ t.faq_a1 }}</p></div> </details> <details class="faq-item reveal" data-reveal-delay="2"> <summary class="faq-q"> <span>{{ t.faq_q2 }}</span> <svg class="faq-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg> </summary> <div class="faq-a"><p>{{ t.faq_a2 }}</p></div> </details> <details class="faq-item reveal" data-reveal-delay="3"> <summary class="faq-q"> <span>{{ t.faq_q3 }}</span> <svg class="faq-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg> </summary> <div class="faq-a"><p>{{ t.faq_a3 }}</p></div> </details> </div> </div> </section> </div>{% endblock body %}{% block footer_js %} {{ parent() }} <script> /* ═══ Reveal au scroll (Intersection Observer) ═══ */ (function(){ var els = document.querySelectorAll('.reveal'); if (!els.length) return; if (!('IntersectionObserver' in window)){ // Fallback : tout révéler els.forEach(function(el){ el.classList.add('is-revealed'); }); return; } var io = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ if (entry.isIntersecting){ entry.target.classList.add('is-revealed'); io.unobserve(entry.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' }); els.forEach(function(el){ io.observe(el); }); })(); </script>{% endblock footer_js %}