/* Landing page — greeting preloader + circle reveal */



body.lp-preloader-active,
body.lp-page-hidden {
  overflow: hidden;
  background: #152a4a;
}



body.lp-preloader-active #lp-page,
body.lp-page-hidden #lp-page {
  display: none !important;
}

body.lp-preloader-active > #lp-welcome,
body.lp-page-hidden > #lp-welcome,
body.lp-welcome-active > #lp-welcome {
  display: flex;
}

/* ── Welcome screen (after preloader) ─────────────────────────────── */

.lp-welcome {
  --lp-cine-ease: cubic-bezier(0.16, 1, 0.3, 1);
  position: fixed;
  inset: 0;
  z-index: 99990;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: radial-gradient(ellipse 100% 80% at 50% 42%, #1a365d 0%, #152a4a 48%, #0c1424 100%);
  opacity: 1;
  transition: opacity 0.48s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: auto;
}

.lp-welcome.is-exiting {
  opacity: 0;
  pointer-events: none;
}

.lp-welcome.is-exiting .lp-welcome__stage {
  transform: scale(0.98);
  opacity: 0;
}

.lp-welcome__vignette {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(ellipse 72% 62% at 50% 48%, transparent 0%, rgba(0, 0, 0, 0.28) 100%);
}

/* Diagonal swoosh / window grid */
.lp-welcome__bg-grid {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}

.lp-welcome__bg-grid::before {
  content: '';
  position: absolute;
  left: -10%;
  top: -12%;
  width: 55%;
  height: 125%;
  transform: rotate(-7deg);
  opacity: 0.16;
  filter: blur(1.5px);
  background:
    repeating-linear-gradient(
      90deg,
      rgba(144, 205, 244, 0.08) 0,
      rgba(144, 205, 244, 0.08) 1px,
      transparent 1px,
      transparent 56px
    ),
    repeating-linear-gradient(
      0deg,
      rgba(144, 205, 244, 0.06) 0,
      rgba(144, 205, 244, 0.06) 1px,
      transparent 1px,
      transparent 56px
    );
  mask-image: linear-gradient(108deg, rgba(0, 0, 0, 0.9) 0%, transparent 88%);
}

.lp-welcome__bg-grid::after {
  content: '';
  position: absolute;
  left: 3%;
  top: 8%;
  width: 36%;
  height: 74%;
  transform: rotate(-4deg);
  border: 1px solid rgba(144, 205, 244, 0.07);
  border-radius: 2px;
  box-shadow: 20px 28px 56px rgba(0, 0, 0, 0.4);
  opacity: 0.3;
  filter: blur(0.5px);
  mask-image: linear-gradient(118deg, black 15%, transparent 92%);
}

/* Soft smoke swooshes */
.lp-welcome__bg-smoke {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}

.lp-welcome__smoke {
  position: absolute;
  border-radius: 50%;
  filter: blur(48px);
  animation: lp-welcome-smoke-drift 18s ease-in-out infinite;
}

.lp-welcome__smoke--a {
  right: -2%;
  top: 14%;
  width: min(380px, 46vw);
  height: min(380px, 46vw);
  background: radial-gradient(circle, rgba(144, 205, 244, 0.18) 0%, transparent 72%);
  opacity: 0.4;
}

.lp-welcome__smoke--b {
  right: 10%;
  bottom: 20%;
  width: min(260px, 32vw);
  height: min(260px, 32vw);
  background: radial-gradient(circle, rgba(255, 255, 255, 0.08) 0%, transparent 70%);
  opacity: 0.3;
  animation-delay: -6s;
}

.lp-welcome__inner {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 100%;
  padding: clamp(1rem, 4vh, 2rem) clamp(0.75rem, 3vw, 1.5rem);
}

.lp-welcome__stage {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0;
  transition:
    transform 0.48s var(--lp-cine-ease),
    opacity 0.48s ease;
}

.lp-welcome.is-entering .lp-welcome__stage {
  opacity: 0;
  transform: translateY(10px);
}

.lp-welcome:not(.is-entering) .lp-welcome__stage {
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 0.7s var(--lp-cine-ease),
    transform 0.7s var(--lp-cine-ease);
}

.lp-welcome__title-line {
  margin: 0 0 1.25rem;
  font-family: 'IBM Plex Sans', Inter, system-ui, sans-serif;
  font-size: clamp(0.8125rem, 1.8vw, 0.9375rem);
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(248, 250, 252, 0.65);
  opacity: 0;
  transform: translateY(8px);
}

.lp-welcome:not(.is-entering) .lp-welcome__title-line {
  animation: lp-welcome-fade-up 0.7s var(--lp-cine-ease) 0.08s forwards;
}

.lp-welcome__mark-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 0 1.15rem;
  opacity: 0;
  transform: translateY(10px) scale(0.96);
}

.lp-welcome:not(.is-entering) .lp-welcome__mark-wrap {
  animation: lp-welcome-mark-in 0.8s var(--lp-cine-ease) 0.18s forwards;
}

.lp-welcome__mark-shine {
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: 50%;
  overflow: hidden;
  pointer-events: none;
}

.lp-welcome__mark-shine::after {
  content: '';
  position: absolute;
  inset: -20%;
  background: linear-gradient(
    115deg,
    transparent 40%,
    rgba(255, 255, 255, 0.22) 50%,
    transparent 60%
  );
  transform: translateX(-130%) skewX(-16deg);
  opacity: 0;
}

.lp-welcome:not(.is-entering) .lp-welcome__mark-shine::after {
  animation: lp-welcome-shine 1.35s var(--lp-cine-ease) 0.75s forwards;
}

.lp-welcome__mark {
  position: relative;
  z-index: 1;
  display: block;
  width: clamp(5.5rem, 16vw, 7.5rem);
  height: clamp(5.5rem, 16vw, 7.5rem);
  border-radius: 50%;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.28);
}

.lp-welcome__wordmark {
  margin: 0;
  font-family: 'IBM Plex Sans', Inter, system-ui, sans-serif;
  font-size: clamp(2rem, 7vw, 3.25rem);
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1;
  color: #ffffff;
  opacity: 0;
  transform: translateY(10px);
}

.lp-welcome:not(.is-entering) .lp-welcome__wordmark {
  animation: lp-welcome-fade-up 0.75s var(--lp-cine-ease) 0.3s forwards;
}

.lp-welcome__tagline {
  margin: 0.65rem 0 0;
  font-family: 'IBM Plex Sans', Inter, system-ui, sans-serif;
  font-size: clamp(0.875rem, 2.2vw, 1.125rem);
  font-weight: 700;
  letter-spacing: 0.06em;
  color: #d4a017;
  opacity: 0;
  transform: translateY(10px);
}

.lp-welcome:not(.is-entering) .lp-welcome__tagline {
  animation: lp-welcome-fade-up 0.75s var(--lp-cine-ease) 0.42s forwards;
}

@keyframes lp-welcome-fade-up {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes lp-welcome-mark-in {
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes lp-welcome-shine {
  0% {
    opacity: 0;
    transform: translateX(-130%) skewX(-16deg);
  }
  20% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateX(130%) skewX(-16deg);
  }
}

@keyframes lp-welcome-smoke-drift {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-10px, -6px); }
}

@media (prefers-reduced-motion: reduce) {
  .lp-welcome,
  .lp-welcome__stage {
    transition-duration: 0.12s;
  }

  .lp-welcome.is-exiting .lp-welcome__stage {
    transform: none;
  }

  .lp-welcome.is-entering .lp-welcome__stage,
  .lp-welcome:not(.is-entering) .lp-welcome__stage {
    opacity: 1;
    transform: none;
  }

  .lp-welcome__title-line,
  .lp-welcome__mark-wrap,
  .lp-welcome__wordmark,
  .lp-welcome__tagline {
    opacity: 1;
    transform: none;
    animation: none !important;
  }

  .lp-welcome__mark-shine::after,
  .lp-welcome__smoke {
    animation: none !important;
  }
}

.lp-preloader {
  --lp-preloader-greet-ms: 3200ms;
  position: fixed;
  inset: 0;
  z-index: 100000;

  overflow: hidden;

  pointer-events: auto;

  background: #ffffff;

  opacity: 1;

  transition: opacity 0.42s cubic-bezier(0.4, 0, 0.2, 1);

}



.lp-preloader.is-exiting {

  opacity: 0;

  pointer-events: none;

}



.lp-preloader-surface {

  position: absolute;

  inset: 0;

  z-index: 1;

  background: #ffffff;

}



.lp-preloader-circle {

  position: absolute;

  left: 50%;

  bottom: 0;

  z-index: 2;

  width: 168vmax;

  height: 168vmax;

  border-radius: 50%;

  background: linear-gradient(155deg, #2c5282 0%, #1a365d 52%, #152a4a 100%);

  opacity: 0;

  transform: translate3d(-50%, 120%, 0);

  will-change: transform, opacity;

  transition: none;

  pointer-events: none;

  backface-visibility: hidden;

}



.lp-preloader.is-wiping .lp-preloader-circle {

  opacity: 1;

  transform: translate3d(-50%, -50%, 0);

  transition:
    transform 0.72s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.36s cubic-bezier(0.4, 0, 0.2, 1);

}



.lp-preloader-content {

  position: absolute;

  inset: 0;

  z-index: 10;

  display: flex;

  flex-direction: column;

  align-items: center;

  justify-content: center;

  gap: 0.75rem;

  padding: 0 1.5rem;

  pointer-events: none;

}



.lp-preloader-logo {
  display: block;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  box-shadow: 0 2px 10px rgba(26, 54, 93, 0.12);
  transition: opacity 0.3s ease;
}

.lp-preloader.is-wiping .lp-preloader-logo,
.lp-preloader.is-wiping .lp-preloader-word {
  opacity: 0;
  transition: opacity 0.28s ease;
}



.lp-preloader-word {

  margin: 0;

  min-height: 1.35em;

  text-align: center;

  font-family: 'IBM Plex Sans', 'Inter', system-ui, sans-serif;

  font-size: clamp(1.875rem, 5.5vw, 2.75rem);

  font-weight: 600;

  letter-spacing: -0.03em;

  color: #1a365d;

  opacity: 1;

  transform: translateY(0);

  transition:
    opacity 0.42s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.42s cubic-bezier(0.22, 1, 0.36, 1);

}



.lp-preloader-word.is-out {

  opacity: 0;

  transform: translateY(10px);

}



.lp-preloader-word.is-in {

  animation: lp-preloader-in 0.42s cubic-bezier(0.22, 1, 0.36, 1) forwards;

}



@keyframes lp-preloader-in {

  from {

    opacity: 0;

    transform: translateY(-10px);

  }

  to {

    opacity: 1;

    transform: translateY(0);

  }

}



.lp-preloader-progress {

  position: absolute;

  left: 50%;

  bottom: 12vh;

  z-index: 10;

  width: min(7rem, 42vw);

  height: 2px;

  transform: translateX(-50%);

  background: rgba(26, 54, 93, 0.1);

  border-radius: 9999px;

  overflow: hidden;

  opacity: 1;

  transition: opacity 0.25s ease;

}



.lp-preloader.is-wiping .lp-preloader-progress {

  opacity: 0;

}



.lp-preloader-progress-bar {

  display: block;

  width: 100%;

  height: 100%;

  background: #1a365d;

  border-radius: inherit;

  transform: scaleX(0);

  transform-origin: left center;

  animation: lp-preloader-progress var(--lp-preloader-greet-ms) linear forwards;

}



@keyframes lp-preloader-progress {

  to {

    transform: scaleX(1);

  }

}



@media (prefers-reduced-motion: reduce) {

  .lp-preloader.is-wiping .lp-preloader-circle {

    transition-duration: 0.22s;

  }



  .lp-preloader.is-exiting {

    transition-duration: 0.12s;

  }



  .lp-preloader-word,

  .lp-preloader-logo {

    transition: none;

  }



  .lp-preloader-word.is-in {

    animation: none;

  }



  .lp-preloader-progress-bar {

    animation: none;

    transform: scaleX(1);

  }

}



@media (max-width: 767px) {

  .lp-preloader-progress {

    bottom: 10vh;

  }

}

