Logo
  • Works
  • About
  • Contact
  • Yoyo
  • eShop

CONTACT

BODY

<section class="sw-contact-section" id="contact"> <div class="sw-contact-inner"> <h2 class="sw-contact-title"> Contact — Get in touch </h2> <p class="sw-contact-text"> Always open to collaborations, commissions, and professional opportunities.<br> Feel free to reach out — I personally read every message.<br><br> <span class="sw-contact-text-fr"> Une idée, un projet, une collaboration ? Je lis chaque message personnellement et réponds dès que possible. </span> </p> <!-- Formulaire Tally --> <div class="sw-contact-form-wrapper"> <iframe src="https://tally.so/r/318lyQ?transparentBackground=1&hideTitle=1" width="100%" height="920" frameborder="0" marginheight="0" marginwidth="0" title="Contact Form" ></iframe> </div> <!-- Email + WhatsApp --> <p class="sw-contact-alt"> You can also write directly to <a class="sw-mail" href="mailto:sw@swws.net"> sw@swws.net </a><br> or send a message via <a id="sw-wa-link" class="sw-wa-link" href="#" target="_blank" rel="noopener"> WhatsApp </a>.<br><br> <span class="sw-contact-alt-fr"> Vous pouvez aussi écrire directement à <a class="sw-mail" href="mailto:sw@swws.net"> sw@swws.net </a><br> ou m’envoyer un message via <a id="sw-wa-link-fr" class="sw-wa-link" href="#" target="_blank" rel="noopener"> WhatsApp </a>. </span> </p> </div> </section> <script> function initSWContact() { // --- WHATSAPP PROTECTION --- const waNumber = "33632493112"; // ton numéro sans le + const waText = encodeURIComponent("Bonjour, je vous contacte depuis le site SWWS."); ["sw-wa-link", "sw-wa-link-fr"].forEach(id => { const link = document.getElementById(id); if (link && (!link.href || !link.href.includes("wa.me"))) { link.href = https://wa.me/${waNumber}?text=${waText}; } }); } // 1) au chargement initial du DOM document.addEventListener("DOMContentLoaded", initSWContact); // 2) relances au cas où Super charge le contenu après coup setTimeout(initSWContact, 1000); setTimeout(initSWContact, 3000); // 3) si le DOM change (navigation interne, lazy load, etc.) if (typeof MutationObserver !== "undefined") { const observer = new MutationObserver(initSWContact); observer.observe(document.body, { childList: true, subtree: true }); } </script>

CSS

.sw-contact-section { padding: 4rem 0; } .sw-contact-inner { max-width: 720px; margin: 0 auto; } .sw-contact-title { font-family: "Space Grotesk", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 3.2rem; line-height: 1.15; font-weight: 600; letter-spacing: -0.01em; margin-bottom: 1rem; } .sw-contact-text { margin-bottom: 2rem; font-family: "Inter", "Helvetica Neue", Arial, sans-serif; font-size: 1rem; line-height: 1.6; font-weight: 500; opacity: 0.9; } .sw-contact-text-fr { display: block; margin-top: 0.5rem; font-size: 0.95em; opacity: 0.7; } .sw-contact-form-wrapper { border-radius: 1.25rem; border: 1px solid rgba(0, 0, 0, 0.08); padding: 1.5rem; backdrop-filter: blur(12px); background-color: rgba(255, 255, 255, 0.6); } .sw-contact-alt { margin-top: 1.25rem; font-family: "Inter", "Helvetica Neue", Arial, sans-serif; font-size: 0.9rem; line-height: 1.5; opacity: 0.85; } .sw-contact-alt-fr { display: block; margin-top: 0.5rem; font-size: 0.85em; opacity: 0.65; } .sw-mail { text-decoration: underline; } .sw-wa-link { color: inherit; text-decoration: underline; transition: opacity 0.2s ease; } .sw-wa-link:hover { opacity: 0.7; } /* Responsive */ @media (max-width: 768px) { .sw-contact-section { padding: 2.5rem 1rem; } .sw-contact-title { font-size: 1.8rem; } }

HEAD

URL
Logo

Works

eShop

Contact

copyright : Sebastien Wierinck - OnSite Studio

Instagram