.elementor-300 .elementor-element.elementor-element-rb-about-section:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-rb-about-section > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}.elementor-300 .elementor-element.elementor-element-rb-about-section{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:50px 0px 50px 0px;}.elementor-300 .elementor-element.elementor-element-rb-about-section > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-300 .elementor-element.elementor-element-rb-about-inner > .elementor-element-populated{padding:80px 50px 80px 80px;}.elementor-widget-heading .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-300 .elementor-element.elementor-element-rb-about-label{text-align:start;}.elementor-300 .elementor-element.elementor-element-rb-about-label .elementor-heading-title{color:#C8924A;}.elementor-300 .elementor-element.elementor-element-rb-about-title{margin:16px 0px calc(var(--kit-widget-spacing, 0px) + 40px) 0px;text-align:start;}.elementor-300 .elementor-element.elementor-element-rb-about-title .elementor-heading-title{color:#111111;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-300 .elementor-element.elementor-element-rb-about-p1{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 24px) 0px;color:#666666;}.elementor-300 .elementor-element.elementor-element-rb-about-p2{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 24px) 0px;color:#666666;}.elementor-300 .elementor-element.elementor-element-3374c19{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 24px) 0px;color:#666666;}.elementor-300 .elementor-element.elementor-element-a625bc3{color:#666666;}.elementor-300 .elementor-element.elementor-element-rb-about-img-col > .elementor-element-populated{padding:0px 0px 0px 50px;}.elementor-widget-image .widget-image-caption{color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );}.elementor-300 .elementor-element.elementor-element-rb-about-img img{width:100%;}.elementor-300 .elementor-element.elementor-element-62deba8{--spacer-size:50px;}.elementor-300 .elementor-element.elementor-element-90b0863:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-90b0863 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}.elementor-300 .elementor-element.elementor-element-90b0863{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:50px 0px 50px 0px;}.elementor-300 .elementor-element.elementor-element-90b0863 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-300 .elementor-element.elementor-element-747af08 > .elementor-element-populated{padding:80px 20px 80px 20px;}.elementor-300 .elementor-element.elementor-element-dada702{text-align:start;}.elementor-300 .elementor-element.elementor-element-dada702 .elementor-heading-title{color:#C8924A;}.elementor-300 .elementor-element.elementor-element-eaebdad{margin:16px 0px calc(var(--kit-widget-spacing, 0px) + 40px) 0px;text-align:start;}.elementor-300 .elementor-element.elementor-element-eaebdad .elementor-heading-title{color:#111111;}.elementor-300 .elementor-element.elementor-element-48d6c07{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 24px) 0px;color:#666666;}.elementor-300 .elementor-element.elementor-element-c0cfc03{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 24px) 0px;color:#666666;}.elementor-300 .elementor-element.elementor-element-7af7f3f{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 24px) 0px;color:#666666;}.elementor-300 .elementor-element.elementor-element-a5faad8{color:#666666;}.elementor-300 .elementor-element.elementor-element-8d3c9e6 > .elementor-element-populated{padding:0px 20px 0px 20px;}.elementor-300 .elementor-element.elementor-element-3b339b1 img{width:100%;}.elementor-300 .elementor-element.elementor-element-edeaf88{--spacer-size:50px;}.elementor-300 .elementor-element.elementor-element-53ab9cc3:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-53ab9cc3 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}.elementor-300 .elementor-element.elementor-element-53ab9cc3{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:80px 80px 48px 80px;}.elementor-300 .elementor-element.elementor-element-53ab9cc3 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-300 .elementor-element.elementor-element-70a43fcf.elementor-column > .elementor-widget-wrap{justify-content:right;}.elementor-300 .elementor-element.elementor-element-70a43fcf > .elementor-element-populated{padding:0px 48px 0px 0px;}.elementor-300 .elementor-element.elementor-element-b08e20e{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 12px) 0px;text-align:start;}.elementor-300 .elementor-element.elementor-element-b08e20e .elementor-heading-title{font-family:"Roboto", Sans-serif;font-size:30px;font-weight:600;color:#171717;}.elementor-300 .elementor-element.elementor-element-110abd50{text-align:start;color:#737373;}.elementor-300 .elementor-element.elementor-element-251ea886 > .elementor-element-populated{padding:0px 0px 0px 48px;}.elementor-300 .elementor-element.elementor-element-18b0b82:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-18b0b82 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}.elementor-300 .elementor-element.elementor-element-18b0b82{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:80px 0px 48px 0px;}.elementor-300 .elementor-element.elementor-element-18b0b82 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-300 .elementor-element.elementor-element-8fff196.elementor-column > .elementor-widget-wrap{justify-content:right;}.elementor-300 .elementor-element.elementor-element-8fff196 > .elementor-element-populated{padding:0px 20px 0px 20px;}.elementor-300 .elementor-element.elementor-element-c6bc51a{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 12px) 0px;text-align:center;}.elementor-300 .elementor-element.elementor-element-c6bc51a .elementor-heading-title{font-family:"Roboto", Sans-serif;font-size:30px;font-weight:600;color:#171717;}.elementor-300 .elementor-element.elementor-element-acb54ed{text-align:start;color:#737373;}.elementor-300 .elementor-element.elementor-element-504560d > .elementor-element-populated{padding:0px 20px 0px 20px;}.elementor-300 .elementor-element.elementor-element-8f7df04:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-8f7df04 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}.elementor-300 .elementor-element.elementor-element-8f7df04{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:48px 80px 48px 80px;}.elementor-300 .elementor-element.elementor-element-8f7df04 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-300 .elementor-element.elementor-element-279f947a > .elementor-element-populated{padding:0px 48px 0px 0px;}.elementor-300 .elementor-element.elementor-element-63c4ebe2 > .elementor-element-populated{padding:0px 0px 0px 48px;}.elementor-300 .elementor-element.elementor-element-70001a9{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 12px) 0px;text-align:start;}.elementor-300 .elementor-element.elementor-element-70001a9 .elementor-heading-title{font-family:"Roboto", Sans-serif;font-size:30px;font-weight:600;color:#171717;}.elementor-300 .elementor-element.elementor-element-16a5f373{color:#737373;}.elementor-300 .elementor-element.elementor-element-f7ac047:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-f7ac047 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}.elementor-300 .elementor-element.elementor-element-f7ac047{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:48px 0px 48px 0px;}.elementor-300 .elementor-element.elementor-element-f7ac047 > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-300 .elementor-element.elementor-element-053cd49 > .elementor-element-populated{padding:0px 20px 0px 20px;}.elementor-300 .elementor-element.elementor-element-78c77a6{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 12px) 0px;text-align:center;}.elementor-300 .elementor-element.elementor-element-78c77a6 .elementor-heading-title{font-family:"Roboto", Sans-serif;font-size:30px;font-weight:600;color:#171717;}.elementor-300 .elementor-element.elementor-element-cd7948a{color:#737373;}.elementor-300 .elementor-element.elementor-element-4fa4285 > .elementor-element-populated{padding:0px 20px 0px 20px;}.elementor-300 .elementor-element.elementor-element-0cee6f8{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--padding-top:100px;--padding-bottom:150px;--padding-left:0px;--padding-right:0px;}.elementor-300 .elementor-element.elementor-element-0cee6f8:not(.elementor-motion-effects-element-type-background), .elementor-300 .elementor-element.elementor-element-0cee6f8 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}body.elementor-page-300:not(.elementor-motion-effects-element-type-background), body.elementor-page-300 > .elementor-motion-effects-container > .elementor-motion-effects-layer{background-color:#F5F3EF;}:root{--page-title-display:none;}/* Start custom CSS for image, class: .elementor-element-rb-about-img */.elementor-300 .elementor-element.elementor-element-rb-about-img {
  position: relative;
  overflow: hidden;
  border-radius: 28px;
  box-shadow: 0 28px 80px rgba(0,0,0,0.18);
  background: #111;
}

.elementor-300 .elementor-element.elementor-element-rb-about-img img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 28px;
  transform: scale(1.02);
  filter: saturate(.94) contrast(1.03);
  transition: transform .9s cubic-bezier(.22,1,.36,1), filter .5s ease;
}

.elementor-300 .elementor-element.elementor-element-rb-about-img::before {
  content: "";
  position: absolute;
  inset: 16px;
  z-index: 2;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 20px;
  pointer-events: none;
}

.elementor-300 .elementor-element.elementor-element-rb-about-img::after {
  content: "";
  position: absolute;
  right: 28px;
  bottom: 28px;
  z-index: 3;
  width: 68px;
  height: 1px;
  background: #C8924A;
  pointer-events: none;
  transition: width .35s ease;
}

.elementor-300 .elementor-element.elementor-element-rb-about-img:hover img {
  transform: scale(1.06);
  filter: saturate(1) contrast(1.06);
}

.elementor-300 .elementor-element.elementor-element-rb-about-img:hover::after {
  width: 108px;
}/* End custom CSS */
/* Start custom CSS for section, class: .elementor-element-rb-about-section */.elementor-element-rb-about-section { background-color: #F5F3EF; }/* End custom CSS */
/* Start custom CSS for image, class: .elementor-element-3b339b1 */.elementor-300 .elementor-element.elementor-element-3b339b1 {
  position: relative;
  overflow: hidden;
  border-radius: 28px;
  box-shadow: 0 28px 80px rgba(0,0,0,0.18);
  background: #111;
}

.elementor-300 .elementor-element.elementor-element-3b339b1 img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 28px;
  transform: scale(1.02);
  filter: saturate(.94) contrast(1.03);
  transition: transform .9s cubic-bezier(.22,1,.36,1), filter .5s ease;
}

.elementor-300 .elementor-element.elementor-element-3b339b1::before {
  content: "";
  position: absolute;
  inset: 16px;
  z-index: 2;
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 20px;
  pointer-events: none;
}

.elementor-300 .elementor-element.elementor-element-3b339b1::after {
  content: "";
  position: absolute;
  right: 28px;
  bottom: 28px;
  z-index: 3;
  width: 68px;
  height: 1px;
  background: #C8924A;
  pointer-events: none;
  transition: width .35s ease;
}

.elementor-300 .elementor-element.elementor-element-3b339b1:hover img {
  transform: scale(1.06);
  filter: saturate(1) contrast(1.06);
}

.elementor-300 .elementor-element.elementor-element-3b339b1:hover::after {
  width: 108px;
}/* End custom CSS */
/* Start custom CSS for section, class: .elementor-element-90b0863 */.elementor-element-rb-about-section { background-color: #F5F3EF; }/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-1c3c58b *//* ==================================================
   RENOBATIS - ANIMATION MESURE & PLAN
================================================== */

.rb-measure-anim {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1; /* Garde un carré parfait */
  max-width: 400px;
  margin: 0 auto;
  background: #F5F3EF;
  border-radius: 28px;
  overflow: hidden;
  box-shadow: 0 15px 40px rgba(0,0,0,0.04);
}

/* Quadrillage plus resserré pour faire "papier millimétré" */
.rb-measure-grid {
  position: absolute;
  inset: 0;
  opacity: 0.12;
  background-image:
    linear-gradient(rgba(17,17,17,.15) 1px, transparent 1px),
    linear-gradient(90deg, rgba(17,17,17,.15) 1px, transparent 1px);
  background-size: 20px 20px;
}

.rb-measure-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* Animation du dessin du plan */
.rb-wall-draw {
  stroke: #111;
  stroke-width: 3;
  stroke-linejoin: bevel;
  stroke-linecap: square;
  /* Longueur du tracé pour l'effet de dessin */
  stroke-dasharray: 800;
  stroke-dashoffset: 800;
  animation: rbDrawPlan 4s cubic-bezier(0.25, 1, 0.5, 1) forwards infinite;
}

@keyframes rbDrawPlan {
  0% { stroke-dashoffset: 800; fill: rgba(200,146,74,0); }
  50% { stroke-dashoffset: 0; fill: rgba(200,146,74,0); }
  70% { fill: rgba(200,146,74,0.08); } /* Le plan se colore légèrement à la fin */
  100% { stroke-dashoffset: 0; fill: rgba(200,146,74,0.08); }
}

/* Lignes de cote et traits de coupe (Les petites barres obliques) */
.rb-dimension-group {
  stroke: #C8924A;
  stroke-width: 1.5;
  opacity: 0;
  animation: rbFadeInDimensions 4s ease forwards infinite;
}

.rb-dim-tick {
  stroke-width: 2;
  stroke-linecap: round;
}

@keyframes rbFadeInDimensions {
  0%, 40% { opacity: 0; transform: scale(0.95); transform-origin: center; }
  60%, 100% { opacity: 1; transform: scale(1); }
}

/* Étiquettes de textes (Les mesures) */
.rb-measure-tag {
  position: absolute;
  background: #fff;
  color: #111;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 1px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid rgba(200,146,74,0.3);
  opacity: 0;
  animation: rbFadeInDimensions 4s ease forwards infinite;
}

.rb-tag-x {
  top: 6%;
  left: 50%;
  transform: translateX(-50%);
}

.rb-tag-y {
  top: 50%;
  right: 2%;
  transform: translateY(-50%);
}

/* Le point d'intersection qui palpite */
.rb-pulse-node {
  position: absolute;
  top: 20%;
  left: 20%;
  width: 8px;
  height: 8px;
  background: #C8924A;
  border-radius: 50%;
  opacity: 0;
  animation: rbNodePulse 4s ease infinite;
}

.rb-pulse-node::after {
  content: "";
  position: absolute;
  inset: -6px;
  border: 1px solid #C8924A;
  border-radius: 50%;
  animation: rbPing 2s cubic-bezier(0, 0, 0.2, 1) infinite;
}

@keyframes rbNodePulse {
  0%, 30% { opacity: 0; }
  40%, 100% { opacity: 1; }
}

@keyframes rbPing {
  75%, 100% { transform: scale(2.5); opacity: 0; }
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-3f63174 *//* ==================================================
   RENOBATIS - ANIMATION MESURE & PLAN
================================================== */

.rb-measure-anim {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1; /* Garde un carré parfait */
  max-width: 400px;
  margin: 0 auto;
  background: #F5F3EF;
  border-radius: 28px;
  overflow: hidden;
  box-shadow: 0 15px 40px rgba(0,0,0,0.04);
}

/* Quadrillage plus resserré pour faire "papier millimétré" */
.rb-measure-grid {
  position: absolute;
  inset: 0;
  opacity: 0.12;
  background-image:
    linear-gradient(rgba(17,17,17,.15) 1px, transparent 1px),
    linear-gradient(90deg, rgba(17,17,17,.15) 1px, transparent 1px);
  background-size: 20px 20px;
}

.rb-measure-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* Animation du dessin du plan */
.rb-wall-draw {
  stroke: #111;
  stroke-width: 3;
  stroke-linejoin: bevel;
  stroke-linecap: square;
  /* Longueur du tracé pour l'effet de dessin */
  stroke-dasharray: 800;
  stroke-dashoffset: 800;
  animation: rbDrawPlan 4s cubic-bezier(0.25, 1, 0.5, 1) forwards infinite;
}

@keyframes rbDrawPlan {
  0% { stroke-dashoffset: 800; fill: rgba(200,146,74,0); }
  50% { stroke-dashoffset: 0; fill: rgba(200,146,74,0); }
  70% { fill: rgba(200,146,74,0.08); } /* Le plan se colore légèrement à la fin */
  100% { stroke-dashoffset: 0; fill: rgba(200,146,74,0.08); }
}

/* Lignes de cote et traits de coupe (Les petites barres obliques) */
.rb-dimension-group {
  stroke: #C8924A;
  stroke-width: 1.5;
  opacity: 0;
  animation: rbFadeInDimensions 4s ease forwards infinite;
}

.rb-dim-tick {
  stroke-width: 2;
  stroke-linecap: round;
}

@keyframes rbFadeInDimensions {
  0%, 40% { opacity: 0; transform: scale(0.95); transform-origin: center; }
  60%, 100% { opacity: 1; transform: scale(1); }
}

/* Étiquettes de textes (Les mesures) */
.rb-measure-tag {
  position: absolute;
  background: #fff;
  color: #111;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 1px;
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid rgba(200,146,74,0.3);
  opacity: 0;
  animation: rbFadeInDimensions 4s ease forwards infinite;
}

.rb-tag-x {
  top: 6%;
  left: 50%;
  transform: translateX(-50%);
}

.rb-tag-y {
  top: 50%;
  right: 2%;
  transform: translateY(-50%);
}

/* Le point d'intersection qui palpite */
.rb-pulse-node {
  position: absolute;
  top: 20%;
  left: 20%;
  width: 8px;
  height: 8px;
  background: #C8924A;
  border-radius: 50%;
  opacity: 0;
  animation: rbNodePulse 4s ease infinite;
}

.rb-pulse-node::after {
  content: "";
  position: absolute;
  inset: -6px;
  border: 1px solid #C8924A;
  border-radius: 50%;
  animation: rbPing 2s cubic-bezier(0, 0, 0.2, 1) infinite;
}

@keyframes rbNodePulse {
  0%, 30% { opacity: 0; }
  40%, 100% { opacity: 1; }
}

@keyframes rbPing {
  75%, 100% { transform: scale(2.5); opacity: 0; }
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-5825af2 *//* ==================================================
   RENOBATIS - ANIMATION CORPS DE MÉTIER
================================================== */

.rb-trades-anim {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-width: 400px;
  margin: 0 auto;
  background: #F5F3EF;
  border-radius: 28px;
  overflow: hidden;
  box-shadow: 0 15px 40px rgba(0,0,0,0.04);
}

/* Le fond quadrillé technique */
.rb-trades-grid {
  position: absolute;
  inset: 0;
  opacity: 0.15;
  background-image:
    linear-gradient(rgba(17,17,17,.1) 1px, transparent 1px),
    linear-gradient(90deg, rgba(17,17,17,.1) 1px, transparent 1px);
  background-size: 20px 20px;
}

/* Les textes indicateurs */
.rb-trades-steps {
  position: absolute;
  top: 24px;
  left: 28px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  z-index: 10;
}

.rb-step {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: #888;
  opacity: 0.4;
  transition: all 0.4s ease;
}

/* Le conteneur SVG */
.rb-trades-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* --- ANIMATIONS TIMELINE (Boucle de 10s) --- */

/* 1. Le Plan d'exécution (Dessin des pointillés) */
.rb-svg-plan rect {
  stroke-dasharray: 600;
  stroke-dashoffset: 600;
  animation: rbAnimPlan 10s ease-in-out infinite;
}

@keyframes rbAnimPlan {
  0%, 5% { stroke-dashoffset: 600; opacity: 1; }
  25%, 85% { stroke-dashoffset: 0; opacity: 1; }
  90%, 100% { opacity: 0; stroke-dashoffset: 0; }
}

/* 2. Les Réseaux Techniques (Traits or) */
.rb-svg-network path {
  stroke-dasharray: 300;
  stroke-dashoffset: 300;
  animation: rbAnimNetworkPath 10s ease-in-out infinite;
}

.rb-svg-network circle {
  opacity: 0;
  transform: scale(0);
  transform-origin: center;
  animation: rbAnimNetworkNode 10s ease-in-out infinite;
}

@keyframes rbAnimNetworkPath {
  0%, 25% { stroke-dashoffset: 300; }
  40%, 85% { stroke-dashoffset: 0; }
  90%, 100% { stroke-dashoffset: 0; opacity: 0; }
}

@keyframes rbAnimNetworkNode {
  0%, 38% { opacity: 0; transform: scale(0); }
  45%, 85% { opacity: 1; transform: scale(1); }
  90%, 100% { opacity: 0; transform: scale(1); }
}

/* 3. Gros Oeuvre et Finitions (Remplissage de matière) */
.rb-build-dark, .rb-build-gold {
  opacity: 0;
  transform: translateY(20px);
  animation: rbAnimBuild 10s cubic-bezier(.22,1,.36,1) infinite;
}

/* Décalage pour que la couleur Or arrive juste après le Noir */
.rb-build-gold {
  animation-delay: 0.3s;
}

@keyframes rbAnimBuild {
  0%, 50% { opacity: 0; transform: translateY(20px); }
  65%, 85% { opacity: 1; transform: translateY(0); }
  92%, 100% { opacity: 0; transform: translateY(-10px); }
}

.rb-svg-base {
  opacity: 0;
  animation: rbAnimBase 10s ease infinite;
}

@keyframes rbAnimBase {
  0%, 55% { opacity: 0; }
  65%, 85% { opacity: 1; }
  90%, 100% { opacity: 0; }
}

/* --- ILLUMINATION DES TEXTES --- */
/* Synchronisation des textes avec l'animation visuelle */

.rb-step-1 { animation: rbText1 10s infinite; }
.rb-step-2 { animation: rbText2 10s infinite; }
.rb-step-3 { animation: rbText3 10s infinite; }

@keyframes rbText1 {
  5%, 25% { opacity: 1; color: #111; }
}
@keyframes rbText2 {
  25%, 50% { opacity: 1; color: #C8924A; }
}
@keyframes rbText3 {
  50%, 85% { opacity: 1; color: #111; }
}

/* Responsive Mobile */
@media (max-width: 767px) {
  .rb-trades-anim {
    max-width: 300px;
  }
  .rb-trades-steps {
    top: 16px;
    left: 20px;
  }
  .rb-step {
    font-size: 9px;
  }
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-6babba9 *//* ==================================================
   RENOBATIS - ANIMATION CORPS DE MÉTIER
================================================== */

.rb-trades-anim {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 1;
  max-width: 400px;
  margin: 0 auto;
  background: #F5F3EF;
  border-radius: 28px;
  overflow: hidden;
  box-shadow: 0 15px 40px rgba(0,0,0,0.04);
}

/* Le fond quadrillé technique */
.rb-trades-grid {
  position: absolute;
  inset: 0;
  opacity: 0.15;
  background-image:
    linear-gradient(rgba(17,17,17,.1) 1px, transparent 1px),
    linear-gradient(90deg, rgba(17,17,17,.1) 1px, transparent 1px);
  background-size: 20px 20px;
}

/* Les textes indicateurs */
.rb-trades-steps {
  position: absolute;
  top: 24px;
  left: 28px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  z-index: 10;
}

.rb-step {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: #888;
  opacity: 0.4;
  transition: all 0.4s ease;
}

/* Le conteneur SVG */
.rb-trades-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* --- ANIMATIONS TIMELINE (Boucle de 10s) --- */

/* 1. Le Plan d'exécution (Dessin des pointillés) */
.rb-svg-plan rect {
  stroke-dasharray: 600;
  stroke-dashoffset: 600;
  animation: rbAnimPlan 10s ease-in-out infinite;
}

@keyframes rbAnimPlan {
  0%, 5% { stroke-dashoffset: 600; opacity: 1; }
  25%, 85% { stroke-dashoffset: 0; opacity: 1; }
  90%, 100% { opacity: 0; stroke-dashoffset: 0; }
}

/* 2. Les Réseaux Techniques (Traits or) */
.rb-svg-network path {
  stroke-dasharray: 300;
  stroke-dashoffset: 300;
  animation: rbAnimNetworkPath 10s ease-in-out infinite;
}

.rb-svg-network circle {
  opacity: 0;
  transform: scale(0);
  transform-origin: center;
  animation: rbAnimNetworkNode 10s ease-in-out infinite;
}

@keyframes rbAnimNetworkPath {
  0%, 25% { stroke-dashoffset: 300; }
  40%, 85% { stroke-dashoffset: 0; }
  90%, 100% { stroke-dashoffset: 0; opacity: 0; }
}

@keyframes rbAnimNetworkNode {
  0%, 38% { opacity: 0; transform: scale(0); }
  45%, 85% { opacity: 1; transform: scale(1); }
  90%, 100% { opacity: 0; transform: scale(1); }
}

/* 3. Gros Oeuvre et Finitions (Remplissage de matière) */
.rb-build-dark, .rb-build-gold {
  opacity: 0;
  transform: translateY(20px);
  animation: rbAnimBuild 10s cubic-bezier(.22,1,.36,1) infinite;
}

/* Décalage pour que la couleur Or arrive juste après le Noir */
.rb-build-gold {
  animation-delay: 0.3s;
}

@keyframes rbAnimBuild {
  0%, 50% { opacity: 0; transform: translateY(20px); }
  65%, 85% { opacity: 1; transform: translateY(0); }
  92%, 100% { opacity: 0; transform: translateY(-10px); }
}

.rb-svg-base {
  opacity: 0;
  animation: rbAnimBase 10s ease infinite;
}

@keyframes rbAnimBase {
  0%, 55% { opacity: 0; }
  65%, 85% { opacity: 1; }
  90%, 100% { opacity: 0; }
}

/* --- ILLUMINATION DES TEXTES --- */
/* Synchronisation des textes avec l'animation visuelle */

.rb-step-1 { animation: rbText1 10s infinite; }
.rb-step-2 { animation: rbText2 10s infinite; }
.rb-step-3 { animation: rbText3 10s infinite; }

@keyframes rbText1 {
  5%, 25% { opacity: 1; color: #111; }
}
@keyframes rbText2 {
  25%, 50% { opacity: 1; color: #C8924A; }
}
@keyframes rbText3 {
  50%, 85% { opacity: 1; color: #111; }
}

/* Responsive Mobile */
@media (max-width: 767px) {
  .rb-trades-anim {
    max-width: 300px;
  }
  .rb-trades-steps {
    top: 16px;
    left: 20px;
  }
  .rb-step {
    font-size: 9px;
  }
}/* End custom CSS */
/* Start custom CSS for html, class: .elementor-element-02f0cb5 */.rb-plan-flight {
  position: relative;
  height: 280px;
  overflow: hidden;
  border-radius: 32px;
  background: #F5F3EF;
}

/* Fond quadrillé façon plan technique */
.rb-plan-grid {
  position: absolute;
  inset: 0;
  opacity: .18;
  background-image:
    linear-gradient(rgba(255,255,255,.08) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.08) 1px, transparent 1px);
  background-size: 42px 42px;
}

/* SVG */
.rb-plan-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

/* Trajectoire pointillée */
.rb-plan-path {
  stroke: #C8924A;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 8 14;
  opacity: .95;
  animation: rbDashMove 2.8s linear infinite;
}

/* Crayon / outil de tracé */
.rb-pencil {
  fill: none;
  stroke: #F5F3EF;
  stroke-width: 2;
  stroke-linejoin: round;
  stroke-linecap: round;
  offset-path: path("M40 190 C180 60, 320 70, 430 150 S660 260, 760 130 S980 20, 1160 120");
  offset-rotate: auto;
  animation: rbPencilFly 8s cubic-bezier(.45,0,.25,1) infinite;
  filter: drop-shadow(0 12px 24px rgba(0,0,0,.35));
}

.rb-pencil path:first-child {
  fill: rgba(200,146,74,.18);
}

/* Repères techniques */
.rb-plan-marker {
  position: absolute;
  width: 54px;
  height: 54px;
  border: 1px solid #161616E8;
  border-radius: 50%;
}

.rb-plan-marker::before,
.rb-plan-marker::after {
  content: "";
  position: absolute;
  background: #161616E8;
}

.rb-plan-marker::before {
  left: 50%;
  top: -16px;
  width: 1px;
  height: 86px;
}

.rb-plan-marker::after {
  top: 50%;
  left: -16px;
  width: 86px;
  height: 1px;
}

.rb-marker-1 {
  left: 16%;
  top: 42%;
}

.rb-marker-2 {
  left: 55%;
  top: 55%;
}

.rb-marker-3 {
  right: 13%;
  top: 24%;
}

/* Animations */
@keyframes rbDashMove {
  to {
    stroke-dashoffset: -44;
  }
}

@keyframes rbPencilFly {
  0% {
    offset-distance: 0%;
    opacity: 0;
  }

  8% {
    opacity: 1;
  }

  90% {
    opacity: 1;
  }

  100% {
    offset-distance: 100%;
    opacity: 0;
  }
}

/* Mobile */
@media (max-width: 767px) {
  .rb-plan-flight {
    height: 220px;
    border-radius: 24px;
  }

  .rb-plan-marker {
    width: 42px;
    height: 42px;
  }

  .rb-pencil {
    transform: scale(.8);
  }
}/* End custom CSS */