/* Perenexa — shared styles (Tailwind CDN handles utilities; this file covers
   things Tailwind's play-CDN can't: fonts, custom gradients, animations) */

:root {
  --navy-950: #05070d;
  --navy-900: #090e1a;
  --navy-800: #0e1526;
  --navy-700: #131d35;
  --gold-400: #e8c468;
  --gold-500: #d4af37;
  --gold-600: #b8912a;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  background-color: #ffffff;
  color: #1b2338;
}

h1, h2, h3, h4, .font-display {
  font-family: 'Sora', 'Inter', system-ui, sans-serif;
}

/* Custom scrollbar */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #f1f2f6; }
::-webkit-scrollbar-thumb { background: #c7cad4; border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: #a7abba; }

/* Hero gradient background */
.hero-gradient {
  background:
    radial-gradient(1100px 500px at 85% -10%, rgba(212,175,55,0.16), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(212,175,55,0.08), transparent 60%),
    linear-gradient(180deg, var(--navy-950) 0%, var(--navy-900) 55%, var(--navy-800) 100%);
}

.navy-gradient {
  background: linear-gradient(180deg, var(--navy-950) 0%, var(--navy-900) 100%);
}

/* Fine dotted texture overlay for hero sections.
   NOTE: .dot-grid is combined with .hero-gradient / .navy-gradient on the same
   element in several places. Because plain class selectors share specificity,
   whichever rule appears later in this file would otherwise silently win and
   wipe out the gradient's `background` shorthand. The compound selectors below
   (higher specificity, two classes) layer the dot pattern on top instead. */
.dot-grid {
  background-image: radial-gradient(rgba(255,255,255,0.08) 1px, transparent 1px);
  background-size: 22px 22px;
}

.dot-grid.hero-gradient {
  background:
    radial-gradient(rgba(255,255,255,0.08) 1px, transparent 1px),
    radial-gradient(1100px 500px at 85% -10%, rgba(212,175,55,0.16), transparent 60%),
    radial-gradient(900px 500px at -10% 110%, rgba(212,175,55,0.08), transparent 60%),
    linear-gradient(180deg, var(--navy-950) 0%, var(--navy-900) 55%, var(--navy-800) 100%);
  background-size: 22px 22px, auto, auto, auto;
}

.dot-grid.navy-gradient {
  background:
    radial-gradient(rgba(255,255,255,0.08) 1px, transparent 1px),
    linear-gradient(180deg, var(--navy-950) 0%, var(--navy-900) 100%);
  background-size: 22px 22px, auto;
}

/* Gold accent underline */
.underline-accent {
  position: relative;
  display: inline-block;
}
.underline-accent::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -10px;
  height: 3px;
  width: 56px;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--gold-500), var(--gold-400));
}
.underline-accent.center::after { left: 50%; transform: translateX(-50%); }

/* Text gradient for emphasis words */
.text-gold-gradient {
  background: linear-gradient(90deg, var(--gold-400), var(--gold-600));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* Card hover lift */
.lift {
  transition: transform .35s ease, box-shadow .35s ease, border-color .35s ease;
}
.lift:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 40px -12px rgba(9,14,26,0.18);
}

/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .7s ease, transform .7s ease;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Mobile nav panel */
#mobile-menu {
  max-height: 0;
  overflow: hidden;
  transition: max-height .35s ease;
}
#mobile-menu.open {
  max-height: 480px;
}

/* Logo mark */
.logo-mark {
  font-family: 'Sora', sans-serif;
  letter-spacing: -0.01em;
}

/* Subtle marquee for client logos */
.marquee-track {
  display: flex;
  width: max-content;
  animation: marquee 28s linear infinite;
}
.marquee-track:hover { animation-play-state: paused; }
@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* Second row on the Clients page scrolls the opposite way, and a little
   slower, so the two rows don't feel like mirror images of each other. */
.marquee-track-reverse {
  animation-direction: reverse;
  animation-duration: 34s;
}

/* Active nav link */
.nav-link.nav-active {
  color: #05070d !important;
  font-weight: 600;
}
#mobile-menu .nav-link.nav-active {
  background-color: #f8f7f2;
}

/* Focus ring consistency */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--gold-500);
  outline-offset: 2px;
}