https://adwebsys.be/
Saved copy from just now.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AD Websys — Consultance informatique & développement d'applications</title>
<meta name="description" content="AD Websys SPRL — consultance informatique, développement d'applications, maintenance, réseaux et sécurité. À votre service dans la région Dour-Quiévrain depuis 2005.">
<meta name="theme-color" content="#0d1b2a">
<meta property="og:title" content="AD Websys — Votre partenaire informatique">
<meta property="og:description" content="Consultance informatique et développement d'applications dans la région Dour-Quiévrain depuis 2005.">
<meta property="og:type" content="website">
<script src="https://www.google.com/recaptcha/api.js?render=6LcruJctAAAAACTHEXg2-vC9vhF5P5rNnCkYHmrq" async defer></script>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect width='100' height='100' rx='22' fill='%230d1b2a'/%3E%3Ctext x='50' y='67' font-family='system-ui,sans-serif' font-size='46' font-weight='700' fill='%2338bdf8' text-anchor='middle'%3EAD%3C/text%3E%3C/svg%3E">
<style>
:root{
--ink:#0d1b2a;
--ink-2:#1b2a3d;
--body:#3c4d61;
--muted:#6b7c90;
--line:#e2e8f0;
--bg:#ffffff;
--bg-alt:#f6f9fc;
--accent:#0ea5e9;
--accent-dark:#0284c7;
--radius:14px;
--maxw:1140px;
--shadow:0 1px 2px rgba(13,27,42,.04),0 8px 24px rgba(13,27,42,.06);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
margin:0;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
color:var(--body);
background:var(--bg);
line-height:1.65;
-webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:var(--accent-dark);text-decoration:none}
h1,h2,h3{color:var(--ink);line-height:1.2;margin:0 0 .5em;letter-spacing:-.02em}
h1{font-size:clamp(2rem,5vw,3.25rem);font-weight:800}
h2{font-size:clamp(1.6rem,3.4vw,2.35rem);font-weight:750}
h3{font-size:1.12rem;font-weight:700}
p{margin:0 0 1rem}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.section{padding:88px 0}
.section--alt{background:var(--bg-alt);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.eyebrow{
display:inline-block;font-size:.74rem;font-weight:700;letter-spacing:.14em;
text-transform:uppercase;color:var(--accent-dark);margin-bottom:14px;
}
.lead{font-size:1.08rem;max-width:62ch}
.center{text-align:center}
.center .lead{margin-left:auto;margin-right:auto}
/* ---------- Header ---------- */
.site-header{
position:sticky;top:0;z-index:50;background:rgba(255,255,255,.88);
backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line);
}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;height:70px;gap:24px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--ink);font-size:1.12rem;letter-spacing:-.02em}
.brand .mark{
width:34px;height:34px;border-radius:9px;background:var(--ink);color:#fff;
display:flex;align-items:center;justify-content:center;
font-size:.8rem;font-weight:800;letter-spacing:.02em;
white-space:nowrap;line-height:1;flex:0 0 34px;
}
.brand .mark span{color:var(--accent)}
.nav{display:flex;align-items:center;gap:28px}
.nav a{color:var(--body);font-size:.94rem;font-weight:600}
.nav a:hover{color:var(--ink)}
.btn{
display:inline-block;padding:12px 22px;border-radius:10px;font-weight:700;font-size:.94rem;
border:1px solid transparent;cursor:pointer;transition:transform .15s ease,background .15s ease,box-shadow .15s ease;
}
.btn:active{transform:translateY(1px)}
.btn--primary{background:var(--accent);color:#fff;box-shadow:0 6px 18px rgba(14,165,233,.28)}
.btn--primary:hover{background:var(--accent-dark);color:#fff}
.btn--ghost{border-color:rgba(255,255,255,.35);color:#fff}
.btn--ghost:hover{background:rgba(255,255,255,.1);color:#fff}
.btn--outline{border-color:var(--line);color:var(--ink);background:#fff}
.btn--outline:hover{border-color:var(--accent);color:var(--accent-dark)}
.nav-toggle{display:none;background:none;border:0;padding:8px;cursor:pointer;color:var(--ink)}
/* ---------- Hero ---------- */
.hero{
position:relative;color:#e8eef5;overflow:hidden;
background:
radial-gradient(900px 480px at 78% 12%,rgba(14,165,233,.30),transparent 62%),
radial-gradient(700px 420px at 8% 92%,rgba(56,189,248,.16),transparent 60%),
linear-gradient(165deg,#0d1b2a 0%,#132840 60%,#0d1b2a 100%);
}
.hero::after{
content:"";position:absolute;inset:0;opacity:.35;pointer-events:none;
background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
background-size:64px 64px;
-webkit-mask-image:radial-gradient(circle at 50% 30%,#000,transparent 78%);
mask-image:radial-gradient(circle at 50% 30%,#000,transparent 78%);
}
.hero .wrap{position:relative;z-index:1;padding-top:104px;padding-bottom:104px;max-width:900px;text-align:center}
.hero h1{color:#fff}
.hero h1 em{font-style:normal;color:#38bdf8}
.hero p{color:#b9cadb;font-size:1.13rem;max-width:60ch;margin-left:auto;margin-right:auto}
.hero .eyebrow{color:#7dd3fc}
.hero-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:30px}
.hero-meta{
display:flex;gap:34px;justify-content:center;flex-wrap:wrap;
margin-top:56px;padding-top:30px;border-top:1px solid rgba(255,255,255,.12);
}
.hero-meta div{text-align:center}
.hero-meta b{display:block;color:#fff;font-size:1.7rem;font-weight:800;letter-spacing:-.02em}
.hero-meta span{font-size:.82rem;color:#93a9bf;letter-spacing:.04em}
/* ---------- Cards ---------- */
.grid{display:grid;gap:22px;margin-top:44px}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--2{grid-template-columns:repeat(2,1fr)}
.card{
background:#fff;border:1px solid var(--line);border-radius:var(--radius);
padding:28px 26px;box-shadow:var(--shadow);
transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.card:hover{transform:translateY(-3px);border-color:#cfe3f3;box-shadow:0 12px 32px rgba(13,27,42,.10)}
.card p{margin-bottom:0;font-size:.97rem}
.icon{
width:46px;height:46px;border-radius:11px;display:grid;place-items:center;margin-bottom:18px;
background:linear-gradient(140deg,#e0f2fe,#f0f9ff);color:var(--accent-dark);border:1px solid #d5ecfb;
}
.icon svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.card--feature{border-left:3px solid var(--accent)}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;padding:0;list-style:none}
.tags li{
font-size:.79rem;font-weight:600;color:var(--ink-2);background:#eef4fa;
border:1px solid #dde9f3;padding:4px 11px;border-radius:99px;
}
/* ---------- About ---------- */
.about{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
.checklist{list-style:none;padding:0;margin:26px 0 0;display:grid;gap:13px}
.checklist li{display:flex;gap:12px;align-items:flex-start;font-size:.98rem}
.checklist svg{flex:0 0 20px;width:20px;height:20px;margin-top:3px;stroke:var(--accent);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.stat{
background:#fff;border:1px solid var(--line);border-radius:var(--radius);
padding:26px 22px;text-align:center;box-shadow:var(--shadow);
}
.stat b{display:block;font-size:2.1rem;font-weight:800;color:var(--ink);letter-spacing:-.03em;line-height:1.1}
.stat span{font-size:.85rem;color:var(--muted);font-weight:600}
/* ---------- CTA band ---------- */
.band{
background:linear-gradient(135deg,#0d1b2a,#17324f);color:#fff;border-radius:18px;
padding:52px 48px;display:flex;align-items:center;justify-content:space-between;gap:32px;flex-wrap:wrap;
}
.band h2{color:#fff;margin-bottom:8px}
.band p{color:#b9cadb;margin:0;max-width:52ch}
/* ---------- Contact ---------- */
.contact{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;align-items:start}
.contact-list{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:20px}
.contact-list li{display:flex;gap:14px;align-items:flex-start}
.contact-list .icon{width:40px;height:40px;margin:0;flex:0 0 40px;border-radius:10px}
.contact-list .icon svg{width:19px;height:19px}
.contact-list strong{display:block;color:var(--ink);font-size:.93rem}
.contact-list a,.contact-list span{color:var(--body);font-size:.95rem}
form{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px;box-shadow:var(--shadow)}
.field{margin-bottom:18px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
label{display:block;font-size:.85rem;font-weight:700;color:var(--ink);margin-bottom:7px}
input,textarea,select{
width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
font:inherit;font-size:.95rem;color:var(--ink);background:#fdfefe;transition:border-color .15s ease,box-shadow .15s ease;
}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(14,165,233,.15)}
textarea{resize:vertical;min-height:130px}
.form-note{font-size:.8rem;color:var(--muted);margin:14px 0 0}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-alert{
border-radius:10px;padding:14px 16px;margin-bottom:20px;font-size:.92rem;border:1px solid;
}
.form-alert strong{display:block;margin-bottom:2px}
.form-alert--ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}
.form-alert--ok strong{color:#047857}
.form-alert--err{background:#fef2f2;border-color:#fecaca;color:#991b1b}
.form-alert--err strong{color:#b91c1c}
.form-alert--warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.form-alert--warn strong{color:#b45309}
.form-note a{color:var(--muted);text-decoration:underline}
.form-note a:hover{color:var(--accent-dark)}
#submitBtn[disabled]{opacity:.65;cursor:default}
/* Le badge reCAPTCHA flotte en bas à droite ; on le remonte pour ne pas
qu'il chevauche le pied de page sur mobile. */
.grecaptcha-badge{bottom:14px !important}
/* ---------- Footer ---------- */
.site-footer{background:var(--ink);color:#93a9bf;padding:52px 0 30px;font-size:.9rem}
.footer-top{display:flex;justify-content:space-between;gap:32px;flex-wrap:wrap;padding-bottom:28px;border-bottom:1px solid rgba(255,255,255,.1)}
.site-footer .brand{color:#fff}
.site-footer p{margin:10px 0 0;max-width:42ch}
.footer-nav{display:flex;gap:26px;flex-wrap:wrap}
.site-footer a{color:#b9cadb}
.site-footer a:hover{color:#fff}
.footer-bottom{padding-top:22px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.83rem}
/* ---------- Reveal ---------- */
.anim .reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}
.anim .reveal.is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
.anim .reveal{opacity:1;transform:none;transition:none}
html{scroll-behavior:auto}
}
/* ---------- Responsive ---------- */
@media (max-width:940px){
.grid--3{grid-template-columns:1fr 1fr}
.about,.contact{grid-template-columns:1fr;gap:38px}
}
@media (max-width:720px){
.section{padding:64px 0}
.grid--3,.grid--2{grid-template-columns:1fr}
.field-row{grid-template-columns:1fr}
.band{padding:38px 26px}
.hero .wrap{padding-top:72px;padding-bottom:72px}
.hero-meta{gap:24px}
.nav-toggle{display:block}
.nav{
position:absolute;top:70px;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);
flex-direction:column;align-items:stretch;gap:0;padding:8px 24px 18px;display:none;
box-shadow:0 12px 24px rgba(13,27,42,.08);
}
.nav.is-open{display:flex}
.nav a{padding:12px 0;border-bottom:1px solid var(--line)}
.nav .btn{margin-top:14px;text-align:center;border-bottom:0}
}
</style>
</head>
<body>
<header class="site-header">
<div class="wrap">
<a class="brand" href="#top">
<span class="mark">A<span>D</span></span>
AD Websys
</a>
<button class="nav-toggle" id="navToggle" aria-label="Ouvrir le menu" aria-expanded="false" aria-controls="mainNav">
<svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M3 6h18M3 12h18M3 18h18"/></svg>
</button>
<nav class="nav" id="mainNav">
<a href="#services">Services</a>
<a href="#expertise">Expertise</a>
<a href="#apropos">À propos</a>
<a class="btn btn--primary" href="#contact">Audit gratuit</a>
</nav>
</div>
</header>
<main id="top">
<!-- HERO -->
<section class="hero">
<div class="wrap">
<span class="eyebrow">Consultance IT & développement · Région Dour-Quiévrain</span>
<h1>Votre partenaire informatique <em>depuis 2005</em></h1>
<p>AD Websys accompagne les indépendants et les PME : conseil, développement d'applications sur mesure, maintenance du parc informatique, réseaux et sécurité. Un interlocuteur unique, disponible et local.</p>
<div class="hero-actions">
<a class="btn btn--primary" href="#contact">Demander un audit gratuit</a>
<a class="btn btn--ghost" href="#services">Découvrir nos services</a>
</div>
<div class="hero-meta">
<div><b>20 ans</b><span>D'EXPÉRIENCE</span></div>
<div><b>PME & indépendants</b><span>NOTRE CLIENTÈLE</span></div>
<div><b>Sur site & à distance</b><span>NOTRE SUPPORT</span></div>
</div>
</div>
</section>
<!-- SERVICES -->
<section class="section" id="services">
<div class="wrap">
<div class="center">
<span class="eyebrow">Nos services</span>
<h2>Tout ce dont votre informatique a besoin</h2>
<p class="lead">Du conseil stratégique au dépannage matériel, nous couvrons l'ensemble de la chaîne — sans jargon inutile et avec des solutions proportionnées à votre entreprise.</p>
</div>
<div class="grid grid--3">
<article class="card card--feature reveal">
<div class="icon"><svg viewBox="0 0 24 24"><path d="M9 18h6M10 22h4"/><path d="M12 2a7 7 0 0 0-4 12.7V17h8v-2.3A7 7 0 0 0 12 2z"/></svg></div>
<h3>Consultance informatique</h3>
<p>Audit de l'existant, choix des solutions, cahier des charges, accompagnement de vos projets et arbitrage des budgets. On vous aide à décider, puis à mettre en œuvre.</p>
</article>
<article class="card card--feature reveal">
<div class="icon"><svg viewBox="0 0 24 24"><path d="m8 6-6 6 6 6M16 6l6 6-6 6"/></svg></div>
<h3>Développement d'applications</h3>
<p>Applications métier et outils web sur mesure, conçus autour de vos processus réels : gestion, suivi, automatisation, intégrations avec vos logiciels existants.</p>
</article>
<article class="card reveal">
<div class="icon"><svg viewBox="0 0 24 24"><path d="M12 2 4 5.5v6c0 5 3.4 9.2 8 10.5 4.6-1.3 8-5.5 8-10.5v-6L12 2z"/><path d="m9 12 2 2 4-4"/></svg></div>
<h3>Sécurité & sauvegardes</h3>
<p>Pare-feu, antivirus, anti-malware, contrôle d'accès réseau et stratégie de backup testée. Imaginez un instant que vos données disparaissent — c'est ce qu'on évite.</p>
</article>
<article class="card reveal">
<div class="icon"><svg viewBox="0 0 24 24"><path d="M20.5 7.3 12 2 3.5 7.3v9.4L12 22l8.5-5.3z"/><path d="M12 22V12M3.5 7.3 12 12l8.5-4.7"/></svg></div>
<h3>Maintenance & support</h3>
<p>Contrat de maintenance de votre parc, monitoring proactif, support en ligne et interventions sur site. Vos pannes sont traitées avant qu'elles ne vous coûtent une journée.</p>
</article>
<article class="card reveal">
<div class="icon"><svg viewBox="0 0 24 24"><rect x="2" y="3" width="20" height="6" rx="2"/><rect x="2" y="15" width="20" height="6" rx="2"/><path d="M6 6h.01M6 18h.01"/></svg></div>
<h3>Réseaux & serveurs</h3>
<p>Conception et installation de réseaux, armoires réseau, Wi-Fi professionnel, serveurs physiques ou virtualisés — matériel et logiciel, configurés et documentés.</p>
</article>
<article class="card reveal">
<div class="icon"><svg viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="13" rx="2"/><path d="M8 21h8M12 17v4"/></svg></div>
<h3>Matériel & réparation</h3>
<p>Vente de PC, serveurs, imprimantes et périphériques adaptés à votre usage réel. Réparation et upgrade avec devis établi avant toute intervention.</p>
</article>
</div>
</div>
</section>
<!-- EXPERTISE -->
<section class="section section--alt" id="expertise">
<div class="wrap">
<div class="center">
<span class="eyebrow">Notre approche</span>
<h2>Du conseil au code, en passant par la prise</h2>
<p class="lead">Peu de prestataires couvrent à la fois l'infrastructure et le développement. C'est pourtant là que se règlent la plupart des problèmes : entre les deux.</p>
</div>
<div class="grid grid--2">
<article class="card reveal">
<h3>Consultance & audit</h3>
<p>Nous commençons toujours par regarder ce qui existe. L'audit fait l'inventaire du matériel, du réseau, des licences, des sauvegardes et des risques — puis débouche sur un plan chiffré et priorisé, pas sur un devis fourre-tout.</p>
<ul class="tags">
<li>Audit d'infrastructure</li><li>Cahier des charges</li><li>Choix de solutions</li>
<li>Plan de migration</li><li>Budget & priorisation</li>
</ul>
</article>
<article class="card reveal">
<h3>Développement d'applications</h3>
<p>Quand aucun logiciel du marché ne colle vraiment à votre métier, nous développons l'outil qui manque : application web, base de données, automatisation de tâches répétitives, interfaces entre vos logiciels existants.</p>
<ul class="tags">
<li>Applications web</li><li>Outils métier</li><li>Bases de données</li>
<li>Automatisation</li><li>Intégrations & API</li>
</ul>
</article>
</div>
</div>
</section>
<!-- À PROPOS -->
<section class="section" id="apropos">
<div class="wrap about">
<div>
<span class="eyebrow">À propos</span>
<h2>Une référence locale depuis 2005</h2>
<p>AD Websys SPRL est active dans la région de Dour-Quiévrain depuis 2005. En vingt ans, nous sommes devenus une référence pour les indépendants, les professions libérales et les PME de la région qui veulent un informaticien joignable, qui connaît leur installation et qui parle leur langue.</p>
<p>Le conseil et la disponibilité restent nos deux principaux atouts. Nous ne vendons pas du matériel pour vendre du matériel : très souvent, le poste « informatique » est vu comme un coût, alors que vous passez près de 8 h par jour devant votre écran. Autant que cet environnement travaille pour vous.</p>
<ul class="checklist">
<li><svg viewBox="0 0 24 24"><path d="m5 13 4 4L19 7"/></svg><span><strong>Un interlocuteur unique</strong> — pas de hotline anonyme, pas de ticket qui se perd.</span></li>
<li><svg viewBox="0 0 24 24"><path d="m5 13 4 4L19 7"/></svg><span><strong>Devis avant intervention</strong> — vous savez ce que vous payez, et pourquoi.</span></li>
<li><svg viewBox="0 0 24 24"><path d="m5 13 4 4L19 7"/></svg><span><strong>Proximité réelle</strong> — intervention sur site dans la région, support à distance partout.</span></li>
</ul>
</div>
<div class="stats reveal">
<div class="stat"><b>2005</b><span>Année de création</span></div>
<div class="stat"><b>20 ans</b><span>D'expérience</span></div>
<div class="stat"><b>PME</b><span>& indépendants</span></div>
<div class="stat"><b>Local</b><span>Dour-Quiévrain</span></div>
</div>
</div>
</section>
<!-- CTA BAND -->
<section class="wrap" style="padding-bottom:88px">
<div class="band reveal">
<div>
<h2>Un audit gratuit de votre parc informatique ?</h2>
<p>Nous passons en revue votre installation et identifions les gains de performance, les risques de sécurité et les économies possibles. Sans engagement.</p>
</div>
<a class="btn btn--primary" href="#contact">Prendre contact</a>
</div>
</section>
<!-- CONTACT -->
<section class="section section--alt" id="contact">
<div class="wrap contact">
<div>
<span class="eyebrow">Contact</span>
<h2>Parlons de votre projet</h2>
<p>Une panne, un projet de développement, un parc à remettre à plat ? Écrivez-nous en quelques lignes, nous revenons vers vous rapidement.</p>
<ul class="contact-list">
<li>
<div class="icon"><svg viewBox="0 0 24 24"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m2 7 10 6 10-6"/></svg></div>
<div><strong>Par le formulaire</strong><span>Le moyen le plus rapide de nous joindre. Votre message arrive directement dans notre boîte.</span></div>
</li>
<li>
<div class="icon"><svg viewBox="0 0 24 24"><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z"/><circle cx="12" cy="10" r="3"/></svg></div>
<div><strong>Zone d'intervention</strong><span>Dour · Quiévrain · Mons-Borinage</span></div>
</li>
<li>
<div class="icon"><svg viewBox="0 0 24 24"><path d="M3 21h18M5 21V7l8-4v18M19 21V11l-6-4"/><path d="M9 9h.01M9 12h.01M9 15h.01"/></svg></div>
<div><strong>AD Websys SPRL</strong><span>TVA BE 0877.493.177</span></div>
</li>
</ul>
</div>
<form action="contact.php" method="POST" id="contactForm">
<div class="form-alert form-alert--ok" id="alertOk" hidden>
<strong>Message envoyé.</strong> Merci, nous revenons vers vous rapidement.
</div>
<div class="form-alert form-alert--err" id="alertErr" hidden>
<strong>L'envoi a échoué.</strong> Vérifiez que le nom, l'e-mail et le message sont bien remplis, puis réessayez.
</div>
<div class="form-alert form-alert--err" id="alertCaptcha" hidden>
<strong>Vérification anti-robot non validée.</strong> Rechargez la page et réessayez.
</div>
<div class="form-alert form-alert--warn" id="alertTrop" hidden>
<strong>Trop de messages envoyés.</strong> Merci de patienter une heure avant un nouvel envoi.
</div>
<!-- Piège à robots : invisible pour un humain, rempli par les bots -->
<div class="hp" aria-hidden="true">
<label for="website">Ne remplissez pas ce champ</label>
<input type="text" id="website" name="website" tabindex="-1" autocomplete="off">
</div>
<input type="hidden" name="ts" id="ts" value="">
<div class="field-row">
<div class="field">
<label for="nom">Nom</label>
<input type="text" id="nom" name="nom" autocomplete="name" required>
</div>
<div class="field">
<label for="societe">Société</label>
<input type="text" id="societe" name="societe" autocomplete="organization">
</div>
</div>
<div class="field-row">
<div class="field">
<label for="email">E-mail</label>
<input type="email" id="email" name="email" autocomplete="email" required>
</div>
<div class="field">
<label for="tel">Téléphone</label>
<input type="tel" id="tel" name="tel" autocomplete="tel">
</div>
</div>
<div class="field">
<label for="sujet">Votre demande concerne</label>
<select id="sujet" name="sujet">
<option>Consultance / audit</option>
<option>Développement d'application</option>
<option>Maintenance & support</option>
<option>Réseau / serveur</option>
<option>Sécurité & sauvegarde</option>
<option>Matériel & réparation</option>
<option>Autre</option>
</select>
</div>
<div class="field">
<label for="message">Message</label>
<textarea id="message" name="message" required placeholder="Décrivez votre besoin en quelques lignes…"></textarea>
</div>
<input type="hidden" name="g-recaptcha-response" id="grt" value="">
<button class="btn btn--primary" type="submit" id="submitBtn" style="width:100%">Envoyer la demande</button>
<p class="form-note">Vos données servent uniquement à répondre à votre demande et ne sont ni revendues, ni utilisées à d'autres fins. Ce formulaire est protégé par reCAPTCHA : les <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">règles de confidentialité</a> et les <a href="https://policies.google.com/terms" target="_blank" rel="noopener">conditions d'utilisation</a> de Google s'appliquent.</p>
</form>
</div>
</section>
</main>
<footer class="site-footer">
<div class="wrap">
<div class="footer-top">
<div>
<span class="brand"><span class="mark">A<span>D</span></span> AD Websys</span>
<p>Consultance informatique et développement d'applications pour les indépendants et PME de la région Dour-Quiévrain.</p>
</div>
<nav class="footer-nav">
<a href="#services">Services</a>
<a href="#expertise">Expertise</a>
<a href="#apropos">À propos</a>
<a href="#contact">Contact</a>
</nav>
</div>
<div class="footer-bottom">
<span>© <span id="year">2026</span> AD Websys SPRL — Tous droits réservés</span>
<span>TVA BE 0877.493.177</span>
</div>
</div>
</footer>
<script>
(function(){
var y = document.getElementById('year');
if (y) y.textContent = new Date().getFullYear();
/* Horodatage : le script PHP rejette les envois trop rapides (robots) */
var ts = document.getElementById('ts');
if (ts) ts.value = String(Math.floor(Date.now() / 1000));
/* Message de confirmation après retour de contact.php */
var params = new URLSearchParams(window.location.search);
var etats = { ok: 'alertOk', err: 'alertErr', captcha: 'alertCaptcha', trop: 'alertTrop' };
var recu = null;
for (var cle in etats) {
if (params.get(cle) === '1') {
var box = document.getElementById(etats[cle]);
if (box) box.hidden = false;
recu = cle;
}
}
if (recu && window.history.replaceState) {
window.history.replaceState({}, '', window.location.pathname + '#contact');
}
var toggle = document.getElementById('navToggle');
var nav = document.getElementById('mainNav');
if (toggle && nav) {
toggle.addEventListener('click', function(){
var open = nav.classList.toggle('is-open');
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
});
nav.addEventListener('click', function(e){
if (e.target.tagName === 'A') {
nav.classList.remove('is-open');
toggle.setAttribute('aria-expanded','false');
}
});
}
/* reCAPTCHA v3 : le jeton est demandé au moment de l'envoi, pas au chargement.
Il n'a qu'environ deux minutes de validité — le générer plus tôt le ferait
expirer pendant que le visiteur remplit le formulaire. */
var SITEKEY = '6LcruJctAAAAACTHEXg2-vC9vhF5P5rNnCkYHmrq';
var form = document.getElementById('contactForm');
var champJeton = document.getElementById('grt');
var bouton = document.getElementById('submitBtn');
if (form && champJeton) {
form.addEventListener('submit', function (e) {
e.preventDefault();
if (typeof form.reportValidity === 'function' && !form.checkValidity()) {
form.reportValidity();
return;
}
function envoyer() { form.submit(); }
if (typeof grecaptcha === 'undefined' || !grecaptcha.ready) {
envoyer(); /* script Google indisponible : le serveur tranchera */
return;
}
if (bouton) { bouton.disabled = true; bouton.textContent = 'Envoi en cours…'; }
var secours = setTimeout(envoyer, 6000); /* Google ne répond pas : on envoie quand même */
grecaptcha.ready(function () {
grecaptcha.execute(SITEKEY, { action: 'contact' }).then(function (jeton) {
clearTimeout(secours);
champJeton.value = jeton;
envoyer();
}, function () {
clearTimeout(secours);
envoyer();
});
});
});
}
var items = document.querySelectorAll('.reveal');
function showAll(){
for (var i=0;i<items.length;i++) items[i].classList.add('is-visible');
}
if (!('IntersectionObserver' in window)) { showAll(); return; }
document.documentElement.classList.add('anim');
/* filet de sécurité : si l'observateur ne se déclenche pas, tout s'affiche */
setTimeout(showAll, 3000);
var io = new IntersectionObserver(function(entries){
entries.forEach(function(entry){
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
io.unobserve(entry.target);
}
});
}, { rootMargin: '0px 0px -60px 0px', threshold: 0.1 });
items.forEach(function(el, i){
el.style.transitionDelay = (i % 3) * 70 + 'ms';
io.observe(el);
});
})();
</script>
</body>
</html>
Shown as plain text. Nothing from adwebsys.be runs in your browser. Underlined links open their own code view, and line numbers give you a link to share.