{"id":762,"date":"2024-03-19T10:05:42","date_gmt":"2024-03-19T10:05:42","guid":{"rendered":"http:\/\/localhost:9090\/goodiptvservices\/wordpress\/?page_id=762"},"modified":"2026-04-16T19:04:35","modified_gmt":"2026-04-16T19:04:35","slug":"liste-des-chaines","status":"publish","type":"page","link":"https:\/\/goodiptvservices.com\/en\/liste-des-chaines\/","title":{"rendered":"Channel List"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"762\" class=\"elementor elementor-762\">\n\t\t\t\t<div class=\"elementor-element elementor-element-768413e e-con-full e-flex e-con e-parent\" data-id=\"768413e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-94eb751 pt-100 elementor-widget elementor-widget-Section\" data-id=\"94eb751\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"Section.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n        <div class=\"container mw-1356\">\r\n            <div class=\"section-title mw-690 m-auto text-center\" data-cues=\"zoomOut\">\r\n                                    <span class=\"top-title\"> CANAL<\/span>\r\n                                <h2>\r\n                                    <\/h2>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a28062 elementor-widget elementor-widget-html\" data-id=\"7a28062\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"fr\">\r\n<head>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n  <title>Cha\u00eenes TV par Pays<\/title>\r\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\r\n\r\n  <style>\r\n    :root {\r\n      --bg-main: transparent;\r\n      --panel: rgba(255, 248, 240, 0.08);\r\n      --panel-2: rgba(255, 248, 240, 0.12);\r\n      --border: rgba(255, 236, 217, 0.18);\r\n      --text: #fff7ef;\r\n      --text-soft: rgba(255, 247, 239, 0.82);\r\n      --text-muted: rgba(255, 247, 239, 0.62);\r\n      --accent: #ffd29b;\r\n      --accent-2: #ffb35c;\r\n      --accent-3: #8b4513;\r\n      --chip-bg: rgba(255, 232, 209, 0.12);\r\n      --chip-active: linear-gradient(135deg, #ffcf95, #ffab4d);\r\n      --table-head: #f5d2a7;\r\n      --table-head-text: #4b2409;\r\n      --table-row: rgba(255, 250, 245, 0.96);\r\n      --table-row-alt: rgba(249, 239, 227, 0.96);\r\n      --table-text: #3d200d;\r\n      --shadow: 0 12px 30px rgba(40, 18, 5, 0.18);\r\n      --radius-xl: 24px;\r\n      --radius-lg: 18px;\r\n      --radius-md: 14px;\r\n      --container: 1280px;\r\n    }\r\n\r\n    * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    html {\r\n      scroll-behavior: smooth;\r\n    }\r\n\r\n    body {\r\n      margin: 0;\r\n      padding: 20px 14px 36px;\r\n      font-family: Inter, Arial, sans-serif;\r\n      background: var(--bg-main);\r\n      color: var(--text);\r\n    }\r\n\r\n    .tv-browser {\r\n      width: min(100%, var(--container));\r\n      margin: 0 auto;\r\n    }\r\n\r\n    .hero {\r\n      position: relative;\r\n      overflow: hidden;\r\n      margin-bottom: 18px;\r\n      padding: 22px 18px;\r\n      border-radius: 26px;\r\n      background: linear-gradient(135deg, rgba(94, 43, 12, 0.78), rgba(139, 69, 19, 0.68));\r\n      border: 1px solid rgba(255, 222, 188, 0.18);\r\n      box-shadow: var(--shadow);\r\n    }\r\n\r\n    .hero::after {\r\n      content: \"\";\r\n      position: absolute;\r\n      right: -40px;\r\n      bottom: -40px;\r\n      width: 180px;\r\n      height: 180px;\r\n      background: radial-gradient(circle, rgba(255, 211, 155, 0.18), transparent 65%);\r\n      pointer-events: none;\r\n    }\r\n\r\n    .hero-badge {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding: 8px 12px;\r\n      margin-bottom: 12px;\r\n      border-radius: 999px;\r\n      background: rgba(255,255,255,0.08);\r\n      border: 1px solid rgba(255,255,255,0.12);\r\n      color: var(--text-soft);\r\n      font-size: 13px;\r\n    }\r\n\r\n    .hero h2 {\r\n      margin: 0;\r\n      font-size: clamp(1.8rem, 5vw, 3rem);\r\n      line-height: 1.05;\r\n      font-weight: 800;\r\n      letter-spacing: -0.03em;\r\n      color: #fff9f3;\r\n    }\r\n\r\n    .hero p {\r\n      margin: 12px 0 0;\r\n      max-width: 760px;\r\n      font-size: 1rem;\r\n      line-height: 1.6;\r\n      color: var(--text-soft);\r\n    }\r\n\r\n    .toolbar {\r\n      position: sticky;\r\n      top: 10px;\r\n      z-index: 20;\r\n      margin-bottom: 18px;\r\n      padding: 14px;\r\n      border-radius: 22px;\r\n      background: linear-gradient(180deg, rgba(92, 47, 20, 0.88), rgba(70, 34, 14, 0.88));\r\n      border: 1px solid var(--border);\r\n      box-shadow: var(--shadow);\r\n      backdrop-filter: blur(12px);\r\n      -webkit-backdrop-filter: blur(12px);\r\n    }\r\n\r\n    .toolbar-top {\r\n      display: grid;\r\n      grid-template-columns: 1fr;\r\n      gap: 12px;\r\n      margin-bottom: 12px;\r\n    }\r\n\r\n    .search-wrap {\r\n      position: relative;\r\n    }\r\n\r\n    .search-wrap input {\r\n      width: 100%;\r\n      height: 52px;\r\n      padding: 0 46px 0 16px;\r\n      border: 1px solid rgba(255, 225, 196, 0.18);\r\n      border-radius: 16px;\r\n      background: rgba(255, 249, 243, 0.1);\r\n      color: #fff8f2;\r\n      font-size: 15px;\r\n      outline: none;\r\n      transition: 0.25s ease;\r\n    }\r\n\r\n    .search-wrap input::placeholder {\r\n      color: rgba(255, 244, 232, 0.58);\r\n    }\r\n\r\n    .search-wrap input:focus {\r\n      border-color: rgba(255, 210, 155, 0.6);\r\n      background: rgba(255, 249, 243, 0.14);\r\n      box-shadow: 0 0 0 4px rgba(255, 210, 155, 0.12);\r\n    }\r\n\r\n    .search-icon {\r\n      position: absolute;\r\n      right: 14px;\r\n      top: 50%;\r\n      transform: translateY(-50%);\r\n      color: var(--text-muted);\r\n      font-size: 18px;\r\n      pointer-events: none;\r\n    }\r\n\r\n    .meta {\r\n      display: grid;\r\n      grid-template-columns: 1fr;\r\n      gap: 10px;\r\n    }\r\n\r\n    .meta-card {\r\n      min-height: 68px;\r\n      padding: 12px 14px;\r\n      border-radius: 16px;\r\n      background: rgba(255, 248, 240, 0.08);\r\n      border: 1px solid rgba(255, 236, 217, 0.14);\r\n      display: flex;\r\n      flex-direction: column;\r\n      justify-content: center;\r\n    }\r\n\r\n    .meta-label {\r\n      font-size: 12px;\r\n      color: var(--text-muted);\r\n      margin-bottom: 4px;\r\n      text-transform: uppercase;\r\n      letter-spacing: 0.08em;\r\n    }\r\n\r\n    .meta-value {\r\n      font-size: 1rem;\r\n      font-weight: 700;\r\n      color: var(--text);\r\n    }\r\n\r\n    .filters-title {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 12px;\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .filters-title h3 {\r\n      margin: 0;\r\n      font-size: 14px;\r\n      font-weight: 700;\r\n      letter-spacing: 0.05em;\r\n      text-transform: uppercase;\r\n      color: var(--text-soft);\r\n    }\r\n\r\n    .reset-btn {\r\n      border: 0;\r\n      background: transparent;\r\n      color: var(--accent);\r\n      font-size: 14px;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      padding: 6px 0;\r\n    }\r\n\r\n    .reset-btn:hover {\r\n      color: #ffe3bf;\r\n    }\r\n\r\n    .country-scroll {\r\n      overflow-x: auto;\r\n      overflow-y: hidden;\r\n      -webkit-overflow-scrolling: touch;\r\n      scrollbar-width: none;\r\n    }\r\n\r\n    .country-scroll::-webkit-scrollbar {\r\n      display: none;\r\n    }\r\n\r\n    .country-buttons {\r\n      display: inline-flex;\r\n      gap: 10px;\r\n      min-width: 100%;\r\n      padding-bottom: 2px;\r\n    }\r\n\r\n    .country-button {\r\n      min-height: 46px;\r\n      padding: 10px 14px;\r\n      border-radius: 999px;\r\n      border: 1px solid rgba(255, 228, 199, 0.16);\r\n      background: var(--chip-bg);\r\n      color: #fff8f2;\r\n      font-size: 14px;\r\n      font-weight: 600;\r\n      white-space: nowrap;\r\n      cursor: pointer;\r\n      transition: 0.25s ease;\r\n      touch-action: manipulation;\r\n    }\r\n\r\n    .country-button:hover {\r\n      background: rgba(255, 233, 210, 0.18);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    .country-button.active {\r\n      background: var(--chip-active);\r\n      color: #53280d;\r\n      border-color: transparent;\r\n      box-shadow: 0 8px 18px rgba(255, 179, 92, 0.22);\r\n    }\r\n\r\n    .country-button.highlight {\r\n      box-shadow: inset 0 0 0 1px rgba(255, 210, 155, 0.18);\r\n    }\r\n\r\n    .panel {\r\n      padding: 16px;\r\n      border-radius: 24px;\r\n      background: linear-gradient(180deg, rgba(88, 44, 18, 0.7), rgba(60, 29, 12, 0.72));\r\n      border: 1px solid var(--border);\r\n      box-shadow: var(--shadow);\r\n    }\r\n\r\n    .results-head {\r\n      margin-bottom: 14px;\r\n    }\r\n\r\n    .results-title {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 10px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    .results-title h3 {\r\n      margin: 0;\r\n      font-size: 1.08rem;\r\n      color: var(--text);\r\n    }\r\n\r\n    .subtext {\r\n      margin-top: 8px;\r\n      color: var(--text-muted);\r\n      font-size: 14px;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    .loader {\r\n      display: none;\r\n      padding: 22px 0 12px;\r\n    }\r\n\r\n    .loader.show {\r\n      display: block;\r\n    }\r\n\r\n    .skeleton-list {\r\n      display: grid;\r\n      gap: 12px;\r\n    }\r\n\r\n    .skeleton {\r\n      height: 78px;\r\n      border-radius: 16px;\r\n      background:\r\n        linear-gradient(\r\n          90deg,\r\n          rgba(255,255,255,0.04) 25%,\r\n          rgba(255,255,255,0.1) 37%,\r\n          rgba(255,255,255,0.04) 63%\r\n        );\r\n      background-size: 400% 100%;\r\n      animation: shimmer 1.2s infinite linear;\r\n      border: 1px solid rgba(255,255,255,0.05);\r\n    }\r\n\r\n    @keyframes shimmer {\r\n      0% { background-position: 100% 0; }\r\n      100% { background-position: 0 0; }\r\n    }\r\n\r\n    .empty-state,\r\n    .error-state {\r\n      display: none;\r\n      padding: 32px 16px;\r\n      text-align: center;\r\n      border-radius: 18px;\r\n      background: rgba(255, 248, 240, 0.08);\r\n      border: 1px dashed rgba(255, 236, 217, 0.18);\r\n    }\r\n\r\n    .empty-state.show,\r\n    .error-state.show {\r\n      display: block;\r\n    }\r\n\r\n    .empty-state strong,\r\n    .error-state strong {\r\n      display: block;\r\n      margin-bottom: 8px;\r\n      font-size: 1rem;\r\n      color: var(--text);\r\n    }\r\n\r\n    .empty-state p,\r\n    .error-state p {\r\n      margin: 0;\r\n      line-height: 1.55;\r\n      color: var(--text-soft);\r\n    }\r\n\r\n    .cards {\r\n      display: grid;\r\n      grid-template-columns: 1fr;\r\n      gap: 12px;\r\n    }\r\n\r\n    .channel-card {\r\n      padding: 14px;\r\n      border-radius: 18px;\r\n      background: rgba(255, 248, 240, 0.08);\r\n      border: 1px solid rgba(255, 236, 217, 0.14);\r\n      transition: 0.25s ease;\r\n    }\r\n\r\n    .channel-card:hover {\r\n      transform: translateY(-2px);\r\n      background: rgba(255, 248, 240, 0.12);\r\n      border-color: rgba(255, 210, 155, 0.24);\r\n    }\r\n\r\n    .channel-card-head {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 10px;\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .country-tag {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding: 8px 12px;\r\n      border-radius: 999px;\r\n      background: rgba(255, 244, 232, 0.12);\r\n      border: 1px solid rgba(255, 236, 217, 0.12);\r\n      color: #fff6ef;\r\n      font-size: 13px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .channel-name {\r\n      font-size: 15px;\r\n      line-height: 1.55;\r\n      color: #fffaf6;\r\n      word-break: break-word;\r\n    }\r\n\r\n    .table-wrap {\r\n      display: none;\r\n      overflow-x: auto;\r\n      border-radius: 18px;\r\n      border: 1px solid rgba(255, 236, 217, 0.14);\r\n      background: rgba(255,255,255,0.02);\r\n    }\r\n\r\n    table {\r\n      width: 100%;\r\n      min-width: 720px;\r\n      border-collapse: collapse;\r\n    }\r\n\r\n    thead th {\r\n      padding: 16px;\r\n      text-align: left;\r\n      background: var(--table-head);\r\n      color: var(--table-head-text);\r\n      font-size: 14px;\r\n      font-weight: 800;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    tbody td {\r\n      padding: 14px 16px;\r\n      border-top: 1px solid rgba(90, 49, 21, 0.12);\r\n      color: var(--table-text);\r\n      font-size: 14px;\r\n      vertical-align: middle;\r\n      background: var(--table-row);\r\n    }\r\n\r\n    tbody tr:nth-child(even) td {\r\n      background: var(--table-row-alt);\r\n    }\r\n\r\n    tbody tr:hover td {\r\n      background: #f4e1c9;\r\n    }\r\n\r\n    .country-cell {\r\n      font-weight: 700;\r\n      color: #5a2f15;\r\n    }\r\n\r\n    .channel-cell {\r\n      font-weight: 600;\r\n      color: #3d200d;\r\n    }\r\n\r\n    .pagination {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-end;\r\n      gap: 10px;\r\n      flex-wrap: wrap;\r\n      margin-top: 16px;\r\n    }\r\n\r\n    .page-btn {\r\n      min-height: 44px;\r\n      min-width: 44px;\r\n      padding: 10px 14px;\r\n      border-radius: 12px;\r\n      border: 1px solid rgba(255, 228, 199, 0.16);\r\n      background: rgba(255, 248, 240, 0.08);\r\n      color: #fff8f2;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      transition: 0.25s ease;\r\n    }\r\n\r\n    .page-btn:hover:not(:disabled) {\r\n      background: rgba(255, 248, 240, 0.14);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    .page-btn:disabled {\r\n      opacity: 0.45;\r\n      cursor: not-allowed;\r\n    }\r\n\r\n    .page-current {\r\n      min-width: 110px;\r\n      text-align: center;\r\n      font-size: 14px;\r\n      font-weight: 700;\r\n      color: var(--text-soft);\r\n    }\r\n\r\n    .footer-note {\r\n      margin-top: 14px;\r\n      color: var(--text-muted);\r\n      font-size: 13px;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    @media (min-width: 768px) {\r\n      body {\r\n        padding: 26px 22px 40px;\r\n      }\r\n\r\n      .hero {\r\n        padding: 28px;\r\n      }\r\n\r\n      .toolbar-top {\r\n        grid-template-columns: 1.3fr 0.7fr;\r\n      }\r\n\r\n      .cards {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      }\r\n    }\r\n\r\n    @media (min-width: 1024px) {\r\n      .country-scroll {\r\n        overflow: visible;\r\n      }\r\n\r\n      .country-buttons {\r\n        flex-wrap: wrap;\r\n        min-width: auto;\r\n      }\r\n\r\n      .cards {\r\n        display: none;\r\n      }\r\n\r\n      .table-wrap {\r\n        display: block;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 767px) {\r\n      .hero h2 {\r\n        max-width: 14ch;\r\n      }\r\n\r\n      .toolbar,\r\n      .panel {\r\n        border-radius: 20px;\r\n      }\r\n\r\n      .country-button {\r\n        font-size: 13px;\r\n        padding: 10px 13px;\r\n      }\r\n    }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n  <div class=\"tv-browser\">\r\n    <section class=\"hero\">\r\n      <div class=\"hero-badge\">\ud83d\udcfa Catalogue IPTV<\/div>\r\n      <h2>Explorez les cha\u00eenes TV par pays<\/h2>\r\n   \r\n    <\/section>\r\n\r\n    <section class=\"toolbar\">\r\n      <div class=\"toolbar-top\">\r\n        <div class=\"search-wrap\">\r\n          <input\r\n            type=\"text\"\r\n            id=\"searchInput\"\r\n            placeholder=\"Rechercher une cha\u00eene\u2026\"\r\n            aria-label=\"Rechercher une cha\u00eene\"\r\n          \/>\r\n          <span class=\"search-icon\">\ud83d\udd0e<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"meta\">\r\n          <div class=\"meta-card\">\r\n            <div class=\"meta-label\">Pays s\u00e9lectionn\u00e9<\/div>\r\n            <div class=\"meta-value\" id=\"selectedCountryLabel\">Tous les pays<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"filters-title\">\r\n        <h3>Filtrer par pays<\/h3>\r\n        <button class=\"reset-btn\" id=\"resetFiltersBtn\" type=\"button\">R\u00e9initialiser<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"country-scroll\">\r\n        <div class=\"country-buttons\" id=\"countryButtons\"><\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"panel\">\r\n      <div class=\"results-head\">\r\n        <div class=\"results-title\">\r\n          <h3 id=\"resultsHeading\">Liste des cha\u00eenes<\/h3>\r\n        <\/div>\r\n        <div class=\"subtext\" id=\"resultsSubtext\">\r\n          Chargement des donn\u00e9es en cours\u2026\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"loader show\" id=\"loader\">\r\n        <div class=\"skeleton-list\">\r\n          <div class=\"skeleton\"><\/div>\r\n          <div class=\"skeleton\"><\/div>\r\n          <div class=\"skeleton\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"error-state\" id=\"errorState\">\r\n        <strong>Erreur de chargement<\/strong>\r\n        <p>Impossible de r\u00e9cup\u00e9rer le fichier Excel. V\u00e9rifiez l\u2019URL du fichier ou la disponibilit\u00e9 du serveur.<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"empty-state\" id=\"emptyState\">\r\n        <strong>Aucun r\u00e9sultat trouv\u00e9<\/strong>\r\n        <p>Essaie avec un autre pays ou un autre mot-cl\u00e9 dans la recherche.<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"cards\" id=\"cardsContainer\"><\/div>\r\n\r\n      <div class=\"table-wrap\">\r\n        <table>\r\n          <thead>\r\n            <tr>\r\n              <th>Pays<\/th>\r\n              <th>Cha\u00eene<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"tableBody\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <div class=\"pagination\" id=\"pagination\" style=\"display:none;\">\r\n        <button class=\"page-btn\" id=\"prevPageBtn\" type=\"button\">\u2190 Pr\u00e9c\u00e9dent<\/button>\r\n        <div class=\"page-current\" id=\"pageCurrent\">Page 1 \/ 1<\/div>\r\n        <button class=\"page-btn\" id=\"nextPageBtn\" type=\"button\">Suivant \u2192<\/button>\r\n      <\/div>\r\n\r\n  \r\n    <\/section>\r\n  <\/div>\r\n\r\n  <script>\r\n    (() => {\r\n      const fileUrl = 'https:\/\/goodiptvservices.com\/wp-content\/uploads\/2025\/06\/categorie-fahdel-1.xlsx';\r\n\r\n      const countryFlags = {\r\n        'France': '\ud83c\uddeb\ud83c\uddf7',\r\n        'Belgique': '\ud83c\udde7\ud83c\uddea',\r\n        'Allemagne': '\ud83c\udde9\ud83c\uddea',\r\n        'Espagne': '\ud83c\uddea\ud83c\uddf8',\r\n        'Italie': '\ud83c\uddee\ud83c\uddf9',\r\n        'USA': '\ud83c\uddfa\ud83c\uddf8',\r\n        'Canada': '\ud83c\udde8\ud83c\udde6',\r\n        'Europe': '\ud83c\uddea\ud83c\uddfa',\r\n        'Portugal': '\ud83c\uddf5\ud83c\uddf9',\r\n        'Suisse': '\ud83c\udde8\ud83c\udded',\r\n        'Turquie': '\ud83c\uddf9\ud83c\uddf7',\r\n        'Albanie': '\ud83c\udde6\ud83c\uddf1',\r\n        'Pologne': '\ud83c\uddf5\ud83c\uddf1',\r\n        'Arabie': '\ud83c\uddf8\ud83c\udde6',\r\n        'Pakistan': '\ud83c\uddf5\ud83c\uddf0',\r\n        'Bangladesh': '\ud83c\udde7\ud83c\udde9',\r\n        'Pays-Bas': '\ud83c\uddf3\ud83c\uddf1',\r\n        'Ex-Yougoslavie': '\ud83c\udf0d',\r\n        'Afrique': '\ud83c\udf0d',\r\n        'Asie': '\ud83c\udf0f',\r\n        '\u00c9rythr\u00e9e': '\ud83c\uddea\ud83c\uddf7',\r\n        'Colombie': '\ud83c\udde8\ud83c\uddf4',\r\n        'Chili': '\ud83c\udde8\ud83c\uddf1',\r\n        'Iranie': '\ud83c\uddee\ud83c\uddf7',\r\n        'Croatie': '\ud83c\udded\ud83c\uddf7',\r\n        'Mexico': '\ud83c\uddf2\ud83c\uddfd',\r\n        'Norv\u00e8ge': '\ud83c\uddf3\ud83c\uddf4',\r\n        'Kids': '\ud83e\uddd2',\r\n        'Autre': '\ud83c\udf10'\r\n      };\r\n\r\n      const countryPatterns = {\r\n        'Arabie': \/AR[:|]|ARABE|OSN|ISLAMIQUE\/i,\r\n        'France': \/FR[:|]|france|canal|tnt\/i,\r\n        'Belgique': \/BE[:|]|belgique|belge\/i,\r\n        'Allemagne': \/DE[:|]|allemagne|deutsch|german\/i,\r\n        'Espagne': \/ES[:|]|espagne|espa\u00f1a|espan\/i,\r\n        'Italie': \/IT[:|]|italie|italia\/i,\r\n        'USA': \/US[:|]|usa|america\/i,\r\n        'Canada': \/canada|ca\\b\/i,\r\n        'Portugal': \/PT[:|]|portugal\/i,\r\n        'Suisse': \/CH[:|]|suisse|swiss\/i,\r\n        'Turquie': \/TR[:|]|turquie\/i,\r\n        'Albanie': \/AL[:|]|albanie\/i,\r\n        'Pologne': \/PL[:|]|pologne|polsat\/i,\r\n        'Pakistan': \/PK[:|]|pakistan\/i,\r\n        'Bangladesh': \/BD[:|]|bangladesh\/i,\r\n        'Colombie': \/COL[:|]|colombie\/i,\r\n        'Chili': \/CL[:|]|chili\/i,\r\n        'Iranie': \/IR[:|]|iran\/i,\r\n        'Croatie': \/HR[:|]|croatie\/i,\r\n        'Mexico': \/MX[:|]|mexico|mexique\/i,\r\n        'Norv\u00e8ge': \/NO[:|]|norvege|norway\/i,\r\n        'Kids': \/\\bKIDS\\b\/i,\r\n        'Pays-Bas': \/NETHERLANDS|holland|nl\\b\/i,\r\n        'Afrique': \/AF[:|]|afrique\/i,\r\n        'Asie': \/AS[:|]|asie|asia\/i,\r\n        'Ex-Yougoslavie': \/EX-YU|yougoslavie|balkan\/i,\r\n        '\u00c9rythr\u00e9e': \/erythree|eritrea\/i\r\n      };\r\n\r\n      const prefixBlacklist = {\r\n        'Albanie': ['AF', 'US'],\r\n        'Canada': ['AF', 'US', 'PL', 'PT']\r\n      };\r\n\r\n      const priorityOrder = [\"France\", \"Belgique\", \"Allemagne\", \"Espagne\", \"Italie\", \"Arabie\"];\r\n      const highlightCountries = [\"France\", \"Espagne\", \"Belgique\", \"Italie\", \"Allemagne\", \"Arabie\"];\r\n\r\n      let allRows = [];\r\n      let filteredRows = [];\r\n      let currentPage = 1;\r\n      let selectedCountry = 'all';\r\n      let searchTerm = '';\r\n\r\n      const searchInput = document.getElementById('searchInput');\r\n      const countryButtons = document.getElementById('countryButtons');\r\n      const selectedCountryLabel = document.getElementById('selectedCountryLabel');\r\n      const resultsHeading = document.getElementById('resultsHeading');\r\n      const resultsSubtext = document.getElementById('resultsSubtext');\r\n      const cardsContainer = document.getElementById('cardsContainer');\r\n      const tableBody = document.getElementById('tableBody');\r\n      const emptyState = document.getElementById('emptyState');\r\n      const errorState = document.getElementById('errorState');\r\n      const loader = document.getElementById('loader');\r\n      const pagination = document.getElementById('pagination');\r\n      const pageCurrent = document.getElementById('pageCurrent');\r\n      const prevPageBtn = document.getElementById('prevPageBtn');\r\n      const nextPageBtn = document.getElementById('nextPageBtn');\r\n      const resetFiltersBtn = document.getElementById('resetFiltersBtn');\r\n\r\n      function escapeHTML(str) {\r\n        return String(str)\r\n          .replace(\/&\/g, '&amp;')\r\n          .replace(\/<\/g, '&lt;')\r\n          .replace(\/>\/g, '&gt;')\r\n          .replace(\/\"\/g, '&quot;')\r\n          .replace(\/'\/g, '&#039;');\r\n      }\r\n\r\n      function detectCountry(channelName) {\r\n        for (const [country, pattern] of Object.entries(countryPatterns)) {\r\n          if (pattern.test(channelName)) return country;\r\n        }\r\n        return 'Autre';\r\n      }\r\n\r\n      function isValidChannelForCountry(country, channelName) {\r\n        const blockedPrefixes = prefixBlacklist[country];\r\n        if (!blockedPrefixes) return true;\r\n        return !blockedPrefixes.some(prefix => channelName.startsWith(prefix));\r\n      }\r\n\r\n      function getItemsPerPage() {\r\n        return window.innerWidth < 768 ? 10 : 18;\r\n      }\r\n\r\n      function updateHeaderMeta() {\r\n        selectedCountryLabel.textContent = selectedCountry === 'all' ? 'Tous les pays' : selectedCountry;\r\n\r\n        resultsHeading.textContent = selectedCountry === 'all'\r\n          ? 'Toutes les cha\u00eenes'\r\n          : `Cha\u00eenes \u2014 ${selectedCountry}`;\r\n\r\n        const searchPart = searchTerm\r\n          ? `Recherche active : \u201c${searchTerm}\u201d.`\r\n          : 'Aucune recherche active.';\r\n\r\n        resultsSubtext.textContent = selectedCountry === 'all'\r\n          ? `${searchPart} Parcours par pays disponible ci-dessus.`\r\n          : `${searchPart} Affichage filtr\u00e9 sur ${selectedCountry}.`;\r\n      }\r\n\r\n      function renderCountryButtons() {\r\n        const counts = allRows.reduce((acc, row) => {\r\n          acc[row.country] = (acc[row.country] || 0) + 1;\r\n          return acc;\r\n        }, {});\r\n\r\n        const allCountries = Object.keys(counts);\r\n        const sortedCountries = [\r\n          ...priorityOrder.filter(c => allCountries.includes(c)),\r\n          ...allCountries.filter(c => !priorityOrder.includes(c)).sort((a, b) => a.localeCompare(b, 'fr'))\r\n        ];\r\n\r\n        const html = [];\r\n\r\n        html.push(`\r\n          <button class=\"country-button ${selectedCountry === 'all' ? 'active' : ''}\" data-country=\"all\" type=\"button\">\r\n            \ud83c\udf0d Tous\r\n          <\/button>\r\n        `);\r\n\r\n        sortedCountries.forEach(country => {\r\n          const flag = countryFlags[country] || '\ud83c\udf0d';\r\n          const isActive = selectedCountry === country ? 'active' : '';\r\n          const highlight = highlightCountries.includes(country) ? 'highlight' : '';\r\n          html.push(`\r\n            <button class=\"country-button ${highlight} ${isActive}\" data-country=\"${escapeHTML(country)}\" type=\"button\">\r\n              ${flag} ${escapeHTML(country)}\r\n            <\/button>\r\n          `);\r\n        });\r\n\r\n        countryButtons.innerHTML = html.join('');\r\n\r\n        countryButtons.querySelectorAll('.country-button').forEach(btn => {\r\n          btn.addEventListener('click', () => {\r\n            selectedCountry = btn.dataset.country;\r\n            currentPage = 1;\r\n            renderCountryButtons();\r\n            applyFilters();\r\n          });\r\n        });\r\n      }\r\n\r\n      function applyFilters() {\r\n        const normalizedSearch = searchTerm.trim().toLowerCase();\r\n\r\n        filteredRows = allRows.filter(row => {\r\n          const countryMatch = selectedCountry === 'all' || row.country === selectedCountry;\r\n          const text = `${row.country} ${row.channel}`.toLowerCase();\r\n          const searchMatch = !normalizedSearch || text.includes(normalizedSearch);\r\n          return countryMatch && searchMatch;\r\n        });\r\n\r\n        updateHeaderMeta();\r\n        renderResults();\r\n      }\r\n\r\n      function renderResults() {\r\n        const itemsPerPage = getItemsPerPage();\r\n        const totalPages = Math.max(1, Math.ceil(filteredRows.length \/ itemsPerPage));\r\n\r\n        if (currentPage > totalPages) currentPage = totalPages;\r\n\r\n        const start = (currentPage - 1) * itemsPerPage;\r\n        const end = start + itemsPerPage;\r\n        const pageRows = filteredRows.slice(start, end);\r\n\r\n        cardsContainer.innerHTML = '';\r\n        tableBody.innerHTML = '';\r\n\r\n        if (filteredRows.length === 0) {\r\n          emptyState.classList.add('show');\r\n          pagination.style.display = 'none';\r\n          return;\r\n        }\r\n\r\n        emptyState.classList.remove('show');\r\n\r\n        const cardsHTML = pageRows.map(row => {\r\n          const flag = countryFlags[row.country] || '\ud83c\udf0d';\r\n          return `\r\n            <article class=\"channel-card\">\r\n              <div class=\"channel-card-head\">\r\n                <div class=\"country-tag\">${flag} ${escapeHTML(row.country)}<\/div>\r\n              <\/div>\r\n              <div class=\"channel-name\">${escapeHTML(row.channel)}<\/div>\r\n            <\/article>\r\n          `;\r\n        }).join('');\r\n\r\n        const tableHTML = pageRows.map(row => {\r\n          const flag = countryFlags[row.country] || '\ud83c\udf0d';\r\n          return `\r\n            <tr>\r\n              <td class=\"country-cell\">${flag} ${escapeHTML(row.country)}<\/td>\r\n              <td class=\"channel-cell\">${escapeHTML(row.channel)}<\/td>\r\n            <\/tr>\r\n          `;\r\n        }).join('');\r\n\r\n        cardsContainer.innerHTML = cardsHTML;\r\n        tableBody.innerHTML = tableHTML;\r\n\r\n        pagination.style.display = filteredRows.length > itemsPerPage ? 'flex' : 'none';\r\n        pageCurrent.textContent = `Page ${currentPage} \/ ${totalPages}`;\r\n        prevPageBtn.disabled = currentPage <= 1;\r\n        nextPageBtn.disabled = currentPage >= totalPages;\r\n      }\r\n\r\n      function sortRows(rows) {\r\n        return rows.sort((a, b) => {\r\n          const countryCompare = a.country.localeCompare(b.country, 'fr');\r\n          if (countryCompare !== 0) return countryCompare;\r\n          return a.channel.localeCompare(b.channel, 'fr');\r\n        });\r\n      }\r\n\r\n      function showLoader(show) {\r\n        loader.classList.toggle('show', show);\r\n      }\r\n\r\n      function showError(show) {\r\n        errorState.classList.toggle('show', show);\r\n      }\r\n\r\n      async function loadExcelData() {\r\n        showLoader(true);\r\n        showError(false);\r\n        emptyState.classList.remove('show');\r\n\r\n        try {\r\n          const response = await fetch(fileUrl);\r\n          if (!response.ok) throw new Error(`HTTP ${response.status}`);\r\n\r\n          const data = await response.arrayBuffer();\r\n          const workbook = XLSX.read(data, { type: 'array' });\r\n          const countryMap = {};\r\n\r\n          workbook.SheetNames.forEach(sheetName => {\r\n            const sheet = workbook.Sheets[sheetName];\r\n            const jsonData = XLSX.utils.sheet_to_json(sheet, { header: 1 });\r\n\r\n            if (!jsonData || !jsonData.length) return;\r\n\r\n            const headers = jsonData[0] || [];\r\n            const rows = jsonData.slice(1);\r\n\r\n            headers.forEach((header, colIndex) => {\r\n              rows.forEach(row => {\r\n                const channel = row[colIndex];\r\n                if (!channel || !String(channel).trim()) return;\r\n\r\n                const name = String(channel).trim();\r\n                const country = detectCountry(name);\r\n\r\n                if (!isValidChannelForCountry(country, name)) return;\r\n\r\n                if (!countryMap[country]) countryMap[country] = [];\r\n                countryMap[country].push({\r\n                  country,\r\n                  channel: name\r\n                });\r\n              });\r\n            });\r\n          });\r\n\r\n          allRows = sortRows(\r\n            Object.values(countryMap).flat().filter(item => item.channel)\r\n          );\r\n\r\n          renderCountryButtons();\r\n          applyFilters();\r\n        } catch (error) {\r\n          console.error('Erreur chargement Excel :', error);\r\n          showError(true);\r\n          resultsSubtext.textContent = 'Le catalogue n\u2019a pas pu \u00eatre charg\u00e9.';\r\n        } finally {\r\n          showLoader(false);\r\n        }\r\n      }\r\n\r\n      let resizeTimeout;\r\n      window.addEventListener('resize', () => {\r\n        clearTimeout(resizeTimeout);\r\n        resizeTimeout = setTimeout(() => {\r\n          renderResults();\r\n        }, 120);\r\n      });\r\n\r\n      let searchTimeout;\r\n      searchInput.addEventListener('input', (e) => {\r\n        clearTimeout(searchTimeout);\r\n        searchTimeout = setTimeout(() => {\r\n          searchTerm = e.target.value || '';\r\n          currentPage = 1;\r\n          applyFilters();\r\n        }, 140);\r\n      });\r\n\r\n      prevPageBtn.addEventListener('click', () => {\r\n        if (currentPage > 1) {\r\n          currentPage--;\r\n          renderResults();\r\n        }\r\n      });\r\n\r\n      nextPageBtn.addEventListener('click', () => {\r\n        const totalPages = Math.max(1, Math.ceil(filteredRows.length \/ getItemsPerPage()));\r\n        if (currentPage < totalPages) {\r\n          currentPage++;\r\n          renderResults();\r\n        }\r\n      });\r\n\r\n      resetFiltersBtn.addEventListener('click', () => {\r\n        selectedCountry = 'all';\r\n        searchTerm = '';\r\n        currentPage = 1;\r\n        searchInput.value = '';\r\n        renderCountryButtons();\r\n        applyFilters();\r\n      });\r\n\r\n      loadExcelData();\r\n    })();\r\n  <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b01957e elementor-widget elementor-widget-Partner_Logo\" data-id=\"b01957e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"Partner_Logo.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n                    <!-- Start Partner Logo Area -->\r\n            <div class=\"partner-area pb-75\">\r\n                <div class=\"container mw-1356\">\r\n                    <div class=\"row justify-content-center\" data-cues=\"zoomOut\">\r\n                                                                                    <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-1.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-2.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-3.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-4.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-5.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-6.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-11.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-9.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-8.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-6.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-3.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-5.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-1.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-2.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-3.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-11.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-5.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-6.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-6.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-5.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-4.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-3.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-2.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-11.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-8.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-11.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                                                                <div class=\"col-xxl-2 col-sm-6 col-md-4\">\r\n                                    <div class=\"partner-bg mb-4\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/goodiptvservices.com\/wp-content\/uploads\/2024\/03\/partner-10.webp\" alt=\"Partner Logo\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                                                                        <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <!-- End Partner Logo Area -->\r\n        \r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a738186 elementor-widget elementor-widget-html\" data-id=\"a738186\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"wa-cta-section\">\r\n  <div class=\"wa-cta-badge\">Disponible 7j\/7 sur WhatsApp<\/div>\r\n  \r\n  <h3 class=\"wa-cta-title\">Besoin d\u2019aide ou d\u2019un devis rapide&nbsp;?<\/h3>\r\n  <p class=\"wa-cta-subtitle\">\r\n    Contactez notre \u00e9quipe directement sur WhatsApp pour une r\u00e9ponse rapide et personnalis\u00e9e.\r\n  <\/p>\r\n\r\n  <a \r\n    href=\"https:\/\/api.whatsapp.com\/send?phone=%2B21693933565&text=Contact%20us%20on%20whatsapp\"\r\n    class=\"wa-cta-button\"\r\n    target=\"_blank\"\r\n    rel=\"noopener noreferrer\"\r\n    aria-label=\"Contactez-nous sur WhatsApp\"\r\n  >\r\n    <span class=\"wa-cta-icon\">\r\n      <svg viewBox=\"0 0 32 32\" aria-hidden=\"true\">\r\n        <path d=\"M19.11 17.23c-.27-.14-1.58-.78-1.82-.87-.24-.09-.42-.14-.6.14-.18.27-.69.87-.85 1.05-.16.18-.31.2-.58.07-.27-.14-1.13-.41-2.15-1.31-.8-.71-1.34-1.58-1.5-1.85-.16-.27-.02-.41.12-.54.12-.12.27-.31.4-.47.13-.16.18-.27.27-.45.09-.18.04-.34-.02-.47-.07-.14-.6-1.45-.82-1.98-.22-.53-.44-.46-.6-.47h-.51c-.18 0-.47.07-.71.34-.24.27-.93.91-.93 2.22 0 1.31.96 2.58 1.09 2.76.13.18 1.88 2.87 4.55 4.02.64.28 1.14.44 1.53.56.64.2 1.23.17 1.69.1.52-.08 1.58-.65 1.8-1.27.22-.62.22-1.14.15-1.27-.07-.13-.24-.2-.51-.34z\" fill=\"currentColor\"\/>\r\n        <path d=\"M16.03 3C8.84 3 3 8.74 3 15.81c0 2.29.61 4.53 1.76 6.5L3 29l6.93-1.8a13.2 13.2 0 0 0 6.1 1.49H16c7.19 0 13.03-5.74 13.03-12.81C29.03 8.74 23.19 3 16.03 3zm0 23.54h-.01c-1.88 0-3.72-.5-5.32-1.46l-.38-.22-4.11 1.07 1.1-4-.25-.4a10.6 10.6 0 0 1-1.65-5.63c0-5.87 4.78-10.65 10.66-10.65 2.84 0 5.51 1.1 7.52 3.11a10.54 10.54 0 0 1 3.12 7.53c0 5.87-4.78 10.65-10.68 10.65z\" fill=\"currentColor\"\/>\r\n      <\/svg>\r\n    <\/span>\r\n\r\n    <span class=\"wa-cta-text\">\r\n      <strong>Contactez-nous sur WhatsApp<\/strong>\r\n      <small>R\u00e9ponse rapide en quelques minutes<\/small>\r\n    <\/span>\r\n\r\n    <span class=\"wa-cta-arrow\">\r\n      <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\r\n        <path d=\"M5 12h12M13 6l6 6-6 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n      <\/svg>\r\n    <\/span>\r\n  <\/a>\r\n<\/div>\r\n\r\n<style>\r\n  .wa-cta-section{\r\n  width:min(100%, 760px);\r\n  margin:32px auto 20px;\r\n  padding:24px 22px 28px;\r\n  text-align:center;\r\n  border-radius:28px;\r\n  background:linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.03));\r\n  border:1px solid rgba(255,255,255,.08);\r\n  box-shadow:\r\n    0 20px 60px rgba(0,0,0,.28),\r\n    inset 0 1px 0 rgba(255,255,255,.05);\r\n  backdrop-filter:blur(10px);\r\n  -webkit-backdrop-filter:blur(10px);\r\n  overflow:hidden;\r\n  box-sizing:border-box;\r\n}\r\n\r\n.wa-cta-badge{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  gap:8px;\r\n  padding:8px 14px;\r\n  margin-bottom:16px;\r\n  border-radius:999px;\r\n  font-size:13px;\r\n  font-weight:700;\r\n  color:#dfffe9;\r\n  background:rgba(37,211,102,.14);\r\n  border:1px solid rgba(37,211,102,.35);\r\n  max-width:100%;\r\n  text-align:center;\r\n  line-height:1.3;\r\n  flex-wrap:wrap;\r\n}\r\n\r\n.wa-cta-badge::before{\r\n  content:\"\";\r\n  width:10px;\r\n  height:10px;\r\n  border-radius:50%;\r\n  background:#25D366;\r\n  box-shadow:0 0 0 6px rgba(37,211,102,.16);\r\n  animation:waPulse 1.8s infinite;\r\n  flex-shrink:0;\r\n}\r\n\r\n.wa-cta-title{\r\n  margin:0 0 10px;\r\n  font-size:clamp(24px, 4vw, 34px);\r\n  line-height:1.15;\r\n  font-weight:800;\r\n  color:#fff;\r\n  letter-spacing:-0.02em;\r\n  text-wrap:balance;\r\n}\r\n\r\n.wa-cta-subtitle{\r\n  max-width:620px;\r\n  margin:0 auto 22px;\r\n  font-size:16px;\r\n  line-height:1.65;\r\n  color:rgba(255,255,255,.82);\r\n}\r\n\r\n.wa-cta-button{\r\n  display:grid;\r\n  grid-template-columns:58px 1fr 44px;\r\n  align-items:center;\r\n  gap:14px;\r\n  width:100%;\r\n  max-width:560px;\r\n  margin:0 auto;\r\n  padding:16px 18px;\r\n  border-radius:22px;\r\n  text-decoration:none;\r\n  color:#fff;\r\n  background:linear-gradient(135deg, #25D366 0%, #20c55a 35%, #128C7E 100%);\r\n  border:1px solid rgba(255,255,255,.18);\r\n  box-shadow:\r\n    0 18px 40px rgba(18,140,126,.35),\r\n    0 0 0 1px rgba(255,255,255,.05) inset;\r\n  transition:transform .25s ease, box-shadow .25s ease, filter .25s ease;\r\n  box-sizing:border-box;\r\n}\r\n\r\n.wa-cta-button:hover{\r\n  transform:translateY(-4px);\r\n  box-shadow:\r\n    0 24px 50px rgba(18,140,126,.45),\r\n    0 0 0 1px rgba(255,255,255,.08) inset,\r\n    0 0 28px rgba(37,211,102,.25);\r\n  filter:saturate(1.05);\r\n  color:#fff;\r\n}\r\n\r\n.wa-cta-icon{\r\n  width:58px;\r\n  height:58px;\r\n  min-width:58px;\r\n  border-radius:18px;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  background:rgba(255,255,255,.16);\r\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.14);\r\n}\r\n\r\n.wa-cta-icon svg{\r\n  width:30px;\r\n  height:30px;\r\n  color:#fff;\r\n}\r\n\r\n.wa-cta-text{\r\n  min-width:0;\r\n  display:flex;\r\n  flex-direction:column;\r\n  align-items:flex-start;\r\n  text-align:left;\r\n  line-height:1.2;\r\n}\r\n\r\n.wa-cta-text strong{\r\n  font-size:20px;\r\n  font-weight:800;\r\n  color:#fff;\r\n  line-height:1.2;\r\n  display:block;\r\n}\r\n\r\n.wa-cta-text small{\r\n  margin-top:5px;\r\n  font-size:13px;\r\n  color:rgba(255,255,255,.92);\r\n  line-height:1.35;\r\n  display:block;\r\n}\r\n\r\n.wa-cta-arrow{\r\n  width:44px;\r\n  height:44px;\r\n  min-width:44px;\r\n  border-radius:14px;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  background:rgba(0,0,0,.18);\r\n}\r\n\r\n.wa-cta-arrow svg{\r\n  width:22px;\r\n  height:22px;\r\n  color:#fff;\r\n}\r\n\r\n@keyframes waPulse{\r\n  0%{ box-shadow:0 0 0 0 rgba(37,211,102,.38); }\r\n  70%{ box-shadow:0 0 0 10px rgba(37,211,102,0); }\r\n  100%{ box-shadow:0 0 0 0 rgba(37,211,102,0); }\r\n}\r\n\r\n\/* TABLET *\/\r\n@media (max-width: 768px){\r\n  .wa-cta-section{\r\n    margin:24px 14px 16px;\r\n    padding:20px 16px 22px;\r\n    border-radius:22px;\r\n  }\r\n\r\n  .wa-cta-badge{\r\n    font-size:12px;\r\n    padding:7px 12px;\r\n    margin-bottom:14px;\r\n  }\r\n\r\n  .wa-cta-title{\r\n    font-size:28px;\r\n  }\r\n\r\n  .wa-cta-subtitle{\r\n    font-size:14px;\r\n    line-height:1.55;\r\n    margin-bottom:18px;\r\n  }\r\n\r\n  .wa-cta-button{\r\n    grid-template-columns:48px 1fr 38px;\r\n    gap:12px;\r\n    padding:14px 14px;\r\n    border-radius:18px;\r\n  }\r\n\r\n  .wa-cta-icon{\r\n    width:48px;\r\n    height:48px;\r\n    min-width:48px;\r\n    border-radius:14px;\r\n  }\r\n\r\n  .wa-cta-icon svg{\r\n    width:24px;\r\n    height:24px;\r\n  }\r\n\r\n  .wa-cta-text strong{\r\n    font-size:16px;\r\n  }\r\n\r\n  .wa-cta-text small{\r\n    font-size:12px;\r\n  }\r\n\r\n  .wa-cta-arrow{\r\n    width:38px;\r\n    height:38px;\r\n    min-width:38px;\r\n    border-radius:12px;\r\n  }\r\n\r\n  .wa-cta-arrow svg{\r\n    width:18px;\r\n    height:18px;\r\n  }\r\n}\r\n\r\n\/* MOBILE *\/\r\n@media (max-width: 480px){\r\n  .wa-cta-section{\r\n    margin:18px 12px 14px;\r\n    padding:18px 14px 18px;\r\n    border-radius:20px;\r\n  }\r\n\r\n  .wa-cta-badge{\r\n    font-size:11px;\r\n    padding:7px 10px;\r\n    gap:6px;\r\n  }\r\n\r\n  .wa-cta-title{\r\n    font-size:22px;\r\n    line-height:1.18;\r\n    margin-bottom:10px;\r\n  }\r\n\r\n  .wa-cta-subtitle{\r\n    font-size:13px;\r\n    line-height:1.5;\r\n    margin-bottom:16px;\r\n  }\r\n\r\n  .wa-cta-button{\r\n    grid-template-columns:42px 1fr 34px;\r\n    gap:10px;\r\n    padding:12px 12px;\r\n    border-radius:16px;\r\n  }\r\n\r\n  .wa-cta-icon{\r\n    width:42px;\r\n    height:42px;\r\n    min-width:42px;\r\n    border-radius:12px;\r\n  }\r\n\r\n  .wa-cta-icon svg{\r\n    width:20px;\r\n    height:20px;\r\n  }\r\n\r\n  .wa-cta-text strong{\r\n    font-size:14px;\r\n    line-height:1.2;\r\n  }\r\n\r\n  .wa-cta-text small{\r\n    font-size:11px;\r\n    margin-top:4px;\r\n    line-height:1.3;\r\n  }\r\n\r\n  .wa-cta-arrow{\r\n    width:34px;\r\n    height:34px;\r\n    min-width:34px;\r\n    border-radius:10px;\r\n  }\r\n\r\n  .wa-cta-arrow svg{\r\n    width:16px;\r\n    height:16px;\r\n  }\r\n}\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>CANAL Cha\u00eenes TV par Pays \ud83d\udcfa Catalogue IPTV Explorez les cha\u00eenes TV par pays \ud83d\udd0e Pays s\u00e9lectionn\u00e9 Tous les pays Filtrer par pays R\u00e9initialiser Liste des cha\u00eenes Chargement des donn\u00e9es en cours\u2026 Erreur de chargement Impossible de r\u00e9cup\u00e9rer le fichier Excel. V\u00e9rifiez l\u2019URL du fichier ou la disponibilit\u00e9 du serveur. Aucun r\u00e9sultat trouv\u00e9 Essaie avec <\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-762","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/pages\/762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/comments?post=762"}],"version-history":[{"count":71,"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/pages\/762\/revisions"}],"predecessor-version":[{"id":9285,"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/pages\/762\/revisions\/9285"}],"wp:attachment":[{"href":"https:\/\/goodiptvservices.com\/en\/wp-json\/wp\/v2\/media?parent=762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}