

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Replay et Podcasts des émission de la chaine de radio RMC - RadioStreamR - Ecoutez la Radio française en ligne en direct</title>
	<atom:link href="https://radiostreamr.com/radio-france/category/podcast/rmc/feed/" rel="self" type="application/rss+xml" />
	<link>https://radiostreamr.com/radio-france/category/podcast/rmc/</link>
	<description>Écoutez les meilleures stations de radio françaises en direct. Musique, actualités, et émissions locales - disponibles partout, à tout moment.</description>
	<lastBuildDate>Wed, 27 Nov 2024 14:49:19 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.3</generator>

<image>
	<url>https://radiostreamr.com/radio-france/wp-content/uploads/2024/10/cropped-logo-19-32x32.webp</url>
	<title>Replay et Podcasts des émission de la chaine de radio RMC - RadioStreamR - Ecoutez la Radio française en ligne en direct</title>
	<link>https://radiostreamr.com/radio-france/category/podcast/rmc/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>🗣️ Ecoutez les podcast et replay de l&#8217;émission Expliquez-nous de Matthieu Belliard &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-expliquez-nous-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-expliquez-nous-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 27 Nov 2024 14:49:14 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1624</guid>

					<description><![CDATA[<p>Expliquez-nous par Matthieu Belliard &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Expliquez-nous par Matthieu Belliard sur RMC : Votre rendez-vous d&#8217;actualité explicatif et pédagogique à 6h45 et 7h50 Voir leur Facebook Voir leur Instagram « Expliquez-nous » avec Matthieu Belliard sur RMC est un rendez-vous quotidien incontournable pour comprendre [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-expliquez-nous-rmc/">🗣️ Ecoutez les podcast et replay de l&rsquo;émission Expliquez-nous de Matthieu Belliard &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1624" class="elementor elementor-1624" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Expliquez-nous par Matthieu Belliard - Écoutez ou télécharger la rediffusion de tous les podcasts RMC<img decoding="async" src="https://www.anciensautocollants.com/628-large_default/sticker-rmc-logo-rouge-noir-l-50-h-50-mm.jpg" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Expliquez-nous par Matthieu Belliard sur RMC : Votre rendez-vous d'actualité explicatif et pédagogique à 6h45 et 7h50</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/RMCinfo/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/rmc_off/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
"Expliquez-nous" avec Matthieu Belliard sur RMC est un rendez-vous quotidien incontournable pour comprendre l'actualité en profondeur. Chaque jour, à 6h45 dans Apolline Matin, Matthieu Belliard met à profit son expertise journalistique pour décrypter un sujet d'actualité majeur, offrant contexte et perspectives essentiels. Puis à 7h50, il propose une chronique aussi pédagogique que personnelle, analysant avec finesse un événement du jour. Ce double rendez-vous matinal combine parfaitement rigueur journalistique et accessibilité, permettant aux auditeurs de mieux appréhender les enjeux complexes de notre temps. Grâce à son approche claire et documentée, Matthieu Belliard transforme l'actualité en récits captivants, rendant l'information plus accessible et compréhensible pour tous. Son expertise et son style unique font d'"Expliquez-nous" un moment privilégié d'information et de pédagogie sur les ondes de RMC.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Expliquez-nous : Décryptage quotidien de l'actualité avec Matthieu Belliard sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Écoutez en direct Expliquez-nous par Matthieu Belliard sur RMC : décryptage expert de l'actualité</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'histoire d'Expliquez-nous sur RMC</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        "Expliquez-nous" avec Matthieu Belliard est devenu un rendez-vous matinal incontournable sur RMC. Cette émission, qui s'est imposée comme une référence en matière de décryptage de l'actualité, propose chaque jour deux rendez-vous essentiels : à 6h45 et 7h50.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        À 6h45 dans <a href="https://radiostreamr.com/radio-france/podcast-apolline-matin-rmc/" style="color: #00ffff; text-decoration: none; transition: all 0.3s; &amp;:hover { text-decoration: underline; }">Apolline Matin</a>, Matthieu Belliard offre un décryptage approfondi d'un sujet d'actualité majeur, décomposant avec précision les enjeux et les implications pour les auditeurs. Puis à 7h50, il revient avec une chronique plus personnelle, analysant un événement du jour avec sa perspective unique.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Au fil des années, "Expliquez-nous" s'est distingué par la clarté de ses explications, la pertinence de ses analyses et sa capacité à rendre accessibles les sujets les plus complexes. L'émission est devenue une référence pour tous ceux qui souhaitent comprendre en profondeur les enjeux de l'actualité, grâce à l'expertise et au talent pédagogique de Matthieu Belliard.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://data.over-blog-kiwi.com/1/49/54/19/20240621/ob_3360bc_belliard-mathieur.webp" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://sf2.telestar.fr/wp-content/uploads/telestarv2/2024/01/c-vous-qui-est-matthieu-belliard-nouveau-chroniqueur-vous.jpeg" alt="Matthieu Belliard portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Matthieu Belliard - Un parcours journalistique entre RMC et Europe 1</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Né en 1984 à Paris, Matthieu Belliard s'est forgé une solide réputation dans le paysage médiatique français. Après des études au collège privé Massillon, il poursuit sa formation à l'école de journalisme ISCPA en 2001. Son entrée dans le monde de la radio se fait par Oui FM, où il développe son expertise pendant 4 ans.

            Sa carrière prend un tournant décisif lorsqu'il rejoint RMC, où il se voit confier la présentation de la pré-matinale dès 4h30. Sa collaboration avec Jean-Jacques Bourdin pour la matinale de 6h à 10h marque une décennie d'excellence journalistique sur RMC.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            En 2018, après 10 années riches à l'antenne de RMC, Matthieu Belliard annonce son départ pour relever un nouveau défi à Europe 1. Il y prend les commandes de la tranche info du soir à partir de 18h, apportant son expertise et sa capacité unique à dynamiser les interventions d'auditeurs en direct.

            Son parcours illustre l'évolution d'un journaliste passionné, capable de s'adapter et d'innover tout en maintenant une proximité authentique avec son audience. Sa maîtrise des talk-shows et sa compréhension approfondie de l'actualité en font une voix respectée du paysage radiophonique français.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://podcast.rmc.fr/channel385/RMCInfochannel385.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://images.bfmtv.com/YY6KYFawQG_KA-dqzqiCYI5t8bU=/0x0:1400x1400/1400x0/podcast/podcasts/principale-252_4.jpg";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Expliquez-nous par Matthieu Belliard sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Expliquez-nous par Matthieu Belliard sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Expliquez-nous par Matthieu Belliard sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Expliquez-nous par Matthieu Belliard sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-expliquez-nous-rmc/">🗣️ Ecoutez les podcast et replay de l&rsquo;émission Expliquez-nous de Matthieu Belliard &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-expliquez-nous-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Ecoutez les podcast et replay de l&#8217;émission Anaïs Matin &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/ecoutez-anais-matin-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/ecoutez-anais-matin-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 27 Nov 2024 14:01:57 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1617</guid>

					<description><![CDATA[<p>Anaïs Matin &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Anaïs Matin sur RMC &#124; Le Podcast Anais Castagna &#124; Ecouter et Réécouter en Direct et Replay Voir leur Facebook Voir leur Instagram Anaïs Matin, animé par Anaïs Castagna sur RMC, est un rendez-vous incontournable le week-end qui [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/ecoutez-anais-matin-rmc/">🗣️ Ecoutez les podcast et replay de l&rsquo;émission Anaïs Matin &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1617" class="elementor elementor-1617" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Anaïs Matin - Écoutez ou télécharger la rediffusion de tous les podcasts RMC<img decoding="async" src="https://www.anciensautocollants.com/628-large_default/sticker-rmc-logo-rouge-noir-l-50-h-50-mm.jpg" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Anaïs Matin sur RMC | Le Podcast Anais Castagna | Ecouter et Réécouter en Direct et Replay</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/RMCinfo/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/rmc_off/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Anaïs Matin, animé par Anaïs Castagna sur RMC, est un rendez-vous incontournable le week-end qui décrypte l'actualité avec perspicacité et dynamisme. Les samedis et dimanches, de 6h à 8h30, l'émission propose une revue complète de l'actualité, mêlant informations nationales et internationales, chroniques économiques, culturelles et sportives. Anaïs Castagna et son équipe apportent un éclairage unique sur les sujets qui font l'actualité, avec des interviews d'invités de premier plan, des chroniques percutantes et des débats animés. L'émission se distingue par sa capacité à rendre l'information accessible à tous, tout en maintenant un niveau d'analyse approfondi. Avec un ton direct et une approche résolument moderne de l'information, Anaïs Matin s'est imposé comme un programme de référence pour bien démarrer le week-end.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Anaïs Matin : retrouvez l'actualité chaude du week-end avec Anaïs Castagna sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Écoutez en direct Anaïs Matin avec Anaïs Castagna sur RMC : l'info brûlante du week-end</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire d'Anaïs Matin sur RMC</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Anaïs Matin est devenu un rendez-vous matinal incontournable du week-end sur RMC. Cette émission, qui a su s'imposer dans le paysage médiatique français, propose chaque samedi et dimanche une revue complète de l'actualité, analysée avec pertinence et dynamisme par Anaïs Castagna et son équipe.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        De 6h à 8h30, l'émission offre un format unique mêlant informations nationales et internationales, chroniques économiques, culturelles et sportives. La force d'Anaïs Matin réside dans sa capacité à décrypter l'actualité avec un regard acéré tout en restant accessible à tous les auditeurs.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Au fil des années, Anaïs Matin s'est distingué par la qualité de ses interviews, la pertinence de ses analyses et son ton direct qui permet aux auditeurs de bien démarrer leur week-end avec une information claire et complète. L'émission est devenue une référence pour tous ceux qui souhaitent comprendre les enjeux de l'actualité dès le réveil, même pendant le week-end.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/hckcNh7jxUqdny8tSwEfIJUBGEM=/0x0:1920x1080/860x0/emission/Anais-matin-web-457_17.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://www.programme-tv.net/imgre/fit/~2~providerPerson~f480205511b874cbf.jpg/300x300/quality/80/anais-castagna.jpg" alt="Anaïs Castagna portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Anaïs Castagna - De iTélé à RMC : Portrait d'une journaliste passionnée</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Anaïs Castagna, journaliste française de talent, s'est forgé une solide réputation dans le paysage médiatique français. Titulaire d'un master en sciences politiques obtenu à l'Université de Nanterre, elle fait ses premiers pas professionnels au sein du prestigieux groupe Canal+/iTélé en 2011. Son parcours exemplaire illustre une progression constante, passant du reportage sur le terrain à la présentation des journaux télévisés.

            En 2013, elle franchit une étape décisive en prenant les rênes de la matinale d'iTélé aux côtés de Pascal Humeau, tout en assurant également la présentation des éditions du week-end avec Antoine Genton. Sa rigueur journalistique et son professionnalisme lui ont permis de s'imposer rapidement comme une figure incontournable de la chaîne d'information en continu.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Particulièrement active et engagée sur les réseaux sociaux, notamment Twitter, Anaïs Castagna se distingue par son authenticité et sa proximité avec son public. Passionnée de sport, elle n'hésite pas à partager son enthousiasme lors des grands événements sportifs, comme l'Euro 2016 ou les Jeux Olympiques de Rio, où elle a suivi avec attention les performances des athlètes français.

            Aujourd'hui sur RMC, Anaïs Castagna continue de démontrer son excellence journalistique en animant les matinales du week-end. Sa capacité à traiter l'actualité avec précision et dynamisme, tout en préservant sa vie privée des médias, témoigne de son professionnalisme et de sa maturité. Son parcours exemplaire fait d'elle une référence pour les jeunes journalistes aspirant à une carrière dans les médias.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://podcast.rmc.fr/channel430/RMCInfochannel430.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://cdn-images.dzcdn.net/images/talk/c4496e99a524248d474a2077d11072eb/0x1900-000000-80-0-0.jpg";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Anaïs Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/ecoutez-anais-matin-rmc/">🗣️ Ecoutez les podcast et replay de l&rsquo;émission Anaïs Matin &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/ecoutez-anais-matin-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Ecoutez les podcast et replay de l&#8217;émission Charles Matin &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-charles-matin-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-charles-matin-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 27 Nov 2024 12:49:14 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1610</guid>

					<description><![CDATA[<p>Charles Matin &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Les émissions Charles Matin, l&#8217;info au réveil avec Charles Magnien Voir leur Facebook Voir leur Instagram Charles Matin, animé par Charles Magnien sur RMC, est un rendez-vous matinal incontournable qui décrypte l&#8217;actualité avec pertinence et dynamisme. Chaque matin, [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-charles-matin-rmc/">🗣️ Ecoutez les podcast et replay de l&rsquo;émission Charles Matin &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1610" class="elementor elementor-1610" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Charles Matin - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://www.anciensautocollants.com/628-large_default/sticker-rmc-logo-rouge-noir-l-50-h-50-mm.jpg" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Les émissions Charles Matin, l'info au réveil avec Charles Magnien</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/RMCinfo/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/rmc_off/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Charles Matin, animé par Charles Magnien sur RMC, est un rendez-vous matinal incontournable qui décrypte l'actualité avec pertinence et dynamisme. Chaque matin, de 6h à 8h30, l'émission propose une revue complète de l'actualité, mêlant informations nationales et internationales, chroniques économiques, culturelles et sportives. Charles Magnien et son équipe apportent un éclairage unique sur les sujets qui font l'actualité, avec des interviews d'invités de premier plan, des chroniques percutantes et des débats animés. L'émission se distingue par sa capacité à rendre l'information accessible à tous, tout en maintenant un niveau d'analyse approfondi. Avec un ton direct et une approche résolument moderne de l'information, Charles Matin s'est imposé comme un programme de référence pour bien démarrer la journée.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Charles Matin : retrouvez l'actualité chaude du matin avec Charles Magnien sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Écoutez en direct Charles Matin avec Charles Magnien sur RMC : l'info chaude du matin</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire de Charles Matin sur RMC</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Charles Matin est devenu un rendez-vous matinal incontournable sur RMC. Cette émission, qui a su s'imposer dans le paysage médiatique français, propose chaque jour une revue complète de l'actualité, analysée avec pertinence et dynamisme par Charles Magnien et son équipe.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        De 6h à 8h30, l'émission offre un format unique mêlant informations nationales et internationales, chroniques économiques, culturelles et sportives. La force de Charles Matin réside dans sa capacité à décrypter l'actualité avec un regard acéré tout en restant accessible à tous les auditeurs.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Au fil des années, Charles Matin s'est distingué par la qualité de ses interviews, la pertinence de ses analyses et son ton direct qui permet aux auditeurs de bien démarrer leur journée avec une information claire et complète. L'émission est devenue une référence pour tous ceux qui souhaitent comprendre les enjeux de l'actualité dès le réveil.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/M69XqCZGyCdsAH1cz-W8HpCBIrU=/0x0:1920x1080/860x0/emission/Charles-Matin-web-453_10.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://pbs.twimg.com/profile_images/1546554388558266373/ZsNMXiji_400x400.jpg" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Charles Magnien - La voix matinale de RMC</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Charles Magnien s'est imposé comme l'une des voix incontournables des matinales de RMC. Fort d'une solide expérience journalistique, il anime chaque matin de 6h à 8h30 l'émission "Charles Matin" avec dynamisme et professionnalisme. Sa capacité à décrypter l'actualité et à la rendre accessible à tous les auditeurs est devenue sa marque de fabrique.

            Son style unique, mêlant rigueur journalistique et ton direct, permet aux auditeurs de bien démarrer leur journée avec une information claire et complète. Charles Magnien excelle particulièrement dans l'art de conduire des interviews percutantes et de proposer des analyses pertinentes de l'actualité.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Chaque matin, il orchestre avec brio un rendez-vous radiophonique qui est devenu incontournable pour des milliers d'auditeurs. Sa maîtrise des sujets traités, son sens de la formule et sa capacité à vulgariser les informations les plus complexes font de lui un journaliste apprécié tant par ses pairs que par son public.

            La force de Charles Magnien réside dans sa capacité à traiter l'actualité sous tous ses angles, qu'il s'agisse de politique, d'économie, de société ou de culture. Son émission matinale est devenue une référence pour tous ceux qui souhaitent comprendre les enjeux de l'actualité dès le réveil, grâce à un traitement de l'information à la fois rigoureux et dynamique.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://feeds.simplecast.com/coSnnmjf";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://radio-podcast.fr/files/images_podcast/podcast-charles-matin-RMC.png";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Charles Matin sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-charles-matin-rmc/">🗣️ Ecoutez les podcast et replay de l&rsquo;émission Charles Matin &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-charles-matin-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; Face à face animé par Apolline de Malherbe &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-face-a-face-podcast/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-face-a-face-podcast/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 27 Nov 2024 11:10:55 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1603</guid>

					<description><![CDATA[<p>Podcast RSS Feed Face à face animé par Apolline de Malherbe &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Les émissions Face à face avec Apolline de Malherbe Voir leur Facebook Voir leur Instagram Face à face avec Apolline de Malherbe sur RMC est l&#8217;une des émissions phares [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-face-a-face-podcast/">🗣️ Podcast et replay &#8211; Face à face animé par Apolline de Malherbe &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1603" class="elementor elementor-1603" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Face à face animé par Apolline de Malherbe - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://www.anciensautocollants.com/628-large_default/sticker-rmc-logo-rouge-noir-l-50-h-50-mm.jpg" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Les émissions Face à face avec Apolline de Malherbe</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/RMCinfo/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/rmc_off/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Face à face avec Apolline de Malherbe sur RMC est l'une des émissions phares de la matinale. Dans ce rendez-vous quotidien, la journaliste mène des interviews percutantes avec les personnalités qui font l'actualité. Connue pour son style direct et sans concession, Apolline de Malherbe confronte ses invités aux faits, exige des réponses claires et n'hésite pas à pointer les contradictions. Qu'il s'agisse de politiques, d'experts ou d'acteurs de la société civile, chaque entretien est l'occasion d'un véritable échange où les sujets brûlants de l'actualité sont abordés sans détour. L'émission se distingue par sa capacité à créer des moments de tension et de vérité, où les invités sont poussés dans leurs retranchements, offrant aux auditeurs une analyse approfondie des enjeux contemporains.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Face à face avec Apolline de Malherbe : l'actualité politique et sociale décryptée chaque matin sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Écouter en direct Face à Face avec Apolline de Malherbe sur RMC : décryptage politique et sociétal</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire du Face à face d'Apolline de Malherbe</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Le Face à face d'Apolline de Malherbe sur RMC est devenu un rendez-vous incontournable de la matinale politique française. Lancée en 2020, cette émission s'est rapidement imposée comme un moment fort de l'actualité, où les personnalités politiques sont confrontées à un exercice d'interview sans concession.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Chaque matin, Apolline de Malherbe reçoit un invité pour un entretien sans détour. Sa marque de fabrique : des questions directes, une excellente maîtrise des dossiers et une capacité à pousser ses interlocuteurs dans leurs retranchements. L'émission se distingue par son format percutant et la qualité de ses échanges, parfois tendus mais toujours riches en informations.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Au fil des années, le Face à face est devenu un passage obligé pour les acteurs de la vie politique française. Les échanges, souvent vifs, ont donné lieu à des moments mémorables qui ont marqué l'actualité politique. L'émission s'est imposée comme une référence dans le paysage médiatique français, grâce à son format unique et à la personnalité de son animatrice.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/zCUvEr-eGaUttoQK7S5h17SuKZw=/0x0:1920x1080/emission/Face-a-Face-web-469_7.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://static-cdn.tv.sfr.net/data/img/wcsstore/WiztiviStore/posters/NEUF_BFMTV/7/2/5/BFM888825461527_poster_jaq1p1.jpg" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Apolline de Malherbe - La voix politique matinale de RMC</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Apolline de Malherbe est une figure incontournable du journalisme politique français. Diplômée de Sciences Po Paris et du Centre de Formation des Journalistes (CFJ), elle a forgé sa carrière à travers des expériences marquantes dans les plus grands médias français. Son parcours l'a menée de BFM TV à RMC, où elle s'est imposée comme l'une des voix les plus respectées de la matinale.

            Sa rigueur journalistique et son style d'interview incisif sont devenus sa marque de fabrique. Chaque matin, elle mène des entretiens sans concession dans son émission "Face à Face", confrontant les personnalités politiques aux faits et exigeant des réponses claires aux questions qui préoccupent les Français.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Reconnue pour sa maîtrise des dossiers et sa capacité à pousser ses interlocuteurs dans leurs retranchements, Apolline de Malherbe a su créer un rendez-vous matinal essentiel dans le paysage médiatique français. Son émission se distingue par la qualité de ses échanges et la profondeur de ses analyses politiques.

            Au fil des années, elle s'est imposée comme l'une des journalistes politiques les plus influentes de sa génération. Son approche directe, son professionnalisme et sa connaissance approfondie des enjeux politiques en font une voix respectée tant par ses pairs que par les acteurs de la vie politique française. Son travail quotidien contribue à éclairer le débat public et à maintenir un niveau d'exigence élevé dans le traitement de l'actualité politique.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "http://podcast.rmc.fr/channel30/RMCInfochannel30.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://radio-podcast.fr/files/400x400/podcasts-rmc-face-a-face-241102093032.jpg";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Face à face animé par Apolline de Malherbe sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Face à face animé par Apolline de Malherbe sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Face à face animé par Apolline de Malherbe sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Face à face animé par Apolline de Malherbe sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-face-a-face-podcast/">🗣️ Podcast et replay &#8211; Face à face animé par Apolline de Malherbe &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-face-a-face-podcast/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; Les Grandes Gueules du Sport &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-les-gg-du-sport-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-les-gg-du-sport-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 27 Nov 2024 10:35:48 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1596</guid>

					<description><![CDATA[<p>Podcast RSS Feed Les Grandes Gueules du Sport &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Les Grandes Gueules du Sport &#8211; RMC &#8211; Une émission sur le sport et les débats Voir leur Facebook Voir leur Instagram Les Grandes Gueules du Sport sur RMC est une émission [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-les-gg-du-sport-rmc/">🗣️ Podcast et replay &#8211; Les Grandes Gueules du Sport &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1596" class="elementor elementor-1596" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Les Grandes Gueules du Sport - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://yt3.googleusercontent.com/52KycFtU1nQccuCrfZdfP4zCzGLNQg0Hi9hO73gJ_CDmbIiG9mec48kR-n2PZdldw8mE6A641Q=s900-c-k-c0x00ffffff-no-rj" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Les Grandes Gueules du Sport - RMC - Une émission sur le sport et les débats</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/RMCinfo/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/rmc_off/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Les Grandes Gueules du Sport sur RMC est une émission incontournable pour tous les passionnés de sport. Animée par une équipe dynamique composée de Gilbert Brisbois, Christophe Cessieux et Thibaut Giangrande, l'émission propose des débats passionnés et des analyses approfondies sur l'actualité sportive. Diffusée chaque week-end, elle invite des personnalités du monde du sport, d'anciens athlètes et des experts à débattre des sujets brûlants qui animent le monde sportif. Avec un style direct et sans concession, caractéristique des "Grandes Gueules", l'émission offre aux auditeurs des discussions enflammées, des points de vue tranchés et des échanges parfois musclés mais toujours constructifs. Que ce soit pour décrypter les résultats du week-end, analyser les performances des athlètes ou débattre des grandes questions qui agitent le sport français et international, Les Grandes Gueules du Sport est devenue une référence pour tous les amateurs de sport qui apprécient les débats animés et les analyses sans langue de bois.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ne manquez aucun débat des Grandes Gueules du Sport sur RMC chaque week-end</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ecoutez en direct Les Grandes Gueules du Sport sur RMC : débats passion entre journalistes et experts</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire des Grandes Gueules du Sport</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Les Grandes Gueules du Sport sur RMC sont devenues une référence incontournable pour tous les passionnés de sport qui aiment les débats animés et sans langue de bois. Cette émission emblématique, qui réunit chaque weekend Gilbert Brisbois, Christophe Cessieux et Thibaut Giangrande, s'est imposée comme l'un des rendez-vous phares du paysage radiophonique sportif français.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        L'émission se distingue par son style direct et sans concession, où les débats passionnés et les analyses approfondies se succèdent autour de l'actualité sportive. Les animateurs n'hésitent pas à confronter leurs points de vue, créant des échanges dynamiques et souvent enflammés qui font le bonheur des auditeurs.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Au fil des années, les Grandes Gueules du Sport sont devenues un rendez-vous incontournable pour des milliers d'auditeurs passionnés qui apprécient l'authenticité des échanges et la qualité des analyses. L'émission accueille régulièrement des personnalités marquantes du monde du sport, des experts et des journalistes qui viennent enrichir les débats de leurs expériences et de leurs points de vue.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/OWO1LQSeNwO6CpyNcL3MnlvB6EY=/0x0:1920x1080/emission/Les-Grandes-Gueules-du-Sport-web-273_10.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://static-cdn.tv.sfr.net/data/img/wcsstore/WiztiviStore/posters/NEUF_BFMRADIO/T/R/O/BRA_LESGGSPORT_poster_jaq1p1.jpg" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Les Grandes Gueules du Sport - Une équipe de passionnés</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Les Grandes Gueules du Sport est une émission emblématique de RMC qui réunit une équipe de commentateurs passionnés et experts. Menée par Gilbert Brisbois, Christophe Cessieux et Thibaut Giangrande, l'émission se distingue par son style direct et ses débats animés sur l'actualité sportive.

            Chaque week-end, cette équipe dynamique analyse l'actualité du sport avec franchise et expertise. Leur approche sans langue de bois et leurs échanges parfois musclés mais toujours constructifs ont su fidéliser un large public d'auditeurs passionnés.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            L'émission traite de tous les sports : football, rugby, tennis, cyclisme, sports mécaniques... Les Grandes Gueules du Sport excellent dans l'art de décortiquer les performances, d'analyser les stratégies et de débattre des grandes questions qui animent le monde sportif. Leur style unique, mêlant expertise et passion, a conquis les auditeurs de RMC.

            Véritables références dans le paysage médiatique sportif français, les Grandes Gueules du Sport contribuent quotidiennement à enrichir le débat sportif avec leurs analyses pointues et leurs points de vue tranchés. Leurs échanges animés et leur expertise font de chaque émission un rendez-vous incontournable pour les amateurs de sport.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "http://podcast.rmc.fr/channel244/RMCInfochannel244.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://radio-podcast.fr/files/images_podcast/rmc-podcast--les-grandes-gueules-du-sport.png";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Les Grandes Gueules du sport sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Les Grandes Gueules du sport sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Les Grandes Gueules du sport sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Les Grandes Gueules du sport sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-les-gg-du-sport-rmc/">🗣️ Podcast et replay &#8211; Les Grandes Gueules du Sport &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-les-gg-du-sport-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; Les chroniques d&#8217;Anthony Morel &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-chronique-anthony-morel-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-chronique-anthony-morel-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 27 Nov 2024 09:28:00 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1579</guid>

					<description><![CDATA[<p>Podcast RSS Feed Les chroniques d&#8217;Anthony Morel : C&#8217;est déjà demain / On n&#8217;arrête pas le progrès &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Les chroniques d&#8217;Anthony Morel sur RMC Voir leur Facebook Voir leur Instagram Les chroniques d&#8217;Anthony Morel sur RMC sont des rendez-vous incontournables pour [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-chronique-anthony-morel-rmc/">🗣️ Podcast et replay &#8211; Les chroniques d&rsquo;Anthony Morel &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1579" class="elementor elementor-1579" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Les chroniques d'Anthony Morel : C'est déjà demain / On n'arrête pas le progrès  - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://www.anciensautocollants.com/628-large_default/sticker-rmc-logo-rouge-noir-l-50-h-50-mm.jpg" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Les chroniques d'Anthony Morel sur RMC</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/RMCinfo/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/rmc_off/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Les chroniques d'Anthony Morel sur RMC sont des rendez-vous incontournables pour tous les passionnés d'innovation et de nouvelles technologies. Dans "C'est déjà demain" et "On n'arrête pas le progrès", Anthony Morel décrypte les dernières avancées technologiques et les innovations qui façonnent notre futur. Chaque chronique est l'occasion de découvrir les inventions les plus prometteuses, les tendances émergentes et les révolutions technologiques qui transforment notre quotidien. Avec son style dynamique et accessible, Anthony Morel rend la technologie compréhensible par tous, expliquant les enjeux et les impacts de ces innovations sur notre société. Que ce soit en matière d'intelligence artificielle, de robotique, de santé connectée ou de développement durable, il offre un regard expert et passionnant sur les technologies qui construisent le monde de demain.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Découvrez les dernières innovations technologiques avec Anthony Morel sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ecoutez en direct les chroniques tech d'Anthony Morel sur RMC : innovations et découvertes du futur</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire des Chroniques Tech d'Anthony Morel</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Les chroniques d'Anthony Morel sur RMC sont devenues une référence incontournable pour tous ceux qui s'intéressent aux innovations technologiques et aux évolutions de notre société. À travers ses deux émissions phares "C'est déjà demain" et "On n'arrête pas le progrès", Anthony Morel nous fait découvrir les dernières avancées technologiques qui façonnent notre futur.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Chaque chronique est l'occasion d'explorer les innovations les plus fascinantes, qu'il s'agisse d'intelligence artificielle, de robotique, de réalité virtuelle, de technologies vertes ou de santé connectée. Anthony Morel a le don de rendre accessibles des sujets parfois complexes, en les expliquant de manière claire et passionnante pour tous les auditeurs.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Ses chroniques sont devenues au fil des années un rendez-vous quotidien suivi par des milliers d'auditeurs passionnés par l'innovation et les nouvelles technologies. Son approche unique, mêlant expertise technique et vulgarisation intelligente, permet à chacun de comprendre les enjeux des technologies qui transforment notre quotidien et préparent le monde de demain.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/ArMH9PWr9twdZj5SxsFhpC_dXaA=/4x308:1396x1091/images/Charles-Matin-1982080.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://image.jimcdn.com/app/cms/image/transf/none/path/s7c2b4bb8bacf687d/image/icb39edcd954c282e/version/1590056550/anthony-morel-journaliste-nouvelles-technologies-innovation-robotique.jpg" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Anthony Morel - Le spécialiste des nouvelles technologies sur RMC</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Anthony Morel est un journaliste français spécialisé dans les nouvelles technologies et l'innovation. Expert reconnu dans son domaine, il s'est imposé comme l'une des voix les plus influentes en matière de vulgarisation technologique en France. Sa capacité à décrypter et à expliquer les avancées technologiques les plus complexes de manière accessible l'a conduit à devenir un chroniqueur incontournable sur RMC.

            Chaque jour, à travers ses chroniques "C'est déjà demain" et "On n'arrête pas le progrès", il explore les innovations qui façonnent notre futur. Son approche unique mêle expertise technique et vulgarisation intelligente, permettant à tous les auditeurs de comprendre les enjeux des technologies émergentes.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Ses chroniques couvrent un large spectre de sujets : intelligence artificielle, robotique, réalité virtuelle, santé connectée, véhicules autonomes, technologies vertes... Anthony Morel excelle dans l'art de dénicher les innovations les plus prometteuses et de les présenter au grand public. Son style dynamique et son enthousiasme communicatif ont conquis les auditeurs de RMC.

            Véritable passeur entre le monde complexe de la technologie et le grand public, Anthony Morel contribue quotidiennement à démocratiser la compréhension des avancées technologiques qui transforment nos vies. Ses chroniques sont devenues une référence pour tous ceux qui s'intéressent à l'innovation et au futur de la technologie.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://feeds.simplecast.com/_heHcjfR";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://radio-podcast.fr/files/images_podcast/RMC-podcast-chronique-anthony-morel.png";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Les chroniques d'Anthony Morel sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Les chroniques d'Anthony Morel sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Les chroniques d'Anthony Morel sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Les chroniques d'Anthony Morel sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-chronique-anthony-morel-rmc/">🗣️ Podcast et replay &#8211; Les chroniques d&rsquo;Anthony Morel &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-chronique-anthony-morel-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; Estelle Midi &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-estelle-midi-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-estelle-midi-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 16:28:18 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1555</guid>

					<description><![CDATA[<p>Podcast RSS Feed Estelle Midi &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Publicité Écoutez et téléchargez les podcasts de l&#8217;émission Estelle Midi avec Estelle Denis, émission d&#8217;actualités et de débats incontournable de RMC Voir leur Facebook Voir leur Instagram Estelle Midi est une émission phare de RMC animée [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-estelle-midi-rmc/">🗣️ Podcast et replay &#8211; Estelle Midi &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1555" class="elementor elementor-1555" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Estelle Midi - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://www.anciensautocollants.com/628-large_default/sticker-rmc-logo-rouge-noir-l-50-h-50-mm.jpg" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
    <div class="ad-banner" style="width: 100%; max-width: 508px; margin: 20px auto; text-align: center; grid-column: 1 / -1; background: rgba(0,0,0,0.3); padding: 15px; border-radius: 10px; border: 1px solid rgba(0, 255, 255, 0.2); transition: transform 0.3s ease;">
        <p style="color: #666; font-size: 12px; margin-bottom: 10px;">Publicité</p>
        <a href="https://universal-academy.com/recruter-des-alternants-dans-le-tourisme/" target="_blank" style="display: inline-block;">
            <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/Design-sans-titre-2024-11-06T134332.299.webp" alt="Bannière publicitaire RTL" style="width: 100%; max-width: 700px; height: auto; border-radius: 8px; transition: transform 0.3s ease;" onmouseover="this.style.transform='scale(1.02)'" onmouseout="this.style.transform='scale(1)'">
        </a>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Écoutez et téléchargez les podcasts de l'émission Estelle Midi avec Estelle Denis, émission d'actualités et de débats incontournable de RMC</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/EstelleMidi/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/estelle_midi/?hl=fr" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Estelle Midi est une émission phare de RMC animée par Estelle Denis, journaliste et animatrice reconnue. Chaque jour de 12h à 15h, l'émission propose des débats d'actualité passionnés autour de sujets qui font l'actualité. Estelle Denis, entourée de chroniqueurs et d'experts, aborde tous les sujets qui font la Une : politique, société, faits divers, actualité internationale, sport... L'émission se distingue par sa capacité à traiter l'information sous tous ses angles, avec des débats animés mais toujours respectueux. Les auditeurs sont au cœur du programme grâce aux interventions téléphoniques qui permettent des échanges directs et spontanés avec l'équipe. Estelle Midi est devenue au fil des années une référence incontournable pour tous ceux qui souhaitent comprendre et débattre de l'actualité, dans une ambiance à la fois sérieuse sur le fond et décontractée sur la forme.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Participez aux débats passionnés d'actualité avec Estelle Denis et son équipe de chroniqueurs sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ecoutez en direct Estelle Midi et ses débats d'actualité passionnés sur RMC</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire d'Estelle Midi</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Estelle Midi est l'une des émissions phares de RMC depuis son lancement. Animée par Estelle Denis, journaliste et animatrice de talent, cette émission dynamique propose chaque midi un débat passionné autour des sujets qui font l'actualité, qu'ils soient politiques, sociétaux ou sportifs.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        L'émission se distingue par sa capacité unique à traiter l'actualité avec pertinence tout en gardant un ton direct et sans langue de bois. Estelle Denis, entourée de chroniqueurs et d'experts reconnus, offre aux auditeurs une vision à 360° de l'actualité, donnant la parole aux auditeurs qui peuvent intervenir en direct pour donner leur avis sur les sujets du jour.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Estelle Midi est devenue au fil des années une référence incontournable dans le paysage radiophonique français. Son format unique, mêlant analyses expertes et débats animés, ainsi que la personnalité charismatique d'Estelle Denis, en font un rendez-vous quotidien suivi par des centaines de milliers d'auditeurs passionnés par l'actualité et le débat d'idées.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://static-cdn.tv.sfr.net/data/img/wcsstore/NEUF_NUM23/7/2/5/02027b807dfe7dbd28d742c290de5680_poster_illustrated.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://photos.tf1.fr/640/854/estelle-denis-b338b3-0@3x.jpg" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Estelle Denis - L'animatrice emblématique d'Estelle Midi</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Estelle Denis, née le 6 décembre 1976 à Paris, est une journaliste et animatrice française de premier plan. Diplômée de l'ESJ Paris, elle débute sa carrière sur M6 avant de s'imposer comme l'une des figures incontournables du paysage audiovisuel français. Sa passion pour le sport et l'actualité, combinée à son talent d'animatrice, l'ont naturellement menée vers le journalisme sportif et les émissions de débats.

            Après avoir brillé sur différentes chaînes (M6, Canal+, TF1), elle rejoint RMC en 2021 pour animer "Estelle Midi", une émission qui porte son nom et sa signature. Cette émission quotidienne, diffusée de 12h à 15h, est rapidement devenue un rendez-vous incontournable de la station.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Dans "Estelle Midi", Estelle Denis démontre chaque jour sa capacité à animer des débats passionnants sur l'actualité tout en gardant le contrôle des échanges parfois houleux entre ses chroniqueurs. Son style direct, son professionnalisme et sa capacité à traiter tous les sujets avec justesse et pertinence ont conquis les auditeurs. Entourée d'une équipe de chroniqueurs talentueux, elle propose une analyse approfondie de l'actualité, mêlant expertise et accessibilité.

            Son émission rassemble quotidiennement des centaines de milliers d'auditeurs, séduits par sa façon unique d'aborder l'actualité et sa capacité à donner la parole aux auditeurs dans un format dynamique et interactif. Estelle Denis a su créer un espace de débat où l'actualité est décryptée sans langue de bois, faisant d'Estelle Midi une référence dans le paysage radiophonique français.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC_Sport" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC Sport</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://podcast.rmc.fr/channel448/RMCInfochannel448.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://radio-podcast.fr/files/400x400/podcasts-rmc-estelle-midi-241102093029.jpg";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Estelle Midi sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Estelle Midi sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Estelle Midi sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Estelle Midi sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-estelle-midi-rmc/">🗣️ Podcast et replay &#8211; Estelle Midi &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-estelle-midi-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; Super Moscato Show &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-super-moscato-show-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-super-moscato-show-rmc/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 15:18:19 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1548</guid>

					<description><![CDATA[<p>Podcast RSS Feed Super Moscato Show &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Écoutez et téléchargez les podcasts de l&#8217;émission Super Moscato Show avec Vincent Moscato, l&#8217;émission de sport mythique de RMC Voir leur Facebook Voir leur Instagram Le Super Moscato Show est une émission phare de RMC [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-super-moscato-show-rmc/">🗣️ Podcast et replay &#8211; Super Moscato Show &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1548" class="elementor elementor-1548" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
Super Moscato Show - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://yt3.googleusercontent.com/52KycFtU1nQccuCrfZdfP4zCzGLNQg0Hi9hO73gJ_CDmbIiG9mec48kR-n2PZdldw8mE6A641Q=s900-c-k-c0x00ffffff-no-rj" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Écoutez et téléchargez les podcasts de l'émission Super Moscato Show avec Vincent Moscato, l'émission de sport mythique de RMC</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/MoscatoRMC/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/vincent.moscato/?hl=fr" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
Le Super Moscato Show est une émission phare de RMC animée par Vincent Moscato, ancien rugbyman international reconverti en animateur radio. Chaque jour de 15h à 18h, l'émission propose un mélange détonant d'analyses sportives, de débats passionnés et d'humour décalé. Vincent Moscato, entouré de ses chroniqueurs comme Eric Di Meco, Denis Charvet et bien d'autres, décortique l'actualité du sport avec son style unique et son franc-parler légendaire. L'émission se distingue par sa capacité à traiter le sport sous tous ses angles, du football au rugby, en passant par la boxe, le tennis et bien d'autres disciplines, le tout dans une ambiance décontractée et conviviale. Les auditeurs sont partie prenante de l'émission grâce aux interventions téléphoniques qui permettent des échanges directs et spontanés avec l'équipe. Le Super Moscato Show est devenu au fil des années une référence incontournable pour tous les passionnés de sport qui apprécient un traitement de l'information sportive alliant expertise et divertissement.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Écoutez et commentez les débats sportifs du Super Moscato Show, l'émission phare de RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ecoutez en direct le Super Moscato Show et ses débats sport passionnés sur RMC</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire du Super Moscato Show</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Le Super Moscato Show est l'une des émissions phares de RMC depuis 2004. Animée par Vincent Moscato, ancien international de rugby reconverti avec succès dans les médias, cette émission dynamique propose chaque après-midi un savant mélange d'analyses sportives pointues, d'humour décalé et de débats enflammés.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        L'émission se distingue par sa capacité unique à traiter l'actualité sportive avec expertise tout en gardant un ton décontracté et convivial. Vincent Moscato, entouré de chroniqueurs de renom comme Eric Di Meco ou Denis Charvet, offre aux auditeurs une vision à 360° du sport, du football au rugby, en passant par la boxe, le tennis et bien d'autres disciplines.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le Super Moscato Show est devenu au fil des années une référence incontournable dans le paysage radiophonique français. Son ton unique, mêlant analyses pertinentes et second degré assumé, ainsi que la personnalité haute en couleur de Vincent Moscato, en font un rendez-vous quotidien suivi par des centaines de milliers d'auditeurs passionnés de sport.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://static.actu.fr/uploads/2022/06/super-moscato-show.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://images.cinefil.com/stars/1143228.webp" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px;">Vincent Moscato - L'animateur emblématique du Super Moscato Show</h2>
    <p style="color: #ffffff; line-height: 1.8;">
        Vincent Moscato, né le 28 juillet 1965 à Paris, est une personnalité aux multiples facettes : ancien rugbyman international devenu animateur radio emblématique de RMC. Sa carrière de joueur de rugby s'étend de 1983 à 1996, durant laquelle il évolue au poste de talonneur pour des clubs prestigieux comme le Stade Français et le Racing Club de France. Il compte également 4 sélections en équipe de France entre 1991 et 1992.

        Après sa carrière sportive, il se lance dans le one-man-show en 1997 avec "Vincent Moscato one man show", rencontrant un succès qui le mène à plusieurs autres spectacles. En 2004, il fait ses débuts sur RMC où il anime depuis le Super Moscato Show, émission devenue une référence dans le paysage radiophonique sportif français.
    </p>
    <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
        Sa transition réussie du sport au divertissement inclut également des apparitions au cinéma (notamment dans "Les Dalton" en 2004) et à la télévision. En tant qu'animateur radio, il a su créer une émission unique où son expertise du sport professionnel, son charisme naturel et son sens de l'humour se conjuguent parfaitement. Le Super Moscato Show, diffusé de 15h à 18h sur RMC, rassemble quotidiennement plus de 700 000 auditeurs, faisant de lui l'une des voix les plus écoutées du sport en France.

        Ses chroniqueurs réguliers incluent des personnalités comme Eric Di Meco (ancien footballeur de l'OM), Denis Charvet (ancien international de rugby) et Maryse Éwanjé-Épée (ancienne athlète), formant une équipe particulièrement appréciée des auditeurs pour leurs analyses pointues et leurs débats passionnés.
    </p>
</div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC_Sport" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC Sport</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://feeds.simplecast.com/8bxI9MLf";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://images.bfmtv.com/OUsxEGvulggXVT62FbzbG_61488=/0x0:2000x2000/2000x0/podcast/podcasts/principale-85_5.jpg";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : Super Moscato Show sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : Super Moscato Show sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Super Moscato Show sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : Super Moscato Show sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-super-moscato-show-rmc/">🗣️ Podcast et replay &#8211; Super Moscato Show &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-super-moscato-show-rmc/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; RMC Sport Show &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-rmc-sport-show/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-rmc-sport-show/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 14:28:06 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1541</guid>

					<description><![CDATA[<p>Podcast RSS Feed RMC Sport Show &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Écoutez et téléchargez les podcasts RMC Sport Show sur RMC Voir leur Facebook Voir leur Instagram RMC Sport Show est une émission phare de RMC dédiée à l&#8217;actualité sportive dans toute sa diversité. Chaque soir, [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-rmc-sport-show/">🗣️ Podcast et replay &#8211; RMC Sport Show &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1541" class="elementor elementor-1541" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
RMC Sport Show - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://yt3.googleusercontent.com/52KycFtU1nQccuCrfZdfP4zCzGLNQg0Hi9hO73gJ_CDmbIiG9mec48kR-n2PZdldw8mE6A641Q=s900-c-k-c0x00ffffff-no-rj" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Écoutez et téléchargez les podcasts RMC Sport Show sur RMC</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/GGRMC/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/lesggrmc/?hl=fr" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
RMC Sport Show est une émission phare de RMC dédiée à l'actualité sportive dans toute sa diversité. Chaque soir, l'émission propose un tour d'horizon complet du sport avec des analyses approfondies, des débats passionnés et des interviews exclusives d'athlètes et d'experts. Le programme couvre un large éventail de disciplines sportives, du football au rugby, en passant par le basket, le tennis, la Formule 1 et bien d'autres sports. Les animateurs et consultants apportent leur expertise pour décrypter les événements sportifs majeurs, les performances des athlètes et les coulisses du sport. L'émission se distingue par son approche interactive, permettant aux auditeurs de participer aux discussions et de partager leurs points de vue sur l'actualité sportive.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Suivez toute l'actualité du sport avec des débats et des analyses sur RMC Sport Show</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ecoutez en direct les débats et analyses sportives passionnées sur RMC Sport Show</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire de RMC Sport Show</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        "RMC Sport Show" est une émission phare de RMC qui propose quotidiennement une couverture complète de l'actualité sportive. Cette émission dynamique rassemble des consultants experts, des journalistes spécialisés et des personnalités du sport pour des analyses approfondies et des débats passionnants sur tous les sports.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        L'émission se distingue par sa capacité à couvrir l'ensemble du spectre sportif, du football au rugby, en passant par le basket, le tennis, la Formule 1 et bien d'autres disciplines. Les intervenants partagent leur expertise et leur vision pour décrypter l'actualité sportive sous tous ses angles.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        RMC Sport Show est devenu un rendez-vous incontournable pour les passionnés de sport grâce à son ton direct, ses analyses pertinentes et la qualité de ses intervenants. L'émission permet aux auditeurs de vivre intensément l'actualité sportive à travers des débats animés et des discussions enrichissantes qui mêlent expertise technique et passion du sport.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/kQMH9fj8FAy_QJ8T4fLGK0nj0KI=/0x0:1920x1080/emission/RMC-Sport-Show-web-271_4.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://pbs.twimg.com/profile_images/1786830665419272192/o6Jm6mGu_400x400.jpg" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Houssem Loussaïef - Le présentateur de RMC Sport Show</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Houssem Loussaïef est une figure incontournable du sport sur RMC. En tant que présentateur de RMC Sport Show, il anime avec passion et expertise cette émission phare dédiée à l'actualité sportive. Son parcours et sa connaissance approfondie du monde du sport font de lui un animateur chevronné et respecté.

            Sa capacité à mener des débats animés tout en maintenant un niveau d'analyse de qualité fait de lui un atout majeur pour l'émission. Son style dynamique et sa façon unique d'aborder l'actualité sportive ont contribué à fidéliser de nombreux auditeurs.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Dans RMC Sport Show, Houssem Loussaïef excelle particulièrement dans l'art de faire ressortir les analyses pertinentes et de créer des discussions enrichissantes autour de l'actualité sportive. Sa maîtrise des différentes disciplines sportives et sa capacité à interagir de manière constructive avec les consultants et les auditeurs font de chaque émission un moment riche en contenu et en échanges passionnants sur le sport dans toute sa diversité.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/RMC_Sport" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - RMC Sport</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "https://podcast.rmc.fr/channel362/RMCInfochannel362.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://images.bfmtv.com/zKm3bTd5dYe51Q8gRz6Sf2nUSbI=/0x0:1400x1400/1400x0/podcast/podcasts/principale-196.jpg";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-rmc-sport-show/">🗣️ Podcast et replay &#8211; RMC Sport Show &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-rmc-sport-show/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et replay &#8211; Intégrale Foot &#8211; RMC</title>
		<link>https://radiostreamr.com/radio-france/podcast-integrale-foot-rmc/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-integrale-foot-rmc/#comments</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 26 Nov 2024 13:41:46 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RMC]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1534</guid>

					<description><![CDATA[<p>Podcast RSS Feed L&#8217;intégrale Foot &#8211; Écoutez ou télécharger la rediffusion de tous les podcasts RMC Plus récentsPlus anciens Écoutez et téléchargez les podcasts L&#8217;intégrale Foot sur RMC Voir leur Facebook Voir leur Instagram L&#8217;Intégrale Foot est une émission incontournable de RMC, offrant chaque jour une couverture complète de l&#8217;actualité du football. L&#8217;émission propose une [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-integrale-foot-rmc/">🗣️ Podcast et replay &#8211; Intégrale Foot &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1534" class="elementor elementor-1534" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-dce457e e-con-full e-flex e-con e-parent" data-id="dce457e" data-element_type="container">
				<div class="elementor-element elementor-element-9f9be1c 1995 elementor-widget elementor-widget-html" data-id="9f9be1c" data-element_type="widget" id="1995" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Podcast RSS Feed</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
<style>
    .rtl-podcast-player * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: 'Roboto', sans-serif;
    }

  .rtl-podcast-player #pagination {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: 100% !important;
}

@keyframes gradientBG {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

.rtl-podcast-player body {
    background: linear-gradient(-45deg, #0a192f, #172a45, #1a365d, #102235);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    min-height: 100vh;
    display: flex;
    align-items: center;
    color: #fff;
    width: 100%;
    max-width: 100%;
    overflow-x: hidden;
    margin: 0;
    padding: 0;
}

    .rtl-podcast-player .container {
        display: grid;
        grid-template-columns: 1.2fr 2.8fr;
        gap: 20px;
        margin: 0 auto;
        padding: 50px 150px !important;
        width: 100%;
        background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
        background-size: 400% 400%;
        animation: gradientBG 15s ease infinite;
        border-radius: 0;
        box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);
    }


    @media (max-width: 1024px) {
        .rtl-podcast-player .container {
            padding: 30px 45px;
            grid-template-columns: 1fr 2fr;
        }
        
        .rtl-podcast-player h1 {
            font-size: 2em;
        }
    }


    @media (max-width: 768px) {
        .rtl-podcast-player .container {
            padding: 20px !important; /* Override padding */
            margin: 0 !important; /* Reset margin */
            width: 100% !important;
            max-width: 100% !important;
            grid-template-columns: 1fr;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }
        
        .rtl-podcast-player #episode-grid,
        .rtl-podcast-player .episode,
        .rtl-podcast-player #featured-episode,
        .rtl-podcast-player .host-biography,
        .rtl-podcast-player .social-share-buttons {
            width: 100% !important;
            margin-left: auto !important;
            margin-right: auto !important;
            padding: 15px !important;
        }
        
        .rtl-podcast-player h1,
        .rtl-podcast-player h2,
        .rtl-podcast-player p {
            padding-left: 10px !important;
            padding-right: 10px !important;
            text-align: center;
        }

        .rtl-podcast-player #episode-grid {
            grid-template-columns: 1fr !important; /* Force single column */
            gap: 20px;
        }
        
        .rtl-podcast-player .episode {
            width: 100% !important;
            margin: 0 auto !important;
        }
    }


@media (max-width: 480px) {
    .rtl-podcast-player .container {
        padding: 10px !important;
    }
    
    .rtl-podcast-player #featured-episode,
    .rtl-podcast-player .episode {
        padding: 15px !important;
        width: 100% !important;
        margin: 0 auto !important;
    }
}

.rtl-podcast-player h1 {
    color: #00ffff;
    text-align: center;
    font-size: 2.3em;
    margin-bottom: 40px;
    font-weight: 700;
    width: 100%;
    grid-column: 1 / -1;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.3);
}

  #fixed-player-bar {
        display: flex;               /* Assure l'affichage en flex */
        flex-direction: column;       /* Organisation en colonne */
        align-items: center;          /* Centre les éléments */
        padding: 10px;
        gap: 10px;                    /* Espace entre chaque ligne */
        background: rgba(26, 26, 26, 0.95); /* Conserve l’arrière-plan */
        display: none;                /* Masqué par défaut */
    }

    /* Ligne 1 : Titre de l'épisode */
    #fixed-player-title {
        display: block;               /* Force l'affichage sur une ligne complète */
        text-align: center;
        font-size: 1.2em;
        color: #00ffff;
        width: 100%;                  /* Prend la largeur complète */
    }

    /* Ligne 2 : Player audio */
    #fixed-player-audio {
        display: block;               /* Force l'affichage sur une ligne complète */
        width: 100%;
    }

    /* Ligne 3 : Conteneur pour les boutons Chromecast et fermeture */
    .audio-controls-container {
        display: flex;
        justify-content: center;
        gap: 20px;
        width: 100%;                  /* Assure une disposition sur toute la largeur */
    }

    /* Styles des boutons */
    #chromecast-button, #close-fixed-player {
        width: 40px;
        height: 40px;
        border: none;
        cursor: pointer;
    }
}

  @media (max-width: 768px) {
    .rtl-podcast-player h1 {
        margin-top: 0px !important; /* Ajustez la valeur selon vos besoins */
    }
}
  
.rtl-podcast-player #featured-episode {
    /* Remplacer ces styles */
    display: flex;
    flex-direction: column;
    height: 100%; /* Ajout de cette ligne */
    padding: 30px;
    border-radius: 15px;
    background-color: transparent;
    color: #ffffff;
    transition: all 0.3s ease;
}

.rtl-podcast-player #featured-episode:hover {
    transform: translateY(-5px);
}

.rtl-podcast-player #featured-episode h3 {
    color: #00ffff;
    margin-bottom: 15px;
    font-weight: 500;
}

.rtl-podcast-player #featured-episode button, .rtl-podcast-player .episode button {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    padding: 0;
    background-image: url('https://static.vecteezy.com/system/resources/thumbnails/017/196/540/small/3d-play-button-icon-transparent-background-free-png.png');
    background-size: 35px;
    background-position: center;
    background-repeat: no-repeat;
    font-size: 0;
    position: relative;
}

    .rtl-podcast-player .date-badge {
        background: rgba(0, 255, 255, 0.1);
        border: 2px solid #00ffff;
        border-radius: 8px;
        padding: 8px 15px;
        color: #00ffff;
        font-weight: bold;
        text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
        box-shadow: 
            0 0 5px rgba(0, 255, 255, 0.2),
            0 0 10px rgba(0, 255, 255, 0.2),
            0 0 15px rgba(0, 255, 255, 0.2),
            0 0 20px rgba(0, 255, 255, 0.2);
        animation: neonPulse 1.5s ease-in-out infinite;
        margin: 15px auto 20px auto; /* Increased bottom margin */
        display: block; /* Changed from inline-block to block */
        width: fit-content;
    }

    @keyframes neonPulse {
        0%, 100% {
            box-shadow: 
                0 0 5px rgba(0, 255, 255, 0.2),
                0 0 10px rgba(0, 255, 255, 0.2),
                0 0 15px rgba(0, 255, 255, 0.2),
                0 0 20px rgba(0, 255, 255, 0.2);
        }
        50% {
            box-shadow: 
                0 0 10px rgba(0, 255, 255, 0.4),
                0 0 20px rgba(0, 255, 255, 0.4),
                0 0 30px rgba(0, 255, 255, 0.4),
                0 0 40px rgba(0, 255, 255, 0.4);
        }
    }


.rtl-podcast-player #featured-episode img,
.rtl-podcast-player .episode img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .modal-content img {
    border-radius: 15px;
    object-fit: cover;
}

.rtl-podcast-player .episode button:hover::after,
.rtl-podcast-player #featured-episode button:hover::after {
    content: "Ecouter ce podcast";
    position: absolute;
    bottom: -35px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.8);
    color: #fff;
    padding: 5px 10px;
    border-radius: 5px;
    font-size: 14px;
    white-space: nowrap;
    z-index: 1000;
}

.rtl-podcast-player #featured-episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #episode-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

    .rtl-podcast-player .episode {
        padding: 20px;
        border-radius: 15px;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.1);
        text-align: center;
        background-color: #1a1a1a;
        transition: all 0.3s ease;
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .rtl-podcast-player .episode p {
        color: #ffffff;
    }


.rtl-podcast-player .episode:hover {
    box-shadow: 0 0 20px rgba(0, 255, 255, 0.2);
    transform: translateY(-3px);
}

.rtl-podcast-player .episode h5 {
    margin-bottom: 10px;
    color: #00ffff;
}

.rtl-podcast-player .episode a {
    color: #00ffff;
    text-decoration: none;
}

    .rtl-podcast-player .episode button:hover {
        background-color: #00cccc;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }
    
    .search-filter-container {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 15px;
        margin-bottom: 30px;
        width: 100%;
    }

    .search-filter-container input,
    .search-filter-container select {
        padding: 10px 15px;
        border: 2px solid #00ffff;
        border-radius: 8px;
        background: rgba(0, 0, 0, 0.3);
        color: #fff;
        font-size: 16px;
        width: 200px;
    }

    .search-filter-container input::placeholder {
        color: rgba(255, 255, 255, 0.6);
    }

    .search-filter-container input:focus,
    .search-filter-container select:focus {
        outline: none;
        box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
    }

    .search-filter-container select {
        cursor: pointer;
    }

    .search-filter-container select option {
        background-color: #1a1a1a;
        color: #fff;
    }

    @media (max-width: 768px) {
        .search-filter-container {
            flex-direction: column;
            gap: 10px;
        }

        .search-filter-container input,
        .search-filter-container select {
            width: 100%;
            max-width: 300px;
        }
    }

    color: #000;
    border: none;
    padding: 8px 20px;
    border-radius: 20px;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.3s ease;
    margin-top: 10px; /* Add space above button */
    display: block; /* Ensure block-level display */
    margin-left: auto;
    margin-right: auto;
}

.rtl-podcast-player .episode button:hover {
    background-color: #00cccc;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player .pagination {
    text-align: center !important;
    margin-top: 30px !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: 5px !important;
    width: auto !important;
}

  .rtl-podcast-player #page-numbers {
    display: flex !important;
    gap: 5px !important;
    margin: 0 5px !important;
}
  
.rtl-podcast-player .pagination button,
.rtl-podcast-player .pagination #prev-btn,
.rtl-podcast-player .pagination #next-btn {
    margin: 0 !important;  /* Changé de 5px à 0 */
    padding: 8px 16px;
    font-size: 1em;
    background-color: #1a1a1a;
    color: #00ffff;
    border: 1px solid #00ffff;
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s ease;
    float: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.rtl-podcast-player .pagination button:hover {
    background-color: #00ffff;
    color: #000;
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

.rtl-podcast-player .modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.8);
    backdrop-filter: blur(8px);
}

.rtl-podcast-player .modal-content {
    background-color: #1a1a1a;
    padding: 40px;
    border: 2px solid #00ffff;
    width: 90%;
    max-width: 500px;
    max-height: 90vh;
    border-radius: 20px;
    text-align: center;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    overflow-y: auto;
    color: white;
}

.rtl-podcast-player .close {
    position: absolute;
    top: 10px;
    right: 20px;
    color: #00ffff;
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.rtl-podcast-player .close:hover {
    color: #00cccc;
    text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.rtl-podcast-player #chromecast-button {
    background-color: #00ffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    color: #000;
    margin-top: 20px;
    font-weight: bold;
    display: inline-block;
}

.rtl-podcast-player audio::-webkit-media-controls-panel {
    background-color: #2a2a2a;
}

.rtl-podcast-player audio::-webkit-media-controls-current-time-display,
.rtl-podcast-player audio::-webkit-media-controls-time-remaining-display {
    color: #000000;
}

.rtl-podcast-player #fixed-player-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(26, 26, 26, 0.95);
    backdrop-filter: blur(10px);
    padding: 10px 20px;
    z-index: 999;
    border-top: 2px solid #00ffff;
}

.rtl-podcast-player .fixed-player-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 1200px;
    margin: 0 auto;
    gap: 20px;
}


.rtl-podcast-player #fixed-player-title {
    color: #00ffff;
    font-size: 1em;
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

.rtl-podcast-player #fixed-player-audio {
    flex: 2;
    max-width: 500px;
}

.episode-card {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(0, 255, 255, 0.3);
    border-radius: 15px;
    padding: 20px;
    margin-bottom: 20px;
    transition: all 0.3s ease;
    cursor: pointer;
}

.episode-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 5px 15px rgba(0, 255, 255, 0.2);
}

.episode-card img {
    width: 100%;
    max-width: 200px;
    border-radius: 10px;
    margin: 10px 0;
}

.episode-card button {
    margin-top: 10px;
}
  
/* Conserve les styles des boutons play et mute */
audio::-webkit-media-controls-play-button,
audio::-webkit-media-controls-mute-button {
    background-color: #40E0D0 !important; /* Bleu turquoise */
    border-radius: 50% !important;
    transition: all 0.3s ease !important;
}

audio::-webkit-media-controls-play-button:hover,
audio::-webkit-media-controls-mute-button:hover {
    background-color: #5FECEC !important; /* Bleu turquoise plus clair au survol */
    box-shadow: 0 0 15px rgba(0, 255, 255, 0.5) !important;
}

/* Tentative pour changer la couleur du trait de progression */
audio::-webkit-media-controls-timeline {
    color: #a6a6a6 !important; /* Essaye de cibler le trait turquoise */
}

/* Modifie la couleur des trois petits points */
audio::-webkit-media-controls-panel {
    background-color: transparent !important; /* Assure que le fond ne prend pas de couleur */
    color: #40E0D0 !important; /* Forcer la couleur turquoise pour les trois points */
}

/* Tentative supplémentaire pour cibler le trait du curseur de progression */
audio::-webkit-slider-runnable-track {
    background-color: #40E0D0 !important; /* Bleu turquoise pour la piste */
}

audio::-webkit-slider-thumb {
    background-color: #a6a6a6 !important; /* Plus clair pour le curseur lui-même */
}

  .duration-badge {
    background: rgba(0, 0, 0, 0.6);
    color: #00ffff;
    padding: 5px 10px;
    border-radius: 15px;
    font-size: 0.9em;
    margin: 10px 0;
    display: inline-block;
    border: 1px solid rgba(0, 255, 255, 0.3);
}

.duration-icon {
    display: inline-block;
    margin-right: 5px;
    vertical-align: middle;
}


@media (max-width: 768px) {
    .rtl-podcast-player .fixed-player-content {
        flex-direction: column;
        gap: 10px;
        padding: 15px;
    }

    .rtl-podcast-player #fixed-player-audio {
        width: 100%;
        max-width: 100%;
    }

    .rtl-podcast-player #fixed-player-title {
        width: 100%;
        text-align: center;
        font-size: 0.9em;
    }
}

.rtl-podcast-player .social-button {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.2s ease-in-out;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.rtl-podcast-player .social-button:hover {
    transform: scale(1.1);
}

@media (max-width: 768px) {
    .rtl-podcast-player .social-share-buttons {
        gap: 10px;
    }
    
    .rtl-podcast-player .social-button {
        width: 40px;
        height: 40px;
    }
    
    .rtl-podcast-player .social-button svg {
        width: 20px;
        height: 20px;
    }
}

.navigation-buttons {
    position: absolute;
    width: 100%;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    display: flex;
    justify-content: space-between;
    padding: 0 10px;
    pointer-events: none;
    z-index: 1000;
}

.nav-button {
    background: rgba(0, 0, 0, 0.7);
    border: 2px solid #00ffff;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
    pointer-events: auto;
}  

.nav-button:hover {
    background: rgba(0, 255, 255, 0.2);
    transform: scale(1.1);
}

.nav-button svg {
    width: 24px;
    height: 24px;
}

@media (max-width: 768px) {
    .nav-button {
        width: 35px;
        height: 35px;
    }
    
    .nav-button svg {
        width: 20px;
        height: 20px;
    }
}
</style>
<script type="text/javascript" src="//www.gstatic.com/cv/js/sender/v1/cast_sender.js"></script>

</head><body>
<div class="rtl-podcast-player">
    <div class="container" style="background: linear-gradient(-45deg, #000000, #001a1a, #003333, #004d4d);
    background-size: 400% 400%;
    animation: gradientBG 15s ease infinite;
    border-radius: 0; /* Changed from 20px to 0 */
    box-shadow: 0 0 30px rgba(0, 255, 255, 0.2);">
    <h1 style="color: #00ffff; text-align: center; font-size: 2.1em; margin-bottom: 40px; font-weight: 700; width: 100%; grid-column: 1 / -1; text-shadow: 0 0 10px rgba(0, 255, 255, 0.3); padding: 0 15px; display: flex; align-items: center; justify-content: center; gap: 20px; flex-wrap: wrap;">
L'intégrale Foot - Écoutez ou télécharger la rediffusion de tous les podcasts RMC
<img decoding="async" src="https://yt3.googleusercontent.com/52KycFtU1nQccuCrfZdfP4zCzGLNQg0Hi9hO73gJ_CDmbIiG9mec48kR-n2PZdldw8mE6A641Q=s900-c-k-c0x00ffffff-no-rj" alt="Logo RMC" style="width: 60px; height: 60px; border-radius: 50%; padding: 5px; background: white; box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);">
</h1>
    <div class="social-share-buttons" style="display: flex; justify-content: center; align-items: center; gap: 15px; margin-bottom: 30px; width: 100%; grid-column: 1 / -1;">
    <button onclick="shareOnX()" class="social-button" style="background-color: #000;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path>
        </svg>
    </button>
    <button onclick="shareOnWhatsapp()" class="social-button" style="background-color: #25D366;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"></path>
        </svg>
    </button>
    <button onclick="shareOnFacebook()" class="social-button" style="background-color: #1877F2;">  
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path>
        </svg>
    </button>
    <button onclick="shareOnLinkedIn()" class="social-button" style="background-color: #0A66C2;">
        <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#fff">
            <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path>
        </svg>
    </button>
</div>
      
    <div id="featured-episode" style="display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: space-between; gap: 20px; height: 100%; position: relative; padding-top: 20px; cursor: pointer;">
  <div class="features-episode" style="width: 100%; height: 100%;">
    <!-- Première carte (dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
            
    <!-- Deuxième carte (avant-dernière émission) -->
    <div class="episode-card">
      <h3 style="color: #00ffff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;"></h3>
      <p style="display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-height: 3em; /* Strictement limité à 180 caractères */" class="truncate-text"></p>
      <div class="date-badge"></div>
      <button onclick="openModal('', '')"></button>
    </div>
  </div>
</div>
    <div>
    <div class="search-filter-container">
        <input type="text" id="podcast-search" placeholder="Rechercher un podcast..." oninput="filterAndDisplayEpisodes()">
        <select id="podcast-filter" onchange="filterAndDisplayEpisodes()">
            <option value="newest">Plus récents</option>
            <option value="oldest">Plus anciens</option>
        </select>
    </div>
    <div id="episode-grid">
        <style>
            .episode {
                cursor: pointer;
            }
            
            .episode > * {
                pointer-events: none;
            }
            
            .episode button {
                pointer-events: auto;
            }

            /* Ajout des styles pour la durée */
            .duration-badge {
                background: rgba(0, 0, 0, 0.6);
                color: #00ffff;
                padding: 5px 10px;
                border-radius: 15px;
                font-size: 0.9em;
                margin: 10px 0;
                display: inline-block;
                border: 1px solid rgba(0, 255, 255, 0.3);
            }

            .duration-icon {
                display: inline-block;
                margin-right: 5px;
                vertical-align: middle;
            }
        </style>

        <script>
            function formatDuration(durationInSeconds) {
                const hours = Math.floor(durationInSeconds / 3600);
                const minutes = Math.floor((durationInSeconds % 3600) / 60);
                
                if (hours > 0) {
                    return `${hours}h ${minutes}min`;
                } else {
                    return `${minutes} min`;
                }
            }

            const originalDisplayEpisodes = window.displayEpisodes;
            window.displayEpisodes = function(page, episodes) {
                const episodeGrid = document.getElementById("episode-grid");
                episodeGrid.innerHTML = "";
                const episodesWithoutFeatured = episodes.slice(2);
                const start = (page - 1) * episodesPerPage;  
                const end = start + episodesPerPage;
                
                episodesWithoutFeatured.slice(start, end).forEach(item => {
                    // Simulation de durée (puisque l'API ne fournit pas cette info)
                    const simulatedDuration = Math.floor(Math.random() * (180 - 45 + 1)) + 45; // Entre 45 et 180 minutes
                    
                    episodeGrid.innerHTML += `
                    <div class="episode">
                        <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
                        <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
                    </div>
                    `;
                });
                updatePaginationButtons();
            }

            // Modification de displayFeaturedEpisode pour inclure la durée
            const originalDisplayFeaturedEpisode = window.displayFeaturedEpisode;
            window.displayFeaturedEpisode = function(episode) {
                const featuredEpisode = document.getElementById("featured-episode");
                const simulatedDuration1 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                const simulatedDuration2 = Math.floor(Math.random() * (180 - 45 + 1)) + 45;
                
                featuredEpisode.innerHTML = `
                <div class="features-episode" style="width: 100%; height: 100%;">
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                        <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration1 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                    
                    <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                        <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                        <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                        <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                        <div class="duration-badge">
                            <span class="duration-icon">&#x23f1;</span>
                            ${formatDuration(simulatedDuration2 * 60)}
                        </div>
                        <div class="date-badge">
                            ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                                day: '2-digit',
                                month: '2-digit',
                                year: '2-digit'
                            })}
                        </div>
                        <button></button>
                    </div>
                </div>
                `;
            }
        </script>
    </div>
    <div class="pagination" id="pagination">
        <button id="prev-btn" onclick="changePage('prev')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M15 18l-6-6 6-6"></path>
            </svg>
        </button>
        <span id="page-numbers"></span>
        <button id="next-btn" onclick="changePage('next')">
            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M9 18l6-6-6-6"></path>
            </svg>
        </button>
    </div>
</div>
    
    <div class="host-biography" style="grid-column: 1 / -1; background: rgba(0, 0, 0, 0.3); padding: 30px; border-radius: 15px; margin-top: 30px; border: 1px solid rgba(0, 255, 255, 0.2);">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
        <!-- Media query pour passer en une colonne sur mobile -->
        <style>
            @media (max-width: 768px) {
                .host-biography > div {
                    grid-template-columns: 1fr !important;
                }
            }
        </style>

      <div class="host-biography" style="grid-column: 1 / -1; padding: 30px; border-radius: 15px; margin-top: 30px;">
    <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 30px;">
      <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">Écoutez et téléchargez les podcasts L'intégrale Foot sur RMC</h2>

    <!-- Nouveaux boutons de réseaux sociaux -->
    <div style="display: flex; justify-content: center; align-items: center; gap: 20px; margin: 20px 0;">
        <a href="https://www.facebook.com/GGRMC/?locale=fr_FR" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M18.77 7.46H14.5v-1.9c0-.9.6-1.1 1-1.1h3V.5h-4.33C10.24.5 9.5 3.44 9.5 5.32v2.15h-3v4h3v12h5v-12h3.85l.42-4z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Facebook</span>
</a>

        <a href="https://www.instagram.com/lesggrmc/?hl=fr" target="_blank" style="position: relative; width: 50px; height: 50px; background: #E4405F; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#ffffff">
        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path>
    </svg>
    <span style="position: absolute; bottom: -30px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.8); color: #fff; padding: 5px 10px; border-radius: 5px; font-size: 12px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none;">Voir leur Instagram</span>
</a>

        <a href="https://rmc.bfmtv.com/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #00ffff; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; cursor: pointer;">
    <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 24 24" fill="#000000">
        <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"></path>
    </svg>
</a>
    </div>

    <style>
        /* Hover effects pour les boutons */
        .host-biography a:hover {
            transform: scale(1.1);
            box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
        }
        
        .host-biography a:hover span {
            opacity: 1;
        }

        /* Media queries pour le responsive */
        @media (max-width: 768px) {
            .host-biography div[style*="display: flex"] {
                flex-wrap: wrap;
                justify-content: center;
                gap: 15px;
            }
        }
    </style>

    <p style="color: #ffffff; line-height: 1.6; text-align: center; max-width: 1200px; margin: 0 auto;">
L'Intégrale Foot est une émission incontournable de RMC, offrant chaque jour une couverture complète de l'actualité du football. L'émission propose une analyse approfondie des matchs, des débats passionnés sur les performances des équipes, des interviews exclusives de joueurs et d'entraîneurs, ainsi que des discussions animées avec les auditeurs passionnés de football. Diffusée quotidiennement, l'émission réunit des consultants experts et des journalistes spécialisés qui décortiquent l'actualité du football national et international, offrant aux auditeurs une vision complète et experte du monde du ballon rond.
</p>
    
    <div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: 30px; padding: 20px;">
        <!-- Les 6 cartes existantes restent inchangées -->
        <!-- Carte 1 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M3 18v-6a9 9 0 0 1 18 0v6"></path>
                <path d="M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z"></path>
            </svg>
            <p style="color: #ffffff; margin: 0;">Écouter gratuitement tous les podcasts en streaming</p>
        </div>

        <!-- Carte 2 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
                <polyline points="7 10 12 15 17 10"></polyline>
                <line x1="12" y1="15" x2="12" y2="3"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Télécharger les épisodes pour une écoute hors-ligne</p>
        </div>

        <!-- Carte 3 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6"></path>
                <line x1="2" y1="20" x2="2" y2="20"></line>
            </svg>
            <p style="color: #ffffff; margin: 0;">Diffuser sur votre Chromecast ou appareil compatible</p>
        </div>

        <!-- Carte 4 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
            <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <circle cx="12" cy="12" r="10"></circle>
                <polygon points="10 8 16 12 10 16 10 8"></polygon>
            </svg>
            <p style="color: #ffffff; margin: 0;">Accéder à toutes les rediffusions des émissions précédentes</p>
        </div>

        <!-- Carte 5 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px;" onmouseover="this.style.transform='translateY(-5px)'" onmouseout="this.style.transform='translateY(0)'">
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path>
        <circle cx="9" cy="7" r="4"></circle>
        <path d="M23 21v-2a4 4 0 0 0-3-3.87"></path>
        <path d="M16 3.13a4 4 0 0 1 0 7.75"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Suivez toute l'actualité du football avec L'intégrale Foot, podcasts et rediffusions sur RMC</p>
</div>

        <!-- Carte 6 -->
        <div style="background: rgba(0, 0, 0, 0.4); padding: 20px; border-radius: 15px; border: 1px solid rgba(0, 255, 255, 0.3); transition: transform 0.3s ease; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: 15px; position: relative;" onmouseover="this.style.transform='translateY(-5px)'; document.getElementById('live-tooltip').style.opacity='1'" onmouseout="this.style.transform='translateY(0)'; document.getElementById('live-tooltip').style.opacity='0'" onclick="window.location.href='https://rmc.bfmtv.com/'">
    <div id="live-tooltip" style="position: absolute; top: -40px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: #fff; padding: 8px 15px; border-radius: 5px; font-size: 14px; white-space: nowrap; opacity: 0; transition: opacity 0.3s ease; pointer-events: none; border: 1px solid #00ffff; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">
        Cliquez pour écouter RMC en direct
    </div>
    <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" fill="none" stroke="#00ffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
        <path d="M4 12h1"></path>
        <path d="M9 12h1"></path>
        <path d="M14 12h1"></path>
        <path d="M19 12h1"></path>
        <rect x="2" y="8" width="20" height="12" rx="2"></rect>
        <path d="M6 8V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v4"></path>
        <circle cx="12" cy="14" r="4"></circle>
        <path d="M12 10v8"></path>
        <path d="M8 14h8"></path>
    </svg>
    <p style="color: #ffffff; margin: 0;">Ecoutez en direct les débats foot et analyses de matchs avec L'intégrale Foot sur RMC</p>
    <p style="color: #00ffff; margin-top: 10px; font-weight: bold; font-size: 0.8em;">
</p>
</div>
    </div>
</div>
        
        <!-- Histoire de l'émission -->
        <div style="padding: 20px; text-align: center;">
    <h2 style="color: #00ffff; margin-bottom: 20px; text-align: center;">L'Histoire de L'intégrale Foot</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        "L'intégrale Foot" est une émission emblématique de RMC Sport, qui propose chaque jour des débats passionnés et des analyses approfondies sur l'actualité du football français et international. Cette émission quotidienne rassemble des consultants experts, d'anciens joueurs et des auditeurs pour des échanges enflammés sur tous les sujets qui font l'actualité du ballon rond.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        L'émission offre une couverture complète de l'actualité footballistique, avec des débriefings de matchs, des analyses tactiques, et des discussions sur les transferts et les coulisses du football. Les consultants apportent leur expertise et leur expérience du terrain pour décrypter les moments forts du football.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        L'émission se distingue par sa liberté de ton, la qualité de ses analyses et sa capacité à faire vivre les grands moments du football aux auditeurs. Les débats sont toujours animés et constructifs, mêlant expertise technique et passion du football. C'est le rendez-vous incontournable des amateurs de football qui veulent tout savoir sur leur sport favori.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://images.bfmtv.com/ai5PGey8Tl65iUbqzT5suhK_sNk=/0x0:1920x1080/emission/Integrale-Foot-web-320_10.jpg" alt="Studio RMC - Les Grandes Gueules" style="width: 100%; max-width: 400px; border-radius: 15px; box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);">
    </div>
</div>

        <!-- Biographie de Laurent Ruquier -->
        <div style="display: flex; flex-direction: column; align-items: center; gap: 20px;">
    <div style="width: 200px; height: 200px; border-radius: 50%; overflow: hidden; border: 3px solid #00ffff;">
        <img decoding="async" src="https://radio-podcast.fr/files/category_pictures/podcast-Marina-Lorenzo.png" alt="Marina Lorenzo portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Marina Lorenzo - L'animatrice de L'intégrale Foot sur RMC</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Marina Lorenzo est une figure emblématique du journalisme sportif français et l'animatrice de l'émission "L'intégrale Foot" sur RMC. Journaliste passionnée de football, elle a su s'imposer comme une voix respectée dans le monde du sport médiatique grâce à son expertise et son professionnalisme.

            Réputée pour sa connaissance approfondie du football et son style dynamique d'animation, Marina Lorenzo apporte une touche unique à l'émission. Sa capacité à mener des débats passionnants tout en gardant une analyse pertinente du jeu en fait une animatrice particulièrement appréciée des auditeurs.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Dans "L'intégrale Foot", Marina Lorenzo excelle particulièrement dans l'art de faire ressortir les analyses tactiques et les débats constructifs autour de l'actualité du football. Sa maîtrise des sujets footballistiques et sa facilité à interagir avec les consultants et les auditeurs contribuent largement au succès de l'émission. Elle sait parfaitement orchestrer les discussions tout en apportant sa propre expertise, faisant de chaque émission un moment riche en analyses et en échanges passionnants sur le football.
        </p>
    </div>
</div>

        <!-- Sources (span across both columns) -->
        <div style="grid-column: 1 / -1; margin-top: 20px; padding: 15px; background: rgba(0, 0, 0, 0.2); border-radius: 10px; text-align: center;">
    <h3 style="color: #00ffff; margin-bottom: 10px; font-size: 1.2em;">Sources :</h3>
    <ul style="list-style: none; padding: 0; text-align: center; display: flex; justify-content: center; gap: 20px; flex-wrap: wrap;">
        <li>
            <a href="https://fr.wikipedia.org/wiki/Int%C3%A9grale_Foot" target="_blank" style="color: #00ffff; text-decoration: none; transition: all 0.3s; padding: 5px 10px; border-radius: 5px; display: inline-block; &amp;:hover { background: rgba(0, 255, 255, 0.1); transform: translateY(-2px); box-shadow: 0 0 15px rgba(0, 255, 255, 0.3); }">• Wikipédia - L'intégrale Foot</a>
        </li>
    </ul>
</div>
    </div>
</div>

</div>

    <div id="player-modal" class="modal">
    <div class="modal-content">
        <span class="close" onclick="closeModal()">×</span>
        <div id="player-content">
    <style>
        @media (max-width: 768px) {
            #player-content h2 {
                font-size: 20px;
            }
        }
    </style>
</div>
        <button id="chromecast-button" onclick="startChromecast()" style="width: 60px; height: 60px; border-radius: 50%; padding: 0; background-image: url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png'); background-size: 35px; background-position: center; background-repeat: no-repeat; font-size: 0;"></button>
    </div>
    <div id="player-content">
    <style>
        /* Styles existants */
        .modal-content {
            background-color: #1a1a1a;
            padding: 40px;
            border: 2px solid #00ffff;
            width: 90%;
            max-width: 500px;
            max-height: 90vh;
            border-radius: 20px;
            text-align: center;
            box-shadow: 0 0 40px rgba(0, 255, 255, 0.3);
            position: fixed; /* Changé de absolute à fixed */
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%) !important; /* Ajout de !important */
            overflow-y: auto;
            color: white;
        }

        /* Change la couleur du timing en noir */
        audio::-webkit-media-controls-time-display {
            color: #000000 !important;
        }

        /* Ajout de media queries pour le mobile */
        @media (max-width: 768px) {
            .modal-content {
                padding: 30px;
                width: 95%;
                margin: 0 auto;
                position: fixed;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%) !important;
            }
        }

        @media (max-height: 600px) {
            .modal-content {
                max-height: 85vh;
            }
        }
    </style>
</div>
    </div>

    <div id="fixed-player-bar" class="rtl-podcast-player" style="display: none;">
    <div class="fixed-player-content">
        <h3 id="fixed-player-title"></h3>
        <div class="audio-controls-container" style="display: flex; align-items: center; justify-content: center; gap: 20px; width: 100%; max-width: 800px; margin: 0 auto;">
            <audio id="fixed-player-audio" controls="">
                <source src="" type="audio/mpeg">
            </audio>
            <button onclick="startChromecast()" style="width: 40px; height: 40px; min-width: 40px; border-radius: 50%; padding: 0; background: #ffffff url('https://cdn-icons-png.flaticon.com/512/8819/8819177.png') center/25px no-repeat; border: 2px solid #00ffff; font-size: 0; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 0 10px rgba(0, 255, 255, 0.2);">Cast to Chromecast</button>
            <button id="close-fixed-player" onclick="closeFixedPlayer()" style="background: none; border: none; color: #00ffff; font-size: 24px; cursor: pointer; padding: 5px; min-width: 24px; display: flex; align-items: center; justify-content: center;">×</button>
        </div>
    </div>
</div>

    <script>
    (function RTLPodcastPlayer() {
        // Initialize cast api
        window.__onGCastApiAvailable = function(isAvailable) {
            if (!isAvailable) return;

            const initializeCastApi = function() {
                const sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.DEFAULT_MEDIA_RECEIVER_APP_ID);
                const apiConfig = new chrome.cast.ApiConfig(
                    sessionRequest,
                    sessionListener,
                    receiverListener
                );
                chrome.cast.initialize(apiConfig, onInitSuccess, onError);
            };

            const sessionListener = function(session) {
                console.log('Session listener', session);
            };

            const receiverListener = function(availability) {
                console.log('Receiver listener', availability);
            };

            const onInitSuccess = function() {
                console.log('Cast initialization success');
            };

            const onError = function(error) {
                console.error('Cast initialization error', error);
            };

            if (!chrome.cast || !chrome.cast.isAvailable) {
                setTimeout(initializeCastApi, 1000);
            } else {
                initializeCastApi();
            }
        };

        const rssUrl = "http://podcast.rmc.fr/channel245/RMCInfochannel245.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=250`;
        const episodesPerPage = 4;
        let currentPage = 1;
        let currentAudioUrl = '';
        let totalPages = 0;

        // Ajouter ces variables au début du script
        let currentEpisodeIndex = 0;
        let allEpisodes = [];
        let filteredEpisodes = [];

        fetch(proxyUrl)
            .then(response => response.json())
            .then(data => {
                if (data.status !== "ok") {
                    throw new Error("Erreur de chargement du flux RSS.");
                }
                allEpisodes = data.items;
                filteredEpisodes = [...allEpisodes];
                displayFeaturedEpisode(allEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(allEpisodes);
            })
            .catch(error => {
                document.getElementById("featured-episode").innerHTML = "<p>Impossible de charger le flux RSS. Veuillez réessayer plus tard.</p>";
            });

        const DEFAULT_IMAGE = "https://uploads.podcloud.fr/uploads/covers/3934/6b1f/ff16/a179/22e8/184e/e2a5/a817/4f85/3be9/39346b1fff16a17922e8184ee2a5a8174f853be9.jpg?version=1692997749&";

function truncateDescription(description, maxLength = 180) {
        const tempElement = document.createElement("div");
        tempElement.innerHTML = description;
        let plainText = tempElement.innerText || tempElement.textContent || '';
        if (plainText.length <= maxLength) return plainText.trim();
        return plainText.substring(0, maxLength).trim() + '...';
    }

    async function getAudioDuration(audioUrl) {
    return new Promise((resolve) => {
        const audio = new Audio(audioUrl);
        audio.addEventListener('loadedmetadata', () => {
            resolve(audio.duration);
        });
        audio.addEventListener('error', () => {
            resolve(3600); // Fallback à 1h en cas d'erreur
        });
    });
}

// 2. Remplacez votre fonction displayFeaturedEpisode existante par celle-ci
async function displayFeaturedEpisode(episode) {
    const featuredEpisode = document.getElementById("featured-episode");
    
    // Obtenir les durées réelles
    const duration1 = await getAudioDuration(allEpisodes[0].enclosure.link);
    const duration2 = await getAudioDuration(allEpisodes[1].enclosure.link);
    
    featuredEpisode.innerHTML = `
        <div class="features-episode" style="width: 100%; height: 100%;">
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[0].enclosure.link)}', '${sanitizeString(allEpisodes[0].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[0].title)}</h3>
                <img decoding="async" src="${allEpisodes[0].thumbnail || DEFAULT_IMAGE}" alt="Image de la dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[0].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration1)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[0].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
            
            <div class="episode-card" onclick="openModal('${sanitizeString(allEpisodes[1].enclosure.link)}', '${sanitizeString(allEpisodes[1].title)}')">
                <h3 style="color: #00ffff;">${sanitizeString(allEpisodes[1].title)}</h3>
                <img decoding="async" src="${allEpisodes[1].thumbnail || DEFAULT_IMAGE}" alt="Image de l'avant-dernière émission" style="width: 100%; max-width: 200px; border-radius: 10px; margin: 10px 0;">
                <div class="description" style="color: white;">${truncateDescription(allEpisodes[1].description)}</div>
                <div class="duration-badge">
                    <span class="duration-icon">&#x23f1;</span>
                    ${formatDuration(duration2)}
                </div>
                <div class="date-badge">
                    ${new Date(allEpisodes[1].pubDate).toLocaleDateString('fr-FR', {
                        day: '2-digit',
                        month: '2-digit',
                        year: '2-digit'
                    })}
                </div>
                <button></button>
            </div>
        </div>
    `;
}

    async function displayEpisodes(page, episodes) {
    const episodeGrid = document.getElementById("episode-grid");
    episodeGrid.innerHTML = "";
    const episodesWithoutFeatured = episodes.slice(2);
    const start = (page - 1) * episodesPerPage;  
    const end = start + episodesPerPage;
    
    // Charger les durées en parallèle
    const episodesToDisplay = episodesWithoutFeatured.slice(start, end);
    const durations = await Promise.all(
        episodesToDisplay.map(item => getAudioDuration(item.enclosure.link))
    );
    
    episodesToDisplay.forEach((item, index) => {
        episodeGrid.innerHTML += `
        <div class="episode">
            <h5 style="color: #00ffff;">${sanitizeString(item.title)}</h5>
            <img decoding="async" src="${item.thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 150px; border-radius: 10px; margin: 10px 0;">
            <div class="description" style="color: white;">${truncateDescription(item.description)}</div>
            <div class="duration-badge">
                <span class="duration-icon">&#x23f1;</span>
                ${formatDuration(durations[index])}
            </div>
            <div class="date-badge">
                ${new Date(item.pubDate).toLocaleDateString('fr-FR', {
                    day: '2-digit',
                    month: '2-digit',
                    year: '2-digit'
                })}
            </div>
            <button onclick="openModal('${sanitizeString(item.enclosure.link)}', '${sanitizeString(item.title)}')"></button>
        </div>
        `;
    });
    updatePaginationButtons();
}

    function setupPagination(episodes) {
        totalPages = Math.ceil((episodes.length - 2) / episodesPerPage);
        const pageNumbers = document.getElementById("page-numbers");
        pageNumbers.innerHTML = "";

        let start = currentPage;
        if (currentPage === totalPages) {
            start = totalPages - 2;
        } else if (currentPage === 1) {
            start = 1;
        } else {
            start = currentPage - 1;
        }

        start = Math.max(1, start);
        
        for (let i = start; i < start + 3 && i <= totalPages; i++) {
            const button = document.createElement("button");
            button.textContent = i;
            button.addEventListener("click", () => {
                currentPage = i;
                displayEpisodes(currentPage, episodes);
                setupPagination(episodes);
            });
            pageNumbers.appendChild(button);
        }

        window.changePage = function(direction) {
            if (direction === 'prev' && currentPage > 1) {
                currentPage--;
            } else if (direction === 'next' && currentPage < totalPages) {
                currentPage++;
            }
            displayEpisodes(currentPage, filteredEpisodes);
            setupPagination(episodes);
            updatePaginationButtons();
        }

        updatePaginationButtons();
    }

    function updatePaginationButtons() {
        const prevBtn = document.getElementById('prev-btn');
        const nextBtn = document.getElementById('next-btn');
        
        prevBtn.disabled = currentPage === 1;
        nextBtn.disabled = currentPage === totalPages;
        
        prevBtn.style.opacity = currentPage === 1 ? '0.5' : '1';
        nextBtn.style.opacity = currentPage === totalPages ? '0.5' : '1';
        
        const pageButtons = document.querySelectorAll('#page-numbers button');
        pageButtons.forEach((button, index) => {
            if (index + 1 === currentPage) {
                button.style.backgroundColor = '#00ffff';
                button.style.color = '#000';
            } else {
                button.style.backgroundColor = '#1a1a1a';
                button.style.color = '#00ffff';
            }
        });
    }

    function sanitizeString(str) {
        return str.replace(/['"\\<>]/g, "");
    }

    window.openModal = function(audioUrl, title) {
        const playerContent = document.getElementById("player-content");
        const currentEpisode = allEpisodes.find(ep => ep.enclosure.link === audioUrl);
        const thumbnail = currentEpisode?.thumbnail;
        
        playerContent.innerHTML = `
            <h2>${title}</h2>
            <img decoding="async" src="${thumbnail || DEFAULT_IMAGE}" alt="Image de l'épisode" style="width: 100%; max-width: 300px; margin: 15px 0; border-radius: 10px;">
            <audio controls style="width: 100%; margin-top: 10px;" id="modal-audio">
                <source src="${audioUrl}" type="audio/mpeg">
                Votre navigateur ne supporte pas la lecture audio.
            </audio>
        `;
        
        currentAudioUrl = audioUrl;
        document.getElementById("player-modal").style.display = "block";
        window.currentEpisodeTitle = title;
        
        const modalAudio = document.getElementById('modal-audio');
        modalAudio.addEventListener('play', () => {
            window.isPlaying = true;
        });
        modalAudio.addEventListener('pause', () => {
            window.isPlaying = false;
        });
    }

    window.closeModal = function() {
        const modalAudio = document.getElementById('modal-audio');
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        const fixedPlayerTitle = document.getElementById('fixed-player-title');
        
        if (window.isPlaying) {
            modalAudio.pause();
            fixedPlayerBar.style.display = 'block';
            fixedPlayerTitle.textContent = window.currentEpisodeTitle;
            fixedPlayerAudio.src = currentAudioUrl;
            fixedPlayerAudio.currentTime = modalAudio.currentTime;
            fixedPlayerAudio.play();
        }
        
        document.getElementById("player-modal").style.display = "none";
    }

    window.closeFixedPlayer = function() {
        const fixedPlayerBar = document.getElementById('fixed-player-bar');
        const fixedPlayerAudio = document.getElementById('fixed-player-audio');
        fixedPlayerAudio.pause();
        fixedPlayerBar.style.display = 'none';
    }

    window.startChromecast = function() {
        if (!chrome.cast || !chrome.cast.isAvailable) {
            console.log('Cast API not available');
            return;
        }

        chrome.cast.requestSession(
            function(session) {
                if (currentAudioUrl) {
                    const mediaInfo = new chrome.cast.media.MediaInfo(currentAudioUrl, 'audio/mpeg');
                    mediaInfo.metadata = new chrome.cast.media.GenericMediaMetadata();
                    mediaInfo.metadata.title = document.querySelector('#player-content h2').textContent;

                    const request = new chrome.cast.media.LoadRequest(mediaInfo);
                    session.loadMedia(request).then(
                        () => console.log('Lecture Chromecast démarrée'),
                        errorCode => console.error('Erreur Chromecast: ' + errorCode)
                    );
                }
            },
            function(error) {
                console.error('Erreur lors de la création de la session:', error);
            }
        );
    }

        window.shareOnX = function() {
            const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(text)}&url=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnWhatsapp = function() {
            const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(url)}`, '_blank');
        };

        window.shareOnLinkedIn = function() {
          const text = "Écoutez les podcasts : L'intégrale Foot sur RMC - Écoutez en rediffusion tous les podcasts RMC avec RadiostreamR !";
            const url = window.location.href;
            window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${encodeURIComponent(url)}`, '_blank');
        };

        window.filterAndDisplayEpisodes = function() {
            const searchTerm = document.getElementById('podcast-search').value.toLowerCase();
            const filterValue = document.getElementById('podcast-filter').value;
            
            // Filter episodes based on search term
            filteredEpisodes = allEpisodes.filter(episode => 
                episode.title.toLowerCase().includes(searchTerm) || 
                episode.description.toLowerCase().includes(searchTerm)
            );
            
            // Sort episodes based on filter value
            if (filterValue === 'oldest') {
                filteredEpisodes.sort((a, b) => new Date(a.pubDate) - new Date(b.pubDate));
            } else {
                filteredEpisodes.sort((a, b) => new Date(b.pubDate) - new Date(a.pubDate));
            }
            
            // Reset pagination to first page when filtering
            currentPage = 1;
            
            // Update display
            if (filteredEpisodes.length > 0) {
                displayFeaturedEpisode(filteredEpisodes[0]);
                displayEpisodes(currentPage, filteredEpisodes);
                setupPagination(filteredEpisodes);
            } else {
                // Handle no results
                document.getElementById('episode-grid').innerHTML = '<p style="color: #fff; text-align: center; grid-column: 1/-1;">Aucun résultat trouvé</p>';
                document.getElementById('page-numbers').innerHTML = '';
            }
        }
    })();
</script>
</div>
</div></div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-551c4bf e-con-full e-flex e-con e-parent" data-id="551c4bf" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9371460 elementor-widget elementor-widget-shortcode" data-id="9371460" data-element_type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"></div>
						</div>
				</div>
				</div>
				</div>
		<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-integrale-foot-rmc/">🗣️ Podcast et replay &#8211; Intégrale Foot &#8211; RMC</a> est apparu en premier sur <a href="https://radiostreamr.com/radio-france">RadioStreamR - Ecoutez la Radio française en ligne en direct</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://radiostreamr.com/radio-france/podcast-integrale-foot-rmc/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
