{"id":585,"date":"2026-09-24T10:00:06","date_gmt":"2026-09-24T08:00:06","guid":{"rendered":"https:\/\/wegetfunded.com\/?p=585"},"modified":"2026-09-27T15:37:15","modified_gmt":"2026-09-27T13:37:15","slug":"test-profil-trader","status":"publish","type":"post","link":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/","title":{"rendered":"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded"},"content":{"rendered":"\n<style data-wgf-quiz-css>\n\/* Quiz profil trader, prototype FR local 24\/09\/2026.\n   M\u00eames jetons que le configurateur publi\u00e9 (noir chaud, Mona Sans, un seul violet) pour que le\n   passage quiz, inscription, configurateur se lise comme un seul parcours. *\/\n@font-face { font-family: 'Mona Sans'; src: url('\/wp-content\/uploads\/fonts\/mona-sans.woff2') format('woff2'); font-weight: 200 900; font-display: swap; }\n:root {\n  --bg: #17131c; --bg-2: #211c28; --bg-3: #2a2433; --line: #59545f; --line-2: #3b3644;\n  --ink: #f4f1f8; --ink-2: #d6d5dd; --ink-3: #b5aec0; --violet: #7540be; --violet-2: #6231a5; --violet-ink: #d5b7ff; --lilac: #bb8dfa;\n}\n* { box-sizing: border-box; }\n[hidden] { display: none !important; }\nhtml { background: var(--bg); color: var(--ink); font-family: 'Mona Sans', system-ui, sans-serif; -webkit-text-size-adjust: 100%; }\nbody { margin: 0; min-height: 100dvh; }\n.q { display: flex; flex-direction: column; min-height: 100dvh; }\n.q__head { padding: 14px 18px 0; }\n.q__logo { height: 26px; width: auto; }\n.q__main { flex: 1; padding: 20px 18px 28px; max-width: 640px; width: 100%; margin: 0 auto; }\n.q__screen { display: flex; flex-direction: column; gap: 14px; animation: qin .25s ease both; }\n@keyframes qin { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }\n.q__kicker { margin: 0; font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--lilac); }\n.q__title { margin: 0; font-size: clamp(28px, 7.4vw, 44px); line-height: 1.08; letter-spacing: -.025em; text-wrap: balance; outline: none; }\n.q__title--q { font-size: clamp(22px, 6vw, 32px); }\n.q__lead { margin: 0; font-size: 16px; line-height: 1.5; color: var(--ink-2); }\n.q__hook { margin: 0; font-size: 19px; line-height: 1.35; font-weight: 600; color: var(--violet-ink); }\n.q__progress { height: 6px; border-radius: 3px; background: var(--line-2); overflow: hidden; }\n.q__progress span { display: block; height: 100%; width: 0; background: var(--lilac); transition: width .25s ease; }\n.q__answers { display: grid; gap: 10px; }\n.q__answer { text-align: left; font: inherit; font-size: 16px; line-height: 1.35; color: var(--ink); background: var(--bg-2); border: 1px solid var(--line-2); border-radius: 12px; padding: 16px; min-height: 56px; cursor: pointer; }\n.q__answer:hover, .q__answer:focus-visible { border-color: var(--lilac); outline: none; }\n.q__answer[aria-pressed=\"true\"] { border-color: var(--violet-ink); background: var(--bg-3); }\n.q__cta { display: flex; align-items: center; justify-content: center; text-align: center; min-height: 54px; padding: 0 20px; border: 0; border-radius: 12px; background: var(--violet); color: #fff; font: inherit; font-size: 17px; font-weight: 700; text-decoration: none; cursor: pointer; }\n.q__cta:hover, .q__cta:focus-visible { background: var(--violet-2); outline: 2px solid var(--violet-ink); outline-offset: 2px; }\n.q__ghost { display: flex; align-items: center; justify-content: center; min-height: 48px; border: 1px solid var(--line); border-radius: 12px; background: transparent; color: var(--ink); font: inherit; font-size: 15px; text-decoration: none; cursor: pointer; }\n.q__link { align-self: flex-start; background: none; border: 0; color: var(--ink-3); font: inherit; font-size: 14px; text-decoration: underline; cursor: pointer; min-height: 40px; padding: 0; }\n.q__note { margin: 0; font-size: 13px; line-height: 1.5; color: var(--ink-3); }\n.q__note a { color: var(--ink-2); }\n.q__card { background: var(--bg-2); border: 1px solid var(--line-2); border-left: 4px solid var(--lilac); border-radius: 12px; padding: 16px; }\n.q__card-label { margin: 0 0 6px; font-size: 13px; color: var(--ink-3); }\n.q__card-product { margin: 0 0 8px; font-size: 20px; font-weight: 700; line-height: 1.25; }\n.q__card-why { margin: 0; font-size: 15px; line-height: 1.5; color: var(--ink-2); }\n.q__common { font-size: 15px; line-height: 1.5; color: var(--ink-2); }\n.q__common-title { margin: 0 0 6px; font-weight: 600; color: var(--ink); }\n.q__common ul { margin: 0; padding-left: 20px; }\n.q__mentions { margin: 0; padding: 0 18px 18px; font-size: 12px; line-height: 1.5; color: var(--ink-3); text-align: center; }\n.q__card-price { margin: 12px 0 4px; font-size: 16px; line-height: 1.4; color: var(--ink); }\n.q__card-price strong { font-size: 22px; font-weight: 800; letter-spacing: -.01em; }\n.q__card-price s { color: var(--ink-3); }\n.q__card-fee { font-size: 13px; color: var(--ink-3); }\n.q__card-price[hidden], .q__card-fee[hidden] { display: none; }\n\nbody{background:var(--bg);color:var(--ink);font-family:\"Mona Sans\",system-ui,sans-serif}.wp-site-blocks{padding:0;margin:0}.wp-site-blocks>.wp-block-post-content{margin:0}.q__legal{display:flex;flex-wrap:wrap;gap:4px 16px;padding:0 18px 8px;font-size:12px;justify-content:center}.q__legal a{color:var(--ink-3);min-height:32px;display:inline-flex;align-items:center}.q__legal-notice{padding:0 18px 10px;font-size:12px;color:var(--ink-3)}.q__legal-notice summary{min-height:32px;cursor:pointer}\n\n<\/style>\n\n<div class=\"q\" data-wgf-quiz data-locale=\"fr\" data-lp-id=\"quiz-profil-fr\" data-lp-family=\"quiz\" data-lp-version=\"20260927-quiz-profil-r06\">\n<header class=\"q__head\">\n  <img decoding=\"async\" src=\"\/logos\/wgf-logo.svg\" alt=\"WeGetFunded\" class=\"q__logo\" onerror=\"this.replaceWith(Object.assign(document.createElement('strong'),{textContent:'WeGetFunded',className:'q__logo'}))\">\n<\/header>\n<main class=\"q__main\">\n\n  <section class=\"q__screen\" data-screen=\"intro\" aria-labelledby=\"q-intro\">\n    <p class=\"q__kicker\">Test \u00b7 7 questions \u00b7 1 minute<\/p>\n    <h1 id=\"q-intro\" class=\"q__title\">Quel trader de prop firm \u00eates-vous ?<\/h1>\n    <p class=\"q__lead\">Sept questions sur votre fa\u00e7on de trader. \u00c0 la fin, votre profil et le challenge WeGetFunded qui lui correspond, d\u00e9j\u00e0 configur\u00e9.<\/p>\n    <button type=\"button\" class=\"q__cta\" data-start>Commencer le test<\/button>\n    <p class=\"q__note\">Vos r\u00e9ponses restent dans votre navigateur. Elles servent uniquement \u00e0 calculer votre profil. <a href=\"\/fr\/legal\/privacy\">Politique de confidentialit\u00e9<\/a><\/p>\n  <\/section>\n\n  <section class=\"q__screen\" data-screen=\"question\" aria-labelledby=\"q-text\" hidden>\n    <div class=\"q__progress\" aria-hidden=\"true\"><span data-q-progress><\/span><\/div>\n    <p class=\"q__kicker\" data-q-count>Question 1 sur 7<\/p>\n    <h2 id=\"q-text\" class=\"q__title q__title--q\" data-q-text><\/h2>\n    <div class=\"q__answers\" data-q-answers><\/div>\n    <button type=\"button\" class=\"q__ghost\" data-q-back hidden>Question pr\u00e9c\u00e9dente<\/button>\n  <\/section>\n\n  <section class=\"q__screen\" data-screen=\"gate\" aria-labelledby=\"q-gate\" hidden>\n    <p class=\"q__kicker\">R\u00e9sultat calcul\u00e9<\/p>\n    <h2 id=\"q-gate\" class=\"q__title\">Votre profil est pr\u00eat.<\/h2>\n    <p class=\"q__lead\">Cr\u00e9ez votre compte WeGetFunded pour le voir, avec le challenge qui lui correspond d\u00e9j\u00e0 configur\u00e9. Il suffit d\u2019un e-mail et d\u2019un mot de passe.<\/p>\n    <a class=\"q__cta\" data-gate-signup href=\"\/fr\/auth\/signup\">Cr\u00e9er mon compte et voir mon r\u00e9sultat<\/a>\n    <a class=\"q__ghost\" data-gate-login href=\"\/fr\/auth\/login\">J\u2019ai d\u00e9j\u00e0 un compte<\/a>\n    <p class=\"q__note\">Aucun paiement n\u2019est demand\u00e9 pour voir votre r\u00e9sultat.<\/p>\n  <\/section>\n\n  <section class=\"q__screen\" data-screen=\"loading\" aria-labelledby=\"q-loading\" hidden>\n    <h2 id=\"q-loading\" class=\"q__title q__title--q\">Chargement de votre r\u00e9sultat\u2026<\/h2>\n  <\/section>\n\n  <section class=\"q__screen\" data-screen=\"result\" aria-labelledby=\"q-result\" hidden>\n    <p class=\"q__kicker\">Votre profil<\/p>\n    <h2 id=\"q-result\" class=\"q__title\" data-r-name><\/h2>\n    <p class=\"q__hook\" data-r-hook><\/p>\n    <p class=\"q__lead\" data-r-text><\/p>\n    <div class=\"q__card\">\n      <p class=\"q__card-label\">Le challenge qui vous correspond<\/p>\n      <p class=\"q__card-product\" data-r-product><\/p>\n      <p class=\"q__card-why\" data-r-why><\/p>\n      <p class=\"q__card-why\" data-r-setup><\/p>\n      <p class=\"q__card-price\" data-r-price hidden><\/p>\n      <p class=\"q__card-why q__card-fee\" data-r-fee hidden><\/p>\n    <\/div>\n    <a class=\"q__cta\" data-r-cta href=\"https:\/\/wegetfunded.com\/fr\/blog\/configurer-mon-challenge\/\">Configurer mon challenge<\/a>\n    <div class=\"q__common\">\n      <p class=\"q__common-title\">Chez WeGetFunded, quel que soit votre challenge :<\/p>\n      <ul>\n        <li>Trading pendant les annonces \u00e9conomiques autoris\u00e9.<\/li>\n        <li>Positions conserv\u00e9es la nuit et le week-end.<\/li>\n        <li>Aucun stop-loss impos\u00e9.<\/li>\n        <li data-r-nolimit>Aucune limite de temps pour r\u00e9ussir votre challenge.<\/li>\n      <\/ul>\n    <\/div>\n    <a class=\"q__ghost\" href=\"https:\/\/wegetfunded.com\/fr\/blog\/configurer-mon-challenge\/\">Voir tous les challenges<\/a>\n    <p class=\"q__note\">Le profil d\u00e9crit une mani\u00e8re de trader, pas une chance de r\u00e9ussite. Les comptes WeGetFunded sont des comptes de d\u00e9monstration ; les profits sont simul\u00e9s.<\/p>\n    <button type=\"button\" class=\"q__link\" data-restart>Refaire le test<\/button>\n  <\/section>\n\n  <section class=\"q__screen\" data-screen=\"error\" aria-labelledby=\"q-error\" hidden>\n    <h2 id=\"q-error\" class=\"q__title q__title--q\">R\u00e9sultat indisponible<\/h2>\n    <p class=\"q__lead\">Ce lien de r\u00e9sultat n\u2019est pas valide. Vous pouvez refaire le test en une minute.<\/p>\n    <button type=\"button\" class=\"q__cta\" data-restart>Refaire le test<\/button>\n  <\/section>\n\n  <noscript><p class=\"q__lead\">Ce test n\u00e9cessite JavaScript.<\/p><\/noscript>\n<\/main>\n<nav class=\"q__legal\" aria-label=\"Informations l\u00e9gales\"><a href=\"\/fr\/legal\/privacy\">Confidentialit\u00e9<\/a><a href=\"\/fr\/legal\/terms\">Conditions g\u00e9n\u00e9rales<\/a><a href=\"\/fr\/legal\/risk-disclosure\">Risques<\/a><a href=\"\/fr\/legal\/cookies\">Cookies<\/a><\/nav>\n<details class=\"q__legal-notice\"><summary>Mentions l\u00e9gales<\/summary>\n\n<p>Les activit\u00e9s de trading sur cette plateforme sont ex\u00e9cut\u00e9es uniquement par WeGetFunded LTD. en utilisant des fonds virtuels dans un environnement simul\u00e9 et ne comportent aucun risque financier r\u00e9el ni trading avec de v\u00e9ritables instruments financiers. WeGetFunded LTD. est une soci\u00e9t\u00e9 enregistr\u00e9e conform\u00e9ment aux lois de Sainte-Lucie, avec le num\u00e9ro d&#x27;enregistrement 2025-00757, et a son si\u00e8ge social au rez-de-chauss\u00e9e, The Sotheby Building, Rodney Village, Rodney Bay, Gros-Islet, Sainte-Lucie. Le bien lou\u00e9 est un bureau situ\u00e9 au 24 Ketevan Tsamebuli Ave, Office 4, Tbilissi 0103, G\u00e9orgie. Le site web wegetfunded.com est exploit\u00e9 par WeGetFunded LTD.<\/p>\n\n\n<p>Divulgation l\u00e9gale : WeGetFunded Ltd. fournit un acc\u00e8s \u00e0 des programmes de trading simul\u00e9s con\u00e7us uniquement pour l&#x27;\u00e9valuation des comp\u00e9tences en trading et en gestion des risques. Toutes les transactions ont lieu dans un environnement de d\u00e9monstration utilisant du capital virtuel.<\/p>\n\n\n<p>Aucun fonds client \/ Aucun trading en direct : WeGetFunded n&#x27;est pas un courtier, un n\u00e9gociant, une bourse ou un conseiller en investissement, et n&#x27;accepte ni ne g\u00e8re les d\u00e9p\u00f4ts des clients. Les participants ne tradent pas d&#x27;actifs r\u00e9els et ne passent pas d&#x27;ordres de march\u00e9 en direct. Toute r\u00e9compense est bas\u00e9e sur la performance et d\u00e9riv\u00e9e uniquement des r\u00e9sultats d&#x27;\u00e9valuation. Seul le Programme Live, r\u00e9serv\u00e9 aux traders s\u00e9lectionn\u00e9s apr\u00e8s la phase financ\u00e9e, s&#x27;ex\u00e9cute sur du capital r\u00e9el fourni par WeGetFunded, selon ses propres conditions.<\/p>\n\n\n<p>Usage d&#x27;\u00e9valuation uniquement : Tout contenu, outil et service est fourni uniquement \u00e0 des fins d&#x27;\u00e9valuation et d&#x27;appr\u00e9ciation et ne doit pas \u00eatre interpr\u00e9t\u00e9 comme un conseil en investissement, une sollicitation ou une offre d&#x27;achat ou de vente de tout produit financier, cryptomonnaie ou d\u00e9riv\u00e9. Les participants sont encourag\u00e9s \u00e0 consulter des conseillers financiers, juridiques ou fiscaux ind\u00e9pendants avant de s&#x27;engager dans toute activit\u00e9 de trading en dehors de ce programme.<\/p>\n\n\n<p>Divulgation de performance hypoth\u00e9tique : R\u00e8gle CFTC 4.41 : Les r\u00e9sultats de trading simul\u00e9s ou hypoth\u00e9tiques pr\u00e9sentent des limites inh\u00e9rentes. Contrairement aux enregistrements de performance r\u00e9els, ils ne repr\u00e9sentent pas une activit\u00e9 de trading r\u00e9elle et peuvent \u00eatre con\u00e7us avec le b\u00e9n\u00e9fice du recul. Aucune d\u00e9claration n&#x27;est faite selon laquelle un compte atteindra, ou est susceptible d&#x27;atteindre, des profits ou des pertes similaires \u00e0 ceux pr\u00e9sent\u00e9s ou impliqu\u00e9s.<\/p>\n\n\n<p>Restrictions juridictionnelles : WeGetFunded Ltd. n&#x27;offre pas de services aux r\u00e9sidents des juridictions suivantes : Russie, Myanmar, Iran, Soudan, Syrie, Cor\u00e9e du Nord, Afghanistan, Albanie, Bi\u00e9lorussie, R\u00e9publique centrafricaine, Cuba, R\u00e9publique d\u00e9mocratique du Congo, \u00c9thiopie, Liban, Libye, Mali, Nicaragua, Somalie, Soudan du Sud, Ukraine, Venezuela, Y\u00e9men, Zimbabwe, Bangladesh.<\/p>\n\n\n<p>Avertissement sur les risques : Le trading sur les march\u00e9s de contrats \u00e0 terme, de d\u00e9riv\u00e9s et d&#x27;actifs num\u00e9riques comporte un risque substantiel de perte. Les performances pass\u00e9es ne pr\u00e9jugent pas des r\u00e9sultats futurs.<\/p>\n\n\n<p>Paiements et remboursements : Tous les frais d&#x27;\u00e9valuation pay\u00e9s sont strictement destin\u00e9s \u00e0 des fins d&#x27;\u00e9valuation et pour l&#x27;acc\u00e8s \u00e0 nos services d&#x27;\u00e9valuation.<\/p>\n\n\n<p>Pas un d\u00e9p\u00f4t | Pas assur\u00e9 FDIC | Peut perdre de la valeur<\/p>\n\n<\/details>\n<p class=\"q__mentions\">Capital simul\u00e9, comptes de d\u00e9monstration. R\u00e9compenses selon les r\u00e8gles du programme. Le trading comporte des risques.<\/p>\n<\/div>\n\n\n\n<script data-wgf-module=\"textes.js\">\n\/* G\u00e9n\u00e9r\u00e9 par construire.py depuis textes.json, ne pas \u00e9diter. *\/\n(function () {\n  var T = {\"js\": {\"fr\": {\"count\": \"Question {n} sur {t}\", \"setup\": \"Capital simul\u00e9 propos\u00e9 : {capital}\", \"money\": \"{n} $\", \"questions\": [[\"O\u00f9 en \u00eates-vous avec les prop firms ?\", [\"Je d\u00e9couvre, je n\u2019ai jamais pass\u00e9 de challenge\", \"J\u2019ai d\u00e9j\u00e0 tent\u00e9 un challenge, sans le r\u00e9ussir\", \"J\u2019ai d\u00e9j\u00e0 r\u00e9ussi un challenge ailleurs\", \"J\u2019ai d\u00e9j\u00e0 un compte chez une autre prop firm\"]], [\"Combien de temps gardez-vous une position, en g\u00e9n\u00e9ral ?\", [\"Quelques minutes\", \"Quelques heures, je ferme le soir\", \"Plusieurs jours, parfois le week-end\", \"\u00c7a d\u00e9pend du march\u00e9\"]], [\"Sur une bonne semaine, d\u2019o\u00f9 viennent vos r\u00e9sultats ?\", [\"Un peu chaque jour\", \"D\u2019une ou deux grosses journ\u00e9es\", \"D\u2019un seul tr\u00e8s bon trade\", \"Je ne sais pas encore\"]], [\"Une \u00e9valuation avant de trader un compte WGF, pour vous, c\u2019est :\", [\"Une \u00e9tape \u00e0 franchir le plus vite possible\", \"Un bon moyen de prouver ma m\u00e9thode, \u00e0 mon rythme\", \"Une contrainte dont je me passerais bien\"]], [\"Quand un trade part contre vous :\", [\"Je coupe vite, mes pertes restent petites\", \"Je lui laisse de la place, mon stop est large\", \"Je m\u2019en tiens \u00e0 un risque fixe par trade\", \"Je veux surtout une marge de perte confortable sur le compte\"]], [\"Les annonces \u00e9conomiques (NFP, FOMC, inflation), vous :\", [\"Je les trade\", \"Je les \u00e9vite\", \"Je ne sais pas si c\u2019est permis en prop firm\"]], [\"Avec quelle taille de compte simul\u00e9 \u00eates-vous \u00e0 l\u2019aise ?\", [\"Petite, pour commencer\", \"Moyenne\", \"Grande\"]]], \"profiles\": {\"S\": [\"Le Sprinteur\", \"Vous tradez par conviction et vous voulez aller vite.\", \"Vos meilleures s\u00e9ances tiennent en peu de trades. Une longue \u00e9valuation vous p\u00e8se plus qu\u2019elle ne vous aide. Vous pr\u00e9f\u00e9rez un objectif clair et un compte WGF sans attendre.\", \"Challenge 1 \u00c9tape avec l\u2019option One Day Pass\", \"Une seule \u00e9tape, objectif de 6 %, perte maximale de 4 %. Avec One Day Pass : 1 jour de trading minimum au lieu de 2 et aucune r\u00e8gle de coh\u00e9rence pendant le challenge ; le compte WGF est possible d\u00e8s le lendemain de votre premier jour de trading.\"], \"T\": [\"Le Strat\u00e8ge\", \"Vous construisez vos r\u00e9sultats jour apr\u00e8s jour.\", \"Vous avancez avec une m\u00e9thode et un risque tenu. Vous pr\u00e9f\u00e9rez de la marge \u00e0 la vitesse. Une \u00e9valuation en deux temps vous laisse prouver votre r\u00e9gularit\u00e9.\", \"Challenge 2 \u00c9tapes\", \"Objectif de 8 % puis de 5 %, drawdown maximum de 10 % et perte journali\u00e8re autoris\u00e9e de 5 %, sans limite de temps.\"], \"C\": [\"Le Chasseur de tendance\", \"Vos meilleurs r\u00e9sultats tiennent en quelques grosses journ\u00e9es.\", \"Vous attendez le bon mouvement, puis vous le laissez courir. Vous gardez parfois vos positions plusieurs jours. Une r\u00e8gle de coh\u00e9rence pourrait freiner vos meilleures journ\u00e9es.\", \"Challenge 2 \u00c9tapes avec l\u2019option Pas de coh\u00e9rence\", \"Aucune r\u00e8gle de coh\u00e9rence en \u00c9tape 1 et \u00c9tape 2 (le compte WGF garde la sienne), drawdown maximum de 10 %, et positions conserv\u00e9es la nuit et le week-end.\"], \"I\": [\"L\u2019Ind\u00e9pendant\", \"Vous voulez trader, pas repasser un examen.\", \"Vous connaissez d\u00e9j\u00e0 les r\u00e8gles des prop firms. Une \u00e9valuation de plus ne vous apprendrait rien. Vous pr\u00e9f\u00e9rez commencer directement sur un compte WGF.\", \"Instant Funded\", \"Pas de phase de challenge : vous tradez directement un compte WGF. Drawdown maximum de 5 %, perte journali\u00e8re autoris\u00e9e de 3 %.\"]}, \"offer\": {\"intl\": \"fr-FR\", \"price_label\": \"\u00c0 payer maintenant :\", \"price_promo\": \"{pay} au lieu de {list} avec le code {code}\", \"price_plain\": \"{pay}\", \"fee\": \"\u00c0 la validation du challenge : {fee} de frais d\u2019activation, hors de ce montant.\", \"cta_price\": \"Voir mon challenge \u00e0 {pay}\"}}}};\n  if (typeof module !== 'undefined') { module.exports = T; } else { window.WGF_QUIZ_TEXTES = T; }\n})();\n<\/script>\n<script data-wgf-module=\"catalogue.js\">\n\/* Adaptateur du catalogue public Next. Aucune donn\u00e9e tarifaire embarqu\u00e9e.\n   Le contrat public n'expose pas les exclusivit\u00e9s : les familles connues sont\n   conserv\u00e9es, toute famille nouvelle reste visible mais non s\u00e9lectionnable. *\/\n(function () {\n  'use strict';\n  function fail(reason) { throw new Error('catalog_' + reason); }\n  function id(value) { return typeof value === 'string' ? \/^[A-Za-z0-9_-]+$\/.test(value) : false; }\n  function text(value) { return typeof value === 'string' ? value.trim() : ''; }\n  function objectAt(source, key) {\n    var at = source.indexOf('\"' + key + '\":');\n    if (at < 0) { return null; }\n    var start = at + key.length + 3;\n    while (\/\\s\/.test(source[start] || 'x')) { start++; }\n    if (source[start] !== '{') { return null; }\n    var depth = 0, quote = false, escape = false;\n    for (var i = start; i < source.length; i++) {\n      var c = source[i];\n      if (quote) {\n        if (escape) { escape = false; }\n        else if (c === '\\\\') { escape = true; }\n        else if (c === '\"') { quote = false; }\n      } else if (c === '\"') { quote = true; }\n      else if (c === '{') { depth++; }\n      else if (c === '}') {\n        depth--;\n        if (!depth) { return JSON.parse(source.slice(start, i + 1)); }\n      }\n    }\n    return null;\n  }\n  function decode(html) {\n    var re = \/self\\.__next_f\\.push\\((\\[1,.*?\\])\\)<\\\/script>\/g, match, source = '';\n    while ((match = re.exec(html))) {\n      try { source += JSON.parse(match[1])[1]; } catch (e) { \/* sch\u00e9ma contr\u00f4l\u00e9 ensuite *\/ }\n    }\n    var catalog = objectAt(source, 'catalog'), challenge = objectAt(source, 'challenge');\n    if (!catalog || !challenge) { fail('missing'); }\n    return {catalog: catalog, challenge: challenge};\n  }\n  function euro(value) {\n    if (typeof value !== 'string' || !value.includes('\u20ac')) { return null; }\n    var n = Number(value.replace(\/[\\s\\u00a0\\u202f\u20ac]\/g, '').replace(',', '.'));\n    return Number.isFinite(n) ? (n >= 0 ? n : null) : null;\n  }\n  function family(optionId) {\n    if (optionId === '9010' || optionId === '100Split') { return 'split'; }\n    if (\/^extendedDD[1-9][0-9]*$\/.test(optionId)) { return 'edd'; }\n    if (optionId === 'oneDayPass') { return 'reg'; }\n    if (optionId === 'noConsistency') { return 'reg2'; }\n    if (optionId === 'otp') { return 'pay'; }\n    return null;\n  }\n  function ruleSummary(rules, ids) {\n    return rules.filter(function (r) { return ids.includes(r.id); }).map(function (r) {\n      var values = r.values.filter(function (v) { return v !== 'N\/A' ? !!v : false; });\n      values = values.filter(function (v, i) { return values.indexOf(v) === i; });\n      return values.length ? r.label + ' : ' + values.join(' puis ') + '.' : '';\n    }).filter(Boolean).join(' ');\n  }\n  function rulesFrom(meta, phases) {\n    var numeric = {profit_target:'profitTargetPercent', min_trading_days:'minTradingDays', daily_drawdown:'dailyDrawdownPercent', max_drawdown:'maxLossPercent', max_loss:'maxLossPercent'};\n    return meta.rules.map(function (r) {\n      if (!id(r.id) || !text(r.label) || !Array.isArray(r.values)) { fail('rules'); }\n      return {id:r.id, label:r.label, tooltip:text(r.tooltip), values:r.values.map(function (v, i) {\n        if (typeof v !== 'string') { fail('rule_value'); }\n        var field = numeric[r.id], phase = phases[i];\n        if (!field || !phase || v === 'N\/A') { return v; }\n        var n = phase[field];\n        if (n == null) { return v; }\n        if (!Number.isFinite(n) || n < 0) { fail('phase_value'); }\n        return field === 'minTradingDays' ? String(n) : new Intl.NumberFormat('fr-FR', {maximumFractionDigits:4}).format(n * 100) + ' %';\n      })};\n    });\n  }\n  function normalize(raw, dict) {\n    if (!raw || !dict || !Array.isArray(raw.categories) || !Array.isArray(raw.options) || !Array.isArray(dict.categories)) { fail('shape'); }\n    if (!raw.categories.length) { fail('empty'); }\n    var prices = Object.create(null), programs = Object.create(null), warnings = [];\n    raw.options.forEach(function (o) {\n      if (!id(o.optionId) || !text(o.uuid) || !Number.isFinite(o.priceMultiplier) || o.priceMultiplier < 0 || !Number.isFinite(o.flatPrice) || o.flatPrice < 0 || prices[o.optionId]) { fail('option_invalid'); }\n      prices[o.optionId] = Object.assign({}, o);\n    });\n    var described = new Set();\n    raw.categories.forEach(function (c) {\n      if (!id(c.categoryId) || !id(c.type) || programs[c.categoryId] || !Array.isArray(c.capitals) || !Array.isArray(c.phases)) { fail('program_shape'); }\n      var meta = dict.categories.find(function (m) { return m.id === c.categoryId; });\n      if (!meta || !text(meta.label) || !Array.isArray(meta.options) || !Array.isArray(meta.rules) || !Array.isArray(meta.phases)) { fail('program_metadata'); }\n      if (!c.capitals.length) { return; } \/\/ programme retir\u00e9 de la vente\n      var seen = new Set();\n      var capitals = c.capitals.map(function (cap) {\n        if (!id(cap.capitalId) || seen.has(cap.capitalId) || !text(cap.uuid) || !Number.isFinite(cap.price) || cap.price <= 0 || !Number.isFinite(cap.amount) || cap.amount <= 0) { fail('price_invalid'); }\n        seen.add(cap.capitalId); return Object.assign({}, cap);\n      });\n      var rules = rulesFrom(meta, c.phases), allowed = Object.create(null), groups = [];\n      var groupMap = Object.create(null), activationRule = rules.find(function (r) { return r.id === 'activation_fee'; });\n      var activation = activationRule ? euro(activationRule.values[activationRule.values.length - 1]) : null;\n      meta.options.forEach(function (o) {\n        if (!id(o.id) || !text(o.label)) { fail('option_metadata'); }\n        described.add(o.id);\n        if (!prices[o.id]) { return; } \/\/ supprim\u00e9e c\u00f4t\u00e9 tarifaire : jamais trait\u00e9e comme gratuite\n        if (allowed[o.id]) { fail('option_duplicate'); }\n        var group = family(o.id), enabled = group !== null;\n        var value = Object.assign({}, prices[o.id], {label:o.label, description:text(o.tooltip), group:group, enabled:enabled});\n        if (group === 'pay') {\n          value.description = text(dict.activationMode ? dict.activationMode.otpDescription : '');\n          if (!value.description || activation === null) { value.enabled = false; }\n        }\n        allowed[o.id] = value;\n        var key = group || 'unknown_' + o.id;\n        if (!groupMap[key]) {\n          var labels = {split:'Partage des profits simul\u00e9s', edd:text(dict.extendedDrawdown ? dict.extendedDrawdown.title : ''), reg:'R\u00e9gularit\u00e9', reg2:'Coh\u00e9rence', pay:activationRule ? activationRule.label : ''};\n          var defaults = {split:['profit_split'], edd:['max_loss','daily_drawdown','max_drawdown'], reg:['min_trading_days','consistency'], reg2:['consistency'], pay:['activation_fee']};\n          groupMap[key] = {id:key, name:group || key, label:labels[group] || o.label, description:enabled ? ruleSummary(rules, defaults[group] || []) : 'Compatibilit\u00e9 non document\u00e9e dans ce tunnel. Consultez le configurateur du site.', options:[]};\n        }\n        groupMap[key].options.push(value);\n      });\n      var order = ['split','edd','reg','reg2','pay'];\n      Object.keys(groupMap).sort(function (a,b) {\n        var ai = order.indexOf(a), bi = order.indexOf(b);\n        return (ai < 0 ? order.length : ai) - (bi < 0 ? order.length : bi);\n      }).forEach(function (k) { groups.push(groupMap[k]); });\n      var label = \/^(1|2) \u00c9tape\/.test(meta.label) ? 'Challenge ' + meta.label : \/^instant funded$\/i.test(meta.label) ? 'Instant Funded' : meta.label;\n      programs[c.categoryId] = Object.assign({}, c, {label:label, capitals:capitals, rules:rules, phaseLabels:meta.phases.slice(), options:allowed, groups:groups, activation:activation, activationMode:dict.activationMode || {}, description:ruleSummary(rules,['profit_target','max_loss','max_drawdown']) || ruleSummary(rules,['daily_drawdown','profit_split'])});\n    });\n    if (!Object.keys(programs).length) { fail('empty'); }\n    Object.keys(prices).forEach(function (key) { if (!described.has(key)) { warnings.push(key); } });\n    return {programs:programs, options:prices, warnings:warnings, activation:programs.oneStep ? programs.oneStep.activation : null};\n  }\n  function fromHTML(html) { var data = decode(html); return normalize(data.catalog, data.challenge); }\n  function reconcile(catalog, state) {\n    var ids = Object.keys(catalog.programs);\n    var programme = catalog.programs[state.programme] ? state.programme : ids[0];\n    var p = catalog.programs[programme];\n    var capital = p.capitals.find(function (c) { return c.capitalId === state.capital; }) || p.capitals.reduce(function (smallest, c) { return c.amount < smallest.amount ? c : smallest; });\n    var occupied = new Set();\n    var options = (state.options || []).filter(function (key) {\n      var o = p.options[key];\n      if (!o || !o.enabled || occupied.has(o.group)) { return false; }\n      occupied.add(o.group); return true;\n    });\n    return {programme:programme, capital:capital.capitalId, options:options};\n  }\n  function selectedOptions(program, ids) {\n    var seen = new Set();\n    return ids.map(function (key) {\n      var o = program.options[key];\n      if (!o || !o.enabled || seen.has(o.group)) { fail('selection_invalid'); }\n      seen.add(o.group); return o;\n    });\n  }\n  var api = {objectAt:objectAt, decode:decode, normalize:normalize, fromHTML:fromHTML, reconcile:reconcile, selectedOptions:selectedOptions, ruleSummary:ruleSummary};\n  if (typeof module !== 'undefined') { module.exports = api; }\n  else { window.WGFCatalogue = api; }\n})();\n\n<\/script>\n<script data-wgf-module=\"tunnel.js\">\n\/* Moteur de prix et promotion personnelle du prototype local. Aucun panier \u00e9crit.\n   applies \/ validPromo \/ discounted restent identiques au runtime LP partag\u00e9.\n   Les donn\u00e9es m\u00e9tier sont charg\u00e9es par catalogue.js, l'interface par interface.js. *\/\n(function () {\n  'use strict';\n  var source = typeof module !== 'undefined' ? require('.\/catalogue.js') : window.WGFCatalogue;\n  function round(n) { return Math.round(n * 100) \/ 100; }\n  function applies(p, product, type) {\n    if (!p) { return false; }\n    if (!Array.isArray(p.scopes)) { return false; }\n    if (p.endsAt) {\n      var end = Date.parse(p.endsAt);\n      if (!Number.isFinite(end) || end <= Date.now()) { return false; }\n    }\n    return !p.scopes.length || p.scopes.some(function (s) {\n      return s.challengeUuid !== null ? s.challengeUuid === product.uuid : s.challengeType === type;\n    });\n  }\n  function validPromo(p) {\n    if (!p) { return null; }\n    if (typeof p.code !== 'string' || !p.code.trim() || p.code.length > 128) { return null; }\n    if (!Number.isFinite(p.discountPercent) || p.discountPercent < 0 || p.discountPercent > 1) { return null; }\n    if (p.discountAmount != null) {\n      if (!Number.isFinite(p.discountAmount) || p.discountAmount < 0) { return null; }\n    }\n    if (!Array.isArray(p.scopes)) { return null; }\n    return p;\n  }\n  function discounted(price, flat, promo) {\n    if (!promo) { return price; }\n    return round(Math.max(0, Math.max(0, price - flat) * (1 - promo.discountPercent) - (promo.discountAmount || 0))) + flat;\n  }\n  function normalizePromoCode(value) {\n    if (typeof value !== 'string') { return ''; }\n    var code = value.trim().toUpperCase();\n    return \/^[A-Z0-9._-]{1,64}$\/.test(code) ? code : '';\n  }\n  function promoCookie(cookies) {\n    var item = String(cookies || '').split(';').map(function (s) { return s.trim(); }).find(function (s) { return s.indexOf('wgf_promo_code=') === 0; });\n    if (!item) { return ''; }\n    try { return normalizePromoCode(decodeURIComponent(item.slice('wgf_promo_code='.length))); } catch (e) { return ''; }\n  }\n  function currentPromo(p) {\n    if (!validPromo(p)) { return null; }\n    if (p.scopes.some(function (s) {\n      if (!s || typeof s !== 'object') { return true; }\n      return s.challengeUuid === null ? typeof s.challengeType !== 'string' : typeof s.challengeUuid !== 'string';\n    })) { return null; }\n    if (p.endsAt) {\n      var end = Date.parse(p.endsAt);\n      if (!Number.isFinite(end) || end <= Date.now()) { return null; }\n    }\n    return p;\n  }\n  function resolveVisitorPromo(search, cookies, validate) {\n    var params = new URLSearchParams(search);\n    var linked = normalizePromoCode(params.has('promo') ? params.get('promo') : params.get('code'));\n    var saved = promoCookie(cookies);\n    function checked(code) {\n      if (!code) { return Promise.resolve(null); }\n      return Promise.resolve().then(function () { return validate(code); }).then(function (p) {\n        return currentPromo(p) ? (normalizePromoCode(p.code) === code ? p : null) : null;\n      });\n    }\n    return checked(linked).then(function (p) {\n      return p || saved === linked ? p : checked(saved);\n    }).catch(function () { return null; });\n  }\n  \/* Avantages du code, au format du panier du site : challenge offert (identique \u00e0 l'achat ou\n     challenge pr\u00e9cis, nomm\u00e9 par le moteur ou d\u00e9crit par le catalogue) et option offerte.\n     context (facultatif) : challenge(uuid, type, coins), option(uuid), chosen(uuid). *\/\n  function giftLabels(p, context) {\n    if (!currentPromo(p) || !Array.isArray(p.rewards)) { return []; }\n    var ctx = context || {};\n    function named(v) { return typeof v === 'string' ? v.trim() : ''; }\n    function count(n) { return Number.isInteger(n) ? n >= 1 : false; }\n    function ask(name, a, b, c) { return typeof ctx[name] === 'function' ? named(ctx[name](a, b, c)) : ''; }\n    return p.rewards.map(function (r) {\n      if (!r || typeof r !== 'object') { return ''; }\n      if (r.rewardType === 'FREE_OPTION') {\n        var option = named(r.optionUuid) ? (named(r.optionName) || ask('option', r.optionUuid)) : '';\n        if (!option) { return ''; }\n        return optionLabel(option, typeof ctx.chosen === 'function' ? ctx.chosen(r.optionUuid) === true : false);\n      }\n      if (r.rewardType !== 'FREE_CHALLENGE' || !count(r.buyQuantity) || !count(r.freeQuantity)) { return ''; }\n      if (r.targetMode === 'MIRROR_PURCHASED') { return challengeLabel(r.buyQuantity, r.freeQuantity, null); }\n      if (r.targetMode !== 'SPECIFIC' || !named(r.challengeUuid)) { return ''; }\n      var target = named(r.challengeName) || ask('challenge', r.challengeUuid, r.challengeType, r.challengeCoins);\n      return target ? challengeLabel(r.buyQuantity, r.freeQuantity, target) : '';\n    }).filter(function (label) { return label.length > 0; });\n  }\n  \/* Libell\u00e9s des avantages : seule partie de ce module \u00e0 traduire. *\/\n  function challengeLabel(buy, free, target) {\n    var bought = buy + (buy === 1 ? ' challenge achet\u00e9' : ' challenges achet\u00e9s');\n    var gift = free + (free === 1 ? ' challenge offert' : ' challenges offerts');\n    return 'Pour ' + bought + ' : ' + gift + ' (' + (target === null ? 'identique au challenge achet\u00e9' : target) + ').';\n  }\n  function optionLabel(option, chosen) {\n    return chosen ? 'Option ' + option + ' offerte avec ce code.' : 'Option ' + option + ' offerte avec ce code : ajoutez-la \u00e0 votre challenge pour en profiter.';\n  }\n  function catalogUnitPrice(base, options) {\n    var mult = 0, flat = 0;\n    options.forEach(function (o) { mult += o.priceMultiplier; flat += o.flatPrice; });\n    return {price: round(base * (1 + mult)) + flat, flat: flat};\n  }\n  var api = {round:round, applies:applies, validPromo:validPromo, discounted:discounted, catalogUnitPrice:catalogUnitPrice, objectAt:source.objectAt, catalogueFromHTML:source.fromHTML, normalizePromoCode:normalizePromoCode, promoCookie:promoCookie, resolveVisitorPromo:resolveVisitorPromo, giftLabels:giftLabels};\n  if (typeof module !== 'undefined') { module.exports = api; }\n  else { window.WGFTunnel = api; }\n})();\n\n<\/script>\n<style data-wgf-quiz-auth-css>\n\/* WGF : m\u00eame noir chaud, Mona Sans et violet que le quiz. *\/\n.wgf-qa{box-sizing:border-box;width:min(520px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);margin:auto;padding:0;border:1px solid var(--line);border-radius:20px;background:var(--bg-2);color:var(--ink);font-family:inherit;overflow:auto;overscroll-behavior:contain;box-shadow:0 24px 100px #0009}\n.wgf-qa::backdrop{background:#100b19d9;backdrop-filter:blur(5px)}\n.wgf-qa__tools{position:sticky;top:0;height:0;z-index:5}\n.wgf-qa__head{position:relative;padding:24px 22px 12px}\n.wgf-qa__progress{height:3px;background:var(--lilac);position:absolute;top:0;left:0;right:0}\n.wgf-qa__close{position:absolute;right:6px;top:5px;width:44px;height:44px;background:var(--bg-2);border:1px solid var(--line-2);color:var(--ink-2);font-size:30px;cursor:pointer;border-radius:10px}\n.wgf-qa__close:focus-visible,.wgf-qa__fallback:focus-visible{outline:2px solid var(--lilac);outline-offset:2px}\n.wgf-qa__kicker{margin:0 30px 9px 0;color:var(--lilac);font-size:12px;font-weight:650;letter-spacing:.04em;text-transform:uppercase}\n.wgf-qa h2{margin:0 20px 10px 0;font-size:clamp(23px,5.8vw,30px);line-height:1.12;letter-spacing:-.025em}\n.wgf-qa #wgf-qa-description{margin:0;color:var(--ink-2);font-size:14px;line-height:1.45}\n.wgf-qa__status{padding:10px 22px;font-size:14px;color:var(--ink-2)}\n.wgf-qa__frame{display:block;width:100%;height:510px;border:0;background:var(--bg-2);color-scheme:dark}\n.wgf-qa__foot{padding:10px 22px 18px;text-align:center}\n.wgf-qa__fallback{display:inline-flex;align-items:center;min-height:44px;color:var(--ink-3);font-size:12px;line-height:1.4;text-underline-offset:3px}\n.wgf-qa--fallback .wgf-qa__fallback{box-sizing:border-box;display:flex;justify-content:center;width:100%;min-height:48px;padding:12px 16px;border:1px solid var(--lilac);border-radius:12px;background:var(--lilac);color:var(--bg);font-size:14px;font-weight:700;text-decoration:none;text-align:center}\n.wgf-qa--fallback .wgf-qa__fallback:hover{filter:brightness(1.06)}\n@media(max-width:380px){.wgf-qa__head{padding:22px 16px 10px}.wgf-qa{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);border-radius:14px}}\n@media(prefers-reduced-motion:no-preference){.wgf-qa[open]{animation:wgf-auth-in .18s ease-out}@keyframes wgf-auth-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}}\n\n<\/style>\n<script data-wgf-module=\"auth.js\">\n\/* Authentification officielle int\u00e9gr\u00e9e, sans manipulation des identifiants.\n   Aucune esperluette litt\u00e9rale dans les scripts du bloc WordPress. *\/\n(function () {\n  'use strict';\n  var TEXT = {\n    fr: ['7 r\u00e9ponses compl\u00e9t\u00e9es', 'Votre profil de trader est pr\u00eat.', 'Cr\u00e9ez votre compte gratuit pour d\u00e9couvrir votre r\u00e9sultat et le challenge recommand\u00e9.', 'Fermer', 'Chargement du formulaire s\u00e9curis\u00e9\u2026', 'Ouvrir le formulaire sur une page s\u00e9par\u00e9e', 'Le formulaire ne r\u00e9pond pas. Vous pouvez continuer sur la page officielle.', 'Votre session n\u2019est pas encore confirm\u00e9e. R\u00e9essayez ou utilisez la page officielle.', 'Inscription ou connexion WGF', 'Se connecter pour voir mon profil', 'Cr\u00e9er mon compte et voir mon profil'],\n    en: ['7 answers completed', 'Your trader profile is ready.', 'Create your free account to see your result and recommended challenge.', 'Close', 'Loading the secure form\u2026', 'Open the form on a separate page', 'The form is not responding. You can continue on the official page.', 'Your session is not confirmed yet. Try again or use the official page.', 'WGF sign up or log in', 'Log in to see my profile', 'Create my account and see my profile'],\n    es: ['7 respuestas completadas', 'Su perfil de trader est\u00e1 listo.', 'Cree su cuenta gratuita para descubrir su resultado y el challenge recomendado.', 'Cerrar', 'Cargando el formulario seguro\u2026', 'Abrir el formulario en una p\u00e1gina independiente', 'El formulario no responde. Puede continuar en la p\u00e1gina oficial.', 'Su sesi\u00f3n a\u00fan no est\u00e1 confirmada. Vuelva a intentarlo o utilice la p\u00e1gina oficial.', 'Registro o inicio de sesi\u00f3n WGF', 'Iniciar sesi\u00f3n y ver mi perfil', 'Crear mi cuenta y ver mi perfil'],\n    de: ['7 Fragen beantwortet', 'Ihr Trader-Profil ist bereit.', 'Erstellen Sie Ihr kostenloses Konto, um Ihr Ergebnis und die empfohlene Challenge zu sehen.', 'Schlie\u00dfen', 'Sicheres Formular wird geladen\u2026', 'Formular auf einer eigenen Seite \u00f6ffnen', 'Das Formular reagiert nicht. Sie k\u00f6nnen auf der offiziellen Seite fortfahren.', 'Ihre Sitzung ist noch nicht best\u00e4tigt. Versuchen Sie es erneut oder nutzen Sie die offizielle Seite.', 'WGF Registrierung oder Anmeldung', 'Anmelden und mein Profil ansehen', 'Konto erstellen und mein Profil ansehen'],\n    it: ['7 risposte completate', 'Il suo profilo di trader \u00e8 pronto.', 'Crei il suo account gratuito per scoprire il risultato e la challenge consigliata.', 'Chiudi', 'Caricamento del modulo sicuro\u2026', 'Aprire il modulo in una pagina separata', 'Il modulo non risponde. Pu\u00f2 continuare sulla pagina ufficiale.', 'La sessione non \u00e8 ancora confermata. Riprovi o utilizzi la pagina ufficiale.', 'Registrazione o accesso WGF', 'Accedere e vedere il mio profilo', 'Creare il mio account e vedere il mio profilo']\n  };\n  var LOGIN_TEXT = {fr: 'Connectez-vous pour d\u00e9couvrir votre r\u00e9sultat et le challenge recommand\u00e9.', en: 'Log in to see your result and recommended challenge.', es: 'Inicie sesi\u00f3n para descubrir su resultado y el challenge recomendado.', de: 'Melden Sie sich an, um Ihr Ergebnis und die empfohlene Challenge zu sehen.', it: 'Acceda per scoprire il risultato e la challenge consigliata.'};\n  var FALLBACK_TEXT = {\n    fr: ['Continuer sur la page d\u2019inscription', 'Continuer sur la page de connexion'],\n    en: ['Continue to the sign-up page', 'Continue to the login page'],\n    es: ['Continuar en la p\u00e1gina de registro', 'Continuar en la p\u00e1gina de inicio de sesi\u00f3n'],\n    de: ['Auf der Registrierungsseite fortfahren', 'Auf der Anmeldeseite fortfahren'],\n    it: ['Continuare sulla pagina di registrazione', 'Continuare sulla pagina di accesso']\n  };\n  var active = null;\n  var ATTRIBUTION = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'fbclid', 'gclid', 'ttclid'];\n  function authPath(path) { return \/^\\\/(?:fr\\\/|en\\\/|es\\\/|de\\\/|it\\\/)?auth\\\/(signup|login|forgot-password|reset-password)\\\/?$\/.test(path); }\n  function frameUrl(mode, back, locale, marker) {\n    var result = new URL(back, location.origin);\n    if (result.origin !== location.origin) { throw new Error('Retour externe interdit'); }\n    if (result.pathname !== location.pathname) { throw new Error('Retour quiz attendu'); }\n    if (marker) { result.searchParams.set('wgf_auth_return', '1'); }\n    var u = new URL('\/' + locale + '\/auth\/' + mode, location.origin);\n    u.searchParams.set('returnTo', result.pathname + result.search);\n    var here = new URL(location.href);\n    ATTRIBUTION.forEach(function (key) { var value = here.searchParams.get(key); if (value) { u.searchParams.set(key, value); } });\n    return u.href;\n  }\n  function session() {\n    return fetch('\/api\/auth\/me', {credentials: 'same-origin', cache: 'no-store', signal: AbortSignal.timeout(6000)})\n      .then(function (r) { return r.status === 200; }).catch(function () { return false; });\n  }\n  function open(options) {\n    if (!window.HTMLDialogElement) { return false; }\n    if (!HTMLDialogElement.prototype.showModal) { return false; }\n    if (active) { active.close('replaced'); }\n    var locale = Object.prototype.hasOwnProperty.call(TEXT, options.locale) ? options.locale : 'fr';\n    var t = TEXT[locale], mode = options.mode === 'login' ? 'login' : 'signup';\n    var dialog = document.createElement('dialog'); dialog.className = 'wgf-qa';\n    dialog.setAttribute('aria-labelledby', 'wgf-qa-title'); dialog.setAttribute('aria-describedby', 'wgf-qa-description');\n    dialog.innerHTML = '<div class=\"wgf-qa__tools\"><button type=\"button\" class=\"wgf-qa__close\">\u00d7<\/button><\/div><div class=\"wgf-qa__head\"><div class=\"wgf-qa__progress\" aria-hidden=\"true\"><\/div><p class=\"wgf-qa__kicker\"><\/p><h2 id=\"wgf-qa-title\"><\/h2><p id=\"wgf-qa-description\"><\/p><\/div><p class=\"wgf-qa__status\" role=\"status\" aria-live=\"polite\"><\/p><iframe class=\"wgf-qa__frame\" referrerpolicy=\"strict-origin-when-cross-origin\"><\/iframe><div class=\"wgf-qa__foot\"><a class=\"wgf-qa__fallback\"><\/a><\/div>';\n    var frame = dialog.querySelector('iframe'), status = dialog.querySelector('[role=status]'), fallback = dialog.querySelector('a');\n    var button = dialog.querySelector('button'), restore = options.opener || document.activeElement;\n    var done = false, checking = false, loaded = false, frameDoc = null, lastPath = '', lastCheck = 0, returnSeen = false, unconfirmedReported = false;\n    var timer = null, observer = null, deadline = null, oldOverflow = document.body.style.overflow;\n    var openedAt = Date.now(), loadSeen = false, timedOut = false;\n    var probeState = 'not_checked', probeAccess = 'not_checked', probePath = 'unknown', probeForm = 'unknown', probeReady = 'unknown', lastException = 'none';\n    \/* Diagnostic ferm\u00e9 : aucun texte du document, champ, cookie, URL ou message d'exception. *\/\n    function diagnostic() {\n      return {auth_diag_version: 1, auth_diag_state: probeState, auth_diag_load_seen: loadSeen,\n        auth_diag_access: probeAccess, auth_diag_path: probePath, auth_diag_form: probeForm,\n        auth_diag_ready: probeReady, auth_diag_last_exception: lastException,\n        auth_diag_parent_visible: !document.hidden, auth_diag_timed_out: timedOut,\n        auth_diag_elapsed_ms: Math.min(120000, Math.max(0, Math.round((Date.now() - openedAt) \/ 100) * 100))};\n    }\n    function track(name, data) { if (options.track) { options.track(name, Object.assign({context: 'quiz', mode: mode}, data || {})); } }\n    function fallbackStyle(prominent) {\n      dialog.classList.toggle('wgf-qa--fallback', prominent);\n      fallback.textContent = prominent ? FALLBACK_TEXT[locale][mode === 'login' ? 1 : 0] : t[5];\n    }\n    function close(reason) {\n      if (done) { return; }\n      done = true; clearInterval(timer); clearTimeout(deadline);\n      if (observer) { observer.disconnect(); }\n      window.removeEventListener('message', message);\n      document.removeEventListener('visibilitychange', visibility);\n      dialog.close(); frame.src = 'about:blank'; dialog.remove(); document.body.style.overflow = oldOverflow;\n      active = null;\n      if (reason !== 'authenticated') { track('quiz_auth_closed', {reason: reason}); if (restore) { if (restore.isConnected) { restore.focus(); } } }\n    }\n    function verify(returned) {\n      if (done || checking || document.hidden) { return; }\n      checking = true; lastCheck = Date.now();\n      session().then(function (ok) {\n        checking = false; if (done) { return; }\n        if (ok) { close('authenticated'); track('quiz_auth_confirmed'); options.onAuthenticated(); }\n        else if (returned || returnSeen) { status.textContent = t[7]; status.hidden = false; frame.hidden = true; if (!unconfirmedReported) { unconfirmedReported = true; track('quiz_auth_unconfirmed', diagnostic()); } }\n      });\n    }\n    function message(e) { if (e.origin !== location.origin) { return; } if (e.source !== frame.contentWindow) { return; } if (e.data) { if (e.data.type === 'wgf-quiz-auth-return') { returnSeen = true; verify(true); } } }\n    function visibility() { if (!document.hidden) { if (returnSeen) { verify(false); } } }\n    function decorate() {\n      if (done) { return; }\n      probeState = 'inspecting'; probeAccess = 'not_checked'; probePath = 'unknown'; probeForm = 'unknown'; probeReady = 'unknown';\n      try {\n        var win = frame.contentWindow, doc = frame.contentDocument, path = win.location.pathname;\n        probeAccess = 'readable';\n        if (doc) { if (['loading', 'interactive', 'complete'].indexOf(doc.readyState) >= 0) { probeReady = doc.readyState; } }\n        if (win.location.href === 'about:blank') { probePath = 'blank'; probeState = 'waiting_document'; return; }\n        if (win.location.origin !== location.origin) { probeAccess = 'unavailable'; probeState = 'origin_unavailable'; return; }\n        if (path === location.pathname) { if (new URL(win.location.href).searchParams.get('wgf_auth_return') === '1') { probePath = 'return'; probeState = 'auth_return'; frame.hidden = true; if (!returnSeen) { returnSeen = true; verify(true); } return; } }\n        if (!authPath(path)) { probePath = 'other'; probeState = 'unexpected_path'; return; }\n        probePath = 'auth';\n        if (!doc) { probeState = 'waiting_document'; return; }\n        var form = doc.querySelector('form'); probeForm = form ? 'present' : 'absent';\n        if (!form) { probeState = 'form_missing'; return; }\n        probeState = 'form_found';\n        if (doc !== frameDoc) {\n          if (observer) { observer.disconnect(); }\n          frameDoc = doc;\n          var style = doc.createElement('style'); style.setAttribute('data-wgf-quiz-auth-style', '');\n          style.textContent = 'html,body{background:#211c28!important}main{min-height:0!important;padding:8px 12px 12px!important;gap:8px!important;background:transparent!important}main>a{display:none!important}main>div.fixed.top-3.right-3{display:none!important}input{font-size:16px!important}main h1{font-size:20px!important}main header:has(+form #signup-email)>p,main header:has(+form #login-email)>p{display:none!important}form button[type=submit]{white-space:normal!important;height:auto!important;min-height:48px;padding-top:8px!important;padding-bottom:8px!important;font-size:14px!important;line-height:1.3!important}';\n          doc.head.appendChild(style);\n          doc.addEventListener('keydown', function (e) { if (e.key === 'Escape') { e.preventDefault(); close('escape'); } });\n          doc.addEventListener('click', function (e) {\n            var a = e.target.closest ? e.target.closest('a') : null;\n            if (!a) { return; }\n            var u = new URL(a.href, location.origin);\n            if (u.origin !== location.origin || \/\\\/legal\\\/\/.test(u.pathname)) { a.target = '_blank'; a.rel = 'noopener noreferrer'; }\n          }, true);\n          \/* Observe layout only. Never read values, passwords, emails, tokens or form payloads. *\/\n          observer = new ResizeObserver(function () { size(); }); observer.observe(doc.body);\n        }\n        if (path !== lastPath) {\n          lastPath = path; if (\/\\\/login\\\/?$\/.test(path)) { mode = 'login'; } else if (\/\\\/signup\\\/?$\/.test(path)) { mode = 'signup'; }\n          dialog.querySelector('#wgf-qa-description').textContent = mode === 'login' ? LOGIN_TEXT[locale] : t[2];\n          fallback.href = frameUrl(mode, options.returnTo, locale, false);\n          track('quiz_auth_form_viewed', {screen: path.split('\/').pop()});\n        }\n        \/* Les textes et n\u0153uds du formulaire React restent natifs : pas de conflit d'hydratation.\n           Le contexte est port\u00e9 par l'enveloppe du quiz ; seul le sous-titre g\u00e9n\u00e9rique est masqu\u00e9 par CSS. *\/\n        if (!loaded) { loaded = true; clearTimeout(deadline); track('quiz_auth_loaded', diagnostic()); }\n        fallbackStyle(false); status.hidden = true; frame.hidden = false; size();\n      } catch (e) {\n        var name = e ? e.name : '';\n        lastException = ['SecurityError', 'TypeError', 'ReferenceError', 'RangeError', 'Error'].indexOf(name) >= 0 ? name : 'OtherError';\n        probeState = lastException === 'SecurityError' ? 'origin_unavailable' : 'probe_exception';\n        if (lastException === 'SecurityError') { probeAccess = 'unavailable'; }\n        \/* Ne jamais collecter e.message ou e.stack ; le lien officiel reste disponible. *\/\n      }\n    }\n    function size() {\n      if (done || !frameDoc) { return; }\n      var main = frameDoc.querySelector('main');\n      if (main) { var h = Math.ceil(main.getBoundingClientRect().height); if (h > 0) { frame.style.height = Math.min(1100, Math.max(380, h + 12)) + 'px'; } }\n    }\n    button.textContent = '\u00d7'; button.setAttribute('aria-label', t[3]); button.onclick = function () { close('cross'); };\n    dialog.querySelector('.wgf-qa__kicker').textContent = t[0]; dialog.querySelector('h2').textContent = t[1];\n    dialog.querySelector('#wgf-qa-description').textContent = mode === 'login' ? LOGIN_TEXT[locale] : t[2]; status.textContent = t[4]; frame.title = t[8];\n    fallback.textContent = t[5]; fallback.href = frameUrl(mode, options.returnTo, locale, false);\n    fallback.onclick = function () { track('quiz_auth_fallback', diagnostic()); };\n    dialog.addEventListener('cancel', function (e) { e.preventDefault(); close('escape'); });\n    dialog.addEventListener('close', function () { if (!done) { close('native'); } });\n    document.body.appendChild(dialog); document.body.style.overflow = 'hidden'; dialog.showModal(); button.focus();\n    active = {close: close}; window.addEventListener('message', message); document.addEventListener('visibilitychange', visibility);\n    frame.addEventListener('load', function () { loadSeen = true; decorate(); }); frame.src = frameUrl(mode, options.returnTo, locale, true);\n    deadline = setTimeout(function () { if (done || loaded) { return; } timedOut = true; fallbackStyle(true); status.textContent = t[6]; frame.hidden = true; track('quiz_auth_load_failed', diagnostic()); }, 15000);\n    timer = setInterval(function () { if (done || document.hidden) { return; } decorate(); if (returnSeen) { if (Date.now() - lastCheck > 4000) { verify(false); } } }, 500);\n    \/* Attendre le retour officiel, apr\u00e8s le traitement natif de l'inscription et de sa mesure.\n       Un cookie d\u00e9j\u00e0 pos\u00e9 ne suffit pas \u00e0 d\u00e9truire une iframe dont le POST est encore en cours. *\/\n    track('quiz_auth_shown');\n    return true;\n  }\n  window.WGFQuizAuth = {open: open};\n})();\n\n<\/script>\n<script data-wgf-module=\"quiz.js\">\n\/* Quiz \u00ab Quel trader de prop firm \u00eates-vous ? \u00bb, r02 du 24\/09\/2026, cinq langues (D-WGF-128).\n   Calcul local du profil, inscription par le formulaire du site (returnTo), r\u00e9sultat visible\n   une fois connect\u00e9, lien vers le configurateur avec pr\u00e9s\u00e9lection (D-WGF-173).\n   Contraintes du gabarit WordPress : aucune esperluette, aucune balise de fin de script. *\/\n(function () {\n  'use strict';\n  \/* Le retour de l'auth officielle dans l'iframe n'initialise ni quiz ni mesure. *\/\n  if (typeof window !== 'undefined') {\n    if (window.parent !== window) {\n      if (new URLSearchParams(location.search).get('wgf_auth_return') === '1') {\n        document.documentElement.style.visibility = 'hidden';\n        window.parent.postMessage({type: 'wgf-quiz-auth-return'}, location.origin);\n        return;\n      }\n    }\n  }\n  var VERSION = '20260927-quiz-profil-r06';\n  var AMP = String.fromCharCode(38);\n  \/* Configurateur de chaque langue (D-WGF-177, \u00e9tendu aux cinq langues le 24\/09\/2026). *\/\n  var CONFIGURATORS = {fr: '\/fr\/blog\/configurer-mon-challenge\/', en: '\/en\/blog\/configure-my-challenge\/',\n    es: '\/es\/blog\/configurar-mi-challenge\/', de: '\/de\/blog\/challenge-konfigurieren\/', it: '\/it\/blog\/configura-la-tua-challenge\/'};\n  var KEEP = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'fbclid', 'fbc_id', 'h_ad_id'];\n\n  \/* Bar\u00e8me commun aux cinq langues ; les textes viennent de textes.js (source textes.json). *\/\n  var POINTS = [\n    [{T: 2}, {S: 1, T: 1, C: 1}, {S: 1, I: 2}, {S: 1, I: 2}],\n    [{S: 2}, {S: 1, T: 1}, {C: 2, T: 1}, {T: 1, C: 1}],\n    [{T: 2}, {C: 3}, {S: 2, C: 1}, {T: 1}],\n    [{S: 3}, {T: 2, C: 1}, {I: 3}],\n    [{S: 1, T: 1}, {C: 2, T: 1}, {T: 2}, {T: 2}],\n    [{S: 1, C: 1}, {T: 1}, {}],\n    ['petit', 'moyen', 'grand']\n  ];\n  var ORDER = ['T', 'S', 'C', 'I'];\n  var BASE = {\n    S: {slug: 'sprinteur', type: 'unlimited', options: 'oneDayPass'},\n    T: {slug: 'stratege', type: 'standard', options: ''},\n    C: {slug: 'chasseur', type: 'standard', options: 'noConsistency'},\n    I: {slug: 'independant', type: 'instant_funded', options: null}\n  };\n  var TX = typeof module !== 'undefined' ? require('.\/textes.js') : window.WGF_QUIZ_TEXTES;\n  var LOCALES = ['fr', 'en', 'es', 'de', 'it'];\n  function loc(l) { return LOCALES.indexOf(l) >= 0 ? l : 'fr'; }\n\n  function questions(l) {\n    var pack = TX.js[loc(l)].questions;\n    return pack.map(function (q, i) {\n      return {id: 'Q' + (i + 1), text: q[0], answers: q[1].map(function (label, j) {\n        var p = POINTS[i][j];\n        return typeof p === 'string' ? {label: label, size: p} : {label: label, pts: p};\n      })};\n    });\n  }\n  function profiles(l) {\n    var pack = TX.js[loc(l)].profiles, out = {};\n    for (var k in BASE) {\n      var t = pack[k];\n      out[k] = {slug: BASE[k].slug, type: BASE[k].type, options: BASE[k].options, name: t[0], hook: t[1], text: t[2], product: t[3], why: t[4]};\n    }\n    return out;\n  }\n  \/* En module (tests) : fran\u00e7ais ; dans la page, la langue de data-locale, seul paquet embarqu\u00e9. *\/\n  var QUESTIONS = typeof module !== 'undefined' ? questions('fr') : null;\n  var PROFILES = typeof module !== 'undefined' ? profiles('fr') : null;\n  var CAPITALS = {\n    unlimited: {petit: 50000, moyen: 100000, grand: 200000},\n    standard: {petit: 25000, moyen: 50000, grand: 100000},\n    instant_funded: {petit: 15000, moyen: 30000, grand: 60000}\n  };\n\n  function keyFromSlug(slug) {\n    for (var k in BASE) { if (BASE[k].slug === slug) { return k; } }\n    return null;\n  }\n  function validSize(size) { return size === 'petit' || size === 'moyen' || size === 'grand'; }\n\n  \/* answers : tableau d'indices, un par question. *\/\n  function score(answers) {\n    if (!answers || answers.length !== QUESTIONS.length) { return null; }\n    var total = {S: 0, T: 0, C: 0, I: 0}, size = null;\n    for (var i = 0; i < QUESTIONS.length; i++) {\n      var a = POINTS[i][answers[i]];\n      if (a === undefined) { return null; }\n      if (typeof a === 'string') { size = a; }\n      var pts = typeof a === 'string' ? {} : a;\n      for (var k in pts) { total[k] += pts[k]; }\n    }\n    var best = ORDER[0];\n    for (var j = 1; j < ORDER.length; j++) { if (total[ORDER[j]] > total[best]) { best = ORDER[j]; } }\n    return {key: best, slug: BASE[best].slug, size: size, points: total};\n  }\n\n  function query(pairs) {\n    var out = [];\n    for (var i = 0; i < pairs.length; i++) { out.push(encodeURIComponent(pairs[i][0]) + '=' + encodeURIComponent(pairs[i][1])); }\n    return out.join(AMP);\n  }\n  function kept(search) {\n    var out = [], params = new URLSearchParams(search || '');\n    for (var i = 0; i < KEEP.length; i++) {\n      var v = params.get(KEEP[i]);\n      if (v) { out.push([KEEP[i], v.slice(0, 200)]); }\n    }\n    return out;\n  }\n  function resultPath(pathname, slug, size, search) {\n    return pathname + '?' + query([['profil', slug], ['taille', size]].concat(kept(search)));\n  }\n  \/* M\u00eame comportement dans les cinq langues : configurateur de la langue, pr\u00e9s\u00e9lection valid\u00e9e\n     par le configurateur contre le catalogue (programme, capital, options ; jamais de prix). *\/\n  function configuratorUrl(key, size, search, l) {\n    l = loc(l);\n    var p = BASE[key];\n    var pairs = [['challengeType', p.type], ['capital', String(CAPITALS[p.type][size])]];\n    if (p.options !== null) { pairs.push(['options', p.options]); }\n    return CONFIGURATORS[l] + '?' + query(pairs.concat(kept(search)));\n  }\n  function authUrl(mode, returnTo, l) {\n    return '\/' + loc(l) + '\/auth\/' + (mode === 'login' ? 'login' : 'signup') + '?returnTo=' + encodeURIComponent(returnTo);\n  }\n  function money(amount, l) {\n    l = loc(l);\n    var n = new Intl.NumberFormat(l === 'en' ? 'en-GB' : l, {maximumFractionDigits: 0}).format(amount);\n    return TX.js[l].money.replace('{n}', n);\n  }\n  function setupLine(key, size, l) {\n    return TX.js[loc(l)].setup.replace('{capital}', money(CAPITALS[BASE[key].type][size], l));\n  }\n\n  \/* Offre affich\u00e9e sur le r\u00e9sultat (r04, accord d'Adel du 25\/09\/2026) : lue en direct avec le moteur\n     du configurateur (catalogue public, code valid\u00e9 par l'API). Aucun prix \u00e9crit en dur ; en cas de\n     doute (catalogue, code ou pr\u00e9s\u00e9lection illisibles), le r\u00e9sultat reste celui de la r03. *\/\n  function offerFor(key, size, catalog, promo, engine, source) {\n    var p = BASE[key], amount = CAPITALS[p.type][size];\n    var progKey = Object.keys(catalog.programs).filter(function (k) { return catalog.programs[k].type === p.type; })[0];\n    if (!progKey) { return null; }\n    var prog = catalog.programs[progKey];\n    var product = prog.capitals.filter(function (c) { return Math.round(c.amount) === amount; })[0];\n    if (!product) { return null; }\n    var wanted = p.options ? p.options.split(',') : [];\n    var ids = Object.keys(prog.options || {}).filter(function (id) { return wanted.indexOf(id) >= 0; });\n    if (ids.length !== wanted.length) { return null; }\n    var chosen;\n    try { chosen = source.selectedOptions(prog, ids); } catch (e) { return null; }\n    var unit = engine.catalogUnitPrice(product.price, chosen);\n    var applied = engine.applies(promo, product, prog.type) ? promo : null;\n    var pay = engine.discounted(unit.price, unit.flat, applied);\n    if (!Number.isFinite(pay) || !Number.isFinite(unit.price) || pay <= 0) { return null; }\n    return {list: unit.price, pay: pay, code: applied ? applied.code : null, activation: Number.isFinite(prog.activation) ? prog.activation : null};\n  }\n  function offerLines(o, l) {\n    var t = TX.js[loc(l)].offer, fmt = new Intl.NumberFormat(t.intl, {style: 'currency', currency: 'EUR'});\n    var pay = fmt.format(o.pay), promo = o.code !== null ? o.pay < o.list : false;\n    return {label: t.price_label, pay: pay, list: fmt.format(o.list), code: o.code, promo: promo,\n      line: (promo ? t.price_promo : t.price_plain).replace('{pay}', pay).replace('{list}', fmt.format(o.list)).replace('{code}', o.code || ''),\n      fee: o.activation ? t.fee.replace('{fee}', fmt.format(o.activation)) : null, cta: t.cta_price.replace('{pay}', pay)};\n  }\n\n  var api = {VERSION: VERSION, offerFor: offerFor, offerLines: offerLines, LOCALES: LOCALES, QUESTIONS: QUESTIONS, PROFILES: PROFILES, CAPITALS: CAPITALS, POINTS: POINTS,\n    questions: questions, profiles: profiles, score: score, keyFromSlug: keyFromSlug, validSize: validSize,\n    resultPath: resultPath, configuratorUrl: configuratorUrl, CONFIGURATORS: CONFIGURATORS, authUrl: authUrl, money: money, setupLine: setupLine};\n  if (typeof module !== 'undefined') { module.exports = api; return; }\n\n  \/* ---------- Navigateur ---------- *\/\n  var root = document.querySelector('[data-wgf-quiz]');\n  if (!root || !TX) { return; }\n  var LOC = loc(root.getAttribute('data-locale'));\n  QUESTIONS = questions(LOC);\n  PROFILES = profiles(LOC);\n  var screens = {};\n  root.querySelectorAll('[data-screen]').forEach(function (s) { screens[s.getAttribute('data-screen')] = s; });\n  var state = {answers: [], index: 0};\n  var LOCAL = location.hostname === 'localhost' || location.hostname === '127.0.0.1';\n\n  \/* Mesure : politique des LP (D-WGF-161\/162), aucune requ\u00eate hors du domaine WGF. *\/\n  var sdk = null, queue = [];\n  function cookies() { try { return document.cookie || ''; } catch (e) { return ''; } }\n  function consent() { var m = cookies().match('(^|;)\\\\s*consent_state\\\\s*=\\\\s*([^;]*)'); try { return m ? decodeURIComponent(m[2]).trim().toLowerCase() : null; } catch (e) { return null; } }\n  function track(event, props) {\n    if (consent() === 'denied') { return; }\n    if (!sdk) { if (queue.length < 40) { queue.push([event, props]); } return; }\n    var base = {lp_id: 'quiz-profil-' + LOC, lp_family: 'quiz', lp_version: VERSION, quiz_version: VERSION, locale: LOC, page_path: location.pathname,\n      consent_state: consent() === 'granted' ? 'granted' : 'unknown', consent_source: consent() === 'granted' ? 'explicit' : 'default', measurement_policy: 'default_on'};\n    sdk.capture(event, Object.assign(base, props || {}));\n  }\n  if (consent() !== 'denied' ? (location.hostname === 'wegetfunded.com' || location.hostname === 'www.wegetfunded.com') : false) {\n    var lib = document.createElement('script'); lib.src = '\/s\/static\/array.js'; lib.async = true;\n    lib.onload = function () {\n      if (!window.posthog) { return; }\n      sdk = window.posthog;\n      sdk.init('phc_Cx86yLkm9TgRUVEW9Gn4NbbPys6dFx3ScepvdEc3Ehsu', {api_host: '\/s', capture_pageview: false, autocapture: false, disable_session_recording: true, disable_surveys: true, advanced_disable_feature_flags: true});\n      track('page_viewed');\n      var q = queue; queue = []; q.forEach(function (x) { track(x[0], x[1]); });\n    };\n    document.head.appendChild(lib);\n  }\n\n  function show(name) {\n    for (var k in screens) { screens[k].hidden = k !== name; }\n    var h = screens[name] ? screens[name].querySelector('h1,h2') : null;\n    if (h) { h.setAttribute('tabindex', '-1'); h.focus({preventScroll: true}); }\n    window.scrollTo(0, 0);\n  }\n  function text(sel, value) { var el = root.querySelector(sel); if (el) { el.textContent = value; } }\n\n  function renderQuestion() {\n    var q = QUESTIONS[state.index];\n    text('[data-q-count]', TX.js[LOC].count.replace('{n}', String(state.index + 1)).replace('{t}', String(QUESTIONS.length)));\n    text('[data-q-text]', q.text);\n    var bar = root.querySelector('[data-q-progress]');\n    if (bar) { bar.style.width = Math.round((state.index \/ QUESTIONS.length) * 100) + '%'; }\n    var list = root.querySelector('[data-q-answers]');\n    list.textContent = '';\n    q.answers.forEach(function (a, i) {\n      var b = document.createElement('button');\n      b.type = 'button'; b.className = 'q__answer'; b.textContent = a.label;\n      if (state.answers[state.index] === i) { b.setAttribute('aria-pressed', 'true'); }\n      b.addEventListener('click', function () { choose(i); });\n      list.appendChild(b);\n    });\n    var back = root.querySelector('[data-q-back]');\n    if (back) { back.hidden = state.index === 0; }\n    show('question');\n  }\n  function choose(i) {\n    state.answers[state.index] = i;\n    track('quiz_answered', {question: QUESTIONS[state.index].id, answer_index: i});\n    if (state.index < QUESTIONS.length - 1) { state.index++; renderQuestion(); return; }\n    var r = score(state.answers);\n    if (!r) { show('error'); return; }\n    track('quiz_completed', {profile: r.slug, size: r.size});\n    renderGate(r.slug, r.size);\n  }\n  function renderGate(slug, size) {\n    var back = resultPath(location.pathname, slug, size, location.search);\n    var signup = root.querySelector('[data-gate-signup]'), login = root.querySelector('[data-gate-login]');\n    signup.href = authUrl('signup', back, LOC); login.href = authUrl('login', back, LOC);\n    function modal(mode, opener) {\n      if (!window.WGFQuizAuth) { return false; }\n      return window.WGFQuizAuth.open({locale: LOC, mode: mode, returnTo: back, opener: opener,\n        track: function (event, data) { track(event, Object.assign({profile: slug, size: size}, data)); },\n        onAuthenticated: function () {\n          \/* La session vient d'\u00eatre v\u00e9rifi\u00e9e c\u00f4t\u00e9 parent ; aucune nouvelle mesure d'inscription. *\/\n          var u = new URL(location.href); u.searchParams.set('profil', slug); u.searchParams.set('taille', size);\n          u.searchParams.delete('wgf_auth_return'); history.replaceState(null, '', u.pathname + u.search);\n          track('quiz_result_viewed', {profile: slug, size: size, authenticated: true});\n          renderResult(keyFromSlug(slug), size);\n        }});\n    }\n    signup.onclick = function (e) { track('quiz_signup_clicked', {profile: slug, mode: 'signup'}); if (modal('signup', signup)) { e.preventDefault(); } };\n    login.onclick = function (e) { track('quiz_signup_clicked', {profile: slug, mode: 'login'}); if (modal('login', login)) { e.preventDefault(); } };\n    show('gate');\n    checkAuth().then(function (ok) {\n      if (ok) { track('quiz_result_viewed', {profile: slug, size: size, authenticated: true}); renderResult(keyFromSlug(slug), size); }\n      else { modal('signup', signup); }\n    });\n  }\n  function renderResult(key, size) {\n    var p = PROFILES[key];\n    text('[data-r-name]', p.name); text('[data-r-hook]', p.hook); text('[data-r-text]', p.text);\n    text('[data-r-product]', p.product); text('[data-r-why]', p.why); text('[data-r-setup]', setupLine(key, size, LOC));\n    var noLimit = root.querySelector('[data-r-nolimit]');\n    if (noLimit) { noLimit.hidden = p.type === 'instant_funded'; }\n    var cta = root.querySelector('[data-r-cta]');\n    cta.href = configuratorUrl(key, size, location.search, LOC);\n    cta.onclick = function () { track('quiz_configurator_clicked', {profile: p.slug, challenge_type: p.type, capital: CAPITALS[p.type][size], destination: 'configurateur', price_shown: shownPrice}); };\n    show('result');\n    showOffer(key, size, cta);\n  }\n  var shownPrice = null;\n  function showOffer(key, size, cta) {\n    var engine = window.WGFTunnel, source = window.WGFCatalogue, box = root.querySelector('[data-r-price]'), fee = root.querySelector('[data-r-fee]');\n    if (!engine || !source || !box || LOCAL) { return; }\n    var catalogP = fetch('\/' + LOC, {credentials: 'omit', cache: 'no-store', signal: AbortSignal.timeout(8000)})\n      .then(function (r) { if (!r.ok) { throw new Error('catalogue'); } return r.text(); }).then(source.fromHTML);\n    function validate(code) {\n      return fetch('\/api\/promo-codes\/validate?code=' + encodeURIComponent(code), {credentials: 'omit', cache: 'no-store', signal: AbortSignal.timeout(8000)})\n        .then(function (r) { if (!r.ok) { throw new Error('promo'); } return r.json(); })\n        .then(function (d) { return d.valid === true ? engine.validPromo(d.promo) : null; });\n    }\n    var promoP = engine.resolveVisitorPromo(location.search, document.cookie, validate);\n    Promise.all([catalogP, promoP]).then(function (res) {\n      var o = offerFor(key, size, res[0], res[1], engine, source);\n      if (!o) { return; }\n      var t = offerLines(o, LOC);\n      box.textContent = '';\n      box.appendChild(document.createTextNode(t.label + ' '));\n      var strong = document.createElement('strong'); strong.textContent = t.pay; box.appendChild(strong);\n      if (t.promo) {\n        box.appendChild(document.createTextNode(' '));\n        var was = document.createElement('s'); was.textContent = t.list; box.appendChild(was);\n        box.appendChild(document.createTextNode(' \u00b7 ' + t.code));\n      }\n      box.setAttribute('aria-label', t.line);\n      box.hidden = false;\n      if (t.fee) { fee.textContent = t.fee; fee.hidden = false; }\n      cta.textContent = t.cta;\n      shownPrice = o.pay;\n      track('quiz_offer_shown', {profile: PROFILES[key].slug, price_displayed: o.pay, price_list: o.list, promo_code: o.code});\n    }).catch(function () { \/* Pas de prix : r\u00e9sultat r03 inchang\u00e9. *\/ });\n  }\n  function checkAuth() {\n    if (LOCAL) { return Promise.resolve(new URLSearchParams(location.search).get('apercu_connecte') === '1'); }\n    return fetch('\/api\/auth\/me', {credentials: 'same-origin', cache: 'no-store'}).then(function (r) { return r.status === 200; }).catch(function () { return false; });\n  }\n\n  root.querySelector('[data-start]').addEventListener('click', function () {\n    state = {answers: [], index: 0};\n    track('quiz_started', {});\n    renderQuestion();\n  });\n  root.querySelector('[data-q-back]').addEventListener('click', function () {\n    if (state.index > 0) { state.index--; renderQuestion(); }\n  });\n  root.querySelectorAll('[data-restart]').forEach(function (b) {\n    b.addEventListener('click', function () { history.replaceState(null, '', location.pathname); state = {answers: [], index: 0}; show('intro'); });\n  });\n\n  var params = new URLSearchParams(location.search);\n  var slugParam = params.get('profil'), sizeParam = params.get('taille');\n  if (slugParam === null) { show('intro'); return; }\n  var key = keyFromSlug(slugParam);\n  if (!key || !validSize(sizeParam)) { show('error'); return; }\n  show('loading');\n  checkAuth().then(function (ok) {\n    track('quiz_result_viewed', {profile: slugParam, size: sizeParam, authenticated: ok});\n    if (ok) { renderResult(key, sizeParam); } else { renderGate(slugParam, sizeParam); }\n  });\n})();\n\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"lp-quiz","format":"standard","meta":{"_wgf_editorial_author":"","_wgf_editorial_kind":"","footnotes":""},"categories":[26],"tags":[],"class_list":["post-585","post","type-post","status-publish","format-standard","hentry","category-lp-ads"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded<\/title>\n<meta name=\"description\" content=\"Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded\" \/>\n<meta property=\"og:description\" content=\"Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/\" \/>\n<meta property=\"og:site_name\" content=\"WeGetFunded\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-24T08:00:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-27T13:37:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wegetfunded.com\/og\/og-fr.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"WeGetFunded\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"WeGetFunded\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/\"},\"author\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#organization\",\"name\":\"WeGetFunded\"},\"headline\":\"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded\",\"datePublished\":\"2026-09-24T08:00:06+00:00\",\"dateModified\":\"2026-09-27T13:37:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/\"},\"wordCount\":841,\"articleSection\":[\"Pages d'atterrissage (annonces)\"],\"inLanguage\":\"fr\",\"publisher\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/\",\"url\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/\",\"name\":\"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#website\"},\"datePublished\":\"2026-09-24T08:00:06+00:00\",\"dateModified\":\"2026-09-27T13:37:15+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#organization\"},\"description\":\"Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/#breadcrumb\"},\"inLanguage\":\"fr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/fr\\\/blog\\\/test-profil-trader\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/wegetfunded.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#website\",\"url\":\"https:\\\/\\\/wegetfunded.com\",\"name\":\"WeGetFunded\",\"publisher\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#organization\"},\"inLanguage\":[\"fr\",\"en\",\"es\",\"it\",\"de\"]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#organization\",\"name\":\"WeGetFunded\",\"alternateName\":[\"We Get Funded\",\"WGF\"],\"legalName\":\"WeGetFunded LTD.\",\"url\":\"https:\\\/\\\/wegetfunded.com\",\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#logo\",\"url\":\"https:\\\/\\\/wegetfunded.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wgf-site-icon-512.png\",\"contentUrl\":\"https:\\\/\\\/wegetfunded.com\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/wgf-site-icon-512.png\",\"width\":512,\"height\":512,\"caption\":\"WeGetFunded\"},\"image\":{\"@id\":\"https:\\\/\\\/wegetfunded.com\\\/#logo\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/@wegetfunded\",\"https:\\\/\\\/x.com\\\/wegetfunded\",\"https:\\\/\\\/discord.com\\\/invite\\\/rrcRVgq2J3\",\"https:\\\/\\\/play.google.com\\\/store\\\/apps\\\/details?id=com.wegetfunded.app\",\"https:\\\/\\\/instagram.com\\\/wegetfundedcom\",\"https:\\\/\\\/tiktok.com\\\/@wegetfunded\",\"https:\\\/\\\/facebook.com\\\/wegetfunded\",\"https:\\\/\\\/t.me\\\/wegetfunded\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded","description":"Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/","og_locale":"fr_FR","og_type":"article","og_title":"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded","og_description":"Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.","og_url":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/","og_site_name":"WeGetFunded","article_published_time":"2026-09-24T08:00:06+00:00","article_modified_time":"2026-09-27T13:37:15+00:00","og_image":[{"url":"https:\/\/wegetfunded.com\/og\/og-fr.png","width":1200,"height":630,"type":"image\/png"}],"author":"WeGetFunded","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"WeGetFunded","Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/#article","isPartOf":{"@id":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/"},"author":{"@id":"https:\/\/wegetfunded.com\/#organization","name":"WeGetFunded"},"headline":"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded","datePublished":"2026-09-24T08:00:06+00:00","dateModified":"2026-09-27T13:37:15+00:00","mainEntityOfPage":{"@id":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/"},"wordCount":841,"articleSection":["Pages d'atterrissage (annonces)"],"inLanguage":"fr","publisher":{"@id":"https:\/\/wegetfunded.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/","url":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/","name":"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded","isPartOf":{"@id":"https:\/\/wegetfunded.com\/#website"},"datePublished":"2026-09-24T08:00:06+00:00","dateModified":"2026-09-27T13:37:15+00:00","author":{"@id":"https:\/\/wegetfunded.com\/#organization"},"description":"Sept questions sur votre fa\u00e7on de trader, puis le challenge WeGetFunded qui vous correspond, d\u00e9j\u00e0 configur\u00e9.","breadcrumb":{"@id":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/#breadcrumb"},"inLanguage":"fr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wegetfunded.com\/fr\/blog\/test-profil-trader\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/wegetfunded.com\/"},{"@type":"ListItem","position":2,"name":"Quel trader de prop firm \u00eates-vous ? Le test en 7 questions | WeGetFunded"}]},{"@type":"WebSite","@id":"https:\/\/wegetfunded.com\/#website","url":"https:\/\/wegetfunded.com","name":"WeGetFunded","publisher":{"@id":"https:\/\/wegetfunded.com\/#organization"},"inLanguage":["fr","en","es","it","de"]},{"@type":"Organization","@id":"https:\/\/wegetfunded.com\/#organization","name":"WeGetFunded","alternateName":["We Get Funded","WGF"],"legalName":"WeGetFunded LTD.","url":"https:\/\/wegetfunded.com","logo":{"@type":"ImageObject","@id":"https:\/\/wegetfunded.com\/#logo","url":"https:\/\/wegetfunded.com\/wp-content\/uploads\/2026\/09\/wgf-site-icon-512.png","contentUrl":"https:\/\/wegetfunded.com\/wp-content\/uploads\/2026\/09\/wgf-site-icon-512.png","width":512,"height":512,"caption":"WeGetFunded"},"image":{"@id":"https:\/\/wegetfunded.com\/#logo"},"sameAs":["https:\/\/www.youtube.com\/@wegetfunded","https:\/\/x.com\/wegetfunded","https:\/\/discord.com\/invite\/rrcRVgq2J3","https:\/\/play.google.com\/store\/apps\/details?id=com.wegetfunded.app","https:\/\/instagram.com\/wegetfundedcom","https:\/\/tiktok.com\/@wegetfunded","https:\/\/facebook.com\/wegetfunded","https:\/\/t.me\/wegetfunded"]}]}},"_links":{"self":[{"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/posts\/585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/comments?post=585"}],"version-history":[{"count":8,"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/posts\/585\/revisions"}],"predecessor-version":[{"id":852,"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/posts\/585\/revisions\/852"}],"wp:attachment":[{"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/media?parent=585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/categories?post=585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wegetfunded.com\/fr\/wp-json\/wp\/v2\/tags?post=585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}