{"id":1217,"date":"2026-10-14T22:06:36","date_gmt":"2026-10-14T22:06:36","guid":{"rendered":"https:\/\/yovobassy.com\/?page_id=1217"},"modified":"2026-10-23T00:45:23","modified_gmt":"2026-10-23T00:45:23","slug":"yovo-solo","status":"publish","type":"page","link":"https:\/\/yovobassy.com\/index.php\/yovo-solo\/","title":{"rendered":"Yovo Solo"},"content":{"rendered":"\n<!-- ==========================================\n YOVO SOLO \u2014 COVERFLOW 3D\n WORDPRESS BLOCKSY\n 19 PHOTOGRAPHIES\n VERSION CORRIG\u00c9E ET EXTENSIBLE\n ========================================== -->\n\n<style>\n\n\/* FOND BLOCKSY *\/\n\nbody.page:has(#yovo-solo-coverflow),\nbody.page:has(#yovo-solo-coverflow) #main,\nbody.page:has(#yovo-solo-coverflow) .site-main,\nbody.page:has(#yovo-solo-coverflow) .site-content,\nbody.page:has(#yovo-solo-coverflow) .ct-container,\nbody.page:has(#yovo-solo-coverflow) .entry-content {\n  background-color: #101010 !important;\n}\n\nbody.page:has(#yovo-solo-coverflow) .ct-sidebar,\nbody.page:has(#yovo-solo-coverflow) #sidebar {\n  display: none !important;\n}\n\nbody.page:has(#yovo-solo-coverflow) #main > .ct-container,\nbody.page:has(#yovo-solo-coverflow) .site-main > .ct-container {\n  display: block !important;\n  width: 100% !important;\n  max-width: 1400px !important;\n  margin: 0 auto !important;\n}\n\nbody.page:has(#yovo-solo-coverflow) .entry-title {\n  color: #FFFFFF !important;\n}\n\n\/* GALERIE *\/\n\n#yovo-solo-coverflow,\n#yovo-solo-coverflow * {\n  box-sizing: border-box;\n}\n\n#yovo-solo-coverflow {\n  width: 100%;\n  max-width: 1200px;\n  margin: 0 auto;\n  padding: 5px 12px 20px;\n  background: #101010;\n  color: #FFFFFF;\n  font-family: Arial, Helvetica, sans-serif;\n  overflow: hidden;\n}\n\n\/* TITRE *\/\n\n#yovo-solo-coverflow .yv-title {\n  max-width: 1100px;\n  margin: 0 auto 12px !important;\n  font-size: 20px !important;\n  line-height: 1.25 !important;\n  font-weight: 800;\n  color: #FFFFFF !important;\n  text-transform: uppercase;\n}\n\n#yovo-solo-coverflow .yv-orange {\n  color: #F4A425 !important;\n}\n\n#yovo-solo-coverflow .yv-line {\n  display: block;\n  width: 65px;\n  height: 3px;\n  background: #F4A425;\n  margin-top: 12px;\n}\n\n\/* COVERFLOW *\/\n\n#yovo-solo-coverflow .yv-stage {\n  position: relative;\n  width: 100%;\n  max-width: 1100px;\n  height: clamp(230px, 32vw, 340px);\n  margin: 0 auto 5px;\n  perspective: 1400px;\n  overflow: hidden;\n  touch-action: pan-y;\n}\n\n\/* CADRES *\/\n\n#yovo-solo-coverflow .yv-card {\n  position: absolute;\n  display: block !important;\n  left: 50%;\n  top: 50%;\n  width: 54%;\n  height: 82%;\n  max-width: 550px;\n  min-width: 0;\n  min-height: 0;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 2px solid #444 !important;\n  border-radius: 9px;\n  background: #181818 !important;\n  overflow: hidden;\n  cursor: pointer;\n  transform: translate(-50%,-50%);\n  transition:\n    transform .5s ease,\n    opacity .5s ease,\n    filter .5s ease;\n  box-shadow: 0 15px 40px #000;\n  backface-visibility: visible;\n}\n\n\/* AFFICHAGE INITIAL :\n   LA PREMI\u00c8RE PHOTO RESTE VISIBLE\n   M\u00caME SI JAVASCRIPT NE D\u00c9MARRE PAS *\/\n\n#yovo-solo-coverflow .yv-card:not(:first-child) {\n  opacity: 0;\n  pointer-events: none;\n}\n\n#yovo-solo-coverflow .yv-stage.yv-ready .yv-card {\n  pointer-events: auto;\n}\n\n#yovo-solo-coverflow .yv-card.active {\n  border-color: #F4A425 !important;\n  box-shadow:\n    0 0 30px rgba(244,164,37,.27),\n    0 20px 45px #000;\n}\n\n#yovo-solo-coverflow .yv-card img {\n  display: block !important;\n  width: 100% !important;\n  height: 100% !important;\n  max-width: 100% !important;\n  max-height: 100% !important;\n  object-fit: contain !important;\n  object-position: center !important;\n  background: #181818;\n  pointer-events: none;\n}\n\n\/* NAVIGATION *\/\n\n#yovo-solo-coverflow .yv-controls {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 25px;\n  margin: 5px auto 0;\n}\n\n#yovo-solo-coverflow .yv-arrow {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 43px;\n  height: 43px;\n  min-width: 43px;\n  min-height: 43px;\n  padding: 0 !important;\n  background: #101010 !important;\n  color: #F4A425 !important;\n  border: 2px solid #F4A425 !important;\n  border-radius: 50% !important;\n  font-size: 29px;\n  line-height: 1;\n  cursor: pointer;\n}\n\n#yovo-solo-coverflow .yv-arrow:hover {\n  background: #F4A425 !important;\n  color: #101010 !important;\n}\n\n#yovo-solo-coverflow .yv-info {\n  width: 180px;\n  min-width: 0;\n  text-align: center;\n}\n\n#yovo-solo-coverflow .yv-name {\n  color: #FFFFFF;\n  font-size: 14px;\n  font-weight: 700;\n}\n\n#yovo-solo-coverflow .yv-counter {\n  margin-top: 8px;\n  color: #F4A425;\n  font-size: 12px;\n  font-variant-numeric: tabular-nums;\n}\n\n\/* POINTS *\/\n\n#yovo-solo-coverflow .yv-dots {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  margin: 12px auto;\n}\n\n#yovo-solo-coverflow .yv-dot {\n  display: block;\n  width: 8px;\n  height: 8px;\n  min-width: 8px;\n  min-height: 8px;\n  padding: 0 !important;\n  border: none !important;\n  border-radius: 20px !important;\n  background: #666 !important;\n  cursor: pointer;\n}\n\n#yovo-solo-coverflow .yv-dot.active {\n  width: 25px;\n  background: #F4A425 !important;\n}\n\n\/* BOUTONS BAS *\/\n\n#yovo-solo-coverflow .yv-actions {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-wrap: wrap;\n  gap: 12px;\n}\n\n#yovo-solo-coverflow .yv-action {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: auto;\n  min-width: 0;\n  min-height: 0;\n  padding: 12px 17px;\n  background: #101010 !important;\n  color: #F4A425 !important;\n  border: 1px solid #F4A425 !important;\n  border-radius: 7px !important;\n  font-family: Arial, sans-serif;\n  font-size: 12px;\n  font-weight: 700;\n  line-height: 1.2;\n  cursor: pointer;\n}\n\n#yovo-solo-coverflow .yv-action:hover {\n  background: #F4A425 !important;\n  color: #101010 !important;\n}\n\n#yovo-solo-coverflow .yv-play-icon {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 6px;\n  border-top: 6px solid transparent;\n  border-bottom: 6px solid transparent;\n  border-left: 10px solid #F4A425;\n}\n\n#yovo-solo-coverflow .yv-help {\n  margin: 10px auto 0;\n  color: #999;\n  font-size: 12px;\n  text-align: center;\n}\n\n\/* PLEIN \u00c9CRAN *\/\n\n#yv-solo-lightbox,\n#yv-solo-lightbox * {\n  box-sizing: border-box;\n}\n\n#yv-solo-lightbox {\n  display: none;\n  position: fixed !important;\n  inset: 0 !important;\n  width: 100% !important;\n  height: 100vh !important;\n  height: 100dvh !important;\n  z-index: 2147483647 !important;\n  background: rgba(0,0,0,.98) !important;\n  padding: 55px 60px 45px;\n  align-items: center;\n  justify-content: center;\n  flex-direction: column;\n  overflow: hidden;\n}\n\n#yv-solo-lightbox.open {\n  display: flex !important;\n}\n\n#yv-solo-lightbox .yv-large {\n  display: block !important;\n  width: auto !important;\n  height: auto !important;\n  max-width: 100% !important;\n  max-height: 78vh !important;\n  max-height: 78dvh !important;\n  object-fit: contain !important;\n  border: 2px solid #F4A425 !important;\n  border-radius: 5px !important;\n  box-shadow: 0 0 35px rgba(244,164,37,.18);\n}\n\n#yv-solo-lightbox .yv-zoom-arrow,\n#yv-solo-lightbox .yv-close {\n  position: absolute !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  width: 45px !important;\n  height: 45px !important;\n  min-height: 0 !important;\n  padding: 0 !important;\n  background: #101010 !important;\n  color: #F4A425 !important;\n  border: 2px solid #F4A425 !important;\n  border-radius: 50% !important;\n  font-size: 30px !important;\n  line-height: 1 !important;\n  cursor: pointer;\n  z-index: 10;\n}\n\n#yv-solo-lightbox .yv-zoom-arrow {\n  top: 50%;\n  transform: translateY(-50%);\n}\n\n#yv-solo-lightbox .yv-zoom-prev {\n  left: 8px;\n}\n\n#yv-solo-lightbox .yv-zoom-next {\n  right: 8px;\n}\n\n#yv-solo-lightbox .yv-close {\n  top: 12px;\n  right: 15px;\n}\n\n#yv-solo-lightbox .yv-zoom-arrow:hover,\n#yv-solo-lightbox .yv-close:hover {\n  background: #F4A425 !important;\n  color: #101010 !important;\n}\n\n#yv-solo-lightbox .yv-lightbox-title {\n  margin-top: 15px;\n  color: #FFFFFF !important;\n  font-size: 15px;\n  text-align: center;\n}\n\n#yv-solo-lightbox .yv-light-counter {\n  margin-top: 5px;\n  color: #F4A425;\n  font-size: 12px;\n}\n\n\/* MOBILE *\/\n\n@media (max-width: 768px) {\n  #yovo-solo-coverflow .yv-stage {\n    height: clamp(220px, 60vw, 300px);\n  }\n\n  #yovo-solo-coverflow .yv-controls {\n    gap: 12px;\n  }\n\n  #yovo-solo-coverflow .yv-arrow {\n    width: 37px;\n    height: 37px;\n    min-width: 37px;\n    min-height: 37px;\n  }\n\n  #yovo-solo-coverflow .yv-info {\n    width: 155px;\n  }\n\n  #yovo-solo-coverflow .yv-action {\n    font-size: 11px;\n    padding: 9px 12px;\n  }\n\n  #yv-solo-lightbox {\n    padding: 55px 43px 40px;\n  }\n\n  #yv-solo-lightbox .yv-zoom-arrow {\n    width: 36px !important;\n    height: 36px !important;\n    font-size: 25px !important;\n  }\n\n  #yv-solo-lightbox .yv-zoom-prev {\n    left: 3px;\n  }\n\n  #yv-solo-lightbox .yv-zoom-next {\n    right: 3px;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  #yovo-solo-coverflow .yv-card {\n    transition: none;\n  }\n}\n\n<\/style>\n\n\n<!-- ==========================================\n STRUCTURE HTML \u2014 19 PHOTOS\n ========================================== -->\n\n<section id=\"yovo-solo-coverflow\">\n\n  <h2 class=\"yv-title\">\n    <span class=\"yv-orange\">YOVO<\/span> SOLO\n    <span class=\"yv-line\"><\/span>\n  <\/h2>\n\n  <div class=\"yv-stage\" aria-label=\"Galerie Yovo Solo\">\n\n    <!-- PHOTO 01 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Fors 2025\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/08\/IMG_7298-1.jpeg\" alt=\"Yovo \u2014 Fors 2025\" loading=\"eager\">\n    <\/button>\n\n    <!-- PHOTO 02 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Sunska 2023\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_9766.jpeg\" alt=\"Yovo \u2014 Sunska 2023\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 03 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Olympia 2025 Pit Baccardi\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/F201DCE2-0CFA-4A1F-8208-ABD744348344_SnapseedCopy.jpeg\" alt=\"Yovo \u2014 Olympia 2025\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 04 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Fors 2025\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_7318.jpeg\" alt=\"Yovo \u2014 Fors 2025\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 05 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Cigale 2023\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/5dad4d63-94cf-4980-a129-960740316b65.jpeg\" alt=\"Yovo \u2014 Cigale 2023\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 06 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Fors 2025\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_7312.jpeg\" alt=\"Yovo \u2014 Fors 2025\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 07 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Brise Glace 2025\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_4945.jpeg\" alt=\"Yovo \u2014 Brise Glace 2025\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 08 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo \u2014 Photo 08\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3118.jpeg\" alt=\"Yovo Solo \u2014 Photo 08\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 09 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 La Fouine Tour\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_8765.jpeg\" alt=\"Yovo \u2014 La Fouine Tour\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 10 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo \u2014 Photo 10\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/D66FB26B-8D0C-47C4-B50D-975AD2C9A7A9.jpeg\" alt=\"Yovo Solo \u2014 Photo 10\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 11 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo \u2014 Photo 11\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3884.jpeg\" alt=\"Yovo Solo \u2014 Photo 11\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 12 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 La Cigale 2023\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/c48780a7-3204-46d5-8306-ec7402067e22.jpeg\" alt=\"Yovo \u2014 La Cigale 2023\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 13 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Electr\u2019au Dub Festival\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3403.jpeg\" alt=\"Yovo \u2014 Electr\u2019au Dub Festival\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 14 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"R\u00e9sidence N\u00e8g\u2019Marrons 2020\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3050.jpeg\" alt=\"Yovo \u2014 N\u00e8g\u2019Marrons\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 15 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Clip Princess Erika\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/08\/A-Yovo-Solo-scaled.jpg\" alt=\"Yovo \u2014 Clip Princess Erika\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 16 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo \u2014 Photo 16\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_1315.jpeg\" alt=\"Yovo Solo \u2014 Photo 16\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 17 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 No Logo\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_9521.jpeg\" alt=\"Yovo \u2014 No Logo\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 18 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 DYR Festival\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_8427-scaled.jpeg\" alt=\"Yovo \u2014 DYR Festival\" loading=\"lazy\">\n    <\/button>\n\n    <!-- PHOTO 19 -->\n    <button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 TUMA\">\n      <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_4762-scaled.jpeg\" alt=\"Yovo \u2014 TUMA\" loading=\"lazy\">\n    <\/button>\n\n<!-- PHOTO 20 \u2014 NOUVELLE PHOTO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo \u2014 Photo 20\">\n\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_2562-scaled.png\" alt=\"Yovo Solo \u2014 Photo 20\" loading=\"lazy\">\n\n<\/button>\n\n\n<!-- PHOTO 21 \u2014 NOUVELLE PHOTO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo \u2014 Photo 21\">\n\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_6394.jpeg\" alt=\"Yovo Solo \u2014 Photo 21\" loading=\"lazy\">\n\n<\/button>\n\n\n<!-- PHOTO 22 \u2014 YOVO \u00c0 GEN\u00c8VE -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Gen\u00e8ve \">\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/7113318617710161034.jpeg\" alt=\"Rico et Yovo \u00e0 Morgins\" loading=\"lazy\">\n<\/button>\n\n\n<!-- PHOTO 23 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Morgins\">\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3301.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 23\" loading=\"lazy\">\n<\/button>\n\n\n<!-- PHOTO 24 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo\">\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/342e4c17-c655-428a-9d4b-9b1b47dbddf1.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 3\" loading=\"lazy\">\n<\/button>\n\n\n<!-- PHOTO 25 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo\">\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_4051-scaled.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 25\" loading=\"lazy\">\n<\/button>\n\n\n<!-- PHOTO 26 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo\">\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/5EB2AC3F-3DCB-4DAE-9969-4D192BC18C58.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 26\" loading=\"lazy\">\n<\/button>\n\n<!-- PHOTO 27 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo Solo\">\n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_4792.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 27\" loading=\"lazy\">\n<\/button>\n\n<!-- PHOTO 28 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Bass Magazine\">      \n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3304.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 28\" loading=\"lazy\">\n<\/button>\n      \n\n<!-- PHOTO 29 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Kind of Blue\">      \n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_3316.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 29\" loading=\"lazy\">\n<\/button>\n\n<!-- PHOTO 30 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Stand\">      \n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_4773-1.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 30\" loading=\"lazy\">\n<\/button>\n\n<!-- PHOTO 31 \u2014 YOVO SOLO -->\n\n<button type=\"button\" class=\"yv-card\" data-title=\"Yovo \u2014 Cenon\">      \n  <img decoding=\"async\" src=\"https:\/\/yovobassy.com\/wp-content\/uploads\/2026\/10\/IMG_8815-scaled.jpeg\" alt=\"Yovo Solo \u2014 Nouvelle photo 31\" loading=\"lazy\">\n<\/button>\n\n    <!-- =====================================\n      AJOUTER VOS FUTURES PHOTOS ICI\n\n      DUPLIQUER CE MOD\u00c8LE :\n\n      <button type=\"button\" class=\"yv-card\"\n              data-title=\"Yovo \u2014 Nouvelle photo\">\n        <img decoding=\"async\" src=\"ADRESSE-DE-LA-PHOTO\"\n             alt=\"Yovo \u2014 Nouvelle photo\"\n             loading=\"lazy\">\n      <\/button>\n\n      LE COMPTEUR SE METTRA \u00c0 JOUR\n      AUTOMATIQUEMENT.\n    ====================================== -->\n\n  <\/div>\n\n  <!-- NAVIGATION -->\n\n  <div class=\"yv-controls\">\n\n    <button type=\"button\" class=\"yv-arrow yv-prev\" aria-label=\"Photo pr\u00e9c\u00e9dente\">\u2039<\/button>\n\n    <div class=\"yv-info\">\n      <div class=\"yv-name\">Yovo Solo<\/div>\n      <div class=\"yv-counter\">01 \/ 19<\/div>\n    <\/div>\n\n    <button type=\"button\" class=\"yv-arrow yv-next\" aria-label=\"Photo suivante\">\u203a<\/button>\n\n  <\/div>\n\n  <!-- POINTS AUTOMATIQUES -->\n\n  <div class=\"yv-dots\"><\/div>\n\n  <!-- BOUTONS -->\n\n  <div class=\"yv-actions\">\n\n    <button type=\"button\" class=\"yv-action yv-auto\" aria-pressed=\"false\">\n\n      <span class=\"yv-play-icon\"><\/span>\n\n      <span class=\"yv-auto-label\">\n        Lecture automatique\n      <\/span>\n\n    <\/button>\n\n    <button type=\"button\" class=\"yv-action yv-reset\">\n      \u21ba Revenir au d\u00e9but\n    <\/button>\n\n  <\/div>\n\n  <p class=\"yv-help\">\n    Faites glisser les photos pour naviguer.\n    Appuyez sur la photo centrale pour l&rsquo;agrandir.\n  <\/p>\n\n<\/section>\n\n\n<!-- ==========================================\n PLEIN \u00c9CRAN\n ========================================== -->\n\n<div id=\"yv-solo-lightbox\" role=\"dialog\" aria-modal=\"true\" aria-hidden=\"true\" aria-label=\"Photo agrandie\">\n\n  <button type=\"button\" class=\"yv-close\" aria-label=\"Fermer\">\u00d7<\/button>\n\n  <button type=\"button\" class=\"yv-zoom-arrow yv-zoom-prev\" aria-label=\"Photo pr\u00e9c\u00e9dente\">\u2039<\/button>\n\n  <img class=\"yv-large\" alt=\"\">\n\n  <button type=\"button\" class=\"yv-zoom-arrow yv-zoom-next\" aria-label=\"Photo suivante\">\u203a<\/button>\n\n  <div class=\"yv-lightbox-title\"><\/div>\n  <div class=\"yv-light-counter\"><\/div>\n\n<\/div>\n\n\n<!-- ==========================================\n JAVASCRIPT COMPLET\n ========================================== -->\n\n<script>\n(function () {\n  \"use strict\";\n\n  const root = document.getElementById(\n    \"yovo-solo-coverflow\"\n  );\n\n  if (!root || root.dataset.initialized) return;\n\n  const stage = root.querySelector(\".yv-stage\");\n  const cards = Array.from(\n    stage.querySelectorAll(\".yv-card\")\n  );\n\n  if (!cards.length) return;\n\n  root.dataset.initialized = \"true\";\n\n  const dots = root.querySelector(\".yv-dots\");\n  const counter = root.querySelector(\".yv-counter\");\n  const name = root.querySelector(\".yv-name\");\n\n  const auto = root.querySelector(\".yv-auto\");\n  const autoLabel = root.querySelector(\".yv-auto-label\");\n  const playIcon = root.querySelector(\".yv-play-icon\");\n  const reset = root.querySelector(\".yv-reset\");\n\n  const lightbox = document.getElementById(\n    \"yv-solo-lightbox\"\n  );\n\n  if (!lightbox) return;\n\n  \/* SORTIR LA LIGHTBOX DES CONTENEURS BLOCKSY *\/\n\n  if (lightbox.parentNode !== document.body) {\n    document.body.appendChild(lightbox);\n  }\n\n  const large = lightbox.querySelector(\".yv-large\");\n  const lightTitle = lightbox.querySelector(\n    \".yv-lightbox-title\"\n  );\n  const lightCounter = lightbox.querySelector(\n    \".yv-light-counter\"\n  );\n\n  let current = 0;\n  let timer = null;\n  let startX = 0;\n  let startY = 0;\n  let skipClick = false;\n  let previousOverflow = \"\";\n  let lastFocus = null;\n\n  const total = cards.length;\n  const dotButtons = [];\n\n  function numero(index) {\n    return String(index + 1).padStart(2, \"0\") +\n      \" \/ \" +\n      String(total).padStart(2, \"0\");\n  }\n\n  \/* POINTS *\/\n\n  cards.forEach(function(card, index) {\n\n    const dot = document.createElement(\"button\");\n\n    dot.type = \"button\";\n    dot.className = \"yv-dot\";\n    dot.setAttribute(\n      \"aria-label\",\n      \"Afficher la photo \" + (index + 1)\n    );\n\n    dot.addEventListener(\"click\", function() {\n      stopAuto();\n      show(index);\n    });\n\n    dots.appendChild(dot);\n    dotButtons.push(dot);\n\n    card.addEventListener(\"click\", function() {\n      if (skipClick) return;\n\n      if (current === index) {\n        openPhoto();\n      } else {\n        stopAuto();\n        show(index);\n      }\n    });\n\n    const img = card.querySelector(\"img\");\n\n    if (img) {\n      img.addEventListener(\"load\", function() {\n        adapterCadres();\n        render();\n      });\n    }\n  });\n\n  \/* CADRES ADAPTATIFS *\/\n\n  function adapterCadres() {\n    const largeurScene = stage.clientWidth;\n    const hauteurScene = stage.clientHeight;\n\n    if (!largeurScene || !hauteurScene) return;\n\n    const mobile = largeurScene <= 650;\n    const maxW = Math.min(\n      largeurScene * (mobile ? .68 : .54),\n      550\n    );\n    const maxH = hauteurScene *\n      (mobile ? .77 : .82);\n\n    cards.forEach(function(card) {\n      const img = card.querySelector(\"img\");\n\n      if (!img || !img.naturalWidth ||\n          !img.naturalHeight) return;\n\n      const ratio = img.naturalWidth \/ img.naturalHeight;\n\n      let w = maxW;\n      let h = w \/ ratio;\n\n      if (h > maxH) {\n        h = maxH;\n        w = h * ratio;\n      }\n\n      card.style.width = w + \"px\";\n      card.style.height = h + \"px\";\n      card.style.maxWidth = \"none\";\n    });\n  }\n\n  \/* CHARGEMENT DES PHOTOS PROCHES *\/\n\n  function chargerVoisines() {\n    for (let d = -3; d <= 3; d++) {\n      const index = (current + d + total) % total;\n      const img = cards[index].querySelector(\"img\");\n      if (img) img.loading = \"eager\";\n    }\n  }\n\n  \/* POSITIONNEMENT 3D *\/\n\n  function render() {\n    const largeur = stage.clientWidth;\n    if (!largeur) return;\n\n    const mobile = largeur <= 650;\n    const pas = Math.min(\n      largeur * (mobile ? .25 : .18),\n      mobile ? 100 : 175\n    );\n\n    cards.forEach(function(card, index) {\n      let diff = index - current;\n\n      if (diff > total \/ 2) diff -= total;\n      if (diff < -total \/ 2) diff += total;\n\n      const abs = Math.abs(diff);\n\n      const scale = abs === 0 ? 1 :\n                    abs === 1 ? .78 :\n                    abs === 2 ? .60 : .50;\n\n      const angle =\n        diff === 0 ? 0 : diff < 0 ? 40 : -40;\n\n      const x = diff * pas;\n\n      card.style.transform =\n        \"translate(-50%,-50%) \" +\n        \"translateX(\" + x + \"px) \" +\n        \"rotateY(\" + angle + \"deg) \" +\n        \"scale(\" + scale + \")\";\n\n      card.style.opacity =\n        abs > 2 ? \"0\" :\n        abs === 2 ? \".4\" : \"1\";\n\n      card.style.filter =\n        abs === 0\n          ? \"brightness(1)\"\n          : \"brightness(.65)\";\n\n      card.style.zIndex = String(100 - abs);\n      card.style.pointerEvents =\n        abs <= 2 ? \"auto\" : \"none\";\n\n      card.classList.toggle(\"active\", abs === 0);\n      card.tabIndex = abs === 0 ? 0 : -1;\n\n      card.setAttribute(\n        \"aria-hidden\",\n        abs > 2 ? \"true\" : \"false\"\n      );\n    });\n\n    stage.classList.add(\"yv-ready\");\n\n    name.textContent =\n      cards[current].dataset.title || \"Yovo Solo\";\n\n    counter.textContent = numero(current);\n\n    dotButtons.forEach(function(dot, index) {\n      dot.classList.toggle(\n        \"active\",\n        index === current\n      );\n    });\n  }\n\n  function show(index) {\n    current = (index + total) % total;\n\n    chargerVoisines();\n    adapterCadres();\n    render();\n\n    if (lightbox.classList.contains(\"open\")) {\n      updateLightbox();\n    }\n  }\n\n  function next() {\n    show(current + 1);\n  }\n\n  function prev() {\n    show(current - 1);\n  }\n\n  \/* FL\u00c8CHES *\/\n\n  root.querySelector(\".yv-next\")\n    .addEventListener(\"click\", function() {\n      stopAuto();\n      next();\n    });\n\n  root.querySelector(\".yv-prev\")\n    .addEventListener(\"click\", function() {\n      stopAuto();\n      prev();\n    });\n\n  \/* LECTURE AUTOMATIQUE *\/\n\n  function stopAuto() {\n    if (timer !== null) {\n      clearInterval(timer);\n      timer = null;\n    }\n\n    autoLabel.textContent = \"Lecture automatique\";\n    playIcon.style.display = \"\";\n    auto.setAttribute(\"aria-pressed\", \"false\");\n  }\n\n  function startAuto() {\n    stopAuto();\n\n    next();\n\n    timer = setInterval(function() {\n      if (!document.hidden &&\n          !lightbox.classList.contains(\"open\")) {\n        next();\n      }\n    }, 4000);\n\n    autoLabel.textContent = \"Arr\u00eater le d\u00e9filement\";\n    playIcon.style.display = \"none\";\n    auto.setAttribute(\"aria-pressed\", \"true\");\n  }\n\n  auto.addEventListener(\"click\", function() {\n    if (timer !== null) {\n      stopAuto();\n    } else {\n      startAuto();\n    }\n  });\n\n  \/* RETOUR AU D\u00c9BUT *\/\n\n  reset.addEventListener(\"click\", function() {\n    stopAuto();\n    show(0);\n  });\n\n  \/* PLEIN \u00c9CRAN *\/\n\n  function updateLightbox() {\n    const card = cards[current];\n    const img = card.querySelector(\"img\");\n\n    large.src = img.src;\n    large.alt = img.alt;\n\n    lightTitle.textContent =\n      card.dataset.title || \"Yovo Solo\";\n\n    lightCounter.textContent = numero(current);\n  }\n\n  function openPhoto() {\n    stopAuto();\n\n    lastFocus = document.activeElement;\n    previousOverflow = document.body.style.overflow;\n\n    updateLightbox();\n\n    lightbox.classList.add(\"open\");\n    lightbox.setAttribute(\"aria-hidden\", \"false\");\n\n    document.body.style.overflow = \"hidden\";\n\n    lightbox.querySelector(\".yv-close\").focus();\n  }\n\n  function closePhoto() {\n    lightbox.classList.remove(\"open\");\n    lightbox.setAttribute(\"aria-hidden\", \"true\");\n\n    document.body.style.overflow = previousOverflow;\n    large.removeAttribute(\"src\");\n\n    if (lastFocus && typeof lastFocus.focus === \"function\") {\n      lastFocus.focus();\n    }\n  }\n\n  lightbox.querySelector(\".yv-close\")\n    .addEventListener(\"click\", closePhoto);\n\n  lightbox.querySelector(\".yv-zoom-prev\")\n    .addEventListener(\"click\", prev);\n\n  lightbox.querySelector(\".yv-zoom-next\")\n    .addEventListener(\"click\", next);\n\n  lightbox.addEventListener(\"click\", function(e) {\n    if (e.target === lightbox) closePhoto();\n  });\n\n  \/* CLAVIER *\/\n\n  document.addEventListener(\"keydown\", function(e) {\n    if (!lightbox.classList.contains(\"open\")) {\n      return;\n    }\n\n    if (e.key === \"Escape\") {\n      e.preventDefault();\n      closePhoto();\n    }\n\n    if (e.key === \"ArrowRight\") {\n      e.preventDefault();\n      next();\n    }\n\n    if (e.key === \"ArrowLeft\") {\n      e.preventDefault();\n      prev();\n    }\n  });\n\n  \/* NAVIGATION TACTILE *\/\n\n  function swipe(element) {\n    element.addEventListener(\"touchstart\", function(e) {\n      startX = e.changedTouches[0].clientX;\n      startY = e.changedTouches[0].clientY;\n      skipClick = false;\n    }, { passive: true });\n\n    element.addEventListener(\"touchend\", function(e) {\n      const dx = e.changedTouches[0].clientX - startX;\n      const dy = e.changedTouches[0].clientY - startY;\n\n      if (Math.abs(dx) > 35 &&\n          Math.abs(dx) > Math.abs(dy)) {\n\n        skipClick = true;\n        stopAuto();\n\n        if (dx < 0) next();\n        else prev();\n\n        setTimeout(function() {\n          skipClick = false;\n        }, 250);\n      }\n    }, { passive: true });\n  }\n\n  swipe(stage);\n  swipe(lightbox);\n\n  \/* RESPONSIVE *\/\n\n  function refresh() {\n    adapterCadres();\n    render();\n  }\n\n  window.addEventListener(\"resize\", refresh, {\n    passive: true\n  });\n\n  window.addEventListener(\"load\", refresh);\n\n  if (\"ResizeObserver\" in window) {\n    const observer = new ResizeObserver(refresh);\n    observer.observe(stage);\n  }\n\n  document.addEventListener(\"visibilitychange\", function() {\n    if (document.hidden) stopAuto();\n  });\n\n  \/* INITIALISATION *\/\n\n  show(0);\n  stopAuto();\n\n})();\n<\/script>\n\n<!-- ==========================================\n FIN YOVO SOLO \u2014 19 PHOTOS\n AJOUT DE NOUVELLES PHOTOS POSSIBLE\n ========================================== -->\n","protected":false},"excerpt":{"rendered":"<p>YOVO SOLO \u2039 Yovo Solo 01 \/ 19 \u203a Lecture automatique \u21ba Revenir au d\u00e9but Faites glisser les photos pour naviguer. Appuyez sur la photo centrale pour l&rsquo;agrandir. \u00d7 \u2039 \u203a<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1217","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7},"has_hero_section":"disabled"},"_links":{"self":[{"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/pages\/1217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/comments?post=1217"}],"version-history":[{"count":77,"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/pages\/1217\/revisions"}],"predecessor-version":[{"id":1804,"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/pages\/1217\/revisions\/1804"}],"wp:attachment":[{"href":"https:\/\/yovobassy.com\/index.php\/wp-json\/wp\/v2\/media?parent=1217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}