Notre équipe​

Le travail du PAP/RAC est soutenu par une équipe multidisciplinaire qui transforme les engagements régionaux en soutien concret à la planification, aux politiques et à la gouvernance à travers la Méditerranée. Cela inclut un engagement fort en faveur de l'égalité des genres, intégré à l'ensemble de nos programmes et approches.​

Photo: Jakov Prkić

Direction

En savoir plus

Daria Povh Škugor a été nommée Directrice en juin 2024. Auparavant, elle occupait le poste de Chargée principale de programme, coordonnant des projets de gestion côtière à grande échelle dans toute la Méditerranée, du niveau régional au niveau local. Daria détient un diplôme en économie côtière et une Maîtrise en gestion des zones côtières de l’Université d’Ulster. Elle a également passé une année à l’Université de Venise travaillant sur la gestion de la Lagune vénitienne. Elle s’engage à faire progresser la résilience et la durabilité dans les zones côtières méditerranéennes grâce à une approche intégrée, rassemblant gouvernements, science, communautés et entreprises.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

En savoir plus

Marko Prem a rejoint le CAR/PAP en 2000. Il a contribué à la négociation du Protocole GIZC et continue de soutenir sa mise en œuvre. En 2011-2012, il a servi comme Directeur intérimaire du Centre. Il détient un Doctorat en géographie de l’Université de Primorska (Slovénie), une Maîtrise en politique environnementale et gestion de l’Université de Hull (Royaume-Uni), et des diplômes en architecture paysagère et agronomie de l’Université de Ljubljana (Slovénie). Ses travaux se concentrent sur les politiques d’aménagement et de gouvernance côtière et marine, ainsi que leur suivi et évaluation. Il travaille aussi sur les initiatives politiques et de gestion connexes du Centre.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Personnel de programme et technique

Marina Marković

Chargée principale de programme

En savoir plus

Marina Marković

Chargée principale de programme

Marina Marković travaille sur la gouvernance côtière intégrée et la planification de l’espace maritime à travers la Méditerranée, avec une expérience particulière dans la région adriatique.

Son travail soutient la coopération régionale et les processus de planification nationale.

Elle détient un Master en sciences politiques et des diplômes de recherche postuniversitaire en gestion côtière.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Veronique Evers

Chargée de programme

En savoir plus

Veronique Evers

Chargée de programme

Veronique Evers détient un Master en géographie de l’Université du Maine (France). Elle a une vaste expérience professionnelle soutenant les pays du sud de la Méditerranée dans leurs voies vers la durabilité côtière.

Elle travaille principalement sur la gouvernance et le renforcement des capacités liés à la GIZC et l’économie bleue, et ses principaux intérêts incluent les dimensions sociales et juridiques de la gestion côtière.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Ivan Sekovski

Chargé de programme

En savoir plus

Ivan Sekovski

Chargé de programme

Ivan Sekovski travaille au CAR/PAP depuis 2015, sur des projets impliquant la planification côtière, les solutions fondées sur la nature et la résilience climatique, et le suivi marin et côtier. Il détient un PhD en gestion marine et côtière de l’Université de Cadiz, un MSc en gestion de l’eau et côtière de l’Université de Faro, et un MSc en biologie marine et écologie de l’Université de Split.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Ante Ivčević

Chargé de programme

En savoir plus

Ante Ivčević

Chargé de programme

Depuis qu’il a rejoint l’équipe en 2021, Ante Ivčević a travaillé sur les plans et stratégies côtiers, ainsi que sur des projets axés sur l’adaptation climatique et la résilience côtière. Ante détient un PhD en géographie (gestion des risques) et un MSc en océanographie (environnement marin) de l’Université d’Aix-Marseille, ainsi qu’un MSc en physique-géophysique de l’Université de Zagreb.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Tea Marasović

Chargée de programme

En savoir plus

Tea Marasović

Chargée de programme

Tea Marasović gère les projets internationaux et dirige les initiatives de communication et de sensibilisation soutenant l’engagement des parties prenantes et la résilience côtière en Méditerranée. Avec un MA en sociologie, elle a de l’expérience en gestion de projets et communication dans les secteurs public, privé et de la société civile, et un background en journalisme.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Personnel administratif​

Dina Šilović

Chargée de gestion administrative des fonds

En savoir plus

Dina Šilović

Chargée de gestion administrative des fonds

Elle est une cadre exécutive expérimentée dirigeant l’Administration et responsable de gestion de fonds, supervisant les projets financés par de multiples bailleurs internationaux. Elle détient un Master en économie de l’Université de Zagreb. Elle gère la planification financière, l’administration des fonds, les rapports, les flux de trésorerie et la gestion d’actifs, les procédures internes, et le suivi budgétaire, fournissant des conseils pour assurer une mise en œuvre efficace des projets et contribuant à la prise de décision stratégique. Elle assure la conformité avec les exigences des bailleurs et une exécution transparente, responsable et efficace des projets.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Lada Jakelić

Responsable administrative

En savoir plus

Lada Jakelić

Responsable administrative

Lada coordonne les réunions, séminaires, voyages officiels et missions d’experts, soutenant l’organisation fluide des activités du Centre. Elle supervise les processus administratifs et opérationnels au CAR/PAP et détient un Master en chimie.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });

Adriana Baban

Assistante générale

En savoir plus

Adriana Baban

Assistante générale

Adriana fait partie de l’équipe du CAR/PAP depuis 2022. Elle soutient le fonctionnement quotidien du Centre en aidant à maintenir les installations de bureau et en assurant un environnement de travail agréable et accueillant.

// Add drag handle to each modal document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.team-modal-inner').forEach(modal => { const handle = document.createElement('div'); handle.className = 'team-modal-handle'; modal.insertBefore(handle, modal.firstChild); }); }); // Shared close function function closeModal(card) { const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); if (window.innerWidth { modal.classList.remove('is-open'); modal.style.transform = ''; modal.style.transition = ''; }, 350); } else { // Desktop: fade out modal.classList.remove('is-open'); overlay.classList.remove('is-open'); document.body.classList.remove('modal-open'); } } // Open document.addEventListener('click', function(e) { const btn = e.target.closest('.team-modal-btn'); if (!btn) return; const card = btn.closest('.e-loop-item'); const modal = card.querySelector('.team-modal-inner'); const overlay = card.querySelector('.team-modal-overlay'); modal.classList.add('is-open'); overlay.classList.add('is-open'); document.body.classList.add('modal-open'); }); // Close via overlay or close button document.addEventListener('click', function(e) { const trigger = e.target.closest('.team-modal-overlay, .team-modal-close'); if (!trigger) return; e.preventDefault(); closeModal(trigger.closest('.e-loop-item')); }); // Escape key document.addEventListener('keydown', function(e) { if (e.key !== 'Escape') return; document.querySelectorAll('.team-modal-inner.is-open').forEach(modal => { closeModal(modal.closest('.e-loop-item')); }); }); // ── Drag to dismiss — handle only ── let touchStartY = 0; let isDragging = false; let activeModal = null; let activeCard = null; document.addEventListener('touchstart', function(e) { if (!e.target.closest('.team-modal-handle')) return; const modal = e.target.closest('.team-modal-inner'); if (!modal) return; touchStartY = e.touches[0].clientY; isDragging = true; activeModal = modal; activeCard = modal.closest('.e-loop-item'); modal.style.transition = 'none'; }, { passive: true }); document.addEventListener('touchmove', function(e) { if (!isDragging || !activeModal) return; const delta = e.touches[0].clientY - touchStartY; if (delta 120) { closeModal(activeCard); } else { // Snap back activeModal.style.transition = 'transform 0.35s ease'; activeModal.style.transform = 'translateY(0)'; setTimeout(() => { activeModal.style.transition = ''; }, 350); } activeModal = null; activeCard = null; });