Portes Ouvertes : L’Épopée du Rugby : une chasse au trésor familiale à travers Walferdange
9th August 2026
Walferdange Rugby Club

Le samedi 19 septembre 2026, à l’occasion de sa journée portes ouvertes, le Rugby Club Walferdange - De Renert vous invite à vivre une aventure originale au cœur de la commune : « L’Épopée du Rugby », une chasse au trésor grandeur nature mêlant énigmes, patrimoine local, balade et esprit d’équipe.
Petits et grands partiront sur les traces de Christophe Stoltz, premier bourgmestre de Walferdange lors de la création de la commune en 1851, au fil d’un parcours qui fera également quelques clins d’œil à l’histoire du rugby et à sa célèbre Rugby School.
Une autre manière de découvrir Walferdange
Munie de son livret de jeu illustré, chaque équipe devra résoudre une série d’énigmes d’observation et de réflexion devant plusieurs lieux emblématiques de Walferdange.
À chaque étape, ouvrez l’œil, cherchez les indices et récoltez les éléments nécessaires pour reconstituer le code secret final.
Une aventure conçue pour s’amuser en famille tout en découvrant — ou redécouvrant — l’histoire et le patrimoine de la commune.
Par le jeu on cherche, par l’engagement on trouve, par la solidarité on gagne !
Deux parcours, une même aventure
Chacun pourra choisir son parcours en fonction de son envie et de son rythme.
Parcours découverte – environ 3 km
⏱️ Durée estimée : 1h30
Un circuit accessible et familial, idéal pour profiter tranquillement des énigmes et de la balade avec les enfants.
Parcours aventure – environ 5 km
⏱️ Durée estimée : 2h30
Un parcours plus long et légèrement vallonné pour celles et ceux qui souhaitent prolonger l’aventure et découvrir encore davantage Walferdange.
Les deux circuits partent du terrain du Rugby Club Walferdange et s’y terminent.
Et le trésor dans tout ça ?
Votre retour au terrain ne marquera pas tout à fait la fin de l’aventure…
Une dernière épreuve grandeur nature vous attendra pour conclure votre parcours et accéder à la récompense finale.
Vous pourrez ensuite prolonger la journée dans l’ambiance conviviale des Renerts avec :
🤠 Rodéo gonflable
🎯 Jeux et animations
🍔 Petite restauration
🍻 Buvette
🎟️ Tombola
L’occasion également de découvrir le Rugby Club Walferdange, ses équipes et son esprit : Jeu, Engagement, Solidarité.
Et pourquoi pas essayer le rugby ?
Puisque l’aventure commence et se termine sur le terrain des Renerts, profitez-en pour découvrir aussi le rugby et la vie du RC Walferdange ! Tout au long de la journée, les membres du club seront présents pour vous accueillir, répondre à vos questions et vous présenter nos différentes équipes, de l’École de Rugby aux équipes seniors.
Les plus jeunes pourront également participer aux ateliers de découverte de l’École de Rugby, de 10h à 12h, pour courir, jouer, faire leurs premières passes et découvrir le ballon ovale dans une ambiance ludique et accessible à tous.
Que votre enfant souhaite essayer un nouveau sport, que vous soyez vous-même tenté de chausser les crampons ou simplement curieux de découvrir notre club, cette journée est l’occasion idéale de venir rencontrer les Renerts. Aucune expérience du rugby n’est nécessaire : il suffit d’avoir envie d’essayer !
Une journée pour découvrir le club autrement
Avec cette chasse au trésor, le RC Walferdange souhaite ouvrir ses portes bien au-delà du terrain de rugby.
Que vous connaissiez déjà le rugby ou que vous n’ayez jamais touché un ballon ovale, L’Épopée du Rugby est avant tout une aventure ouverte à toutes et tous.
Informations pratiques
📅 Samedi 19 septembre 2026
🕚 Départs libres entre 11h et 13h
📍 Départ et arrivée : terrain du Rugby Club Walferdange
👨👩👧👦 Public : familles, adultes et enfants
🗺️ Deux parcours au choix :
environ 3 km / 1h30
environ 5 km / 2h30, légèrement vallonné
🎟️ Participation gratuite
ℹ️ Les enfants participent sous la responsabilité de leurs parents ou accompagnateurs.
Prêts à partir sur les traces de Christophe Stoltz ?
Formez votre équipe, choisissez votre parcours et venez percer les secrets de Walferdange !
<!DOCTYPE html>
<!--
Inscriptions — Porte ouverte RC Walferdange (19/09/2026)
DEUX formulaires séparés (onglets) : Entraînement (10:00) et Rallye à énigmes (11:00-13:00).
INTÉGRATION (BenJ) : fichier autonome. Chaque formulaire a son propre envoi -> voir
handleSubmit(type, data) tout en bas. Branchez chaque "type" vers sa propre destination
(Google Form/Sheet ou backend) pour avoir deux tableaux distincts. Pas de stockage local.
Les âges sont des menus déroulants par participant -> agrégation facile (ex. nb d'enfants par âge).
-->
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Inscriptions — Porte ouverte RC Walferdange</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,500;0,9..144,600;1,9..144,500&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<style>
:root{
--parchment:#F3ECDA;--card:#FBF7EC;--green:#1C4B3A;--green-d:#143529;
--gold:#A9791F;--ink:#2B2720;--muted:#6E685B;--line:#E0D6BC;--line-d:#CBBE9C;--err:#9B2C2C;--radius:12px;
}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(120% 60% at 50% -10%,#F7F1E1 0%,var(--parchment) 60%) fixed;
color:var(--ink);font-family:"Inter",system-ui,sans-serif;line-height:1.5;padding:28px 16px 56px}
.wrap{max-width:640px;margin:0 auto}
header{text-align:center;margin:8px 0 18px}
.eyebrow{font:600 12px/1 "Inter";letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
h1{font-family:"Fraunces",Georgia,serif;font-weight:600;color:var(--green);font-size:clamp(28px,7vw,40px);margin:.28em 0 .12em}
.sub{color:var(--muted);max-width:34em;margin:0 auto;font-size:15px}
.tabs{display:flex;gap:8px;background:#efe6cd;border:1px solid var(--line);border-radius:12px;padding:6px;margin:0 0 18px}
.tab{flex:1;border:0;background:transparent;font:600 14px "Inter";color:var(--muted);
padding:11px 8px;border-radius:8px;cursor:pointer;transition:.15s;line-height:1.2}
.tab small{display:block;font-weight:400;font-size:11px;opacity:.8}
.tab[aria-selected="true"]{background:var(--green);color:#fff}
.tab[aria-selected="true"] small{opacity:.85}
form{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
box-shadow:0 1px 0 #fff inset,0 14px 30px -22px rgba(20,53,41,.5);padding:24px}
form[hidden]{display:none}
fieldset{border:0;margin:0 0 20px;padding:0}
legend{font-family:"Fraunces",Georgia,serif;font-size:18px;color:var(--green);font-weight:600;
margin-bottom:14px;width:100%;border-bottom:1px solid var(--line);padding-bottom:8px}
label{display:block;font-weight:500;font-size:14px;margin:0 0 6px}
.opt{font-weight:400;color:var(--muted)} .req{color:var(--gold)}
input[type=text],input[type=email],input[type=tel],input[type=number],select{
width:100%;padding:11px 12px;font:inherit;color:var(--ink);background:#fffdf7;
border:1px solid var(--line-d);border-radius:9px;transition:.15s}
input:focus,select:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(28,75,58,.16)}
.field{margin-bottom:16px}
.row{display:grid;gap:16px}
@media(min-width:520px){.row.two{grid-template-columns:1fr 1fr}}
.choices{display:grid;gap:8px;margin-bottom:6px}
.inline{display:flex;gap:10px}
.choice{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line-d);border-radius:10px;
padding:11px 13px;cursor:pointer;background:#fffdf7;transition:.15s;flex:1}
.choice:hover{border-color:var(--green)}
.choice input{margin:2px 0 0;accent-color:var(--green);width:17px;height:17px;flex:0 0 auto}
.choice .t{font-size:14px} .choice .hint{color:var(--muted);font-size:13px}
.ages{display:grid;gap:10px;grid-template-columns:1fr;margin-top:4px}
@media(min-width:460px){.ages{grid-template-columns:1fr 1fr}}
.ages .a label{font-size:12.5px;color:var(--muted);margin-bottom:4px}
.ages:empty{display:none}
.ages-hint{font-size:12.5px;color:var(--muted);margin:2px 0 0}
.cond{overflow:hidden;max-height:0;opacity:0;transition:max-height .3s,opacity .25s,margin .25s;margin:0}
.cond.open{max-height:200px;opacity:1;margin-top:12px}
.consent{display:flex;align-items:flex-start;gap:11px;padding:12px 0}
.consent+.consent{border-top:1px dashed var(--line)}
.consent input{margin:2px 0 0;accent-color:var(--green);width:18px;height:18px;flex:0 0 auto}
.consent label{margin:0}
.small{font-weight:400;color:var(--muted);font-size:13px;display:block;margin-top:2px}
details{margin-top:6px} summary{cursor:pointer;color:var(--green);font-size:13px;font-weight:500}
details p{font-size:12.5px;color:var(--muted);margin:8px 0 0;line-height:1.55}
button.send{width:100%;font:600 16px "Inter";color:#fff;background:var(--green);border:0;border-radius:11px;
padding:15px;cursor:pointer;margin-top:6px;transition:.15s}
button.send:hover{background:var(--green-d)} button.send:active{transform:translateY(1px)}
.err-msg{color:var(--err);font-size:13px;margin-top:6px;display:none}
.show-err:invalid{border-color:var(--err)}
.foot{text-align:center;color:var(--muted);font-size:12.5px;margin-top:16px}
.success{display:none;text-align:center;padding:28px 10px;background:var(--card);
border:1px solid var(--line);border-radius:var(--radius)}
.success h2{font-family:"Fraunces",serif;color:var(--green);font-size:24px;margin:.2em 0}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
</style>
</head>
<body>
<div class="wrap">
<header>
<div class="eyebrow">Porte ouverte · Samedi 19 septembre 2026</div>
<h1>Inscription</h1>
<p class="sub">Deux rendez-vous, deux inscriptions. Choisissez ci-dessous —
et si vous venez aux deux, remplissez simplement les deux onglets.</p>
</header>
<div class="tabs" role="tablist" aria-label="Choisir l'événement">
<button class="tab" id="tab-ent" role="tab" aria-selected="true" aria-controls="form-ent">
Entraînement <small>10:00</small></button>
<button class="tab" id="tab-ral" role="tab" aria-selected="false" aria-controls="form-ral">
Rallye à énigmes <small>départs 11:00–13:00</small></button>
</div>
<!-- ================= ENTRAÎNEMENT ================= -->
<form id="form-ent" role="tabpanel" aria-labelledby="tab-ent" novalidate>
<fieldset>
<legend>Vos coordonnées</legend>
<div class="row two">
<div class="field"><label for="e-prenom">Prénom <span class="req">*</span></label>
<input id="e-prenom" name="prenom" type="text" required autocomplete="given-name"></div>
<div class="field"><label for="e-nom">Nom <span class="req">*</span></label>
<input id="e-nom" name="nom" type="text" required autocomplete="family-name"></div>
</div>
<div class="row two">
<div class="field"><label for="e-email">E-mail <span class="req">*</span></label>
<input id="e-email" name="email" type="email" required placeholder="vous@exemple.lu"></div>
<div class="field"><label for="e-tel">Téléphone <span class="opt">(facultatif)</span></label>
<input id="e-tel" name="tel" type="tel"></div>
</div>
</fieldset>
<fieldset>
<legend>Participation à l'entraînement</legend>
<label id="e-lbl-membre">Êtes-vous membre du club ? <span class="req">*</span></label>
<div class="inline" role="radiogroup" aria-labelledby="e-lbl-membre" style="margin-bottom:6px">
<label class="choice"><input type="radio" name="membre" value="oui" required><span class="t">Oui</span></label>
<label class="choice"><input type="radio" name="membre" value="non" required><span class="t">Non</span></label>
</div>
<p class="err-msg" id="e-err-membre">Merci d'indiquer si vous êtes membre.</p>
<div class="cond" id="e-copain">
<label id="e-lbl-copain">J'amène un copain / une copine (invité·e non-membre)</label>
<div class="inline" role="radiogroup" aria-labelledby="e-lbl-copain">
<label class="choice"><input type="radio" name="copain" value="oui"><span class="t">Oui</span></label>
<label class="choice"><input type="radio" name="copain" value="non"><span class="t">Non</span></label>
</div>
</div>
<div class="field" style="margin-top:16px"><label for="e-nb">Nombre de participants (vous compris) <span class="req">*</span></label>
<input id="e-nb" name="nb" type="number" min="1" max="12" required inputmode="numeric" data-ages="e-ages"></div>
<p class="ages-hint">Indiquez l'âge de chaque participant — cela nous permet de préparer les groupes.</p>
<div class="ages" id="e-ages"></div>
</fieldset>
<fieldset>
<legend>Avant de valider</legend>
<div class="consent">
<input id="e-rgpd" name="rgpd" type="checkbox" required>
<div><label for="e-rgpd">J'accepte le traitement de mes données <span class="req">*</span>
<span class="small">Uniquement pour organiser l'événement.</span></label>
<details><summary>Politique de confidentialité</summary>
<p>Le Rugby Club Walferdange (De Renert) collecte ces informations uniquement pour organiser la
porte ouverte du 19 septembre 2026 — et, si vous cochez la case ci-dessous, pour vous envoyer sa
newsletter. Vos données ne sont pas transmises à des tiers et sont conservées jusqu'à [3 mois] après
l'événement (newsletter : jusqu'à votre désinscription). Vous pouvez demander à tout moment l'accès,
la rectification ou la suppression de vos données en écrivant à [email du club].</p></details></div>
</div>
<div class="consent"><input id="e-news" name="news" type="checkbox">
<div><label for="e-news">Je souhaite recevoir la newsletter du club
<span class="small">Facultatif — désinscription possible à tout moment.</span></label></div></div>
<p class="err-msg" id="e-err-rgpd">Cette case est nécessaire pour valider l'inscription.</p>
</fieldset>
<button class="send" type="submit">M'inscrire à l'entraînement</button>
<p class="foot">Rugby Club Walferdange · De Renert · walferdange-rugby.lu</p>
</form>
<!-- ================= RALLYE ================= -->
<form id="form-ral" role="tabpanel" aria-labelledby="tab-ral" hidden novalidate>
<fieldset>
<legend>Vos coordonnées</legend>
<div class="row two">
<div class="field"><label for="r-prenom">Prénom <span class="req">*</span></label>
<input id="r-prenom" name="prenom" type="text" required autocomplete="given-name"></div>
<div class="field"><label for="r-nom">Nom <span class="req">*</span></label>
<input id="r-nom" name="nom" type="text" required autocomplete="family-name"></div>
</div>
<div class="row two">
<div class="field"><label for="r-email">E-mail <span class="req">*</span></label>
<input id="r-email" name="email" type="email" required placeholder="vous@exemple.lu"></div>
<div class="field"><label for="r-tel">Téléphone <span class="opt">(facultatif)</span></label>
<input id="r-tel" name="tel" type="tel"></div>
</div>
</fieldset>
<fieldset>
<legend>Votre équipe</legend>
<div class="field"><label for="r-nb">Nombre de participants (vous compris) <span class="req">*</span></label>
<input id="r-nb" name="nb" type="number" min="1" max="12" required inputmode="numeric" data-ages="r-ages"></div>
<p class="ages-hint">L'âge de chaque participant nous aide à conseiller le bon parcours.</p>
<div class="ages" id="r-ages"></div>
<label id="r-lbl-parcours" style="margin-top:16px">Parcours souhaité <span class="req">*</span></label>
<div class="choices" role="radiogroup" aria-labelledby="r-lbl-parcours">
<label class="choice"><input type="radio" name="parcours" value="court" required>
<span class="t"><b>Court</b> <span class="hint">— ≈ 3 km · 1h30 · familial</span></span></label>
<label class="choice"><input type="radio" name="parcours" value="long" required>
<span class="t"><b>Long</b> <span class="hint">— ≈ 5 km · 2h30 · un peu vallonné</span></span></label>
</div>
<p class="err-msg" id="r-err-parcours">Merci de choisir un parcours.</p>
<div class="row two" style="margin-top:14px">
<div class="field"><label for="r-creneau">Créneau de départ souhaité</label>
<select id="r-creneau" name="creneau"><option value="">— indifférent —</option>
<option>11:00</option><option>11:30</option><option>12:00</option><option>12:30</option><option>13:00</option>
</select></div>
<div class="field"><label for="r-equipe">Nom d'équipe <span class="opt">(facultatif)</span></label>
<input id="r-equipe" name="equipe" type="text" placeholder="Les Renards de l'Alzette"></div>
</div>
</fieldset>
<fieldset>
<legend>Avant de valider</legend>
<div class="consent">
<input id="r-rgpd" name="rgpd" type="checkbox" required>
<div><label for="r-rgpd">J'accepte le traitement de mes données <span class="req">*</span>
<span class="small">Uniquement pour organiser l'événement.</span></label>
<details><summary>Politique de confidentialité</summary>
<p>Le Rugby Club Walferdange (De Renert) collecte ces informations uniquement pour organiser la
porte ouverte du 19 septembre 2026 — et, si vous cochez la case ci-dessous, pour vous envoyer sa
newsletter. Vos données ne sont pas transmises à des tiers et sont conservées jusqu'à [3 mois] après
l'événement (newsletter : jusqu'à votre désinscription). Vous pouvez demander à tout moment l'accès,
la rectification ou la suppression de vos données en écrivant à [email du club].</p></details></div>
</div>
<div class="consent"><input id="r-news" name="news" type="checkbox">
<div><label for="r-news">Je souhaite recevoir la newsletter du club
<span class="small">Facultatif — désinscription possible à tout moment.</span></label></div></div>
<p class="err-msg" id="r-err-rgpd">Cette case est nécessaire pour valider l'inscription.</p>
</fieldset>
<button class="send" type="submit">M'inscrire au rallye</button>
<p class="foot">Rugby Club Walferdange · De Renert · walferdange-rugby.lu</p>
</form>
<div class="success" id="ok">
<h2>Merci, c'est enregistré !</h2>
<p class="sub">Nous vous attendons le samedi 19 septembre. Un e-mail de confirmation vous parviendra.</p>
</div>
</div>
<script>
// ---- Onglets ----
const tabs = { ent: document.getElementById('tab-ent'), ral: document.getElementById('tab-ral') };
const forms = { ent: document.getElementById('form-ent'), ral: document.getElementById('form-ral') };
function activate(key){
for(const k in tabs){
const on = k===key;
tabs[k].setAttribute('aria-selected', on);
forms[k].hidden = !on;
}
}
tabs.ent.onclick = ()=>activate('ent');
tabs.ral.onclick = ()=>activate('ral');
// ---- Menus déroulants d'âge, un par participant ----
function ageOptions(){
let o = '<option value="">— âge —</option><option value="0-2">Moins de 3 ans</option>';
for(let a=3;a<=17;a++) o += `<option value="${a}">${a} ans</option>`;
o += '<option value="18+">18 ans et plus (adulte)</option>';
return o;
}
function buildAges(box, n, prefix){
const cur = {};
box.querySelectorAll('select').forEach(s=>cur[s.dataset.i]=s.value); // garder les choix déjà faits
box.innerHTML = '';
n = Math.max(0, Math.min(12, n|0));
for(let i=1;i<=n;i++){
const wrap = document.createElement('div'); wrap.className='a';
wrap.innerHTML = `<label for="${prefix}_age_${i}">Participant ${i}</label>
<select id="${prefix}_age_${i}" name="age_participant_${i}" data-i="${i}" required>${ageOptions()}</select>`;
box.appendChild(wrap);
if(cur[i]) wrap.querySelector('select').value = cur[i];
}
}
document.querySelectorAll('input[data-ages]').forEach(inp=>{
const box = document.getElementById(inp.dataset.ages);
const prefix = inp.dataset.ages;
inp.addEventListener('input', ()=>buildAges(box, parseInt(inp.value), prefix));
});
// ---- "Je ramène un copain" : membres uniquement ----
const copainBox = document.getElementById('e-copain');
document.querySelectorAll('input[name="membre"]').forEach(r=>{
r.addEventListener('change', ()=>{
const isMember = document.querySelector('input[name="membre"]:checked')?.value === 'oui';
copainBox.classList.toggle('open', isMember);
if(!isMember) document.querySelectorAll('input[name="copain"]').forEach(c=>c.checked=false);
});
});
// ---- Validation + envoi ----
function show(id,on){ document.getElementById(id).style.display = on?'block':'none'; }
function radioChecked(form,name){ return !!form.querySelector(`input[name="${name}"]:checked`); }
function wire(form, type, checks){
form.addEventListener('submit', e=>{
e.preventDefault();
let ok = true;
form.querySelectorAll('input[required],select[required]').forEach(el=>{
if(el.type==='checkbox'||el.type==='radio') return;
el.classList.add('show-err'); if(!el.checkValidity()) ok=false;
});
checks.forEach(c=>{ const bad = !c.test(form); show(c.err, bad); if(bad) ok=false; });
if(!ok){ form.querySelector('.show-err:invalid, .err-msg[style*="block"]')
?.scrollIntoView({behavior:'smooth',block:'center'}); return; }
handleSubmit(type, new FormData(form));
});
}
wire(forms.ent, 'entrainement', [
{ test:f=>radioChecked(f,'membre'), err:'e-err-membre' },
{ test:f=>f.querySelector('#e-rgpd').checked, err:'e-err-rgpd' },
]);
wire(forms.ral, 'rallye', [
{ test:f=>radioChecked(f,'parcours'), err:'r-err-parcours' },
{ test:f=>f.querySelector('#r-rgpd').checked, err:'r-err-rgpd' },
]);
// ---- À BRANCHER PAR BENJ ----
// "type" vaut 'entrainement' ou 'rallye' -> envoyez chaque type vers SA destination
// (deux Google Forms/Sheets, ou un backend qui range dans deux tables).
function handleSubmit(type, data){
const payload = Object.fromEntries(data.entries());
payload._event = type;
console.log('Inscription (' + type + ') :', payload);
// Exemple : fetch(type==='entrainement' ? URL_ENTRAINEMENT : URL_RALLYE, {method:'POST', body:data});
forms.ent.hidden = true; forms.ral.hidden = true;
document.querySelector('.tabs').style.display = 'none';
document.getElementById('ok').style.display = 'block';
window.scrollTo({top:0,behavior:'smooth'});
}
</script>
</body>
</html>
