/**
 * NovaKey — subtle motion & interaction layer
 * Keep animations restrained; honor prefers-reduced-motion.
 */

:root {
  --nk-motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --nk-motion-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --nk-motion-short: 0.2s;
  --nk-motion-medium: 0.45s;
  --nk-motion-long: 0.65s;
}

@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .nk-reveal-ready {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .nk-hero__bg:not(.nk-hero__bg--fallback) {
    animation: none !important;
  }

  .nk-pulse {
    animation: none !important;
  }

  .nk-search-panel:hover {
    transform: none !important;
  }
}

/* --------- Scroll reveal (class toggled by novakey-motion.js) --------- */
.nk-reveal-ready {
  opacity: 0;
  transform: translate3d(0, 20px, 0);
  transition:
    opacity var(--nk-motion-long) var(--nk-motion-ease-out),
    transform var(--nk-motion-long) var(--nk-motion-ease-out);
  transition-delay: var(--nk-reveal-delay, 0ms);
}

.nk-reveal-ready.nk-reveal--in {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* --------- Sticky nav depth on scroll --------- */
body.novakey-site .nk-nav-wrap {
  transition:
    box-shadow 0.4s var(--nk-motion-ease-out),
    border-color 0.35s ease;
}

body.novakey-site .nk-nav-wrap--scrolled {
  box-shadow: 0 20px 56px rgba(0, 0, 0, 0.48);
  border-bottom-color: rgba(212, 175, 55, 0.4);
}

@media (prefers-reduced-motion: reduce) {
  body.novakey-site .nk-nav-wrap--scrolled {
    box-shadow: none;
  }
}

/* --------- Hero background: slow drift --------- */
@keyframes nk-hero-pan {
  0% {
    background-position: 46% 50%;
  }
  100% {
    background-position: 54% 52%;
  }
}

@media (prefers-reduced-motion: no-preference) {
  .nk-hero__bg:not(.nk-hero__bg--fallback) {
    animation: nk-hero-pan 36s ease-in-out infinite alternate;
  }
}

/* --------- Brand & primary chrome --------- */
body.novakey-site .nk-brand--logo {
  transition:
    transform var(--nk-motion-medium) var(--nk-motion-ease-out),
    box-shadow 0.35s ease;
}

@media (prefers-reduced-motion: no-preference) {
  body.novakey-site .nk-brand--logo:hover {
    transform: scale(1.02);
    box-shadow: 0 10px 32px rgba(0, 0, 0, 0.32);
  }
}

body.novakey-site .nk-nav .nav-link {
  transition:
    color 0.25s ease,
    background 0.25s ease,
    transform 0.2s var(--nk-motion-ease-out);
}

@media (prefers-reduced-motion: no-preference) {
  body.novakey-site .nk-nav .nav-link:hover {
    transform: translateY(-1px);
  }
}

/* Ghost / outline CTAs: slight lift */
@media (prefers-reduced-motion: no-preference) {
  .nk-btn-ghost {
    transition:
      border-color 0.2s ease,
      background 0.2s ease,
      color 0.2s ease,
      transform 0.28s var(--nk-motion-ease-out);
  }

  .nk-btn-ghost:hover {
    transform: translateY(-2px);
  }
}

/* Search panel: premium float */
@media (prefers-reduced-motion: no-preference) {
  .nk-search-panel {
    transition:
      transform 0.5s var(--nk-motion-ease-out),
      box-shadow 0.5s ease,
      border-color 0.35s ease;
  }

  .nk-search-panel:hover {
    transform: translateY(-4px);
    box-shadow:
      0 36px 96px rgba(0, 0, 0, 0.52),
      0 0 0 1px rgba(255, 255, 255, 0.06) inset,
      0 1px 0 rgba(255, 255, 255, 0.08) inset;
  }
}

/* Feature cards: hover already in novakey-realty.css */

/* Team / mandate cards */
@media (prefers-reduced-motion: no-preference) {
  .nk-team-card {
    transition:
      transform 0.45s var(--nk-motion-ease-out),
      box-shadow 0.45s ease,
      border-color 0.3s ease;
  }

  .nk-team-card:hover {
    transform: translateY(-3px);
  }

  .nk-tier {
    transition:
      transform 0.4s var(--nk-motion-ease-out),
      box-shadow 0.4s ease,
      border-color 0.35s ease;
  }

  .nk-tier:hover {
    transform: translateY(-5px);
  }

  .nk-cta {
    transition: transform 0.45s var(--nk-motion-ease-out), box-shadow 0.45s ease;
  }

  .nk-cta:hover {
    transform: translateY(-2px);
  }
}

/* Listing cards: slightly richer hover (extends existing scale) */
@media (prefers-reduced-motion: no-preference) {
  .nk-prop-card {
    transition:
      transform 0.45s var(--nk-motion-ease-out),
      box-shadow 0.45s ease,
      border-color 0.3s ease;
  }

  .nk-prop-card:hover {
    transform: translateY(-6px);
  }
}

/* Footer links: underline grow */
body.novakey-site .nk-footer-links a {
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0 1px;
  transition:
    color 0.2s ease,
    background-size 0.35s var(--nk-motion-ease-out);
}

body.novakey-site .nk-footer-links a:hover {
  background-size: 100% 1px;
}

/* Legacy WSUS property cards (listings grid) */
@media (prefers-reduced-motion: no-preference) {
  body.novakey-site .wsus__single_property {
    transition:
      transform 0.4s var(--nk-motion-ease-out),
      box-shadow 0.4s ease;
  }

  body.novakey-site .wsus__single_property:hover {
    transform: translateY(-5px);
  }

  body.novakey-site .wsus__single_property_img img {
    transition: transform 0.55s var(--nk-motion-ease-out);
  }

  body.novakey-site .wsus__single_property:hover .wsus__single_property_img img {
    transform: scale(1.045);
  }
}

/* Form controls */
body.novakey-site .form-control,
body.novakey-site .form-select,
body.novakey-site textarea.form-control {
  transition:
    border-color 0.2s ease,
    box-shadow 0.25s ease,
    background-color 0.2s ease;
}

/* Common theme buttons */
@media (prefers-reduced-motion: no-preference) {
  body.novakey-site .common_btn,
  body.novakey-site .common_btn_2 {
    transition:
      transform 0.22s var(--nk-motion-ease-out),
      box-shadow 0.28s ease,
      filter 0.2s ease;
  }

  body.novakey-site .common_btn:hover,
  body.novakey-site .common_btn_2:hover {
    transform: translateY(-2px);
  }
}

/* Back-to-top */
@media (prefers-reduced-motion: no-preference) {
  .wsus__scroll_btn {
    transition:
      transform 0.3s var(--nk-motion-ease-out),
      opacity 0.25s ease,
      box-shadow 0.3s ease;
  }

  .wsus__scroll_btn:hover {
    transform: translateY(-4px);
  }
}

/* Accessible focus ring on interactive elements */
body.novakey-site a:focus-visible,
body.novakey-site button:focus-visible,
body.novakey-site .nk-btn-primary:focus-visible,
body.novakey-site .nk-btn-ghost:focus-visible,
body.novakey-site .nk-btn-account:focus-visible {
  outline: 2px solid var(--nk-gold, #d4af37);
  outline-offset: 3px;
}
