/*!
 * JF Slider styles: Swiper 11.2.10's core, navigation and pagination rules, under jf-slider names.
 * Swiper: Copyright 2014-2025 Vladimir Kharlampidi. Released under the MIT License:
 * https://github.com/nolimits4web/swiper/blob/master/LICENSE
 */
@font-face{font-family:jf-slider-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}
:root{--jf-slider-theme-color:#007aff}
.jf-slider{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}
.jf-slider-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--jf-slider-wrapper-transition-timing-function,initial);box-sizing:content-box}
.jf-slider-android .jf-slider-slide,.jf-slider-ios .jf-slider-slide,.jf-slider-wrapper{transform:translate3d(0px,0,0)}
.jf-slider-horizontal{touch-action:pan-y}
.jf-slider-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}
.jf-slider-backface-hidden .jf-slider-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}
:root{--jf-slider-navigation-size:44px}
.jf-slider-button-next,.jf-slider-button-prev{position:absolute;top:var(--jf-slider-navigation-top-offset,50%);width:calc(var(--jf-slider-navigation-size)/ 44 * 27);height:var(--jf-slider-navigation-size);margin-top:calc(0px - (var(--jf-slider-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--jf-slider-navigation-color,var(--jf-slider-theme-color))}
.jf-slider-button-next.jf-slider-button-disabled,.jf-slider-button-prev.jf-slider-button-disabled{opacity:.35;cursor:auto;pointer-events:none}
.jf-slider-button-next svg,.jf-slider-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}
.jf-slider-button-prev{left:var(--jf-slider-navigation-sides-offset,10px);right:auto}
.jf-slider-button-next{right:var(--jf-slider-navigation-sides-offset,10px);left:auto}
.jf-slider-button-lock{display:none}
.jf-slider-button-next:after,.jf-slider-button-prev:after{font-family:jf-slider-icons;font-size:var(--jf-slider-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}
.jf-slider-button-prev:after{content:'prev'}
.jf-slider-button-next{right:var(--jf-slider-navigation-sides-offset,10px);left:auto}
.jf-slider-button-next:after{content:'next'}
.jf-slider-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}
.jf-slider-horizontal>.jf-slider-pagination-bullets,.jf-slider-pagination-bullets.jf-slider-pagination-horizontal{bottom:var(--jf-slider-pagination-bottom,8px);top:var(--jf-slider-pagination-top,auto);left:0;width:100%}
.jf-slider-pagination-bullet{width:var(--jf-slider-pagination-bullet-width,var(--jf-slider-pagination-bullet-size,8px));height:var(--jf-slider-pagination-bullet-height,var(--jf-slider-pagination-bullet-size,8px));display:inline-block;border-radius:var(--jf-slider-pagination-bullet-border-radius,50%);background:var(--jf-slider-pagination-bullet-inactive-color,#000);opacity:var(--jf-slider-pagination-bullet-inactive-opacity, .2)}
button.jf-slider-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}
.jf-slider-pagination-clickable .jf-slider-pagination-bullet{cursor:pointer}
.jf-slider-pagination-bullet:only-child{display:none!important}
.jf-slider-pagination-bullet-active{opacity:var(--jf-slider-pagination-bullet-opacity, 1);background:var(--jf-slider-pagination-color,var(--jf-slider-theme-color))}
.jf-slider-horizontal>.jf-slider-pagination-bullets .jf-slider-pagination-bullet,.jf-slider-pagination-horizontal.jf-slider-pagination-bullets .jf-slider-pagination-bullet{margin:0 var(--jf-slider-pagination-bullet-horizontal-gap,4px)}
.jf-slider-pagination-lock{display:none}
.jf-slider-slide-zoomed{cursor:move;touch-action:none}

/* The slider track fills its slider, and its slides start from the left. jf-landing.css has the track at
   100vw with space-between, which spread a few slides across the window, out of the slider's view.
   !important: those rules load later, or in any order once an optimiser combines the CSS. */
.jf-service-page-template-wrapper .jf-slider-wrapper{width:100%!important;justify-content:flex-start!important}

/* Logo rows with fewer logos than fit: spread evenly across the row, each logo centered in its space.
   Rows with more logos overflow and scroll as before (there is no free space to spread). */
.jf-service-page-template-wrapper :is(.jf-clients-slider-container,.jf-awards-slider-container,.jf-partners-slider-container) .jf-slider-wrapper{justify-content:space-around!important}
.jf-service-page-template-wrapper :is(.jf-clients-slider-container,.jf-awards-slider-container,.jf-partners-slider-container) .jf-slider-slide{display:flex;justify-content:center;align-items:center}

/* Before the slider script runs (optimisers like NitroPack hold it until the first scroll or tap), the slides
   already sit as the script will lay them out: same count per row, same gaps, same breakpoints as
   jf-slider-init.js and jf-testimonials-slider.js. Once started, the script's own sizes take over. */
.jf-service-page-template-wrapper :is(.jf-slider,.jf-slider-container):not(.jf-slider-initialized){overflow:hidden}
.jf-service-page-template-wrapper :is(.jf-clients-slider-container,.jf-awards-slider-container,.jf-partners-slider-container):not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex:0 0 calc((100% - 60px)/4);width:calc((100% - 60px)/4);margin-right:20px}
.jf-service-page-template-wrapper .jf-testimonial-slider:not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex:0 0 100%;width:100%;margin-right:24px}
.jf-service-page-template-wrapper .jf-case-studies-slider:not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex:0 0 100%;width:100%;margin-right:20px}
@media (min-width:375px){.jf-service-page-template-wrapper :is(.jf-clients-slider-container,.jf-awards-slider-container,.jf-partners-slider-container):not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex-basis:calc((100% - 20px)/2);width:calc((100% - 20px)/2)}}
@media (min-width:768px){.jf-service-page-template-wrapper :is(.jf-clients-slider-container,.jf-awards-slider-container,.jf-partners-slider-container):not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex-basis:calc((100% - 40px)/3);width:calc((100% - 40px)/3)}.jf-service-page-template-wrapper .jf-testimonial-slider:not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex-basis:calc((100% - 48px)/3);width:calc((100% - 48px)/3)}}
@media (min-width:1024px){.jf-service-page-template-wrapper :is(.jf-clients-slider-container,.jf-awards-slider-container,.jf-partners-slider-container):not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex-basis:calc((100% - 60px)/4);width:calc((100% - 60px)/4)}}

/* Testimonials: every slide as tall as the tallest, so the author (photo, name, role), which each
   slide pushes to its bottom, lines up across the row. A slide that's opened grows the row with it. */
.jf-testimonial-slider>.jf-slider-wrapper{align-items:stretch}
.jf-testimonial-slider>.jf-slider-wrapper>.jf-slider-slide{height:auto;display:flex}
.jf-testimonial-slider>.jf-slider-wrapper>.jf-slider-slide>*{flex:1 1 auto;display:flex;flex-direction:column;justify-content:space-between}

/* Testimonial arrows sit outside the slider, but never past the screen edge: between tablet and
   wide desktop there isn't room, and the "next" arrow made the page scroll sideways. The gap left
   at each side is (100vw - 100%) / 2; wide screens keep the usual -20px / -30px. Phones keep theirs. */
@media (min-width:769px){
  .jf-service-page-template-wrapper .jf-testimonial-slider-wrapper .jf-slider-button-next{right:max(-20px,calc(30px - (100vw - 100%) / 2))!important}
  .jf-service-page-template-wrapper .jf-testimonial-slider-wrapper .jf-slider-button-prev{left:max(-30px,calc(30px - (100vw - 100%) / 2))!important}
}

/* The testimonial card: the plugin's own class instead of Bootstrap's d-flex/flex-column/
   justify-content-between/h-100, so a site's CSS written for those classes can't move the author
   off the bottom (Inspirica had justify-content-between set to flex-start !important). */
.jf-testimonial-slider .jf-testimonial-card{display:flex!important;flex-direction:column!important;justify-content:space-between!important;flex:1 1 auto;height:100%;box-sizing:border-box}

/* Testimonials outside the plugin's templates ([jf_testimonials], and old Swiper snippets moved onto
   this slider): the arrows, spacing and pre-start layout the templates get from jf-landing.css,
   which isn't loaded on the site's own pages. */
.jf-testimonials-shortcode{--jf-slider-navigation-size:20px;--jf-slider-theme-color:#D3D3D3}
.jf-testimonials-shortcode .jf-testimonial-slider-wrapper{position:relative}
.jf-testimonials-shortcode .jf-testimonial-slider:not(.jf-slider-initialized){overflow:hidden}
.jf-testimonials-shortcode .jf-testimonial-slider:not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex:0 0 100%;width:100%;margin-right:24px}
@media (min-width:768px){.jf-testimonials-shortcode .jf-testimonial-slider:not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex-basis:calc((100% - 48px)/3);width:calc((100% - 48px)/3)}}
.jf-testimonials-shortcode .jf-testimonial-slider-wrapper :is(.jf-slider-button-next,.jf-slider-button-prev){height:35px;width:35px;margin-top:-17px;border-radius:50%;transition:.2s;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10}
.jf-testimonials-shortcode .jf-testimonial-slider-wrapper :is(.jf-slider-button-next,.jf-slider-button-prev):hover{background:#F6F6F6}
.jf-testimonials-shortcode .jf-testimonial-slider-wrapper :is(.jf-slider-button-next,.jf-slider-button-prev):after{color:#4e4e4e;font-weight:bold;font-size:18px}
.jf-testimonials-shortcode .jf-testimonial-slider-wrapper .jf-slider-button-prev{left:max(-40px,calc(30px - (100vw - 100%) / 2))}
.jf-testimonials-shortcode .jf-testimonial-slider-wrapper .jf-slider-button-next{right:max(-30px,calc(30px - (100vw - 100%) / 2))}
@media (max-width:768px){
  .jf-testimonials-shortcode .jf-testimonial-slider{padding-inline:1rem}
  .jf-testimonials-shortcode .jf-testimonial-slider-wrapper .jf-slider-button-prev{left:-9px}
  .jf-testimonials-shortcode .jf-testimonial-slider-wrapper .jf-slider-button-next{right:0}
}

/* Case studies outside the plugin's templates ([jf_case_studies]): the layout the templates get from
   jf-landing.css. Image left, text right on desktop; stacked and centred on phones; dots below. */
.jf-case-studies-shortcode>.h2,.jf-case-studies-shortcode>h2,.jf-case-studies-shortcode>h3{text-align:center}
.jf-case-studies-shortcode .jf-case-studies-slider{overflow:hidden}
.jf-case-studies-shortcode .jf-case-studies-slider:not(.jf-slider-initialized)>.jf-slider-wrapper>.jf-slider-slide{flex:0 0 100%;width:100%;margin-right:20px}
.jf-case-studies-shortcode .jf-slider-slide{display:grid;gap:2rem;align-items:center;text-align:center;box-sizing:border-box}
.jf-case-studies-shortcode picture{display:block}
/* The whole image at its own proportions: case study images often carry text (a title card) that cropping cuts off. */
.jf-case-studies-shortcode picture img{display:block;width:100%;height:auto;border-radius:var(--rounded-large,24px)}
.jf-case-studies-shortcode .case-study-content h3{margin:0 0 1rem}
.jf-case-studies-shortcode .case-study-link{display:inline-flex!important;align-items:center;gap:8px;margin-top:.5rem;text-decoration:none;color:var(--accent-cta,inherit)!important;transition:.2s}
.jf-case-studies-shortcode .case-study-link:hover{color:var(--accent-cta-hover,inherit)!important}
.jf-case-studies-shortcode .case-study-link-arrow{flex:0 0 auto;transition:transform .2s ease}
.jf-case-studies-shortcode .case-study-link:hover .case-study-link-arrow{transform:translateX(4px)}
.jf-case-studies-shortcode :is(.jf-slider-button-prev,.jf-slider-button-next){display:none!important}
.jf-case-studies-shortcode .jf-slider-pagination{position:static;display:flex;justify-content:center;align-items:center;gap:10px;margin-top:32px}
.jf-case-studies-shortcode .jf-slider-pagination-bullet{width:10px;height:10px;margin:0!important;border-radius:999px;background:var(--accent-cta,#4e4e4e);opacity:.25;transition:width .35s ease,opacity .35s ease;cursor:pointer}
.jf-case-studies-shortcode .jf-slider-pagination-bullet-active{width:28px;opacity:1}
@media (min-width:768px){
  .jf-case-studies-shortcode .jf-slider-slide{grid-template-columns:1.2fr 1fr;text-align:left}
  .jf-case-studies-shortcode picture{padding:2rem 0}
}

/* Testimonial author and stars outside the templates (no Bootstrap, no jf-landing.css on the site's pages). */
.jf-testimonials-shortcode .stars{display:flex;gap:4px;margin-bottom:1rem}
.jf-testimonials-shortcode .testimonial-details{display:flex;align-items:center;gap:12px}
.jf-testimonials-shortcode .testimonial-details img{flex:0 0 auto;width:3.5rem;height:3.5rem;object-fit:cover;object-position:center top;border-radius:50%}
