@view-transition {
  navigation: auto;
}

::view-transition-old(root) {
  animation: page-leave .12s ease both;
}

::view-transition-new(root) {
  animation: page-enter .38s cubic-bezier(.2, .7, .2, 1) both;
}

@keyframes page-leave {
  to {
    opacity: 0;
  }
}

@keyframes page-enter {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes hero-enter {
  from {
    opacity: 0;
    transform: translateY(14px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.site-header {
  z-index: 1000;
  transition: box-shadow .25s ease, background-color .25s ease;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--site-header-height, 78px) + 18px);
}

body {
  overflow-x: clip;
}

img,
svg,
video,
iframe {
  max-width: 100%;
}

main,
section,
article,
aside,
header,
footer,
.wrap,
.content-card,
.profile-card {
  min-width: 0;
}

h1,
h2,
h3,
h4,
p,
li,
summary,
small,
strong,
span {
  overflow-wrap: anywhere;
}

.brand-logo {
  transition: opacity .2s ease, transform .25s ease;
}

.brand:hover .brand-logo {
  transform: scale(1.025);
}

a,
button,
summary {
  -webkit-tap-highlight-color: transparent;
}

a.button,
button.button,
.menu-toggle,
.profile-card a,
.content-card a {
  transition: color .2s ease, background-color .2s ease, border-color .2s ease, box-shadow .25s ease, transform .25s cubic-bezier(.2, .7, .2, 1);
}

a.button:hover,
button.button:hover {
  transform: translateY(-2px);
  box-shadow: 0 9px 22px rgba(7, 30, 83, .14);
}

.service-card,
.profile-card,
.content-card,
.content-step,
.option-card,
.term-card,
.doc-card,
.mission-card,
.value-card,
.capability-card,
.credential-card,
.team-card,
.testimonial-card,
.panel {
  transition: transform .28s cubic-bezier(.2, .7, .2, 1), box-shadow .28s ease, border-color .25s ease, background-color .25s ease;
}

.main-nav > a:not(.button),
.nav-dropdown > summary,
.service-menu a,
.page-footer a {
  transition: color .2s ease, background-color .2s ease, transform .2s ease;
}

.service-menu {
  transform-origin: top left;
}

.nav-dropdown[open] .service-menu {
  animation: dropdown-enter .18s ease both;
}

@keyframes dropdown-enter {
  from {
    opacity: 0;
    transform: translateY(-5px) scale(.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.content-hero .kicker,
.hero .kicker {
  animation: hero-enter .45s .04s both;
}

.content-hero h1,
.hero h1 {
  animation: hero-enter .55s .1s both;
}

.content-hero p,
.hero p {
  animation: hero-enter .55s .17s both;
}

.content-card-grid {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
}

.page-loader {
  position: fixed;
  z-index: 2000;
  inset: 0;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 15px;
  background: rgba(247, 249, 253, .88);
  color: #09296f;
  opacity: 0;
  visibility: hidden;
  backdrop-filter: blur(7px);
  transition: opacity .2s ease, visibility .2s ease;
}

.is-navigating .page-loader {
  opacity: 1;
  visibility: visible;
}

.page-loader__spinner {
  width: 48px;
  height: 48px;
  border: 3px solid rgba(18, 59, 156, .14);
  border-top-color: #123b9c;
  border-right-color: #ffdf27;
  border-radius: 50%;
  animation: page-loader-spin .8s linear infinite;
}

.page-loader__label {
  color: #09296f;
  font-size: .83rem;
  font-weight: 750;
  letter-spacing: .025em;
}

@keyframes page-loader-spin {
  to {
    transform: rotate(360deg);
  }
}

.motion-ready [data-reveal] {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .72s ease, transform .72s cubic-bezier(.2, .7, .2, 1);
}

.motion-ready [data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

.motion-ready [data-reveal-stagger] > [data-reveal]:nth-child(2) {
  transition-delay: 70ms;
}

.motion-ready [data-reveal-stagger] > [data-reveal]:nth-child(3) {
  transition-delay: 140ms;
}

.motion-ready [data-reveal-stagger] > [data-reveal]:nth-child(4) {
  transition-delay: 210ms;
}

@media (hover: hover) and (pointer: fine) {
  .main-nav > a:not(.button):hover,
  .service-menu a:hover,
  .page-footer a:hover {
    transform: translateY(-1px);
  }

  .service-card:hover,
  .content-card:hover,
  .content-step:hover,
  .option-card:hover,
  .term-card:hover,
  .doc-card:hover,
  .mission-card:hover,
  .value-card:hover,
  .capability-card:hover,
  .credential-card:hover,
  .team-card:hover,
  .testimonial-card:hover,
  .panel:hover {
    transform: translateY(-3px);
    box-shadow: 0 14px 32px rgba(7, 30, 83, .085);
  }
}

@media (max-width: 700px) {
  .content-card-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .content-steps {
    grid-template-columns: minmax(0, 1fr);
  }

  .profile-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .content-card,
  .profile-card {
    padding: 18px;
  }

  .page-footer-inner {
    align-items: flex-start;
    flex-direction: column;
  }

  .page-footer nav {
    flex-wrap: wrap;
  }
}

@media (max-width: 420px) {
  .wrap {
    width: min(100% - 32px, 520px);
  }

  .content-hero {
    padding: 40px 0;
  }

  .content-section {
    padding: 42px 0;
  }

  .profile-card {
    gap: 11px;
    padding: 15px;
  }

  .profile-initials {
    width: 40px;
    height: 40px;
    flex-basis: 40px;
  }

  .hero-actions,
  .form-actions,
  .contact-actions {
    align-items: stretch;
  }

  .hero-actions .button,
  .form-actions .button,
  .contact-actions .button {
    max-width: 100%;
    white-space: normal;
  }

  .content-callout {
    padding: 13px 14px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }

  .motion-ready [data-reveal] {
    opacity: 1;
    transform: none;
  }

  .page-loader__spinner {
    animation: none;
  }
}
