/* Valli Engineering – own additions (replace effects that needed the old plugin scripts) */
.et_animated:not(.ts-anim), .wow { opacity: 1 !important; animation: none !important; visibility: visible !important; }

/* scroll animations */
.ts-anim { opacity: 0; animation-fill-mode: both !important; animation-timing-function: ease-in-out !important; animation-name: none; }
.ts-anim.ts-anim-in { opacity: 1; }
.ts-anim-in.ts-a-slide { animation-name: tsSlide !important; }
.ts-anim-in.ts-a-slideLeft { animation-name: tsSlideLeft !important; }
.ts-anim-in.ts-a-slideRight { animation-name: tsSlideRight !important; }
.ts-anim-in.ts-a-slideTop { animation-name: tsSlideTop !important; }
.ts-anim-in.ts-a-slideBottom { animation-name: tsSlideBottom !important; }
.ts-anim-in.ts-a-fold { animation-name: tsFold !important; }
.ts-anim-in.ts-a-foldLeft { animation-name: tsFoldLeft !important; transform-origin: left center; }
.ts-anim-in.ts-a-foldRight { animation-name: tsFoldRight !important; transform-origin: right center; }
.ts-anim-in.ts-a-flip { animation-name: tsFlip !important; }
.ts-anim-in.ts-a-zoom { animation-name: tsZoom !important; }
.ts-anim-in.ts-a-zoomLeft { animation-name: tsZoom !important; transform-origin: left center; }
.ts-anim-in.ts-a-zoomRight { animation-name: tsZoom !important; transform-origin: right center; }
.ts-anim-in.ts-a-fade { animation-name: tsFade !important; }
@keyframes tsFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes tsSlide { from { opacity: 0; transform: scale3d(.5,.5,.5); } to { opacity: 1; transform: none; } }
@keyframes tsSlideLeft { from { opacity: 0; transform: translate3d(-50%,0,0); } to { opacity: 1; transform: none; } }
@keyframes tsSlideRight { from { opacity: 0; transform: translate3d(50%,0,0); } to { opacity: 1; transform: none; } }
@keyframes tsSlideTop { from { opacity: 0; transform: translate3d(0,-50%,0); } to { opacity: 1; transform: none; } }
@keyframes tsSlideBottom { from { opacity: 0; transform: translate3d(0,50%,0); } to { opacity: 1; transform: none; } }
@keyframes tsFold { from { opacity: 0; transform: perspective(2000px) rotateY(45deg); } to { opacity: 1; transform: perspective(2000px) rotateY(0); } }
@keyframes tsFoldLeft { from { opacity: 0; transform: perspective(2000px) rotateY(45deg); } to { opacity: 1; transform: perspective(2000px) rotateY(0); } }
@keyframes tsFoldRight { from { opacity: 0; transform: perspective(2000px) rotateY(-45deg); } to { opacity: 1; transform: perspective(2000px) rotateY(0); } }
@keyframes tsFlip { from { opacity: 0; transform: perspective(2000px) rotateX(45deg); } to { opacity: 1; transform: perspective(2000px) rotateX(0); } }
@keyframes tsZoom { from { opacity: 0; transform: scale3d(.5,.5,.5); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .ts-anim { opacity: 1 !important; animation: none !important; } }

/* services slider */
.ts-slider .swiper-container { overflow: hidden; position: relative; }
.ts-slider .swiper-wrapper { display: flex; transition-property: transform; transition-timing-function: ease; box-sizing: content-box; }
.ts-slider .swiper-slide, .ts-slider .swiper-wrapper > * { flex-shrink: 0; position: relative; }
.ts-slider .swiper-button-prev, .ts-slider .swiper-button-next { cursor: pointer; }

/* phone menu */
.mobile_nav .et_mobile_menu { display: none; }
.mobile_nav.opened .et_mobile_menu { display: block !important; max-height: 80vh; overflow-y: auto; z-index: 99999; }
.et_mobile_menu li ul { display: none !important; }
.et_mobile_menu li.ts-sub-open > ul { display: block !important; padding-left: 15px !important; }
.et_mobile_menu li.ts-has-sub > a::after { content: ' \25BE'; }
.et-menu li:hover > ul, .et-menu li:focus-within > ul { opacity: 1 !important; visibility: visible !important; }


/* contact form */
.ts-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.ts-form-msg { margin-top: 12px; font-size: 15px; line-height: 1.5; }
.ts-form-msg:empty { display: none; }
.ts-form-msg.is-ok { color: #1c7c43; background: #e9f8ef; border-left: 4px solid #1c9d4f; padding: 10px 14px; }
.ts-form-msg.is-error { color: #b32d2e; background: #fdf0f0; border-left: 4px solid #d63638; padding: 10px 14px; }
.ts-field-msg { color: #c02b0a; font-size: 13px; margin-top: 4px; }
.nfield_error input, .nfield_error textarea { border-color: #c02b0a !important; }
.nform_wrapper button.nform_button[disabled] { opacity: .6; cursor: wait; }
.g-recaptcha { min-height: 78px; }
@media (max-width: 360px) { .g-recaptcha { transform: scale(.88); transform-origin: 0 0; } }
html, body { overflow-x: hidden; }
html { scroll-behavior: smooth; }
/* 404 page */
.ts-404 { text-align: center; padding: 160px 20px 110px; background: #f5f7fb; }
.ts-404 h1 { font-size: 110px; line-height: 1; color: #1d337a; font-weight: 700; padding: 0; }
.ts-404 h2 { font-size: 30px; color: #e9a23b; margin: 14px 0 10px; }
.ts-404 p { font-size: 16px; color: #555; }
.ts-404-btn { display: inline-block; margin: 18px 6px 0; padding: 12px 28px; background: #1d337a; color: #fff !important; border-radius: 4px; font-weight: 600; }
.ts-404-alt { background: #e9a23b; }
@media (max-width: 767px) { .ts-404 { padding: 110px 16px 70px; } .ts-404 h1 { font-size: 80px; } }

/* toggles + tabs (were opened by the theme script) */
.ts_pb_toggle_close .ts_pb_toggle_content { display: none; }
.ts_pb_toggle_open .ts_pb_toggle_content { display: block; }
.ts_pb_toggle_title { cursor: pointer; }
.ts_pb_all_tabs > .ts_pb_tab { display: none; }
.ts_pb_all_tabs > .ts_pb_tab.ts_pb_active_content { display: block; opacity: 1; }

/* section background videos (were sized by a script) */
.ts_pb_section_video_bg { position: absolute !important; inset: 0; overflow: hidden; display: block !important; width: 100%; height: 100%; }
.ts_pb_section_video_bg video { position: absolute; inset: 0; width: 100% !important; height: 100% !important; object-fit: cover; }

/* slide-in menu button */
#slide-in-open { cursor: pointer; }
/* fixed backgrounds do not work on phones -> normal scroll there */
@media (max-width: 980px) { #bg-img { background-attachment: scroll !important; } }
/* floating social bar: inline icons inside the round badges */
.sticky-icon a i { display: inline-flex !important; align-items: center; justify-content: center; vertical-align: middle; }
.sticky-icon a i .si { width: 16px; height: 16px; }

/* home banner (was a slider plugin) */
.tc-hero { position: relative; width: 100vw; margin-left: calc(50% - 50vw); aspect-ratio: 1920 / 550; overflow: hidden; background: #ddd; }
.tc-slide { position: absolute; inset: 0; opacity: 0; transform: scale(1.06); transition: opacity 1s ease, transform 1.4s ease; }
.tc-slide.is-active { opacity: 1; transform: none; z-index: 1; }
.tc-slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tc-nav { position: absolute; top: 50%; z-index: 3; width: 50px; height: 50px; margin-top: -25px; border: 0; border-radius: 50%; background: transparent; cursor: pointer; }
.tc-nav::before { content: ''; position: absolute; left: 17px; top: 17px; width: 14px; height: 14px; border: solid #fff; border-width: 0 0 3px 3px; transform: rotate(45deg); filter: drop-shadow(0 0 2px rgba(0,0,0,.5)); }
.tc-prev { left: 30px; } .tc-next { right: 30px; } .tc-next::before { left: 12px; transform: rotate(-135deg); }
.tc-nav:hover { background: rgba(0,0,0,.25); }
@media (max-width: 767px) { .tc-hero { aspect-ratio: 16 / 9; } .tc-prev { left: 8px; } .tc-next { right: 8px; } }

/* sticky menu bar */
.ts-stuck { position: fixed !important; top: 0; left: 0; right: 0; z-index: 9999; box-shadow: 0 2px 10px rgba(0,0,0,.08); }
.et_pb_section_parallax_sticky { display: none; }

/* ===== Valli Engineering ===== */
.ve-hero { aspect-ratio: 1920 / 660; }
.ve-logo-text { display: inline-block; font: 700 22px/1.1 'Poppins', Arial, sans-serif; color: #e2161b; letter-spacing: .3px; white-space: nowrap; }
.ve-logo-text b { color: #222; } .ve-logo-text small { display: block; font-size: 11px; font-weight: 600; color: #555; letter-spacing: 3px; text-transform: uppercase; }
/* product filters */
.ve-filters { font-size: 14px; }
.ve-filter { margin-bottom: 18px; }
.ve-filter-title { color: #e2161b; font-weight: 700; font-size: 15px; margin-bottom: 8px; }
.ve-filter ul { list-style: none; margin: 0; padding: 0; }
.ve-filter li { margin: 0 0 4px; padding: 0; }
.ve-filter label { display: flex; align-items: center; gap: 7px; cursor: pointer; color: #444; line-height: 1.4; }
.ve-filter input { margin: 0; width: 15px; height: 15px; accent-color: #e2161b; flex: 0 0 auto; }
.ve-filter-reset { margin-top: 6px; background: #e2161b; color: #fff; border: 0; padding: 8px 16px; border-radius: 3px; cursor: pointer; font-size: 13px; }
.ve-empty { padding: 30px 0; color: #666; text-align: center; }
/* product gallery thumbs */
.woocommerce-product-gallery { opacity: 1 !important; }
.flex-control-thumbs { display: flex; flex-wrap: wrap; gap: 10px; list-style: none; margin: 12px 0 0; padding: 0; }
.flex-control-thumbs li { width: 70px; margin: 0; padding: 0; } .flex-control-thumbs img { cursor: pointer; opacity: .6; border: 2px solid transparent; }
.flex-control-thumbs img.flex-active { opacity: 1; border-color: #e2161b; }
.w-tabs-section-content { display: none; } .w-tabs-section.active .w-tabs-section-content { display: block; }
/* clients carousel */
.ve-owl { position: relative; padding: 0 40px; }
.ve-owl .owl-nav div { position: absolute; top: 50%; width: 36px; height: 36px; margin-top: -18px; border-radius: 50%; cursor: pointer; background: rgba(0,0,0,.06); }
.ve-owl .owl-prev { left: 0; } .ve-owl .owl-next { right: 0; }
.ve-owl .owl-nav div::before { content: ''; position: absolute; top: 12px; left: 14px; width: 10px; height: 10px; border: solid #333; border-width: 0 0 2px 2px; transform: rotate(45deg); }
.ve-owl .owl-next::before { left: 10px; transform: rotate(-135deg); }
/* phone menu */
@media (max-width: 1024px) {
  .w-nav.type_mobile .w-nav-control { display: block !important; }
  .w-nav.type_mobile .w-nav-list.level_1 { display: none; position: absolute; left: 0; right: 0; top: 100%; background: #fff; z-index: 999; box-shadow: 0 6px 16px rgba(0,0,0,.15); max-height: 75vh; overflow-y: auto; }
  .w-nav.type_mobile.ve-open .w-nav-list.level_1 { display: block !important; }
  .w-nav.type_mobile .w-nav-list.level_1 > li { display: block; width: 100%; }
  .w-nav.type_mobile .w-nav-anchor { color: #222 !important; padding: 12px 20px !important; display: block; }
  .w-nav.type_mobile .w-nav-list.level_2 { display: none !important; position: static !important; opacity: 1 !important; visibility: visible !important; box-shadow: none !important; padding-left: 15px; }
  .w-nav.type_mobile li.opened > .w-nav-list.level_2 { display: block !important; }
}
.w-nav.type_desktop .menu-item:hover > .w-nav-list.level_2 { display: block; opacity: 1 !important; visibility: visible !important; }
.w-toplink { opacity: 0; pointer-events: none; transition: opacity .3s; } .w-toplink.active { opacity: 1; pointer-events: auto; }
.footer_reveal .l-footer { position: static !important; } .footer_reveal .l-canvas { margin-bottom: 0 !important; }
@media (max-width: 899px) {
  .l-subheader.at_top { display: none !important; }
  .l-subheader.at_middle .l-subheader-cell.at_right { display: flex; align-items: center; justify-content: flex-end; }
  .l-subheader.at_middle { position: relative; }
  .w-nav.type_mobile .w-nav-list.level_1 { top: 100%; }
}
.w-nav .w-nav-close { display: none !important; }

/* ---- GPS home banner (was Revolution Slider): picture + animated layers ---- */
.gp-hero { aspect-ratio: 1600 / 500 !important; container-type: inline-size; background: #3f2d2d; }
.gp-hero .gp-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gp-slide { transform: none !important; transition: opacity .9s ease !important; overflow: hidden; }
.gp-ly { position: absolute; z-index: 2; opacity: 0; }
.gp-slide:not(.is-active) .gp-ly, .gp-slide:not(.is-active) .gp-ch, .gp-slide:not(.is-active) .gp-shape span { animation: none !important; }
.gp-img img { width: 100%; height: auto; display: block; }
.gp-txt { white-space: nowrap; font-family: Iceberg, sans-serif; font-weight: 400; opacity: 1; }
.gp-ch { display: inline-block; opacity: 0; animation: gpRS 2000ms cubic-bezier(.65,0,.35,1) both; }
.gp-shape { opacity: 1; overflow: hidden; }
.gp-shape span { display: block; width: 100%; height: 100%; }
@keyframes gpL { from { opacity: 0; transform: translateX(-60cqw); } to { opacity: 1; transform: none; } }
@keyframes gpR { from { opacity: 0; transform: translateX(60cqw); } to { opacity: 1; transform: none; } }
@keyframes gpRS { from { opacity: 0; transform: translateX(30cqw) skewX(-85deg); } to { opacity: 1; transform: none; } }
@keyframes gpMaskL { from { transform: translateX(-175%); } to { transform: none; } }
@keyframes gpMaskR { from { transform: translateX(175%); } to { transform: none; } }
.gp-hero .tc-nav { background: rgba(0,0,0,.5); opacity: 1; width: 40px; height: 40px; margin-top: -20px; }
.gp-hero .tc-nav::before { left: 15px; top: 13px; width: 11px; height: 11px; }
.gp-hero .tc-next::before { left: 11px; }
@media (prefers-reduced-motion: reduce) { .gp-ly, .gp-ch, .gp-shape span { animation: none !important; opacity: 1 !important; } }

/* ---- process timeline (Products page; was positioned by the Ultimate Addons script) ---- */
.smile-icon-timeline-wrap { position: relative; padding: 10px 0 30px; }
.smile-icon-timeline-wrap .timeline-line { position: absolute; top: 0; bottom: 0; left: 50%; width: 0; border-right-width: 2px !important; margin-left: -1px; }
.smile-icon-timeline-wrap .timeline-line z { position: absolute; bottom: -4px; left: -4px; width: 10px; height: 10px; border-radius: 50%; background: #3f2d2d; }
.smile-icon-timeline-wrap .timeline-wrapper { position: relative; }
.smile-icon-timeline-wrap .timeline-wrapper .timeline-block { width: calc(50% - 40px) !important; background: #49b94f; color: #fff; border: 0; position: relative; margin: 0 0 30px; }
.smile-icon-timeline-wrap .timeline-wrapper .timeline-block:nth-child(odd) { margin-right: auto; }
.smile-icon-timeline-wrap .timeline-wrapper .timeline-block:nth-child(even) { margin-left: auto; }

.smile-icon-timeline-wrap .timeline-block .timeline-header { display: block; padding: 22px 26px 18px; }
.smile-icon-timeline-wrap .ult-timeline-title { color: #fff !important; font-size: 28px !important; line-height: 1.3; margin-bottom: 10px; font-family: inherit; }
.smile-icon-timeline-wrap .timeline-item-spt, .smile-icon-timeline-wrap .timeline-item-spt p { color: #fff; font-size: 15px; line-height: 1.7; }
.smile-icon-timeline-wrap .ult-timeline-arrow { position: absolute; top: 30px !important; bottom: auto !important; width: 0; height: 0; border: 12px solid transparent; }
.smile-icon-timeline-wrap .ult-timeline-arrow s, .smile-icon-timeline-wrap .ult-timeline-arrow l { display: none; }
.smile-icon-timeline-wrap .timeline-block:nth-child(odd) .ult-timeline-arrow { right: -24px; border-left-color: #49b94f; }
.smile-icon-timeline-wrap .timeline-block:nth-child(even) .ult-timeline-arrow { left: -24px; border-right-color: #49b94f; }
.smile-icon-timeline-wrap .timeline-dot { box-sizing: content-box; position: absolute; top: 36px !important; bottom: auto !important; width: 12px; height: 12px; border-radius: 50%; background: #3f2d2d; border: 2px solid #fff; box-shadow: 0 0 0 1px #3f2d2d; }
.smile-icon-timeline-wrap .timeline-block:nth-child(odd) .timeline-dot { left: calc(100% + 32px) !important; right: auto !important; margin: 0 !important; }
.smile-icon-timeline-wrap .timeline-block:nth-child(even) .timeline-dot { right: calc(100% + 32px) !important; left: auto !important; margin: 0 !important; }
.smile-icon-timeline-wrap .timeline-icon-block { display: none; }
.smile-icon-timeline-wrap.tl-animation-slide-out .timeline-block { transition: transform .2s; }
.smile-icon-timeline-wrap.tl-animation-slide-out .timeline-block:hover { transform: scale(1.02); }
@media (max-width: 767px) {
  .smile-icon-timeline-wrap .timeline-line { left: 10px; }
  .smile-icon-timeline-wrap .timeline-wrapper .timeline-block { width: auto !important; margin: 0 0 25px 38px !important; }
  .smile-icon-timeline-wrap .timeline-block .ult-timeline-arrow { left: -24px !important; right: auto !important; border-color: transparent !important; border-right-color: #49b94f !important; }
  .smile-icon-timeline-wrap .timeline-block .timeline-dot { left: -35px !important; right: auto !important; }
  .smile-icon-timeline-wrap .ult-timeline-title { font-size: 22px; }
}
.smile-icon-timeline-wrap .timeline-dot { display: none !important; }
.smile-icon-timeline-wrap .timeline-wrapper .timeline-block::after { content: ''; position: absolute; top: 36px; width: 10px; height: 10px; border-radius: 50%; background: #3f2d2d; border: 2px solid #fff; box-shadow: 0 0 0 1px #3f2d2d; }
.smile-icon-timeline-wrap .timeline-wrapper .timeline-block:nth-child(odd)::after { right: -47px; }
.smile-icon-timeline-wrap .timeline-wrapper .timeline-block:nth-child(even)::after { left: -47px; }
@media (max-width: 767px) { .smile-icon-timeline-wrap .timeline-wrapper .timeline-block::after { left: -35px !important; right: auto !important; } }
/* section background pictures (were faded in by the theme script) */
.l-section-img { opacity: 1 !important; }
/* phone menu: active page readable */
.w-nav.type_mobile .menu-item.current-menu-item > a, .w-nav.type_mobile .menu-item.current-menu-item > a .w-nav-title { color: #49B94F !important; }
