/* ADIH – IMPACT 20 · independent, theme-safe Elementor widget */
.adi20 {
  --adi20-navy: #102b58;
  --adi20-red: #d62235;
  --adi20-border: #dce5f1;
  --adi20-body: #526076;
  --adi20-slider-height: 540px;
  --adi20-transition-ms: 750ms;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  container-type: inline-size;
  font-family: inherit;
  color: var(--adi20-navy);
}
.adi20 *, .adi20 *::before, .adi20 *::after {box-sizing: border-box;}
.adi20 button, .adi20 a { -webkit-tap-highlight-color: transparent; }

/* Responsive grid. Number of columns follows the actual quantity of cards. */
.adi20__cards {
  display: grid;
  grid-template-columns: repeat(var(--adi20-columns, 4), minmax(0, 1fr));
  gap: clamp(12px, 2.25vw, 32px);
  margin: 0 0 clamp(24px, 3vw, 38px) !important;
  padding: 0 !important;
  list-style: none !important;
  align-items: stretch;
}
.adi20__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  position: relative;
  min-width: 0;
  min-height: 196px;
  padding: 30px 20px 56px;
  border: 1px solid var(--adi20-border);
  border-radius: 19px;
  background: #fff;
  color: var(--adi20-navy);
  text-align: center;
  list-style: none !important;
  overflow: hidden;
  isolation: isolate;
  outline-offset: 4px;
  transition: transform .4s cubic-bezier(.2,.75,.28,1), border-color .35s ease, box-shadow .4s ease;
}
.adi20__card:focus-visible {outline: 2px solid var(--adi20-navy);}
.adi20__card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(ellipse at 50% -30%, rgba(16,43,88,.07), transparent 67%);
  opacity: 0;
  transition: opacity .35s ease;
}
.adi20__card-main {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  max-width: 100%;
  transition: transform .4s cubic-bezier(.2,.75,.28,1);
}
.adi20__card-eyebrow {
  display: block;
  color: #5c6676;
  font-size: clamp(14px, 1.15vw, 17px);
  font-weight: 450;
  line-height: 1.35;
}
.adi20__card-title {
  display: block;
  color: var(--adi20-navy);
  font-size: clamp(17px, 1.46vw, 23px);
  font-weight: 750;
  line-height: 1.25;
  letter-spacing: -.025em;
  overflow-wrap: anywhere;
  text-wrap: balance;
}
.adi20__card-desc {
  display: block;
  position: absolute;
  bottom: 41px;
  left: 15px;
  right: 15px;
  margin: 0 !important;
  font-size: clamp(11px, .93vw, 13px);
  line-height: 1.36;
  font-weight: 400;
  color: var(--adi20-body);
  opacity: 0;
  transform: translateY(10px);
  transition: opacity .32s ease, transform .4s ease;
  pointer-events: none;
}
.adi20__card-accent {
  display: flex;
  position: absolute;
  width: 108px;
  height: 4px;
  bottom: 29px;
  left: calc(50% - 54px);
  overflow: hidden;
  border-radius: 10px;
  transition: width .35s ease, left .35s ease, bottom .35s ease;
}
.adi20__card-accent i {display: block;flex: 1;}
.adi20__card-accent i:first-child {background: var(--adi20-red);}
.adi20__card-accent i:last-child {background: #1457b2;}
.adi20__card:hover .adi20__card-desc,
.adi20__card:focus-visible .adi20__card-desc {opacity: 1;transform: translateY(0);}
.adi20__card:hover .adi20__card-main,
.adi20__card:focus-visible .adi20__card-main {transform: translateY(-11px);}
.adi20__card:hover .adi20__card-accent,
.adi20__card:focus-visible .adi20__card-accent {width: 132px;left: calc(50% - 66px);}
.adi20--hover-lift .adi20__card:hover,
.adi20--hover-lift .adi20__card:focus-visible {
  transform: translateY(-6px);
  border-color: #bdcee5;
  box-shadow: 0 17px 36px rgba(15,42,83,.09);
}
.adi20--hover-outline .adi20__card:hover,
.adi20--hover-outline .adi20__card:focus-visible {border-color: var(--adi20-navy);box-shadow: 0 0 0 1px var(--adi20-navy);}
.adi20--hover-subtle .adi20__card:hover,
.adi20--hover-subtle .adi20__card:focus-visible {box-shadow: 0 14px 32px rgba(15,42,83,.075);}
.adi20--hover-subtle .adi20__card:hover::before,
.adi20--hover-subtle .adi20__card:focus-visible::before {opacity: 1;}

/* Slider: photographs are uploaded by the editor; the initial gradient panels
   are intentional neutral placeholders, NOT AI-generated representations. */
.adi20__slider {
  display: block;
  position: relative;
  width: 100%;
  height: var(--adi20-slider-height, 540px);
  min-height: 280px;
  max-width: 100%;
  border-radius: clamp(16px, 1.8vw, 24px);
  overflow: hidden;
  isolation: isolate;
  color: #fff;
  background: var(--adi20-navy);
  outline-offset: 5px;
  touch-action: pan-y;
}
.adi20__slider:focus-visible {outline: 2px solid var(--adi20-navy);}
.adi20__slides {position:absolute;inset:0;overflow:hidden;}
.adi20__slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  display: block;
  visibility: hidden;
  opacity: 0;
  z-index: 0;
  pointer-events: none;
  transform: none;
  clip-path: inset(0 0 0 0);
  transition: opacity var(--adi20-transition-ms) ease, transform var(--adi20-transition-ms) cubic-bezier(.22,.8,.24,1), clip-path var(--adi20-transition-ms) cubic-bezier(.22,.8,.24,1);
  background: #102b58;
}
.adi20__slide--palette-0 {background: radial-gradient(ellipse at 72% 28%, #356496 0, transparent 44%),linear-gradient(110deg,#091f42,#173b72 63%,#2b4e79);}
.adi20__slide--palette-1 {background: radial-gradient(ellipse at 78% 18%, #2b6989 0, transparent 40%),linear-gradient(130deg,#092e4b,#11486c 63%,#0a294b);}
.adi20__slide--palette-2 {background: radial-gradient(ellipse at 85% 67%, #535b8c 0, transparent 48%),linear-gradient(115deg,#10264e,#294e83 55%,#1b2b59);}
.adi20__slide--palette-3 {background: radial-gradient(ellipse at 77% 10%, #3c688d 0, transparent 46%),linear-gradient(130deg,#0a2d4f,#155070 70%,#132f5b);}
.adi20__slide--palette-4 {background: radial-gradient(ellipse at 70% 80%, #4a547a 0, transparent 45%),linear-gradient(110deg,#121f43,#243a6e 68%,#0b2f53);}
.adi20__slide::before {
  content: '';
  position: absolute;
  inset: -40%;
  z-index: 0;
  opacity: .22;
  background: repeating-linear-gradient(128deg, transparent 0, transparent 95px, rgba(255,255,255,.13) 96px,transparent 97px);
  transform: rotate(1deg);
}
.adi20__slide-image {display:block;position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:center center;max-width:none;}
.adi20--image-top .adi20__slide-image {object-position:center top;}
.adi20--image-bottom .adi20__slide-image {object-position:center bottom;}
.adi20__slide-shade {position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(4,20,44,.8) 0%,rgba(6,25,53,.56) 46%,rgba(5,22,48,.17) 100%),linear-gradient(0deg,rgba(4,18,40,.37),transparent 58%);}
.adi20__slide.is-active {opacity:1;visibility:visible;z-index:3;pointer-events:auto;transform:none;clip-path:inset(0);}
.adi20__slide.is-leaving {visibility:visible;z-index:2;pointer-events:none;opacity:0;}
.adi20__slide.is-preparing {visibility:visible;z-index:3;pointer-events:none;transition:none !important;opacity:0;}
.adi20__slider[data-motion="horizontal"] .adi20__slide.is-preparing {transform:translate3d(9%,0,0);}
.adi20__slider[data-motion="horizontal"] .adi20__slide.is-leaving {transform:translate3d(-7%,0,0);}
.adi20__slider[data-motion="vertical"] .adi20__slide.is-preparing {transform:translate3d(0,10%,0);}
.adi20__slider[data-motion="vertical"] .adi20__slide.is-leaving {transform:translate3d(0,-7%,0);}
.adi20__slider[data-motion="zoom"] .adi20__slide.is-preparing {transform:scale(1.14);}
.adi20__slider[data-motion="zoom"] .adi20__slide.is-leaving {transform:scale(.96);}
.adi20__slider[data-motion="wipe"] .adi20__slide.is-preparing {opacity:1;clip-path:inset(0 100% 0 0);}
.adi20__slider[data-motion="wipe"] .adi20__slide.is-leaving {opacity:1;}

.adi20__slide-content {
  position:absolute;
  left:clamp(24px,5.2vw,82px);
  right:clamp(24px,7vw,120px);
  bottom:clamp(100px,9.7vw,125px);
  z-index:4;
  max-width:820px;
  text-align:left;
  text-shadow:0 1px 14px rgba(0,0,0,.13);
}
.adi20__slide-tagline {display:flex;align-items:center;gap:11px;font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.9);margin-bottom:20px;}
.adi20__slide-tagline span {width:26px;height:3px;background:var(--adi20-red);border-radius:3px;flex:0 0 auto;}
.adi20__slide-heading {
  color:#fff !important;
  font-family:inherit;
  font-size:clamp(30px,4.35vw,66px);
  font-weight:760;
  line-height:1.075;
  letter-spacing:-.04em;
  margin:0 0 15px !important;
  padding:0;
  text-wrap:balance;
  overflow-wrap:break-word;
  text-transform:none;
}
.adi20__slide-description {margin:0 !important;max-width:670px;font-size:clamp(15px,1.3vw,19px);font-weight:400;line-height:1.5;color:rgba(255,255,255,.91);}
.adi20__slide-link {display:inline-flex;align-items:center;gap:16px;margin-top:21px;padding:10px 17px;border:1px solid rgba(255,255,255,.65);border-radius:100px;color:#fff !important;text-decoration:none !important;background:rgba(255,255,255,.07);font-size:14px;line-height:1.3;font-weight:650;transition:background .2s ease,transform .2s ease;}
.adi20__slide-link:hover,.adi20__slide-link:focus-visible {background:rgba(255,255,255,.22);transform:translateY(-2px);color:#fff !important;}
.adi20__slide-link span {font-size:18px;line-height:1;}

.adi20__controlbar {
  display:flex;
  justify-content:space-between;
  align-items:center;
  position:absolute;
  z-index:7;
  left:clamp(20px,4vw,60px);
  right:clamp(20px,4vw,60px);
  bottom:clamp(20px,2.9vw,40px);
  gap:20px;
  pointer-events:none;
}
.adi20__controlbar-left,.adi20__controlbar-right {display:flex;align-items:center;gap:18px;min-width:0;pointer-events:auto;}
.adi20__counter {display:inline-flex;align-items:center;gap:9px;color:rgba(255,255,255,.78);white-space:nowrap;font-size:14px;letter-spacing:.05em;font-variant-numeric:tabular-nums;}
.adi20__counter strong {font-weight:800;font-size:16px;color:#fff;}
.adi20__counter-separator {opacity:.42;}
.adi20__dots {display:flex;align-items:center;gap:7px;max-width:180px;flex-wrap:wrap;}
.adi20__dot {display:block;appearance:none;-webkit-appearance:none;min-width:0;width:7px;height:7px;padding:0 !important;margin:0 !important;border:0 !important;border-radius:8px;background:rgba(255,255,255,.45) !important;cursor:pointer;transition:width .3s ease,background .3s ease;box-shadow:none !important;}
.adi20__dot.is-current {width:25px;background:#fff !important;}
.adi20__dot:hover {background:#fff !important;}
.adi20__dot:focus-visible {outline:2px solid #fff;outline-offset:4px;}
.adi20__control {
  display:inline-flex;align-items:center;justify-content:center;
  width:42px;height:42px;flex:0 0 42px;
  appearance:none;-webkit-appearance:none;
  padding:0 !important;margin:0 !important;
  border:1px solid rgba(255,255,255,.55) !important;
  border-radius:50% !important;
  color:#fff !important;background:rgba(12,26,52,.12) !important;
  cursor:pointer;
  box-shadow:none !important;
  backdrop-filter:blur(6px);
  transition:transform .25s ease,background .25s ease,border-color .25s ease;
}
.adi20__control svg {display:block;width:19px;height:19px;fill:none;}
.adi20__control:hover {transform:translateY(-2px);background:rgba(255,255,255,.22) !important;border-color:#fff !important;}
.adi20__control:focus-visible {outline:2px solid #fff;outline-offset:3px;}
.adi20__pause .adi20__play-icon {display:none;}
.adi20__pause[aria-pressed="true"] .adi20__pause-icon {display:none;}
.adi20__pause[aria-pressed="true"] .adi20__play-icon {display:block;}

@container (max-width: 860px) {
  .adi20__cards {grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;}
  .adi20__card {min-height:191px;}
  .adi20__card-title {font-size:20px;}
  .adi20__card-desc {font-size:12px;}
  .adi20__slide-heading {font-size:clamp(29px,5.8vw,46px);}
  .adi20__slide-content {right:30px;}
}
@container (max-width: 480px) {
  .adi20__cards {grid-template-columns:1fr;gap:11px;margin-bottom:23px !important;}
  .adi20__card {min-height:150px;padding:24px 20px 42px;border-radius:15px;}
  .adi20__card-eyebrow {font-size:14px;}
  .adi20__card-title {font-size:19px;}
  .adi20__card-desc {font-size:11px;bottom:32px;}
  .adi20__card-accent {bottom:18px;height:3px;}
  .adi20__slide-content {left:22px;right:22px;bottom:116px;}
  .adi20__slide-heading {font-size:clamp(27px,8cqw,38px);margin-bottom:12px !important;}
  .adi20__slide-tagline {font-size:10px;margin-bottom:14px;letter-spacing:.1em;}
  .adi20__slide-description {font-size:14px;line-height:1.42;}
  .adi20__controlbar {left:18px;right:18px;bottom:23px;gap:10px;}
  .adi20__controlbar-left,.adi20__controlbar-right {gap:9px;}
  .adi20__control {height:36px;width:36px;flex-basis:36px;}
  .adi20__counter {font-size:11px;gap:5px;}
  .adi20__counter strong {font-size:13px;}
  .adi20__dots {gap:5px;max-width:105px;}
  .adi20__dot {width:6px;height:6px;}
  .adi20__dot.is-current {width:18px;}
}
/* Device without hover: descriptions are not hidden behind hover-only interaction. */
@media (hover:none), (pointer:coarse) {
  .adi20__card {padding-bottom:61px;}
  .adi20__card-main {transform:translateY(-7px);}
  .adi20__card-desc {opacity:1;transform:none;}
}
@media (prefers-reduced-motion:reduce) {
  .adi20__card,.adi20__card::before,.adi20__card-main,.adi20__card-desc,.adi20__card-accent,
  .adi20__slide,.adi20__dot,.adi20__control,.adi20__slide-link {transition:none !important;animation:none !important;}
  .adi20__card:hover,.adi20__card:focus-visible {transform:none !important;}
}

/* Graceful fallback in old browsers without CSS container queries. */
@supports not (container-type: inline-size) {
  @media (max-width: 900px) {
    .adi20__cards {grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;}
    .adi20__slide-heading {font-size:clamp(29px,5.8vw,46px);}
  }
  @media (max-width: 540px) {
    .adi20__cards {grid-template-columns:1fr;gap:11px;}
    .adi20__slide-content {left:22px;right:22px;bottom:116px;}
    .adi20__slide-heading {font-size:clamp(27px,8vw,38px);}
  }
}


/*
 * v1.0.2 — Elementor mobile: real height, no phantom whitespace.
 * The gallery has a real fixed height; the widget and its owning layout must
 * shrink to that height instead of stretching to a full-height flex container.
 * This correction is opt-in per widget using mobile_remove_space (default on).
 */
@media screen and (max-width: 767px) {
  /* First fix the flex item itself: height:auto alone does not stop stretch. */
  .elementor .elementor-widget-adih_impact20:has(.adi20--mobile-compact),
  .elementor-widget-adih_impact20:has(.adi20--mobile-compact) {
    display: block !important;
    align-self: flex-start !important;
    flex-grow: 0 !important;
    flex-shrink: 0 !important;
    flex-basis: auto !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    height: fit-content !important;
    min-height: 0 !important;
    max-height: none !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    --container-widget-flex-grow: 0;
    --container-widget-height: auto;
    --flex-grow: 0;
  }
  /* Also guard against a theme/Elementor setting the widget inner wrapper
     to 100% height, or giving it a flex-basis equal to the parent height. */
  .elementor-widget-adih_impact20:has(.adi20--mobile-compact) > .elementor-widget-container,
  .elementor-widget-adih_impact20:has(.adi20--mobile-compact) > .elementor-widget-container > .adi20 {
    display: block !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    height: fit-content !important;
    min-height: 0 !important;
    max-height: none !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
  }
  .adi20.adi20--mobile-compact {
    display: flow-root !important;
    height: fit-content !important;
    min-height: 0 !important;
    max-height: none !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
  }
  .adi20.adi20--mobile-compact > .adi20__slider {
    display: block;
    height: var(--adi20-slider-height, 420px);
    min-height: 280px;
    margin-bottom: 0 !important;
  }
  /* Containers in both Elementor Flexbox and old Section layouts. Reduce
     excess height only if this is the final content widget of that container. */
  .elementor .e-con:has(> .elementor-widget-adih_impact20:last-child .adi20--mobile-compact),
  .elementor .e-con:has(> .e-con-inner:last-child > .elementor-widget-adih_impact20:last-child .adi20--mobile-compact),
  .elementor .e-con-inner:has(> .elementor-widget-adih_impact20:last-child .adi20--mobile-compact),
  .elementor .elementor-widget-wrap:has(> .elementor-widget-adih_impact20:last-child .adi20--mobile-compact),
  .adi20-mobile-fit-ancestor {
    height: fit-content !important;
    min-height: 0 !important;
    max-height: none !important;
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
    align-content: flex-start !important;
    justify-content: flex-start !important;
    --min-height: 0px;
    --padding-bottom: 0px;
  }
  /* A direct layout child may also be stretched by an outer container. */
  .adi20-mobile-fit-ancestor {
    align-self: flex-start !important;
    flex-grow: 0 !important;
    flex-shrink: 0 !important;
    width: 100% !important;
  }
}
