{"id":1208,"date":"2025-07-29T17:29:30","date_gmt":"2025-07-29T17:29:30","guid":{"rendered":"https:\/\/jourx.fr\/?page_id=1208"},"modified":"2025-10-02T07:25:11","modified_gmt":"2025-10-02T07:25:11","slug":"contact-jourx-demande-information-partenariat","status":"publish","type":"page","link":"https:\/\/jourx.fr\/en\/contact-jourx-demande-information-partenariat\/","title":{"rendered":"Contact"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"1208\" class=\"elementor elementor-1208\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c66bbc e-flex e-con-boxed e-con e-parent\" data-id=\"6c66bbc\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-121eaca elementor-widget elementor-widget-html\" data-id=\"121eaca\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- === HERO Contact JourX (alignfull) === -->\r\n<section class=\"jx-hero-contact alignfull\" role=\"banner\" aria-label=\"Contact JourX\">\r\n  <div class=\"jx-hero__in\">\r\n    <div class=\"jx-hero__copy\">\r\n      <h1 class=\"jx-hero__title\">\r\n        Contact the JourX team\r\n      <\/h1>\r\n\r\n      <p class=\"jx-hero__lead\">\r\n        A question, feedback, or a partnership? Write to us: we read every message and get back to you as soon as possible.\r\n      <\/p>\r\n\r\n      <div class=\"jx-hero__ctas\">\r\n        <a class=\"jx-btn jx-btn--primary\" href=\"#contact-form\" aria-label=\"\u00c9crire au support JourX\">\r\n          Write to support\r\n        <\/a>\r\n        <a class=\"jx-btn jx-btn--ghost\" href=\"\/en\/fonctionnalites-de-jourx-application-budget-quotidien\/#jx-faq-title\"\r\n           aria-label=\"Consulter la FAQ de JourX\">\r\n          See the FAQ\r\n        <\/a>\r\n        <a class=\"jx-btn jx-btn--ghost\" href=\"https:\/\/www.facebook.com\/profile.php?id=61566464919207\" target=\"_blank\" rel=\"noopener\" aria-label=\"Suivre JourX sur Facebook\">\r\n          Facebook JourX\r\n        <\/a>\r\n      <\/div>\r\n\r\n      <!-- Petites garanties \/ canaux -->\r\n      <ul class=\"jx-bullets\" role=\"list\">\r\n        <li>\ud83d\udd12 Data respected \u2014 no advertising tracking<\/li>\r\n        <li>\ud83d\udcac Clear and useful answer<\/li>\r\n        <li>\ud83e\udd1d Press &amp; partnerships welcome<\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- D\u00e9cor l\u00e9ger (enveloppe) -->\r\n  <figure class=\"jx-hero__visual\" aria-hidden=\"true\">\r\n    <svg viewbox=\"0 0 240 180\" width=\"100%\" height=\"100%\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n      <defs>\r\n        <lineargradient id=\"c1\" x1=\"0\" x2=\"1\">\r\n          <stop offset=\"0\" stop-color=\"#b9ff66\"\/>\r\n          <stop offset=\"1\" stop-color=\"#90ff5a\"\/>\r\n        <\/lineargradient>\r\n        <filter id=\"s\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\">\r\n          <fedropshadow dx=\"0\" dy=\"14\" stddeviation=\"14\" flood-color=\"rgba(0,0,0,.35)\"\/>\r\n        <\/filter>\r\n      <\/defs>\r\n      <rect x=\"20\" y=\"30\" rx=\"14\" ry=\"14\" width=\"200\" height=\"120\" fill=\"#101d42\" stroke=\"#27335b\" stroke-width=\"2\" filter=\"url(#s)\"\/>\r\n      <path d=\"M24 34 L120 106 L216 34\" fill=\"none\" stroke=\"url(#c1)\" stroke-width=\"6\" stroke-linecap=\"round\" \/>\r\n      <circle cx=\"200\" cy=\"40\" r=\"6\" fill=\"#b9ff66\">\r\n        <animate attributename=\"opacity\" values=\"0.4;1;0.4\" dur=\"1.4s\" repeatcount=\"indefinite\"\/>\r\n      <\/circle>\r\n    <\/svg>\r\n  <\/figure>\r\n<\/section>\r\n\r\n<style>\r\n  \/* ====== Variables (reprise de la home) ====== *\/\r\n  :root{\r\n    --jx-bg:#0e1b3a;\r\n    --jx-lime:#b9ff66;\r\n    --jx-text:#dbe6ff;\r\n    --jx-white:#ffffff;\r\n    --jx-ghost:#27335b;\r\n    --jx-vis-w: clamp(240px, 34vw, 480px);\r\n    --jx-bleed-r: 0.45;\r\n  }\r\n\r\n  \/* ====== Hero Contact ====== *\/\r\n  .jx-hero-contact{\r\n    position:relative;\r\n    background:var(--jx-bg);\r\n    color:var(--jx-text);\r\n    padding: clamp(32px, 6vw, 72px) clamp(16px, 4vw, 48px) clamp(24px, 4vw, 36px);\r\n    overflow: visible;\r\n  }\r\n  .jx-hero-contact.alignfull{\r\n    width: 100vw;\r\n    margin-left: calc(50% - 50vw);\r\n    margin-right: calc(50% - 50vw);\r\n    box-sizing: border-box;\r\n  }\r\n  html, body { overflow-x: hidden; }\r\n\r\n  .jx-hero__in{\r\n    max-width:1200px;\r\n    margin:0 auto;\r\n    padding-right: calc(var(--jx-vis-w) + clamp(12px, 3vw, 48px));\r\n    display:flex;\r\n    align-items:center;\r\n    min-height: 0;\r\n  }\r\n\r\n  .jx-hero__title{\r\n    color:var(--jx-lime);\r\n    font: 800 clamp(28px, 5vw, 50px)\/1.05 Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    margin:0 0 14px 0;\r\n    letter-spacing:-0.01em;\r\n  }\r\n  .jx-hero__lead{\r\n    font: 500 clamp(16px, 2.2vw, 20px)\/1.5 Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    margin:0 0 22px 0;\r\n    max-width:64ch;\r\n  }\r\n  .jx-hero__ctas{ display:flex; gap:12px; flex-wrap:wrap; }\r\n\r\n  .jx-btn{\r\n    display:inline-flex; align-items:center; justify-content:center;\r\n    padding: 12px 18px; border-radius:12px;\r\n    font: 700 15px\/1 Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    text-decoration:none;\r\n    transition:transform .06s ease, box-shadow .2s ease, background .2s ease;\r\n    will-change:transform;\r\n  }\r\n  .jx-btn--primary{ background:var(--jx-lime); color:#0d152f; box-shadow:0 8px 22px rgba(185,255,102,.18); }\r\n  .jx-btn--primary:hover{ transform:translateY(-1px); }\r\n  .jx-btn--ghost{ background:transparent; color:var(--jx-white); border:1px solid var(--jx-ghost); }\r\n  .jx-btn--ghost:hover{ background:rgba(255,255,255,.04); }\r\n\r\n  \/* Points cl\u00e9s *\/\r\n  .jx-bullets{\r\n    margin:14px 0 0 0; padding:0; list-style:none;\r\n    display:flex; flex-wrap:wrap; gap:10px 14px; max-width: 720px;\r\n    font: 600 13px\/1.5 Inter, system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    color:#cbd8ff;\r\n  }\r\n\r\n  \/* Visuel d\u00e9cor *\/\r\n  .jx-hero__visual{\r\n    position:absolute;\r\n    right: clamp(0px, 3vw, 48px);\r\n    bottom: calc(-1 * var(--jx-bleed-r) * 100%);\r\n    width: var(--jx-vis-w);\r\n    margin:0; pointer-events:none; z-index:2;\r\n    transform: translateY(-18%);\r\n  }\r\n\r\n  \/* ====== Mobile ====== *\/\r\n  @media (max-width: 820px){\r\n    .jx-hero-contact{ padding:20px 14px 16px; }\r\n    .jx-hero__in{ padding-right: 0; }\r\n    .jx-hero__title{ font-size:22px; line-height:1.2; margin-bottom:8px; }\r\n    .jx-hero__lead{ font-size:14px; line-height:1.5; margin-bottom:12px; max-width:none; }\r\n    .jx-hero__ctas{ flex-direction: column; align-items: stretch; gap: 8px; }\r\n    .jx-btn{ font-size:14px; padding:9px 12px; border-radius:10px; width:100%; }\r\n    .jx-bullets{ font-size:12.5px; gap:8px 10px; }\r\n\r\n    \/* Visuel : passe sous le contenu, plus petit, sans chevauchement *\/\r\n    :root{ --jx-bleed-r: 0; }                 \/* aucune sortie de cadre sur mobile *\/\r\n    .jx-hero__visual{\r\n      position: static;                       \/* quitte le mode absolute *\/\r\n      width: clamp(160px, 50vw, 240px);       \/* taille r\u00e9duite *\/\r\n      margin: 16px auto 0;                    \/* centr\u00e9 sous le bloc texte *\/\r\n      transform: none; right:auto; bottom:auto; z-index:0;\r\n    }\r\n  }\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3f2ba28 e-flex e-con-boxed e-con e-parent\" data-id=\"3f2ba28\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d254c2 elementor-widget elementor-widget-html\" data-id=\"4d254c2\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- SECTION \u2013 Avant de nous contacter (contexte + rassurance) -->\r\n<section class=\"jx-contact-intro\" aria-labelledby=\"jx-contact-title\">\r\n  <style>\r\n    .jx-contact-intro{\r\n      --ink:#0f1944; --text:#333; --brand:#0901F3; --green:#79FF63;\r\n      --r:18px; --shadow:0 12px 28px rgba(0,0,0,.08);\r\n      padding:40px 20px; color:var(--text);\r\n      font-family:\"Poppins\",system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif;\r\n      background:\r\n        radial-gradient(1100px 200px at 50% -10%, rgba(9,1,243,.08), transparent 60%),\r\n        radial-gradient(900px 180px at 50% 110%, rgba(121,255,99,.08), transparent 60%),\r\n        linear-gradient(180deg,#f7fbff 0%, #ffffff 100%);\r\n      border-top:1px solid rgba(121,255,99,.35);\r\n    }\r\n    .jx-contact__inner{ max-width:1000px; margin:0 auto }\r\n    .jx-contact__title{\r\n      margin:0 0 12px 0; font-family:\"Playfair Display\", Georgia, serif;\r\n      color:var(--ink); font-weight:800; line-height:1.2;\r\n      font-size:clamp(28px,3.6vw,36px);\r\n    }\r\n    .jx-card{\r\n      background:#fff; border-radius:var(--r);\r\n      border:1px solid rgba(121,255,99,.35); box-shadow:var(--shadow);\r\n      padding:clamp(16px,2.4vw,24px); display:grid; gap:10px;\r\n    }\r\n    .jx-list{ margin:0; padding:0; list-style:none; display:grid; gap:8px }\r\n    .jx-list li{ position:relative; padding-left:26px; line-height:1.6; font-weight:500 }\r\n    .jx-list li::before{ content:\"\u2713\"; position:absolute; left:0; top:.2rem; color:var(--green); font-weight:800 }\r\n\r\n    .jx-quick{ display:flex; flex-wrap:wrap; gap:8px; margin-top:6px }\r\n    .jx-pill{\r\n      display:inline-block; padding:8px 12px; border-radius:999px;\r\n      background:#f7fafc; border:1px solid #e6ecff; font-weight:600; color:#0f1944; text-decoration:none;\r\n      transition: border-color .2s, color .2s;\r\n    }\r\n    .jx-pill:hover{ color:#0700c7; border-color:#cfd9ff }\r\n\r\n    .jx-privacy{ font-size:.92rem; color:#586074; font-weight:600 }\r\n\r\n    @media (max-width:768px){\r\n      .jx-contact-intro{ padding:24px 14px }\r\n      .jx-contact__title{ font-size:18px; line-height:1.35; margin-bottom:10px }\r\n      .jx-card, .jx-list, .jx-privacy{ font-size:13px; line-height:1.5; letter-spacing:.12px }\r\n      .jx-pill{ padding:8px 10px }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"jx-contact__inner\">\r\n    <h2 id=\"jx-contact-title\" class=\"jx-contact__title\">Before contacting us, some useful information<\/h2>\r\n\r\n    <div class=\"jx-card\">\r\n      <ul class=\"jx-list\">\r\n        <li><strong>Response time:<\/strong> We will get back to you quickly (working days, Europe\/Paris).<\/li>\r\n        <li><strong>For a precise answer:<\/strong> indicate the subject (bug, suggestion, partnership, press) and, if necessary, your device.<\/li>\r\n        <li><strong>FAQ&nbsp;:<\/strong> Many common questions already have a clear answer.<\/li>\r\n        <li><strong>Confidentiality :<\/strong> no resale of data, no advertising tracking.<\/li>\r\n      <\/ul>\r\n\r\n      <div class=\"jx-quick\" role=\"navigation\" aria-label=\"Raccourcis\">\r\n        <a class=\"jx-pill\" href=\"\/en\/fonctionnalites-de-jourx-application-budget-quotidien\/#jx-faq-title\">Consult the FAQ<\/a>\r\n        <a class=\"jx-pill\" href=\"https:\/\/www.facebook.com\/profile.php?id=61566464919207\" target=\"_blank\" rel=\"noopener\">Facebook JourX<\/a>\r\n      <\/div>\r\n\r\n      <p class=\"jx-privacy\">Need personalized help? Fill out the form below, we read every message.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2b07\ufe0f Place ensuite TON FORMULAIRE ici (bloc\/Widget \u201cShortcode\u201d avec [fluentform id=\"3\"]) -->\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-43c4a1b e-flex e-con-boxed e-con e-parent\" data-id=\"43c4a1b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-29a1c58 elementor-widget elementor-widget-html\" data-id=\"29a1c58\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- SECTION \u2013 Formulaire de contact (AJAX + confirmation sur page) -->\r\n<section id=\"contact-form\" class=\"jx-cform\" aria-labelledby=\"jx-cform-title\">\r\n  <div class=\"jx-cform__inner\">\r\n    <h2 id=\"jx-cform-title\" class=\"jx-cform__title\">\u00c9crivez-nous<\/h2>\r\n    <p class=\"jx-cform__lead\">\r\n      Pour toute question, suggestion ou partenariat, utilisez le formulaire ci-dessous.<br>\r\n      Vous pouvez aussi nous \u00e9crire directement : <strong><a href=\"mailto:contact@jourx.fr\">contact@jourx.fr<\/a><\/strong>.\r\n    <\/p>\r\n\r\n    <div class=\"jx-card\">\r\n      <form id=\"jxContact\" novalidate action=\"\">\r\n        <!-- Honeypot anti-spam -->\r\n        <div class=\"jx-hp\" aria-hidden=\"true\">\r\n          <label>Ne pas remplir\r\n            <input type=\"text\" name=\"website\">\r\n          <\/label>\r\n        <\/div>\r\n\r\n        <!-- Sujet -->\r\n        <div class=\"jx-field\">\r\n          <label class=\"jx-label\" for=\"topic\">Sujet<\/label>\r\n          <select class=\"jx-select\" id=\"topic\" required aria-required=\"true\">\r\n            <option value=\"\" selected disabled>Choisir un sujet\u2026<\/option>\r\n            <option>Support<\/option>\r\n            <option>Bug<\/option>\r\n            <option>Suggestion<\/option>\r\n            <option>Partenariat<\/option>\r\n            <option>Press<\/option>\r\n            <option>Autre<\/option>\r\n          <\/select>\r\n          <div class=\"jx-error\" id=\"err-topic\" role=\"alert\" hidden>Choisissez un sujet.<\/div>\r\n        <\/div>\r\n\r\n        <!-- Coordonn\u00e9es -->\r\n        <div class=\"jx-grid\" style=\"margin-top:6px\">\r\n          <div class=\"jx-field\">\r\n            <label class=\"jx-label\" for=\"name\">Nom complet<\/label>\r\n            <input class=\"jx-input\" id=\"name\" type=\"text\" autocomplete=\"name\" required aria-required=\"true\" placeholder=\"Votre nom\">\r\n            <div class=\"jx-error\" id=\"err-name\" role=\"alert\" hidden>Indiquez votre nom.<\/div>\r\n          <\/div>\r\n          <div class=\"jx-field\">\r\n            <label class=\"jx-label\" for=\"email\">E-mail<\/label>\r\n            <input class=\"jx-input\" id=\"email\" type=\"email\" autocomplete=\"email\" required aria-required=\"true\" placeholder=\"vous@exemple.fr\">\r\n            <div class=\"jx-error\" id=\"err-email\" role=\"alert\" hidden>Renseignez un e-mail valide.<\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- T\u00e9l\u00e9phone (optionnel) -->\r\n        <div class=\"jx-field\" style=\"margin-top:6px\">\r\n          <label class=\"jx-label\" for=\"phone\">T\u00e9l\u00e9phone (optionnel)<\/label>\r\n          <input class=\"jx-input\" id=\"phone\" type=\"tel\" autocomplete=\"tel\" placeholder=\"+33 \u2026\">\r\n        <\/div>\r\n\r\n        <!-- Upload fichier (remplace le champ URL) -->\r\n        <div class=\"jx-field\" style=\"margin-top:6px\">\r\n          <label class=\"jx-label\" for=\"file\">Pi\u00e8ce jointe (optionnel)<\/label>\r\n          <input class=\"jx-input\" id=\"file\" name=\"attachment\" type=\"file\"\r\n                 accept=\".jpg,.jpeg,.png,.webp,.gif,.pdf\" aria-describedby=\"file-help\">\r\n          <div class=\"jx-hint\" id=\"file-help\">Formats accept\u00e9s : JPG, PNG, WEBP, GIF, PDF \u2014 max 10&nbsp;Mo.<\/div>\r\n          <div class=\"jx-error\" id=\"err-file\" role=\"alert\" hidden>Fichier trop volumineux ou format non autoris\u00e9.<\/div>\r\n        <\/div>\r\n\r\n        <!-- Message -->\r\n        <div class=\"jx-field\" style=\"margin-top:6px\">\r\n          <label class=\"jx-label\" for=\"message\">Message<\/label>\r\n          <textarea class=\"jx-textarea\" id=\"message\" required aria-required=\"true\" placeholder=\"Dites-nous tout\u2026\"><\/textarea>\r\n          <div class=\"jx-error\" id=\"err-message\" role=\"alert\" hidden>Votre message doit contenir au moins 12 caract\u00e8res.<\/div>\r\n        <\/div>\r\n\r\n        <!-- Consentement -->\r\n        <div class=\"jx-row\" style=\"margin-top:2px\">\r\n          <label class=\"jx-consent\">\r\n            <input class=\"jx-checkbox\" type=\"checkbox\" id=\"consent\" required aria-required=\"true\">\r\n            <span>J\u2019accepte que mes informations soient utilis\u00e9es pour r\u00e9pondre \u00e0 ma demande. <a href=\"\/en\/politique-de-confidentialite\/\">\u279c Learn more<\/a>.<\/span>\r\n          <\/label>\r\n          <div class=\"jx-error\" id=\"err-consent\" role=\"alert\" hidden>Merci de valider le consentement.<\/div>\r\n        <\/div>\r\n\r\n        <!-- Actions -->\r\n        <div class=\"jx-actions\">\r\n          <button id=\"jxSend\" class=\"jx-btn jx-btn--primary\" type=\"submit\">Envoyer le message<\/button>\r\n          <a class=\"jx-btn jx-btn--ghost\" href=\"mailto:contact@jourx.fr?subject=Contact%20JourX\" rel=\"nofollow\">\u00c9crire via ma messagerie<\/a>\r\n        <\/div>\r\n\r\n        <!-- Statut -->\r\n        <div id=\"jxStatus\" class=\"jx-status\" role=\"status\" aria-live=\"polite\" hidden><\/div>\r\n\r\n        <!-- M\u00e9tadonn\u00e9es invisibles -->\r\n        <input type=\"hidden\" id=\"meta_ua\"  value=\"\">\r\n        <input type=\"hidden\" id=\"meta_url\" value=\"\">\r\n      <input type=\"hidden\" name=\"trp-form-language\" value=\"en\"\/><\/form>\r\n    <\/div>\r\n\r\n    <p class=\"jx-alt\">Besoin d\u2019une r\u00e9ponse rapide&nbsp;? Consultez aussi la <a href=\"\/en\/fonctionnalites-de-jourx-application-budget-quotidien\/#jx-faq-title\">FAQ JourX<\/a>.<\/p>\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  .jx-cform{ --ink:#0f1944; --text:#333; --brand:#0901F3; --green:#79FF63; --ghost:#e6ecff;\r\n    --r:18px; --shadow:0 12px 28px rgba(0,0,0,.08);\r\n    padding:40px 20px; color:var(--text);\r\n    font-family:\"Poppins\",system-ui,-apple-system,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif;\r\n    background: radial-gradient(1100px 200px at 50% -10%, rgba(9,1,243,.08), transparent 60%),\r\n                radial-gradient(900px 180px at 50% 110%, rgba(121,255,99,.08), transparent 60%),\r\n                linear-gradient(180deg,#f7fbff 0%, #ffffff 100%);\r\n    border-top:1px solid rgba(121,255,99,.35) }\r\n  .jx-cform__inner{ max-width:900px; margin:0 auto }\r\n  .jx-cform__title{ margin:0 0 12px; font-family:\"Playfair Display\", Georgia, serif; color:var(--ink);\r\n    font-weight:800; line-height:1.2; font-size:clamp(28px,3.4vw,38px) }\r\n  .jx-cform__lead{ margin:0 0 18px; line-height:1.6; font-weight:600; color:#465066 }\r\n  .jx-card{ background:#fff; border-radius:var(--r); border:1px solid rgba(121,255,99,.35);\r\n    box-shadow:var(--shadow); padding:clamp(16px,2.4vw,24px); display:grid; gap:10px }\r\n  .jx-grid{ display:grid; gap:14px; grid-template-columns:1fr 1fr }\r\n  .jx-field{ display:grid; gap:6px }\r\n  .jx-label{ font-weight:700; color:#0f1944 }\r\n  .jx-hint{ font-size:.92rem; color:#586074; font-weight:600 }\r\n  .jx-input,.jx-select,.jx-textarea{\r\n    width:100%; border:1px solid var(--ghost); background:#fafcff; border-radius:12px; padding:12px 14px;\r\n    font:inherit; font-weight:600; color:#0f1944; outline:none; transition: box-shadow .15s, border-color .15s, background .15s }\r\n  .jx-input:focus,.jx-select:focus,.jx-textarea:focus{ border-color:#cfd9ff; box-shadow:0 0 0 4px rgba(9,1,243,.08); background:#fff }\r\n  .jx-textarea{ min-height:140px; resize:vertical }\r\n  .jx-error{ color:#a40000; font-weight:700; font-size:.92rem }\r\n  .jx-invalid{ border-color:#ffb3b3 !important; box-shadow:0 0 0 4px rgba(255,0,0,.08) !important }\r\n  .jx-row{ display:flex; gap:12px; align-items:center; flex-wrap:wrap }\r\n  .jx-consent{ display:flex; align-items:flex-start; gap:8px }\r\n  .jx-checkbox{ width:18px; height:18px; margin-top:2px }\r\n  .jx-actions{ margin-top:8px; display:flex; flex-wrap:wrap; gap:10px }\r\n  .jx-btn{ display:inline-flex; align-items:center; justify-content:center; padding:12px 16px; border-radius:12px;\r\n    font-weight:800; text-decoration:none; transition:transform .06s ease, box-shadow .2s ease; }\r\n  .jx-btn:active{ transform:translateY(1px) }\r\n  .jx-btn--primary{ background:linear-gradient(0deg,#0901F3,#0901F3); color:#fff; border:1px solid transparent; box-shadow:0 8px 18px rgba(9,1,243,.18) }\r\n  .jx-btn--ghost{ background:#fff; color:#0901F3; border:1px solid #dfe4ff }\r\n  .jx-status{ margin-top:10px; font-weight:700; color:#0f1944 }\r\n  .jx-status[hidden]{ display:none }\r\n  .jx-alt{ margin-top:12px; font-weight:600; color:#465066 }\r\n  .jx-alt a{ color:#0901F3; text-decoration:none; border-bottom:1px solid transparent }\r\n  .jx-alt a:hover{ border-bottom-color:#0700c7 }\r\n  .jx-hp{ position:absolute; left:-9999px; top:-9999px; height:0; width:0; overflow:hidden }\r\n  @media (max-width:768px){\r\n    .jx-cform{ padding:24px 14px }\r\n    .jx-cform__title{ font-size:18px; line-height:1.35; margin-bottom:10px }\r\n    .jx-cform__lead,.jx-card,.jx-hint,.jx-status,.jx-alt{ font-size:13px; line-height:1.5; letter-spacing:.12px; font-weight:500 }\r\n    .jx-grid{ grid-template-columns:1fr }\r\n    .jx-btn{ width:100%; padding:12px 14px; border-radius:10px }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  const form   = document.getElementById('jxContact');\r\n  const status = document.getElementById('jxStatus');\r\n  const btn    = document.getElementById('jxSend');\r\n  const fileIn = document.getElementById('file');\r\n\r\n  const okStyle = 'background:#f0fff2;border:1px solid rgba(121,255,99,.45);padding:10px 12px;border-radius:12px;';\r\n  const koStyle = 'background:#fff5f5;border:1px solid #ffd3d3;padding:10px 12px;border-radius:12px;';\r\n\r\n  \/\/ M\u00e9tadonn\u00e9es\r\n  document.getElementById('meta_ua').value  = navigator.userAgent || '';\r\n  document.getElementById('meta_url').value = location.href;\r\n\r\n  function showErr(id){ const el=document.getElementById(id); if(el) el.hidden=false; }\r\n  function hideErr(id){ const el=document.getElementById(id); if(el) el.hidden=true; }\r\n  function markInvalid(el){ el.classList.add('jx-invalid'); }\r\n  function clearInvalid(el){ el.classList.remove('jx-invalid'); }\r\n  function validEmail(v){ return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/.test(String(v).trim()); }\r\n\r\n  form.addEventListener('submit', async function(ev){\r\n    ev.preventDefault();\r\n\r\n    \/\/ Reset erreurs\r\n    ['err-topic','err-name','err-email','err-message','err-consent','err-file'].forEach(hideErr);\r\n    Array.from(form.querySelectorAll('.jx-invalid')).forEach(el=>el.classList.remove('jx-invalid'));\r\n    status.hidden = true; status.textContent=''; status.style='';\r\n\r\n    \/\/ Honeypot\r\n    if (form.querySelector('input[name=\"website\"]').value.trim() !== '') { return; }\r\n\r\n    let ok = true;\r\n    const topic   = document.getElementById('topic');\r\n    const name    = document.getElementById('name');\r\n    const email   = document.getElementById('email');\r\n    const message = document.getElementById('message');\r\n    const consent = document.getElementById('consent');\r\n\r\n    if(!topic.value){ ok=false; showErr('err-topic'); markInvalid(topic); } else clearInvalid(topic);\r\n    if(!name.value.trim()){ ok=false; showErr('err-name'); markInvalid(name); } else clearInvalid(name);\r\n    if(!validEmail(email.value)){ ok=false; showErr('err-email'); markInvalid(email); } else clearInvalid(email);\r\n    if((message.value||'').trim().length < 12){ ok=false; showErr('err-message'); markInvalid(message); } else clearInvalid(message);\r\n    if(!consent.checked){ ok=false; showErr('err-consent'); }\r\n\r\n    \/\/ Validation fichier (si pr\u00e9sent)\r\n    const file = fileIn && fileIn.files && fileIn.files[0] ? fileIn.files[0] : null;\r\n    if(file){\r\n      const okType = \/^(image\\\/(jpeg|png|webp|gif)|application\\\/pdf)$\/i.test(file.type) ||\r\n                     \/\\.(jpe?g|png|webp|gif|pdf)$\/i.test(file.name);\r\n      if (!okType || file.size > 10 * 1024 * 1024) {\r\n        ok=false; showErr('err-file'); markInvalid(fileIn);\r\n      } else {\r\n        clearInvalid(fileIn);\r\n      }\r\n    }\r\n\r\n    if(!ok) return;\r\n\r\n    \/\/ Payload multipart\r\n    const fd = new FormData();\r\n    fd.append('topic', topic.value);\r\n    fd.append('name', name.value.trim());\r\n    fd.append('email', email.value.trim());\r\n    fd.append('phone', (document.getElementById('phone').value||'').trim());\r\n    fd.append('message', message.value.trim());\r\n    fd.append('ua',    document.getElementById('meta_ua').value);\r\n    fd.append('page',  document.getElementById('meta_url').value);\r\n    if(file){ fd.append('attachment', file); }\r\n\r\n    btn.disabled = true;\r\n    status.hidden = false;\r\n    status.textContent = 'Envoi en cours\u2026';\r\n\r\n    try{\r\n      const res  = await fetch('\/wp-json\/jourx\/v1\/contact', { method:'POST', body: fd });\r\n      const data = await res.json();\r\n      if(!res.ok || !data.ok){ throw new Error(data && data.msg ? data.msg : '\u00c9chec serveur'); }\r\n\r\n      form.reset();\r\n      status.style = okStyle;\r\n      status.innerHTML = `\u2705 Merci, votre message a \u00e9t\u00e9 envoy\u00e9.<br>Num\u00e9ro de ticket : <strong>${data.ticket}<\/strong>.<br>Un e-mail de confirmation vous a \u00e9t\u00e9 adress\u00e9.`;\r\n      btn.disabled = false;\r\n\r\n    }catch(e){\r\n      \/\/ Fallback mailto (sans la pi\u00e8ce jointe)\r\n      const lines = [\r\n        'Sujet : ' + topic.value,\r\n        'Nom : ' + name.value.trim(),\r\n        'Email : ' + email.value.trim(),\r\n        (document.getElementById('phone').value||'').trim() ? ('T\u00e9l\u00e9phone : ' + document.getElementById('phone').value.trim()) : '',\r\n        '',\r\n        'Message :',\r\n        (message.value||'').trim(),\r\n        '',\r\n        '---',\r\n        'Contexte :',\r\n        'Page : ' + (document.getElementById('meta_url').value||''),\r\n        'Agent : ' + (document.getElementById('meta_ua').value||'')\r\n      ].filter(Boolean);\r\n      const body = encodeURIComponent(lines.join('\\n'));\r\n      const subject = encodeURIComponent('Contact JourX \u2014 ' + (topic.value||''));\r\n      const href = `mailto:contact@jourx.fr?subject=${subject}&body=${body}`;\r\n\r\n      status.style = koStyle;\r\n      status.innerHTML = 'Le serveur est indisponible \u2014 ouverture de votre messagerie\u2026';\r\n      window.location.href = href;\r\n      setTimeout(()=>{ btn.disabled=false; }, 2500);\r\n    }\r\n  }, {passive:false});\r\n})();\r\n<\/script>\r\n<script>\r\n\/* JourX \u2013 i18n du formulaire contact en fonction de la langue (EN uniquement) *\/\r\n(function () {\r\n  const lang = (document.documentElement.lang || '').toLowerCase();\r\n  const isEN  = lang.startsWith('en');   \/\/ en, en-US, en_GB\u2026\r\n  if (!isEN) return;                     \/\/ En FR on ne change rien\r\n\r\n  \/\/ Dictionnaire EN\r\n  const T = {\r\n    title: 'Write to us',\r\n    leadHTML:\r\n      'For any question, suggestion, or partnership, use the form below.<br>' +\r\n      'You can also email us directly: <strong><a href=\"mailto:contact@jourx.fr\">contact@jourx.fr<\/a><\/strong>.',\r\n    labels: {\r\n      topic:   'Subject',\r\n      name:    'Full name',\r\n      email:   'Email',\r\n      phone:   'Phone (optional)',\r\n      file:    'Attachment (optional)',\r\n      message: 'Message'\r\n    },\r\n    placeholders: {\r\n      name:    'Your name',\r\n      email:   'you@example.com',\r\n      phone:   '+33 \u2026',\r\n      message: 'Tell us everything\u2026'\r\n    },\r\n    fileHint: 'Accepted formats: JPG, PNG, WEBP, GIF, PDF \u2014 max 10 MB.',\r\n    select: {\r\n      placeholder: 'Choose a topic\u2026',\r\n      items: ['Support','Bug','Suggestion','Partnership','Press','Other']\r\n    },\r\n    consentHTML:\r\n      'I agree that my information will be used to answer my request. <a href=\"\/en\/privacy-policy\/\">Learn more<\/a>.',\r\n    errors: {\r\n      topic:   'Please choose a topic.',\r\n      name:    'Please enter your name.',\r\n      email:   'Enter a valid email address.',\r\n      message: 'Your message must be at least 12 characters long.',\r\n      consent: 'Please accept the consent.',\r\n      file:    'File too large or unsupported format.'\r\n    },\r\n    buttons: {\r\n      submit: 'Send message',\r\n      ghost:  'Open my email app'\r\n    },\r\n    altLineHTML:\r\n      'Need a quick reply? Also check the <a href=\"\/en\/features\/#jx-faq-title\">JourX FAQ<\/a>.',\r\n    status: {\r\n      sending: 'Sending\u2026',\r\n      success(ticket) {\r\n        return '\u2705 Thanks, your message has been sent.<br>' +\r\n               'Ticket number: <strong>' + ticket + '<\/strong>.<br>' +\r\n               'A confirmation email has been sent to you.';\r\n      },\r\n      fail: 'Server unavailable \u2014 opening your email app\u2026'\r\n    }\r\n  };\r\n\r\n  \/\/ Helpers\r\n  const $    = (s) => document.querySelector(s);\r\n  const setH = (s, html) => { const el = $(s); if (el) el.innerHTML = html; };\r\n  const setT = (s, txt)  => { const el = $(s); if (el) el.textContent = txt; };\r\n  const setA = (s, a, v) => { const el = $(s); if (el) el.setAttribute(a, v); };\r\n\r\n  \/\/ Titre & lead\r\n  setT('#jx-cform-title', T.title);\r\n  setH('.jx-cform__lead', T.leadHTML);\r\n\r\n  \/\/ Labels\r\n  const setLabel = (id, txt) => {\r\n    const el = document.querySelector('label.jx-label[for=\"'+id+'\"]');\r\n    if (el) el.textContent = txt;\r\n  };\r\n  setLabel('topic',   T.labels.topic);\r\n  setLabel('name',    T.labels.name);\r\n  setLabel('email',   T.labels.email);\r\n  setLabel('phone',   T.labels.phone);\r\n  setLabel('file',    T.labels.file);\r\n  setLabel('message', T.labels.message);\r\n\r\n  \/\/ Placeholders\r\n  setA('#name',    'placeholder', T.placeholders.name);\r\n  setA('#email',   'placeholder', T.placeholders.email);\r\n  setA('#phone',   'placeholder', T.placeholders.phone);\r\n  setA('#message', 'placeholder', T.placeholders.message);\r\n\r\n  \/\/ Select \"Sujet\"\r\n  (function () {\r\n    const sel = document.getElementById('topic');\r\n    if (!sel) return;\r\n    if (sel.options[0]) sel.options[0].text = T.select.placeholder;\r\n    const items = T.select.items;\r\n    for (let i = 1; i < sel.options.length && i <= items.length; i++) {\r\n      sel.options[i].text = items[i - 1];\r\n    }\r\n  })();\r\n\r\n  \/\/ Aide champ fichier\r\n  setT('#file-help', T.fileHint);\r\n\r\n  \/\/ Erreurs\r\n  setT('#err-topic',   T.errors.topic);\r\n  setT('#err-name',    T.errors.name);\r\n  setT('#err-email',   T.errors.email);\r\n  setT('#err-message', T.errors.message);\r\n  setT('#err-consent', T.errors.consent);\r\n  setT('#err-file',    T.errors.file);\r\n\r\n  \/\/ Consentement (texte + lien)\r\n  (function () {\r\n    const span = document.querySelector('.jx-consent span');\r\n    if (span) span.innerHTML = T.consentHTML;\r\n  })();\r\n\r\n  \/\/ Boutons\r\n  setT('#jxSend', T.buttons.submit);\r\n  const ghostBtn = document.querySelector('.jx-actions .jx-btn--ghost');\r\n  if (ghostBtn) ghostBtn.textContent = T.buttons.ghost;\r\n\r\n  \/\/ Lien alternatif (FAQ)\r\n  setH('.jx-alt', T.altLineHTML);\r\n\r\n  \/\/ Traduction des messages de statut via MutationObserver\r\n  (function () {\r\n    const statusEl = document.getElementById('jxStatus');\r\n    if (!statusEl) return;\r\n\r\n    const obs = new MutationObserver(() => {\r\n      const rawText = statusEl.textContent.trim();\r\n\r\n      \/\/ \"Envoi en cours\u2026\"\r\n      if (\/Envoi en cours\/i.test(rawText)) {\r\n        statusEl.textContent = T.status.sending;\r\n        return;\r\n      }\r\n\r\n      \/\/ \"Le serveur est indisponible \u2014 ouverture de votre messagerie\u2026\"\r\n      if (\/serveur est indisponible\/i.test(rawText)) {\r\n        statusEl.textContent = T.status.fail;\r\n        return;\r\n      }\r\n\r\n      \/\/ Succ\u00e8s : extraire le ticket du HTML FR et r\u00e9\u00e9crire en EN\r\n      const html = statusEl.innerHTML;\r\n      const m = html.match(\/Num[\u00e9e]ro de ticket\\s*:\\s*<strong>([^<]+)<\\\/strong>\/i);\r\n      if (m) {\r\n        statusEl.innerHTML = T.status.success(m[1]);\r\n        return;\r\n      }\r\n    });\r\n\r\n    obs.observe(statusEl, { childList: true, subtree: true, characterData: true });\r\n  })();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1208","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/pages\/1208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/comments?post=1208"}],"version-history":[{"count":26,"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/pages\/1208\/revisions"}],"predecessor-version":[{"id":2555,"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/pages\/1208\/revisions\/2555"}],"wp:attachment":[{"href":"https:\/\/jourx.fr\/en\/wp-json\/wp\/v2\/media?parent=1208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}