Contact
- Annecy
- Bordeaux
- Lyon
- Montpellier
- Toulouse
Contact form
/* Font (Poppins) */
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&display=swap");
.klf-contact-box{
font-family: "Poppins", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
border-radius:16px;
padding:18px;
background:#243391FA;
color:#fff;
box-shadow: 0 10px 26px rgba(0,0,0,.18);
}
.klf-contact-box label{
display:block;
font-weight:600;
margin-bottom:6px;
font-size:14px;
opacity:.95;
}
.klf-contact-hint{
margin:0 0 12px 0; /* maintenant sous le label */
font-size:12px;
opacity:.85;
}
.klf-contact-box select{
width:100%;
padding:12px 12px;
border-radius:12px;
border:1px solid rgba(255,255,255,.22);
background:rgba(255,255,255,.10);
color:#fff;
font-size:14px;
outline:none;
transition: all .15s ease;
}
.klf-contact-box select:focus{
border-color: rgba(255,255,255,.55);
box-shadow: 0 0 0 3px rgba(255,255,255,.12);
}
.klf-contact-box option{
color:#111; /* dropdown list in browser UI */
}
.klf-contact-card{
margin-top:16px;
padding:16px;
border-radius:14px;
background:rgba(255,255,255,.10);
border:1px solid rgba(255,255,255,.18);
display:none;
}
.klf-contact-card h3{
margin:0 0 14px 0;
font-size:18px;
line-height:1.25;
font-weight:700;
letter-spacing:.1px;
}
.klf-contact-item{
padding:12px 0;
border-top: 1px solid rgba(255,255,255,.14);
}
.klf-contact-item:first-of-type{
border-top: none;
padding-top: 0;
}
.klf-contact-item-title{
display:flex;
align-items:center;
gap:10px;
font-weight:600;
font-size:14px;
line-height:1.2;
margin:0 0 6px 0;
opacity:.98;
}
.klf-emoji{
font-size:16px;
line-height:1;
flex: 0 0 auto;
}
.klf-contact-item-value{
font-size:14px;
line-height:1.5;
opacity:.95;
padding-left:26px; /* align with text after emoji */
word-break: break-word;
}
.klf-contact-item-value a{
color:#fff;
text-decoration:underline;
text-underline-offset: 3px;
}
(function(){
// Données affichées dans le bloc "coordonnées"
const data = {
annecy: {
title: "KLF Annecy (IFALPES)",
address: "3 Rue de Rumilly, 74000 Annecy",
phoneDisplay: "+33 4 50 45 38 37",
phoneHref: "+33450453837",
email: "exam@ifalpes.com"
},
bordeaux: {
title: "KLF Bordeaux (Newdeal Institut)",
address: "Jardin de l’Ars, 2 Parvis Gattebourse, 33800 Bordeaux",
phoneDisplay: "+33 9 53 03 16 20",
phoneHref: "+33953031620",
email: "exam@newdealinstitut.com"
},
lyon: {
title: "KLF Lyon (Lyon Bleu International)",
address: "82 rue Duguesclin, 69006 Lyon",
phoneDisplay: "+33 (0)4 37 48 00 26",
phoneHref: "+33437480026",
email: "exam@lyon-bleu.fr"
},
montpellier: {
title: "KLF Montpellier (LSF)",
address: "6 rue Foch, 34000 Montpellier",
phoneDisplay: "+33 4 67 91 31 60",
phoneHref: "+33467913160",
email: "exam@lsf-france.com"
},
toulouse: {
title: "KLF Toulouse (Langue Onze)",
address: "10 rue des Arts, 31000 Toulouse",
phoneDisplay: "+33 (0)5 61 62 54 58",
phoneHref: "+33561625458",
email: "examen@langueonze.com"
}
};
// Mapping EXACT des choix Gravity Forms pour le champ label "École"
const gfChoiceTextByKey = {
annecy: "KLF Annecy (IFAlpes)",
bordeaux: "KLF Bordeaux (Newdeal Institut)",
lyon: "KLF Lyon (Lyon Bleu International)",
montpellier: "KLF Montpellier (LSF)",
toulouse: "KLF Toulouse (Langue Onze)"
};
const select = document.getElementById("klfCitySelect");
const card = document.getElementById("klfContactCard");
function escapeHtml(str){
return String(str).replace(/[&"']/g, s => ({
"&":"&","":">","\"":""","'":"'"
}[s]));
}
function render(key){
const v = data[key];
if(!v){
card.style.display = "none";
card.innerHTML = "";
return;
}
card.innerHTML = `
`;
card.style.display = "block";
}
function normalize(s) {
return (s || "").toString().replace(/\s+/g, " ").trim().toLowerCase();
}
function findGfFieldContainerByLabel(labelText) {
const labels = document.querySelectorAll(".gform_wrapper .gfield_label");
const target = normalize(labelText);
for (const lab of labels) {
if (normalize(lab.textContent).startsWith(target)) {
const field = lab.closest(".gfield");
if (field) return field;
}
}
return null;
}
function setGfSchoolChoice(choiceText) {
const field = findGfFieldContainerByLabel("École");
if (!field) return false;
// Cas 1 : Dropdown (select)
const gfSelect = field.querySelector("select");
if (gfSelect) {
const options = Array.from(gfSelect.options);
const opt = options.find(o => normalize(o.textContent) === normalize(choiceText));
if (opt) {
gfSelect.value = opt.value;
gfSelect.dispatchEvent(new Event("change", { bubbles: true }));
return true;
}
}
// Cas 2 : Radios
const radios = Array.from(field.querySelectorAll('input[type="radio"]'));
if (radios.length) {
for (const r of radios) {
const label = field.querySelector(`label[for="${r.id}"]`);
if (label && normalize(label.textContent) === normalize(choiceText)) {
r.checked = true;
r.dispatchEvent(new Event("change", { bubbles: true }));
return true;
}
}
}
return false;
}
function syncToGravityForms(key) {
const choiceText = gfChoiceTextByKey[key];
if (!choiceText) return;
// Retry pour les cas où le formulaire charge après (AJAX / cache)
let tries = 0;
const maxTries = 10;
const interval = setInterval(() => {
tries++;
const ok = setGfSchoolChoice(choiceText);
if (ok || tries >= maxTries) clearInterval(interval);
}, 300);
}
select.addEventListener("change", (e) => {
const key = e.target.value;
render(key);
syncToGravityForms(key);
});
})();
Sélectionner une ville pour afficher les coordonnées.
Sélectionner une ville ...KLF AnnecyKLF BordeauxKLF LyonKLF MontpellierKLF Toulouse${escapeHtml(v.title)}
🏫Adresse
${escapeHtml(v.address)}
📞Téléphone
📩Email