/* Nova School Slider Pro — v2.1.0
   KEY FIX: height is on .nsp-inner (not on .nsp-slide).
   Slides use position:absolute;inset:0 so they fill 100%
   of the .nsp-inner container naturally.
*/

/* ── Divi full-width breakout ───────────────────── */
.nsp-fw {
  width: 100vw;
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  max-width: 100vw !important;
}

/* Divi z-index: keep arrows/dots above Divi elements */
.et_pb_section .nsp-slider-wrap .nsp-arrows,
.et_pb_section .nsp-slider-wrap .nsp-dots,
.et_pb_section .nsp-slider-wrap .nsp-counter,
.et_pb_section .nsp-slider-wrap .nsp-progress-bar {
  z-index: 9999 !important;
}

/* ── Outer wrapper ───────────────────────────────── */
.nsp-slider-wrap {
  display: block;
  position: relative;
  line-height: 0; /* kills inline-block gap */
}

/* ── Inner — THIS carries the height ────────────── */
.nsp-inner {
  position: relative;
  width: 100%;
  overflow: hidden;
  background: #050810;
  /* height is set per-instance via inline <style> above */
}

/* ── Slide ───────────────────────────────────────── */
.nsp-slide {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;    /* fills .nsp-inner */
  overflow: hidden;
  opacity: 0;
  z-index: 0;
  will-change: opacity;
}

/* The active (first) slide sits in normal flow to give height to parent */
.nsp-slide--on {
  position: relative; /* <-- critical: first slide establishes height */
  z-index: 1;
  opacity: 1;
}

/* ── Background image layer ──────────────────────── */
.nsp-bg {
  position: absolute;
  top: -8%;
  left: -8%;
  right: -8%;
  bottom: -8%;    /* oversized so zoom never shows edges */
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  transform: scale(1);
  will-change: transform;
}

/* ── Scrim / dark overlay ────────────────────────── */
.nsp-scrim {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1;
  pointer-events: none;
}

/* ── Full-slide clickable link ───────────────────── */
.nsp-full-link {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 2;
  display: block;
}

/* ── Text content block ──────────────────────────── */
.nsp-content {
  position: absolute;
  z-index: 5;
  bottom: 0;
  padding: 44px 52px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  gap: 10px;
  line-height: normal;
}

.nsp-pos--left {
  left: 0;
  text-align: left;
  -webkit-box-align: start;
  -ms-flex-align: start;
  align-items: flex-start;
}

.nsp-pos--right {
  right: 0;
  text-align: right;
  -webkit-box-align: end;
  -ms-flex-align: end;
  align-items: flex-end;
  max-width: 520px;
}

.nsp-pos--center {
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
  text-align: center;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
}

/* ── Staggered entrance animations ──────────────── */
.nsp-eyebrow,
.nsp-heading,
.nsp-rule,
.nsp-desc,
.nsp-btns {
  opacity: 0;
  -webkit-transform: translateY(20px);
          transform: translateY(20px);
  -webkit-transition: opacity 0.72s ease,
                      -webkit-transform 0.72s cubic-bezier(0.4, 0, 0.2, 1);
          transition: opacity 0.72s ease,
                      transform 0.72s cubic-bezier(0.4, 0, 0.2, 1);
}

.nsp-slide--on .nsp-eyebrow { opacity: 1; -webkit-transform: none; transform: none; -webkit-transition-delay: 0.10s; transition-delay: 0.10s; }
.nsp-slide--on .nsp-heading { opacity: 1; -webkit-transform: none; transform: none; -webkit-transition-delay: 0.24s; transition-delay: 0.24s; }
.nsp-slide--on .nsp-rule    { opacity: 1; -webkit-transform: scaleX(1); transform: scaleX(1); -webkit-transition-delay: 0.40s; transition-delay: 0.40s; }
.nsp-slide--on .nsp-desc    { opacity: 1; -webkit-transform: none; transform: none; -webkit-transition-delay: 0.54s; transition-delay: 0.54s; }
.nsp-slide--on .nsp-btns    { opacity: 1; -webkit-transform: none; transform: none; -webkit-transition-delay: 0.66s; transition-delay: 0.66s; }

/* ── Typography ──────────────────────────────────── */
.nsp-eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  line-height: 1.4;
}

.nsp-heading {
  margin: 0;
  line-height: 1.1;
  letter-spacing: -0.02em;
}

.nsp-rule {
  height: 2.5px;
  border-radius: 2px;
  -webkit-transform: scaleX(0);
          transform: scaleX(0);
  -webkit-transform-origin: left;
          transform-origin: left;
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.nsp-pos--right  .nsp-rule { -webkit-transform-origin: right;  transform-origin: right;  -ms-flex-item-align: end;    align-self: flex-end; }
.nsp-pos--center .nsp-rule { -webkit-transform-origin: center; transform-origin: center; -ms-flex-item-align: center; align-self: center; }

.nsp-desc {
  margin: 0;
  line-height: 1.70;
}

/* ── Buttons ──────────────────────────────────────── */
.nsp-btns {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  gap: 10px;
  margin-top: 4px;
}
.nsp-pos--right  .nsp-btns { -webkit-box-pack: end;    -ms-flex-pack: end;    justify-content: flex-end; }
.nsp-pos--center .nsp-btns { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; }

.nsp-btn {
  display: inline-block;
  padding: 12px 26px;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
  border-radius: 4px;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  -webkit-transition: -webkit-filter 0.18s, -webkit-transform 0.15s;
          transition: filter 0.18s, transform 0.15s;
}
.nsp-btn:hover,
.nsp-btn:focus-visible {
  -webkit-filter: brightness(1.13);
          filter: brightness(1.13);
  -webkit-transform: translateY(-2px);
          transform: translateY(-2px);
  text-decoration: none;
}

/* ── Circle / blob layout ─────────────────────────── */
.nsp-circle {
  position: absolute;
  z-index: 5;
  border-radius: 50%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
      -ms-flex-direction: column;
          flex-direction: column;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  padding: 10%;
  top: 50%;
  opacity: 0;
  -webkit-transform: translateY(-50%) scale(0.78);
          transform: translateY(-50%) scale(0.78);
  -webkit-transition: opacity 0.85s 0.15s ease,
                      -webkit-transform 0.85s 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
          transition: opacity 0.85s 0.15s ease,
                      transform 0.85s 0.15s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.nsp-circle--left  { left: 52px; }
.nsp-circle--right { right: 52px; }
.nsp-slide--on .nsp-circle {
  opacity: 1;
  -webkit-transform: translateY(-50%) scale(1);
          transform: translateY(-50%) scale(1);
}
.nsp-circle-eyebrow {
  display: block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.88);
  margin-bottom: 10px;
}
.nsp-circle-h {
  margin: 0;
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: #fff;
}

/* ── Navigation arrows ────────────────────────────── */
.nsp-arrows {
  position: absolute;
  bottom: 24px;
  right: 24px;
  z-index: 20;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 8px;
}
.nsp-arr {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  border: 1px solid rgba(255,255,255,0.22);
  cursor: pointer;
  padding: 0;
  outline: none;
  -webkit-transition: background-color 0.2s, -webkit-transform 0.18s;
          transition: background-color 0.2s, transform 0.18s;
}
.nsp-arr:hover { background-color: rgba(255,255,255,0.22); -webkit-transform: scale(1.1); transform: scale(1.1); }
.nsp-arr:focus-visible { outline: 3px solid rgba(255,255,255,0.6); outline-offset: 2px; }

/* ── Dots ────────────────────────────────────────── */
.nsp-dots {
  position: absolute;
  bottom: 28px;
  left: 50%;
  -webkit-transform: translateX(-50%);
          transform: translateX(-50%);
  z-index: 20;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  gap: 7px;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
}
.nsp-dot {
  border: none;
  cursor: pointer;
  padding: 0;
  outline: none;
  -webkit-transition: background-color 0.3s, width 0.3s, border-radius 0.3s;
          transition: background-color 0.3s, width 0.3s, border-radius 0.3s;
}
.nsp-dot:focus-visible { outline: 2px solid rgba(255,255,255,0.7); }

.nsp-dots--pill   .nsp-dot     { width: 7px;  height: 7px; border-radius: 50%; }
.nsp-dots--pill   .nsp-dot--on { width: 22px; border-radius: 3px; }
.nsp-dots--circle .nsp-dot     { width: 8px;  height: 8px; border-radius: 50%; }
.nsp-dots--circle .nsp-dot--on { -webkit-transform: scale(1.4); transform: scale(1.4); }
.nsp-dots--line   .nsp-dot     { width: 24px; height: 3px; border-radius: 2px; }
.nsp-dots--line   .nsp-dot--on { width: 42px; }

/* ── Slide counter ────────────────────────────────── */
.nsp-counter {
  position: absolute;
  top: 20px;
  right: 20px;
  z-index: 20;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.38);
  line-height: 1;
}

/* ── Progress bar ─────────────────────────────────── */
.nsp-progress-bar {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 2px;
  width: 0;
  z-index: 25;
  -webkit-transition: width 5s linear;
          transition: width 5s linear;
}

/* ── Responsive ───────────────────────────────────── */
@media (max-width: 980px) {
  .nsp-heading  { font-size: clamp(22px, 4.5vw, 40px) !important; }
  .nsp-content  { padding: 28px 28px; }
  .nsp-circle--left  { left: 20px; }
  .nsp-circle--right { right: 20px; }
}

@media (max-width: 767px) {
  .nsp-heading  { font-size: clamp(20px, 7vw, 30px) !important; }
  .nsp-content  { padding: 20px 16px; max-width: 100% !important; }
  .nsp-desc     { font-size: 12.5px !important; }
  .nsp-arrows   { display: none; }
  .nsp-counter  { display: none; }
  .nsp-btns     { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; }
  .nsp-btn      { text-align: center; }
  .nsp-circle   { width: 66vw !important; height: 66vw !important; left: 10px !important; right: auto !important; }
}

/* ── Accessibility: reduced motion ───────────────── */
@media (prefers-reduced-motion: reduce) {
  .nsp-bg {
    -webkit-transition: none !important;
    transition: none !important;
    -webkit-transform: none !important;
    transform: none !important;
  }
  .nsp-slide {
    -webkit-transition: none !important;
    transition: none !important;
    opacity: 1 !important;
  }
  .nsp-eyebrow, .nsp-heading, .nsp-rule, .nsp-desc, .nsp-btns, .nsp-circle, .nsp-btn {
    opacity: 1 !important;
    -webkit-transform: none !important;
    transform: none !important;
    -webkit-transition: none !important;
    transition: none !important;
  }
  .nsp-slide--on .nsp-rule {
    -webkit-transform: scaleX(1) !important;
    transform: scaleX(1) !important;
  }
}
