{"id":1849,"date":"2024-12-18T00:36:52","date_gmt":"2024-12-17T23:36:52","guid":{"rendered":"https:\/\/lucasgoret.com\/?page_id=1849"},"modified":"2026-09-22T06:40:42","modified_gmt":"2026-09-22T04:40:42","slug":"formulaire","status":"publish","type":"page","link":"https:\/\/lucasgoret.com\/index.php\/formulaire\/","title":{"rendered":"CONTACT"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1849\" class=\"elementor elementor-1849\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ecd467a e-flex e-con-boxed e-con e-parent\" data-id=\"ecd467a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-153969f elementor-widget elementor-widget-html\" data-id=\"153969f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!doctype html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<title>Contact \u2014 Lucas Goret<\/title>\n<style>\n:root{\n  --bg:#070707;\n  --ink:#f2f0e9;\n  --muted:#5a5955;\n  --line:rgba(242,240,233,.15);\n  --line-soft:rgba(242,240,233,.08);\n  --acid:#918bff;\n  --field-placeholder:#565550;\n  --hover-bg:#f2f0e9;\n  --hover-ink:#070707;\n}\n\nhtml[data-theme=\"light\"]{\n  --bg:#f2f0e9;\n  --ink:#0a0a0a;\n  --muted:#6c6a64;\n  --line:rgba(10,10,10,.18);\n  --line-soft:rgba(10,10,10,.09);\n  --field-placeholder:#8a8881;\n  --hover-bg:#ffffff;\n  --hover-ink:#070707;\n}\n\n*{box-sizing:border-box}\n\nhtml,body{\n  margin:0;\n  min-height:100%;\n  background:var(--bg);\n  color:var(--ink);\n  font-family:Inter,Arial,sans-serif;\n  transition:background .25s ease,color .25s ease;\n}\n\nbody{min-height:100svh}\n\n#contact{\n  min-height:100svh;\n  background:\n    radial-gradient(circle at 78% 8%,rgba(145,139,255,.04),transparent 28%),\n    var(--bg);\n}\n\n.wrap{\n  position:relative;\n  width:min(1500px,calc(100% - 56px));\n  min-height:100svh;\n  margin:0 auto;\n  display:grid;\n  grid-template-rows:auto 1fr auto;\n}\n\n\n.theme-toggle{\n  position:absolute;\n  top:14px;\n  right:0;\n  z-index:5;\n  width:36px;\n  height:36px;\n  display:grid;\n  place-items:center;\n  padding:0;\n  border:1px solid var(--line);\n  border-radius:50%;\n  background:transparent;\n  color:var(--ink);\n  font:inherit;\n  font-size:15px;\n  line-height:1;\n  cursor:pointer;\n  transition:.2s ease;\n}\n\n.theme-toggle:hover{\n  border-color:var(--acid);\n  color:var(--acid);\n}\n\nhtml[data-theme=\"light\"] #contact{\n  background:\n    radial-gradient(circle at 78% 8%,rgba(145,139,255,.09),transparent 28%),\n    var(--bg);\n}\n\n\/* HEADER *\/\n.header{\n  display:grid;\n  grid-template-columns:auto auto;\n  justify-content:start;\n  gap:22px;\n  align-items:end;\n  padding:28px 0 20px;\n  border-bottom:1px solid var(--line);\n}\n\n.title{\n  margin:0;\n  max-width:none;\n  width:max-content;\n  font-size:clamp(64px,9.6vw,132px);\n  line-height:.84;\n  letter-spacing:-.072em;\n  font-weight:760;\n  text-transform:none;\n}\n\n.title span{\n  display:block;\n  width:max-content;\n  white-space:nowrap;\n}\n\n.title .outline{\n  margin-top:0;\n  font-size:1em;\n  letter-spacing:inherit;\n  color:var(--acid);\n  -webkit-text-stroke:0;\n}\n\n.title [data-parallax]{\n  will-change:transform;\n  transform:translate3d(0,0,0);\n}\n\n.back{\n  display:inline-flex;\n  align-items:center;\n  gap:0;\n  margin:0 0 4px;\n  color:#bdbbb4;\n  text-decoration:none;\n  white-space:nowrap;\n}\n\n.back i{\n  width:38px;\n  height:38px;\n  display:grid;\n  place-items:center;\n  border:1px solid rgba(145,139,255,.72);\n  border-radius:50%;\n  color:var(--acid);\n  font-style:normal;\n}\n\n.back:hover{color:#fff}\n\n\/* FORM *\/\n.form{\n  min-height:0;\n  display:block;\n}\n\n.form-main{\n  display:grid;\n  grid-template-columns:minmax(260px,34%) minmax(0,66%);\n  gap:52px;\n  align-items:stretch;\n  padding:24px 0 0;\n  border-bottom:1px solid var(--line);\n}\n\n.left-stack{\n  display:grid;\n  grid-template-rows:repeat(3,1fr);\n  align-content:stretch;\n}\n\n.field{\n  position:relative;\n  padding:14px 0 14px;\n  border-bottom:1px solid var(--line);\n}\n\n.left-stack .field:first-child{padding-top:0}\n.left-stack .field:last-child{border-bottom:0}\n\n.field:after{\n  content:\"\";\n  position:absolute;\n  left:0;\n  right:100%;\n  bottom:-1px;\n  height:1px;\n  background:var(--acid);\n  transition:right .22s ease;\n}\n\n.field:focus-within:after{right:0}\n\nlabel{\n  display:block;\n  margin-bottom:10px;\n  color:var(--acid);\n  font-size:9px;\n  font-weight:850;\n  letter-spacing:.17em;\n  text-transform:uppercase;\n}\n\ninput,\ntextarea{\n  width:100%;\n  margin:0;\n  padding:0;\n  border:0;\n  outline:0;\n  background:transparent;\n  color:var(--ink);\n  font:inherit;\n  font-size:clamp(18px,1.4vw,22px);\n  line-height:1.35;\n  letter-spacing:-.025em;\n  box-shadow:none;\n  border-radius:0;\n  appearance:none;\n}\n\ninput::placeholder,\ntextarea::placeholder{\n  color:var(--field-placeholder);\n  opacity:1;\n}\n\n\/* MESSAGE = VRAIE COLONNE \u00c0 DROITE *\/\n.message-panel{\n  min-width:0;\n  display:flex;\n  height:100%;\n}\n\n.message-field{\n  width:100%;\n  height:100%;\n  display:flex;\n  flex-direction:column;\n  padding:0 0 18px;\n  border-bottom:0;\n}\n\n.message-field textarea{\n  flex:1;\n  min-height:0;\n  height:100%;\n  resize:none;\n}\n\n.form-bottom{\n  display:flex;\n  justify-content:flex-end;\n  padding:14px 0 12px;\n}\n\n.submit{\n  border:1px solid rgba(145,139,255,.58);\n  border-radius:999px;\n  background:rgba(145,139,255,.07);\n  color:var(--ink);\n  display:inline-flex;\n  align-items:center;\n  gap:16px;\n  padding:10px 11px 10px 18px;\n  font:inherit;\n  font-size:10px;\n  font-weight:850;\n  letter-spacing:.12em;\n  text-transform:uppercase;\n  cursor:pointer;\n}\n\n.submit b{\n  width:34px;\n  height:34px;\n  display:grid;\n  place-items:center;\n  border-radius:50%;\n  background:var(--acid)!important;\n  color:#09090b!important;\n  -webkit-text-fill-color:#09090b!important;\n  font-size:15px;\n}\n\n.footer{\n  display:flex;\n  justify-content:space-between;\n  gap:20px;\n  padding:10px 0 14px;\n  border-top:1px solid var(--line-soft);\n  color:#66655f;\n  font-size:9px;\n  letter-spacing:.13em;\n  text-transform:uppercase;\n}\n\n\/* IMPORTANT : on garde les 2 colonnes jusque tr\u00e8s petit *\/\n@media(max-width:560px){\n  .wrap{width:calc(100% - 24px)}\n\n  .header{\n    grid-template-columns:auto auto;\n    justify-content:start;\n    gap:14px;\n    padding:24px 0 18px;\n  }\n\n  .title{\n    font-size:clamp(42px,12vw,62px);\n  }\n\n  .form-main{\n    grid-template-columns:1fr;\n    gap:0;\n  }\n\n  .left-stack .field:last-child{\n    border-bottom:1px solid var(--line);\n  }\n\n  .message-panel{\n    padding-top:18px;\n  }\n\n  .message-field textarea{\n    min-height:130px;\n  }\n\n  .submit{\n    width:100%;\n    justify-content:space-between;\n  }\n\n  .footer{\n    flex-direction:column;\n    gap:6px;\n  }\n}\n\n\/* === VERROUILLAGE HOVER BOUTONS \u2014 NE RIEN LAISSER AU THEME GLOBAL === *\/\n#contact button.theme-toggle,\n#contact button.submit{\n  background-image:none!important;\n  box-shadow:none!important;\n  text-shadow:none!important;\n}\n\n#contact button.theme-toggle:hover,\n#contact button.theme-toggle:focus-visible,\n#contact button.theme-toggle:active{\n  background:#f2f0e9!important;\n  background-image:none!important;\n  color:#070707!important;\n  -webkit-text-fill-color:#070707!important;\n  border-color:#f2f0e9!important;\n  box-shadow:none!important;\n}\n\n#contact button.submit:hover,\n#contact button.submit:focus-visible,\n#contact button.submit:active{\n  background:#f2f0e9!important;\n  background-image:none!important;\n  color:#070707!important;\n  -webkit-text-fill-color:#070707!important;\n  border-color:#f2f0e9!important;\n  box-shadow:none!important;\n  text-shadow:none!important;\n  transform:translateY(-2px);\n}\n\nhtml[data-theme=\"light\"] #contact button.theme-toggle:hover,\nhtml[data-theme=\"light\"] #contact button.theme-toggle:focus-visible,\nhtml[data-theme=\"light\"] #contact button.theme-toggle:active,\nhtml[data-theme=\"light\"] #contact button.submit:hover,\nhtml[data-theme=\"light\"] #contact button.submit:focus-visible,\nhtml[data-theme=\"light\"] #contact button.submit:active{\n  background:#070707!important;\n  color:#f2f0e9!important;\n  -webkit-text-fill-color:#f2f0e9!important;\n  border-color:#070707!important;\n}\n\n#contact button.submit:hover b,\n#contact button.submit:focus-visible b,\n#contact button.submit:active b{\n  background:var(--acid)!important;\n  color:#070707!important;\n  -webkit-text-fill-color:#070707!important;\n}\n\n\n#contact .lg-form-status{\n  min-height:0;\n  margin:0;\n  padding:0;\n  color:var(--ink);\n  font-size:11px;\n  line-height:1.45;\n  letter-spacing:.02em;\n}\n\n#contact .lg-form-status:not(:empty){\n  padding-top:12px;\n}\n\n#contact .lg-form-status.is-ok{\n  color:var(--acid);\n}\n\n#contact .lg-form-status.is-error{\n  color:var(--ink);\n}\n\n#contact button.submit:disabled{\n  opacity:.55!important;\n  cursor:wait!important;\n  transform:none!important;\n}\n\n<\/style>\n<\/head>\n<body>\n\n<main id=\"contact\">\n  <div class=\"wrap\">\n\n    <button class=\"theme-toggle\" type=\"button\" aria-label=\"Changer le th\u00e8me\" title=\"Changer le th\u00e8me\">\u263c<\/button>\n\n    <header class=\"header\">\n      <h1 class=\"title\">\n        <span data-parallax=\"-0.075\">Parlons de<\/span>\n        <span class=\"outline\" data-parallax=\"0.060\">votre projet.<\/span>\n      <\/h1>\n\n      <a class=\"back\" href=\"https:\/\/lucasgoret.com\/\" aria-label=\"Retour au site\">\n        <i>\u2190<\/i>\n      <\/a>\n    <\/header>\n\n    <form class=\"form\" id=\"lg-contact-form\" novalidate>\n      <div class=\"form-main\">\n\n        <div class=\"left-stack\">\n          <div class=\"field\">\n            <label for=\"name\">Nom<\/label>\n            <input id=\"name\" name=\"your-name\" type=\"text\" placeholder=\"Votre nom\" required>\n          <\/div>\n\n          <div class=\"field\">\n            <label for=\"email\">Email<\/label>\n            <input id=\"email\" name=\"your-email\" type=\"email\" placeholder=\"votre@email.com\" required>\n          <\/div>\n\n          <div class=\"field\">\n            <label for=\"project\">Projet<\/label>\n            <input id=\"project\" name=\"your-subject\" type=\"text\" placeholder=\"Film, publicit\u00e9, jeu, identit\u00e9 sonore\u2026\" required>\n          <\/div>\n        <\/div>\n\n        <div class=\"message-panel\">\n          <div class=\"field message-field\">\n            <label for=\"message\">Message<\/label>\n            <textarea id=\"message\" name=\"your-message\" maxlength=\"2000\" placeholder=\"Parlez-moi du projet\u2026\" required><\/textarea>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n      <div id=\"lg-form-status\" class=\"lg-form-status\" role=\"status\" aria-live=\"polite\"><\/div>\n\n      <div class=\"form-bottom\">\n        <button class=\"submit\" type=\"submit\">\n          Envoyer\n          <b>\u2197<\/b>\n        <\/button>\n      <\/div>\n    <\/form>\n\n    <footer class=\"footer\">\n      <span>\u00a9 2026<\/span>\n      <span>Tous droits r\u00e9serv\u00e9s - Lucas Goret<\/span>\n    <\/footer>\n\n  <\/div>\n<\/main>\n\n\n<script>\n(function(){\n  const root = document.documentElement;\n  const button = document.querySelector('.theme-toggle');\n  const saved = localStorage.getItem('lg-contact-theme');\n  const preferredLight = window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches;\n  const initial = saved || (preferredLight ? 'light' : 'dark');\n\n  function apply(theme){\n    root.setAttribute('data-theme', theme);\n    button.textContent = theme === 'dark' ? '\u263c' : '\u25d0';\n    button.setAttribute('aria-label', theme === 'dark' ? 'Passer en mode clair' : 'Passer en mode sombre');\n    button.setAttribute('title', theme === 'dark' ? 'Mode clair' : 'Mode sombre');\n  }\n\n  apply(initial);\n\n  button.addEventListener('click', function(){\n    const next = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';\n    localStorage.setItem('lg-contact-theme', next);\n    apply(next);\n  });\n})();\n<\/script>\n\n\n<script>\n(function(){\n  const title = document.querySelector('.title');\n  if(!title) return;\n\n  const reduced = window.matchMedia &&\n    window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  const nodes = [...title.querySelectorAll('[data-parallax]')];\n  if(reduced || !nodes.length) return;\n\n  let tick = false;\n\n  function update(){\n    const vh = window.innerHeight || document.documentElement.clientHeight;\n\n    nodes.forEach(el => {\n      const r = el.getBoundingClientRect();\n\n      if(r.bottom > 0 && r.top < vh){\n        const strength = parseFloat(el.dataset.parallax) || 0;\n        const delta = (r.top + r.height \/ 2) - (vh \/ 2);\n        const max = Math.abs(strength) >= .06 ? 48 : 28;\n        const y = Math.max(-max, Math.min(max, delta * strength));\n\n        el.style.transform = `translate3d(0,${y.toFixed(2)}px,0)`;\n      }\n    });\n\n    tick = false;\n  }\n\n  window.addEventListener('scroll', () => {\n    if(!tick){\n      requestAnimationFrame(update);\n      tick = true;\n    }\n  }, {passive:true});\n\n  window.addEventListener('resize', update, {passive:true});\n  update();\n})();\n<\/script>\n\n\n<script>\n(function(){\n  const form = document.getElementById('lg-contact-form');\n  const status = document.getElementById('lg-form-status');\n  if(!form || !status) return;\n\n  const endpoint = 'https:\/\/lucasgoret.com\/wp-json\/contact-form-7\/v1\/contact-forms\/1884\/feedback';\n  const siteKey = '6LdHqKMqAAAAABX60578vT-rX34x0uQuI3MJ1W7X';\n\n  function loadRecaptcha(){\n    return new Promise((resolve, reject) => {\n      if(window.grecaptcha){\n        resolve(window.grecaptcha);\n        return;\n      }\n\n      const existing = document.querySelector('script[data-lg-recaptcha]');\n      if(existing){\n        existing.addEventListener('load', () => resolve(window.grecaptcha), {once:true});\n        existing.addEventListener('error', reject, {once:true});\n        return;\n      }\n\n      const s = document.createElement('script');\n      s.src = 'https:\/\/www.google.com\/recaptcha\/api.js?render=' + encodeURIComponent(siteKey);\n      s.async = true;\n      s.defer = true;\n      s.dataset.lgRecaptcha = '1';\n      s.onload = () => resolve(window.grecaptcha);\n      s.onerror = reject;\n      document.head.appendChild(s);\n    });\n  }\n\n  function getRecaptchaToken(){\n    return loadRecaptcha().then(grecaptcha => new Promise((resolve, reject) => {\n      grecaptcha.ready(() => {\n        grecaptcha.execute(siteKey, {action:'contactform'})\n          .then(resolve)\n          .catch(reject);\n      });\n    }));\n  }\n\n  function setButtonText(button, text){\n    const textNode = Array.from(button.childNodes).find(n => n.nodeType === Node.TEXT_NODE);\n    if(textNode) textNode.nodeValue = '\\n          ' + text + '\\n          ';\n  }\n\n  form.addEventListener('submit', async function(e){\n    e.preventDefault();\n    e.stopPropagation();\n\n    status.textContent = '';\n    status.className = 'lg-form-status';\n\n    if(!form.checkValidity()){\n      form.reportValidity();\n      return;\n    }\n\n    const button = form.querySelector('button.submit');\n    if(!button) return;\n\n    const originalLabel = 'Envoyer';\n    button.disabled = true;\n    setButtonText(button, 'Envoi\u2026');\n\n    try{\n      const token = await getRecaptchaToken();\n\n      const data = new FormData(form);\n      data.append('_wpcf7', '1884');\n      data.append('_wpcf7_version', '6.1.7');\n      data.append('_wpcf7_locale', 'fr_FR');\n      data.append('_wpcf7_unit_tag', 'wpcf7-f1884-p1849-o1');\n      data.append('_wpcf7_container_post', '1849');\n      data.append('_wpcf7_posted_data_hash', '');\n      data.append('_wpcf7_recaptcha_response', token);\n\n      const response = await fetch(endpoint, {\n        method:'POST',\n        body:data,\n        credentials:'same-origin'\n      });\n\n      const result = await response.json();\n\n      if(result.status === 'mail_sent'){\n        status.textContent = result.message || 'Message envoy\u00e9.';\n        status.className = 'lg-form-status is-ok';\n        form.reset();\n      }else{\n        status.textContent = result.message || 'Le message n\u2019a pas pu \u00eatre envoy\u00e9.';\n        status.className = 'lg-form-status is-error';\n\n        if(Array.isArray(result.invalid_fields)){\n          result.invalid_fields.forEach(item => {\n            const field = item.field && form.querySelector('[name=\"' + CSS.escape(item.field) + '\"]');\n            if(field) field.setAttribute('aria-invalid','true');\n          });\n        }\n      }\n    }catch(err){\n      console.error('Contact form error:', err);\n      status.textContent = 'Erreur d\u2019envoi. R\u00e9essayez dans un instant.';\n      status.className = 'lg-form-status is-error';\n    }finally{\n      button.disabled = false;\n      setButtonText(button, originalLabel);\n    }\n  });\n})();\n<\/script>\n\n<\/body>\n<\/html>\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>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Contact \u2014 Lucas Goret \u263c Parlons de votre projet. \u2190 Nom Email Projet Message Envoyer \u2197 \u00a9 2026 Tous droits r\u00e9serv\u00e9s &#8211; Lucas Goret<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1849","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/pages\/1849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/comments?post=1849"}],"version-history":[{"count":102,"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/pages\/1849\/revisions"}],"predecessor-version":[{"id":3696,"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/pages\/1849\/revisions\/3696"}],"wp:attachment":[{"href":"https:\/\/lucasgoret.com\/index.php\/wp-json\/wp\/v2\/media?parent=1849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}