

<?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>RadioStreamR &#8211; Ecoutez la Radio française en ligne en direct</title>
	<atom:link href="https://radiostreamr.com/radio-france/feed/" rel="self" type="application/rss+xml" />
	<link>https://radiostreamr.com/radio-france/</link>
	<description>Écoutez les meilleures stations de radio françaises en direct. Musique, actualités, et émissions locales - disponibles partout, à tout moment.</description>
	<lastBuildDate>Fri, 20 Dec 2024 11:16:27 +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>RadioStreamR &#8211; Ecoutez la Radio française en ligne en direct</title>
	<link>https://radiostreamr.com/radio-france/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Crime Story &#8211; Le Parisien &#8211; Podcast et Replay des sujets d&#8217;actualité</title>
		<link>https://radiostreamr.com/radio-france/podcast-crime-story-parisien/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-crime-story-parisien/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 11:16:27 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1893</guid>

					<description><![CDATA[<p>Crime Story &#8211; Le podcast quotidien d&#8217;actualité du Parisien Plus récentsPlus anciens Publicité Crime Story : Le podcast quotidien de faits divers du Parisien Voir leur Facebook Crime Story est le podcast quotidien de faits divers du Parisien. Les journalistes de la rédaction vous plongent au cœur des enquêtes criminelles et des affaires judiciaires qui [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-crime-story-parisien/">Crime Story &#8211; Le Parisien &#8211; Podcast et Replay des sujets d&rsquo;actualité</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="1893" class="elementor elementor-1893" 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">
					<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;">
Crime Story  - Le podcast quotidien d'actualité du Parisien<img decoding="async" src="https://www.mediaspecs.fr/wp-content/uploads/2022/11/Le-Parisien-2023.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;">Crime Story : Le podcast quotidien de faits divers du Parisien</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/leparisien/?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/leparisien/" 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>
</a>

        <a href="https://www.leparisien.fr/" 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;">
Crime Story est le podcast quotidien de faits divers du Parisien. Les journalistes de la rédaction vous plongent au cœur des enquêtes criminelles et des affaires judiciaires qui ont marqué l'actualité. Chaque jour, du lundi au vendredi, découvrez en 20 minutes le récit détaillé d'une affaire, enrichi par des témoignages exclusifs, des archives sonores et l'expertise des reporters spécialisés du Parisien.

Le podcast vous fait vivre les grandes affaires criminelles de l'intérieur, depuis les premières constatations jusqu'au procès, en passant par l'enquête policière. Les journalistes vous révèlent les coulisses de ces dossiers sensibles, décryptent les indices, analysent les mobiles et retracent le parcours des protagonistes. Des cold cases aux féminicides, des règlements de compte aux escroqueries spectaculaires, Crime Story vous propose une immersion captivante dans les arcanes de la justice et de la criminalité.

Fort de son succès, Crime Story s'est imposé comme une référence du podcast true crime en France, fidélisant chaque jour des milliers d'auditeurs passionnés par les faits divers. La force de ce format réside dans sa capacité à allier rigueur journalistique et narration immersive, permettant de comprendre la complexité des affaires criminelles tout en gardant une approche respectueuse des victimes et de leurs proches. Un rendez-vous quotidien incontournable pour tous les passionnés d'enquêtes criminelles et de justice.
</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;">Plongez dans les affaires criminelles les plus marquantes avec Crime Story, le podcast quotidien du Parisien</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)'" 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="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>
    </svg>
    <p style="color: #ffffff; margin: 0; text-align: center;">Découvrez Crime Story du Parisien, le podcast quotidien de faits divers mis à jour en direct sur RadiostreamR</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 Crime Story : Le podcast de faits divers du Parisien</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Lancé en 2023 par Le Parisien, Crime Story s'est rapidement imposé comme l'un des podcasts de faits divers les plus captivants en France. À travers des épisodes quotidiens de 20 minutes environ, du lundi au vendredi, ce format innovant plonge les auditeurs au cœur des affaires criminelles les plus marquantes, mêlant enquêtes approfondies, témoignages exclusifs et archives sonores.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de Crime Story réside dans sa capacité unique à décrypter les affaires criminelles et judiciaires grâce à l'expertise des journalistes du Parisien. Chaque épisode permet aux auditeurs de comprendre en profondeur une affaire, depuis les premières constatations jusqu'au procès, en passant par l'enquête policière, offrant une immersion totale dans les coulisses des grandes affaires criminelles.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de Crime Story illustre parfaitement l'évolution du traitement médiatique des faits divers : en proposant un format audio quotidien accessible et rigoureux, le podcast répond aux attentes d'un public passionné par les enquêtes criminelles, tout en maintenant une approche journalistique respectueuse des victimes et de leurs proches. Avec des dizaines de milliers d'auditeurs quotidiens, Crime Story est devenu une référence incontournable du podcast true crime en France, incarnant le savoir-faire et l'expertise des journalistes du Parisien dans un format moderne et immersif.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://cdn-images-2.listennotes.com/images/podcasts/UxD9fj76dT2/" alt="Studio d'enregistrement du podcast Crime Story" 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://yt3.googleusercontent.com/ytc/AIdro_mYp64xYSKQMFAqhwydduWdv_8-vIDvJn0t1bZaoQ9ooZg=s900-c-k-c0x00ffffff-no-rj" alt="Logo Le Monde" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Le Parisien : L'actualité au cœur de la capitale depuis 1944</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Fondé en 1944, Le Parisien (anciennement Le Parisien libéré) s'est imposé comme l'un des quotidiens majeurs de la presse française. Né dans le contexte de la Libération de Paris, le journal a su évoluer pour devenir une référence de l'information quotidienne, particulièrement appréciée pour sa proximité avec les lecteurs et sa couverture approfondie de l'actualité locale et nationale.

            Le journal se distingue par son style direct, accessible et sa capacité à traiter aussi bien les enjeux locaux que les grandes questions nationales et internationales. Cette approche éditoriale unique en fait l'un des quotidiens les plus lus en Île-de-France et en France.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Au fil des années, Le Parisien a su se réinventer et s'adapter aux nouvelles technologies. Le lancement de son site web en 1996 marque le début d'une transformation numérique réussie. Aujourd'hui, le journal propose une offre multimédia complète : édition papier, site web, applications mobiles et podcasts innovants comme Code Source.

            Code Source, lancé en septembre 2019, illustre parfaitement cette volonté d'innovation. Ce podcast quotidien d'actualité permet aux journalistes du Parisien de déployer leur expertise dans un format audio immersif et captivant, touchant ainsi un nouveau public tout en maintenant l'exigence journalistique qui caractérise le journal.

            La rédaction du Parisien, riche de plusieurs centaines de journalistes, continue de porter les valeurs qui ont fait son succès : proximité avec les lecteurs, rigueur journalistique et innovation constante. Que ce soit à travers ses enquêtes approfondies, ses reportages de terrain ou ses formats numériques, Le Parisien poursuit sa mission : informer, éclairer et accompagner ses lecteurs dans la compréhension du monde contemporain.
        </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/Le_Parisien" 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 - Le Parisien</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.acast.com/public/shows/638f63106c074700101c2e1f";
        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://is1-ssl.mzstatic.com/image/thumb/Podcasts122/v4/c8/b7/68/c8b76884-ad03-d586-08ee-15464e930baa/mza_5176659767715515846.jpeg/300x300bb.webp";

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 : Code Source 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 : Code Source 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 : Code Source 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 : Code Source 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-ff035ad e-con-full e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-crime-story-parisien/">Crime Story &#8211; Le Parisien &#8211; Podcast et Replay des sujets d&rsquo;actualité</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-crime-story-parisien/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Code Source &#8211; Le Parisien &#8211; Podcast et Replay des sujets d&#8217;actualité</title>
		<link>https://radiostreamr.com/radio-france/podcast-code-source-parisien/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-code-source-parisien/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 10:19:50 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1874</guid>

					<description><![CDATA[<p>Code Source &#8211; Le podcast quotidien d&#8217;actualité du Parisien Plus récentsPlus anciens Publicité Code Source : Le podcast quotidien d&#8217;actualité du Parisien Voir leur Facebook Code Source est le podcast quotidien d&#8217;actualité du Parisien. La rédaction du journal vous invite dans ses coulisses et vous fait découvrir le dessous des grandes histoires de l&#8217;actualité. Chaque [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-code-source-parisien/">Code Source &#8211; Le Parisien &#8211; Podcast et Replay des sujets d&rsquo;actualité</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="1874" class="elementor elementor-1874" 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">
					<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;">
Code Source - Le podcast quotidien d'actualité du Parisien<img decoding="async" src="https://www.mediaspecs.fr/wp-content/uploads/2022/11/Le-Parisien-2023.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;">Code Source : Le podcast quotidien d'actualité du Parisien</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/leparisien/?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/leparisien/" 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>
</a>

        <a href="https://www.leparisien.fr/" 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;">
Code Source est le podcast quotidien d'actualité du Parisien. La rédaction du journal vous invite dans ses coulisses et vous fait découvrir le dessous des grandes histoires de l'actualité. Chaque jour, du lundi au vendredi, les journalistes du Parisien partagent avec vous leur expertise et leur savoir-faire pour décrypter un événement, une tendance ou un fait marquant de l'actualité. En 20 minutes environ, Code Source vous propose un reportage enrichi d'extraits d'archives et de témoignages pour comprendre en profondeur les enjeux d'un sujet. Le podcast aborde aussi bien l'actualité politique, que les faits divers, les phénomènes de société ou encore les grands événements sportifs et culturels. Avec plus de 900 épisodes à son actif, Code Source s'est imposé comme une référence du podcast d'actualité en France, réunissant chaque jour des dizaines de milliers d'auditeurs fidèles. La force de Code Source réside dans sa capacité à raconter l'actualité de manière vivante et accessible, en s'appuyant sur l'expertise des journalistes du Parisien et leur connaissance approfondie des sujets traités.
</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 l'actualité décryptée par les journalistes du Parisien dans Code Source, votre podcast quotidien</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)'" 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="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>
    </svg>
    <p style="color: #ffffff; margin: 0; text-align: center;">Podcasts Code Source du journal Le Parisien mis à jour en direct dès leur diffusion sur RadiostreamR</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 Code Source : Le podcast d'actualité quotidien du Parisien</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Lancé en septembre 2019 par Le Parisien, Code Source s'est rapidement imposé comme l'un des podcasts d'actualité les plus écoutés en France. Ce format innovant propose chaque jour, du lundi au vendredi, une plongée immersive au cœur d'un fait d'actualité en vingt minutes environ, mêlant expertises journalistiques, témoignages exclusifs et archives sonores.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de Code Source réside dans sa capacité unique à raconter l'actualité à travers des histoires captivantes, portées par la voix des journalistes du Parisien. Chaque épisode permet aux auditeurs de comprendre en profondeur un événement marquant, qu'il soit politique, sociétal, sportif ou culturel, grâce à un travail minutieux d'investigation et de mise en récit.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de Code Source illustre parfaitement l'évolution des modes de consommation de l'information : en proposant un format audio quotidien accessible et captivant, le podcast répond aux attentes d'un public en quête d'une information approfondie et contextualisée. Avec plus de 900 épisodes produits et des dizaines de milliers d'auditeurs quotidiens, Code Source est devenu une référence incontournable du podcast d'actualité en France, incarnant le savoir-faire et l'expertise des journalistes du Parisien dans un format résolument moderne.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://medias.lesechosleparisien.fr/wp-content/uploads/2019/06/codesource.jpg" alt="Studio d'enregistrement du podcast L'Heure du Monde" 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://yt3.googleusercontent.com/ytc/AIdro_mYp64xYSKQMFAqhwydduWdv_8-vIDvJn0t1bZaoQ9ooZg=s900-c-k-c0x00ffffff-no-rj" alt="Logo Le Monde" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Le Parisien : L'actualité au cœur de la capitale depuis 1944</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Fondé en 1944, Le Parisien (anciennement Le Parisien libéré) s'est imposé comme l'un des quotidiens majeurs de la presse française. Né dans le contexte de la Libération de Paris, le journal a su évoluer pour devenir une référence de l'information quotidienne, particulièrement appréciée pour sa proximité avec les lecteurs et sa couverture approfondie de l'actualité locale et nationale.

            Le journal se distingue par son style direct, accessible et sa capacité à traiter aussi bien les enjeux locaux que les grandes questions nationales et internationales. Cette approche éditoriale unique en fait l'un des quotidiens les plus lus en Île-de-France et en France.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Au fil des années, Le Parisien a su se réinventer et s'adapter aux nouvelles technologies. Le lancement de son site web en 1996 marque le début d'une transformation numérique réussie. Aujourd'hui, le journal propose une offre multimédia complète : édition papier, site web, applications mobiles et podcasts innovants comme Code Source.

            Code Source, lancé en septembre 2019, illustre parfaitement cette volonté d'innovation. Ce podcast quotidien d'actualité permet aux journalistes du Parisien de déployer leur expertise dans un format audio immersif et captivant, touchant ainsi un nouveau public tout en maintenant l'exigence journalistique qui caractérise le journal.

            La rédaction du Parisien, riche de plusieurs centaines de journalistes, continue de porter les valeurs qui ont fait son succès : proximité avec les lecteurs, rigueur journalistique et innovation constante. Que ce soit à travers ses enquêtes approfondies, ses reportages de terrain ou ses formats numériques, Le Parisien poursuit sa mission : informer, éclairer et accompagner ses lecteurs dans la compréhension du monde contemporain.
        </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/Le_Parisien" 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 - Le Parisien</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.acast.com/public/shows/9f905938-baf3-4214-bd26-65999b4899d7";
        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://i.scdn.co/image/ab6765630000ba8a4938adbcd947ddd80f2b109e";

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 : Code Source 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 : Code Source 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 : Code Source 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 : Code Source 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-ff035ad e-con-full e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-code-source-parisien/">Code Source &#8211; Le Parisien &#8211; Podcast et Replay des sujets d&rsquo;actualité</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-code-source-parisien/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️L&#8217;Heure du Monde  &#8211; Podcast et Replay sur des sujets d&#8217;actualité</title>
		<link>https://radiostreamr.com/radio-france/podcast-lheure-du-monde/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-lheure-du-monde/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 11:12:57 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1867</guid>

					<description><![CDATA[<p>L&#8217;Heure du Monde &#8211; Les podcasts du journal Le Monde qui vous racontent l&#8217;actualité Plus récentsPlus anciens Publicité L&#8217;Heure du Monde : Le podcast quotidien d&#8217;actualité du Monde Voir leur Facebook L&#8217;Heure du Monde est le podcast quotidien d&#8217;actualité du journal Le Monde. Chaque jour, du lundi au vendredi, les journalistes de la rédaction décryptent [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-lheure-du-monde/">🗣️L&rsquo;Heure du Monde  &#8211; Podcast et Replay sur des sujets d&rsquo;actualité</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="1867" class="elementor elementor-1867" 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">
					<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;">
L'Heure du Monde - Les podcasts du journal Le Monde qui vous racontent l'actualité<img decoding="async" src="https://www.radiofrance.fr/s3/cruiser-production/2022/03/9dd69ada-4eb0-4b1f-b629-cec4ef57353a/250x250_logo-le-monde.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;">L'Heure du Monde : Le podcast quotidien d'actualité du Monde</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/lemonde.fr/?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/storiavoce/" 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>
</a>

        <a href="https://www.lemonde.fr/" 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'Heure du Monde est le podcast quotidien d'actualité du journal Le Monde. Chaque jour, du lundi au vendredi, les journalistes de la rédaction décryptent un fait d'actualité, un sujet qui fait débat ou un phénomène de société. En 20 minutes, ils vous apportent le regard unique du Monde sur l'actualité, avec des reportages sur le terrain, des entretiens avec des experts et des analyses approfondies. Le podcast propose une approche pédagogique et accessible des sujets complexes qui font l'actualité, qu'ils soient politiques, économiques, sociaux ou culturels. Avec des épisodes courts mais denses en information, L'Heure du Monde s'est imposé comme une référence dans le paysage des podcasts d'actualité en France, offrant aux auditeurs une pause quotidienne pour mieux comprendre les enjeux de notre époque. La qualité éditoriale, la rigueur journalistique et l'expertise de la rédaction du Monde sont au cœur de chaque épisode, permettant aux auditeurs de prendre du recul sur l'actualité et d'en saisir toutes les nuances.
</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 l'actualité décryptée par les journalistes du Monde dans L'Heure du Monde</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)'" 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="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>
    </svg>
    <p style="color: #ffffff; margin: 0; text-align: center;">Podcasts L'Heure du Monde mis à jour en direct dès leur diffusion sur RadiostreamR</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'Heure du Monde : Le podcast d'actualité quotidien du journal Le Monde</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Lancé en mars 2021 par Le Monde, L'Heure du Monde s'est rapidement imposé comme l'un des podcasts d'actualité les plus écoutés en France. Ce format innovant propose chaque jour, du lundi au vendredi, un décryptage approfondi d'un sujet d'actualité en une vingtaine de minutes, mêlant reportages sur le terrain, interviews d'experts et analyses des journalistes du Monde.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de L'Heure du Monde réside dans sa capacité à traiter l'actualité avec la rigueur journalistique qui fait la réputation du journal Le Monde, tout en rendant accessibles des sujets complexes. Chaque épisode permet aux auditeurs de comprendre en profondeur un fait d'actualité, qu'il soit politique, économique, social, culturel ou international, grâce à l'expertise des journalistes de la rédaction.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de L'Heure du Monde témoigne de l'évolution des modes de consommation de l'information : en proposant un format audio quotidien, le podcast répond au besoin d'une information de qualité, accessible partout et à tout moment. Chaque jour, des dizaines de milliers d'auditeurs font confiance à L'Heure du Monde pour mieux comprendre les enjeux de notre époque, avec le regard unique et l'expertise reconnue des journalistes du Monde.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://img.lemde.fr/2021/03/23/590/0/3000/1498/1440/720/60/0/3e006b9_1616516956189-vignette-podcast-lheuredumonde-sansspotify.png" alt="Studio d'enregistrement du podcast L'Heure du Monde" 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.radiofrance.fr/s3/cruiser-production/2022/03/9dd69ada-4eb0-4b1f-b629-cec4ef57353a/250x250_logo-le-monde.jpg" alt="Logo Le Monde" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Le Monde : Plus d'un siècle d'excellence journalistique</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Fondé le 19 décembre 1944 par Hubert Beuve-Méry, Le Monde s'est imposé comme une référence incontournable du journalisme français et international. Né dans les derniers mois de la Seconde Guerre mondiale, le journal a rapidement développé une réputation d'excellence et d'indépendance éditoriale qui perdure jusqu'à aujourd'hui.

            La rigueur journalistique et l'analyse approfondie des événements sont devenues la marque de fabrique du Monde, lui permettant de se distinguer dans le paysage médiatique français et d'acquérir une renommée internationale.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Au fil des décennies, Le Monde a su s'adapter aux évolutions du secteur médiatique tout en conservant ses valeurs fondamentales. Le lancement du site lemonde.fr en 1995 marque le début d'une transformation numérique réussie. Aujourd'hui, Le Monde est devenu un groupe média moderne qui propose une information de qualité sur tous les supports : papier, web, applications mobiles et podcasts.

            L'Heure du Monde, lancé en mars 2021, s'inscrit dans cette tradition d'excellence et d'innovation. Ce podcast quotidien permet aux journalistes du Monde de déployer leur expertise dans un format audio accessible et approfondi, touchant ainsi un nouveau public tout en maintenant les standards élevés qui ont fait la réputation du journal.

            La rédaction du Monde, forte de plus de 500 journalistes, continue d'incarner les valeurs qui ont fait son succès : indépendance, rigueur analytique, et engagement pour une information de qualité. Que ce soit à travers ses enquêtes approfondies, ses analyses économiques, ses reportages internationaux ou ses podcasts, Le Monde reste fidèle à sa mission : éclairer les enjeux contemporains et participer au débat démocratique.
        </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/Le_Monde" 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 - Le Monde</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.360.audion.fm/HZrgBsvnXo8yqsqsP7bI7";
        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://img.lemde.fr/2021/03/23/0/0/3000/3000/664/0/75/0/3e006b9_1616516956189-vignette-podcast-lheuredumonde-sansspotify.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 : L'Heure du Monde 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'Heure du Monde 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'Heure du Monde 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'Heure du Monde 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-ff035ad e-con-full e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-lheure-du-monde/">🗣️L&rsquo;Heure du Monde  &#8211; Podcast et Replay sur des sujets d&rsquo;actualité</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-lheure-du-monde/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️Storiavoce &#8211; Podcast et Replay pour apprendre l&#8217;histoire</title>
		<link>https://radiostreamr.com/radio-france/podcast-storiavoce/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-storiavoce/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 16 Dec 2024 10:05:35 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1857</guid>

					<description><![CDATA[<p>Storiavoce, le podcast du Monde qui parle de l&#8217;Histoire &#8211; Écoutez en Replay toutes les émissions Plus récentsPlus anciens Publicité L&#8217;Histoire de Storiavoce, le podcast historique de référence Voir leur Facebook Storiavoce représente une référence incontournable dans le paysage des podcasts historiques français. Cette émission passionnante propose des analyses approfondies et des discussions éclairantes sur [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-storiavoce/">🗣️Storiavoce &#8211; Podcast et Replay pour apprendre l&rsquo;histoire</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="1857" class="elementor elementor-1857" 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">
					<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;">
Storiavoce, le podcast du Monde qui parle de l'Histoire - Écoutez en Replay toutes les émissions<img decoding="async" src="https://www.radiofrance.fr/s3/cruiser-production/2022/03/9dd69ada-4eb0-4b1f-b629-cec4ef57353a/250x250_logo-le-monde.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;">L'Histoire de Storiavoce, le podcast historique de référence</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/storiavoce/?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/storiavoce/" 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>
</a>

        <a href="https://storiavoce.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;">
Storiavoce représente une référence incontournable dans le paysage des podcasts historiques français. Cette émission passionnante propose des analyses approfondies et des discussions éclairantes sur les grands moments de l'Histoire, animées par des historiens et experts reconnus. Chaque épisode offre un voyage temporel captivant, explorant aussi bien les événements majeurs que les aspects méconnus de notre passé, le tout dans un format accessible et engageant. Les auditeurs peuvent découvrir ou redécouvrir l'Histoire à travers des angles originaux et des perspectives nouvelles, enrichis par les interventions d'universitaires et de spécialistes qui partagent leur expertise avec passion. Que vous soyez féru d'Histoire ou simple curieux, Storiavoce vous permet d'approfondir vos connaissances historiques tout en profitant d'une production audio de grande qualité. L'émission se distingue par sa rigueur académique et sa capacité à rendre accessible des sujets historiques complexes, faisant de chaque épisode une expérience d'apprentissage enrichissante.
</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 l'actualité historique avec Storiavoce - Le podcast qui donne du sens à l'Histoire</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)'" 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="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>
    </svg>
    <p style="color: #ffffff; margin: 0; text-align: center;">Podcasts Storiavoce mis à jour en direct sur RadiostreamR - Des émissions historiques captivantes</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 Storiavoce : La webradio qui révolutionne la diffusion du savoir historique</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Fondée le 6 septembre 2016 par l'historien et journaliste Christophe Dickès, Storiavoce s'est imposée comme la première webradio francophone entièrement dédiée à l'histoire, à la recherche et à son enseignement. Cette initiative novatrice répond à un besoin croissant de démocratisation du savoir historique, tout en maintenant un niveau d'excellence académique.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de Storiavoce réside dans sa capacité à créer un pont entre le monde universitaire et le grand public. Les émissions, d'une durée de 20 à 45 minutes, couvrent un large spectre historique : de l'Antiquité à l'époque contemporaine, en passant par les périodes médiévale et moderne. Les auditeurs peuvent explorer l'histoire de l'Art, le mouvement des idées politiques, et découvrir des biographies passionnantes de grandes figures historiques.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de Storiavoce est indéniable : avec plus de 500 podcasts publiés, la plateforme a atteint des chiffres impressionnants, comptabilisant plus d'un million d'écoutes sur SoundCloud et 1,8 million sur YouTube. Son public, majoritairement jeune (28% ont entre 18 et 24 ans, et deux tiers moins de 35 ans), témoigne de l'intérêt croissant des nouvelles générations pour une histoire accessible mais rigoureuse, présentée par des experts reconnus et des universitaires de renom.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://storiavoce.com/wp-content/uploads/2017/08/VERSION-WEB.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://2018.amecglobalsummit.org/wp-content/uploads/2018/03/Christophe-Dickes.jpg" alt="Christophe Dickès portrait photo" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Christophe Dickès - Historien, Journaliste et Fondateur de Storiavoce</h2>
        <p style="color: #ffffff; line-height: 1.8;">
            Né le 27 juillet 1972 à Boulogne-sur-Mer, Christophe Dickès s'est imposé comme une figure majeure dans le paysage historique et journalistique français. Spécialiste reconnu des relations internationales, du catholicisme contemporain et du Saint-Siège, son parcours académique et professionnel témoigne d'une expertise pointue et d'un engagement constant dans la diffusion du savoir historique.

            Sa formation académique atteint son apogée en 2004 avec l'obtention d'un doctorat sous la direction de Georges-Henri Soutou, consacré à Jacques Bainville et son rôle de chroniqueur de politique étrangère (1907-1939). Cette expertise académique devient le socle de sa future carrière.
        </p>
        <p style="color: #ffffff; line-height: 1.8; margin-top: 15px;">
            Son parcours professionnel débute dans le journalisme à Radio Classique, où il travaille à la rédaction économique. En 2004, il rejoint Canal Académie, l'une des premières web-radios françaises, où il prend la responsabilité des émissions "Un jour dans l'Histoire" et "Les cinq minutes de Clio". Cette expérience enrichissante le conduit en 2010 à diriger un ambitieux projet pour les éditions Robert Laffont : le "Dictionnaire du Vatican et du Saint-Siège".

            Le point culminant de sa carrière arrive en septembre 2016 avec la création de Storiavoce, une web-radio associative entièrement dédiée à l'histoire. Cette initiative novatrice, destinée tant au monde universitaire qu'au grand public cultivé, connaît un succès retentissant, conduisant à son rachat en 2022 par le Groupe Malesherbes (Groupe Le Monde) et son association avec le magazine Histoire et Civilisations. Son expertise est régulièrement sollicitée par de grands médias comme LCI, France Info, CNews, et il contribue à de nombreuses publications prestigieuses.

            En 2022, l'Académie française reconnaît son travail en lui décernant le prix François Millepierres pour son ouvrage "Saint Pierre. Le mystère et l'évidence", couronnant ainsi une carrière dédiée à la transmission de l'histoire.
        </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/Storiavoce" 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 - Storiavoce</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.acast.com/public/shows/62c823b8f93e7c0012e9b303";
        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://yt3.googleusercontent.com/T5kQI4qovehuBd7rzEzqCdB3vv_OSRdgglWeovjNNDItIdC-ZHVOqS_EQeRa8vQa5PtODgv_vQ=s900-c-k-c0x00ffffff-no-rj";

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 : Storiavoce 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 : Storiavoce 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 : Storiavoce 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 : Storiavoce 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-ff035ad e-con-full e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-storiavoce/">🗣️Storiavoce &#8211; Podcast et Replay pour apprendre l&rsquo;histoire</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-storiavoce/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et Replay de La vérité sur&#8230; &#8211; Brut</title>
		<link>https://radiostreamr.com/radio-france/podcast-la-verite-sur/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-la-verite-sur/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 09 Dec 2024 13:54:15 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Slate.fr]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1832</guid>

					<description><![CDATA[<p>Podcast et Replay : La vérité sur&#8230; de la chaine Brut &#8211; Écoutez et Téléchargez l&#8217;Émission Plus récentsPlus anciens Publicité Écoutez les Podcasts La vérité sur&#8230; de la chaine Brut &#8211; Disponible en Streaming et Replay Voir leur Facebook La vérité sur&#8230; : Plongez dans des univers professionnels fascinants avec Brut « La vérité sur&#8230; » est [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-la-verite-sur/">🗣️ Podcast et Replay de La vérité sur&#8230; &#8211; Brut</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="1832" class="elementor elementor-1832" 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;">
Podcast et Replay : La vérité sur... de la chaine Brut - Écoutez et Téléchargez l'Émission
<img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_lNxFfXCG0IvckafPR1tujoOIZnj8v65LfH0YfPBhyssB8=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;">
    <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <p style="color: #00ffff; margin-bottom: 20px; text-align: center; font-size: 1.7em; font-weight: bold;">Écoutez les Podcasts La vérité sur... de la chaine Brut - Disponible en Streaming et Replay</p>
</div>

    <!-- 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/brutofficiel/followers/" 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/brutofficiel/?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>
</a>

        <a href="https://www.brut.media/fr" 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;">
La vérité sur... : Plongez dans des univers professionnels fascinants avec Brut

"La vérité sur..." est un podcast captivant produit par Brut qui vous invite à découvrir les coulisses de professions extraordinaires et mystérieuses. Chaque semaine, des professionnels issus de milieux variés - qu'il s'agisse d'hôtesses de l'air, d'espions, d'agents de stars ou d'autres métiers fascinants - partagent avec authenticité leur quotidien et dévoilent leurs anecdotes les plus surprenantes.

Ce qui rend "La vérité sur..." unique, c'est sa capacité à lever le voile sur des univers professionnels souvent fantasmés ou mal compris. À travers des témoignages sincères et directs, chaque épisode nous plonge dans la réalité brute de ces métiers, dépassant les clichés pour révéler leur véritable nature.

La production bénéficie d'une équipe éditoriale expérimentée :
• Coordination éditoriale assurée par Annabel Mora et Victor Viriot
• Direction éditoriale sous la supervision de Laurent Lucas

Le podcast se distingue par sa qualité de production exceptionnelle et son approche immersive. Chaque épisode est méticuleusement construit pour offrir aux auditeurs une plongée authentique dans ces univers professionnels fascinants, mêlant témoignages percutants et révélations inattendues.

"La vérité sur..." s'inscrit parfaitement dans la lignée des contenus Brut, conjuguant qualité journalistique et format innovant. Le podcast offre une fenêtre unique sur des métiers passionnants, permettant aux auditeurs de découvrir les joies, les défis et les secrets de professions souvent méconnues ou idéalisées.

Pour ne manquer aucun épisode de cette série fascinante, les auditeurs sont invités à s'abonner au podcast. La communauté grandissante d'auditeurs témoigne de l'engouement pour ce format qui nous fait découvrir le monde professionnel sous un angle nouveau et authentique.
</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;">La vérité sur... de Brut : Explorez les coulisses de professions fascinantes avec des témoignages authentiques</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)'" 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="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;">Les Podcasts La vérité sur... de la chaine Brut mis à jour en direct : Explorez les secrets des métiers</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;">La vérité sur... : Une plongée unique dans les coulisses des métiers</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        "La vérité sur..." est une série de podcasts exceptionnelle produite par Brut qui offre une immersion fascinante dans l'univers de différents métiers. À travers des témoignages authentiques et sans filtre, l'émission lève le voile sur les réalités méconnues de professions variées, des plus communes aux plus insolites.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de l'émission repose sur sa capacité à révéler les aspects méconnus et parfois surprenants de chaque métier. Les invités partagent leurs expériences personnelles, leurs défis quotidiens et leurs anecdotes les plus marquantes, offrant aux auditeurs une perspective unique et authentique sur leur profession. Chaque épisode est soigneusement produit pour créer une expérience immersive qui transporte l'auditeur au cœur de ces univers professionnels.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de "La vérité sur..." réside dans son approche directe et sans artifice. À travers des conversations franches et honnêtes, les auditeurs découvrent les joies, les difficultés et les secrets de métiers qu'ils croyaient connaître. Cette approche novatrice permet de déconstruire les idées reçues et de montrer la réalité brute de chaque profession, créant des moments d'écoute aussi instructifs que captivants.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://www.lalettre.pro/photo/art/default/41758272-34991869.jpg?v=1579020478" alt="Image émission podcast" 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://yt3.googleusercontent.com/ytc/AIdro_lNxFfXCG0IvckafPR1tujoOIZnj8v65LfH0YfPBhyssB8=s900-c-k-c0x00ffffff-no-rj" alt="Image émission" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Brut : Une révolution dans le journalisme digital</h2>
        <p style="color: #ffffff; line-height: 1.8;">
Brut est un média d'information nouvelle génération qui a révolutionné le paysage médiatique français et international depuis sa création en 2016. Fondé par Guillaume Lacroix, Renaud Le Van Kim et Laurent Lucas, Brut s'est rapidement imposé comme une référence incontournable du journalisme digital.

Ce qui distingue Brut des médias traditionnels, c'est son approche unique du traitement de l'information. La chaîne privilégie un format court, percutant et adapté aux réseaux sociaux, avec des vidéos sous-titrées qui peuvent être comprises sans le son, une caractéristique devenue leur signature.

L'équipe de Brut est composée de journalistes passionnés qui maîtrisent parfaitement les codes des nouvelles générations. Ils abordent des sujets variés : actualité, société, environnement, culture, mais toujours avec un angle original et une volonté de décryptage accessible à tous.

Points forts de Brut :
• Un format vidéo innovant et adapté aux usages mobiles
• Une présence forte sur toutes les plateformes sociales
• Un ton direct et authentique
• Une couverture internationale des sujets
• Un engagement fort sur les questions sociétales et environnementales

Les interviews réalisées par Brut se distinguent par leur authenticité et leur proximité avec les interviewés. Qu'il s'agisse de personnalités, d'experts ou de citoyens engagés, la chaîne donne la parole de manière brute, sans filtre, créant ainsi une connexion unique avec son audience.
</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/Brut_(m%C3%A9dia)" 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); }">• À propos de Brut</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.audiomeans.fr/feed/7eff51fe-43d6-4a73-a555-862251059566.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=300`;
        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://radiostreamr.com/radio-france/wp-content/uploads/2024/12/la-verite-sur-podcast-brut.webp";

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 : La vérité sur... de la chaine Brut sur 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 : La vérité sur... de la chaine Brut sur RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : La vérité sur... de la chaine Brut sur 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 : La vérité sur... de la chaine Brut sur 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-ff035ad e-con-full elementor-hidden-desktop e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-la-verite-sur/">🗣️ Podcast et Replay de La vérité sur&#8230; &#8211; Brut</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-la-verite-sur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et Replay de BRUIT &#8211; Brut</title>
		<link>https://radiostreamr.com/radio-france/%f0%9f%97%a3%ef%b8%8f-podcast-et-replay-de-bruit-brut/</link>
					<comments>https://radiostreamr.com/radio-france/%f0%9f%97%a3%ef%b8%8f-podcast-et-replay-de-bruit-brut/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 09 Dec 2024 12:43:22 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Slate.fr]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1822</guid>

					<description><![CDATA[<p>Podcast et Replay : Bruit de la chaine Brut &#8211; Écoutez et Téléchargez l&#8217;Émission Plus récentsPlus anciens Publicité Écoutez les Podcasts Bruit de la chaine Brut &#8211; Disponible en Streaming et Replay Voir leur Facebook Bruit : Une exploration sonore unique par Brut et Molécule « Bruit » est un podcast fascinant produit par Brut et Paradiso [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/%f0%9f%97%a3%ef%b8%8f-podcast-et-replay-de-bruit-brut/">🗣️ Podcast et Replay de BRUIT &#8211; Brut</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="1822" class="elementor elementor-1822" 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;">
Podcast et Replay : Bruit de la chaine Brut - Écoutez et Téléchargez l'Émission
<img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_lNxFfXCG0IvckafPR1tujoOIZnj8v65LfH0YfPBhyssB8=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;">
    <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <p style="color: #00ffff; margin-bottom: 20px; text-align: center; font-size: 1.7em; font-weight: bold;">Écoutez les Podcasts Bruit de la chaine Brut - Disponible en Streaming et Replay</p>
</div>

    <!-- 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/brutofficiel/followers/" 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/brutofficiel/?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>
</a>

        <a href="https://www.slate.fr/audio/" 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;">
Bruit : Une exploration sonore unique par Brut et Molécule

"Bruit" est un podcast fascinant produit par Brut et Paradiso Media qui nous invite à redécouvrir l'univers sonore qui nous entoure. Présenté par Romain, plus connu sous le nom de Molécule, compositeur de musique électronique passionné par l'enregistrement et l'exploration des sons, cette émission offre une perspective unique sur notre environnement acoustique.

Ce qui rend "Bruit" si spécial, c'est sa capacité à nous faire prêter attention aux sons que nous entendons quotidiennement sans vraiment les écouter, ainsi qu'à ceux qui nous dépassent et que nous ne comprenons pas toujours. À travers son expertise et sa sensibilité musicale, Molécule nous guide dans cette découverte sonore, équipé de ses micros et de sa curiosité insatiable.

La production est le fruit d'une collaboration exceptionnelle entre des professionnels passionnés :
• Écriture assurée par David Commeillas et Christophe Payet
• Réalisation et mixage par Gérald Dorai-Mouëtron et Romain Nicolas
• Direction éditoriale sous la supervision de Sina Mir
• Production exécutive par une équipe chevronnée incluant Laurent Lucas et Lorenzo Benedetti

Le podcast se distingue par sa qualité sonore exceptionnelle et son approche immersive. Chaque épisode est méticuleusement construit pour offrir une expérience auditive unique, enrichie par le générique musical "Shannon" composé par Molécule lui-même, illustrant parfaitement l'ADN créatif de l'émission.

Pour ne manquer aucun épisode de cette aventure sonore fascinante, les auditeurs sont invités à s'abonner au podcast et à partager leurs appréciations. La communauté croissante d'auditeurs témoigne de l'engouement pour ce format innovant qui nous fait redécouvrir le monde à travers ses sons.

Disponible sur toutes les plateformes de podcast, "Bruit" s'inscrit dans la lignée des productions originales de Brut, conjuguant qualité éditoriale et innovation dans le traitement du son. Une expérience auditive unique qui transforme notre perception du monde sonore qui nous entoure.
</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;">Plongez dans BRUIT de Brut : Explorez les sons qui nous entourent avec des expériences sonores uniques</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)'" 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="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;">Les Podcasts Bruit du média Brut mis à jour en direct : explorez l'univers sonore qui nous entoure</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;">BRUIT : Une exploration sonore inédite par Brut et Molécule</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Depuis son lancement par Brut, "BRUIT" s'est imposé comme une expérience auditive unique dans l'univers des podcasts. Cette émission révolutionnaire, animée par le talentueux Molécule, compositeur de musique électronique, propose une exploration fascinante des sons qui nous entourent, transformant notre perception du monde sonore quotidien.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de l'émission repose sur sa capacité à révéler la beauté et la complexité des sons qui peuplent notre environnement. Équipé de ses micros haute-fidélité, Molécule capture et analyse les bruits du quotidien, des plus subtils aux plus imposants, offrant aux auditeurs une nouvelle perspective sur leur environnement sonore. Chaque épisode est méticuleusement produit pour créer une expérience immersive unique.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de "BRUIT" réside dans sa capacité à transformer notre rapport aux sons du quotidien. À travers les compositions de Molécule et ses analyses pointues, les auditeurs découvrent la musicalité cachée dans les bruits les plus ordinaires. Cette approche novatrice permet aux auditeurs de redécouvrir leur environnement sonore avec un regard neuf, créant des moments d'écoute mémorables où la frontière entre bruit et musique s'estompe.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://www.radiofrance.fr/s3/cruiser-production-eu3/2021/01/136aa50b-af9e-4fb7-b138-650e75dff16b/640x340_molecule_1.jpg" alt="Image émission podcast" 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://yt3.googleusercontent.com/ytc/AIdro_lNxFfXCG0IvckafPR1tujoOIZnj8v65LfH0YfPBhyssB8=s900-c-k-c0x00ffffff-no-rj" alt="Image émission" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Brut : Une révolution dans le journalisme digital</h2>
        <p style="color: #ffffff; line-height: 1.8;">
Brut est un média d'information nouvelle génération qui a révolutionné le paysage médiatique français et international depuis sa création en 2016. Fondé par Guillaume Lacroix, Renaud Le Van Kim et Laurent Lucas, Brut s'est rapidement imposé comme une référence incontournable du journalisme digital.

Ce qui distingue Brut des médias traditionnels, c'est son approche unique du traitement de l'information. La chaîne privilégie un format court, percutant et adapté aux réseaux sociaux, avec des vidéos sous-titrées qui peuvent être comprises sans le son, une caractéristique devenue leur signature.

L'équipe de Brut est composée de journalistes passionnés qui maîtrisent parfaitement les codes des nouvelles générations. Ils abordent des sujets variés : actualité, société, environnement, culture, mais toujours avec un angle original et une volonté de décryptage accessible à tous.

Points forts de Brut :
• Un format vidéo innovant et adapté aux usages mobiles
• Une présence forte sur toutes les plateformes sociales
• Un ton direct et authentique
• Une couverture internationale des sujets
• Un engagement fort sur les questions sociétales et environnementales

Les interviews réalisées par Brut se distinguent par leur authenticité et leur proximité avec les interviewés. Qu'il s'agisse de personnalités, d'experts ou de citoyens engagés, la chaîne donne la parole de manière brute, sans filtre, créant ainsi une connexion unique avec son audience.
</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/Brut_(m%C3%A9dia)" 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); }">• À propos de Brut</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.audiomeans.fr/feed/3cb7a04c-46d6-4b10-bfa0-679964798f87.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=300`;
        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://is1-ssl.mzstatic.com/image/thumb/Podcasts211/v4/bb/1f/f3/bb1ff3a9-7e3c-6db1-6cd5-3be08a6efc81/mza_16463211961531203611.jpg/300x300bb.webp";

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 : Bruit de la chaine Brut sur 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 : Bruit de la chaine Brut sur RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Bruit de la chaine Brut sur 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 : Bruit de la chaine Brut sur 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-ff035ad e-con-full elementor-hidden-desktop e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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/%f0%9f%97%a3%ef%b8%8f-podcast-et-replay-de-bruit-brut/">🗣️ Podcast et Replay de BRUIT &#8211; Brut</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/%f0%9f%97%a3%ef%b8%8f-podcast-et-replay-de-bruit-brut/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et Replay de L&#8217;interview des gens connus &#8211; Brut</title>
		<link>https://radiostreamr.com/radio-france/interview-des-gens-connus-brut/</link>
					<comments>https://radiostreamr.com/radio-france/interview-des-gens-connus-brut/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 09 Dec 2024 10:52:41 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Slate.fr]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1815</guid>

					<description><![CDATA[<p>Podcast et Replay : L&#8217;interview des gens connus de la chaine Brut &#8211; Écoutez et Téléchargez l&#8217;Émission Plus récentsPlus anciens Publicité Écoutez les Podcasts « L&#8217;interview des gens connus » réalisés par BRUT &#124; Disponible en Streaming et Replay Voir leur Facebook L&#8217;interview des gens connus : Une nouvelle vision du journalisme par Brut « L&#8217;interview des gens [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/interview-des-gens-connus-brut/">🗣️ Podcast et Replay de L&rsquo;interview des gens connus &#8211; Brut</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="1815" class="elementor elementor-1815" 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;">
Podcast et Replay : L'interview des gens connus de la chaine Brut - Écoutez et Téléchargez l'Émission
<img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_lNxFfXCG0IvckafPR1tujoOIZnj8v65LfH0YfPBhyssB8=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;">
    <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <p style="color: #00ffff; margin-bottom: 20px; text-align: center; font-size: 1.7em; font-weight: bold;">Écoutez les Podcasts "L'interview des gens connus" réalisés par BRUT | Disponible en Streaming et Replay</p>
</div>

    <!-- 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/brutofficiel/followers/" 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/brutofficiel/?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>
</a>

        <a href="https://www.slate.fr/audio/" 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'interview des gens connus : Une nouvelle vision du journalisme par Brut

"L'interview des gens connus" est une série d'entretiens produite par Brut qui redéfinit les codes de l'interview traditionnelle. Dans chaque épisode, la chaîne propose des conversations authentiques et percutantes avec des personnalités issues de différents horizons : artistes, sportifs, entrepreneurs, militants ou figures politiques.

Ce qui distingue ce format, c'est son approche directe et sans filtre. Les interviews sont menées dans un style caractéristique de Brut : des questions franches, des réponses spontanées, et une réalisation moderne qui privilégie l'authenticité aux artifices télévisuels classiques. Le cadre intimiste permet aux invités de se livrer avec une sincérité rare, abordant aussi bien leurs succès que leurs doutes et leurs combats personnels.

Chaque semaine, une nouvelle personnalité se prête au jeu de la conversation, offrant aux spectateurs un regard neuf sur des figures publiques qu'ils pensaient connaître. L'émission parvient à créer des moments de télévision mémorables, où l'émotion et la vérité priment sur le spectacle.

Désormais disponible en podcast et en replay, l'émission permet à chacun de (re)découvrir ces échanges privilégiés à tout moment. Une collection d'entretiens qui révèle l'humain derrière la célébrité et nous rappelle que les "gens connus" sont avant tout des personnes avec leurs histoires, leurs convictions et leurs vulnérabilités.

Écoutez gratuitement l'intégralité des épisodes de "L'interview des gens connus" et plongez dans ces conversations uniques qui changent notre regard sur les personnalités qui font l'actualité.
</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;">Les interviews de Brut avec les personnalités qui font l'actualité : des entretiens sans filtre</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)'" 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="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;">Les Podcasts L'interview des gens connus de la chaine Brut mis à jour en direct : les entretiens intimistes</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'interview des gens connus de Brut : Un format qui révolutionne l'interview</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Depuis son lancement par Brut, "L'interview des gens connus" s'est imposé comme une référence incontournable dans l'univers des interviews modernes. Cette émission unique en son genre propose des conversations authentiques avec des personnalités, où la spontanéité et la franchise sont les maîtres-mots, offrant un regard neuf sur ceux qui font l'actualité.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de l'émission repose sur sa capacité à briser les codes de l'interview traditionnelle. Sans artifice ni langue de bois, les invités se livrent avec une sincérité rare, partageant leurs convictions, leurs doutes et leurs combats. Chaque épisode est soigneusement produit pour mettre en valeur l'authenticité des échanges, avec une réalisation moderne qui privilégie le fond à la forme.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        La force de "L'interview des gens connus" réside dans sa capacité à révéler l'humain derrière la personnalité publique. Les conversations vont au-delà des sujets d'actualité pour explorer les parcours personnels, les engagements et les réflexions intimes des invités. Cette approche unique permet aux spectateurs de découvrir une autre facette de personnalités qu'ils pensaient connaître, créant des moments de télévision mémorables où l'émotion et la vérité priment sur le spectacle.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://i.ytimg.com/vi/1MAmBJ43EyI/hq720.jpg?sqp=-oaymwEhCK4FEIIDSFryq4qpAxMIARUAAAAAGAElAADIQj0AgKJD&amp;rs=AOn4CLD82nN5e1CGAyk2nW0jU2JS1dfu_w" alt="Image émission podcast" 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://yt3.googleusercontent.com/ytc/AIdro_lNxFfXCG0IvckafPR1tujoOIZnj8v65LfH0YfPBhyssB8=s900-c-k-c0x00ffffff-no-rj" alt="Image émission" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Brut : Une révolution dans le journalisme digital</h2>
        <p style="color: #ffffff; line-height: 1.8;">
Brut est un média d'information nouvelle génération qui a révolutionné le paysage médiatique français et international depuis sa création en 2016. Fondé par Guillaume Lacroix, Renaud Le Van Kim et Laurent Lucas, Brut s'est rapidement imposé comme une référence incontournable du journalisme digital.

Ce qui distingue Brut des médias traditionnels, c'est son approche unique du traitement de l'information. La chaîne privilégie un format court, percutant et adapté aux réseaux sociaux, avec des vidéos sous-titrées qui peuvent être comprises sans le son, une caractéristique devenue leur signature.

L'équipe de Brut est composée de journalistes passionnés qui maîtrisent parfaitement les codes des nouvelles générations. Ils abordent des sujets variés : actualité, société, environnement, culture, mais toujours avec un angle original et une volonté de décryptage accessible à tous.

Points forts de Brut :
• Un format vidéo innovant et adapté aux usages mobiles
• Une présence forte sur toutes les plateformes sociales
• Un ton direct et authentique
• Une couverture internationale des sujets
• Un engagement fort sur les questions sociétales et environnementales

Les interviews réalisées par Brut se distinguent par leur authenticité et leur proximité avec les interviewés. Qu'il s'agisse de personnalités, d'experts ou de citoyens engagés, la chaîne donne la parole de manière brute, sans filtre, créant ainsi une connexion unique avec son audience.
</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/Brut_(m%C3%A9dia)" 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); }">• À propos de Brut</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.audiomeans.fr/feed/588329ae-2147-4800-b78b-7df7627dcd1a.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=300`;
        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://i.scdn.co/image/ab67656300005f1fe818bd4698492bc866569533";

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'interview des gens connus de la chaine Brut sur 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'interview des gens connus de la chaine Brut sur 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'interview des gens connus de la chaine Brut sur 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'interview des gens connus de la chaine Brut sur 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-ff035ad e-con-full elementor-hidden-desktop e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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/interview-des-gens-connus-brut/">🗣️ Podcast et Replay de L&rsquo;interview des gens connus &#8211; Brut</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/interview-des-gens-connus-brut/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et Replay de Transfert de Slate.fr</title>
		<link>https://radiostreamr.com/radio-france/podcast-transfert/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-transfert/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 06 Dec 2024 14:21:00 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[Slate.fr]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1804</guid>

					<description><![CDATA[<p>Podcast et Replay : Transfert de Slate.fr &#8211; Écoutez et Téléchargez l&#8217;Émission Plus récentsPlus anciens Publicité Écoutez les Podcasts « Transfert » réalisés par Slate.fr &#124; Disponible en Streaming et Replay Voir leur Facebook Transfert : Une plongée intime dans des histoires vraies sur Slate.fr « Transfert » est une série de podcasts narratifs produite par Slate.fr qui donne [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-transfert/">🗣️ Podcast et Replay de Transfert de Slate.fr</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="1804" class="elementor elementor-1804" 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;">
Podcast et Replay : Transfert de Slate.fr - Écoutez et Téléchargez l'Émission
<img decoding="async" src="https://www.eurotopics.net/cache/images/3/148783-medium_logo-teaser300.png?9BAFC" 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;">
    <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <p style="color: #00ffff; margin-bottom: 20px; text-align: center; font-size: 1.7em; font-weight: bold;">Écoutez les Podcasts "Transfert" réalisés par Slate.fr | Disponible en Streaming et Replay</p>
</div>

    <!-- 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/@slatefrancepodcasts/?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/transfertpodcast/" 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>
</a>

        <a href="https://www.slate.fr/audio/" 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;">
Transfert : Une plongée intime dans des histoires vraies sur Slate.fr

"Transfert" est une série de podcasts narratifs produite par Slate.fr qui donne la parole à des personnes ordinaires pour raconter des moments extraordinaires de leur vie. Chaque épisode est une histoire vraie, racontée à la première personne, qui nous plonge dans des expériences intimes, bouleversantes ou surprenantes.

L'émission se distingue par sa capacité à transformer des témoignages personnels en récits universels qui touchent et résonnent avec chaque auditeur. À travers une narration soignée et une réalisation sonore immersive, "Transfert" crée un espace unique où les histoires personnelles deviennent des fenêtres sur l'expérience humaine.

Chaque semaine, le podcast nous invite à découvrir un nouveau récit, une nouvelle vie, un nouveau moment charnière. Des histoires d'amour aux expériences professionnelles, des aventures rocambolesques aux moments de profonde introspection, "Transfert" capture toute la richesse et la complexité de nos vies.

Désormais disponible en podcast et en replay, l'émission permet à chacun d'accéder à ces récits intimes à tout moment. Une collection d'histoires vraies qui nous rappelle que chaque vie est unique et mérite d'être racontée.

Écoutez gratuitement l'intégralité des épisodes de "Transfert" et laissez-vous porter par ces récits authentiques qui nous rapprochent les uns des autres et nous font voir le monde différemment.
</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;">Des récits intimes et bouleversants : chaque semaine, une nouvelle histoire vraie à découvrir sur Slate.fr</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)'" 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="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;">Les Podcasts Transfert mis à jour en direct : découvrez les récits intimes et bouleversants de Slate.fr</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;">Transfert de Slate.fr : Plongez dans des Histoires Vraies et Intimes</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Depuis son lancement par Slate.fr, "Transfert" s'est imposé comme une référence incontournable dans l'univers des podcasts narratifs. Cette émission unique en son genre propose chaque semaine une immersion totale dans des histoires vraies, racontées par ceux qui les ont vécues, offrant un regard authentique et intime sur le monde qui nous entoure.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de Transfert repose sur sa capacité à révéler l'extraordinaire dans l'ordinaire, à transformer des récits personnels en véritables aventures humaines qui nous touchent et nous interpellent. Chaque épisode est soigneusement produit sous la direction éditoriale de Christophe Carron, avec une production assurée par Sarah Koskievic et une direction artistique et musicale confiée à Benjamin Saeptem Hours.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Avec Transfert Club, l'expérience s'enrichit encore davantage : deux fois par mois, les auditeurs peuvent découvrir des épisodes supplémentaires inédits et des formats exclusifs. Ces contenus bonus permettent d'explorer les coulisses des épisodes préférés des auditeurs et de retrouver les protagonistes qui reviennent sur leur histoire et partagent les développements survenus depuis leur premier témoignage. Une véritable plongée dans l'intimité de récits authentiques qui révèlent la complexité et la beauté de la vie moderne.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://www.slate.fr/uploads/store/playlist_232155/medium_landscape_232155.jpg" alt="François Lenglet dans les studios de RTL" 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://i1.sndcdn.com/avatars-000678291134-8ywm3z-t240x240.jpg" alt="Stéphane Plaza portrait" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">L'Équipe de "Transfert" : Une Production Slate.fr</h2>
        <p style="color: #ffffff; line-height: 1.8;">
"Transfert" est une création unique dans le paysage du podcast français, portée par une équipe passionnée qui donne vie à des récits intimes et captivants.

Aurélie Rodriguez, la voix d'introduction de l'émission, accueille les auditeurs avec chaleur et précision avant de laisser place aux histoires personnelles des invités. Son introduction soigneusement écrite pose le contexte et prépare l'auditeur à plonger dans chaque récit.

Astrid Verdun, intervieweuse discrète mais essentielle, a l'art de faire émerger des récits authentiques et touchants. Bien que sa voix ne soit pas entendue dans le montage final, son travail d'écoute et d'accompagnement est crucial pour permettre aux invités de partager leur histoire avec sincérité.

L'équipe technique et éditoriale apporte une attention particulière au montage, créant une narration fluide ponctuée d'intermèdes musicaux qui rythment délicatement chaque épisode. Cette production soignée permet aux histoires de se déployer naturellement, captivant l'attention des auditeurs du début à la fin.

Le concept unique de "Transfert" repose sur cette alchimie particulière : des récits personnels, racontés à la première personne, sublimés par un travail de production minutieux. Chaque épisode devient ainsi une fenêtre ouverte sur l'intimité d'une vie, une expérience unique qui résonne universellement.

Qualités distinctives du podcast :
• Montage précis et fluide
• Narration authentique à la première personne
• Identité sonore forte et reconnaissable
• Angle éditorial original
• Production technique de haute qualité

L'équipe de "Transfert" réussit le pari de transformer des histoires individuelles en récits universels, touchant les auditeurs par leur authenticité et leur profondeur. Chaque épisode est une invitation à découvrir une nouvelle facette de l'expérience humaine, racontée avec sensibilité et respect.
</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://google.fr/search?q=transfert+emission+histoire&amp;sca_esv=360d606574466e04&amp;sxsrf=ADLYWIJQfyDp2nw7w-94nYzsvSlrVdT4gw%3A1733484590520&amp;ei=LuBSZ_i3H6DU7M8P0JH_OA&amp;ved=0ahUKEwj4hvephZOKAxUgKvsDHdDIHwcQ4dUDCA8&amp;uact=5&amp;oq=transfert+emission+histoire&amp;gs_lp=goo-MB&amp;sclient=gws-wiz-serp" 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); }">• À propos de l'émission Transfert</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.360.audion.fm/EZqjvOzZXgWIKWg0EETBQ";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=300`;
        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://is1-ssl.mzstatic.com/image/thumb/Podcasts116/v4/7d/45/24/7d4524f1-f633-6535-1ceb-25c1ec067e39/mza_2287600864311144759.jpg/300x300bb.webp";

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 : Transfert de Slate.fr sur 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 : Transfert de Slate.fr sur RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Transfert de Slate.fr sur 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 : Transfert de Slate.fr sur 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-ff035ad e-con-full elementor-hidden-desktop e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head><base href="/"><style>
.carousel-container {
  width: 100%;
  max-width: 1200px;
  background: #0f0f11;
  position: relative;
  overflow: hidden;
  padding: 20px;
  margin: 0 auto;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  min-height: unset; /* Remove fixed min-height */
}

.carousel-outer {
  width: 100vw;
  background: #0f0f11;
  margin-left: calc(-50vw + 50%);
  margin-right: calc(-50vw + 50%);
  position: relative;
  padding: 0 150px;
  box-sizing: border-box;
}

.carousel-track {
  display: flex;
  gap: 20px;
  transition: transform 0.5s ease;
  position: relative;
  padding-right: 220px;
  align-items: center;
  height: auto; /* Remove fixed height */
}

.carousel-card {
  min-width: 200px;
  padding: 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.05);
  backdrop-filter: blur(5px);
  cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
  overflow: hidden;
  text-decoration: none;
}

.carousel-container a {
  text-decoration: none;
}

.carousel-card img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 4px;
  position: relative;
  transition: transform 0.3s ease, filter 0.3s ease;
}

.carousel-card:hover img {
  transform: scale(1.05);
  filter: brightness(1.2);
}

/* New style for the overlay */
.carousel-card::after {
  content: '';
  position: absolute;
  top: 10px; /* Match the padding of the card */
  left: 10px; /* Match the padding of the card */
  right: 10px; /* Match the padding of the card */
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.2); /* Slight dark overlay */
  border-radius: 4px;
  pointer-events: none; /* So it doesn't interfere with clicks */
  transition: background 0.3s ease;
}

.carousel-card:hover::after {
  background: rgba(0, 0, 0, 0.1); /* Lighten overlay on hover */
}

.carousel-card h3 {
  color: #00f2ff;
  margin: 10px 0;
  font-size: 16px;
  text-align: center;
  text-shadow: 0 0 10px rgba(0, 242, 255, 0.5);
}

.carousel-nav {
  position: absolute;
  top: 50%; /* Changed from calc(50% - 20px) */
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  background: #00f2ff;
  border: 2px solid #ffffff;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #ffffff;
  font-size: 20px;
  transition: all 0.3s ease;
  z-index: 10;
  box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
              inset 0 0 8px rgba(255, 255, 255, 0.5);
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

/* Remove transform scale from hover to prevent centering issues */
.carousel-nav:hover {
  transform: translateY(-50%) scale(1.1); /* Updated to maintain vertical centering while scaling */
  box-shadow: 0 0 20px rgba(0, 242, 255, 1),
              inset 0 0 12px rgba(255, 255, 255, 0.7);
}

.prev-btn {
  left: 50px;
}

.next-btn {
  right: 50px;
}

@media screen and (max-width: 1024px) {
  .carousel-outer {
    padding: 0 45px;
  }
  
  .prev-btn {
    left: 5px;
  }
  
  .next-btn {
    right: 5px;
  }
}

@media screen and (max-width: 768px) {
  .carousel-nav {
    display: none; /* Cache les boutons de navigation sur mobile */
  }
  
  .carousel-outer {
    padding: 0; /* Supprime le padding qui était là pour les boutons */
  }

  .carousel-track {
    padding-right: 20px; /* Réduit le padding droit sur mobile */
    touch-action: pan-x; /* Améliore le comportement tactile */
    -webkit-overflow-scrolling: touch; /* Pour un défilement plus fluide sur iOS */
  }

  /* Add this new rule to reduce title font size on mobile */
  .carousel-title {
    font-size: 21px; /* Original 25px - 4px = 21px */
  }
}

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

.carousel-outer::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(45deg, #0f0f11, #1a1a1f, #0f0f11);
  background-size: 200% 200%;
  animation: backgroundPulse 10s ease infinite;
}

/* Adjust the tooltip styles to ensure they're visible */
.tooltip {
    visibility: hidden;
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: white;
    padding: 10px;
    border-radius: 6px;
    width: 200px;
    font-size: 12px;
    line-height: 1.4;
    z-index: 100;
    opacity: 0;
    transition: opacity 0.3s, visibility 0.3s;
    text-align: center;
    margin-bottom: 10px;
    border: 1px solid #00f2ff;
    box-shadow: 0 0 10px rgba(0, 242, 255, 0.3);
    pointer-events: none; /* Add this to prevent tooltip interference */
}

/* Ensure tooltip appears on hover */
.carousel-card:hover .tooltip {
    visibility: visible;
    opacity: 1;
}

.carousel-title {
  font-family: 'Roboto', sans-serif;
  font-size: 25px;
  text-align: center;
  color: #fff;
  margin-bottom: 30px;
}
</style></head>

<body><div class="carousel-outer">
  <div class="carousel-container">
    <h2 class="carousel-title">Les 10 podcasts français les plus écoutés sur RadiostreamR.com</h2>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&amp;display=swap" rel="stylesheet">
    <style>
    .carousel-container * {
        font-family: 'Roboto', sans-serif;
    }

    .ranking-badge {
        position: absolute;
        top: 10px !important;
        right: 10px !important;
        width: 40px;
        height: 40px;
        background: #00f2ff;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 12px;
        color: #ffffff;
        border: 2px solid #ffffff;
        box-shadow: 0 0 15px rgba(0, 242, 255, 0.8), 
8px rgba(255, 255, 255, 0.5);
        z-index: 2;
        font-weight: bold;
        font-family: 'Roboto', sans-serif;
        text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
        transition: all 0.3s ease;
    }
    
    .ranking-badge:hover {
        transform: scale(1.1);
        box-shadow: 0 0 20px rgba(0, 242, 255, 1),
                    inset 0 0 12px rgba(255, 255, 255, 0.7);
    }
    
    .carousel-card {
        position: relative;
        font-family: 'Roboto', sans-serif;
    }

    .carousel-card h3 {
        font-family: 'Roboto', sans-serif;
        font-weight: 500;
    }

    .carousel-nav {
        font-family: 'Roboto', sans-serif;
    }
    </style>
    <div class="carousel-track">
      <a href="https://radiostreamr.com/radio-france/podcast-legend-guillaume-pley/" class="carousel-card">
        <div class="tooltip">Guillaume Pley reçoit des personnalités pour des interviews intimes révélant leurs parcours.</div>
        <div class="ranking-badge">1er</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/legend-guillaume-pley-podcast.webp" alt="Guillaume Pley Legend">
        <h3>Legend</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/les-grosses-tetes-podcast/" class="carousel-card">
        <div class="tooltip">Émission culte mêlant culture et humour avec Laurent Ruquier et ses chroniqueurs.</div>
        <div class="ranking-badge">2ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grosses-tetes-podcast.webp" alt="Les Grosses têtes">
        <h3>Les Grosses Têtes</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-after-foot/" class="carousel-card">
        <div class="tooltip">L'émission phare du football avec analyses et débats sur l'actualité du ballon rond.</div>
        <div class="ranking-badge">3ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/after-foot-podcast.webp" alt="After Foot">
        <h3>After Foot</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hugodecrypte-actu-du-jour/" class="carousel-card">
        <div class="tooltip">Hugo résume l'actualité quotidienne de manière claire et accessible pour tous.</div>
        <div class="ranking-badge">4ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/hugo-decrypte-podcast.webp" alt="HugoDécrypte">
        <h3>HugoDécrypte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-la-derniere-nova/" class="carousel-card">
        <div class="tooltip">Découvrez les nouvelles tendances musicales et artistes émergents sur Radio Nova.</div>
        <div class="ranking-badge">5ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/radio-nova-la-derniere.webp" alt="La Dernière">
        <h3>La Dernière</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-hondelatte-raconte/" class="carousel-card">
        <div class="tooltip">Christophe Hondelatte narre des faits divers captivants avec son style unique.</div>
        <div class="ranking-badge">6ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/hondelatte-raconte-podcast.webp" alt="Hondelatte Raconte">
        <h3>Hondelatte Raconte</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-secrets-histoire-francetv/" class="carousel-card">
        <div class="tooltip">Stéphane Bern explore les mystères de l'Histoire à travers des récits passionnants.</div>
        <div class="ranking-badge">7ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/secrets-histoire-podcast.webp">
        <h3>Secrets d'Histoire</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-les-gg-podcast/" class="carousel-card">
        <div class="tooltip">Débats animés sur l'actualité avec des intervenants passionnés et engagés.</div>
        <div class="ranking-badge">8ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/11/les-grandes-gueules-podcast.webp" alt="Les Grandes Gueules">
        <h3>Les Grandes Gueules</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-nota-bene/" class="carousel-card">
        <div class="tooltip">Benjamin Brillaud vulgarise l'Histoire de manière ludique et moderne.</div>
        <div class="ranking-badge">9ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/nota-bene-podcast.webp" alt="Nota Bene">
        <h3>Nota Bene</h3>
      </a>
      <a href="https://radiostreamr.com/radio-france/podcast-ca-peut-vous-arriver-rtl/" class="carousel-card">
        <div class="tooltip">Julien Courbet aide les auditeurs et défend les consommateurs au quotidien.</div>
        <div class="ranking-badge">10ème</div>
        <img decoding="async" src="https://radiostreamr.com/radio-france/wp-content/uploads/2024/12/ca-peut-vous-arriver.webp" alt="Ça peut vous arriver">
        <h3>Ça peut vous arriver</h3>
      </a>
    </div>
    <button class="carousel-nav prev-btn">←</button>
    <button class="carousel-nav next-btn">→</button>
    
    <script>
    (function() {
      const track = document.querySelector('.carousel-track');
      const cards = document.querySelectorAll('.carousel-card');
      const prevBtn = document.querySelector('.prev-btn');
      const nextBtn = document.querySelector('.next-btn');
      
      let currentIndex = 0;
      const cardWidth = 220; // Width + gap

      function updateVisibleCards() {
        const containerWidth = document.querySelector('.carousel-container').offsetWidth;
        return Math.floor(containerWidth / cardWidth);
      }

      function updateMaxIndex() {
        const visibleCards = updateVisibleCards();
        return Math.max(0, cards.length - visibleCards + 1); // Added +1 to show last card fully
      }

      function updateCarousel() {
        track.style.transform = `translateX(-${currentIndex * cardWidth}px)`;
      }

      prevBtn.addEventListener('click', () => {
        currentIndex = Math.max(currentIndex - 1, 0);
        updateCarousel();
      });

      nextBtn.addEventListener('click', () => {
        currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
        updateCarousel();
      });

      // Touch events
      let touchStartX = 0;
      let touchEndX = 0;

      track.addEventListener('touchstart', e => {
        touchStartX = e.changedTouches[0].screenX;
      }, false);

      track.addEventListener('touchend', e => {
        touchEndX = e.changedTouches[0].screenX;
        handleSwipe();
      }, false);

      function handleSwipe() {
        const swipeThreshold = 50;
        const diff = touchStartX - touchEndX;

        if (Math.abs(diff) > swipeThreshold) {
          if (diff > 0) {
            currentIndex = Math.min(currentIndex + 1, updateMaxIndex());
          } else {
            currentIndex = Math.max(currentIndex - 1, 0);
          }
          updateCarousel();
        }
      }

      window.addEventListener('resize', () => {
        currentIndex = Math.min(currentIndex, updateMaxIndex());
        updateCarousel();
      });

      updateCarousel();
    })();
    </script>
</div>
</div></body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-01b5e3f e-con-full e-flex e-con e-parent" data-id="01b5e3f" data-element_type="container">
				<div class="elementor-element elementor-element-5d31e28 elementor-widget elementor-widget-html" data-id="5d31e28" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-transfert/">🗣️ Podcast et Replay de Transfert de Slate.fr</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-transfert/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et Replay de Frontières • Livre Noir</title>
		<link>https://radiostreamr.com/radio-france/podcast-frontieres-livre-noir/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-frontieres-livre-noir/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 13:20:16 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1788</guid>

					<description><![CDATA[<p>Podcast et Replay : Frontières • Livre Noir &#8211; Écoutez et Téléchargez l&#8217;Émission Plus récentsPlus anciens Publicité Livre Noir : Des interviews politiques et d&#8217;actualité au cœur des débats &#124; Une chaîne indépendante qui décrypte l&#8217;actualité Voir leur Facebook Frontières • Livre Noir : Un média engagé au cœur de l&#8217;actualité Fondé le 14 février [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-frontieres-livre-noir/">🗣️ Podcast et Replay de Frontières • Livre Noir</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="1788" class="elementor elementor-1788" 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;">
Podcast et Replay : Frontières • Livre Noir - Écoutez et Téléchargez l'Émission
<img decoding="async" src="https://medias.podcastics.com/podcastics/podcasts/artwork/livre-noir.jpeg.6327d8a6c65426152e0f81da13659648.jpeg" 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;">
    <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <p style="color: #00ffff; margin-bottom: 20px; text-align: center; font-size: 1.7em; font-weight: bold;">Livre Noir : Des interviews politiques et d'actualité au cœur des débats | Une chaîne indépendante qui décrypte l'actualité</p>
</div>

    <!-- 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/livre.noir.54/" target="_blank" style="position: relative; width: 50px; height: 50px; background: #1877F2; border-radius: 50%; display: flex; justify-content: center; align-items: center; transition: transform 0.2s ease-in-out; 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/frontieresmedia/?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>
</a>

        <a href="https://www.frontieresmedia.fr/" 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;">
Frontières • Livre Noir : Un média engagé au cœur de l'actualité

Fondé le 14 février 2021, Frontières est bien plus qu'un simple média - c'est une vision audacieuse qui s'engage à écrire l'avenir du journalisme. Né de la passion de jeunes journalistes déterminés, le média s'est rapidement fait connaître grâce à ses longs entretiens réalisés dans une ambiance à la fois sérieuse et conviviale, notamment à travers son emblématique fauteuil rouge de Livre Noir.

La croissance du média a été fulgurante : en moins d'un an, Frontières atteignait les 100 000 abonnés, pour atteindre 300 000 en mars 2023. Cette expansion rapide témoigne de la confiance d'une communauté fidèle et engagée.

L'équipe, récemment renforcée par l'arrivée d'une dizaine de nouveaux talents, comprend des journalistes de terrain et de bureau, des caméramans, des monteurs et des experts dans divers domaines. Ensemble, ils travaillent sans relâche pour mettre en lumière la réalité et questionner la pensée conventionnelle.

Les étapes clés du développement :
• Juin 2022 : Obtention de l'agrément presse CPPAP, une reconnaissance officielle du Ministère de la Culture
• Septembre 2023 : Lancement du premier magazine consacré à l'immigration, distribué dans 4800 kiosques
• Décembre 2023 : Publication du deuxième magazine "Une terre, deux peuples : vers la guerre civile en France ?"
• Juin 2024 : Création du Pôle Enquête suite à une campagne de dons réussie
• Septembre 2024 : Lancement de l'application mobile

Frontières se distingue par son engagement à produire des enquêtes approfondies et des analyses pointues sur des sujets d'actualité cruciaux. Le média organise également des événements marquants comme "La grande confrontation", offrant un cadre prestigieux pour des débats de haute volée.

Avec son troisième magazine "Infiltrée" et son nouveau pôle d'enquête, Frontières continue d'innover et d'approfondir son travail journalistique, fidèle à sa mission de faire bouger les lignes du débat public.
</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;">Découvrez des interviews percutantes et des enquêtes approfondies sur des sujets d'actualité brûlants.</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)'" 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="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;">Les Podcasts Frontières • Livre Noir mis à jour en temps réel dès leur publication : interviews et enquêtes</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;">Frontières • Livre Noir : Un média d'investigation au cœur de l'actualité</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Fondé en 2021 par Erik Tegnér, François de Voyer et Swann Polydor, Frontières • Livre Noir s'est rapidement imposé comme un acteur majeur du paysage médiatique français. S'inspirant du format Thinkerview, le média s'est distingué par ses entretiens approfondis sur des sujets politiques et sociétaux, adoptant une ligne éditoriale conservatrice.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès ne s'est pas fait attendre : en septembre 2023, le média franchit une nouvelle étape avec la publication de son premier magazine papier, élargissant ainsi son influence au-delà du numérique. En juin 2024, le média prend un nouveau tournant en se rebaptisant "Frontières", marquant sa volonté de peser davantage dans le paysage médiatique français.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Fort d'une équipe d'une quinzaine de salariés, Frontières • Livre Noir s'est doté d'un comité stratégique prestigieux, comprenant notamment l'ancien ambassadeur de France en Algérie Xavier Driencourt, l'ex-PDG d'Elf Aquitaine Loïk Le Floch-Prigent, et l'avocat Thibault de Montbrial. Le média se distingue par son traitement approfondi de sujets d'actualité, avec une attention particulière portée aux questions d'immigration et aux enjeux géopolitiques contemporains.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://www.lalettre.fr/fr/utils/imageresize?x=800&amp;web=1&amp;file64=TExBXFBob3Rvc1xlcmlrdGVnbmVyLmpwZw==" alt="Erik Tegner dans les studios" 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://danubeinstitute.hu/files/19/10/19102a49f0a36505a3e7a0f0c7832d5b.png" alt="Erik Tegnér portrait" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Erik Tegnér : Le Visage du Journalisme Conservateur Français</h2>
        <p style="color: #ffffff; line-height: 1.8;">
Erik Tegnér, figure montante des médias français né en 1993 à Paris, s'est imposé comme l'un des journalistes les plus influents de sa génération. Fondateur charismatique de Frontières (ex-Livre Noir), il incarne le renouveau du journalisme d'investigation en France.

Après des études de droit à Assas et un passage à Grenoble École de Management, il forge son parcours entre engagement politique et médias. D'abord membre de différents mouvements politiques, il se distingue notamment lors de la "Convention de la droite" en 2019.

C'est en 2021 qu'il lance Livre Noir, un média qui va rapidement marquer les esprits par son format unique d'entretiens longs et ses enquêtes approfondies. Le succès est fulgurant : en quelques années, le média devient une référence, touchant des centaines de milliers de personnes.

En 2024, Livre Noir devient Frontières, marquant une nouvelle étape dans son développement. Avec une équipe renforcée et un comité stratégique prestigieux, le média continue d'innover à travers :
• Des enquêtes de terrain exclusives
• Un magazine papier mensuel
• Une application mobile moderne
• Des événements et débats d'envergure

Erik Tegnér a su créer un média qui allie profondeur d'analyse et innovation, devenant ainsi un acteur incontournable du paysage médiatique français. Son approche unique du journalisme, mêlant investigation poussée et formats modernes, continue d'attirer un public toujours plus large, en quête d'une information différente et approfondie.
</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://www.frontieresmedia.fr/qui-sommes-nous" 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); }">• Frontières Media - Qui sommes-nous ?</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.podcastics.com/podcastics/podcasts/rss/2221_c1b339e2bb702578dcd48155c1422260.rss";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=300`;
        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://medias.podcastics.com/podcastics/podcasts/artwork/livre-noir.jpeg.6327d8a6c65426152e0f81da13659648.jpeg";

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 : Frontières • Livre Noir sur 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 : Frontières • Livre Noir sur RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Frontières • Livre Noir sur 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 : Frontières • Livre Noir sur 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-ff035ad e-con-full e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-frontieres-livre-noir/">🗣️ Podcast et Replay de Frontières • Livre Noir</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-frontieres-livre-noir/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>🗣️ Podcast et Replay Vous allez en entendre parler sur RTL</title>
		<link>https://radiostreamr.com/radio-france/podcast-vous-allez-en-entendre-parler/</link>
					<comments>https://radiostreamr.com/radio-france/podcast-vous-allez-en-entendre-parler/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 12:12:23 +0000</pubDate>
				<category><![CDATA[Podcast]]></category>
		<category><![CDATA[RTL]]></category>
		<guid isPermaLink="false">https://radiostreamr.com/radio-france/?p=1781</guid>

					<description><![CDATA[<p>Podcast et Replay RTL : Vous allez en entendre parler de Tom Lefèvre &#8211; Écoutez et Téléchargez l&#8217;Émission Plus récentsPlus anciens Publicité Vous allez en entendre parler de Tom Lefèvre sur RTL : Écoutez tous ses podcasts en replay et streaming &#124; L&#8217;actualité décryptée quotidiennement Voir leur Facebook Vous allez en entendre parler avec Tom [&#8230;]</p>
<p>L’article <a href="https://radiostreamr.com/radio-france/podcast-vous-allez-en-entendre-parler/">🗣️ Podcast et Replay Vous allez en entendre parler sur RTL</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="1781" class="elementor elementor-1781" 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;">
Podcast et Replay RTL : Vous allez en entendre parler de Tom Lefèvre - Écoutez et Téléchargez l'Émission
<img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQllWu1ZB1zo5CLZG-vyyD6GqVSp2ae2mKu-mehE6vxBLCXZdni62BJkDiMXtS7gCSmelQ&amp;usqp=CAU" 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;">
    <div style="grid-column: 1 / -1; margin-bottom: 30px; text-align: center;">
    <p style="color: #00ffff; margin-bottom: 20px; text-align: center; font-size: 1.7em; font-weight: bold;">Vous allez en entendre parler de Tom Lefèvre sur RTL : Écoutez tous ses podcasts en replay et streaming | L'actualité décryptée quotidiennement</p>
</div>

    <!-- 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/RTL/?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/rtl_france/?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>
</a>

        <a href="https://www.rtl.fr/" 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;">
Vous allez en entendre parler avec Tom Lefèvre sur RTL : L'actualité qui fait parler

Tom Lefèvre, le journaliste qui décrypte chaque matin l'information du jour sur RTL, vous donne rendez-vous du lundi au vendredi à 6h09 pour sa chronique incontournable "Vous allez en entendre parler". Dans ce format percutant, il met en lumière les histoires extraordinaires, les phénomènes surprenants et les tendances émergentes qui vont marquer la journée.

Sa chronique matinale est devenue un rendez-vous essentiel pour les auditeurs de RTL qui souhaitent prendre une longueur d'avance sur l'actualité. Avec son style unique et son sens aigu de l'information, Tom Lefèvre déniche et décortique les sujets qui feront l'objet des conversations de la journée.

Qu'il s'agisse d'une découverte scientifique majeure, d'un fait de société marquant, d'une innovation technologique révolutionnaire ou d'un phénomène viral sur les réseaux sociaux, Tom Lefèvre vous livre chaque matin les clés pour comprendre ce qui va faire le buzz. Son expertise journalistique et sa capacité à vulgariser les sujets les plus complexes font de sa chronique un moment privilégié d'information et de décryptage.

Désormais disponible en podcast et en replay, "Vous allez en entendre parler" permet à chacun de ne rien manquer de l'actualité qui compte. Une chronique qui allie pertinence éditoriale et accessibilité, faisant de Tom Lefèvre une voix incontournable de la matinale de RTL pour comprendre les enjeux du jour.

Retrouvez gratuitement l'intégralité des chroniques de Tom Lefèvre et restez connecté à l'actualité qui fait parler avec RTL.
</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;">Découvrez l'actualité dans 'Vous allez en entendre parler' de Tom Lefèvre sur RTL.</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)'" 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="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;">Les Podcasts Vous allez en entendre parler de Tom Lefèvre mis à jour en direct : toute l'actualité décryptée</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;">Vous allez en entendre parler avec Tom Lefèvre : La chronique matinale incontournable de RTL</h2>
    <p style="color: #ffffff; line-height: 1.6; text-align: center;">
        Depuis son lancement sur RTL, "Vous allez en entendre parler" s'est imposée comme la chronique de référence pour tous ceux qui souhaitent prendre une longueur d'avance sur l'actualité. Tom Lefèvre, avec son style unique et sa capacité à décrypter l'information, propose chaque matin à 6h09 un éclairage pertinent sur les sujets qui vont animer la journée.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Le succès de la chronique repose sur l'expertise journalistique de Tom Lefèvre, qui a su créer un rendez-vous quotidien alliant pertinence et accessibilité. Chaque jour, il aborde des thématiques variées : actualités marquantes, phénomènes de société, innovations technologiques, tendances émergentes, ou encore sujets insolites qui ne manqueront pas de faire parler.
    </p>
    <p style="color: #ffffff; line-height: 1.6; margin-top: 15px; text-align: center;">
        Aujourd'hui disponible en podcast et en replay, la chronique constitue une ressource précieuse pour tous ceux qui souhaitent comprendre les enjeux de l'actualité. Avec un regard aiguisé et une analyse approfondie, Tom Lefèvre aide chacun à mieux appréhender les sujets qui feront l'actualité du jour. Une chronique qui allie expertise journalistique et format accessible, faisant de "Vous allez en entendre parler" un rendez-vous incontournable des matinales de RTL pour anticiper et comprendre l'actualité qui fera buzzer.
    </p>
    <div style="margin-top: 20px;">
        <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSuRNpH9O8PgdOwqQofFh1uDMRfHnSl3Ge9rg&amp;s" alt="François Lenglet dans les studios de RTL" 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.rtl.fr/~c/300v300/rtl/www/1682146-tom-lefevre-rtl-1400x1400.jpg" alt="Tom Lefèvre portrait" style="width: 100%; height: 100%; object-fit: cover;">
    </div>
    <div style="text-align: center;">
        <h2 style="color: #00ffff; margin-bottom: 20px;">Tom Lefèvre : Le Journaliste qui Décrypte l'Actualité sur RTL</h2>
        <p style="color: #ffffff; line-height: 1.8;">
Tom Lefèvre s'est imposé comme l'une des voix incontournables de RTL, apportant chaque matin un éclairage unique sur l'actualité qui fera parler dans la journée. Sa chronique "Vous allez en entendre parler" est devenue un rendez-vous essentiel pour les auditeurs de la station.

Parcours professionnel :
• Formation en journalisme
• Débuts dans le journalisme radio
• Chroniqueur sur RTL
• Animateur de la chronique "Vous allez en entendre parler"

Émission phare :
• "Vous allez en entendre parler" - Chronique quotidienne à 6h09 sur RTL

Style et approche :
• Analyse pointue de l'actualité
• Capacité à vulgariser des sujets complexes
• Ton dynamique et accessible
• Sens aigu de l'information qui fera débat

Impact sur l'information :
• Décryptage quotidien des sujets d'actualité
• Mise en lumière des tendances émergentes
• Analyse des phénomènes de société
• Anticipation des sujets qui feront l'actualité

Sur RTL, sa chronique matinale "Vous allez en entendre parler" est devenue une référence pour comprendre les enjeux de l'actualité. Avec son style journalistique affûté et sa capacité à identifier les sujets qui vont marquer la journée, il offre aux auditeurs une longueur d'avance sur l'information.

Tom Lefèvre se distingue par sa capacité à traiter aussi bien les sujets sérieux que les tendances plus légères, toujours avec le même professionnalisme et la même pertinence. Son travail de décryptage permet aux auditeurs de mieux comprendre les enjeux qui façonnent notre quotidien.

À travers sa chronique, il continue d'apporter chaque jour un éclairage précieux sur l'actualité, faisant de "Vous allez en entendre parler" un moment incontournable de la matinale de RTL. Sa présence sur les ondes contribue à faire de l'information un contenu accessible et compréhensible pour tous les auditeurs.
</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://www.estrepublicain.fr/social/2024/01/11/dans-le-quotidien-d-un-matinalier-de-rtl-tom-lefevre-se-leve-a-1-h-36-c-est-un-peu-une-vie-de-moine" 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); }">• Tom Lefèvre, journaliste matinalier de RTL - L'Est Républicain</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.audiomeans.fr/feed/4c60fabe-f5e8-47c6-9cbf-161ecc69ea35.xml";
        const proxyUrl = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(rssUrl)}&api_key=int3lqiwwrpnsvem6yki0mtwki2f4qcvcxtrlyea&count=300`;
        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://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRQgsL7c08dhQekgm-gw8ct1e7JRc_e494LCg&s";

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 : Vous allez en entendre parler de Tom Lefèvre de RTL sur 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 : Vous allez en entendre parler de Tom Lefèvre de RTL sur RadiostreamR !";
            const url = window.location.href;
            window.open(`https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`, '_blank');
        };

        window.shareOnFacebook = function() {
          const text = "Écoutez les podcasts : Vous allez en entendre parler de Tom Lefèvre de RTL sur 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 : Vous allez en entendre parler de Tom Lefèvre de RTL sur 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-ff035ad e-con-full e-flex e-con e-parent" data-id="ff035ad" data-element_type="container">
				<div class="elementor-element elementor-element-b558482 elementor-widget elementor-widget-html" data-id="b558482" data-element_type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<html><head>
  <meta name=" viewport"="" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  <style>
    .rs-carousel-section {
      padding: 50px 0; 
      background: linear-gradient(45deg, #1a1a1a, #2c2c2c, #0e4d4d);
      background-size: 400% 400%;
      animation: rs-gradientBG 15s ease infinite;
      color: #ffffff;
      font-family: 'Roboto', sans-serif;
      min-height: flex; 
      display: flex;
      flex-direction: column;
      align-items: center;
    }

    .rs-title {
      color: #00ffff;
      text-align: center;
      margin: 2rem 0;
      font-size: 2rem;
      text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-container {
      max-width: auto;
      width: 100%;
      position: relative;
      padding: 20px 250px; 
      box-sizing: border-box;
      overflow: hidden;
      margin: 0 auto; 
    }

    .rs-carousel {
      display: flex;
      overflow: hidden;
      scroll-behavior: smooth;
      gap: 20px;
      padding: 20px 0 0 0;
      transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
    }

    .rs-radio-card {
      min-width: 250px;
      flex: 0 0 250px;
      background: rgba(255, 255, 255, 0.1);
      border-radius: 15px;
      text-align: center;
      transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
      border: 2px solid #00ffff;
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.2);
      position: relative;
      overflow: hidden;
      transform-origin: center center;
      padding: 20px 15px; /* Add consistent padding */
    }

    .rs-radio-card.rs-scrolling {
      transform: scale(0.95) rotate(-2deg);
    }

    .rs-radio-card::before {
      content: '';
      position: absolute;
      top: 0;
      left: -100%;
      width: 100%;
      height: 100%;
      background: linear-gradient(90deg, transparent, rgba(0, 255, 255, 0.1), transparent);
      transition: 0.5s;
    }

    .rs-radio-card:hover::before {
      left: 100%;
    }

    .rs-radio-card:hover {
      transform: translateY(-5px) scale(1.02);
      box-shadow: 0 10px 30px rgba(0, 255, 255, 0.3);
      z-index: 1;
    }

    .rs-radio-logo {
      width: 120px;
      height: 120px;
      border-radius: 50%;
      margin-bottom: 1rem;
      border: 3px solid #00ffff;
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
      transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      cursor: pointer; /* Add cursor pointer to indicate interactivity */
    }

    .rs-radio-logo:hover {
      transform: rotateY(180deg) scale(1.15);
      border-color: #ff00ff;
      box-shadow: 
        0 0 25px rgba(0, 255, 255, 0.5),
        0 0 50px rgba(255, 0, 255, 0.3);
      animation: logoGlow 1.5s infinite alternate;
    }

    @keyframes logoGlow {
      0% {
        box-shadow: 0 0 25px rgba(0, 255, 255, 0.5),
                    0 0 50px rgba(255, 0, 255, 0.3);
      }
      100% {
        box-shadow: 0 0 35px rgba(0, 255, 255, 0.8),
                    0 0 70px rgba(255, 0, 255, 0.6);
      }
    }

    .rs-radio-name {
      font-size: 1.2rem; /* Reduced from 1.5rem */
      margin: 15px 0;
      color: #00ffff;
      transition: all 0.3s ease;
      position: relative; /* Added */
    }

    /* Add hover state for radio name span elements */
    .rs-radio-name span:first-child {
      display: inline-block;
      transition: opacity 0.3s ease;
    }

    .rs-radio-name span:last-child {
      position: absolute;
      left: 50%;
      transform: translateX(-50%);
      opacity: 0;
      transition: opacity 0.3s ease;
      width: 100%;
    }

    .rs-radio-card:hover .rs-radio-name span:first-child {
      opacity: 0;
    }

    .rs-radio-card:hover .rs-radio-name span:last-child {
      opacity: 1;
    }

    .rs-listen-button {
      position: relative; /* Add this */
      background: #00ffff;
      color: #000;
      width: 60px;
      height: 60px;
      border: none;
      border-radius: 50%;
      font-size: 1.5rem;
      cursor: pointer;
      transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
      text-decoration: none;
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 1rem auto;
      overflow: hidden;
    }

    .rs-listen-button:hover {
      background: #00cccc;
      transform: scale(1.1) rotate(360deg);
      box-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
    }

    .rs-listen-button::before {
      content: "Voir la webradio";
      position: absolute;
      bottom: -30px;
      left: 50%;
      transform: translateX(-50%);
      background: rgba(0, 255, 255, 0.9);
      color: #000;
      padding: 5px 10px;
      border-radius: 4px;
      font-size: 12px;
      white-space: nowrap;
      opacity: 0;
      visibility: hidden;
      transition: all 0.3s ease;
    }

    .rs-listen-button:hover::before {
      opacity: 1;
      visibility: visible;
      bottom: -35px;
    }

    .rs-listen-button:hover i {
      animation: rs-colorChange 2s infinite;
    }

    @keyframes rs-colorChange {
      0% { color: #ff0000; }
      20% { color: #ff7700; }
      40% { color: #ffff00; }
      60% { color: #00ff00; }
      80% { color: #0000ff; }
      100% { color: #ff0000; }
    }

    .rs-listen-button::after {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle, transparent 30%, rgba(255, 255, 255, 0.3) 70%);
      animation: rs-pulseGlow 2s infinite;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-listen-button:hover::after {
      opacity: 1;
    }

    @keyframes rs-pulseGlow {
      0% {
        transform: scale(0.95);
        opacity: 0.5;
      }
      50% {
        transform: scale(1.1);
        opacity: 0.2;
      }
      100% {
        transform: scale(0.95);
        opacity: 0.5;
      }
    }

    .rs-carousel-button {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
      background: rgba(0, 255, 255, 0.2);
      border: none;
      width: 40px;
      height: 40px;
      border-radius: 50%;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #00ffff;
      font-size: 1.5rem;
      transition: all 0.3s ease;
      z-index: 2;
      overflow: hidden; /* Add this for ripple effect */
    }

    .rs-carousel-button:hover {
      background: rgba(0, 255, 255, 0.2);
      transform: translateY(-50%) scale(1.1);
      box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
    }

    .rs-carousel-button::before {
      content: '';
      position: absolute;
      width: 100%;
      height: 100%;
      background: radial-gradient(circle at center, rgba(0, 255, 255, 0.8) 0%, transparent 70%);
      transform: scale(0);
      opacity: 0;
      transition: transform 0.5s ease-out, opacity 0.3s ease;
    }

    .rs-carousel-button:hover::before {
      transform: scale(2);
      opacity: 0.3;
    }

    .rs-carousel-button:hover i {
      animation: arrowBounce 0.5s ease infinite alternate;
    }

    @keyframes arrowBounce {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(3px);
      }
    }

    .rs-carousel-button.rs-prev:hover i {
      animation: arrowBounceLeft 0.5s ease infinite alternate;
    }

    @keyframes arrowBounceLeft {
      from {
        transform: translateX(0);
      }
      to {
        transform: translateX(-3px);
      }
    }

    .rs-carousel-button.rs-prev {
      left: 0;
    }

    .rs-carousel-button.rs-next {
      right: 0;
    }

    @keyframes rs-floatingNotesCard {
      0% {
        opacity: 0;
        transform: translate(0, 0) rotate(0deg);
      }
      50% {
        opacity: 1;
      }
      100% {
        opacity: 0;
        transform: translate(-50px, -50px) rotate(360deg);
      }
    }

    .rs-card-notes {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0;
      left: 0;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.3s;
    }

    .rs-radio-card:hover .rs-card-notes {
      opacity: 1;
    }

    .rs-card-note {
      position: absolute;
      font-size: 20px;
      color: #00ffff;
      animation: rs-floatingNotesCard 2s ease-out infinite;
    }

    .rs-card-note-1 { top: 10%; left: 10%; animation-delay: 0s; }
    .rs-card-note-2 { top: 5%; left: 30%; animation-delay: 0.3s; }
    .rs-card-note-3 { top: 15%; left: 50%; animation-delay: 0.6s; }
    .rs-card-note-4 { top: 8%; left: 70%; animation-delay: 0.9s; }
    .rs-card-note-5 { top: 12%; left: 90%; animation-delay: 1.2s; }

    .rs-radio-tag {
      position: absolute;
      top: 10px;
      right: 10px;
      padding: 5px 12px;
      font-size: 0.8rem;
      border-radius: 15px;
      background: rgba(0, 0, 0, 0.7);
      color: #fff;
      border: 1px solid #00ffff;
      box-shadow: 0 0 5px #00ffff,
                  inset 0 0 5px #00ffff;
      text-transform: uppercase;
      letter-spacing: 1px;
      transition: all 0.3s ease;
      transform-style: preserve-3d;
      perspective: 1000px;
      cursor: pointer;
    }
    
    .rs-radio-tag i {
      margin-right: 5px;
      color: #00ffff;
      text-shadow: 0 0 5px #00ffff,
                   0 0 10px #00ffff,
                   0 0 15px #00ffff;
    }

    /* Add hover effects */
    .rs-radio-tag:hover {
      transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      box-shadow: 0 0 15px #00ffff,
                  inset 0 0 10px #00ffff,
                  0 10px 20px rgba(0, 255, 255, 0.4);
      background: rgba(0, 255, 255, 0.1);
      letter-spacing: 2px;
      animation: tagFloat 1s ease-in-out infinite alternate;
    }

    /* Add new keyframe animation */
    @keyframes tagFloat {
      0% {
        transform: translateZ(20px) rotateX(10deg) rotateY(-10deg);
      }
      100% {
        transform: translateZ(30px) rotateX(15deg) rotateY(-15deg);
        text-shadow: 2px 2px 4px rgba(0, 255, 255, 0.6);
      }
    }

    /* Add before/after elements for 3D effect */
    .rs-radio-tag::before {
      content: '';
      position: absolute;
      inset: -2px;
      background: linear-gradient(45deg, transparent, rgba(0, 255, 255, 0.3), transparent);
      transform: translateZ(-1px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag::after {
      content: '';
      position: absolute;
      inset: -1px;
      background: linear-gradient(-45deg, transparent, rgba(0, 255, 255, 0.2), transparent);
      transform: translateZ(-2px);
      opacity: 0;
      transition: opacity 0.3s ease;
    }

    .rs-radio-tag:hover::before,
    .rs-radio-tag:hover::after {
      opacity: 1;
    }

    @keyframes rs-floatingNotes {
      0% {
        transform: translateY(0) rotate(0deg) scale(1);
        opacity: 0;
      }
      50% {
        transform: translateY(-20px) rotate(180deg) scale(1.2);
        opacity: 1;
      }
      100% {
        transform: translateY(-40px) rotate(360deg) scale(1);
        opacity: 0;
      }
    }

    @media (max-width: 768px) {
      .rs-carousel-section {
        padding: 30px 0;
      }
      .rs-carousel-container {
        padding: 15px 20px; 
      }
      .rs-radio-card {
        min-width: 250px !important; /* Reduced by 20% from original 312.5px */
        flex: 0 0 250px !important; /* Reduced by 20% from original 312.5px */
      }
      /* Content size reductions */
      .rs-radio-logo {
        width: 84px !important;
        height: 84px !important;
      }
      .rs-radio-name {
        font-size: 1rem !important;
      }
      .rs-listen-button {
        width: 48px;
        height: 48px;
      }
    }

    @media (max-width: 480px) {
      .rs-carousel-section {
        padding: 20px 0;
      }
      .rs-carousel-container {
        padding: 0 30px; 
      }
      .rs-radio-card {
        min-width: 200px !important; /* Further reduced by 20% from tablet size */
        flex: 0 0 200px !important; /* Further reduced by 20% from tablet size */
      }
      /* Further reduce content for smallest screens */
      .rs-radio-logo {
        width: 76px !important;
        height: 76px !important;
        margin: 8px auto 12px !important;
      }
      .rs-radio-name {
        font-size: 0.9rem !important;
      }
      .rs-listen-button {
        width: 40px;
        height: 40px;
      }
    }
  </style>
</head>
<body>
  <div class="rs-carousel-section" id="radioendirect-carousel-section">
    <h2 class="rs-title" id="radioendirect-title" style="font-size: 24px; animation: textGlow 2s infinite; text-shadow: 0 0 10px rgba(0, 255, 255, 0.5), 0 0 20px rgba(0, 255, 255, 0.3), 0 0 30px rgba(0, 255, 255, 0.2); position: relative;">
  Nos suggestions de radios françaises en direct :
</h2>
    
    <div class="rs-carousel-container" id="radioendirect-container">
      <button class="rs-carousel-button rs-prev" id="radioendirect-prev-button">
        <i class="fas fa-chevron-left"></i>
      </button>
      
      <div class="rs-carousel" id="radioendirect-carousel" style="gap: 25px;">
        <!-- Nostalgie -->
        <div class="rs-radio-card" id="radioendirect-card-nostalgie" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://play-lh.googleusercontent.com/9h9jwQQONGEHGuKQ9nBAcXeorzgJZnStMvLZ4DNBVxb4XK3TMww-7sw3_mgjXEw3Gtk" alt="Radio Nostalgie" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Oldies</span>
          <h2 class="rs-radio-name">
            <span>Nostalgie</span>
            <span>Ecoutez en direct Nostalgie</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nostalgie/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Skyrock -->
        <div class="rs-radio-card" id="radioendirect-card-skyrock" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSQPI_29sdyigH1bVf4vwKNiM_alqz_mPWkpg&amp;s" alt="Skyrock Radio" class="rs-radio-logo" style="width: 105px; height: 105px; margin: 10px auto 15px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Hip-Hop/Rap</span>
          <h2 class="rs-radio-name">
            <span>Skyrock</span>
            <span>Ecoutez en direct Skyrock</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-skyrock/" class="rs-listen-button" style="margin: 15px auto 10px;">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Oui FM -->
        <div class="rs-radio-card" id="radioendirect-card-ouifm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/3/33/Oui_FM_2014_logo.png" alt="OUI FM logo" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-guitar"></i>Rock</span>
          <h2 class="rs-radio-name">
            <span>OUI FM</span>
            <span>Ecoutez en direct OUI FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-oui-fm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Add after the FIP card and before RMC -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRqDXL7XUgfkYyaczESXMRcGb0tP07fBd2h5A&s" alt="Chérie FM Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Love</span>
          <h2 class="rs-radio-name">
            <span>Chérie FM</span>
            <span>Ecoutez en direct Chérie FM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-cheriefm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/1/19/RFM_logo_2011.png" alt="RFM" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>80s</span>
          <h2 class="rs-radio-name">
            <span>RFM</span>
            <span>Ecoutez en direct RFM</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rfm/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Chérie FM -->
        <div class="rs-radio-card" id="radioendirect-card-cheriefm" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn.uc.assets.prezly.com/b1be11c1-7593-48e0-b0d3-dfedd93ef5a2/" alt="NRJ Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Dance</span>
          <h2 class="rs-radio-name">
            <span>NRJ</span>
            <span>Ecoutez en direct NRJ</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-nrj/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- RTL2 -->
        <div class="rs-radio-card" id="radioendirect-card-rtl2" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/f/fa/RTL2_logo_2015.svg/1200px-RTL2_logo_2015.svg.png" alt="RTL2 Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Pop/Rock</span>
          <h2 class="rs-radio-name">
            <span>RTL2</span>
            <span>Ecoutez en direct RTL2</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl2/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <div class="rs-radio-card" id="radioendirect-card-sudradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <!-- RTL -->
          <div class="rs-radio-card" id="radioendirect-card-rtl" style="min-width: 312.5px; flex: 0 0 312.5px;">
            <div class="rs-card-notes">
              <span class="rs-card-note rs-card-note-1">♪</span>
              <span class="rs-card-note rs-card-note-2">♫</span>
              <span class="rs-card-note rs-card-note-3">♬</span>
              <span class="rs-card-note rs-card-note-4">♪</span>
              <span class="rs-card-note rs-card-note-5">♫</span>
            </div>
            <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/RTL_logo.svg/1200px-RTL_logo.svg.png" alt="RTL Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
            <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
            <h2 class="rs-radio-name">
              <span>RTL</span>
              <span>Ecoutez en direct RTL</span>
            </h2>
            <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rtl/" class="rs-listen-button">
              <i class="fas fa-play" style="font-size: 0.75rem"></i>
            </a>
          </div>
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Logo_Sud_Radio_2014.svg/1200px-Logo_Sud_Radio_2014.svg.png" alt="Sud Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Sud Radio</span>
            <span>Ecoutez en direct Sud Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-sud-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- RMC -->
        <div class="rs-radio-card" id="radioendirect-card-rmc" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://yt3.googleusercontent.com/ytc/AIdro_k7rcILtB71q3kwlCwX14_jfamwiA4_U74MX8PZ6-sC7Rk=s900-c-k-c0x00ffffff-no-rj" alt="RMC Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Sport</span>
          <h2 class="rs-radio-name">
            <span>RMC</span>
            <span>Ecoutez en direct RMC</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rmc/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Europe 1 -->
        <div class="rs-radio-card" id="radioendirect-card-europe1" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://cdn-europe1.lanmedia.fr/var/europe1/storage/images/europe1/animateurs/europe-12/53472641-3-fre-FR/Europe-1.png" alt="Europe 1" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Talk</span>
          <h2 class="rs-radio-name">
            <span>Europe 1</span>
            <span>Ecoutez en direct Europe 1</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-europe1/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>
        
        <!-- Rire et Chansons -->
        <div class="rs-radio-card" id="radioendirect-card-rireetchansons" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRGs-8gbq-CxVHtpgHNRgIYFLwJ8yaNPmC-1A&amp;s" alt="Rire et Chansons" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-laugh"></i>Humour</span>
          <h2 class="rs-radio-name">
            <span>Rire et Chansons</span>
            <span>Ecoutez en direct Rire et Chansons</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-rire-et-chansons/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- Fun Radio -->
        <div class="rs-radio-card" id="radioendirect-card-funradio" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/commons/e/ef/Fun_Radio_2021_logo.png" alt="Fun Radio" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-music"></i>Dance/Electro</span>
          <h2 class="rs-radio-name">
            <span>Fun Radio</span>
            <span>Ecoutez en direct Fun Radio</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-fun-radio/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

        <!-- France Inter -->
        <div class="rs-radio-card" id="radioendirect-card-franceinter" style="min-width: 312.5px; flex: 0 0 312.5px;">
          <div class="rs-card-notes">
            <span class="rs-card-note rs-card-note-1">♪</span>
            <span class="rs-card-note rs-card-note-2">♫</span>
            <span class="rs-card-note rs-card-note-3">♬</span>
            <span class="rs-card-note rs-card-note-4">♪</span>
            <span class="rs-card-note rs-card-note-5">♫</span>
          </div>
          <img decoding="async" src="https://upload.wikimedia.org/wikipedia/fr/thumb/3/39/France_Inter_logo.svg/2048px-France_Inter_logo.svg.png" alt="France Inter" class="rs-radio-logo" style="width: 105px; height: 105px;">
          <span class="rs-radio-tag"><i class="fas fa-microphone"></i>Info/Culture</span>
          <h2 class="rs-radio-name">
            <span>France Inter</span>
            <span>Ecoutez en direct France Inter</span>
          </h2>
          <a href="https://radiostreamr.com/radio-france/ecoutez-en-direct-france-inter/" class="rs-listen-button">
            <i class="fas fa-play" style="font-size: 0.75rem"></i>
          </a>
        </div>

      </div>

      <button class="rs-carousel-button rs-next" id="radioendirect-next-button">
        <i class="fas fa-chevron-right"></i>
      </button>
    </div>
  </div>

  <script>
    (function() {
      class RadioStreamrCarousel {
        constructor(selector) {
          this.container = document.querySelector(selector);
          this.carousel = this.container.querySelector('.rs-carousel');
          this.allCards = Array.from(this.container.querySelectorAll('.rs-radio-card')); // Store all cards
          this.prevButton = this.container.querySelector('.rs-carousel-button.rs-prev');

          // Select random 9 cards
          this.selectRandomCards();
          
          // Initialize properties after cards are selected
          this.cards = Array.from(this.container.querySelectorAll('.rs-radio-card'));
          this.currentIndex = 0;
          this.cardWidth = this.cards[0].offsetWidth + 20;
          this.cardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
          this.maxIndex = this.cards.length - this.cardsPerView;
          this.nextButton = this.container.querySelector('.rs-carousel-button.rs-next');

          this.init();
        }

        selectRandomCards() {
          // Remove all cards from carousel
          this.allCards.forEach(card => card.remove());

          // Randomly select 9 cards
          const shuffled = [...this.allCards].sort(() => 0.5 - Math.random());
          const selected = shuffled.slice(0, 9);
          
          // Add selected cards back to carousel
          selected.forEach(card => {
            this.carousel.appendChild(card);
          });
        }

        init() {
          this.bindEvents();
        }

        scrollToIndex(index) {
          // Handle infinite loop
          if (index < 0) {
            this.currentIndex = this.cards.length - this.cardsPerView;
          } else if (index > this.maxIndex) {
            this.currentIndex = 0;
          } else {
            this.currentIndex = index;
          }
          
          // Add scrolling class to cards
          this.cards.forEach(card => {
            card.classList.add('rs-scrolling');
            setTimeout(() => card.classList.remove('rs-scrolling'), 500);
          });

          // Scroll with animation
          this.carousel.scrollTo({
            left: this.currentIndex * this.cardWidth,
            behavior: 'smooth'
          });

          // Create floating notes effect
          const notes = ['♪', '♫', '♬'];
          for(let i = 0; i < 3; i++) {
            const note = document.createElement('span');
            note.textContent = notes[Math.floor(Math.random() * notes.length)];
            note.style.cssText = `
              position: absolute;
              color: #00ffff;
              font-size: 24px;
              top: ${50 + Math.random() * 100}px;
              left: ${50 + Math.random() * (this.carousel.offsetWidth - 100)}px;
              animation: rs-floatingNotes 1s ease-out ${i * 0.2}s forwards;
              pointer-events: none;
            `;
            this.carousel.appendChild(note);
            setTimeout(() => note.remove(), 1000 + i * 200);
          }
        }

        bindEvents() {
          this.prevButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex - 1));
          this.nextButton.addEventListener('click', () => this.scrollToIndex(this.currentIndex + 1));

          window.addEventListener('resize', () => {
            const newCardsPerView = Math.floor(this.carousel.offsetWidth / this.cardWidth);
            const newMaxIndex = this.cards.length - newCardsPerView;
            this.currentIndex = Math.min(this.currentIndex, newMaxIndex);
            this.scrollToIndex(this.currentIndex);
          });
        }
      }

      document.addEventListener('DOMContentLoaded', function() {
        new RadioStreamrCarousel('.rs-carousel-section');
      });
    })();
  </script>
</body></html>				</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-0d0797d e-con-full e-flex e-con e-parent" data-id="0d0797d" data-element_type="container" data-settings="{&quot;background_background&quot;:&quot;classic&quot;}">
				<div class="elementor-element elementor-element-9260360 elementor-widget elementor-widget-shortcode" data-id="9260360" 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-vous-allez-en-entendre-parler/">🗣️ Podcast et Replay Vous allez en entendre parler sur RTL</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-vous-allez-en-entendre-parler/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
