/* Variables des couleurs du logo */
:root {
  --blue: #1e3a8a;
  --blue-light: #1e40af;
  --red: #dc2626;
  --red-dark: #b91c1c;
  --text-dark: #1a1a1a;
}
h2.title_gross.title_block {
    color: #294a99;
    font-weight: bold;
    font-size: 2.2em;
    margin-bottom: 30px;
}
h2.title_gross.title_block::before {
    content: "";
    display: inline-block;
    width: 40px;
    height: 40px;
    margin-right: 15px; /* Espace entre l'image et le texte */
    background-image: url('https://cbdeau-pro.fr/img/ico-cbdeau.jpg');
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    vertical-align: middle; /* Pour aligner avec le texte */
}
h3.sous_title.bold {
    color: #e10a17;
    font-weight: bold;
    margin-bottom: 30px;
}
/* Animations de base */
.animated {
  animation-duration: 1s;
  animation-fill-mode: both;
}

.animated.hinge { animation-duration: 2s; }
.animated.infinite { animation-iteration-count: infinite; }
.flipOutX, .flipOutY, .bounceIn, .bounceOut { animation-duration: .75s; }

/* Keyframes - version standard uniquement (supprimer les -webkit- si non nécessaire) */
@keyframes bounce {
  from, 20%, 53%, 80%, to {
    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    transform: translate3d(0, 0, 0);
  }
  40%, 43% {
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    transform: translate3d(0, -30px, 0);
  }
  70% {
    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    transform: translate3d(0, -15px, 0);
  }
  90% { transform: translate3d(0, -4px, 0); }
}

@keyframes flash {
  from, 50%, to { opacity: 1; }
  25%, 75% { opacity: 0; }
}

@keyframes pulse {
  from, to { transform: scale3d(1, 1, 1); }
  50% { transform: scale3d(1.15, 1.15, 1.15); }
}

@keyframes rubberBand {
  from, to { transform: scale3d(1, 1, 1); }
  30% { transform: scale3d(1.25, 0.75, 1); }
  40% { transform: scale3d(0.75, 1.25, 1); }
  50% { transform: scale3d(1.15, 0.85, 1); }
  65% { transform: scale3d(0.95, 1.05, 1); }
  75% { transform: scale3d(1.05, 0.95, 1); }
}

@keyframes shake {
  from, to { transform: translate3d(0, 0, 0); }
  10%, 30%, 50%, 70%, 90% { transform: translate3d(-10px, 0, 0); }
  20%, 40%, 60%, 80% { transform: translate3d(10px, 0, 0); }
}

@keyframes headShake {
  0%, 50% { transform: translateX(0); }
  6.5% { transform: translateX(-6px) rotateY(-9deg); }
  18.5% { transform: translateX(5px) rotateY(7deg); }
  31.5% { transform: translateX(-3px) rotateY(-5deg); }
  43.5% { transform: translateX(2px) rotateY(3deg); }
}

@keyframes swing {
  20% { transform: rotate3d(0, 0, 1, 15deg); }
  40% { transform: rotate3d(0, 0, 1, -10deg); }
  60% { transform: rotate3d(0, 0, 1, 5deg); }
  80% { transform: rotate3d(0, 0, 1, -5deg); }
  to { transform: rotate3d(0, 0, 1, 0deg); }
}

@keyframes tada {
  from, to { transform: scale3d(1, 1, 1); }
  10%, 20% { transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg); }
  30%, 50%, 70%, 90% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); }
  40%, 60%, 80% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); }
}

@keyframes wobble {
  from, to { transform: none; }
  15% { transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); }
  30% { transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); }
  45% { transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); }
  60% { transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); }
  75% { transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); }
}

@keyframes jello {
  from, 11.1%, to { transform: none; }
  22.2% { transform: skewX(-12.5deg) skewY(-12.5deg); }
  33.3% { transform: skewX(6.25deg) skewY(6.25deg); }
  44.4% { transform: skewX(-3.125deg) skewY(-3.125deg); }
  55.5% { transform: skewX(1.5625deg) skewY(1.5625deg); }
  66.6% { transform: skewX(-0.78125deg) skewY(-0.78125deg); }
  77.7% { transform: skewX(0.390625deg) skewY(0.390625deg); }
  88.8% { transform: skewX(-0.1953125deg) skewY(-0.1953125deg); }
}

/* Classes d'animation */
.bounce { animation-name: bounce; transform-origin: center bottom; }
.flash { animation-name: flash; }
.pulse { animation-name: pulse; }
.rubberBand { animation-name: rubberBand; }
.shake { animation-name: shake; }
.headShake { animation-name: headShake; animation-timing-function: ease-in-out; }
.swing { animation-name: swing; transform-origin: top center; }
.tada { animation-name: tada; }
.wobble { animation-name: wobble; }
.jello { animation-name: jello; transform-origin: center; }

/* Animations d'entrée */
@keyframes bounceIn {
  from, 20%, 40%, 60%, 80%, to { animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  0% { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
  20% { transform: scale3d(1.1, 1.1, 1.1); }
  40% { transform: scale3d(0.9, 0.9, 0.9); }
  60% { opacity: 1; transform: scale3d(1.03, 1.03, 1.03); }
  80% { transform: scale3d(0.97, 0.97, 0.97); }
  to { opacity: 1; transform: scale3d(1, 1, 1); }
}

@keyframes bounceInDown {
  from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  0% { opacity: 0; transform: translate3d(0, -3000px, 0); }
  60% { opacity: 1; transform: translate3d(0, 25px, 0); }
  75% { transform: translate3d(0, -10px, 0); }
  90% { transform: translate3d(0, 5px, 0); }
  to { transform: none; }
}

@keyframes bounceInLeft {
  from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  0% { opacity: 0; transform: translate3d(-3000px, 0, 0); }
  60% { opacity: 1; transform: translate3d(25px, 0, 0); }
  75% { transform: translate3d(-10px, 0, 0); }
  90% { transform: translate3d(5px, 0, 0); }
  to { transform: none; }
}

@keyframes bounceInRight {
  from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  from { opacity: 0; transform: translate3d(3000px, 0, 0); }
  60% { opacity: 1; transform: translate3d(-25px, 0, 0); }
  75% { transform: translate3d(10px, 0, 0); }
  90% { transform: translate3d(-5px, 0, 0); }
  to { transform: none; }
}

@keyframes bounceInUp {
  from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); }
  from { opacity: 0; transform: translate3d(0, 3000px, 0); }
  60% { opacity: 1; transform: translate3d(0, -20px, 0); }
  75% { transform: translate3d(0, 10px, 0); }
  90% { transform: translate3d(0, -5px, 0); }
  to { transform: translate3d(0, 0, 0); }
}

.bounceIn { animation-name: bounceIn; }
.bounceInDown { animation-name: bounceInDown; }
.bounceInLeft { animation-name: bounceInLeft; }
.bounceInRight { animation-name: bounceInRight; }
.bounceInUp { animation-name: bounceInUp; }

/* Animations de sortie */
@keyframes bounceOut {
  20% { transform: scale3d(0.9, 0.9, 0.9); }
  50%, 55% { opacity: 1; transform: scale3d(1.1, 1.1, 1.1); }
  to { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
}

@keyframes bounceOutDown {
  20% { transform: translate3d(0, 10px, 0); }
  40%, 45% { opacity: 1; transform: translate3d(0, -20px, 0); }
  to { opacity: 0; transform: translate3d(0, 2000px, 0); }
}

@keyframes bounceOutLeft {
  20% { opacity: 1; transform: translate3d(20px, 0, 0); }
  to { opacity: 0; transform: translate3d(-2000px, 0, 0); }
}

@keyframes bounceOutRight {
  20% { opacity: 1; transform: translate3d(-20px, 0, 0); }
  to { opacity: 0; transform: translate3d(2000px, 0, 0); }
}

@keyframes bounceOutUp {
  20% { transform: translate3d(0, -10px, 0); }
  40%, 45% { opacity: 1; transform: translate3d(0, 20px, 0); }
  to { opacity: 0; transform: translate3d(0, -2000px, 0); }
}

.bounceOut { animation-name: bounceOut; }
.bounceOutDown { animation-name: bounceOutDown; }
.bounceOutLeft { animation-name: bounceOutLeft; }
.bounceOutRight { animation-name: bounceOutRight; }
.bounceOutUp { animation-name: bounceOutUp; }

/* Fades */
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes fadeInDown {
  from { opacity: 0; transform: translate3d(0, -150%, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInDownBig {
  from { opacity: 0; transform: translate3d(0, -2000px, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInLeft {
  from { opacity: 0; transform: translate3d(-10%, 0, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInLeftBig {
  from { opacity: 0; transform: translate3d(-2000px, 0, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInRight {
  from { opacity: 0; transform: translate3d(10%, 0, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInRightBig {
  from { opacity: 0; transform: translate3d(2000px, 0, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInUp {
  from { opacity: 0; transform: translate3d(0, 150%, 0); }
  to { opacity: 1; transform: none; }
}
@keyframes fadeInUpBig {
  from { opacity: 0; transform: translate3d(0, 2000px, 0); }
  to { opacity: 1; transform: none; }
}

.fadeIn { animation-name: fadeIn; }
.fadeInDown { animation-name: fadeInDown; }
.fadeInDownBig { animation-name: fadeInDownBig; }
.fadeInLeft { animation-name: fadeInLeft; }
.fadeInLeftBig { animation-name: fadeInLeftBig; }
.fadeInRight { animation-name: fadeInRight; }
.fadeInRightBig { animation-name: fadeInRightBig; }
.fadeInUp { animation-name: fadeInUp; }
.fadeInUpBig { animation-name: fadeInUpBig; }

@keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } }
@keyframes fadeOutDown {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(0, 100%, 0); }
}
@keyframes fadeOutDownBig {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(0, 2000px, 0); }
}
@keyframes fadeOutLeft {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(-100%, 0, 0); }
}
@keyframes fadeOutLeftBig {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(-2000px, 0, 0); }
}
@keyframes fadeOutRight {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(100%, 0, 0); }
}
@keyframes fadeOutRightBig {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(2000px, 0, 0); }
}
@keyframes fadeOutUp {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(0, -100%, 0); }
}
@keyframes fadeOutUpBig {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(0, -2000px, 0); }
}

.fadeOut { animation-name: fadeOut; }
.fadeOutDown { animation-name: fadeOutDown; }
.fadeOutDownBig { animation-name: fadeOutDownBig; }
.fadeOutLeft { animation-name: fadeOutLeft; }
.fadeOutLeftBig { animation-name: fadeOutLeftBig; }
.fadeOutRight { animation-name: fadeOutRight; }
.fadeOutRightBig { animation-name: fadeOutRightBig; }
.fadeOutUp { animation-name: fadeOutUp; }
.fadeOutUpBig { animation-name: fadeOutUpBig; }

/* Flips */
@keyframes flip {
  from { transform: perspective(400px) rotate3d(0, 1, 0, -360deg); animation-timing-function: ease-out; }
  40% { transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg); animation-timing-function: ease-out; }
  50% { transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg); animation-timing-function: ease-in; }
  80% { transform: perspective(400px) scale3d(0.95, 0.95, 0.95); animation-timing-function: ease-in; }
  to { transform: perspective(400px); animation-timing-function: ease-in; }
}

@keyframes flipInX {
  from { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); animation-timing-function: ease-in; opacity: 0; }
  40% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); animation-timing-function: ease-in; }
  60% { transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; }
  80% { transform: perspective(400px) rotate3d(1, 0, 0, -5deg); }
  to { transform: perspective(400px); }
}

@keyframes flipInY {
  from { transform: perspective(400px) rotate3d(0, 1, 0, 90deg); animation-timing-function: ease-in; opacity: 0; }
  40% { transform: perspective(400px) rotate3d(0, 1, 0, -20deg); animation-timing-function: ease-in; }
  60% { transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; }
  80% { transform: perspective(400px) rotate3d(0, 1, 0, -5deg); }
  to { transform: perspective(400px); }
}

@keyframes flipOutX {
  from { transform: perspective(400px); }
  30% { transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; }
  to { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; }
}

@keyframes flipOutY {
  from { transform: perspective(400px); }
  30% { transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; }
  to { transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; }
}

.animated.flip { backface-visibility: visible; animation-name: flip; }
.flipInX { backface-visibility: visible !important; animation-name: flipInX; }
.flipInY { backface-visibility: visible !important; animation-name: flipInY; }
.flipOutX { animation-name: flipOutX; backface-visibility: visible !important; }
.flipOutY { backface-visibility: visible !important; animation-name: flipOutY; }

/* LightSpeed */
@keyframes lightSpeedIn {
  from { transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; }
  60% { transform: skewX(20deg); opacity: 1; }
  80% { transform: skewX(-5deg); opacity: 1; }
  to { transform: none; opacity: 1; }
}

@keyframes lightSpeedOut {
  from { opacity: 1; }
  to { transform: translate3d(100%, 0, 0) skewX(30deg); opacity: 0; }
}

.lightSpeedIn { animation-name: lightSpeedIn; animation-timing-function: ease-out; }
.lightSpeedOut { animation-name: lightSpeedOut; animation-timing-function: ease-in; }

/* Rotations */
@keyframes rotateIn {
  from { transform-origin: center; transform: rotate3d(0, 0, 1, -200deg); opacity: 0; }
  to { transform-origin: center; transform: none; opacity: 1; }
}

@keyframes rotateOut {
  from { transform-origin: center; opacity: 1; }
  to { transform-origin: center; transform: rotate3d(0, 0, 1, 200deg); opacity: 0; }
}

@keyframes rotateInDownLeft {
  from { transform-origin: left bottom; transform: rotate3d(0, 0, 1, -45deg); opacity: 0; }
  to { transform-origin: left bottom; transform: none; opacity: 1; }
}

@keyframes rotateInDownRight {
  from { transform-origin: right bottom; transform: rotate3d(0, 0, 1, 45deg); opacity: 0; }
  to { transform-origin: right bottom; transform: none; opacity: 1; }
}

@keyframes rotateInUpLeft {
  from { transform-origin: left bottom; transform: rotate3d(0, 0, 1, 45deg); opacity: 0; }
  to { transform-origin: left bottom; transform: none; opacity: 1; }
}

@keyframes rotateInUpRight {
  from { transform-origin: right bottom; transform: rotate3d(0, 0, 1, -90deg); opacity: 0; }
  to { transform-origin: right bottom; transform: none; opacity: 1; }
}

@keyframes rotateOutDownLeft {
  from { transform-origin: left bottom; opacity: 1; }
  to { transform-origin: left bottom; transform: rotate3d(0, 0, 1, 45deg); opacity: 0; }
}

@keyframes rotateOutDownRight {
  from { transform-origin: right bottom; opacity: 1; }
  to { transform-origin: right bottom; transform: rotate3d(0, 0, 1, -45deg); opacity: 0; }
}

@keyframes rotateOutUpLeft {
  from { transform-origin: left bottom; opacity: 1; }
  to { transform-origin: left bottom; transform: rotate3d(0, 0, 1, -45deg); opacity: 0; }
}

@keyframes rotateOutUpRight {
  from { transform-origin: right bottom; opacity: 1; }
  to { transform-origin: right bottom; transform: rotate3d(0, 0, 1, 90deg); opacity: 0; }
}

.rotateIn { animation-name: rotateIn; }
.rotateOut { animation-name: rotateOut; }
.rotateInDownLeft { animation-name: rotateInDownLeft; }
.rotateInDownRight { animation-name: rotateInDownRight; }
.rotateInUpLeft { animation-name: rotateInUpLeft; }
.rotateInUpRight { animation-name: rotateInUpRight; }
.rotateOutDownLeft { animation-name: rotateOutDownLeft; }
.rotateOutDownRight { animation-name: rotateOutDownRight; }
.rotateOutUpLeft { animation-name: rotateOutUpLeft; }
.rotateOutUpRight { animation-name: rotateOutUpRight; }

@keyframes hinge {
  0% { transform-origin: top left; animation-timing-function: ease-in-out; }
  20%, 60% { transform: rotate3d(0, 0, 1, 80deg); transform-origin: top left; animation-timing-function: ease-in-out; }
  40%, 80% { transform: rotate3d(0, 0, 1, 60deg); transform-origin: top left; animation-timing-function: ease-in-out; opacity: 1; }
  to { transform: translate3d(0, 700px, 0); opacity: 0; }
}

.hinge { animation-name: hinge; }

@keyframes rollIn {
  from { opacity: 0; transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); }
  to { opacity: 1; transform: none; }
}

@keyframes rollOut {
  from { opacity: 1; }
  to { opacity: 0; transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg); }
}

.rollIn { animation-name: rollIn; }
.rollOut { animation-name: rollOut; }

/* Zoom */
@keyframes zoomIn {
  from { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
  50% { opacity: 1; }
}

@keyframes zoomInDown {
  from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
  60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
}

@keyframes zoomInLeft {
  from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
  60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
}

@keyframes zoomInRight {
  from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
  60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
}

@keyframes zoomInUp {
  from { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
  60% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
}

.zoomIn { animation-name: zoomIn; }
.zoomInDown { animation-name: zoomInDown; }
.zoomInLeft { animation-name: zoomInLeft; }
.zoomInRight { animation-name: zoomInRight; }
.zoomInUp { animation-name: zoomInUp; }

@keyframes zoomOut {
  from { opacity: 1; }
  50% { opacity: 0; transform: scale3d(0.3, 0.3, 0.3); }
  to { opacity: 0; }
}

@keyframes zoomOutDown {
  40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
  to { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0); transform-origin: center bottom; animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
}

@keyframes zoomOutLeft {
  40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0); }
  to { opacity: 0; transform: scale(0.1) translate3d(-2000px, 0, 0); transform-origin: left center; }
}

@keyframes zoomOutRight {
  40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0); }
  to { opacity: 0; transform: scale(0.1) translate3d(2000px, 0, 0); transform-origin: right center; }
}

@keyframes zoomOutUp {
  40% { opacity: 1; transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0); animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); }
  to { opacity: 0; transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0); transform-origin: center bottom; animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1); }
}

.zoomOut { animation-name: zoomOut; }
.zoomOutDown { animation-name: zoomOutDown; }
.zoomOutLeft { animation-name: zoomOutLeft; }
.zoomOutRight { animation-name: zoomOutRight; }
.zoomOutUp { animation-name: zoomOutUp; }

/* Slides */
@keyframes slideInDown {
  from { transform: translate3d(0, -100%, 0); visibility: visible; }
  to { transform: translate3d(0, 0, 0); }
}

@keyframes slideInLeft {
  from { transform: translate3d(-100%, 0, 0); visibility: visible; }
  to { transform: translate3d(0, 0, 0); }
}

@keyframes slideInRight {
  from { transform: translate3d(100%, 0, 0); visibility: visible; }
  to { transform: translate3d(0, 0, 0); }
}

@keyframes slideInUp {
  from { transform: translate3d(0, 100%, 0); visibility: visible; }
  to { transform: translate3d(0, 0, 0); }
}

@keyframes slideOutDown {
  from { transform: translate3d(0, 0, 0); }
  to { visibility: hidden; transform: translate3d(0, 100%, 0); }
}

@keyframes slideOutLeft {
  from { transform: translate3d(0, 0, 0); }
  to { visibility: hidden; transform: translate3d(-100%, 0, 0); }
}

@keyframes slideOutRight {
  from { transform: translate3d(0, 0, 0); }
  to { visibility: hidden; transform: translate3d(100%, 0, 0); }
}

@keyframes slideOutUp {
  from { transform: translate3d(0, 0, 0); }
  to { visibility: hidden; transform: translate3d(0, -100%, 0); }
}

.slideInDown { animation-name: slideInDown; }
.slideInLeft { animation-name: slideInLeft; }
.slideInRight { animation-name: slideInRight; }
.slideInUp { animation-name: slideInUp; }
.slideOutDown { animation-name: slideOutDown; }
.slideOutLeft { animation-name: slideOutLeft; }
.slideOutRight { animation-name: slideOutRight; }
.slideOutUp { animation-name: slideOutUp; }

/* Animations personnalisées */
@keyframes blurFadeIn {
  0% { opacity: 0; transform: scale(1.3); }
  50% { opacity: 0.5; }
  100% { opacity: 1; transform: scale(1); }
}

@keyframes blurFadeInDown {
  0% { opacity: 0; transform: translateY(-10px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes passing {
  0% { transform: translateX(-50%); opacity: 0; }
  50% { transform: translateX(0%); opacity: 1; }
  100% { transform: translateX(50%); opacity: 0; }
}

@keyframes passing-reverse {
  0% { transform: translateX(50%); opacity: 0; }
  50% { transform: translateX(0%); opacity: 1; }
  100% { transform: translateX(-50%); opacity: 0; }
}

@keyframes jackInTheBox {
  from { opacity: 0; transform: scale(0.1) rotate(30deg); transform-origin: center bottom; }
  50% { transform: rotate(-10deg); }
  70% { transform: rotate(3deg); }
  to { opacity: 1; transform: scale(1); }
}

.blurFadeIn { animation-name: blurFadeIn; }
.blurFadeInDown { animation-name: blurFadeInDown; }
.jackInTheBox { animation-name: jackInTheBox; }

/* Layout et composants */
.contact-display-1-row .title-contact { display: inline; }

@media (min-width: 1024px) and (max-width: 1600px) {
  .banner-left { max-width: 52%; }
  .banner-right { max-width: 46%; }
}

.med-bestsale .product-miniature,
.toy-bestsale .product-miniature {
  border: none;
  padding: 0;
  margin: 0 20px !important;
  border-radius: 0;
}

.med-bestsale .product-miniature:hover,
.toy-bestsale .product-miniature:hover { border-color: #ebebeb; }

.med-bestsale .pos-product-widget .slick-arrow,
.toy-bestsale .pos-product-widget .slick-arrow { top: -2.957rem !important; }

.med-bestsale .pos-product-widget .slick-next,
.toy-bestsale .pos-product-widget .slick-next { right: 1rem !important; }

.med-bestsale .pos-product-widget .slick-prev,
.toy-bestsale .pos-product-widget .slick-prev { right: 3.5rem !important; }

.toy-bestsale .pos-product-widget .slick-slide > *:not(:last-child) { margin-bottom: 0; }

.list-bigger-image .style_product_list .img_block { max-width: 170px; }

.has-section-inner .elementor-widget-wrap { display: block !important; }
.elementor-widget-wrap > section { width: 100% !important; }
.elementor-editor-active .elementor.elementor-edit-mode .elementor-top-column .elementor-widget-wrap .elementor-inner-section { margin-top: 0; }

/* Variantes de quantité */
.quantity-variants-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30px;
  margin-top: 15px;
}

.quantity-variant-item {
  position: relative;
  margin: 0 !important;
  width: 100%;
}

.quantity-variant-item label {
  display: block;
  width: 300px;
  padding: 0;
  border: 2px solid #e0e0e0;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.3s ease;
  background: #fff;
  overflow: visible;
  min-height: 130px;
}

.quantity-variant-item:hover label {
  border-color: var(--blue);
  box-shadow: 0 2px 8px rgba(30, 58, 138, 0.2);
}

.quantity-variant-item.selected label {
  border-color: var(--red);
  background: #fef2f2;
  box-shadow: 0 2px 12px rgba(220, 38, 38, 0.3);
}

.quantity-variant-item input[type="radio"] {
  position: absolute;
  opacity: 0;
}

.quantity-variant-content {
  display: flex;
  flex-direction: column;
  padding: 18px 15px;
  gap: 10px;
  min-height: 130px;
}

.quantity-variant-discount-banner {
  position: absolute;
  top: -19px;
  right: 6px;
  background: var(--red);
  padding: 8px 16px;
  border-radius: 6px;
  z-index: 2;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.quantity-variant-discount-banner .discount-badge,
.quantity-variant-item.selected .quantity-variant-discount-banner {
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  white-space: nowrap;
  letter-spacing: 0.5px;
  background: var(--red-dark);
}

.quantity-variant-content .radio-label {
  font-weight: 700;
  font-size: 18px;
  color: #333;
  text-align: left;
}

.quantity-variant-price {
  display: flex;
  gap: 5px;
  align-items: center;
}

.quantity-variant-price .total-price {
  font-size: 22px;
  font-weight: 700;
  color: #333;
}

.quantity-variant-price .total-price .price-tax-label {
  font-size: 14px;
  font-weight: 500;
  color: #666;
  margin-left: 4px;
}

.quantity-variant-price .price-without-discount {
  font-size: 18px;
  color: #999;
  text-decoration: line-through;
}

.quantity-variant-unit-price {
  font-size: 14px;
  color: #666;
  font-weight: 500;
}

/* Boutons quantité */
.product-quantity .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin {
  color: #fff !important;
  transition: all 0.3s ease;
}

.product-quantity .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin.bootstrap-touchspin-down {
  background: var(--red) !important;
  border-color: var(--red) !important;
}

.product-quantity .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin.bootstrap-touchspin-down:hover {
  background: var(--red-dark) !important;
  border-color: var(--red-dark) !important;
}

.product-quantity .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin.bootstrap-touchspin-up {
  background: var(--blue) !important;
  border-color: var(--blue) !important;
}

.product-quantity .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin.bootstrap-touchspin-up:hover {
  background: var(--blue-light) !important;
  border-color: var(--blue-light) !important;
}

.product-quantity .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin i { color: #fff !important; }

/* Product description */
.product-description {
  color: var(--text-dark);
  line-height: 1.7;
}

.product-description h2 {
  color: var(--blue) !important;
  font-weight: 700;
  font-size: 1.75rem;
  margin: 2rem 0 1rem;
  padding-bottom: 0.5rem;
  border-bottom: 2px solid var(--red);
}

.product-description h3 {
  color: var(--blue) !important;
  font-weight: 600;
  font-size: 1.5rem;
  margin: 1.5rem 0 0.75rem;
}

.product-description h4 {
  color: var(--red) !important;
  font-weight: 600;
  font-size: 18px;
  margin: 1.25rem 0 0.5rem;
}

.product-description p,
.product-description ul,
.product-description ol {
  color: var(--text-dark) !important;
}

.product-description ul li,
.product-description ol li {
  line-height: 1.8;
}

.product-description strong { color: var(--blue) !important; font-weight: 700; }
.product-description ul strong,
.product-description ol strong { color: var(--red) !important; }

.product-description a {
  color: var(--blue) !important;
  text-decoration: none;
  font-weight: 600;
  transition: all 0.3s ease;
  border-bottom: 2px solid transparent;
}

.product-description a:hover {
  color: var(--red) !important;
  border-bottom-color: var(--red);
}

/* Tableaux */
.product-description table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  overflow: hidden;
}

.product-description table thead {
  background: linear-gradient(to bottom, var(--blue), var(--blue-light));
}

.product-description table thead th {
  color: #fff !important;
  font-weight: 700;
  padding: 12px 15px;
  text-align: left;
}

.product-description table tbody tr {
  border-bottom: 1px solid #e5e7eb;
  transition: background-color 0.2s ease;
}

.product-description table tbody tr:hover,
.product-description table tbody tr:nth-child(even):hover {
  background-color: #fef2f2;
}

.product-description table tbody tr:nth-child(even) { background-color: #f9fafb; }

.product-description table tbody td {
  padding: 12px 15px;
  color: var(--text-dark) !important;
}

.product-description table tbody td:first-child {
  font-weight: 600;
  color: var(--blue) !important;
  width: 40%;
}

.product-description table tbody td strong { color: var(--red) !important; }

/* FAQ */
.product-description > div > div h4 {
  color: var(--blue) !important;
  font-weight: 600;
  font-size: 1.1rem;
  margin: 1.5rem 0 0.5rem;
  cursor: pointer;
  padding: 10px 15px;
  background-color: #f9fafb;
  border-left: 4px solid var(--red);
  border-radius: 4px;
  transition: all 0.3s ease;
}

.product-description > div > div h4:hover {
  background-color: #fef2f2;
  border-left-color: var(--red-dark);
}

.product-description > div > div > div {
  padding: 10px 15px 10px 19px;
  margin-bottom: 1rem;
  color: #666;
  line-height: 1.6;
}

.product-description > div > div > div p { margin: 0; }

/* Message centré */
.product-description p[style*="text-align:center"] {
  background: linear-gradient(to bottom, var(--blue), var(--blue-light));
  color: #fff !important;
  padding: 15px 20px;
  border-radius: 8px;
  margin-top: 2rem;
  font-weight: 600;
  text-align: center !important;
}

.product-description p[style*="text-align:center"] * { color: #fff !important; }

/* Onglets */
.tabs .nav-tabs {
  display: flex;
  justify-content: flex-start !important;
  text-align: left !important;
}

.tabs .nav-tabs .nav-item { float: left !important; margin-right: 5px !important; }

/* Onglet Description */
.tabs .nav-tabs .nav-link[href="#description"] {
  background: var(--red) !important;
  color: #fff !important;
  border: none !important;
  padding: 10px 20px !important;
  border-radius: 4px 4px 0 0 !important;
}

.tabs .nav-tabs .nav-link[href="#description"].active,
.tabs .nav-tabs .nav-link[href="#description"]:hover {
  background: var(--red-dark) !important;
  color: #fff !important;
}

.tabs .nav-tabs .nav-link[href="#description"]:after { display: none !important; }

/* Onglet Détails */
.tabs .nav-tabs .nav-link[href="#product-details"] {
  background: var(--blue) !important;
  color: #fff !important;
  border: none !important;
  padding: 10px 20px !important;
  border-radius: 4px 4px 0 0 !important;
}

.tabs .nav-tabs .nav-link[href="#product-details"].active,
.tabs .nav-tabs .nav-link[href="#product-details"]:hover {
  background: var(--blue-light) !important;
  color: #fff !important;
}

.tabs .nav-tabs .nav-link[href="#product-details"]:after { display: none !important; }

/* Expand/collapse description mobile */
.product-description-short-wrapper .product-description-toggle { display: none; }

/* Carousel mobile */
.images-container,
.images-quickviews { margin-bottom: 0; }

.product_name_h1,
.h1.namne_details {
  color: #1e3a99;
  font-size: 20px;
  text-transform: none;
}

/* Message non-pro */
.quantity-variants-message {
  padding: 20px;
  margin-top: 15px;
  background: #f9fafb;
  border: 2px solid var(--blue);
  border-radius: 8px;
  text-align: center;
}

.quantity-variants-message-text {
  font-size: 16px;
  font-weight: 600;
  color: var(--blue);
  margin-bottom: 15px;
  line-height: 1.5;
}

.quantity-variants-message-link .btn {
  background: linear-gradient(135deg, var(--blue) 0%, var(--red) 100%);
  color: #fff;
  border: none;
  padding: 12px;
  font-weight: 600;
  border-radius: 6px;
  text-decoration: none;
  display: inline-block;
  transition: all 0.3s ease;
}

.quantity-variants-message-link .btn:hover {
  background: linear-gradient(135deg, var(--red) 0%, var(--blue) 100%);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(30, 58, 138, 0.3);
  color: #fff;
  text-decoration: none;
}

/* Bouton panier */
.product-actions .add-to-cart {
  position: relative;
  height: 3rem;
  font-weight: 700;
  box-shadow: none;
  border-radius: 3px;
  width: 60%;
}

/* Media queries */
@media (max-width: 768px) {
  /* Variantes quantité */
  .quantity-variants-list {
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
  }
  
  .quantity-variant-item label {
    width: 100%;
    min-height: 110px;
  }
  
  .quantity-variant-content {
    padding: 12px 10px;
    gap: 6px;
    min-height: 110px;
  }
  
  .quantity-variant-content .radio-label { font-size: 14px; }
  .quantity-variant-price .total-price { font-size: 16px; }
  .quantity-variant-price .total-price .price-tax-label { font-size: 11px; }
  .quantity-variant-price .price-without-discount { font-size: 13px; }
  .quantity-variant-unit-price { font-size: 11px; }
  .quantity-variant-discount-banner { padding: 5px 10px; top: -15px; right: 4px; }
  .quantity-variant-discount-banner .discount-badge { font-size: 10px; }

  /* Description */
  .product-description h2 { font-size: 1.20rem; margin-top: 1rem; }
  .product-description h3 { font-size: 21px; }
  .product-description h4 { font-size: 18px; }
  .tabs .tab-pane { padding-top: 0; }

  /* Expand/collapse */
  .product-description-short-wrapper .product-description {
    max-height: 80px;
    overflow: hidden;
    transition: max-height 0.3s ease-out;
    position: relative;
  }
  
  .product-description-short-wrapper .product-description.product-description-expanded {
    max-height: 2000px;
  }
  
  .product-description-short-wrapper .product-description.product-description-collapsed::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 30px;
    background: linear-gradient(to bottom, transparent, rgba(255, 255, 255, 0.95));
  }
  
  .product-description-short-wrapper .product-description-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    margin-top: 12px;
    padding: 10px 15px;
    background: transparent;
    border: 2px solid var(--blue);
    border-radius: 25px;
    color: var(--blue);
    font-weight: 600;
    font-size: 14px;
    cursor: pointer;
    transition: all 0.3s ease;
  }
  
  .product-description-short-wrapper .product-description-toggle:hover {
    background: var(--blue);
    color: #fff;
  }
  
  .product-description-short-wrapper .product-description-toggle .toggle-icon {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--blue) 0%, var(--red) 100%);
    color: #fff;
    transition: transform 0.3s ease;
  }
  
  .product-description-short-wrapper .product-description-toggle[aria-expanded="true"] .toggle-icon {
    transform: rotate(45deg);
  }
  
  .product-description-short-wrapper .product-description-toggle[aria-expanded="true"]::before {
    content: 'Voir moins';
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
  }

  /* Onglets */
  .tabs .nav-tabs {
    display: flex !important;
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
  
  .tabs .nav-tabs .nav-item {
    width: auto !important;
    flex-shrink: 0 !important;
    float: none !important;
    display: inline-block !important;
  }
  
  .tabs .nav-tabs .nav-link {
    white-space: nowrap !important;
    padding: 8px 15px !important;
    font-size: 0.9rem !important;
    margin: 0 !important;
  }

  /* Carousel */
  .images-container .product-images.slick-block { display: none !important; }
  
  .images-container .product-cover.slick-block .slick-dots {
    display: flex !important;
    justify-content: center;
    list-style: none;
    padding: 0;
    margin: 15px 0 0;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
  }
  
  .images-container .product-cover.slick-block .slick-dots li {
    margin: 0 5px;
    width: 10px;
    height: 10px;
  }
  
  .images-container .product-cover.slick-block .slick-dots li button {
    width: 10px;
    height: 10px;
    border: none;
    border-radius: 50%;
    background: #d1d5db;
    text-indent: -9999px;
    cursor: pointer;
    transition: all 0.3s ease;
  }
  
  .images-container .product-cover.slick-block .slick-dots li.slick-active button {
    background: var(--blue);
    width: 12px;
    height: 12px;
  }
  
  .images-container .product-cover.slick-block .slick-dots li button:hover { background: var(--red); }
  
  .images-container .product-cover.slick-block .slick-arrow {
    display: block !important;
    z-index: 10;
    width: 40px;
    height: 40px;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
  }
  
  .images-container .product-cover.slick-block .slick-arrow:hover { background: var(--blue); }
  .images-container .product-cover.slick-block .slick-arrow:before { color: var(--blue); font-size: 18px; }
  .images-container .product-cover.slick-block .slick-arrow:hover:before { color: #fff; }
  .images-container .product-cover.slick-block .slick-prev { left: 10px; }
  .images-container .product-cover.slick-block .slick-next { right: 10px; }

  /* Panier */
  .product-actions .add-to-cart { width: 100%; }
  .tabs {
    margin: 0.75rem 0 0;
    box-shadow: none;
    display: inline-block;
    width: 100%;
    padding: 0;
    background: #fff;
    text-align: center;
  }

  /* Page titre */
  #product .page-title-wrapper {
    padding: 5px 0;
    background: transparent;
    margin: 0;
    text-align: left;
  }
}

@media (max-width: 639px) {
  .tabs .nav-tabs .nav-item {
    width: auto !important;
    margin-bottom: 0 !important;
  }
  
  .tabs .nav-tabs .nav-item .nav-link {
    display: inline-block !important;
    margin: 0 !important;
  }
}

/* Breadcrumb */
#wrapper .page-title-wrapper.p_tilte_small .breadcrumb li a {
  color: var(--blue) !important;
  text-decoration: none;
  font-weight: 500;
  transition: all 0.3s ease;
}

#wrapper .page-title-wrapper.p_tilte_small .breadcrumb li:not(:last-child) a:hover {
  color: var(--red) !important;
  text-decoration: underline;
}

#wrapper .page-title-wrapper.p_tilte_small .breadcrumb li:last-child,
#wrapper .page-title-wrapper.p_tilte_small .breadcrumb li:last-child a {
  color: var(--red) !important;
}