templates/application/whileresume/website/business/homepage.html.twig line 1

Open in your IDE?
  1. {% extends 'application/whileresume/website/layout-social.html.twig' %}
  2. {% set isFR = app.request.locale == 'fr' %}
  3. {% set _keys = [
  4.     'hero_eyebrow',
  5.     'hero_title_a1','hero_title_p1','hero_title_a2','hero_title_p2','hero_title_a3','hero_title_p3',
  6.     'hero_lede',
  7.     'how_title',
  8.     'how1_title','how1_desc','how2_title','how2_desc','how3_title','how3_desc',
  9.     'feat1_label','feat1_title','feat1_p1','feat1_p2','feat1_quote','feat1_author','feat1_role',
  10.     'feat2_label','feat2_title','feat2_p1','feat2_p2','feat2_quote','feat2_author','feat2_role',
  11.     'feat3_label','feat3_title','feat3_p1','feat3_p2','feat3_quote','feat3_author','feat3_role',
  12.     'feat4_label','feat4_title','feat4_p1','feat4_p2','feat4_quote','feat4_author','feat4_role',
  13.     'signup_eyebrow','signup_title','signup_lede',
  14.     'signup_name_ph','signup_lastname_ph','signup_email_ph','signup_pass_ph','signup_pass2_ph',
  15.     'signup_terms_pre','signup_terms_link','signup_terms_and','signup_terms_link2','signup_btn','signup_login_pre','signup_login_link',
  16.     'signup_perk1','signup_perk2','signup_perk3',
  17.     'pricing_title','pricing_lede','pricing_plus',
  18.     'pricing1_name','pricing1_desc','pricing1_price','pricing1_unit','pricing1_cta','pricing1_note',
  19.     'pricing1_b1','pricing1_b2','pricing1_b3','pricing1_b4','pricing1_b5',
  20.     'pricing2_name','pricing2_desc','pricing2_price','pricing2_unit','pricing2_cta','pricing2_note',
  21.     'pricing2_b1','pricing2_b2','pricing2_b3','pricing2_b4','pricing2_b5',
  22.     'pricing3_name','pricing3_desc','pricing3_price','pricing3_price_old','pricing3_unit','pricing3_cta','pricing3_note',
  23.     'pricing3_b1','pricing3_b2','pricing3_b3','pricing3_b4','pricing3_b5','pricing3_b6','pricing3_b7',
  24.     'pricing4_name','pricing4_desc','pricing4_price','pricing4_unit','pricing4_cta','pricing4_note',
  25.     'pricing4_b1','pricing4_b2','pricing4_b3','pricing4_b4','pricing4_b5','pricing4_b6','pricing4_b7','pricing4_b8','pricing4_b9','pricing4_b10','pricing4_b11',
  26.     'compare_title',
  27.     'compare_us_rank','compare_linkedin_rank','compare_indeed_rank',
  28.     'compare_us_name','compare_linkedin_name','compare_indeed_name',
  29.     'compare_row1_label','compare_row1_us','compare_row1_linkedin','compare_row1_indeed',
  30.     'compare_row2_label','compare_row2_us','compare_row2_linkedin','compare_row2_indeed',
  31.     'compare_row3_label','compare_row3_us','compare_row3_linkedin','compare_row3_indeed',
  32.     'compare_row4_label','compare_row4_us','compare_row4_linkedin','compare_row4_indeed',
  33.     'compare_row5_label','compare_row5_us','compare_row5_linkedin','compare_row5_indeed',
  34.     'articles_title','articles_view_all','read_article',
  35.     'faq_title','faq_lede','faq_q1','faq_a1','faq_q2','faq_a2','faq_q3','faq_a3'
  36. ] %}
  37. {% set t = {} %}
  38. {% for k in _keys %}
  39.     {% set t = t|merge({(k): ('homepage_business.' ~ k)|trans({}, 'whr-public')}) %}
  40. {% endfor %}
  41. {% block title %}{{ page.shortTitle }}{% endblock %}
  42. {% block description %}{{ page.shortDescription }}{% endblock %}
  43. {% block robots %}{{ page.robots }}{% endblock %}
  44. {% block canonical %}
  45.     {# Override : on n'inclut pas canonical_classic car les routes business
  46.        ne suivent pas la convention "locale_<route>" attendue.
  47.        On gère manuellement canonical + hreflang ici. #}
  48.     {% set _urlFr = url('whileresume_business_fr') %}
  49.     {% set _urlEn = url('whileresume_business_en') %}
  50.     <link rel="canonical" href="{{ isFR ? _urlFr : _urlEn }}" />
  51.     <link rel="alternate" hreflang="fr" href="{{ _urlFr }}" />
  52.     <link rel="alternate" hreflang="en" href="{{ _urlEn }}" />
  53.     <link rel="alternate" hreflang="x-default" href="{{ _urlEn }}" />
  54. {% endblock %}
  55. {% block css %}
  56.     {{ parent() }}
  57.     <style>
  58.         /* ═══════════════════════════════════════════════════════════════════
  59.            VARIABLES
  60.         ═══════════════════════════════════════════════════════════════════ */
  61.         :root{
  62.             --wr-bg:#FBFCFE;
  63.             --wr-bg-2:#F4F6FB;
  64.             --wr-card:#FFFFFF;
  65.             --wr-violet:#8A63C1;
  66.             --wr-violet-2:#A98AD3;
  67.             --wr-violet-soft:#F2EDFA;
  68.             --wr-violet-softer:#F8F4FD;
  69.             --wr-violet-dark:#6B47A6;
  70.             --wr-ink:#1E1B2E;
  71.             --wr-ink-2:#374151;
  72.             --wr-muted:#6B7280;
  73.             --wr-muted-2:#9CA3AF;
  74.             --wr-line:#EEF1F7;
  75.             --wr-line-2:#E5E9F0;
  76.             --wr-shadow:0 1px 2px rgba(30,27,46,.04),0 4px 16px rgba(30,27,46,.04);
  77.             --wr-shadow-hover:0 4px 8px rgba(138,99,192,.08),0 12px 32px rgba(138,99,192,.1);
  78.             /* Accents colorés pour les logos d'offres (lettres) */
  79.             --wr-acc-yellow:#FEF3C7;  --wr-acc-yellow-fg:#B45309;
  80.             --wr-acc-green:#D1FAE5;   --wr-acc-green-fg:#047857;
  81.             --wr-acc-pink:#FCE7F3;    --wr-acc-pink-fg:#BE185D;
  82.             --wr-acc-blue:#DBEAFE;    --wr-acc-blue-fg:#1E40AF;
  83.             --wr-acc-orange:#FED7AA;  --wr-acc-orange-fg:#C2410C;
  84.             --wr-acc-violet:#EDE9FE;  --wr-acc-violet-fg:#6D28D9;
  85.             --wr-acc-cyan:#CFFAFE;    --wr-acc-cyan-fg:#0E7490;
  86.         }
  87.         /* ═══════════════════════════════════════════════════════════════════
  88.            PLEINE LARGEUR — On retire la réservation d'espace de la sidebar droite
  89.            ═══════════════════════════════════════════════════════════════════ */
  90.         body .main-content.right-chat-active{padding-right:0!important}
  91.         body .main-content{padding-right:0!important}
  92.         body .right-chat{display:none!important}
  93.         body .middle-sidebar-bottom .middle-sidebar-left{padding-right:0!important;max-width:none!important;width:100%!important}
  94.         body .middle-sidebar-bottom{max-width:none!important}
  95.         .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}
  96.         @media(max-width:991px){.wr{margin:0 -15px}}
  97.         .wr *{box-sizing:border-box}
  98.         .wr a{color:inherit;text-decoration:none}
  99.         /* ═══════════════════════════════════════════════════════════════════
  100.            SECTIONS GENERIC — Fond UNIFIÉ partout (pas d'alternance)
  101.            ═══════════════════════════════════════════════════════════════════ */
  102.         .wr-section{padding:80px 32px;background:var(--wr-bg);position:relative}
  103.         .wr-section--tight{padding:48px 32px}
  104.         @media(max-width:768px){.wr-section{padding:56px 20px}.wr-section--tight{padding:36px 20px}}
  105.         /* Filet décoratif au lieu d'un changement de couleur */
  106.         .wr-section + .wr-section::before{
  107.             content:"";
  108.             position:absolute;top:0;left:50%;transform:translateX(-50%);
  109.             width:80px;height:1px;
  110.             background:linear-gradient(90deg,transparent,var(--wr-line-2),transparent);
  111.         }
  112.         .wr-container{max-width:1200px;margin:0 auto;position:relative}
  113.         /* ═══ Eyebrow ═══ */
  114.         .wr-eyebrow{
  115.             display:inline-flex;align-items:center;gap:8px;
  116.             padding:6px 14px;border-radius:100px;
  117.             background:var(--wr-violet-soft);
  118.             color:var(--wr-violet-dark);
  119.             font-size:11.5px;font-weight:600;
  120.             text-transform:uppercase;letter-spacing:.12em;
  121.             margin-bottom:22px;
  122.         }
  123.         .wr-eyebrow-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse 2.4s ease-in-out infinite}
  124.         @keyframes wrPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}
  125.         /* ═══ Titres ═══ */
  126.         .wr-title{
  127.             font-family:inherit;
  128.             font-weight:700;
  129.             font-size:28px;line-height:1.15;letter-spacing:-0.025em;
  130.             color:var(--wr-ink);
  131.             margin:0 auto 16px;
  132.             max-width:1200px;
  133.         }
  134.         @media(min-width:768px){.wr-title{font-size:34px}}
  135.         @media(min-width:1024px){.wr-title{font-size:40px}}
  136.         .wr-title--sm{font-size:24px}
  137.         @media(min-width:768px){.wr-title--sm{font-size:30px}}
  138.         .wr-title em{font-style:normal;font-weight:700;color:var(--wr-violet)}
  139.         .wr-lede{
  140.             font-size:17px;line-height:1.55;font-weight:400;
  141.             color:var(--wr-ink-2);
  142.             margin:0 auto;max-width:680px;
  143.         }
  144.         .wr-section-head{text-align:center;margin-bottom:56px}
  145.         /* ═══════════════════════════════════════════════════════════════════
  146.            HERO — Style soft, recherche dashboard, boutons pleins
  147.            ═══════════════════════════════════════════════════════════════════ */
  148.         @keyframes wrFadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
  149.         @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)}}
  150.         /* ═══ Reveal au scroll (Intersection Observer ajoute .is-revealed) ═══ */
  151.         .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
  152.         .reveal.is-revealed{opacity:1;transform:translateY(0)}
  153.         .reveal--left{transform:translateX(-32px) translateY(0)}
  154.         .reveal--left.is-revealed{transform:translateX(0)}
  155.         .reveal--right{transform:translateX(32px) translateY(0)}
  156.         .reveal--right.is-revealed{transform:translateX(0)}
  157.         .reveal--scale{transform:scale(.96);opacity:0}
  158.         .reveal--scale.is-revealed{transform:scale(1);opacity:1}
  159.         .reveal[data-reveal-delay="1"]{transition-delay:.08s}
  160.         .reveal[data-reveal-delay="2"]{transition-delay:.16s}
  161.         .reveal[data-reveal-delay="3"]{transition-delay:.24s}
  162.         .reveal[data-reveal-delay="4"]{transition-delay:.32s}
  163.         @media(prefers-reduced-motion:reduce){.reveal{opacity:1!important;transform:none!important;transition:none!important}}
  164.         .hero{
  165.             position:relative;
  166.             background:var(--wr-bg);
  167.             padding:24px 32px 0;
  168.             overflow:hidden;
  169.         }
  170.         @media(max-width:768px){.hero{padding:18px 18px 0}}
  171.         /* Décor : 2 blobs très flous violet pâle */
  172.         .hero::before{
  173.             content:"";position:absolute;
  174.             top:-260px;right:-180px;width:560px;height:560px;
  175.             background:radial-gradient(circle,rgba(138,99,192,.14) 0%,transparent 65%);
  176.             pointer-events:none;filter:blur(50px);
  177.         }
  178.         .hero::after{
  179.             content:"";position:absolute;
  180.             top:120px;left:-180px;width:480px;height:480px;
  181.             background:radial-gradient(circle,rgba(138,99,192,.09) 0%,transparent 65%);
  182.             pointer-events:none;filter:blur(50px);
  183.         }
  184.         .hero-inner{position:relative;z-index:2;max-width:1200px;margin:0 auto;text-align:center}
  185.         /* ═══ Eyebrow ═══ */
  186.         .hero-badge{
  187.             display:inline-flex;align-items:center;gap:8px;
  188.             padding:7px 16px;border-radius:100px;
  189.             background:var(--wr-violet-soft);
  190.             color:var(--wr-violet-dark);
  191.             font-size:12px;font-weight:600;
  192.             text-transform:uppercase;letter-spacing:.1em;
  193.             margin-bottom:10px;
  194.             opacity:0;transform:translateY(8px);
  195.             animation:wrFadeUp .8s ease forwards;
  196.         }
  197.         .hero-badge-dot{width:6px;height:6px;border-radius:50%;background:var(--wr-violet);animation:wrPulse2 2s ease infinite}
  198.         /* ═══ Titre — 57px desktop, plein largeur conteneur ═══ */
  199.         .hero-title{
  200.             font-weight:700;
  201.             font-size:24px;line-height:1.05;letter-spacing:-0.04em;
  202.             color:var(--wr-ink);
  203.             margin:0 auto 12px;
  204.             width:100%;max-width:1200px;
  205.             opacity:0;transform:translateY(12px);
  206.             animation:wrFadeUp .9s cubic-bezier(.2,.7,.2,1) .15s forwards;
  207.         }
  208.         @media(min-width:768px){.hero-title{font-size:40px;letter-spacing:-0.045em}}
  209.         @media(min-width:1100px){.hero-title{font-size:57px;letter-spacing:-0.045em}}
  210.         .hero-title-accent{
  211.             color:var(--wr-violet);
  212.         }
  213.         .hero-lede{
  214.             font-size:15px;line-height:1.5;color:var(--wr-ink-2);font-weight:400;
  215.             margin:0 auto 16px;max-width:680px;
  216.             opacity:0;animation:wrFadeUp .9s ease .4s forwards;
  217.         }
  218.         @media(min-width:768px){.hero-lede{font-size:17px}}
  219.         .hero-lede-accent{color:var(--wr-violet);font-weight:600}
  220.         /* ═══ Recherche — pleine largeur (alignée sur la liste 1200px) ═══ */
  221.         .hero-search-wrap{
  222.             max-width:1200px;margin:0 auto 12px;
  223.             opacity:0;animation:wrFadeUp .9s ease .55s forwards;
  224.             position:relative;z-index:5;
  225.         }
  226.         .hero-search{
  227.             background:var(--wr-card);
  228.             border-radius:14px;
  229.             box-shadow:0 0 20px 0 rgba(0,0,0,0.05),0 16px 40px rgba(138,99,192,.06);
  230.             padding:10px;
  231.             position:relative;
  232.         }
  233.         .hero-search-inner{
  234.             display:flex;align-items:center;gap:10px;
  235.             padding:10px 14px;border-radius:10px;
  236.             background:#F9FAFB;border:1px solid #E5E7EB;
  237.             transition:border-color .2s,background .2s;
  238.         }
  239.         .hero-search-inner:focus-within{
  240.             border-color:rgba(138,99,192,.4);
  241.             background:#fff;
  242.         }
  243.         .hero-search-icon{color:var(--wr-muted-2);display:flex;flex-shrink:0}
  244.         .hero-search-icon svg{width:16px;height:16px}
  245.         .hero-search-input{
  246.             flex:1;border:0;outline:0;background:transparent;
  247.             font-size:14.5px;font-family:inherit;color:var(--wr-ink);
  248.             padding:6px 0;min-width:0;
  249.         }
  250.         .hero-search-input::placeholder{color:var(--wr-muted-2)}
  251.         .hero-search-clear{
  252.             background:none;border:0;color:var(--wr-muted-2);cursor:pointer;
  253.             padding:4px;display:none;font-family:inherit;
  254.             border-radius:6px;transition:background .15s,color .15s;
  255.         }
  256.         .hero-search-clear:hover{background:var(--wr-violet-soft);color:var(--wr-violet)}
  257.         .hero-search-clear.is-visible{display:flex;align-items:center}
  258.         .hero-search-clear svg{width:14px;height:14px}
  259.         .hero-search-kbd{
  260.             display:none;align-items:center;
  261.             padding:3px 8px;background:#fff;border:1px solid #E5E7EB;border-radius:6px;
  262.             font-size:10.5px;font-weight:600;color:var(--wr-muted);
  263.             font-family:inherit;letter-spacing:.02em;white-space:nowrap;flex-shrink:0;
  264.         }
  265.         .hero-search-inner:focus-within .hero-search-kbd{display:inline-flex}
  266.         /* ═══ États de la liste de jobs (header, empty, loading) ═══ */
  267.         .hero-jobs-header{
  268.             display:flex;align-items:center;justify-content:space-between;gap:10px;
  269.             padding:14px 22px 10px;
  270.             border-bottom:1px solid var(--wr-line);
  271.             margin-bottom:4px;
  272.         }
  273.         @media(max-width:540px){.hero-jobs-header{padding:12px 16px 8px}}
  274.         .hero-jobs-count{
  275.             font-size:11.5px;color:var(--wr-muted);
  276.             text-transform:uppercase;letter-spacing:.08em;font-weight:600;
  277.         }
  278.         .hero-jobs-count strong{color:var(--wr-violet);font-weight:800;font-size:13px;margin-right:4px}
  279.         .hero-jobs-link{
  280.             font-size:11px;font-weight:700;
  281.             color:var(--wr-violet);
  282.             text-transform:uppercase;letter-spacing:.08em;
  283.             text-decoration:none;
  284.             display:inline-flex;align-items:center;gap:5px;
  285.             transition:color .15s,transform .15s;
  286.         }
  287.         .hero-jobs-link:hover{color:var(--wr-violet-dark);text-decoration:none;transform:translateX(2px)}
  288.         .hero-jobs-link svg{width:11px;height:11px}
  289.         .hero-jobs-empty{text-align:center;padding:48px 20px;color:var(--wr-muted)}
  290.         .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}
  291.         .hero-jobs-empty-icon svg{width:22px;height:22px}
  292.         .hero-jobs-empty-title{font-weight:600;font-size:14px;color:var(--wr-ink);margin:0 0 4px}
  293.         .hero-jobs-empty-hint{font-size:13px;margin:0;color:var(--wr-muted)}
  294.         .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}
  295.         .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}
  296.         @keyframes wrSpin{to{transform:rotate(360deg)}}
  297.         /* ═══ Pills "Populaire" sous la recherche ═══ */
  298.         .hero-popular{
  299.             display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;
  300.             margin-bottom:18px;
  301.             opacity:0;animation:wrFadeUp .9s ease .7s forwards;
  302.         }
  303.         .hero-popular-label{
  304.             font-size:11px;font-weight:600;color:var(--wr-muted);
  305.             text-transform:uppercase;letter-spacing:.06em;
  306.             margin-right:4px;
  307.         }
  308.         .hero-popular-pill{
  309.             display:inline-flex;align-items:center;gap:5px;
  310.             padding:6px 12px;border-radius:100px;
  311.             background:var(--wr-violet-soft);
  312.             color:var(--wr-violet);
  313.             font-size:12.5px;font-weight:500;font-family:inherit;
  314.             text-decoration:none;cursor:pointer;
  315.             border:1px solid transparent;
  316.             transition:background .15s,border-color .15s,transform .15s,color .15s;
  317.         }
  318.         .hero-popular-pill:hover{
  319.             background:#EDE9FE;
  320.             border-color:rgba(138,99,192,.2);
  321.             transform:translateY(-1px);
  322.             color:var(--wr-violet);
  323.             text-decoration:none;
  324.         }
  325.         .hero-popular-pill.is-active{
  326.             background:var(--wr-violet);color:#fff;border-color:var(--wr-violet);
  327.         }
  328.         .hero-popular-pill.is-active:hover{background:var(--wr-violet-dark);color:#fff}
  329.         .hero-popular-pill-icon{font-size:13px;line-height:1}
  330.         /* ═══ CTA hero (boutons inscription + connexion pour anonymes) ═══ */
  331.         .hero-cta{
  332.             display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  333.             margin:24px 0 8px;
  334.             opacity:0;animation:wrFadeUp .9s ease 1.1s forwards;
  335.         }
  336.         .hero-cta-btn,
  337.         .hero-cta-btn:link,
  338.         .hero-cta-btn:visited,
  339.         .hero-cta-btn:hover,
  340.         .hero-cta-btn:focus,
  341.         .hero-cta-btn:active{
  342.             color:#fff !important;
  343.             text-decoration:none !important;
  344.         }
  345.         .hero-cta-btn{
  346.             display:inline-flex;align-items:center;gap:8px;
  347.             padding:11px 20px;border-radius:11px;
  348.             font-size:13.5px;font-weight:700;font-family:inherit;
  349.             line-height:1;
  350.             background:var(--wr-violet);border:1px solid var(--wr-violet);
  351.             box-shadow:0 4px 14px rgba(138,99,193,.32);
  352.             transition:background .15s,border-color .15s,transform .15s,box-shadow .15s;
  353.         }
  354.         .hero-cta-btn:hover{
  355.             background:var(--wr-violet-dark);border-color:var(--wr-violet-dark);
  356.             transform:translateY(-2px);
  357.             box-shadow:0 6px 20px rgba(138,99,193,.4);
  358.         }
  359.         .hero-cta-btn svg{width:15px;height:15px;flex-shrink:0;stroke:#fff !important;color:#fff !important}
  360.         .hero-cta-btn span{color:#fff !important}
  361.         @media(max-width:540px){.hero-cta{flex-direction:column;align-items:stretch}.hero-cta-btn{justify-content:center}}
  362.         /* ═══ Boutons stores — VIOLET PLEIN BLANC ═══ */
  363.         .hero-stores{
  364.             display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;
  365.             margin-bottom:48px;
  366.             opacity:0;animation:wrFadeUp .9s ease .85s forwards;
  367.         }
  368.         .hero-store-btn{
  369.             display:inline-flex;align-items:center;gap:10px;
  370.             padding:13px 24px;border-radius:12px;
  371.             background:var(--wr-violet);
  372.             border:0;
  373.             color:#fff;
  374.             font-size:14px;font-weight:600;
  375.             text-decoration:none;
  376.             transition:background .15s,transform .15s,box-shadow .15s;
  377.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  378.         }
  379.         .hero-store-btn:hover{
  380.             background:var(--wr-violet-dark);
  381.             color:#fff;
  382.             transform:translateY(-2px);
  383.             box-shadow:0 8px 22px rgba(138,99,192,.4);
  384.             text-decoration:none;
  385.         }
  386.         .hero-store-btn-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px}
  387.         .hero-store-btn-icon svg{width:18px;height:18px}
  388.         @media(max-width:540px){.hero-stores{flex-direction:column;align-items:stretch;gap:10px}.hero-store-btn{justify-content:center}}
  389.         /* ═══════════════════════════════════════════════════════════════════
  390.            LISTE PAR DÉFAUT SOUS LE HERO (offres récentes)
  391.            ═══════════════════════════════════════════════════════════════════ */
  392.         .hero-default-jobs{
  393.             position:relative;z-index:2;
  394.             max-width:1200px;margin:0 auto;
  395.             background:var(--wr-card);
  396.             border:1px solid var(--wr-line);
  397.             border-radius:18px;
  398.             padding:8px 0;
  399.             box-shadow:var(--wr-shadow);
  400.             opacity:0;animation:wrFadeUp .9s ease 1s forwards;
  401.             text-align:left;
  402.         }
  403.         .hero-default-job{
  404.             display:flex;align-items:center;gap:16px;
  405.             padding:14px 22px;
  406.             text-decoration:none;color:inherit;
  407.             border-bottom:1px solid var(--wr-line);
  408.             transition:background .15s;
  409.         }
  410.         .hero-default-job:last-child{border-bottom:0}
  411.         .hero-default-job:hover{background:var(--wr-violet-softer);text-decoration:none;color:inherit}
  412.         .hero-default-job-logo{
  413.             width:42px;height:42px;border-radius:11px;flex-shrink:0;
  414.             display:flex;align-items:center;justify-content:center;
  415.             font-weight:700;font-size:16px;overflow:hidden;
  416.         }
  417.         .hero-default-job-logo img{width:100%;height:100%;object-fit:cover}
  418.         /* 7 variantes de couleurs cyclées par index */
  419.         .hero-default-job:nth-child(7n+1) .hero-default-job-logo{background:var(--wr-acc-yellow);color:var(--wr-acc-yellow-fg)}
  420.         .hero-default-job:nth-child(7n+2) .hero-default-job-logo{background:var(--wr-acc-green);color:var(--wr-acc-green-fg)}
  421.         .hero-default-job:nth-child(7n+3) .hero-default-job-logo{background:var(--wr-acc-pink);color:var(--wr-acc-pink-fg)}
  422.         .hero-default-job:nth-child(7n+4) .hero-default-job-logo{background:var(--wr-acc-blue);color:var(--wr-acc-blue-fg)}
  423.         .hero-default-job:nth-child(7n+5) .hero-default-job-logo{background:var(--wr-acc-orange);color:var(--wr-acc-orange-fg)}
  424.         .hero-default-job:nth-child(7n+6) .hero-default-job-logo{background:var(--wr-acc-violet);color:var(--wr-acc-violet-fg)}
  425.         .hero-default-job:nth-child(7n+7) .hero-default-job-logo{background:var(--wr-acc-cyan);color:var(--wr-acc-cyan-fg)}
  426.         .hero-default-job-info{flex:1;min-width:0}
  427.         .hero-default-job-title{
  428.             font-weight:600;font-size:14.5px;color:var(--wr-ink);
  429.             margin:0 0 2px;line-height:1.3;
  430.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  431.         }
  432.         .hero-default-job-meta{
  433.             font-size:12.5px;color:var(--wr-muted);margin:0;
  434.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  435.             display:flex;align-items:center;gap:8px;
  436.         }
  437.         .hero-default-job-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:var(--wr-muted-2);flex-shrink:0}
  438.         .hero-default-job-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  439.         .hero-default-job-arrow svg{width:15px;height:15px}
  440.         .hero-default-job:hover .hero-default-job-arrow{color:var(--wr-violet);transform:translateX(3px)}
  441.         @media(max-width:768px){
  442.             .hero-default-jobs{margin:0 -18px;border-radius:14px}
  443.             .hero-default-job{padding:12px 16px;gap:12px}
  444.             .hero-default-job-logo{width:36px;height:36px;font-size:13px}
  445.             .hero-default-job-title{font-size:13.5px}
  446.             .hero-default-job-meta{font-size:11.5px;gap:6px;flex-wrap:wrap;white-space:normal}
  447.         }
  448.         /* ═══════════════════════════════════════════════════════════════════
  449.            SECTION : 3 PARCOURS
  450.            ═══════════════════════════════════════════════════════════════════ */
  451.         .paths-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
  452.         @media(max-width:991px){.paths-grid{grid-template-columns:1fr;gap:14px}}
  453.         .path-card{
  454.             position:relative;
  455.             background:var(--wr-card);
  456.             border:1px solid var(--wr-line);
  457.             border-radius:20px;padding:28px;
  458.             display:flex;flex-direction:column;
  459.             transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
  460.             box-shadow:var(--wr-shadow);
  461.         }
  462.         .path-card:hover{transform:translateY(-4px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-2)}
  463.         .path-card-illu{
  464.             width:64px;height:64px;border-radius:16px;
  465.             background:var(--wr-violet-soft);color:var(--wr-violet);
  466.             display:flex;align-items:center;justify-content:center;
  467.             margin-bottom:22px;
  468.         }
  469.         .path-card-illu svg{width:30px;height:30px}
  470.         .path-card-label{
  471.             display:inline-block;
  472.             font-size:11px;font-weight:600;
  473.             color:var(--wr-violet-dark);text-transform:uppercase;letter-spacing:.1em;
  474.             margin-bottom:10px;align-self:flex-start;
  475.         }
  476.         .path-card-title{
  477.             font-weight:500;font-size:22px;line-height:1.25;letter-spacing:-0.015em;
  478.             color:var(--wr-ink);margin:0 0 10px;
  479.         }
  480.         .path-card-desc{
  481.             font-size:14px;line-height:1.6;color:var(--wr-muted);
  482.             margin:0 0 22px;flex:1;
  483.         }
  484.         .path-card-cta{
  485.             display:inline-flex;align-items:center;justify-content:center;gap:6px;
  486.             background:var(--wr-violet);color:#fff;
  487.             padding:12px 18px;border-radius:11px;
  488.             font-size:13px;font-weight:600;
  489.             align-self:stretch;
  490.             transition:background .15s,transform .15s,box-shadow .15s;
  491.             box-shadow:0 2px 8px rgba(138,99,192,.2);
  492.         }
  493.         .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)}
  494.         .path-card-cta svg{width:13px;height:13px;transition:transform .15s}
  495.         .path-card-cta:hover svg{transform:translateX(3px)}
  496.         /* ═══════════════════════════════════════════════════════════════════
  497.            COMMENT ÇA MARCHE — Card crème englobante avec 3 sous-cards
  498.            ═══════════════════════════════════════════════════════════════════ */
  499.         .how-card{
  500.             background:#F4ECE1;
  501.             border-radius:24px;
  502.             padding:32px 24px;
  503.             display:grid;grid-template-columns:repeat(3,1fr);gap:24px;
  504.             position:relative;
  505.         }
  506.         @media(max-width:991px){.how-card{grid-template-columns:1fr;gap:8px;padding:24px 16px}}
  507.         @media(min-width:992px){
  508.             /* Séparateurs verticaux entre les 3 cellules */
  509.             .how-card .how-step + .how-step{border-left:1px solid rgba(28,25,22,.08)}
  510.         }
  511.         .how-step{
  512.             display:flex;flex-direction:column;align-items:center;text-align:center;
  513.             padding:16px 20px;
  514.             gap:16px;
  515.         }
  516.         .how-step-illu{
  517.             width:100%;max-width:280px;aspect-ratio:1/1;
  518.             border-radius:16px;
  519.             background:rgba(255,255,255,.5);
  520.             display:flex;align-items:center;justify-content:center;
  521.             margin-bottom:4px;
  522.             overflow:hidden;
  523.         }
  524.         .how-step-illu img{width:100%;height:100%;object-fit:contain;display:block}
  525.         .how-step-illu svg{width:55%;height:55%;opacity:.85}
  526.         .how-step-title{
  527.             font-weight:700;font-size:18px;line-height:1.3;letter-spacing:-0.01em;
  528.             color:var(--wr-ink);margin:0;
  529.         }
  530.         @media(min-width:992px){.how-step-title{font-size:20px}}
  531.         .how-step-desc{
  532.             font-size:14px;line-height:1.55;color:var(--wr-ink-2);
  533.             margin:0;max-width:320px;
  534.         }
  535.         /* ═══════════════════════════════════════════════════════════════════
  536.            FEATURES 01-04 — Splits alternés image/texte avec témoignages
  537.            ═══════════════════════════════════════════════════════════════════ */
  538.         .feat-block{
  539.             display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;
  540.             margin-bottom:64px;
  541.         }
  542.         .feat-block:last-child{margin-bottom:0}
  543.         @media(max-width:991px){
  544.             .feat-block{grid-template-columns:1fr;gap:24px;margin-bottom:48px}
  545.         }
  546.         /* Alterner : 01 illu droite, 02 illu gauche, 03 illu droite, 04 illu gauche */
  547.         .feat-block:nth-child(odd) .feat-illu{order:2}
  548.         .feat-block:nth-child(odd) .feat-content{order:1}
  549.         .feat-block:nth-child(even) .feat-illu{order:1}
  550.         .feat-block:nth-child(even) .feat-content{order:2}
  551.         @media(max-width:991px){
  552.             .feat-block .feat-illu{order:1}
  553.             .feat-block .feat-content{order:2}
  554.         }
  555.         .feat-illu{
  556.             background:#F5EDE3;
  557.             border-radius:20px;
  558.             aspect-ratio:1/1;
  559.             display:flex;align-items:center;justify-content:center;
  560.             color:var(--wr-violet);
  561.             overflow:hidden;
  562.             position:relative;
  563.         }
  564.         .feat-illu img{width:100%;height:100%;object-fit:contain;display:block}
  565.         .feat-illu svg{width:50%;height:50%;opacity:.85}
  566.         .feat-content{display:flex;flex-direction:column;gap:18px}
  567.         .feat-label{
  568.             font-size:30px;font-weight:800;
  569.             color:var(--wr-ink);
  570.             letter-spacing:-0.02em;
  571.             margin:0;line-height:1;
  572.         }
  573.         .feat-title{
  574.             font-weight:700;font-size:24px;line-height:1.2;letter-spacing:-0.02em;
  575.             color:var(--wr-ink);margin:0;
  576.         }
  577.         @media(min-width:768px){.feat-title{font-size:28px}}
  578.         @media(min-width:1100px){.feat-title{font-size:30px}}
  579.         .feat-desc{
  580.             display:flex;flex-direction:column;gap:14px;
  581.         }
  582.         .feat-desc p{
  583.             font-size:15px;line-height:1.6;color:var(--wr-ink-2);
  584.             margin:0;opacity:.85;
  585.         }
  586.         @media(min-width:1100px){.feat-desc p{font-size:16px}}
  587.         .feat-desc strong{color:var(--wr-ink);font-weight:700;opacity:1}
  588.         .feat-quote{
  589.             background:var(--wr-card);
  590.             border:1px solid var(--wr-line);
  591.             border-radius:14px;
  592.             padding:18px 20px;
  593.             display:flex;flex-direction:column;gap:10px;
  594.             margin-top:8px;
  595.         }
  596.         .feat-quote-text{
  597.             font-size:14px;line-height:1.55;color:var(--wr-ink-2);
  598.             margin:0;font-style:italic;
  599.         }
  600.         .feat-quote-author{
  601.             display:flex;flex-direction:column;
  602.         }
  603.         .feat-quote-name{font-size:13px;font-weight:700;color:var(--wr-ink);margin:0}
  604.         .feat-quote-role{font-size:12px;color:var(--wr-muted);margin:0}
  605.         /* ═══════════════════════════════════════════════════════════════════
  606.            MATCH
  607.            ═══════════════════════════════════════════════════════════════════ */
  608.         .match-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:60px;align-items:center}
  609.         @media(max-width:991px){.match-grid{grid-template-columns:1fr;gap:40px}}
  610.         .match-text .wr-title{margin-left:0;text-align:left}
  611.         .match-text .wr-lede{margin-left:0;text-align:left}
  612.         .match-text .wr-eyebrow{margin-bottom:20px}
  613.         .match-features{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:32px}
  614.         @media(max-width:540px){.match-features{grid-template-columns:1fr}}
  615.         .match-feature{
  616.             background:var(--wr-card);border:1px solid var(--wr-line);
  617.             border-radius:14px;padding:18px;
  618.             transition:transform .15s,border-color .15s,box-shadow .15s;
  619.         }
  620.         .match-feature:hover{transform:translateY(-2px);border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)}
  621.         .match-feature-icon{
  622.             width:34px;height:34px;border-radius:10px;
  623.             background:var(--wr-violet-soft);color:var(--wr-violet);
  624.             display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px;
  625.         }
  626.         .match-feature-icon svg{width:16px;height:16px}
  627.         .match-feature-title{font-weight:600;font-size:14px;line-height:1.3;color:var(--wr-ink);margin:0 0 5px}
  628.         .match-feature-desc{font-size:12.5px;line-height:1.5;color:var(--wr-muted);margin:0}
  629.         .match-visual{position:relative;display:flex;justify-content:center;align-items:center;padding:40px 0}
  630.         .match-stack{position:relative;width:100%;max-width:340px;height:340px}
  631.         .match-stack-card{
  632.             position:absolute;
  633.             background:var(--wr-card);border:1px solid var(--wr-line);
  634.             border-radius:16px;padding:14px;
  635.             display:flex;align-items:center;gap:12px;
  636.             box-shadow:var(--wr-shadow);width:100%;
  637.             transition:transform .3s ease,box-shadow .3s ease;
  638.             cursor:pointer;
  639.         }
  640.         .match-stack-card:hover{
  641.             transform:translateY(-4px) rotate(0deg)!important;
  642.             box-shadow:0 20px 50px rgba(138,99,192,.22)!important;
  643.             z-index:10!important;
  644.         }
  645.         .match-stack-card:nth-child(1){top:0;transform:rotate(-6deg) translateX(-10px);z-index:1;animation:wrFloat1 6s ease-in-out infinite}
  646.         .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}
  647.         .match-stack-card:nth-child(3){top:156px;transform:rotate(-3deg) translateX(8px);z-index:2;animation:wrFloat3 6s ease-in-out -4s infinite}
  648.         .match-stack-card:nth-child(4){top:234px;left:20px;transform:rotate(4deg);z-index:1;animation:wrFloat4 6s ease-in-out -1s infinite}
  649.         @keyframes wrFloat1{0%,100%{transform:rotate(-6deg) translate(-10px,0)}50%{transform:rotate(-6deg) translate(-10px,-8px)}}
  650.         @keyframes wrFloat2{0%,100%{transform:rotate(2deg) translate(0,0)}50%{transform:rotate(2deg) translate(0,-6px)}}
  651.         @keyframes wrFloat3{0%,100%{transform:rotate(-3deg) translate(8px,0)}50%{transform:rotate(-3deg) translate(8px,-7px)}}
  652.         @keyframes wrFloat4{0%,100%{transform:rotate(4deg) translate(0,0)}50%{transform:rotate(4deg) translate(0,-5px)}}
  653.         .match-stack-logo{
  654.             width:38px;height:38px;border-radius:10px;
  655.             background:var(--wr-violet-soft);color:var(--wr-violet);
  656.             display:flex;align-items:center;justify-content:center;
  657.             font-weight:700;font-size:14px;flex-shrink:0;
  658.         }
  659.         .match-stack-info{flex:1;min-width:0}
  660.         .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}
  661.         .match-stack-meta{font-size:11px;color:var(--wr-muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  662.         .match-stack-heart{
  663.             width:28px;height:28px;border-radius:50%;
  664.             background:#FEE2E2;color:#EF4444;
  665.             display:flex;align-items:center;justify-content:center;flex-shrink:0;
  666.             animation:wrHeartbeat 1.6s ease-in-out infinite;
  667.         }
  668.         .match-stack-card:nth-child(1) .match-stack-heart{animation-delay:0s}
  669.         .match-stack-card:nth-child(2) .match-stack-heart{animation-delay:.4s}
  670.         .match-stack-card:nth-child(3) .match-stack-heart{animation-delay:.8s}
  671.         .match-stack-card:nth-child(4) .match-stack-heart{animation-delay:1.2s}
  672.         .match-stack-heart svg{width:13px;height:13px;fill:currentColor}
  673.         @keyframes wrHeartbeat{
  674.             0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(239,68,68,.4)}
  675.             10%{transform:scale(1.18);box-shadow:0 0 0 0 rgba(239,68,68,.4)}
  676.             20%{transform:scale(1)}
  677.             30%{transform:scale(1.12)}
  678.             40%{transform:scale(1);box-shadow:0 0 0 10px rgba(239,68,68,0)}
  679.             100%{box-shadow:0 0 0 0 rgba(239,68,68,0)}
  680.         }
  681.         /* ═══════════════════════════════════════════════════════════════════
  682.            SIGNUP FORM (entre feat 02 et 03)
  683.            ═══════════════════════════════════════════════════════════════════ */
  684.         .signup-section{padding-top:0 !important}
  685.         .signup-card{
  686.             position:relative;
  687.             max-width:980px;margin:0 auto 64px;
  688.             background:linear-gradient(135deg, #FFFFFF 0%, #FAF7FF 100%);
  689.             border:1px solid var(--wr-line);
  690.             border-radius:32px;
  691.             padding:48px 40px;
  692.             box-shadow:0 4px 12px rgba(30,27,46,.04), 0 24px 64px rgba(138,99,192,.1);
  693.             overflow:hidden;
  694.         }
  695.         @media(max-width:768px){.signup-card{padding:32px 22px;border-radius:24px;margin:0 auto 48px}}
  696.         /* Décor : 2 blobs violet pâle dans les coins */
  697.         .signup-card::before{
  698.             content:"";position:absolute;
  699.             top:-120px;right:-120px;width:340px;height:340px;
  700.             background:radial-gradient(circle,rgba(138,99,192,.12) 0%,transparent 65%);
  701.             pointer-events:none;filter:blur(40px);
  702.         }
  703.         .signup-card::after{
  704.             content:"";position:absolute;
  705.             bottom:-100px;left:-80px;width:280px;height:280px;
  706.             background:radial-gradient(circle,rgba(138,99,192,.08) 0%,transparent 65%);
  707.             pointer-events:none;filter:blur(40px);
  708.         }
  709.         .signup-inner{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1.2fr;gap:48px;align-items:center}
  710.         @media(max-width:880px){.signup-inner{grid-template-columns:1fr;gap:28px}}
  711.         .signup-text{display:flex;flex-direction:column;gap:14px}
  712.         .signup-eyebrow{
  713.             display:inline-flex;align-items:center;gap:8px;
  714.             padding:7px 14px;border-radius:100px;
  715.             background:var(--wr-violet-soft);color:var(--wr-violet-dark);
  716.             font-size:11.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  717.             align-self:flex-start;
  718.         }
  719.         .signup-title{
  720.             font-weight:700;font-size:28px;line-height:1.15;letter-spacing:-0.02em;
  721.             color:var(--wr-ink);margin:0;
  722.         }
  723.         @media(min-width:768px){.signup-title{font-size:34px}}
  724.         .signup-lede{font-size:15px;line-height:1.55;color:var(--wr-ink-2);margin:0;opacity:.85}
  725.         .signup-perks{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
  726.         .signup-perk{
  727.             display:inline-flex;align-items:center;gap:6px;
  728.             padding:6px 12px;border-radius:100px;
  729.             background:var(--wr-card);border:1px solid var(--wr-line-2);
  730.             font-size:12px;font-weight:600;color:var(--wr-ink-2);
  731.         }
  732.         .signup-perk svg{width:13px;height:13px;color:#10B981;stroke-width:3;flex-shrink:0}
  733.         .signup-form{
  734.             background:var(--wr-card);
  735.             border:1px solid var(--wr-line);
  736.             border-radius:20px;
  737.             padding:24px;
  738.             display:flex;flex-direction:column;gap:12px;
  739.             box-shadow:0 1px 2px rgba(30,27,46,.03);
  740.         }
  741.         .signup-form-error{
  742.             background:#FEF2F2;border:1px solid #FECACA;
  743.             color:#991B1B;
  744.             border-radius:12px;
  745.             padding:10px 14px;
  746.             font-size:13px;line-height:1.45;
  747.             margin:0;
  748.         }
  749.         .signup-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  750.         @media(max-width:540px){.signup-row{grid-template-columns:1fr}}
  751.         .signup-field{display:flex;flex-direction:column;gap:0}
  752.         .signup-card .signup-form input[type="email"],
  753.         .signup-card .signup-form input[type="password"],
  754.         .signup-card .signup-form input[type="text"]{
  755.             width:100%;
  756.             padding:13px 14px;
  757.             border:1px solid var(--wr-line-2);border-radius:11px;
  758.             background:#FAFBFD;
  759.             font-size:14px;font-family:inherit;color:var(--wr-ink);
  760.             outline:none;
  761.             transition:border-color .15s,background .15s,box-shadow .15s;
  762.             box-sizing:border-box;
  763.         }
  764.         .signup-card .signup-form input[type="email"]:focus,
  765.         .signup-card .signup-form input[type="password"]:focus,
  766.         .signup-card .signup-form input[type="text"]:focus{
  767.             border-color:var(--wr-violet);background:#fff;
  768.             box-shadow:0 0 0 3px rgba(138,99,192,.12);
  769.         }
  770.         .signup-card .signup-form input::placeholder{color:var(--wr-muted-2)}
  771.         .signup-terms{
  772.             display:flex;align-items:flex-start;gap:10px;
  773.             font-size:12.5px;line-height:1.45;color:var(--wr-muted);
  774.             margin:4px 0 0;
  775.         }
  776.         .signup-card .signup-form input[type="checkbox"]{
  777.             width:16px;height:16px;flex-shrink:0;margin-top:2px;accent-color:var(--wr-violet);cursor:pointer;
  778.         }
  779.         .signup-terms a{color:var(--wr-violet);font-weight:600;text-decoration:underline}
  780.         .signup-terms a:hover{color:var(--wr-violet-dark)}
  781.         .signup-recaptcha{margin:4px 0 0}
  782.         .signup-recaptcha > div{max-width:100%}
  783.         .signup-submit{
  784.             width:100%;
  785.             padding:14px 22px;border-radius:12px;
  786.             background:var(--wr-violet);color:#fff;border:0;
  787.             font-size:14.5px;font-weight:700;font-family:inherit;
  788.             cursor:pointer;
  789.             display:inline-flex;align-items:center;justify-content:center;gap:8px;
  790.             box-shadow:0 4px 14px rgba(138,99,192,.32);
  791.             transition:background .15s,transform .15s,box-shadow .15s;
  792.             margin-top:6px;
  793.         }
  794.         .signup-submit:hover{background:var(--wr-violet-dark);transform:translateY(-1px);box-shadow:0 6px 20px rgba(138,99,192,.4)}
  795.         .signup-submit svg{width:14px;height:14px;transition:transform .15s}
  796.         .signup-submit:hover svg{transform:translateX(3px)}
  797.         .signup-login{
  798.             text-align:center;font-size:13px;color:var(--wr-muted);margin:6px 0 0;
  799.         }
  800.         .signup-login a{color:var(--wr-violet);font-weight:600;text-decoration:none}
  801.         .signup-login a:hover{color:var(--wr-violet-dark);text-decoration:underline}
  802.         /* ═══════════════════════════════════════════════════════════════════
  803.            PRICING — 4 tiers (Gratuit / Unique / Business / Business+)
  804.            ═══════════════════════════════════════════════════════════════════ */
  805.         .pricing-grid{display:grid;gap:18px;max-width:980px;margin:0 auto}
  806.         .pricing-grid--2{grid-template-columns:repeat(2,1fr)}
  807.         .pricing-grid--mt{margin-top:24px}
  808.         @media(max-width:768px){.pricing-grid--2{grid-template-columns:1fr;gap:14px}}
  809.         .pricing-card{
  810.             background:var(--wr-card);border:1px solid var(--wr-line);
  811.             border-radius:22px;padding:32px 26px;
  812.             display:flex;flex-direction:column;gap:20px;
  813.             box-shadow:var(--wr-shadow);
  814.             transition:transform .2s,box-shadow .25s,border-color .2s;
  815.             position:relative;
  816.         }
  817.         .pricing-card:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover);border-color:var(--wr-violet-soft)}
  818.         .pricing-card--featured{
  819.             background:#F4ECE1;
  820.             border-color:#E5D8C5;
  821.         }
  822.         .pricing-card--featured:hover{border-color:var(--wr-violet)}
  823.         .pricing-badge{
  824.             position:absolute;top:24px;right:24px;
  825.             background:var(--wr-violet);color:#fff !important;
  826.             font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;
  827.             padding:6px 12px;border-radius:6px;
  828.             box-shadow:0 4px 12px rgba(138,99,193,.32);
  829.         }
  830.         .pricing-head{display:flex;flex-direction:column;gap:6px}
  831.         .pricing-name{font-weight:800;font-size:22px;letter-spacing:-0.01em;color:var(--wr-ink);margin:0}
  832.         .pricing-desc{font-size:14px;line-height:1.5;color:var(--wr-muted);margin:0}
  833.         .pricing-price{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
  834.         .pricing-price-amount{font-size:38px;font-weight:800;color:var(--wr-ink);letter-spacing:-0.03em;line-height:1}
  835.         .pricing-price-amount--quote{font-size:32px}
  836.         .pricing-price-old{font-size:22px;font-weight:600;color:var(--wr-muted-2);text-decoration:line-through;align-self:baseline}
  837.         .pricing-price-unit{font-size:13px;color:var(--wr-muted);font-weight:500;width:100%;line-height:1.5}
  838.         .pricing-features{display:flex;flex-direction:column;gap:10px;list-style:none;padding:0;margin:0}
  839.         .pricing-feature{display:flex;align-items:flex-start;gap:10px;font-size:13.5px;line-height:1.45;color:var(--wr-ink-2)}
  840.         .pricing-feature-check{
  841.             width:18px;height:18px;border-radius:50%;flex-shrink:0;
  842.             background:var(--wr-violet);color:#fff;
  843.             display:inline-flex;align-items:center;justify-content:center;
  844.             margin-top:1px;
  845.         }
  846.         .pricing-feature-check svg{width:11px;height:11px;stroke-width:3;stroke:#fff}
  847.         .pricing-plus{
  848.             font-size:18px;font-weight:700;color:var(--wr-muted-2);
  849.             text-align:center;margin:4px 0;line-height:1;list-style:none;
  850.         }
  851.         .pricing-cta{
  852.             display:flex;align-items:center;justify-content:center;gap:8px;
  853.             padding:13px 18px;border-radius:11px;
  854.             background:var(--wr-violet);color:#fff !important;
  855.             font-size:14px;font-weight:700;
  856.             box-shadow:0 4px 12px rgba(138,99,193,.3);
  857.             transition:background .15s,transform .15s,box-shadow .15s;
  858.             text-decoration:none !important;
  859.         }
  860.         .pricing-cta:hover{background:var(--wr-violet-dark);transform:translateY(-2px);box-shadow:0 6px 18px rgba(138,99,193,.4)}
  861.         .pricing-cta svg{width:14px;height:14px;transition:transform .15s;stroke:#fff}
  862.         .pricing-cta:hover svg{transform:translateX(3px)}
  863.         .pricing-note{font-size:12px;color:var(--wr-muted);text-align:center;margin:0}
  864.         /* ═══════════════════════════════════════════════════════════════════
  865.            COMPARISON — 3 cards (Whileresume / LinkedIn / Indeed)
  866.            ═══════════════════════════════════════════════════════════════════ */
  867.         .compare-cards{
  868.             display:grid;grid-template-columns:repeat(3,1fr);gap:18px;
  869.             max-width:1100px;margin:0 auto;
  870.         }
  871.         @media(max-width:991px){.compare-cards{grid-template-columns:1fr;gap:14px}}
  872.         .compare-card{
  873.             background:var(--wr-card);border:1px solid var(--wr-line);
  874.             border-radius:18px;
  875.             padding:8px;
  876.             display:flex;flex-direction:column;gap:8px;
  877.             box-shadow:var(--wr-shadow);
  878.             transition:transform .2s,box-shadow .25s,border-color .2s;
  879.         }
  880.         .compare-card:hover{transform:translateY(-3px);box-shadow:var(--wr-shadow-hover)}
  881.         .compare-card--featured{border:2px solid #10B981}
  882.         .compare-card-head{
  883.             display:flex;align-items:center;gap:12px;
  884.             background:var(--wr-violet-soft);
  885.             padding:14px 18px;border-radius:12px;
  886.         }
  887.         .compare-card-logo{width:32px;height:32px;object-fit:contain;flex-shrink:0}
  888.         .compare-card-title{
  889.             font-weight:700;font-size:18px;letter-spacing:-0.01em;
  890.             color:var(--wr-ink);margin:0;
  891.         }
  892.         .compare-card-body{padding:8px 12px;display:flex;flex-direction:column}
  893.         .compare-row{
  894.             padding:14px 0;
  895.             border-bottom:1px solid var(--wr-line);
  896.         }
  897.         .compare-row:last-child{border-bottom:0}
  898.         .compare-row-label{
  899.             font-size:14px;color:var(--wr-muted);
  900.             margin:0 0 8px;line-height:1.4;
  901.         }
  902.         .compare-row-value{
  903.             display:inline-flex;align-items:center;gap:6px;
  904.             font-size:15px;font-weight:600;margin:0;
  905.         }
  906.         .compare-row-value svg{width:18px;height:18px;flex-shrink:0}
  907.         .compare-row-value--good{color:var(--wr-violet)}
  908.         .compare-row-value--good svg{stroke:var(--wr-violet)}
  909.         .compare-row-value--warn{color:#F59E0B}
  910.         .compare-row-value--warn svg{stroke:#F59E0B}
  911.         .compare-row-value--bad{color:#EF4444}
  912.         .compare-row-value--bad svg{stroke:#EF4444}
  913.         /* ═══════════════════════════════════════════════════════════════════
  914.            FAQ — Accordéons natifs (details/summary)
  915.            ═══════════════════════════════════════════════════════════════════ */
  916.         .faq-list{display:flex;flex-direction:column;gap:10px;max-width:850px;margin:0 auto}
  917.         .faq-item{
  918.             background:var(--wr-card);border:1px solid var(--wr-line);
  919.             border-radius:14px;
  920.             transition:border-color .2s,box-shadow .2s;
  921.         }
  922.         .faq-item[open]{border-color:var(--wr-violet-soft);box-shadow:var(--wr-shadow)}
  923.         .faq-q{
  924.             list-style:none;cursor:pointer;
  925.             padding:18px 22px;
  926.             display:flex;align-items:center;justify-content:space-between;gap:16px;
  927.             font-weight:700;font-size:15.5px;letter-spacing:-0.005em;color:var(--wr-ink);
  928.             transition:color .15s;
  929.         }
  930.         .faq-q::-webkit-details-marker{display:none}
  931.         .faq-q:hover{color:var(--wr-violet)}
  932.         .faq-chevron{width:18px;height:18px;flex-shrink:0;color:var(--wr-violet);transition:transform .25s}
  933.         .faq-item[open] .faq-chevron{transform:rotate(180deg)}
  934.         .faq-a{padding:0 22px 22px;color:var(--wr-ink-2);font-size:14.5px;line-height:1.6}
  935.         .faq-a p{margin:0}
  936.         /* ═══════════════════════════════════════════════════════════════════
  937.            ARTICLES — Liste sans miniatures (style identique aux jobs-card)
  938.            ═══════════════════════════════════════════════════════════════════ */
  939.         .articles-list{display:flex;flex-direction:column;gap:10px;max-width:1200px;margin:0 auto}
  940.         .wr-article{
  941.             background:var(--wr-card);border-radius:14px;padding:14px;
  942.             box-shadow:0 0 16px 0 rgba(0,0,0,0.04);
  943.             display:flex;align-items:center;gap:14px;
  944.             text-decoration:none;color:inherit;
  945.             transition:transform .15s,box-shadow .2s;
  946.         }
  947.         .wr-article:hover{
  948.             transform:translateY(-1px);
  949.             box-shadow:0 4px 20px rgba(138,99,192,.1);
  950.             color:inherit;text-decoration:none;
  951.         }
  952.         .wr-article-logo{
  953.             width:50px;height:50px;border-radius:12px;flex-shrink:0;
  954.             background:linear-gradient(135deg,#EDE9FE,#DDD6FE);
  955.             display:flex;align-items:center;justify-content:center;
  956.             color:var(--wr-violet);overflow:hidden;
  957.         }
  958.         .wr-article-logo svg{width:24px;height:24px;opacity:.9}
  959.         .wr-article-info{flex:1;min-width:0}
  960.         .wr-article-title{
  961.             font-size:14px;font-weight:700;color:var(--wr-ink);
  962.             line-height:1.3;margin:0 0 4px;
  963.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  964.         }
  965.         .wr-article-meta{
  966.             font-size:12px;color:var(--wr-muted);
  967.             white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  968.             display:flex;align-items:center;gap:8px;margin:0;
  969.         }
  970.         .wr-article-meta-sep{display:inline-block;width:3px;height:3px;border-radius:50%;background:#D1D5DB;flex-shrink:0}
  971.         .wr-article-badge{
  972.             font-size:11px;font-weight:600;
  973.             color:var(--wr-violet);background:var(--wr-violet-soft);
  974.             padding:3px 9px;border-radius:100px;
  975.             white-space:nowrap;flex-shrink:0;
  976.             text-transform:uppercase;letter-spacing:.04em;
  977.         }
  978.         .wr-article-arrow{flex-shrink:0;color:var(--wr-muted-2);transition:color .15s,transform .15s}
  979.         .wr-article:hover .wr-article-arrow{color:var(--wr-violet);transform:translateX(2px)}
  980.         .wr-article-arrow svg{width:18px;height:18px}
  981.         @media(max-width:540px){
  982.             .wr-article{padding:12px;gap:10px}
  983.             .wr-article-logo{width:42px;height:42px}
  984.             .wr-article-logo svg{width:20px;height:20px}
  985.             .wr-article-title{font-size:13px}
  986.             .wr-article-meta{font-size:11px;gap:6px;flex-wrap:wrap;white-space:normal}
  987.             .wr-article-badge{display:none}
  988.         }
  989.         .articles-cta{text-align:center;margin-top:36px}
  990.         .articles-cta a{
  991.             display:inline-flex;align-items:center;gap:8px;
  992.             padding:12px 22px;border-radius:11px;
  993.             background:var(--wr-violet);color:#fff;
  994.             font-size:13px;font-weight:600;
  995.             text-decoration:none;
  996.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  997.             transition:background .15s,transform .15s,box-shadow .15s;
  998.         }
  999.         .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}
  1000.         .articles-cta svg{width:12px;height:12px;transition:transform .15s}
  1001.         .articles-cta a:hover svg{transform:translateX(3px)}
  1002.         /* ═══════════════════════════════════════════════════════════════════
  1003.            CTA FINAL — Card violet plein avec eyebrow + 2 sous-cards
  1004.            ═══════════════════════════════════════════════════════════════════ */
  1005.         .final-card{
  1006.             position:relative;
  1007.             background:linear-gradient(135deg,#8A63C0 0%,#9D7BCC 100%);
  1008.             border-radius:28px;
  1009.             padding:48px 40px;
  1010.             color:#fff;overflow:hidden;
  1011.             box-shadow:0 20px 60px -12px rgba(138,99,192,.4);
  1012.         }
  1013.         .final-card--center{text-align:center}
  1014.         .final-card--center .final-eyebrow{margin-left:auto;margin-right:auto}
  1015.         .final-title--center{margin-left:auto;margin-right:auto;text-align:center}
  1016.         .final-lede{font-size:16px;line-height:1.55;color:rgba(255,255,255,.92);margin:0 auto 28px;max-width:600px}
  1017.         @media(min-width:768px){.final-lede{font-size:18px}}
  1018.         .final-cta-btn{
  1019.             display:inline-flex;align-items:center;gap:10px;
  1020.             padding:14px 28px;border-radius:12px;
  1021.             background:#fff;color:var(--wr-violet-dark) !important;
  1022.             font-size:14.5px;font-weight:800;text-decoration:none !important;
  1023.             box-shadow:0 6px 20px rgba(0,0,0,.18);
  1024.             transition:transform .15s,box-shadow .15s;
  1025.         }
  1026.         .final-cta-btn:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(0,0,0,.22);color:var(--wr-violet-dark) !important}
  1027.         .final-cta-btn svg{width:14px;height:14px;transition:transform .15s;stroke:var(--wr-violet-dark)}
  1028.         .final-cta-btn:hover svg{transform:translateX(4px)}
  1029.         @media(max-width:768px){.final-card{padding:32px 22px;border-radius:22px}}
  1030.         .final-eyebrow{
  1031.             display:inline-flex;align-items:center;gap:8px;
  1032.             padding:8px 18px;border-radius:100px;
  1033.             background:rgba(255,255,255,.2);
  1034.             color:#fff;
  1035.             font-size:12px;font-weight:700;
  1036.             text-transform:uppercase;letter-spacing:.12em;
  1037.             margin-bottom:20px;
  1038.             backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  1039.         }
  1040.         .final-eyebrow svg{width:13px;height:13px;fill:currentColor}
  1041.         .final-title{
  1042.             font-weight:800;font-size:28px;line-height:1.15;letter-spacing:-0.02em;
  1043.             color:#fff;margin:0 0 36px;
  1044.             max-width:780px;
  1045.         }
  1046.         @media(min-width:768px){.final-title{font-size:38px}}
  1047.         /* Grille 2 sous-cards */
  1048.         .final-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
  1049.         @media(max-width:768px){.final-grid{grid-template-columns:1fr;gap:14px}}
  1050.         .final-sub{
  1051.             background:#fff;
  1052.             border-radius:18px;
  1053.             padding:28px;
  1054.             display:flex;flex-direction:column;
  1055.         }
  1056.         @media(max-width:768px){.final-sub{padding:22px}}
  1057.         .final-sub-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
  1058.         .final-sub-icon{
  1059.             width:44px;height:44px;border-radius:11px;
  1060.             background:var(--wr-violet-soft);color:var(--wr-violet);
  1061.             display:flex;align-items:center;justify-content:center;flex-shrink:0;
  1062.         }
  1063.         .final-sub-icon svg{width:22px;height:22px}
  1064.         .final-sub-label{
  1065.             font-size:12.5px;font-weight:700;
  1066.             color:var(--wr-violet);
  1067.             text-transform:uppercase;letter-spacing:.1em;
  1068.         }
  1069.         .final-sub-title{
  1070.             font-weight:800;font-size:18px;line-height:1.3;letter-spacing:-0.01em;
  1071.             color:var(--wr-ink);margin:0 0 10px;
  1072.         }
  1073.         .final-sub-desc{
  1074.             font-size:14px;line-height:1.55;color:var(--wr-muted);
  1075.             margin:0 0 24px;flex:1;
  1076.         }
  1077.         .final-sub-btn{
  1078.             display:flex;align-items:center;justify-content:center;gap:8px;
  1079.             background:var(--wr-violet);color:#fff;
  1080.             padding:14px 18px;border-radius:11px;
  1081.             font-size:14px;font-weight:700;
  1082.             text-decoration:none;
  1083.             transition:background .15s,transform .15s,box-shadow .15s;
  1084.             box-shadow:0 4px 12px rgba(138,99,192,.3);
  1085.         }
  1086.         .final-sub-btn:hover{
  1087.             background:var(--wr-violet-dark);color:#fff;
  1088.             transform:translateY(-2px);
  1089.             box-shadow:0 6px 18px rgba(138,99,192,.4);
  1090.             text-decoration:none;
  1091.         }
  1092.         .final-sub-btn svg{width:14px;height:14px;transition:transform .15s}
  1093.         .final-sub-btn:hover svg{transform:translateX(3px)}
  1094.     </style>
  1095. {% endblock css %}
  1096. {% block body %}
  1097.     <div class="wr">
  1098.         {# ═══════════════ HERO ═══════════════ #}
  1099.         <section class="hero">
  1100.             <div class="hero-inner">
  1101.                 <span class="hero-badge">
  1102.                     <span class="hero-badge-dot"></span>
  1103.                     {{ t.hero_eyebrow }}
  1104.                 </span>
  1105.                 {# H1 sur 2 lignes :
  1106.                    Ligne 1 : "Publiez vos offres, attirez les bons talents,"
  1107.                    Ligne 2 : "échangez directement"
  1108.                    Avec les 3 verbes en violet. #}
  1109.                 <h1 class="hero-title">
  1110.                     <span class="hero-title-accent">{{ t.hero_title_a1 }}</span> {{ t.hero_title_p1 }}
  1111.                     <span class="hero-title-accent">{{ t.hero_title_a2 }}</span> {{ t.hero_title_p2 }}<br>
  1112.                     <span class="hero-title-accent">{{ t.hero_title_a3 }}</span> {{ t.hero_title_p3 }}
  1113.                 </h1>
  1114.                 <p class="hero-lede">{{ t.hero_lede }}</p>
  1115.             </div>
  1116.         </section>
  1117.         {% if app.user is null %}
  1118.         {# ═══════════════ INSCRIPTION (juste après le hero) ═══════════════ #}
  1119.         <section class="wr-section signup-section">
  1120.             <div class="wr-container">
  1121.                 <div class="signup-card reveal reveal--scale" id="wr-signup">
  1122.                     <div class="signup-inner">
  1123.                         <div class="signup-text">
  1124.                             <span class="signup-eyebrow">
  1125.                                 <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>
  1126.                                 {{ t.signup_eyebrow }}
  1127.                             </span>
  1128.                             <h3 class="signup-title">{{ t.signup_title }}</h3>
  1129.                             <p class="signup-lede">{{ t.signup_lede }}</p>
  1130.                             <div class="signup-perks">
  1131.                                 <span class="signup-perk">
  1132.                                     <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>
  1133.                                     {{ t.signup_perk1 }}
  1134.                                 </span>
  1135.                                 <span class="signup-perk">
  1136.                                     <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>
  1137.                                     {{ t.signup_perk2 }}
  1138.                                 </span>
  1139.                                 <span class="signup-perk">
  1140.                                     <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>
  1141.                                     {{ t.signup_perk3 }}
  1142.                                 </span>
  1143.                             </div>
  1144.                         </div>
  1145.                         {% if form is defined %}
  1146.                             {# Form Symfony complet rendu via les widgets #}
  1147.                             {{ form_start(form, {'attr': {'class': 'signup-form', 'novalidate': 'novalidate'}}) }}
  1148.                             {{ form_errors(form) }}
  1149.                             {% for message in app.flashes('danger') %}
  1150.                                 <p class="signup-form-error">{{ message }}</p>
  1151.                             {% endfor %}
  1152.                             {# Prénom + nom #}
  1153.                             <div class="signup-row">
  1154.                                 {% if form.name is defined %}
  1155.                                     <div class="signup-field">
  1156.                                         {{ form_widget(form.name, {'attr': {'placeholder': t.signup_name_ph}}) }}
  1157.                                     </div>
  1158.                                 {% endif %}
  1159.                                 {% if form.lastname is defined %}
  1160.                                     <div class="signup-field">
  1161.                                         {{ form_widget(form.lastname, {'attr': {'placeholder': t.signup_lastname_ph}}) }}
  1162.                                     </div>
  1163.                                 {% endif %}
  1164.                             </div>
  1165.                             {# Email pro #}
  1166.                             <div class="signup-field">
  1167.                                 {{ form_widget(form.email, {'attr': {'placeholder': t.signup_email_ph}}) }}
  1168.                             </div>
  1169.                             {# Mot de passe + confirmation #}
  1170.                             <div class="signup-row">
  1171.                                 <div class="signup-field">
  1172.                                     {{ form_widget(form.password.first, {'attr': {'placeholder': t.signup_pass_ph}}) }}
  1173.                                 </div>
  1174.                                 <div class="signup-field">
  1175.                                     {{ form_widget(form.password.second, {'attr': {'placeholder': t.signup_pass2_ph}}) }}
  1176.                                 </div>
  1177.                             </div>
  1178.                             <label class="signup-terms">
  1179.                                 {{ form_widget(form.acceptTerm) }}
  1180.                                 <span>
  1181.                                         {{ t.signup_terms_pre }}
  1182.                                         <a href="{% if isFR %}/fr/protections-donnees-recruteurs{% else %}/data-protection-recruiters{% endif %}" target="_blank" rel="noopener">{{ t.signup_terms_link }}</a>
  1183.                                         {{ t.signup_terms_and }}
  1184.                                         <a href="{% if isFR %}/fr/conditions-generales-vente{% else %}/general-terms{% endif %}" target="_blank" rel="noopener">{{ t.signup_terms_link2 }}</a>.
  1185.                                     </span>
  1186.                             </label>
  1187.                             {% if form.recaptcha is defined %}
  1188.                                 <div class="signup-recaptcha">{{ form_widget(form.recaptcha) }}</div>
  1189.                             {% endif %}
  1190.                             <button type="submit" class="signup-submit">
  1191.                                 {{ t.signup_btn }}
  1192.                                 <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>
  1193.                             </button>
  1194.                             <p class="signup-login">
  1195.                                 {{ t.signup_login_pre }}
  1196.                                 <a href="{% if isFR %}{{ path('locale_app_login',{'_locale':'fr'}) }}{% else %}{{ path('app_login') }}{% endif %}">{{ t.signup_login_link }}</a>
  1197.                             </p>
  1198.                             {{ form_rest(form) }}
  1199.                             {{ form_end(form) }}
  1200.                         {% endif %}
  1201.                     </div>
  1202.                 </div>
  1203.             </div>
  1204.         </section>
  1205.         {% endif %}
  1206.         {# ═══════════════ COMMENT ÇA MARCHE ═══════════════ #}
  1207.         <section class="wr-section">
  1208.             <div class="wr-container">
  1209.                 <div class="wr-section-head">
  1210.                     <h2 class="wr-title">{{ t.how_title }}</h2>
  1211.                 </div>
  1212.                 <div class="how-card">
  1213.                     <div class="how-step reveal" data-reveal-delay="1">
  1214.                         <div class="how-step-illu">
  1215.                             <img src="/uploads/rh/mascotte_register.png" alt="{{ t.how1_title }}" loading="lazy">
  1216.                         </div>
  1217.                         <h3 class="how-step-title">{{ t.how1_title }}</h3>
  1218.                         <p class="how-step-desc">{{ t.how1_desc }}</p>
  1219.                     </div>
  1220.                     <div class="how-step reveal" data-reveal-delay="2">
  1221.                         <div class="how-step-illu">
  1222.                             <img src="/uploads/rh/mascotte_upload2.png" alt="{{ t.how2_title }}" loading="lazy">
  1223.                         </div>
  1224.                         <h3 class="how-step-title">{{ t.how2_title }}</h3>
  1225.                         <p class="how-step-desc">{{ t.how2_desc }}</p>
  1226.                     </div>
  1227.                     <div class="how-step reveal" data-reveal-delay="3">
  1228.                         <div class="how-step-illu">
  1229.                             <img src="/uploads/rh/mascotte_reunion.png" alt="{{ t.how3_title }}" loading="lazy">
  1230.                         </div>
  1231.                         <h3 class="how-step-title">{{ t.how3_title }}</h3>
  1232.                         <p class="how-step-desc">{{ t.how3_desc }}</p>
  1233.                     </div>
  1234.                 </div>
  1235.             </div>
  1236.         </section>
  1237.         {# ═══════════════ FEATURES 01-04 ═══════════════ #}
  1238.         <section class="wr-section">
  1239.             <div class="wr-container">
  1240.                 {# Feature 01 — Filtrage par critères #}
  1241.                 <div class="feat-block reveal">
  1242.                     <div class="feat-illu">
  1243.                         <img src="/uploads/rh/mascotte_filtrage3.png" alt="{{ t.feat1_title }}" loading="lazy">
  1244.                     </div>
  1245.                     <div class="feat-content">
  1246.                         <span class="feat-label">{{ t.feat1_label }}</span>
  1247.                         <h3 class="feat-title">{{ t.feat1_title }}</h3>
  1248.                         <div class="feat-desc">
  1249.                             <p>{{ t.feat1_p1|raw }}</p>
  1250.                             <p>{{ t.feat1_p2|raw }}</p>
  1251.                         </div>
  1252.                         <div class="feat-quote">
  1253.                             <p class="feat-quote-text">{{ t.feat1_quote }}</p>
  1254.                             <div class="feat-quote-author">
  1255.                                 <p class="feat-quote-name">{{ t.feat1_author }}</p>
  1256.                                 <p class="feat-quote-role">{{ t.feat1_role }}</p>
  1257.                             </div>
  1258.                         </div>
  1259.                     </div>
  1260.                 </div>
  1261.                 {# Feature 02 — Optimisation intelligente #}
  1262.                 <div class="feat-block reveal">
  1263.                     <div class="feat-illu">
  1264.                         <img src="/uploads/rh/mascotte_upload.png" alt="{{ t.feat2_title }}" loading="lazy">
  1265.                     </div>
  1266.                     <div class="feat-content">
  1267.                         <span class="feat-label">{{ t.feat2_label }}</span>
  1268.                         <h3 class="feat-title">{{ t.feat2_title }}</h3>
  1269.                         <div class="feat-desc">
  1270.                             <p>{{ t.feat2_p1|raw }}</p>
  1271.                             <p>{{ t.feat2_p2|raw }}</p>
  1272.                         </div>
  1273.                         <div class="feat-quote">
  1274.                             <p class="feat-quote-text">{{ t.feat2_quote }}</p>
  1275.                             <div class="feat-quote-author">
  1276.                                 <p class="feat-quote-name">{{ t.feat2_author }}</p>
  1277.                                 <p class="feat-quote-role">{{ t.feat2_role }}</p>
  1278.                             </div>
  1279.                         </div>
  1280.                     </div>
  1281.                 </div>
  1282.                 {# Feature 03 — Recherche qualifiée #}
  1283.                 <div class="feat-block reveal">
  1284.                     <div class="feat-illu">
  1285.                         <img src="/uploads/rh/mascotte_register.png" alt="{{ t.feat3_title }}" loading="lazy">
  1286.                     </div>
  1287.                     <div class="feat-content">
  1288.                         <span class="feat-label">{{ t.feat3_label }}</span>
  1289.                         <h3 class="feat-title">{{ t.feat3_title }}</h3>
  1290.                         <div class="feat-desc">
  1291.                             <p>{{ t.feat3_p1|raw }}</p>
  1292.                             <p>{{ t.feat3_p2|raw }}</p>
  1293.                         </div>
  1294.                         <div class="feat-quote">
  1295.                             <p class="feat-quote-text">{{ t.feat3_quote }}</p>
  1296.                             <div class="feat-quote-author">
  1297.                                 <p class="feat-quote-name">{{ t.feat3_author }}</p>
  1298.                                 <p class="feat-quote-role">{{ t.feat3_role }}</p>
  1299.                             </div>
  1300.                         </div>
  1301.                     </div>
  1302.                 </div>
  1303.                 {# Feature 04 — Contact direct qualifié #}
  1304.                 <div class="feat-block reveal">
  1305.                     <div class="feat-illu">
  1306.                         <img src="/uploads/rh/mascotte_reunion.png" alt="{{ t.feat4_title }}" loading="lazy">
  1307.                     </div>
  1308.                     <div class="feat-content">
  1309.                         <span class="feat-label">{{ t.feat4_label }}</span>
  1310.                         <h3 class="feat-title">{{ t.feat4_title }}</h3>
  1311.                         <div class="feat-desc">
  1312.                             <p>{{ t.feat4_p1|raw }}</p>
  1313.                             <p>{{ t.feat4_p2|raw }}</p>
  1314.                         </div>
  1315.                         <div class="feat-quote">
  1316.                             <p class="feat-quote-text">{{ t.feat4_quote }}</p>
  1317.                             <div class="feat-quote-author">
  1318.                                 <p class="feat-quote-name">{{ t.feat4_author }}</p>
  1319.                                 <p class="feat-quote-role">{{ t.feat4_role }}</p>
  1320.                             </div>
  1321.                         </div>
  1322.                     </div>
  1323.                 </div>
  1324.             </div>
  1325.         </section>
  1326.         {% if app.user is null %}
  1327.         {# ═══════════════ PRICING ═══════════════ #}
  1328.         <section class="wr-section" id="pricing">
  1329.             <div class="wr-container">
  1330.                 <div class="wr-section-head">
  1331.                     <h2 class="wr-title">{{ t.pricing_title }}</h2>
  1332.                     <p class="wr-lede">{{ t.pricing_lede }}</p>
  1333.                 </div>
  1334.                 {# Première rangée : Gratuit + Unique #}
  1335.                 <div class="pricing-grid pricing-grid--2">
  1336.                     {# Tier 1 - Gratuit #}
  1337.                     <div class="pricing-card reveal" data-reveal-delay="1">
  1338.                         <div class="pricing-head">
  1339.                             <h3 class="pricing-name">{{ t.pricing1_name }}</h3>
  1340.                             <p class="pricing-desc">{{ t.pricing1_desc }}</p>
  1341.                         </div>
  1342.                         <div class="pricing-price">
  1343.                             <span class="pricing-price-amount">{{ t.pricing1_price }}</span>
  1344.                             <span class="pricing-price-unit">{{ t.pricing1_unit }}</span>
  1345.                         </div>
  1346.                         <ul class="pricing-features">
  1347.                             <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>
  1348.                             <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>
  1349.                             <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>
  1350.                             <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>
  1351.                             <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>
  1352.                         </ul>
  1353.                         <a href="#wr-signup" class="pricing-cta">
  1354.                             {{ t.pricing1_cta }}
  1355.                             <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>
  1356.                         </a>
  1357.                         <p class="pricing-note">{{ t.pricing1_note }}</p>
  1358.                     </div>
  1359.                     {# Tier 2 - Unique #}
  1360.                     <div class="pricing-card reveal" data-reveal-delay="2">
  1361.                         <div class="pricing-head">
  1362.                             <h3 class="pricing-name">{{ t.pricing2_name }}</h3>
  1363.                             <p class="pricing-desc">{{ t.pricing2_desc }}</p>
  1364.                         </div>
  1365.                         <div class="pricing-price">
  1366.                             <span class="pricing-price-amount">{{ t.pricing2_price }}</span>
  1367.                             <span class="pricing-price-unit">{{ t.pricing2_unit }}</span>
  1368.                         </div>
  1369.                         <ul class="pricing-features">
  1370.                             <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>
  1371.                             <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>
  1372.                             <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>
  1373.                             <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>
  1374.                             <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>
  1375.                         </ul>
  1376.                         <a href="#wr-signup" class="pricing-cta">
  1377.                             {{ t.pricing2_cta }}
  1378.                             <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>
  1379.                         </a>
  1380.                         <p class="pricing-note">{{ t.pricing2_note }}</p>
  1381.                     </div>
  1382.                 </div>
  1383.                 {# Deuxième rangée : Business (populaire) + Business+ #}
  1384.                 <div class="pricing-grid pricing-grid--2 pricing-grid--mt">
  1385.                     {# Tier 3 - Business (featured) #}
  1386.                     <div class="pricing-card pricing-card--featured reveal" data-reveal-delay="1">
  1387.                         <span class="pricing-badge">{{ isFR ? 'Populaire' : 'Popular' }}</span>
  1388.                         <div class="pricing-head">
  1389.                             <h3 class="pricing-name">{{ t.pricing3_name }}</h3>
  1390.                             <p class="pricing-desc">{{ t.pricing3_desc }}</p>
  1391.                         </div>
  1392.                         <div class="pricing-price">
  1393.                             <span class="pricing-price-amount">{{ t.pricing3_price }}</span>
  1394.                             {% if t.pricing3_price_old %}<span class="pricing-price-old">{{ t.pricing3_price_old }}</span>{% endif %}
  1395.                             <span class="pricing-price-unit">{{ t.pricing3_unit }}</span>
  1396.                         </div>
  1397.                         <a href="#wr-signup" class="pricing-cta">
  1398.                             {{ t.pricing3_cta }}
  1399.                             <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>
  1400.                         </a>
  1401.                         <p class="pricing-note">{{ t.pricing3_note }}</p>
  1402.                         <ul class="pricing-features">
  1403.                             <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>
  1404.                             <li class="pricing-plus">{{ t.pricing_plus }}</li>
  1405.                             <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>
  1406.                             <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>
  1407.                             <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>
  1408.                             <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>
  1409.                             <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>
  1410.                             <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>
  1411.                         </ul>
  1412.                     </div>
  1413.                     {# Tier 4 - Business+ (Sur devis) #}
  1414.                     <div class="pricing-card reveal" data-reveal-delay="2">
  1415.                         <div class="pricing-head">
  1416.                             <h3 class="pricing-name">{{ t.pricing4_name }}</h3>
  1417.                             <p class="pricing-desc">{{ t.pricing4_desc }}</p>
  1418.                         </div>
  1419.                         <div class="pricing-price">
  1420.                             <span class="pricing-price-amount pricing-price-amount--quote">{{ t.pricing4_price }}</span>
  1421.                         </div>
  1422.                         <a href="mailto:contact@whileresume.com?subject={{ t.pricing4_cta|url_encode }}" class="pricing-cta">
  1423.                             {{ t.pricing4_cta }}
  1424.                             <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>
  1425.                         </a>
  1426.                         <p class="pricing-note">{{ t.pricing4_note }}</p>
  1427.                         <ul class="pricing-features">
  1428.                             <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>
  1429.                             <li class="pricing-plus">{{ t.pricing_plus }}</li>
  1430.                             <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>
  1431.                             <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>
  1432.                             <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>
  1433.                             <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>
  1434.                             <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>
  1435.                             <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>
  1436.                             <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>
  1437.                             <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>
  1438.                             <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>
  1439.                             <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>
  1440.                         </ul>
  1441.                     </div>
  1442.                 </div>
  1443.             </div>
  1444.         </section>
  1445.         {% endif %}
  1446.         {# ═══════════════ COMPARISON ═══════════════ #}
  1447.         <section class="wr-section">
  1448.             <div class="wr-container">
  1449.                 <div class="wr-section-head">
  1450.                     <h2 class="wr-title">{{ t.compare_title }}</h2>
  1451.                 </div>
  1452.                 <div class="compare-cards">
  1453.                     {# Card 1 - Whileresume #}
  1454.                     <div class="compare-card compare-card--featured reveal" data-reveal-delay="1">
  1455.                         <div class="compare-card-head">
  1456.                             <img class="compare-card-logo" src="https://whileresume.com/uploads/favicon.png" alt="Whileresume">
  1457.                             <h3 class="compare-card-title">{{ t.compare_us_rank }} {{ t.compare_us_name }}</h3>
  1458.                         </div>
  1459.                         <div class="compare-card-body">
  1460.                             <div class="compare-row">
  1461.                                 <p class="compare-row-label">{{ t.compare_row1_label }}</p>
  1462.                                 <p class="compare-row-value compare-row-value--good">
  1463.                                     <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>
  1464.                                     {{ t.compare_row1_us }}
  1465.                                 </p>
  1466.                             </div>
  1467.                             <div class="compare-row">
  1468.                                 <p class="compare-row-label">{{ t.compare_row2_label }}</p>
  1469.                                 <p class="compare-row-value compare-row-value--good">
  1470.                                     <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>
  1471.                                     {{ t.compare_row2_us }}
  1472.                                 </p>
  1473.                             </div>
  1474.                             <div class="compare-row">
  1475.                                 <p class="compare-row-label">{{ t.compare_row3_label }}</p>
  1476.                                 <p class="compare-row-value compare-row-value--good">
  1477.                                     <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>
  1478.                                     {{ t.compare_row3_us }}
  1479.                                 </p>
  1480.                             </div>
  1481.                             <div class="compare-row">
  1482.                                 <p class="compare-row-label">{{ t.compare_row4_label }}</p>
  1483.                                 <p class="compare-row-value compare-row-value--good">
  1484.                                     <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>
  1485.                                     {{ t.compare_row4_us }}
  1486.                                 </p>
  1487.                             </div>
  1488.                             <div class="compare-row">
  1489.                                 <p class="compare-row-label">{{ t.compare_row5_label }}</p>
  1490.                                 <p class="compare-row-value compare-row-value--good">
  1491.                                     <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>
  1492.                                     {{ t.compare_row5_us }}
  1493.                                 </p>
  1494.                             </div>
  1495.                         </div>
  1496.                     </div>
  1497.                     {# Card 2 - LinkedIn #}
  1498.                     <div class="compare-card reveal" data-reveal-delay="2">
  1499.                         <div class="compare-card-head">
  1500.                             <img class="compare-card-logo" src="/images/linkedin.png" alt="LinkedIn">
  1501.                             <h3 class="compare-card-title">{{ t.compare_linkedin_rank }} {{ t.compare_linkedin_name }}</h3>
  1502.                         </div>
  1503.                         <div class="compare-card-body">
  1504.                             <div class="compare-row">
  1505.                                 <p class="compare-row-label">{{ t.compare_row1_label }}</p>
  1506.                                 <p class="compare-row-value compare-row-value--warn">
  1507.                                     <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>
  1508.                                     {{ t.compare_row1_linkedin }}
  1509.                                 </p>
  1510.                             </div>
  1511.                             <div class="compare-row">
  1512.                                 <p class="compare-row-label">{{ t.compare_row2_label }}</p>
  1513.                                 <p class="compare-row-value compare-row-value--bad">
  1514.                                     <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>
  1515.                                     {{ t.compare_row2_linkedin }}
  1516.                                 </p>
  1517.                             </div>
  1518.                             <div class="compare-row">
  1519.                                 <p class="compare-row-label">{{ t.compare_row3_label }}</p>
  1520.                                 <p class="compare-row-value compare-row-value--warn">
  1521.                                     <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>
  1522.                                     {{ t.compare_row3_linkedin }}
  1523.                                 </p>
  1524.                             </div>
  1525.                             <div class="compare-row">
  1526.                                 <p class="compare-row-label">{{ t.compare_row4_label }}</p>
  1527.                                 <p class="compare-row-value compare-row-value--warn">
  1528.                                     <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>
  1529.                                     {{ t.compare_row4_linkedin }}
  1530.                                 </p>
  1531.                             </div>
  1532.                             <div class="compare-row">
  1533.                                 <p class="compare-row-label">{{ t.compare_row5_label }}</p>
  1534.                                 <p class="compare-row-value compare-row-value--good">
  1535.                                     <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>
  1536.                                     {{ t.compare_row5_linkedin }}
  1537.                                 </p>
  1538.                             </div>
  1539.                         </div>
  1540.                     </div>
  1541.                     {# Card 3 - Indeed #}
  1542.                     <div class="compare-card reveal" data-reveal-delay="3">
  1543.                         <div class="compare-card-head">
  1544.                             <img class="compare-card-logo" src="/images/indeed.png" alt="Indeed">
  1545.                             <h3 class="compare-card-title">{{ t.compare_indeed_rank }} {{ t.compare_indeed_name }}</h3>
  1546.                         </div>
  1547.                         <div class="compare-card-body">
  1548.                             <div class="compare-row">
  1549.                                 <p class="compare-row-label">{{ t.compare_row1_label }}</p>
  1550.                                 <p class="compare-row-value compare-row-value--warn">
  1551.                                     <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>
  1552.                                     {{ t.compare_row1_indeed }}
  1553.                                 </p>
  1554.                             </div>
  1555.                             <div class="compare-row">
  1556.                                 <p class="compare-row-label">{{ t.compare_row2_label }}</p>
  1557.                                 <p class="compare-row-value compare-row-value--bad">
  1558.                                     <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>
  1559.                                     {{ t.compare_row2_indeed }}
  1560.                                 </p>
  1561.                             </div>
  1562.                             <div class="compare-row">
  1563.                                 <p class="compare-row-label">{{ t.compare_row3_label }}</p>
  1564.                                 <p class="compare-row-value compare-row-value--warn">
  1565.                                     <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>
  1566.                                     {{ t.compare_row3_indeed }}
  1567.                                 </p>
  1568.                             </div>
  1569.                             <div class="compare-row">
  1570.                                 <p class="compare-row-label">{{ t.compare_row4_label }}</p>
  1571.                                 <p class="compare-row-value compare-row-value--warn">
  1572.                                     <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>
  1573.                                     {{ t.compare_row4_indeed }}
  1574.                                 </p>
  1575.                             </div>
  1576.                             <div class="compare-row">
  1577.                                 <p class="compare-row-label">{{ t.compare_row5_label }}</p>
  1578.                                 <p class="compare-row-value compare-row-value--bad">
  1579.                                     <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>
  1580.                                     {{ t.compare_row5_indeed }}
  1581.                                 </p>
  1582.                             </div>
  1583.                         </div>
  1584.                     </div>
  1585.                 </div>
  1586.             </div>
  1587.         </section>
  1588.         {# ═══════════════ ARTICLES ═══════════════ #}
  1589.         {% if articles is defined and articles|length > 0 %}
  1590.             <section class="wr-section">
  1591.                 <div class="wr-container">
  1592.                     <div class="wr-section-head">
  1593.                         <h2 class="wr-title wr-title--sm">{{ t.articles_title }}</h2>
  1594.                     </div>
  1595.                     <div class="articles-list">
  1596.                         {% for a in articles|slice(0,6) %}
  1597.                             {% set prefix = "" %}
  1598.                             {% set urlA = path('cvs_website_article',{'slug': a.slug}) %}
  1599.                             {% if app.request.locale != default_locale %}
  1600.                                 {% set urlA = path('locale_cvs_website_article',{'_locale':app.request.locale,'slug': a.slug}) %}
  1601.                                 {% set prefix = "/" ~ app.request.locale %}
  1602.                             {% endif %}
  1603.                             {% if a.pageslug3 is not empty %}
  1604.                                 {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 ~ '/' ~ a.pageslug3 %}
  1605.                             {% elseif a.pageslug2 is not empty %}
  1606.                                 {% set urlA = prefix ~ '/' ~ a.pageslug ~ '/' ~ a.pageslug2 %}
  1607.                             {% elseif a.pageslug is not empty %}
  1608.                                 {% set urlA = prefix ~ '/' ~ a.pageslug %}
  1609.                             {% endif %}
  1610.                             <a href="{{ urlA }}" class="wr-article">
  1611.                                 <div class="wr-article-logo">
  1612.                                     <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1613.                                         <path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/>
  1614.                                         <path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/>
  1615.                                     </svg>
  1616.                                 </div>
  1617.                                 <div class="wr-article-info">
  1618.                                     <h3 class="wr-article-title">{{ a.title }}</h3>
  1619.                                     <div class="wr-article-meta">
  1620.                                         {% if a.subtitle is not empty %}
  1621.                                             <span>{{ a.subtitle|length > 60 ? a.subtitle|slice(0,60) ~ '…' : a.subtitle }}</span>
  1622.                                         {% endif %}
  1623.                                     </div>
  1624.                                 </div>
  1625.                                 <span class="wr-article-badge">{{ t.read_article }}</span>
  1626.                                 <span class="wr-article-arrow">
  1627.                                 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1628.                                     <polyline points="9 18 15 12 9 6"/>
  1629.                                 </svg>
  1630.                             </span>
  1631.                             </a>
  1632.                         {% endfor %}
  1633.                     </div>
  1634.                     <div class="articles-cta">
  1635.                         <a href="{% if isFR %}{{ path('locale_cvs_website_articles',{'_locale':'fr'}) }}{% else %}{{ path('cvs_website_articles') }}{% endif %}">
  1636.                             {{ t.articles_view_all }}
  1637.                             <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>
  1638.                         </a>
  1639.                     </div>
  1640.                 </div>
  1641.             </section>
  1642.         {% endif %}
  1643.         {# ═══════════════ FAQ ═══════════════ #}
  1644.         <section class="wr-section" id="faq">
  1645.             <div class="wr-container">
  1646.                 <div class="wr-section-head">
  1647.                     <h2 class="wr-title">{{ t.faq_title }}</h2>
  1648.                     <p class="wr-lede">{{ t.faq_lede }}</p>
  1649.                 </div>
  1650.                 <div class="faq-list">
  1651.                     <details class="faq-item reveal" data-reveal-delay="1">
  1652.                         <summary class="faq-q">
  1653.                             <span>{{ t.faq_q1 }}</span>
  1654.                             <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>
  1655.                         </summary>
  1656.                         <div class="faq-a"><p>{{ t.faq_a1 }}</p></div>
  1657.                     </details>
  1658.                     <details class="faq-item reveal" data-reveal-delay="2">
  1659.                         <summary class="faq-q">
  1660.                             <span>{{ t.faq_q2 }}</span>
  1661.                             <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>
  1662.                         </summary>
  1663.                         <div class="faq-a"><p>{{ t.faq_a2 }}</p></div>
  1664.                     </details>
  1665.                     <details class="faq-item reveal" data-reveal-delay="3">
  1666.                         <summary class="faq-q">
  1667.                             <span>{{ t.faq_q3 }}</span>
  1668.                             <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>
  1669.                         </summary>
  1670.                         <div class="faq-a"><p>{{ t.faq_a3 }}</p></div>
  1671.                     </details>
  1672.                 </div>
  1673.             </div>
  1674.         </section>
  1675.     </div>
  1676. {% endblock body %}
  1677. {% block footer_js %}
  1678.     {{ parent() }}
  1679.     <script>
  1680.         /* ═══ Reveal au scroll (Intersection Observer) ═══ */
  1681.         (function(){
  1682.             var els = document.querySelectorAll('.reveal');
  1683.             if (!els.length) return;
  1684.             if (!('IntersectionObserver' in window)){
  1685.                 // Fallback : tout révéler
  1686.                 els.forEach(function(el){ el.classList.add('is-revealed'); });
  1687.                 return;
  1688.             }
  1689.             var io = new IntersectionObserver(function(entries){
  1690.                 entries.forEach(function(entry){
  1691.                     if (entry.isIntersecting){
  1692.                         entry.target.classList.add('is-revealed');
  1693.                         io.unobserve(entry.target);
  1694.                     }
  1695.                 });
  1696.             }, { threshold: 0.12, rootMargin: '0px 0px -60px 0px' });
  1697.             els.forEach(function(el){ io.observe(el); });
  1698.         })();
  1699.     </script>
  1700. {% endblock footer_js %}