{"id":2215,"date":"2026-05-27T10:54:14","date_gmt":"2026-05-27T08:54:14","guid":{"rendered":"https:\/\/webdev.playmoove.com\/contatti\/"},"modified":"2026-07-16T18:48:43","modified_gmt":"2026-07-16T16:48:43","slug":"contatti","status":"publish","type":"page","link":"https:\/\/webdev.playmoove.com\/it\/contatti\/","title":{"rendered":"Contatti"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2215\" class=\"elementor elementor-2215 elementor-306\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d45fc4 e-con-full animated-slow pm-cta-morph-section pm-home-cta e-flex elementor-invisible e-con e-parent\" data-id=\"1d45fc4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-ac52055 e-con-full e-flex e-con e-child\" data-id=\"ac52055\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa4dfef animated-slow elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"aa4dfef\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:750}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Contattaci<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f98077 animated-slow pm-auto-contact-heading-002 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"9f98077\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:300}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Parliamo del vostro progetto.<br \/>Descriveteci le vostre esigenze.<br \/><span>Costruiamo insieme la soluzione giusta.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-46979fe animated-slow pm-auto-contact-heading-003 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"46979fe\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInDown&quot;,&quot;_animation_delay&quot;:300}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Il nostro ufficio<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba219a4 elementor-widget elementor-widget-text-editor\" data-id=\"ba219a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Playmoove\u00ae\ufe0f \u00e8 un marchio registrato di Playcar S.r.l.<br\/><br\/>Via S. Tommaso D\u2019Aquino, 20<br\/>09134 Cagliari, Italy<\/p><p><strong>Richieste commerciali<\/strong><br\/><a href=\"mailto:sales@playmoove.com\">sales@playmoove.com<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5d111b2 e-con-full e-flex e-con e-child\" data-id=\"5d111b2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f8359a0 elementor-widget elementor-widget-html\" data-id=\"f8359a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"pm-contact-form-section\">\r\n  <form class=\"pm-contact-form\" id=\"pmContactForm\" action=\"\/wp-admin\/admin-post.php\" method=\"post\" novalidate=\"\">\r\n    <input type=\"hidden\" name=\"action\" value=\"pm_contact_form_submit\">\r\n\r\n    <!-- Honeypot anti-spam -->\r\n    <div class=\"pm-hp\" aria-hidden=\"true\">\r\n      <label for=\"pmWebsite\">Lascia questo campo vuoto<\/label>\r\n\r\n      <input type=\"text\" id=\"pmWebsite\" name=\"website\" value=\"\" tabindex=\"-1\" autocomplete=\"new-password\">\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-section-title\">\r\n  Le tue informazioni\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full\">\r\n      <input type=\"text\" name=\"name\" placeholder=\"Nome\" required=\"\">\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full\">\r\n      <input type=\"email\" name=\"email\" placeholder=\"Email\" required=\"\">\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <input type=\"text\" name=\"organization\" placeholder=\"Organizzazione\" required=\"\">\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <select name=\"role\" required=\"\">\r\n        <option value=\"\" disabled selected>Ruolo<\/option>\r\n        <option value=\"mobility_manager\">Mobility Manager<\/option>\r\n        <option value=\"it_director\">Direttore IT<\/option>\r\n        <option value=\"operations_director\">Direttore Operativo<\/option>\r\n        <option value=\"procurement_officer\">Responsabile Acquisti<\/option>\r\n        <option value=\"ceo_founder\">CEO \/ Fondatore<\/option>\r\n        <option value=\"other\">Altro<\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-section-title pm-form-section-title--spaced\">\r\n  La tua operativit\u00e0\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <select name=\"organization_type\" required=\"\">\r\n        <option value=\"\" disabled selected>Tipo di Organizzazione<\/option>\r\n        <option value=\"city_municipality\">Citt\u00e0 \/ Comune<\/option>\r\n        <option value=\"university_campus\">Universit\u00e0 \/ Campus<\/option>\r\n        <option value=\"corporation_enterprise\">Azienda \/ Impresa<\/option>\r\n        <option value=\"mobility_operator\">Operatore di Mobilit\u00e0 (car-sharing, noleggio, ecc.)<\/option>\r\n        <option value=\"transportation_authority\">Autorit\u00e0 di Trasporto<\/option>\r\n        <option value=\"other\">Altro<\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field\">\r\n      <select name=\"current_stage\" required=\"\">\r\n        <option value=\"\" disabled selected>Fase Attuale<\/option>\r\n        <option value=\"planning_research\">Pianificazione \/ Ricerca<\/option>\r\n        <option value=\"pilot_poc\">Pilota \/ Proof of Concept<\/option>\r\n        <option value=\"active_operations_scaling\">Operazioni Attive (in espansione)<\/option>\r\n        <option value=\"replacing_current_platform\">Sostituzione Piattaforma Attuale<\/option>\r\n        <option value=\"exploring_options\">Esplorazione Opzioni<\/option>\r\n      <\/select>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-section-title pm-form-section-title--requirements\">\r\n      <span>Le tue Esigenze<\/span>\r\n\r\n      <small>\r\n Limite di caratteri:\r\n        <span id=\"pmCharCount\">500<\/span>\r\n      <\/small> \r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full\">\r\n      <textarea name=\"requirements\" maxlength=\"500\" required=\"\" placeholder=\"Raccontateci le vostre esigenze. Descrivete il vostro servizio di mobilit\u00e0: dimensioni della flotta, aree operative, modelli di prenotazione, requisiti di integrazione, esigenze di conformit\u00e0 o problematiche specifiche che desiderate risolvere.\"><\/textarea>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-field pm-form-field--full pm-form-field--consent\">\r\n      <label class=\"pm-form-consent\">\r\n        <input type=\"checkbox\" name=\"privacy_consent\" value=\"1\" required=\"\">\r\n\r\n        <span>\r\n  Accetto di essere contattato in merito alla mia richiesta e accetto la\r\n          <a href=\"\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">\r\n Privacy Policy\r\n          <\/a>.\r\n        <\/span>\r\n      <\/label>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-actions\">\r\n      <button type=\"submit\" class=\"pm-form-submit\">\r\n        <span>Invia<\/span>\r\n\r\n        <svg viewbox=\"0 0 26 16\" aria-hidden=\"true\">\r\n          <path d=\"M17.8 1L24.5 8L17.8 15M24 8H1\"><\/path>\r\n        <\/svg>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-success-overlay\" id=\"pmContactSuccess\" aria-live=\"polite\">\r\n      <div class=\"pm-form-success-card\">\r\n        <div class=\"pm-form-success-icon\" aria-hidden=\"true\">\r\n          <svg viewbox=\"0 0 26 26\">\r\n            <path d=\"M6.5 13.4L10.8 17.7L19.8 8.3\"><\/path>\r\n          <\/svg>\r\n        <\/div>\r\n\r\n        <p class=\"pm-form-success-kicker\">\r\n  Richiesta ricevuta\r\n        <\/p>\r\n\r\n        <h3>\r\n  Grazie \u2014 abbiamo ricevuto la tua richiesta.\r\n        <\/h3>\r\n\r\n        <p>\r\n  Il nostro team esaminer\u00e0 le tue esigenze e ti risponder\u00e0 a breve.\r\n        <\/p>\r\n\r\n        <p>\r\n  Nel frattempo, puoi esplorare come Playmoove supporta la mobilit\u00e0 condivisa,\r\n le operazioni di flotta e i servizi di mobilit\u00e0.\r\n        <\/p>\r\n\r\n        <div class=\"pm-form-success-actions\">\r\n           <a href=\"https:\/\/webdev.playmoove.com\/it\/soluzioni\/\" class=\"pm-form-success-link\">\r\n Esplora le soluzioni\r\n          <\/a>\r\n\r\n          <a href=\"https:\/\/webdev.playmoove.com\/it\/piattaforma\/\" class=\"pm-form-success-link pm-form-success-link--secondary\">\r\n Visualizza la piattaforma\r\n          <\/a> \r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"pm-form-message pm-form-message--error\" id=\"pmContactError\" aria-live=\"polite\">\r\n  Qualcosa \u00e8 andato storto. Riprova. \r\n    <\/div>\r\n  <\/form>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1154514 elementor-widget elementor-widget-html\" data-id=\"1154514\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>document.addEventListener(\"DOMContentLoaded\", function () {\r\n  const form = document.querySelector(\"#pmContactForm\");\r\n  if (!form) return;\r\n\r\n  const portalId = \"144798352\";\r\n  const hubspotFormId = \"25384daf-9ac3-466d-b0ae-bf503762c5c5\";\r\n\r\n  const hubspotEndpoint =\r\n    `https:\/\/api.hsforms.com\/submissions\/v3\/integration\/submit\/${portalId}\/${hubspotFormId}`;\r\n\r\n  const wordpressEndpoint =\r\n    form.getAttribute(\"action\") || \"\/wp-admin\/admin-post.php\";\r\n\r\n  const textarea = form.querySelector('textarea[name=\"requirements\"]');\r\n  const counter = form.querySelector(\"#pmCharCount\");\r\n  const selects = form.querySelectorAll(\"select\");\r\n  const successOverlay = form.querySelector(\"#pmContactSuccess\");\r\n  const errorMessage = form.querySelector(\"#pmContactError\");\r\n  const submitButton = form.querySelector(\".pm-form-submit\");\r\n  const submitLabel = submitButton\r\n    ? submitButton.querySelector(\"span\")\r\n    : null;\r\n\r\n  function updateCounter() {\r\n    if (!textarea || !counter) return;\r\n\r\n    const max = 500;\r\n    const current = textarea.value.length;\r\n    const remaining = Math.max(max - current, 0);\r\n\r\n    counter.textContent = remaining;\r\n  }\r\n\r\n  function hideMessages() {\r\n    form.classList.remove(\"is-success\", \"is-error\");\r\n\r\n    if (successOverlay) {\r\n      successOverlay.style.display = \"none\";\r\n    }\r\n\r\n    if (errorMessage) {\r\n      errorMessage.style.display = \"none\";\r\n    }\r\n  }\r\n\r\n  function showSuccess() {\r\n    hideMessages();\r\n    form.classList.add(\"is-success\");\r\n\r\n    if (successOverlay) {\r\n      successOverlay.style.display = \"flex\";\r\n    }\r\n  }\r\n\r\n  function showError(text) {\r\n    hideMessages();\r\n    form.classList.add(\"is-error\");\r\n\r\n    if (errorMessage) {\r\n      errorMessage.textContent =\r\n        text || \"Something went wrong. Please try again.\";\r\n\r\n      errorMessage.style.display = \"block\";\r\n    }\r\n  }\r\n\r\n  function setLoading(isLoading) {\r\n    if (!submitButton) return;\r\n\r\n    submitButton.disabled = isLoading;\r\n    submitButton.classList.toggle(\"is-loading\", isLoading);\r\n\r\n    if (submitLabel) {\r\n      submitLabel.textContent = isLoading\r\n        ? \"Sending...\"\r\n        : \"Send\";\r\n    }\r\n  }\r\n\r\n  function markInvalidFields() {\r\n    const fields = form.querySelectorAll(\r\n      \"input, select, textarea\"\r\n    );\r\n\r\n    fields.forEach(function (field) {\r\n      field.classList.toggle(\r\n        \"pm-field-error\",\r\n        !field.checkValidity()\r\n      );\r\n    });\r\n  }\r\n\r\n  function clearInvalidState(field) {\r\n    if (!field) return;\r\n    field.classList.remove(\"pm-field-error\");\r\n  }\r\n\r\n  async function sendToWordPress(formData) {\r\n    const response = await fetch(wordpressEndpoint, {\r\n      method: \"POST\",\r\n      body: formData,\r\n      credentials: \"same-origin\",\r\n      redirect: \"follow\"\r\n    });\r\n\r\n    if (!response.ok) {\r\n      throw new Error(\"WordPress submission failed\");\r\n    }\r\n\r\n    \/*\r\n     * Il PHP attuale risponde con un redirect verso:\r\n     * ?pm_contact=success oppure ?pm_contact=error\r\n     *\/\r\n\r\n    const finalUrl = new URL(response.url);\r\n\r\n    if (\r\n      finalUrl.searchParams.get(\"pm_contact\") !== \"success\"\r\n    ) {\r\n      throw new Error(\"WordPress mail failed\");\r\n    }\r\n  }\r\n\r\n  async function sendToHubSpot(formData) {\r\n    const payload = {\r\n      fields: [\r\n        {\r\n          name: \"firstname\",\r\n          value: formData.get(\"name\") || \"\"\r\n        },\r\n        {\r\n          name: \"email\",\r\n          value: formData.get(\"email\") || \"\"\r\n        },\r\n        {\r\n          name: \"company\",\r\n          value: formData.get(\"organization\") || \"\"\r\n        },\r\n        {\r\n          name: \"role\",\r\n          value: formData.get(\"role\") || \"\"\r\n        },\r\n        {\r\n          name: \"organization_type\",\r\n          value: formData.get(\"organization_type\") || \"\"\r\n        },\r\n        {\r\n          name: \"current_stage\",\r\n          value: formData.get(\"current_stage\") || \"\"\r\n        },\r\n        {\r\n          name: \"requirements\",\r\n          value: formData.get(\"requirements\") || \"\"\r\n        }\r\n      ],\r\n      context: {\r\n        pageUri: window.location.href,\r\n        pageName: document.title\r\n      }\r\n    };\r\n\r\n    const response = await fetch(hubspotEndpoint, {\r\n      method: \"POST\",\r\n      headers: {\r\n        \"Content-Type\": \"application\/json\"\r\n      },\r\n      body: JSON.stringify(payload)\r\n    });\r\n\r\n    if (!response.ok) {\r\n      const errorData = await response\r\n        .json()\r\n        .catch(function () {\r\n          return null;\r\n        });\r\n\r\n      console.error(\"HubSpot error:\", errorData);\r\n      throw new Error(\"HubSpot submission failed\");\r\n    }\r\n  }\r\n\r\n  if (textarea) {\r\n    textarea.setAttribute(\"maxlength\", \"500\");\r\n    textarea.addEventListener(\"input\", updateCounter);\r\n    updateCounter();\r\n  }\r\n\r\n  selects.forEach(function (select) {\r\n    select.addEventListener(\"change\", function () {\r\n      select.classList.add(\"pm-touched\");\r\n    });\r\n\r\n    select.addEventListener(\"blur\", function () {\r\n      select.classList.add(\"pm-touched\");\r\n    });\r\n  });\r\n\r\n  form.addEventListener(\"input\", function (event) {\r\n    if (\r\n      event.target.matches(\"input, select, textarea\")\r\n    ) {\r\n      clearInvalidState(event.target);\r\n    }\r\n  });\r\n\r\n  form.addEventListener(\"change\", function (event) {\r\n    if (\r\n      event.target.matches(\"input, select, textarea\")\r\n    ) {\r\n      clearInvalidState(event.target);\r\n    }\r\n  });\r\n\r\n  form.addEventListener(\"submit\", async function (event) {\r\n    event.preventDefault();\r\n\r\n    hideMessages();\r\n\r\n    if (!form.checkValidity()) {\r\n      markInvalidFields();\r\n\r\n      showError(\r\n        \"Please complete all required fields before sending.\"\r\n      );\r\n\r\n      return;\r\n    }\r\n\r\n    const formData = new FormData(form);\r\n\r\n    \/*\r\n     * Honeypot\r\n     *\/\r\n\r\n    if (formData.get(\"website\")) {\r\n      showSuccess();\r\n      return;\r\n    }\r\n\r\n    setLoading(true);\r\n\r\n    try {\r\n      \/*\r\n       * Prima WordPress:\r\n       * invia la mail tramite wp_mail + SMTP\r\n       *\/\r\n\r\n      await sendToWordPress(formData);\r\n\r\n      \/*\r\n       * Poi HubSpot:\r\n       * salva il contatto e la submission nel CRM\r\n       *\/\r\n\r\n      await sendToHubSpot(formData);\r\n\r\n      form.reset();\r\n      updateCounter();\r\n\r\n      selects.forEach(function (select) {\r\n        select.classList.remove(\"pm-touched\");\r\n      });\r\n\r\n      showSuccess();\r\n\r\n      form.scrollIntoView({\r\n        behavior: \"smooth\",\r\n        block: \"center\"\r\n      });\r\n    } catch (error) {\r\n      console.error(\"Playmoove form error:\", error);\r\n\r\n      showError(\r\n        \"Something went wrong. Please try again or contact sales@playmoove.com.\"\r\n      );\r\n    } finally {\r\n      setLoading(false);\r\n    }\r\n  });\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9f18a2d elementor-widget elementor-widget-html\" data-id=\"9f18a2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>(function () {\r\n  const initializedSections = new WeakSet();\r\n\r\n  function initPmContactAnimation(scope) {\r\n    if (typeof gsap === \"undefined\") return;\r\n\r\n    gsap.registerPlugin && gsap.registerPlugin(ScrollTrigger);\r\n\r\n    const root = scope || document;\r\n    const section = root.querySelector(\".elementor-306 .pm-home-cta\");\r\n    const form = root.querySelector(\"#pmContactForm\");\r\n\r\n    if (!section || !form) return;\r\n    if (initializedSections.has(section)) return;\r\n\r\n    initializedSections.add(section);\r\n\r\n    \/*\r\n      IMPORTANT:\r\n      Nel markup attuale c'\u00e8 gi\u00e0 data-pm-contact-animated=\"true\".\r\n      Non lo usiamo pi\u00f9 come blocco, perch\u00e9 impediva all'animazione di partire.\r\n    *\/\r\n    section.removeAttribute(\"data-pm-contact-animated\");\r\n\r\n    const eyebrow = section.querySelector(\".elementor-element-aa4dfef\");\r\n    const headline = section.querySelector(\".elementor-element-9f98077\");\r\n\r\n    const formTitles = Array.from(form.querySelectorAll(\".pm-form-section-title\"));\r\n    const fields = Array.from(form.querySelectorAll(\".pm-form-field\"));\r\n    const actions = form.querySelector(\".pm-form-actions\");\r\n    const submit = form.querySelector(\".pm-form-submit\");\r\n    const inputs = Array.from(form.querySelectorAll(\"input, select, textarea\"));\r\n\r\n    const animatedEls = [\r\n      eyebrow,\r\n      headline,\r\n      form,\r\n      ...formTitles,\r\n      ...fields,\r\n      actions\r\n    ].filter(Boolean);\r\n\r\n    \/*\r\n      Neutralizza eventuali animazioni Elementor gi\u00e0 applicate.\r\n      Cos\u00ec eviti doppie animazioni \/ stati gi\u00e0 visibili \/ conflitti.\r\n    *\/\r\n    animatedEls.forEach(function (el) {\r\n      el.classList.remove(\r\n        \"animated\",\r\n        \"fadeIn\",\r\n        \"fadeInDown\",\r\n        \"fadeInUp\",\r\n        \"fadeInLeft\",\r\n        \"fadeInRight\"\r\n      );\r\n\r\n      el.style.removeProperty(\"animation\");\r\n      el.style.removeProperty(\"animation-name\");\r\n      el.style.removeProperty(\"animation-duration\");\r\n      el.style.removeProperty(\"animation-delay\");\r\n      el.style.removeProperty(\"visibility\");\r\n      el.style.removeProperty(\"opacity\");\r\n      el.style.removeProperty(\"transform\");\r\n      el.style.removeProperty(\"filter\");\r\n    });\r\n\r\n    gsap.set(section, {\r\n      \"--pm-contact-glow-x\": \"18%\",\r\n      \"--pm-contact-glow-y\": \"20%\",\r\n      \"--pm-contact-glow-opacity\": 0.72\r\n    });\r\n\r\n    gsap.set([eyebrow, headline].filter(Boolean), {\r\n      autoAlpha: 0,\r\n      y: 38,\r\n      filter: \"blur(14px)\"\r\n    });\r\n\r\n    gsap.set(form, {\r\n      autoAlpha: 0,\r\n      y: 48,\r\n      scale: 0.985,\r\n      filter: \"blur(16px)\"\r\n    });\r\n\r\n    gsap.set(formTitles, {\r\n      autoAlpha: 0,\r\n      y: 16\r\n    });\r\n\r\n    gsap.set(fields, {\r\n      autoAlpha: 0,\r\n      y: 22\r\n    });\r\n\r\n    if (actions) {\r\n      gsap.set(actions, {\r\n        autoAlpha: 0,\r\n        y: 18,\r\n        scale: 0.98\r\n      });\r\n    }\r\n\r\n    const tl = gsap.timeline({\r\n      scrollTrigger: {\r\n        trigger: section,\r\n        start: \"top 72%\",\r\n        once: true\r\n      },\r\n      defaults: {\r\n        ease: \"power3.out\"\r\n      }\r\n    });\r\n\r\n    tl.to(section, {\r\n      \"--pm-contact-glow-x\": \"72%\",\r\n      \"--pm-contact-glow-y\": \"34%\",\r\n      duration: 1.4,\r\n      ease: \"power2.out\"\r\n    });\r\n\r\n    if (eyebrow) {\r\n      tl.to(eyebrow, {\r\n        autoAlpha: 1,\r\n        y: 0,\r\n        filter: \"blur(0px)\",\r\n        duration: 0.75\r\n      }, 0.08);\r\n    }\r\n\r\n    if (headline) {\r\n      tl.to(headline, {\r\n        autoAlpha: 1,\r\n        y: 0,\r\n        filter: \"blur(0px)\",\r\n        duration: 0.95\r\n      }, 0.18);\r\n    }\r\n\r\n    tl.to(form, {\r\n      autoAlpha: 1,\r\n      y: 0,\r\n      scale: 1,\r\n      filter: \"blur(0px)\",\r\n      duration: 0.9\r\n    }, 0.34);\r\n\r\n    tl.to(formTitles, {\r\n      autoAlpha: 1,\r\n      y: 0,\r\n      duration: 0.5,\r\n      stagger: 0.08\r\n    }, 0.62);\r\n\r\n    tl.to(fields, {\r\n      autoAlpha: 1,\r\n      y: 0,\r\n      duration: 0.52,\r\n      stagger: {\r\n        each: 0.045,\r\n        from: \"start\"\r\n      }\r\n    }, 0.7);\r\n\r\n    if (actions) {\r\n      tl.to(actions, {\r\n        autoAlpha: 1,\r\n        y: 0,\r\n        scale: 1,\r\n        duration: 0.55\r\n      }, \"-=0.18\");\r\n    }\r\n\r\n    \/*\r\n      Glow molto leggero continuo sul background.\r\n      Non usa setInterval.\r\n    *\/\r\n    gsap.to(section, {\r\n      \"--pm-contact-glow-x\": \"38%\",\r\n      \"--pm-contact-glow-y\": \"68%\",\r\n      duration: 8,\r\n      repeat: -1,\r\n      yoyo: true,\r\n      ease: \"sine.inOut\"\r\n    });\r\n\r\n    inputs.forEach(function (input) {\r\n      input.addEventListener(\"focus\", function () {\r\n        gsap.to(input, {\r\n          scale: 1.01,\r\n          duration: 0.22,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n\r\n      input.addEventListener(\"blur\", function () {\r\n        gsap.to(input, {\r\n          scale: 1,\r\n          duration: 0.22,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n    });\r\n\r\n    if (submit) {\r\n      const arrow = submit.querySelector(\"svg\");\r\n\r\n      submit.addEventListener(\"mouseenter\", function () {\r\n        gsap.to(submit, {\r\n          scale: 1.025,\r\n          duration: 0.24,\r\n          ease: \"power2.out\"\r\n        });\r\n\r\n        if (arrow) {\r\n          gsap.to(arrow, {\r\n            x: 4,\r\n            duration: 0.24,\r\n            ease: \"power2.out\"\r\n          });\r\n        }\r\n      });\r\n\r\n      submit.addEventListener(\"mouseleave\", function () {\r\n        gsap.to(submit, {\r\n          scale: 1,\r\n          duration: 0.24,\r\n          ease: \"power2.out\"\r\n        });\r\n\r\n        if (arrow) {\r\n          gsap.to(arrow, {\r\n            x: 0,\r\n            duration: 0.24,\r\n            ease: \"power2.out\"\r\n          });\r\n        }\r\n      });\r\n\r\n      submit.addEventListener(\"mousedown\", function () {\r\n        gsap.to(submit, {\r\n          scale: 0.985,\r\n          duration: 0.12,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n\r\n      submit.addEventListener(\"mouseup\", function () {\r\n        gsap.to(submit, {\r\n          scale: 1.025,\r\n          duration: 0.16,\r\n          ease: \"power2.out\"\r\n        });\r\n      });\r\n    }\r\n\r\n    ScrollTrigger && ScrollTrigger.refresh();\r\n  }\r\n\r\n  function boot() {\r\n    initPmContactAnimation(document);\r\n  }\r\n\r\n  window.addEventListener(\"load\", boot);\r\n\r\n  document.addEventListener(\"DOMContentLoaded\", function () {\r\n    window.setTimeout(boot, 80);\r\n  });\r\n\r\n  if (window.jQuery) {\r\n    jQuery(window).on(\"elementor\/frontend\/init\", function () {\r\n      window.setTimeout(boot, 120);\r\n    });\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\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>Contattaci Parliamo del vostro progetto.Descriveteci le vostre esigenze.Costruiamo insieme la soluzione giusta. Il nostro ufficio Playmoove\u00ae\ufe0f \u00e8 un marchio registrato di Playcar S.r.l. Via S. Tommaso D\u2019Aquino, 2009134 Cagliari, Italy Richieste commercialisales@playmoove.com Lascia questo campo vuoto Le tue informazioni RuoloMobility ManagerDirettore ITDirettore OperativoResponsabile AcquistiCEO \/ FondatoreAltro La tua operativit\u00e0 Tipo di OrganizzazioneCitt\u00e0 \/ ComuneUniversit\u00e0 \/ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2215","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Contatti - playmoove.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/playmoove.com\/it\/contatti\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Contatti - playmoove.com\" \/>\n<meta property=\"og:description\" content=\"Contattaci Parliamo del vostro progetto.Descriveteci le vostre esigenze.Costruiamo insieme la soluzione giusta. Il nostro ufficio Playmoove\u00ae\ufe0f \u00e8 un marchio registrato di Playcar S.r.l. Via S. Tommaso D\u2019Aquino, 2009134 Cagliari, Italy Richieste commercialisales@playmoove.com Lascia questo campo vuoto Le tue informazioni RuoloMobility ManagerDirettore ITDirettore OperativoResponsabile AcquistiCEO \/ FondatoreAltro La tua operativit\u00e0 Tipo di OrganizzazioneCitt\u00e0 \/ ComuneUniversit\u00e0 \/ [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/playmoove.com\/it\/contatti\/\" \/>\n<meta property=\"og:site_name\" content=\"playmoove.com\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-16T16:48:43+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/\",\"url\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/\",\"name\":\"Contatti - playmoove.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#website\"},\"datePublished\":\"2026-05-27T08:54:14+00:00\",\"dateModified\":\"2026-07-16T16:48:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/contatti\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/playmoove.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contatti\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/playmoove.com\\\/it\\\/\",\"name\":\"Playmoove\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/playmoove.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#organization\",\"name\":\"Playmoove\",\"url\":\"https:\\\/\\\/playmoove.com\\\/it\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/webdev.playmoove.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PLAYMOOVE_White_LOGO.svg\",\"contentUrl\":\"https:\\\/\\\/webdev.playmoove.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/PLAYMOOVE_White_LOGO.svg\",\"width\":800,\"height\":115,\"caption\":\"Playmoove\"},\"image\":{\"@id\":\"https:\\\/\\\/playmoove.com\\\/it\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/it.linkedin.com\\\/organization-guest\\\/company\\\/playmoove\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Contatti - playmoove.com","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:\/\/playmoove.com\/it\/contatti\/","og_locale":"it_IT","og_type":"article","og_title":"Contatti - playmoove.com","og_description":"Contattaci Parliamo del vostro progetto.Descriveteci le vostre esigenze.Costruiamo insieme la soluzione giusta. Il nostro ufficio Playmoove\u00ae\ufe0f \u00e8 un marchio registrato di Playcar S.r.l. Via S. Tommaso D\u2019Aquino, 2009134 Cagliari, Italy Richieste commercialisales@playmoove.com Lascia questo campo vuoto Le tue informazioni RuoloMobility ManagerDirettore ITDirettore OperativoResponsabile AcquistiCEO \/ FondatoreAltro La tua operativit\u00e0 Tipo di OrganizzazioneCitt\u00e0 \/ ComuneUniversit\u00e0 \/ [&hellip;]","og_url":"https:\/\/playmoove.com\/it\/contatti\/","og_site_name":"playmoove.com","article_modified_time":"2026-07-16T16:48:43+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tempo di lettura stimato":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/playmoove.com\/it\/contatti\/","url":"https:\/\/playmoove.com\/it\/contatti\/","name":"Contatti - playmoove.com","isPartOf":{"@id":"https:\/\/playmoove.com\/it\/#website"},"datePublished":"2026-05-27T08:54:14+00:00","dateModified":"2026-07-16T16:48:43+00:00","breadcrumb":{"@id":"https:\/\/playmoove.com\/it\/contatti\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/playmoove.com\/it\/contatti\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/playmoove.com\/it\/contatti\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/playmoove.com\/it\/"},{"@type":"ListItem","position":2,"name":"Contatti"}]},{"@type":"WebSite","@id":"https:\/\/playmoove.com\/it\/#website","url":"https:\/\/playmoove.com\/it\/","name":"Playmoove","description":"","publisher":{"@id":"https:\/\/playmoove.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/playmoove.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/playmoove.com\/it\/#organization","name":"Playmoove","url":"https:\/\/playmoove.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/playmoove.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/webdev.playmoove.com\/wp-content\/uploads\/2026\/04\/PLAYMOOVE_White_LOGO.svg","contentUrl":"https:\/\/webdev.playmoove.com\/wp-content\/uploads\/2026\/04\/PLAYMOOVE_White_LOGO.svg","width":800,"height":115,"caption":"Playmoove"},"image":{"@id":"https:\/\/playmoove.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/it.linkedin.com\/organization-guest\/company\/playmoove"]}]}},"_links":{"self":[{"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/pages\/2215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/comments?post=2215"}],"version-history":[{"count":10,"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/pages\/2215\/revisions"}],"predecessor-version":[{"id":3196,"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/pages\/2215\/revisions\/3196"}],"wp:attachment":[{"href":"https:\/\/webdev.playmoove.com\/it\/wp-json\/wp\/v2\/media?parent=2215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}