<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CTO Management — Learn, Visualize, Master</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
:root {
--primary: #1a73e8;
--primary-dark: #0d47a1;
--secondary: #e8f4fd;
--accent: #ff6b6b;
--text: #333;
--text-light: #666;
--bg: #ffffff;
--card-bg: #f9f9f9;
--border: #e0e0e0;
--shadow: rgba(0, 0, 0, 0.1);
--success: #4caf50;
--warning: #ff9800;
--error: #f44336;
}
.dark-mode {
--primary: #4dabf7;
--primary-dark: #228be6;
--secondary: #1e2a3a;
--accent: #ff8787;
--text: #f0f0f0;
--text-light: #b0b0b0;
--bg: #121212;
--card-bg: #1e1e1e;
--border: #333;
--shadow: rgba(0, 0, 0, 0.3);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
transition: background-color 0.3s, color 0.3s;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
color: var(--text);
background-color: var(--bg);
}
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
/* Header */
header {
background-color: var(--bg);
box-shadow: 0 2px 10px var(--shadow);
position: sticky;
top: 0;
z-index: 1000;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
padding: 15px 0;
}
.logo {
display: flex;
align-items: center;
gap: 10px;
}
.logo i {
color: var(--primary);
font-size: 28px;
}
.logo h1 {
font-size: 22px;
font-weight: 700;
color: var(--primary);
}
.logo span {
color: var(--accent);
}
nav ul {
display: flex;
list-style: none;
gap: 25px;
}
nav a {
text-decoration: none;
color: var(--text);
font-weight: 500;
padding: 5px 0;
position: relative;
}
nav a:hover {
color: var(--primary);
}
nav a::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 2px;
background-color: var(--primary);
transition: width 0.3s;
}
nav a:hover::after {
width: 100%;
}
.header-actions {
display: flex;
align-items: center;
gap: 15px;
}
.lang-toggle, .theme-toggle {
background: none;
border: none;
color: var(--text);
cursor: pointer;
font-size: 16px;
display: flex;
align-items: center;
gap: 5px;
padding: 5px 10px;
border-radius: 4px;
}
.lang-toggle:hover, .theme-toggle:hover {
background-color: var(--secondary);
}
.mobile-menu-btn {
display: none;
background: none;
border: none;
color: var(--text);
font-size: 24px;
cursor: pointer;
}
/* Hero Section */
.hero {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
color: white;
padding: 80px 0;
text-align: center;
}
.hero h2 {
font-size: 2.5rem;
margin-bottom: 20px;
}
.hero p {
font-size: 1.2rem;
max-width: 700px;
margin: 0 auto 30px;
}
.cta-button {
display: inline-block;
background-color: var(--accent);
color: white;
padding: 12px 30px;
border-radius: 30px;
text-decoration: none;
font-weight: 600;
font-size: 1.1rem;
transition: transform 0.3s, box-shadow 0.3s;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
.cta-button:hover {
transform: translateY(-3px);
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
}
/* Sections */
section {
padding: 80px 0;
}
.section-title {
text-align: center;
margin-bottom: 50px;
position: relative;
}
.section-title h2 {
font-size: 2rem;
color: var(--primary);
display: inline-block;
padding-bottom: 10px;
}
.section-title h2::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 80px;
height: 3px;
background-color: var(--accent);
}
/* Techniques */
.techniques-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 30px;
}
.technique-card {
background-color: var(--card-bg);
border-radius: 10px;
overflow: hidden;
box-shadow: 0 5px 15px var(--shadow);
transition: transform 0.3s;
}
.technique-card:hover {
transform: translateY(-10px);
}
.technique-img {
height: 200px;
background-color: var(--secondary);
display: flex;
align-items: center;
justify-content: center;
color: var(--primary);
font-size: 50px;
}
.technique-content {
padding: 20px;
}
.technique-content h3 {
margin-bottom: 10px;
color: var(--primary);
}
.technique-content p {
color: var(--text-light);
margin-bottom: 15px;
}
.technique-btn {
display: inline-block;
background-color: var(--primary);
color: white;
padding: 8px 15px;
border-radius: 4px;
text-decoration: none;
font-size: 0.9rem;
transition: background-color 0.3s;
}
.technique-btn:hover {
background-color: var(--primary-dark);
}
/* Animation 3D */
.animation-section {
background-color: var(--secondary);
}
.animation-container {
display: flex;
flex-direction: column;
align-items: center;
}
.animation-viewer {
width: 100%;
height: 400px;
background-color: var(--card-bg);
border-radius: 10px;
margin-bottom: 20px;
position: relative;
overflow: hidden;
box-shadow: 0 5px 15px var(--shadow);
}
.animation-controls {
display: flex;
gap: 15px;
margin-bottom: 20px;
}
.control-btn {
background-color: var(--primary);
color: white;
border: none;
padding: 10px 20px;
border-radius: 4px;
cursor: pointer;
display: flex;
align-items: center;
gap: 8px;
transition: background-color 0.3s;
}
.control-btn:hover {
background-color: var(--primary-dark);
}
.animation-info {
text-align: center;
max-width: 600px;
color: var(--text-light);
}
/* Videos */
.videos-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
}
.video-card {
background-color: var(--card-bg);
border-radius: 10px;
overflow: hidden;
box-shadow: 0 5px 15px var(--shadow);
}
.video-placeholder {
height: 200px;
background-color: var(--secondary);
display: flex;
align-items: center;
justify-content: center;
color: var(--primary);
font-size: 50px;
position: relative;
}
.play-btn {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: rgba(255, 255, 255, 0.8);
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
color: var(--primary);
font-size: 24px;
cursor: pointer;
transition: all 0.3s;
}
.play-btn:hover {
background-color: white;
transform: translate(-50%, -50%) scale(1.1);
}
.video-content {
padding: 20px;
}
.video-content h3 {
margin-bottom: 10px;
color: var(--primary);
}
.video-content p {
color: var(--text-light);
margin-bottom: 15px;
}
/* Quiz */
.quiz-section {
background-color: var(--secondary);
}
.quiz-container {
max-width: 800px;
margin: 0 auto;
background-color: var(--card-bg);
border-radius: 10px;
padding: 30px;
box-shadow: 0 5px 15px var(--shadow);
}
.quiz-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.quiz-progress {
width: 100%;
height: 8px;
background-color: var(--border);
border-radius: 4px;
margin-bottom: 20px;
overflow: hidden;
}
.quiz-progress-bar {
height: 100%;
background-color: var(--primary);
width: 0%;
transition: width 0.3s;
}
.quiz-question {
font-size: 1.2rem;
margin-bottom: 20px;
font-weight: 600;
}
.quiz-options {
display: flex;
flex-direction: column;
gap: 15px;
margin-bottom: 30px;
}
.quiz-option {
padding: 15px;
background-color: var(--bg);
border: 2px solid var(--border);
border-radius: 8px;
cursor: pointer;
transition: all 0.2s;
}
.quiz-option:hover {
border-color: var(--primary);
}
.quiz-option.selected {
border-color: var(--primary);
background-color: var(--secondary);
}
.quiz-navigation {
display: flex;
justify-content: space-between;
}
.quiz-btn {
background-color: var(--primary);
color: white;
border: none;
padding: 10px 20px;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s;
}
.quiz-btn:hover {
background-color: var(--primary-dark);
}
.quiz-btn:disabled {
background-color: var(--border);
cursor: not-allowed;
}
.quiz-result {
text-align: center;
display: none;
}
.quiz-score {
font-size: 3rem;
font-weight: 700;
color: var(--primary);
margin: 20px 0;
}
.quiz-feedback {
margin-bottom: 30px;
color: var(--text-light);
}
/* Recommendations */
.recommendations-tabs {
display: flex;
justify-content: center;
margin-bottom: 30px;
flex-wrap: wrap;
gap: 10px;
}
.tab-btn {
background-color: var(--card-bg);
border: none;
padding: 10px 20px;
border-radius: 30px;
cursor: pointer;
font-weight: 500;
transition: all 0.3s;
color: var(--text);
border: 2px solid transparent;
}
.tab-btn.active {
background-color: var(--primary);
color: white;
}
.tab-btn:hover:not(.active) {
border-color: var(--primary);
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
.recommendation-card {
background-color: var(--card-bg);
border-radius: 10px;
padding: 25px;
margin-bottom: 20px;
box-shadow: 0 3px 10px var(--shadow);
}
.recommendation-card h3 {
color: var(--primary);
margin-bottom: 10px;
}
.recommendation-card p {
color: var(--text-light);
margin-bottom: 15px;
}
.recommendation-meta {
display: flex;
justify-content: space-between;
font-size: 0.9rem;
color: var(--text-light);
}
/* Experts */
.experts-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 30px;
}
.expert-card {
background-color: var(--card-bg);
border-radius: 10px;
overflow: hidden;
box-shadow: 0 5px 15px var(--shadow);
text-align: center;
}
.expert-img {
height: 200px;
background-color: var(--secondary);
display: flex;
align-items: center;
justify-content: center;
color: var(--primary);
font-size: 60px;
}
.expert-content {
padding: 20px;
}
.expert-content h3 {
margin-bottom: 5px;
color: var(--primary);
}
.expert-title {
color: var(--text-light);
margin-bottom: 10px;
font-size: 0.9rem;
}
.expert-bio {
color: var(--text-light);
font-size: 0.9rem;
margin-bottom: 15px;
}
.expert-contact {
display: flex;
justify-content: center;
gap: 10px;
}
.expert-contact a {
color: var(--primary);
font-size: 18px;
transition: color 0.3s;
}
.expert-contact a:hover {
color: var(--primary-dark);
}
/* Footer */
footer {
background-color: var(--primary-dark);
color: white;
padding: 60px 0 30px;
}
.footer-content {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 40px;
margin-bottom: 40px;
}
.footer-column h3 {
font-size: 1.2rem;
margin-bottom: 20px;
position: relative;
padding-bottom: 10px;
}
.footer-column h3::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 40px;
height: 2px;
background-color: var(--accent);
}
.footer-links {
list-style: none;
}
.footer-links li {
margin-bottom: 10px;
}
.footer-links a {
color: rgba(255, 255, 255, 0.8);
text-decoration: none;
transition: color 0.3s;
}
.footer-links a:hover {
color: white;
}
.footer-bottom {
text-align: center;
padding-top: 30px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
color: rgba(255, 255, 255, 0.7);
font-size: 0.9rem;
}
/* Modal */
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
z-index: 1100;
align-items: center;
justify-content: center;
}
.modal-content {
background-color: var(--bg);
border-radius: 10px;
width: 90%;
max-width: 800px;
max-height: 90vh;
overflow-y: auto;
position: relative;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
border-bottom: 1px solid var(--border);
}
.modal-header h2 {
color: var(--primary);
}
.close-modal {
background: none;
border: none;
font-size: 24px;
color: var(--text);
cursor: pointer;
}
.modal-body {
padding: 20px;
}
/* Responsive */
@media (max-width: 992px) {
.hero h2 {
font-size: 2rem;
}
nav ul {
gap: 15px;
}
}
@media (max-width: 768px) {
.header-content {
flex-wrap: wrap;
}
.logo h1 {
font-size: 18px;
}
nav {
order: 3;
width: 100%;
margin-top: 15px;
display: none;
}
nav.active {
display: block;
}
nav ul {
flex-direction: column;
gap: 10px;
}
.mobile-menu-btn {
display: block;
}
.hero {
padding: 60px 0;
}
.hero h2 {
font-size: 1.8rem;
}
section {
padding: 60px 0;
}
}
@media (max-width: 576px) {
.hero h2 {
font-size: 1.5rem;
}
.section-title h2 {
font-size: 1.6rem;
}
.animation-controls {
flex-direction: column;
width: 100%;
}
.control-btn {
width: 100%;
justify-content: center;
}
}
</style>
</head>
<body>
<!-- Header -->
<header>
<div class="container">
<div class="header-content">
<div class="logo">
<i class="fas fa-heartbeat"></i>
<h1>CTO <span>Management</span></h1>
</div>
<nav id="main-nav">
<ul>
<li><a href="#techniques">Techniques</a></li>
<li><a href="#animation">Animation 3D</a></li>
<li><a href="#videos">Vidéos</a></li>
<li><a href="#quiz">Quiz</a></li>
<li><a href="#recommendations">Recommandations</a></li>
<li><a href="#experts">Experts</a></li>
</ul>
</nav>
<div class="header-actions">
<button class="lang-toggle" id="langToggle">
<i class="fas fa-globe"></i> FR
</button>
<button class="theme-toggle" id="themeToggle">
<i class="fas fa-moon"></i>
</button>
<button class="mobile-menu-btn" id="mobileMenuBtn">
<i class="fas fa-bars"></i>
</button>
</div>
</div>
</div>
</header>
<!-- Hero Section -->
<section class="hero">
<div class="container">
<h2>CTO Management — Learn, Visualize, Master</h2>
<p>Plateforme éducative complète sur les techniques de recanalisation des occlusions coronaires chroniques (CTO) pour cardiologues interventionnels et étudiants.</p>
<a href="#techniques" class="cta-button">Découvrir les techniques</a>
</div>
</section>
<!-- Techniques Section -->
<section id="techniques">
<div class="container">
<div class="section-title">
<h2>Techniques de Recanalisation</h2>
</div>
<div class="techniques-grid">
<!-- AWE Technique -->
<div class="technique-card">
<div class="technique-img">
<i class="fas fa-route"></i>
</div>
<div class="technique-content">
<h3>Antegrade Wiring Escalation (AWE)</h3>
<p>Approche antérograde avec progression du fil guide à travers l'occlusion avec différentes stratégies d'escalade.</p>
<a href="#" class="technique-btn" data-technique="awe">Voir détails</a>
</div>
</div>
<!-- Retrograde Technique -->
<div class="technique-card">
<div class="technique-img">
<i class="fas fa-exchange-alt"></i>
</div>
<div class="technique-content">
<h3>Approche Rétrograde</h3>
<p>Utilisation de collatérales pour atteindre l'extrémité distale de l'occlusion et procéder à la recanalisation.</p>
<a href="#" class="technique-btn" data-technique="retrograde">Voir détails</a>
</div>
</div>
<!-- Dissection-Reentry Technique -->
<div class="technique-card">
<div class="technique-img">
<i class="fas fa-code-branch"></i>
</div>
<div class="technique-content">
<h3>Dissection-Réentrée</h3>
<p>Création d'un faux chenal suivi d'une réentrée dans la vraie lumière distale du vaisseau.</p>
<a href="#" class="technique-btn" data-technique="dissection">Voir détails</a>
</div>
</div>
<!-- Hybrid Technique -->
<div class="technique-card">
<div class="technique-img">
<i class="fas fa-sync-alt"></i>
</div>
<div class="technique-content">
<h3>Approche Hybride</h3>
<p>Combinaison stratégique des différentes techniques basée sur les caractéristiques de l'occlusion.</p>
<a href="#" class="technique-btn" data-technique="hybrid">Voir détails</a>
</div>
</div>
</div>
</div>
</section>
<!-- Animation 3D Section -->
<section id="animation" class="animation-section">
<div class="container">
<div class="section-title">
<h2>Animation 3D Interactive</h2>
</div>
<div class="animation-container">
<div class="animation-viewer" id="animationViewer">
<!-- Animation 3D will be rendered here -->
<div style="display: flex; align-items: center; justify-content: center; height: 100%; color: var(--text-light);">
<div style="text-align: center;">
<i class="fas fa-heartbeat" style="font-size: 60px; margin-bottom: 20px; color: var(--primary);"></i>
<p>Animation 3D interactive montrant la progression d'un fil guide dans un vaisseau coronarien</p>
</div>
</div>
</div>
<div class="animation-controls">
<button class="control-btn" id="playAnimation">
<i class="fas fa-play"></i> Lancer l'animation
</button>
<button class="control-btn" id="pauseAnimation">
<i class="fas fa-pause"></i> Pause
</button>
<button class="control-btn" id="resetAnimation">
<i class="fas fa-redo"></i> Réinitialiser
</button>
</div>
<div class="animation-info">
<p>Cette animation interactive illustre la progression d'un fil guide à travers une occlusion coronarienne chronique. Utilisez les contrôles pour explorer les différentes étapes de la procédure.</p>
</div>
</div>
</div>
</section>
<!-- Videos Section -->
<section id="videos">
<div class="container">
<div class="section-title">
<h2>Vidéos Pédagogiques</h2>
</div>
<div class="videos-grid">
<!-- Video 1 -->
<div class="video-card">
<div class="video-placeholder">
<div class="play-btn">
<i class="fas fa-play"></i>
</div>
</div>
<div class="video-content">
<h3>Principes de base des CTO</h3>
<p>Introduction aux occlusions coronaires chroniques, épidémiologie et principes fondamentaux.</p>
<a href="#" class="technique-btn" data-video="1">Regarder</a>
</div>
</div>
<!-- Video 2 -->
<div class="video-card">
<div class="video-placeholder">
<div class="play-btn">
<i class="fas fa-play"></i>
</div>
</div>
<div class="video-content">
<h3>Technique AWE pas à pas</h3>
<p>Démonstration détaillée de la technique Antegrade Wiring Escalation avec cas clinique.</p>
<a href="#" class="technique-btn" data-video="2">Regarder</a>
</div>
</div>
<!-- Video 3 -->
<div class="video-card">
<div class="video-placeholder">
<div class="play-btn">
<i class="fas fa-play"></i>
</div>
</div>
<div class="video-content">
<h3>Approche rétrograde avancée</h3>
<p>Maîtrise des techniques rétrogrades avec sélection des collatérales et manoeuvres spéciales.</p>
<a href="#" class="technique-btn" data-video="3">Regarder</a>
</div>
</div>
</div>
</div>
</section>
<!-- Quiz Section -->
<section id="quiz" class="quiz-section">
<div class="container">
<div class="section-title">
<h2>Quiz Interactif</h2>
</div>
<div class="quiz-container">
<div class="quiz-header">
<span id="quizCounter">Question 1/5</span>
<span id="quizScore">Score: 0</span>
</div>
<div class="quiz-progress">
<div class="quiz-progress-bar" id="quizProgress"></div>
</div>
<div id="quizContent">
<div class="quiz-question" id="quizQuestion">
Quelle est la définition d'une occlusion coronarienne chronique (CTO) ?
</div>
<div class="quiz-options" id="quizOptions">
<div class="quiz-option" data-correct="true">
Une occlusion de plus de 3 mois avec flux TIMI 0
</div>
<div class="quiz-option">
Une sténose de plus de 70% avec symptômes
</div>
<div class="quiz-option">
Toute lésion nécessitant une intervention
</div>
<div class="quiz-option">
Une occlusion aiguë traitée en urgence
</div>
</div>
<div class="quiz-navigation">
<button class="quiz-btn" id="prevQuestion" disabled>Précédent</button>
<button class="quiz-btn" id="nextQuestion">Suivant</button>
</div>
</div>
<div class="quiz-result" id="quizResult">
<h3>Quiz Terminé!</h3>
<div class="quiz-score" id="finalScore">0/5</div>
<div class="quiz-feedback" id="quizFeedback">
Merci d'avoir complété le quiz!
</div>
<button class="quiz-btn" id="restartQuiz">Recommencer</button>
</div>
</div>
</div>
</section>
<!-- Recommendations Section -->
<section id="recommendations">
<div class="container">
<div class="section-title">
<h2>Recommandations Officielles</h2>
</div>
<div class="recommendations-tabs">
<button class="tab-btn active" data-tab="esc">ESC</button>
<button class="tab-btn" data-tab="eapci">EAPCI</button>
<button class="tab-btn" data-tab="scai">SCAI</button>
</div>
<div class="tab-content active" id="esc-tab">
<div class="recommendation-card">
<h3>Recommandations ESC 2021 sur les CTO</h3>
<p>La Société Européenne de Cardiologie recommande la revascularisation des CTO chez les patients symptomatiques malgré un traitement médical optimal, avec une ischémie documentée dans le territoire concerné.</p>
<div class="recommendation-meta">
<span>Classe I, Niveau A</span>
<span>Publié: 2021</span>
</div>
</div>
<div class="recommendation-card">
<h3>Sélection des patients pour CTO-PCI</h3>
<p>L'ESC souligne l'importance de la sélection appropriée des patients, en considérant la symptomatologie, l'étendue de l'ischémie, la viabilité myocardique et la complexité de la lésion.</p>
<div class="recommendation-meta">
<span>Classe IIa, Niveau B</span>
<span>Publié: 2021</span>
</div>
</div>
</div>
<div class="tab-content" id="eapci-tab">
<div class="recommendation-card">
<h3>Algorithmes EAPCI pour CTO</h3>
<p>L'Association Européenne d'Intervention Cardiovasculaire Percutanée propose des algorithmes détaillés pour l'approche hybride des CTO, intégrant les techniques antérogrades et rétrogrades.</p>
<div class="recommendation-meta">
<span>Consensus d'experts</span>
<span>Publié: 2019</span>
</div>
</div>
</div>
<div class="tab-content" id="scai-tab">
<div class="recommendation-card">
<h3>Recommandations SCAI pour l'intervention CTO</h3>
<p>La Société for Cardiovascular Angiography and Interventions met l'accent sur l'évaluation préprocédurale complète et la nécessité d'une formation spécialisée pour les interventionnels pratiquant les CTO.</p>
<div class="recommendation-meta">
<span>Document de position</span>
<span>Publié: 2020</span>
</div>
</div>
</div>
</div>
</section>
<!-- Experts Section -->
<section id="experts">
<div class="container">
<div class="section-title">
<h2>Profils d'Experts</h2>
</div>
<div class="experts-grid">
<!-- Expert 1 -->
<div class="expert-card">
<div class="expert-img">
<i class="fas fa-user-md"></i>
</div>
<div class="expert-content">
<h3>Dr. Antoine Dupont</h3>
<div class="expert-title">Cardiologue Interventionnel</div>
<div class="expert-bio">Spécialiste des techniques rétrogrades complexes, auteur de plus de 50 publications sur les CTO.</div>
<div class="expert-contact">
<a href="#"><i class="fas fa-envelope"></i></a>
<a href="#"><i class="fab fa-linkedin"></i></a>
<a href="#"><i class="fas fa-file-pdf"></i></a>
</div>
</div>
</div>
<!-- Expert 2 -->
<div class="expert-card">
<div class="expert-img">
<i class="fas fa-user-md"></i>
</div>
<div class="expert-content">
<h3>Dr. Marie Leroy</h3>
<div class="expert-title">Directrice du Programme CTO</div>
<div class="expert-bio">Pionnière de l'approche hybride en Europe, formatrice internationale sur les techniques de dissection-réentrée.</div>
<div class="expert-contact">
<a href="#"><i class="fas fa-envelope"></i></a>
<a href="#"><i class="fab fa-linkedin"></i></a>
<a href="#"><i class="fas fa-file-pdf"></i></a>
</div>
</div>
</div>
<!-- Expert 3 -->
<div class="expert-card">
<div class="expert-img">
<i class="fas fa-user-md"></i>
</div>
<div class="expert-content">
<h3>Dr. Thomas Moreau</h3>
<div class="expert-title">Chercheur en Cardiologie Interventionnelle</div>
<div class="expert-bio">Développeur de nouveaux dispositifs pour CTO, investigateur principal de plusieurs essais cliniques.</div>
<div class="expert-contact">
<a href="#"><i class="fas fa-envelope"></i></a>
<a href="#"><i class="fab fa-linkedin"></i></a>
<a href="#"><i class="fas fa-file-pdf"></i></a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="container">
<div class="footer-content">
<div class="footer-column">
<h3>CTO Management</h3>
<ul class="footer-links">
<li><a href="#techniques">Techniques</a></li>
<li><a href="#animation">Animation 3D</a></li>
<li><a href="#videos">Vidéos</a></li>
<li><a href="#quiz">Quiz</a></li>
</ul>
</div>
<div class="footer-column">
<h3>Ressources</h3>
<ul class="footer-links">
<li><a href="#recommendations">Recommandations</a></li>
<li><a href="#experts">Experts</a></li>
<li><a href="#">Glossaire</a></li>
<li><a href="#">Bibliographie</a></li>
</ul>
</div>
<div class="footer-column">
<h3>À propos</h3>
<ul class="footer-links">
<li><a href="#">Équipe</a></li>
<li><a href="#">Partenaires</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Mentions légales</a></li>
</ul>
</div>
<div class="footer-column">
<h3>Newsletter</h3>
<p style="color: rgba(255, 255, 255, 0.8); margin-bottom: 15px;">Restez informé des dernières avancées en CTO.</p>
<form>
<input type="email" placeholder="Votre email" style="padding: 10px; width: 100%; border: none; border-radius: 4px; margin-bottom: 10px;">
<button type="submit" style="background-color: var(--accent); color: white; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; width: 100%;">S'abonner</button>
</form>
</div>
</div>
<div class="footer-bottom">
<p>© 2023 CTO Management — Learn, Visualize, Master. Tous droits réservés.</p>
</div>
</div>
</footer>
<!-- Technique Detail Modal -->
<div class="modal" id="techniqueModal">
<div class="modal-content">
<div class="modal-header">
<h2 id="modalTitle">Détails de la technique</h2>
<button class="close-modal">×</button>
</div>
<div class="modal-body" id="modalBody">
<!-- Content will be loaded here -->
</div>
</div>
</div>
<!-- Video Modal -->
<div class="modal" id="videoModal">
<div class="modal-content">
<div class="modal-header">
<h2 id="videoModalTitle">Vidéo pédagogique</h2>
<button class="close-modal">×</button>
</div>
<div class="modal-body" id="videoModalBody">
<!-- Video will be loaded here -->
</div>
</div>
</div>
<script>
// DOM Elements
const themeToggle = document.getElementById('themeToggle');
const langToggle = document.getElementById('langToggle');
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
const mainNav = document.getElementById('main-nav');
const techniqueBtns = document.querySelectorAll('.technique-btn');
const techniqueModal = document.getElementById('techniqueModal');
const videoModal = document.getElementById('videoModal');
const closeModalBtns = document.querySelectorAll('.close-modal');
const tabBtns = document.querySelectorAll('.tab-btn');
const tabContents = document.querySelectorAll('.tab-content');
// Quiz Elements
const quizCounter = document.getElementById('quizCounter');
const quizScore = document.getElementById('quizScore');
const quizProgress = document.getElementById('quizProgress');
const quizQuestion = document.getElementById('quizQuestion');
const quizOptions = document.getElementById('quizOptions');
const prevQuestionBtn = document.getElementById('prevQuestion');
const nextQuestionBtn = document.getElementById('nextQuestion');
const quizContent = document.getElementById('quizContent');
const quizResult = document.getElementById('quizResult');
const finalScore = document.getElementById('finalScore');
const quizFeedback = document.getElementById('quizFeedback');
const restartQuizBtn = document.getElementById('restartQuiz');
// Animation Elements
const playAnimationBtn = document.getElementById('playAnimation');
const pauseAnimationBtn = document.getElementById('pauseAnimation');
const resetAnimationBtn = document.getElementById('resetAnimation');
// Quiz Data
const quizData = [
{
question: "Quelle est la définition d'une occlusion coronarienne chronique (CTO) ?",
options: [
"Une occlusion de plus de 3 mois avec flux TIMI 0",
"Une sténose de plus de 70% avec symptômes",
"Toute lésion nécessitant une intervention",
"Une occlusion aiguë traitée en urgence"
],
correct: 0
},
{
question: "Quelle technique est généralement essayée en premier dans l'approche hybride des CTO ?",
options: [
"Approche rétrograde",
"Antegrade Wiring Escalation (AWE)",
"Dissection-réentrée contrôlée",
"Approche transcendantale"
],
correct: 1
},
{
question: "Quel est l'avantage principal de l'approche rétrograde ?",
options: [
"Temps de procédure plus court",
"Moins d'irradiation",
"Utilisation de moins de matériel",
"Traversée de l'occlusion par son extrémité distale, généralement moins calcifiée"
],
correct: 3
},
{
question: "Quelle est la complication la plus redoutée lors d'une procédure CTO ?",
options: [
"Hématome au point de ponction",
"Réaction allergique au contraste",
"Perforation coronarienne avec tamponnade",
"Dysfonction rénale aiguë"
],
correct: 2
},
{
question: "Quel score évalue la complexité d'une CTO ?",
options: [
"Score SYNTAX",
"Score J-CTO",
"Score GRACE",
"Score TIMI"
],
correct: 1
}
];
let currentQuestion = 0;
let userAnswers = Array(quizData.length).fill(null);
let score = 0;
// Theme Toggle
themeToggle.addEventListener('click', () => {
document.body.classList.toggle('dark-mode');
const icon = themeToggle.querySelector('i');
if (document.body.classList.contains('dark-mode')) {
icon.className = 'fas fa-sun';
} else {
icon.className = 'fas fa-moon';
}
});
// Language Toggle
langToggle.addEventListener('click', () => {
const currentLang = langToggle.textContent.trim();
if (currentLang.includes('FR')) {
langToggle.innerHTML = '<i class="fas fa-globe"></i> EN';
// In a real implementation, we would switch all text content to English
} else {
langToggle.innerHTML = '<i class="fas fa-globe"></i> FR';
// In a real implementation, we would switch all text content to French
}
});
// Mobile Menu Toggle
mobileMenuBtn.addEventListener('click', () => {
mainNav.classList.toggle('active');
});
// Technique Modal
techniqueBtns.forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const technique = btn.getAttribute('data-technique');
showTechniqueDetails(technique);
});
});
function showTechniqueDetails(technique) {
const modalTitle = document.getElementById('modalTitle');
const modalBody = document.getElementById('modalBody');
let title, content;
switch(technique) {
case 'awe':
title = "Antegrade Wiring Escalation (AWE)";
content = `
<h3>Description</h3>
<p>L'approche antérograde avec escalation de fil guide (AWE) est la technique de base pour la recanalisation des CTO. Elle consiste à progresser à travers l'occlusion avec un fil guide de plus en plus rigide et des techniques de support améliorées.</p>
<h3>Étapes clés</h3>
<ul>
<li>Sélection du fil guide initial (généralement polymère)</li>
<li>Utilisation de microcathéters pour le support</li>
<li>Escalade vers des fils plus rigides si nécessaire</li>
<li>Utilisation de techniques de penetration (drilling, tapping)</li>
</ul>
<h3>Indications</h3>
<p>CTO avec extrémité proximale en cul-de-sac, longueur modérée, absence de calcification sévère.</p>
<h3>Avantages</h3>
<ul>
<li>Technique la plus intuitive</li>
<li>Matériel standard généralement disponible</li>
<li>Courbe d'apprentissage progressive</li>
</ul>
`;
break;
case 'retrograde':
title = "Approche Rétrograde";
content = `
<h3>Description</h3>
<p>L'approche rétrograde utilise des collatérales septales ou épicardiques pour atteindre l'extrémité distale de l'occlusion. Le fil guide est avancé rétrogradement à travers l'occlusion ou utilisé pour créer un rail de réentrée.</p>
<h3>Étapes clés</h3>
<ul>
<li>Sélection et canalisation de la collatérale</li>
<li>Avancée du fil guide rétrograde</li>
<li>Technique de kissing wire ou de CART</li>
<li>Externalisation du fil guide</li>
</ul>
<h3>Indications</h3>
<p>CTO avec extrémité proximale non favorable à l'approche antérograde, présence de bonnes collatérales.</p>
<h3>Avantages</h3>
<ul>
<li>Approche de l'extrémité distale généralement moins calcifiée</li>
<li>Taux de succès plus élevé dans les CTO complexes</li>
<li>Alternative lorsque l'approche antérograde échoue</li>
</ul>
`;
break;
case 'dissection':
title = "Dissection-Réentrée";
content = `
<h3>Description</h3>
<p>Les techniques de dissection-réentrée consistent à créer intentionnellement un faux chenal dans la paroi du vaisseau, suivi d'une réentrée contrôlée dans la vraie lumière distale.</p>
<h3>Étapes clés</h3>
<ul>
<li>Création du faux chenal avec un fil guide spécialisé</li>
<li>Avancée dans l'espace sous-intimal</li>
<li>Réentrée contrôlée avec un cathéter de réentrée ou un fil guide</li>
<li>Stenting du vaisseau recanalisé</li>
</ul>
<h3>Indications</h3>
<p>CTO longues avec reconstruction distale, échec des techniques conventionnelles.</p>
<h3>Avantages</h3>
<ul>
<li>Taux de succès élevé même dans les CTO complexes</li>
<li>Alternative aux approches antérograde et rétrograde classiques</li>
<li>Résultats à long terme similaires aux techniques conventionnelles</li>
</ul>
`;
break;
case 'hybrid':
title = "Approche Hybride";
content = `
<h3>Description</h3>
<p>L'approche hybride intègre de manière stratégique les différentes techniques (antérograde, rétrograde, dissection-réentrée) basée sur les caractéristiques anatomiques de la CTO et la progression de la procédure.</p>
<h3>Étapes clés</h3>
<ul>
<li>Évaluation des quatre paramètres clés: cap proximal, longueur de l'occlusion, qualité du lit distal, présence de collatérales</li>
<li>Début avec l'approche la plus prometteuse</li>
<li>Changement rapide de stratégie en cas d'échec ou d'inefficacité</li>
<li>Utilisation de la technique la plus efficace avec le moins de risques</li>
</ul>
<h3>Indications</h3>
<p>Toutes les CTO, particulièrement celles avec anatomie complexe ou mixte.</p>
<h3>Avantages</h3>
<ul>
<li>Flexibilité et adaptation à l'anatomie spécifique</li>
<li>Optimisation du temps de procédure et des ressources</li>
<li>Taux de succès global amélioré</li>
</ul>
`;
break;
}
modalTitle.textContent = title;
modalBody.innerHTML = content;
techniqueModal.style.display = 'flex';
}
// Video Modal
const videoBtns = document.querySelectorAll('.video-card .technique-btn');
videoBtns.forEach(btn => {
btn.addEventListener('click', (e) => {
e.preventDefault();
const videoId = btn.getAttribute('data-video');
showVideoModal(videoId);
});
});
function showVideoModal(videoId) {
const videoModalTitle = document.getElementById('videoModalTitle');
const videoModalBody = document.getElementById('videoModalBody');
let title, content;
switch(videoId) {
case '1':
title = "Principes de base des CTO";
content = `
<div style="background-color: var(--secondary); height: 400px; display: flex; align-items: center; justify-content: center; border-radius: 8px;">
<div style="text-align: center; color: var(--text-light);">
<i class="fas fa-play-circle" style="font-size: 80px; margin-bottom: 20px; color: var(--primary);"></i>
<p>Vidéo: Principes de base des occlusions coronaires chroniques</p>
<p style="font-size: 0.9rem; margin-top: 10px;">Dans une implémentation réelle, une vidéo serait intégrée ici.</p>
</div>
</div>
<div style="margin-top: 20px;">
<h3>Description</h3>
<p>Cette vidéo présente les principes fondamentaux des CTO : définition, épidémiologie, physiopathologie et indications de revascularisation.</p>
<h3>Contenu détaillé</h3>
<ul>
<li>Définition et critères diagnostiques des CTO</li>
<li>Épidémiologie et prévalence</li>
<li>Conséquences hémodynamiques et cliniques</li>
<li>Bénéfices potentiels de la revascularisation</li>
<li>Stratification du risque et sélection des patients</li>
</ul>
</div>
`;
break;
case '2':
title = "Technique AWE pas à pas";
content = `
<div style="background-color: var(--secondary); height: 400px; display: flex; align-items: center; justify-content: center; border-radius: 8px;">
<div style="text-align: center; color: var(--text-light);">
<i class="fas fa-play-circle" style="font-size: 80px; margin-bottom: 20px; color: var(--primary);"></i>
<p>Vidéo: Technique AWE pas à pas</p>
<p style="font-size: 0.9rem; margin-top: 10px;">Dans une implémentation réelle, une vidéo serait intégrée ici.</p>
</div>
</div>
<div style="margin-top: 20px;">
<h3>Description</h3>
<p>Démonstration détaillée de la technique Antegrade Wiring Escalation avec cas clinique commenté par un expert.</p>
<h3>Contenu détaillé</h3>
<ul>
<li>Préparation et sélection du matériel</li>
<li>Engagement du microcathéter</li>
<li>Progression du fil guide à travers l'occlusion</li>
<li>Techniques d'escalade (changement de fils guides)</li>
<li>Vérification de la position intraluminale</li>
<li>Implantation des stents et résultat final</li>
</ul>
</div>
`;
break;
case '3':
title = "Approche rétrograde avancée";
content = `
<div style="background-color: var(--secondary); height: 400px; display: flex; align-items: center; justify-content: center; border-radius: 8px;">
<div style="text-align: center; color: var(--text-light);">
<i class="fas fa-play-circle" style="font-size: 80px; margin-bottom: 20px; color: var(--primary);"></i>
<p>Vidéo: Approche rétrograde avancée</p>
<p style="font-size: 0.9rem; margin-top: 10px;">Dans une implémentation réelle, une vidéo serait intégrée ici.</p>
</div>
</div>
<div style="margin-top: 20px;">
<h3>Description</h3>
<p>Maîtrise des techniques rétrogrades complexes avec sélection des collatérales et manoeuvres spéciales pour les CTO difficiles.</p>
<h3>Contenu détaillé</h3>
<ul>
<li>Sélection et évaluation des collatérales</li>
<li>Canalisation des collatérales septales et épicardiques</li>
<li>Techniques de progression rétrograde</li>
<li>Manoeuvres CART et reverse CART</li>
<li>Externalisation du fil guide</li>
<li>Gestion des complications potentielles</li>
</ul>
</div>
`;
break;
}
videoModalTitle.textContent = title;
videoModalBody.innerHTML = content;
videoModal.style.display = 'flex';
}
// Close Modals
closeModalBtns.forEach(btn => {
btn.addEventListener('click', () => {
techniqueModal.style.display = 'none';
videoModal.style.display = 'none';
});
});
// Close modals when clicking outside
window.addEventListener('click', (e) => {
if (e.target === techniqueModal) {
techniqueModal.style.display = 'none';
}
if (e.target === videoModal) {
videoModal.style.display = 'none';
}
});
// Tab Navigation
tabBtns.forEach(btn => {
btn.addEventListener('click', () => {
const tabId = btn.getAttribute('data-tab');
// Remove active class from all tabs and contents
tabBtns.forEach(b => b.classList.remove('active'));
tabContents.forEach(c => c.classList.remove('active'));
// Add active class to current tab and content
btn.classList.add('active');
document.getElementById(`${tabId}-tab`).classList.add('active');
});
});
// Quiz Functionality
function loadQuestion(questionIndex) {
const question = quizData[questionIndex];
quizQuestion.textContent = question.question;
// Update counter
quizCounter.textContent = `Question ${questionIndex + 1}/${quizData.length}`;
// Update progress bar
quizProgress.style.width = `${((questionIndex + 1) / quizData.length) * 100}%`;
// Clear previous options
quizOptions.innerHTML = '';
// Add new options
question.options.forEach((option, index) => {
const optionElement = document.createElement('div');
optionElement.className = 'quiz-option';
if (userAnswers[questionIndex] === index) {
optionElement.classList.add('selected');
}
optionElement.textContent = option;
optionElement.setAttribute('data-index', index);
optionElement.addEventListener('click', () => selectOption(questionIndex, index));
quizOptions.appendChild(optionElement);
});
// Update navigation buttons
prevQuestionBtn.disabled = questionIndex === 0;
if (questionIndex === quizData.length - 1) {
nextQuestionBtn.textContent = 'Terminer';
} else {
nextQuestionBtn.textContent = 'Suivant';
}
}
function selectOption(questionIndex, optionIndex) {
userAnswers[questionIndex] = optionIndex;
// Update UI
const options = quizOptions.querySelectorAll('.quiz-option');
options.forEach(option => option.classList.remove('selected'));
options[optionIndex].classList.add('selected');
// Enable next button
nextQuestionBtn.disabled = false;
}
function calculateScore() {
let correct = 0;
userAnswers.forEach((answer, index) => {
if (answer === quizData[index].correct) {
correct++;
}
});
return correct;
}
function showResults() {
score = calculateScore();
finalScore.textContent = `${score}/${quizData.length}`;
// Provide feedback based on score
if (score === quizData.length) {
quizFeedback.textContent = "Excellent! Vous maîtrisez parfaitement les concepts des CTO.";
} else if (score >= quizData.length * 0.7) {
quizFeedback.textContent = "Très bon résultat! Vous avez de solides connaissances sur les CTO.";
} else if (score >= quizData.length * 0.5) {
quizFeedback.textContent = "Résultat correct. Continuez à étudier pour améliorer vos connaissances.";
} else {
quizFeedback.textContent = "Il vous reste des concepts à revoir. N'hésitez pas à consulter les ressources du site.";
}
quizContent.style.display = 'none';
quizResult.style.display = 'block';
}
// Quiz Event Listeners
nextQuestionBtn.addEventListener('click', () => {
if (currentQuestion < quizData.length - 1) {
currentQuestion++;
loadQuestion(currentQuestion);
nextQuestionBtn.disabled = userAnswers[currentQuestion] === null;
} else {
showResults();
}
});
prevQuestionBtn.addEventListener('click', () => {
if (currentQuestion > 0) {
currentQuestion--;
loadQuestion(currentQuestion);
}
});
restartQuizBtn.addEventListener('click', () => {
currentQuestion = 0;
userAnswers = Array(quizData.length).fill(null);
score = 0;
quizScore.textContent = 'Score: 0';
quizContent.style.display = 'block';
quizResult.style.display = 'none';
loadQuestion(currentQuestion);
nextQuestionBtn.disabled = true;
});
// Animation Controls
playAnimationBtn.addEventListener('click', () => {
// In a real implementation, this would start the 3D animation
alert("L'animation 3D démarre. Dans une implémentation complète, une animation interactive avec Three.js serait affichée.");
});
pauseAnimationBtn.addEventListener('click', () => {
alert("Animation en pause.");
});
resetAnimationBtn.addEventListener('click', () => {
alert("Animation réinitialisée.");
});
// Initialize the page
loadQuestion(currentQuestion);
// Smooth scrolling for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const targetId = this.getAttribute('href');
if (targetId === '#') return;
const targetElement = document.querySelector(targetId);
if (targetElement) {
window.scrollTo({
top: targetElement.offsetTop - 80,
behavior: 'smooth'
});
// Close mobile menu if open
mainNav.classList.remove('active');
}
});
});
</script>
</body>
</html>