/* Gerálvez · motion and finishing. Native Elementor remains the source of content. */
:root{--ge-ease:cubic-bezier(.22,1,.36,1)}

/* Full, uncropped assets sit in a consistent optical area, including narrow screens. */
.elementor .ge-brand-carousel .swiper-slide{min-height:116px;align-items:center;justify-content:center}
.elementor .ge-brand-carousel .swiper-slide-inner{display:flex;align-items:center;justify-content:center;width:100%;height:96px;margin:0;padding:12px;line-height:0;box-sizing:border-box}
.elementor .ge-brand-carousel img.swiper-slide-image{display:block;width:142px;max-width:100%;height:60px;object-fit:contain;object-position:center}
.ge-brand-carousel .elementor-swiper-button{opacity:1;border:1px solid #0f3f4a25;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:white;transition:color .25s,background-color .25s,border-color .25s}
.ge-brand-carousel .elementor-swiper-button svg{width:14px;height:14px;fill:currentColor}
.ge-brand-carousel .elementor-swiper-button:hover,.ge-brand-carousel .elementor-swiper-button:focus-visible{background:var(--ge-cyan);border-color:var(--ge-cyan)}
.ge-brand-carousel .elementor-image-carousel-wrapper{margin-inline:44px}

/* Native Fade In Up settings, with a restrained 24px travel rather than a full-height slide. */
@keyframes ge-enter-up{from{opacity:0;transform:translate3d(0,24px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes ge-enter-fade{from{opacity:0}to{opacity:1}}
@keyframes ge-panel-copy{from{opacity:0;transform:translate3d(0,12px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.ge-enter.animated{animation-duration:.8s;animation-timing-function:var(--ge-ease);animation-fill-mode:both}
.ge-enter.animated.fadeInUp{animation-name:ge-enter-up}
.ge-enter.animated.fadeIn{animation-name:ge-enter-fade}
.ge-enter.animated.animated-fast{animation-duration:.5s}.ge-enter.animated.animated-slow{animation-duration:1.1s}
.ge-header .ge-header-row{transition:min-height .35s var(--ge-ease)}
.ge-scrolled .ge-header .ge-header-row{min-height:80px}
.ge-menu .elementor-nav-menu--main .elementor-item{position:relative;transition:color .25s}
.ge-menu .elementor-nav-menu--main .elementor-item::after{content:'';position:absolute;left:13px;right:13px;bottom:12px;height:1px;background:currentColor;opacity:1;transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ge-ease)}
.ge-menu .elementor-nav-menu--main .elementor-item:hover::after,.ge-menu .elementor-nav-menu--main .elementor-item:focus-visible::after{transform:scaleX(1)}
.ge-scrolled .ge-menu .elementor-nav-menu--main .elementor-item:hover{color:#0b6d76}
.ge-logo img{object-fit:contain;object-position:left center}

/* Microinteractions also have keyboard focus equivalents. */
.ge-btn .elementor-button,.ge-arrow .elementor-button,.ge-contact-form .elementor-button,.ge-backtop a{transition:background-color .25s,color .25s,border-color .25s,box-shadow .35s,transform .35s var(--ge-ease)}
.ge-btn .elementor-button-icon,.ge-text-link .elementor-button-icon{display:inline-flex;transition:transform .35s var(--ge-ease)}
.ge-btn .elementor-button:focus-visible,.ge-btn .elementor-button:hover{box-shadow:0 8px 24px #06252c24}
.ge-btn .elementor-button:hover .elementor-button-icon,.ge-btn .elementor-button:focus-visible .elementor-button-icon,.ge-text-link .elementor-button:hover .elementor-button-icon,.ge-text-link .elementor-button:focus-visible .elementor-button-icon{transform:translateX(4px)}
.ge-hero .ge-btn:not(.ge-btn-outline) .elementor-button:hover{background:white;color:var(--ge-ink)}
.ge-arrow .elementor-button:focus-visible{background:var(--ge-ink);color:white}
.ge-contact-form .elementor-field-textual{transition:border-color .25s,background-color .25s}
.ge-contact-form .elementor-field-group-reason .elementor-field-option label{transition:background-color .25s,color .25s,border-color .25s}
.ge-contact-form .elementor-field-group-reason .elementor-field-option label:hover{border-color:#0b8992}
.ge-contact-form .elementor-button:focus-visible{box-shadow:0 0 0 4px #0b899225}
.ge-space-tabs .e-n-tab-title{transition:border-color .25s,background-color .25s,box-shadow .35s}
.ge-space-tabs .e-n-tab-title::before{transition:filter .4s}
.ge-space-tabs .e-n-tab-title:hover,.ge-space-tabs .e-n-tab-title:focus-visible{background:#ffffffa6;border-color:#0f3f4a55}
.ge-space-tabs .e-n-tab-title:hover::before{filter:none}
/* Borderless thumbnail rail: keep native tabs, touch scrolling and keyboard access. */
.elementor .ge-space-tabs .e-n-tabs-heading{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;padding:3px 0}
.elementor .ge-space-tabs .e-n-tabs-heading::-webkit-scrollbar{display:none;width:0;height:0}
.elementor .ge-space-tabs .e-n-tab-title{border:0!important;padding:0!important;box-shadow:none!important;overflow:hidden;color:var(--ge-ink)!important;background:#f1f2f3!important}
.elementor .ge-space-tabs .e-n-tab-title[aria-selected=true],.elementor .ge-space-tabs .e-n-tab-title:hover{background:var(--ge-cyan)!important;color:var(--ge-ink)!important}
.elementor .ge-space-tabs .e-n-tab-title .e-n-tab-title-text{color:var(--ge-ink)!important;padding:18px 14px}
.elementor .ge-space-tabs .e-n-tab-title:focus:not(:focus-visible){outline:none}
.elementor .ge-space-tabs .e-n-tab-title:focus-visible{outline:2px solid var(--ge-ink);outline-offset:-3px}
.elementor .ge-space-rail-controls{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;gap:10px;width:100%;margin-top:16px}
.elementor .ge-space-rail-controls>.elementor-widget{width:auto}
.ge-space-rail-controls .elementor-button{background:white;border:0;color:var(--ge-ink)}
.ge-space-rail-controls .elementor-button:hover,.ge-space-rail-controls .elementor-button:focus-visible{background:var(--ge-cyan);color:var(--ge-ink)}
.ge-space-rail-controls [aria-disabled=true]{opacity:.3;cursor:default}
.ge-space-rail-controls [aria-disabled=true]:hover{background:white}
.ge-space-feature.e-active .ge-space-image{animation:ge-enter-fade .65s var(--ge-ease) both}
.ge-space-feature.e-active .ge-space-copy>.elementor-widget{animation:ge-panel-copy .6s var(--ge-ease) both}
.ge-space-feature.e-active .ge-space-copy>.elementor-widget:nth-child(2){animation-delay:.06s}
.ge-space-feature.e-active .ge-space-copy>.elementor-widget:nth-child(3){animation-delay:.12s}
.ge-space-feature.e-active .ge-space-copy>.elementor-widget:nth-child(4){animation-delay:.18s}
.ge-space-image,.ge-project-image{overflow:hidden}
.ge-space-image img,.ge-project-image img{transition:transform 1.1s var(--ge-ease)}
.ge-project-feature{transition:box-shadow .5s var(--ge-ease)}
.ge-service-icon .elementor-icon{transition:background-color .3s,border-color .3s,transform .45s var(--ge-ease)}
.ge-proof-card{transition:background-color .4s}
.ge-footer a{transition:color .25s}.ge-footer a:hover .elementor-icon-list-text,.ge-footer a:focus-visible .elementor-icon-list-text{color:white}
.ge-backtop a:focus-visible{background:var(--ge-cyan)}
@media(hover:hover) and (pointer:fine){
 .ge-space-feature:hover .ge-space-image img,.ge-project-feature:hover .ge-project-image img{transform:scale(1.035)}
 .ge-project-feature:hover{box-shadow:0 18px 48px #0f3f4a12}
 .ge-service-card:hover .ge-service-icon .elementor-icon{background:#79fafe16;border-color:#79fafe;transform:translateY(-3px) rotate(-5deg)}
 .ge-proof-card:hover{background:#e7f3f3}
 .ge-contact-form .elementor-button:hover,.ge-backtop a:hover{transform:translateY(-3px)}
}
@media(max-width:1024px){.ge-scrolled .ge-header .ge-header-row{min-height:74px}}
@media(max-width:767px){
 .elementor .ge-brands .ge-section-heading{flex-direction:row;align-items:flex-end;gap:12px}
 .elementor .ge-brands .ge-brand-toggle{width:40px;flex:0 0 40px}
 .elementor .ge-brand-carousel{padding-bottom:54px}
 .elementor .ge-brand-carousel .swiper-slide-inner{height:90px;padding:10px 5px}
 .elementor .ge-brand-carousel img.swiper-slide-image{width:110px;height:54px}
 .ge-brand-carousel .elementor-image-carousel-wrapper{margin-inline:0}
 .elementor .ge-brand-carousel .elementor-swiper-button{width:44px;height:44px;top:auto;bottom:0;transform:none}
 .elementor .ge-brand-carousel .elementor-swiper-button-prev{left:calc(50% - 50px);right:auto}
 .elementor .ge-brand-carousel .elementor-swiper-button-next{left:calc(50% + 6px);right:auto}
 .ge-enter.animated{animation-duration:.55s}
 .ge-scrolled .ge-header .ge-header-row{min-height:72px}
}
@media(max-width:480px){.elementor .ge-proof-grid>.ge-proof-card{width:100%}}
/* Do not conceal content or enforce motion for people who request less movement. */
@media(prefers-reduced-motion:reduce){
 .ge-enter.elementor-invisible{visibility:visible}
 .ge-enter.animated,.ge-space-feature.e-active .ge-space-image,.ge-space-feature.e-active .ge-space-copy>.elementor-widget{animation:none!important;opacity:1;transform:none}
 .ge-space-image img,.ge-project-image img,.ge-service-icon .elementor-icon,.ge-btn .elementor-button,.ge-contact-form .elementor-button,.ge-backtop a{transform:none!important;transition:none!important}
}
@media print{.ge-enter.elementor-invisible{visibility:visible}.ge-enter,.ge-space-copy>.elementor-widget{animation:none!important;opacity:1!important;transform:none!important}}
