{"id":240,"date":"2025-09-07T00:43:22","date_gmt":"2025-09-07T00:43:22","guid":{"rendered":"https:\/\/horvoros.com\/?page_id=240"},"modified":"2026-09-12T21:31:52","modified_gmt":"2026-09-12T21:31:52","slug":"elementor-240","status":"publish","type":"page","link":"https:\/\/horvoros.com\/","title":{"rendered":"Elementor #240"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"240\" class=\"elementor elementor-240\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90361a8 e-flex e-con-boxed e-con e-parent\" data-id=\"90361a8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9cab4a1 elementor-widget elementor-widget-image\" data-id=\"9cab4a1\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"170\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Horvoros-Logo-2025-site-1024x217.png\" class=\"attachment-large size-large wp-image-274\" alt=\"\" srcset=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Horvoros-Logo-2025-site-1024x217.png 1024w, https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Horvoros-Logo-2025-site-300x63.png 300w, https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Horvoros-Logo-2025-site-768x162.png 768w, https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Horvoros-Logo-2025-site-1536x325.png 1536w, https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Horvoros-Logo-2025-site.png 2000w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f7e5816 e-con-full e-flex e-con e-parent\" data-id=\"f7e5816\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aa04b41 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"aa04b41\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\">\n  <title>Horvoros<\/title>\n\n  <style>\n    * {\n      margin: 0;\n      padding: 0;\n      box-sizing: border-box;\n      -webkit-tap-highlight-color: transparent;\n    }\n\n    html, body {\n      background: #000;\n      color: #eee;\n      font-family: Arial, sans-serif;\n    }\n\n    body {\n      overflow-x: hidden;\n    }\n\n    body.viewer-open {\n      overflow: hidden;\n      height: 100vh;\n      height: 100dvh;\n    }\n\n    \/* =========================================================\n       MINIATURES (GRILLE)\n       ========================================================= *\/\n\n    .preview-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fill, 300px);\n      gap: 15px;\n      padding: 20px;\n      justify-content: center;\n      max-width: 1800px;\n      margin: 0 auto;\n    }\n\n    .preview-grid img {\n      width: 300px;\n      height: auto !important;\n      display: block;\n      cursor: pointer;\n      background: #111;\n      transition: transform 0.2s ease, outline 0.2s;\n    }\n\n    .preview-grid img:hover,\n    .preview-grid img:focus {\n      transform: scale(1.02);\n      outline: 2px solid #fff;\n    }\n\n    \/* =========================================================\n       VIEWER\n       ========================================================= *\/\n\n    #viewer {\n      position: fixed;\n      inset: 0;\n      width: 100%;\n      height: 100%;\n      height: 100dvh;\n      background: #000;\n      z-index: 999999;\n      display: none;\n      overflow: hidden;\n      touch-action: none;\n      overscroll-behavior: none;\n      user-select: none;\n    }\n\n    #viewer.open {\n      display: block;\n    }\n\n    .feed {\n      width: 100%;\n      height: 100%;\n      height: 100dvh;\n      overflow-y: auto;\n      overflow-x: hidden;\n      scroll-snap-type: y mandatory;\n      scroll-behavior: auto;\n      -webkit-overflow-scrolling: touch;\n      overscroll-behavior: contain;\n      scrollbar-width: none;\n    }\n\n    .feed::-webkit-scrollbar {\n      display: none;\n    }\n\n    .scroll-spacer {\n      width: 100%;\n      height: 15vh;\n      flex: 0 0 15vh;\n      background: transparent;\n      pointer-events: none;\n    }\n\n    .media-page {\n      position: relative;\n      width: 100%;\n      height: 100vh;\n      height: 100dvh;\n      flex: 0 0 100%;\n      scroll-snap-align: start;\n      scroll-snap-stop: always;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      overflow: hidden;\n      background: #000;\n      cursor: pointer;\n    }\n\n    \/* =========================================================\n       VID\u00c9OS\n       ========================================================= *\/\n\n    .media-page > video {\n      display: block;\n      max-width: 100%;\n      max-height: 100%;\n      width: auto;\n      height: auto;\n      object-fit: contain;\n      background: #000;\n      cursor: pointer;\n    }\n\n    \/* =========================================================\n       GALERIE PHOTO\n       ========================================================= *\/\n\n    .gallery {\n      position: relative;\n      width: 100%;\n      height: 100%;\n      overflow: hidden;\n      touch-action: pan-x;\n    }\n\n    .gallery-track {\n      width: 100%;\n      height: 100%;\n      display: flex;\n      overflow-x: auto;\n      overflow-y: hidden;\n      scroll-snap-type: x mandatory;\n      -webkit-overflow-scrolling: touch;\n      scrollbar-width: none;\n      overscroll-behavior-x: contain;\n      will-change: scroll-position;\n    }\n\n    .gallery-track::-webkit-scrollbar {\n      display: none;\n    }\n\n    .gallery-slide {\n      position: relative;\n      flex: 0 0 100%;\n      width: 100%;\n      height: 100%;\n      scroll-snap-align: center;\n      scroll-snap-stop: always;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      overflow: hidden;\n      padding: 10px;\n    }\n\n    .gallery-slide img {\n      display: block;\n      max-width: 100%;\n      max-height: 100%;\n      width: auto;\n      height: auto;\n      object-fit: contain;\n      pointer-events: auto;\n      user-select: none;\n      -webkit-user-drag: none;\n      cursor: default;\n    }\n\n    .gallery-controls {\n      position: absolute;\n      left: 50%;\n      bottom: 24px;\n      transform: translateX(-50%);\n      display: flex;\n      align-items: center;\n      gap: 12px;\n      padding: 6px 12px;\n      border-radius: 30px;\n      background: rgba(0, 0, 0, 0.65);\n      backdrop-filter: blur(8px);\n      -webkit-backdrop-filter: blur(8px);\n      border: 1px solid rgba(255, 255, 255, 0.12);\n      z-index: 105;\n      pointer-events: auto;\n      box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);\n    }\n\n    .gallery-arrow-btn {\n      width: 36px;\n      height: 36px;\n      border: none;\n      border-radius: 50%;\n      background: rgba(255, 255, 255, 0.12);\n      color: #fff;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: background 0.2s ease, transform 0.15s ease;\n      padding: 0;\n    }\n\n    .gallery-arrow-btn:hover {\n      background: rgba(255, 255, 255, 0.28);\n      transform: scale(1.05);\n    }\n\n    .gallery-arrow-btn:active {\n      transform: scale(0.95);\n    }\n\n    .gallery-arrow-btn svg {\n      width: 16px;\n      height: 16px;\n      fill: none;\n      stroke: #ffffff;\n      stroke-width: 2.5;\n      stroke-linecap: round;\n      stroke-linejoin: round;\n    }\n\n    .gallery-counter {\n      color: #fff;\n      font-size: 14px;\n      font-weight: 500;\n      letter-spacing: 0.8px;\n      user-select: none;\n      min-width: 48px;\n      text-align: center;\n    }\n\n    \/* =========================================================\n       INTERFACE VIEWER\n       ========================================================= *\/\n\n    .viewer-top {\n      position: fixed;\n      top: 0;\n      left: 0;\n      right: 0;\n      height: 90px;\n      z-index: 100;\n      pointer-events: none;\n      background: linear-gradient(to bottom, rgba(0,0,0,.45), transparent);\n    }\n    \n    .viewer-close {\n      position: absolute !important;\n      top: 18px !important;\n      right: 18px !important;\n      width: 48px !important;\n      height: 48px !important;\n      border: none !important;\n      border-radius: 0 !important;\n      background: transparent !important;\n      color: #fff !important;\n      font-size: 36px !important;\n      font-weight: 300 !important;\n      line-height: 48px !important;\n      text-align: center;\n      cursor: pointer;\n      pointer-events: auto;\n      z-index: 101;\n      opacity: 1;\n      transition: opacity 0.2s ease;\n    }\n\n    .viewer-close:hover { opacity: 0.7; }\n\n    .sound-button {\n      position: fixed;\n      right: 18px;\n      bottom: 24px;\n      width: 44px;\n      height: 44px;\n      border: 0;\n      border-radius: 50%;\n      background: rgba(0,0,0,.58);\n      color: #fff;\n      font-size: 20px;\n      cursor: pointer;\n      z-index: 101;\n      display: none;\n      transition: background 0.2s;\n    }\n\n    .sound-button:hover { background: rgba(0,0,0,.8); }\n    .sound-button.visible { display: block; }\n\n    \/* MOBILE *\/\n    @media (max-width: 768px) {\n      .preview-grid {\n        grid-template-columns: repeat(3, 1fr);\n        gap: 6px;\n        padding: 6px;\n      }\n      .preview-grid img { width: 100%; }\n      .viewer-close {\n        top: 12px !important; right: 12px !important;\n        width: 42px !important; height: 42px !important;\n        line-height: 42px !important; font-size: 30px !important;\n      }\n      .gallery-slide { padding: 4px; }\n      .sound-button { right: 12px; bottom: 18px; }\n      .gallery-controls { bottom: 16px; padding: 4px 10px; gap: 8px; }\n      .gallery-arrow-btn { width: 32px; height: 32px; }\n      .gallery-arrow-btn svg { width: 14px; height: 14px; }\n      .gallery-counter { font-size: 13px; min-width: 42px; }\n    }\n  <\/style>\n<\/head>\n\n<body>\n\n  <div class=\"preview-grid\" id=\"previewGrid\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/rose-abbaye-minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Video-1080-30p.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/rose-abbaye-photo-minia.jpg\" \n          data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-1-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/07\/Rose-Abbaye-8-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/1minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane1.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/dana-minia-1.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Dana-Eden.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/dana-eden-photo-minia.jpg\" \n          data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-8-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-10-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-11-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-12-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-13-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-14-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-15-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Danaeden-16-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/rose-scaled.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/1080C-Rose-Plume-Noires-08-03-2026.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/rose-plume-photo-minia.jpg\" \n          data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-1.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-2.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-3.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-4.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-5.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-6.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-7.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-8.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-10.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-11.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-12.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-13.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/03\/Rose-14.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/2minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane2.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/4minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane4.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ariane-rouge-photo-minia.jpg\" \n        data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-8-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-10-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-11-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-12-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-13-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-14-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-15-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-16-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-17-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-18-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeB-19-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/7minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane7.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ariane-rouge-2-photo-minia.jpg\"\n      data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-8-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-10-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-11-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-12-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-13-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-14-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-15-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-16-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-17-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-18-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-19-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeRougeA-20-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/5minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane5.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ariane-bleu-photo-minia.jpg\" \n      data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-8-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-10-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-11-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-12-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-13-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-14-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-15-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-16-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-17-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-18-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBleu-19-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/8minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane8.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ariane-blanche-photo-minia.jpg\" \n      data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-8-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-10-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-11-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-12-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-13-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-14-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-15-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-16-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-17-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-18-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-19-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeBlanche-20-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/3minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane3.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/19-succession.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/succession.mp4\"> \n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/6minia.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/Ariane6.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ariane-noir-photo-minia.jpg\"\n      data-gallery='[\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-2-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-3-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-4-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-5-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-6-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-7-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-8-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-9-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-10-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-11-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-12-scaled.jpg\",\n      \"https:\/\/horvoros.com\/wp-content\/uploads\/2026\/09\/ArianeNoir-13-scaled.jpg\"\n    ]'>\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/18-marron-agnesobel.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/marron-agnesobel.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/1-granma.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/granma.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/17-prune-gameofthrones.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/prune-gameofthrones.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/16-bordeau-emilianatorrini2.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/bordeau-emilianatorrini3.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/15-pomme.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/pomme.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/5-bleu-FFXV.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/bleu-FFXV.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/13-blanc-hungergames.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/blanc-hungergames.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/11-rouge-FF.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/rouge-FF.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/12-orange-lacets-childoflight.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/orange-lacets-childoflight.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/10-Les-mots-bleus.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Les-mots-bleus.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/8-verte-courte-FMA.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/verte-courte-FMA.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/9-bleu-courte-FMA.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/bleu-courte-FMA.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/7-verte-clair-obscur.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/verte-clair-obscur.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/6-Perhaps.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Perhaps.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/16-en-cendre.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/encendrelive.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/2-nocturne-orange.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/nocturne-orange.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/3-Myrkur-lilly.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/Myrkur-lilly.mp4\">\n    <img decoding=\"async\" tabindex=\"0\" src=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/14-darkminuet.jpg\" data-video=\"https:\/\/horvoros.com\/wp-content\/uploads\/2025\/09\/darkminuet.mp4\">\n  <\/div>\n\n  <div id=\"viewer\" aria-hidden=\"true\">\n    <div class=\"viewer-top\">\n      <button class=\"viewer-close\" id=\"viewerClose\" type=\"button\" aria-label=\"Fermer\">\u00d7<\/button>\n    <\/div>\n    <button class=\"sound-button\" id=\"soundButton\" type=\"button\" aria-label=\"G\u00e9rer le son\">\ud83d\udd0a<\/button>\n    <div class=\"feed\" id=\"feed\"><\/div>\n  <\/div>\n\n  <script>\n    const previewGrid = document.getElementById('previewGrid');\n    const viewer = document.getElementById('viewer');\n    const feed = document.getElementById('feed');\n    const viewerClose = document.getElementById('viewerClose');\n    const soundButton = document.getElementById('soundButton');\n    const thumbnails = Array.from(previewGrid.querySelectorAll('img'));\n\n    let currentFeedIndex = 0;\n    let feedItems = [];\n    let savedScrollPosition = 0;\n    let observer = null;\n    let isMuted = false;\n    let isViewerOpen = false;\n    let isFeedBuilt = false;\n    let isNavigating = false;\n\n    \/\/ Combien de vid\u00e9os voisines (avant\/apr\u00e8s) restent pr\u00e9charg\u00e9es autour de la vid\u00e9o actuelle\n    const PRELOAD_RANGE = 1;\n\n    \/\/ ----- ANIMATION RAPIDE TRANSITION PHOTOS (180 ms) -----\n    function fastScrollTo(element, target, duration = 180) {\n      const start = element.scrollLeft;\n      const distance = target - start;\n      if (Math.abs(distance) < 2) return;\n      \n      const startTime = performance.now();\n\n      function animate(currentTime) {\n        const elapsed = currentTime - startTime;\n        const progress = Math.min(elapsed \/ duration, 1);\n        const ease = 1 - Math.pow(1 - progress, 3);\n        element.scrollLeft = start + (distance * ease);\n\n        if (progress < 1) {\n          requestAnimationFrame(animate);\n        }\n      }\n      requestAnimationFrame(animate);\n    }\n\n    \/\/ ----- STRUCTURATION UNIQUE DU FEED -----\n    function buildFeedOnce() {\n      if (isFeedBuilt) return;\n\n      feed.innerHTML = '';\n\n      const spacer = document.createElement('div');\n      spacer.className = 'scroll-spacer';\n      feed.appendChild(spacer);\n\n      feedItems = thumbnails.map((thumb, index) => {\n        const item = { index, type: thumb.dataset.gallery ? 'gallery' : 'video', thumb };\n        if (item.type === 'gallery') {\n          try { item.urls = JSON.parse(thumb.dataset.gallery); } catch (e) { item.urls = []; }\n        } else {\n          item.url = thumb.dataset.video;\n          item.poster = thumb.src;\n        }\n        return item;\n      });\n\n      feedItems.forEach((item, itemIndex) => {\n        const page = document.createElement('section');\n        page.className = 'media-page';\n        page.dataset.feedIndex = itemIndex;\n\n        if (item.type === 'video') {\n          const video = document.createElement('video');\n          \/\/ On NE met PAS la src ici : elle est assign\u00e9e \u00e0 la demande par manageVideoLoading()\n          \/\/ pour \u00e9viter que les ~40 vid\u00e9os ne se mettent toutes \u00e0 t\u00e9l\u00e9charger en m\u00eame temps\n          \/\/ (ce qui saturait la bande passante et ralentissait la vid\u00e9o qu'on voulait voir).\n          video.dataset.src = item.url;\n          video.poster = item.poster;\n          video.playsInline = true;\n          video.setAttribute('webkit-playsinline', '');\n          video.loop = true;\n          video.muted = true;\n          video.preload = 'none';\n\n          video.addEventListener('click', (e) => {\n            e.stopPropagation();\n            if (video.paused) { video.play().catch(() => {}); } \n            else { video.pause(); }\n          });\n          page.appendChild(video);\n        } else {\n          buildGalleryPage(page, item);\n        }\n        feed.appendChild(page);\n      });\n\n      isFeedBuilt = true;\n    }\n\n    function buildGalleryPage(page, item) {\n      const gallery = document.createElement('div');\n      gallery.className = 'gallery';\n\n      const track = document.createElement('div');\n      track.className = 'gallery-track';\n      const totalPhotos = item.urls.length;\n\n      item.urls.forEach((url) => {\n        const slide = document.createElement('div');\n        slide.className = 'gallery-slide';\n\n        const img = document.createElement('img');\n        img.src = url;\n        img.alt = 'Photo';\n        img.draggable = false;\n        \n        slide.appendChild(img);\n        track.appendChild(slide);\n      });\n\n      const controls = document.createElement('div');\n      controls.className = 'gallery-controls';\n\n      const leftBtn = document.createElement('button');\n      leftBtn.className = 'gallery-arrow-btn';\n      leftBtn.ariaLabel = 'Photo pr\u00e9c\u00e9dente';\n      leftBtn.innerHTML = '<svg viewBox=\"0 0 24 24\"><polyline points=\"15 18 9 12 15 6\"><\/polyline><\/svg>';\n\n      const counter = document.createElement('div');\n      counter.className = 'gallery-counter';\n      counter.textContent = `1\/${totalPhotos}`;\n\n      const rightBtn = document.createElement('button');\n      rightBtn.className = 'gallery-arrow-btn';\n      rightBtn.ariaLabel = 'Photo suivante';\n      rightBtn.innerHTML = '<svg viewBox=\"0 0 24 24\"><polyline points=\"9 18 15 12 9 6\"><\/polyline><\/svg>';\n\n      leftBtn.addEventListener('click', (e) => {\n        e.stopPropagation();\n        fastScrollTo(track, track.scrollLeft - track.clientWidth, 180);\n      });\n\n      rightBtn.addEventListener('click', (e) => {\n        e.stopPropagation();\n        fastScrollTo(track, track.scrollLeft + track.clientWidth, 180);\n      });\n\n      track.addEventListener('scroll', () => {\n        const width = track.clientWidth;\n        if (!width) return;\n        const currentPhotoIndex = Math.round(track.scrollLeft \/ width);\n        counter.textContent = `${currentPhotoIndex + 1}\/${totalPhotos}`;\n      });\n\n      controls.appendChild(leftBtn);\n      controls.appendChild(counter);\n      controls.appendChild(rightBtn);\n\n      gallery.appendChild(track);\n      gallery.appendChild(controls);\n      page.appendChild(gallery);\n    }\n\n    \/\/ ----- GESTION DU CHARGEMENT DES VID\u00c9OS (LAZY LOAD CIBL\u00c9) -----\n    \/\/ N'assigne la vraie source vid\u00e9o qu'\u00e0 la vid\u00e9o actuelle + ses voisines imm\u00e9diates.\n    \/\/ D\u00e9charge (removeAttribute src) les vid\u00e9os qui s'\u00e9loignent pour lib\u00e9rer la bande passante\n    \/\/ et laisser le navigateur concentrer toutes ses ressources sur la vid\u00e9o affich\u00e9e.\n    function manageVideoLoading(centerIndex) {\n      feedItems.forEach((item, idx) => {\n        if (item.type !== 'video') return;\n        const page = feed.children[idx + 1];\n        if (!page) return;\n        const video = page.querySelector('video');\n        if (!video) return;\n\n        const distance = Math.abs(idx - centerIndex);\n\n        if (distance <= PRELOAD_RANGE) {\n          if (!video.src) {\n            video.preload = 'auto';\n            video.src = video.dataset.src;\n            if (idx === centerIndex) {\n              \/\/ priorit\u00e9 r\u00e9seau maximale pour la vid\u00e9o actuellement affich\u00e9e\n              video.setAttribute('fetchpriority', 'high');\n            }\n            video.load();\n          }\n        } else if (video.src) {\n          \/\/ trop loin : on d\u00e9charge pour ne pas continuer \u00e0 consommer de la bande passante\n          video.pause();\n          video.removeAttribute('src');\n          video.load();\n        }\n      });\n    }\n\n    \/\/ ----- GESTION DES M\u00c9DIAS ET DU SON -----\n    function syncMediaState() {\n      if (!isViewerOpen) {\n        stopAllVideos();\n        return;\n      }\n\n      manageVideoLoading(currentFeedIndex);\n\n      feed.querySelectorAll('.media-page').forEach((page, idx) => {\n        const video = page.querySelector('video');\n        if (!video) return;\n\n        if (idx === currentFeedIndex) {\n          video.muted = isMuted;\n          if (!video.src) video.src = video.dataset.src;\n\n          \/\/ Fonction s\u00e9curis\u00e9e pour lancer la lecture d\u00e8s que le navigateur est pr\u00eat\n          const attemptPlay = () => {\n            const playPromise = video.play();\n            if (playPromise !== undefined) {\n              playPromise.catch(() => {\n                \/\/ En cas de blocage, on force en sourdine (requis par certains navigateurs mobiles)\n                video.muted = true;\n                isMuted = true;\n                soundButton.textContent = '\ud83d\udd07';\n                video.play().catch(() => {});\n              });\n            }\n          };\n\n          if (video.readyState >= 3) { \/\/ HAVE_FUTURE_DATA ou plus\n            attemptPlay();\n          } else {\n            video.load();\n            video.oncanplay = () => {\n              attemptPlay();\n              video.oncanplay = null; \/\/ Nettoyage de l'\u00e9v\u00e9nement\n            };\n          }\n        } else if (video.src) {\n          \/\/ Vid\u00e9os hors champ mais encore charg\u00e9es (voisines) : pause propre sans effacer la src\n          video.pause();\n          video.currentTime = 0;\n          video.muted = true;\n        }\n      });\n    }\n\n    function stopAllVideos() {\n      feed.querySelectorAll('video').forEach(video => {\n        video.pause();\n        if (video.src) {\n          video.currentTime = 0;\n        }\n        video.muted = true;\n      });\n    }\n\n    function setupObserver() {\n      if (observer) observer.disconnect();\n\n      observer = new IntersectionObserver((entries) => {\n        if (!isViewerOpen || isNavigating) return;\n\n        entries.forEach(entry => {\n          if (entry.isIntersecting && entry.intersectionRatio >= 0.5) {\n            const idx = parseInt(entry.target.dataset.feedIndex, 10);\n            if (!isNaN(idx) && idx !== currentFeedIndex) {\n              currentFeedIndex = idx;\n              updateViewerUI();\n              syncMediaState();\n            }\n          }\n        });\n      }, {\n        root: feed,\n        threshold: [0.5, 0.75]\n      });\n\n      feed.querySelectorAll('.media-page').forEach(page => observer.observe(page));\n    }\n\n    \/\/ ----- NAVIGATION ET OUVERTURE \/ FERMETURE -----\n    function openViewer(clickedThumbnail) {\n      buildFeedOnce();\n      isViewerOpen = true;\n      isNavigating = true;\n\n      const index = thumbnails.indexOf(clickedThumbnail);\n      currentFeedIndex = index >= 0 ? index : 0;\n      savedScrollPosition = window.scrollY;\n\n      \/\/ On lance le chargement de la vid\u00e9o cliqu\u00e9e imm\u00e9diatement, avant m\u00eame\n      \/\/ le scroll\/l'affichage, pour gagner un maximum de temps sur le d\u00e9marrage.\n      manageVideoLoading(currentFeedIndex);\n\n      viewer.classList.add('open');\n      viewer.setAttribute('aria-hidden', 'false');\n      document.body.classList.add('viewer-open');\n\n      const targetPage = feed.children[currentFeedIndex + 1];\n      if (targetPage) {\n        feed.scrollTop = targetPage.offsetTop;\n      }\n\n      updateViewerUI();\n      setupObserver();\n      syncMediaState();\n\n      setTimeout(() => {\n        isNavigating = false;\n      }, 250);\n    }\n\n    function closeViewer() {\n      isViewerOpen = false;\n\n      if (observer) {\n        observer.disconnect();\n        observer = null;\n      }\n\n      stopAllVideos();\n\n      viewer.classList.remove('open');\n      viewer.setAttribute('aria-hidden', 'true');\n      document.body.classList.remove('viewer-open');\n      window.scrollTo(0, savedScrollPosition);\n    }\n\n    function goToFeed(index) {\n      if (!feedItems.length) return;\n      currentFeedIndex = Math.max(0, Math.min(index, feedItems.length - 1));\n      const page = feed.children[currentFeedIndex + 1];\n      if (!page) return;\n\n      isNavigating = true;\n      manageVideoLoading(currentFeedIndex);\n      page.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      updateViewerUI();\n\n      const galleryTrack = page.querySelector('.gallery-track');\n      if (galleryTrack) { galleryTrack.scrollLeft = 0; }\n\n      setTimeout(() => {\n        isNavigating = false;\n        syncMediaState();\n      }, 300);\n    }\n\n    function updateViewerUI() {\n      const item = feedItems[currentFeedIndex];\n      if (!item) return;\n      soundButton.textContent = isMuted ? '\ud83d\udd07' : '\ud83d\udd0a';\n      \n      if (item.type === 'video') {\n        soundButton.classList.add('visible');\n      } else {\n        soundButton.classList.remove('visible');\n      }\n    }\n\n    \/\/ ----- \u00c9V\u00c9NEMENTS -----\n\n    feed.addEventListener('click', (e) => {\n      if (\n        e.target.tagName === 'VIDEO' ||\n        e.target.tagName === 'IMG' ||\n        e.target.closest('button') ||\n        e.target.closest('.gallery-controls')\n      ) {\n        return;\n      }\n      closeViewer();\n    });\n\n    thumbnails.forEach(thumb => {\n      thumb.addEventListener('click', () => openViewer(thumb));\n      thumb.addEventListener('keydown', (e) => {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          openViewer(thumb);\n        }\n      });\n    });\n\n    viewerClose.addEventListener('click', closeViewer);\n\n    soundButton.addEventListener('click', () => {\n      isMuted = !isMuted;\n      soundButton.textContent = isMuted ? '\ud83d\udd07' : '\ud83d\udd0a';\n      \n      const currentVideo = feed.children[currentFeedIndex + 1]?.querySelector('video');\n      if (currentVideo) {\n        currentVideo.muted = isMuted;\n      }\n    });\n\n    window.addEventListener('keydown', (e) => {\n      if (!isViewerOpen) return;\n\n      if (e.key === 'Escape') {\n        closeViewer();\n      } else if (e.key === 'ArrowDown') {\n        e.preventDefault();\n        if (currentFeedIndex < feedItems.length - 1) goToFeed(currentFeedIndex + 1);\n      } else if (e.key === 'ArrowUp') {\n        e.preventDefault();\n        if (currentFeedIndex > 0) goToFeed(currentFeedIndex - 1);\n      } else if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n        const currentPage = feed.children[currentFeedIndex + 1];\n        if (currentPage) {\n          const track = currentPage.querySelector('.gallery-track');\n          if (track) {\n            e.preventDefault();\n            const step = e.key === 'ArrowRight' ? track.clientWidth : -track.clientWidth;\n            fastScrollTo(track, track.scrollLeft + step, 180);\n          }\n        }\n      }\n    });\n  <\/script>\n\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8ae768a e-flex e-con-boxed e-con e-parent\" data-id=\"8ae768a\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b908aa9 e-flex e-con-boxed e-con e-parent\" data-id=\"b908aa9\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e7617f8 elementor-widget elementor-widget-button\" data-id=\"e7617f8\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/www.instagram.com\/horvoros\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fab-instagram\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Instagram<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-57eb6ec e-flex e-con-boxed e-con e-parent\" data-id=\"57eb6ec\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-35e4150 elementor-widget elementor-widget-heading\" data-id=\"35e4150\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Horvoros1@gmail.com<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cfb4a7e e-flex e-con-boxed e-con e-parent\" data-id=\"cfb4a7e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\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>Cr\u00e9ateur Multidisciplinaire<\/p>\n","protected":false},"author":1,"featured_media":633,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-240","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/pages\/240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/comments?post=240"}],"version-history":[{"count":645,"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/pages\/240\/revisions"}],"predecessor-version":[{"id":1216,"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/pages\/240\/revisions\/1216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/media\/633"}],"wp:attachment":[{"href":"https:\/\/horvoros.com\/index.php\/wp-json\/wp\/v2\/media?parent=240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}