.bg-custom{background-color:var(--color-bg-light)!important}.bg-white{background-color:var(--color-bg-highlight)}.bg-black{background-color:var(--color-bg-dark)}.zone-cta,.ville-cta{background-color:var(--color-bg-dark);border-radius:var(--radius-sm);color:var(--color-text-light)}.zone-cta p,.ville-cta p{color:var(--color-text-light)}.oleis-error{background:#f8d7da;color:#721c24;padding:1rem;border-radius:4px;border-left:4px solid #f5c6cb}.oleis-notice{background:#fff3cd;color:#856404;padding:1rem;border-radius:4px;border-left:4px solid #ffeaa7}.sticky-title{position:sticky;top:120px;align-self:start;transition:opacity 0.3s ease,transform 0.3s ease;will-change:opacity,transform;backface-visibility:hidden;-webkit-font-smoothing:antialiased}.sticky-title.scrolling{opacity:.85;transform:translateY(-5px)}.content-roll{min-height:100vh}.sticky-roll-section.sticky-high .sticky-title{top:160px}.sticky-roll-section.sticky-low .sticky-title{top:80px}.sticky-roll-section.fade-effect .sticky-title{opacity:.7}.sticky-roll-section.fade-effect .sticky-title.scrolling{opacity:1}@media (max-width:1024px){.sticky-title{position:relative;top:0}}.hover-lift{transition:transform var(--transition-base)}.hover-lift:hover{transform:translateY(-4px)}.hover-scale img{transition:transform 0.4s cubic-bezier(.4,0,.2,1)}.hover-scale:hover img{transform:scale(1.05)}.hover-slide-right{transition:transform var(--transition-base)}.hover-slide-right:hover{transform:translateX(4px)}