html,
body {
  margin: 0;
  padding: 0;
  min-height: 100%;
}

body.modal-open {
  overflow: hidden;
}

.site-header {
  pointer-events: none;
}

.site-header .header-nav {
  max-width: 640px;
  pointer-events: auto;
  color: #17458f;
}

.site-header .nav-link {
  color: inherit;
}

.site-header .nav-link:hover,
.site-header .nav-link:focus-visible {
  color: #0e2f63;
}

.site-header.header--dark .header-nav {
  color: rgba(255, 255, 255, 0.92);
}

.site-header.header--dark .nav-link:hover,
.site-header.header--dark .nav-link:focus-visible {
  color: rgba(255, 255, 255, 0.78);
}

.hero {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.hero > *:not(.hero-lines) {
  position: relative;
  z-index: 1;
}

.hero-lines {
  position: absolute;
  inset: -10%;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
  mix-blend-mode: screen;
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.95) 25%, rgba(0, 0, 0, 0.95) 70%, transparent 100%);
  mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.95) 25%, rgba(0, 0, 0, 0.95) 70%, transparent 100%);
}

.hero-lines__svg {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 120%;
  height: 120%;
  transform: translate(-50%, -50%);
}

.hero-line {
  transform-box: fill-box;
  transform-origin: center;
  animation: lineCrawl 18s ease-in-out infinite;
}

.hero-line:nth-child(2) {
  animation: lineCrawlAlt 22s ease-in-out infinite;
  animation-delay: -3s;
}

.hero-line:nth-child(3) {
  animation: lineCrawlWide 26s ease-in-out infinite;
  animation-delay: -6s;
}

.hero-line:nth-child(4) {
  animation: lineCrawl 24s ease-in-out infinite reverse;
  animation-delay: -9s;
}

.hero-line path {
  fill: none;
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: 0.5;
  stroke: var(--line-color, rgba(23, 69, 143, 0.5));
  stroke-dasharray: 120 260;
  animation: lineDash 9s linear infinite;
}

.hero-line:nth-child(2) path {
  stroke-dasharray: 100 240;
  animation-duration: 7.5s;
  animation-direction: reverse;
}

.hero-line:nth-child(3) path {
  stroke-dasharray: 140 280;
  animation-duration: 11s;
}

.hero-line:nth-child(4) path {
  stroke-dasharray: 110 250;
  animation-duration: 8.5s;
  animation-direction: reverse;
}

@keyframes lineCrawl {
  0% {
    transform: translate3d(-12%, -6%, 0) rotate(2deg);
  }
  25% {
    transform: translate3d(6%, -12%, 0) rotate(-4deg);
  }
  50% {
    transform: translate3d(16%, 10%, 0) rotate(3deg);
  }
  75% {
    transform: translate3d(-6%, 14%, 0) rotate(-2deg);
  }
  100% {
    transform: translate3d(-12%, -6%, 0) rotate(2deg);
  }
}

@keyframes lineCrawlAlt {
  0% {
    transform: translate3d(10%, -8%, 0) rotate(-1deg);
  }
  25% {
    transform: translate3d(-14%, -14%, 0) rotate(3deg);
  }
  50% {
    transform: translate3d(-20%, 8%, 0) rotate(-2deg);
  }
  75% {
    transform: translate3d(12%, 16%, 0) rotate(4deg);
  }
  100% {
    transform: translate3d(10%, -8%, 0) rotate(-1deg);
  }
}

@keyframes lineCrawlWide {
  0% {
    transform: translate3d(-18%, 4%, 0) rotate(-3deg) scaleX(1.02);
  }
  25% {
    transform: translate3d(8%, -10%, 0) rotate(2deg) scaleX(0.98);
  }
  50% {
    transform: translate3d(22%, 14%, 0) rotate(-1deg) scaleX(1.03);
  }
  75% {
    transform: translate3d(-10%, 20%, 0) rotate(3deg) scaleX(1);
  }
  100% {
    transform: translate3d(-18%, 4%, 0) rotate(-3deg) scaleX(1.02);
  }
}

@keyframes lineDash {
  0% {
    stroke-dashoffset: 0;
  }
  100% {
    stroke-dashoffset: -380;
  }
}

.policy-link {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  transition: color 0.2s ease;
}

.policy-link:focus-visible {
  outline: 2px solid rgba(0, 119, 200, 0.6);
  outline-offset: 4px;
}

.policy-modal {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s ease;
  z-index: 40;
}

.policy-modal.is-visible {
  opacity: 1;
  pointer-events: auto;
}

.policy-modal__overlay {
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top right, rgba(23, 69, 143, 0.32), rgba(9, 25, 52, 0.58)),
    linear-gradient(135deg, rgba(15, 42, 87, 0.55), rgba(4, 11, 24, 0.62));
  backdrop-filter: blur(18px);
}

.policy-modal__panel {
  position: relative;
  width: min(640px, 100%);
  padding: 40px 44px 46px;
  border-radius: 28px;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.96), rgba(231, 240, 255, 0.96));
  box-shadow: 0 48px 80px -40px rgba(13, 32, 74, 0.65), inset 0 1px 0 rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(23, 69, 143, 0.12);
  transform: translateY(36px) scale(0.96);
  transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.25, 1);
  display: flex;
  flex-direction: column;
  gap: 18px;
  color: #102a58;
}

.policy-modal.is-visible .policy-modal__panel {
  transform: translateY(0) scale(1);
}

.policy-modal__close {
  position: absolute;
  top: 22px;
  right: 24px;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: none;
  background: rgba(23, 69, 143, 0.08);
  color: #17458f;
  font-size: 28px;
  line-height: 1;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.policy-modal__close:hover {
  background: rgba(0, 119, 200, 0.12);
  color: #0a3282;
  box-shadow: 0 12px 25px -12px rgba(23, 69, 143, 0.45);
}

.policy-modal__close:focus-visible {
  outline: 2px solid rgba(0, 119, 200, 0.45);
  outline-offset: 4px;
}

.policy-modal__badge {
  align-self: flex-start;
  padding: 6px 14px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(23, 69, 143, 0.12), rgba(0, 119, 200, 0.18));
  color: rgba(23, 69, 143, 0.85);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.policy-modal__title {
  margin: 0;
  font-size: clamp(1.8rem, 2vw, 2.1rem);
  font-weight: 700;
  letter-spacing: -0.01em;
}

.policy-modal__content {
  font-size: 1rem;
  line-height: 1.7;
  color: rgba(16, 42, 88, 0.84);
  display: grid;
  gap: 16px;
}

.policy-modal__content p {
  margin: 0;
}

.policy-modal__content ul {
  margin: 0;
  padding-left: 1.2em;
  display: grid;
  gap: 8px;
}

.policy-modal__content li {
  color: rgba(16, 42, 88, 0.84);
}

@media (max-width: 640px) {
  .policy-modal {
    padding: 16px;
  }

  .policy-modal__panel {
    padding: 32px 26px;
    border-radius: 22px;
  }

  .policy-modal__close {
    top: 16px;
    right: 16px;
    width: 40px;
    height: 40px;
    font-size: 24px;
  }
}
