/* Supplemental styles that are awkward to express with Tailwind utilities. */

html {
  scroll-behavior: smooth;
}

/* Keep anchored sections clear of the sticky header. */
section[id],
article[id] {
  scroll-margin-top: 6rem;
}

/* ---------- Desktop "Practice Areas" dropdown ---------- */
.dropdown-menu {
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
}

.dropdown:hover .dropdown-menu,
.dropdown:focus-within .dropdown-menu,
.dropdown.is-open .dropdown-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.dropdown:hover .dropdown-chevron,
.dropdown.is-open .dropdown-chevron {
  transform: rotate(180deg);
}

.dropdown-chevron {
  transition: transform 0.18s ease;
}

/* ---------- Mobile menu ---------- */
.mobile-menu {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.25s ease;
}

.mobile-menu.is-open {
  grid-template-rows: 1fr;
}

.mobile-menu > div {
  overflow: hidden;
}

.mobile-menu.is-open > div {
  max-height: calc(100vh - 5rem);
  overflow-y: auto;
}

/* ---------- Decorative backgrounds ---------- */
.hero-bg {
  background-color: #09142a;
  background-image:
    radial-gradient(ellipse at 85% 10%, rgba(201, 162, 39, 0.16), transparent 45%),
    radial-gradient(ellipse at 0% 100%, rgba(29, 53, 96, 0.9), transparent 55%),
    linear-gradient(135deg, #09142a 0%, #0f1f3a 55%, #152a4d 100%);
}

.grid-lines {
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px);
  background-size: 56px 56px;
}

.gold-rule {
  display: block;
  width: 3.5rem;
  height: 3px;
  background: linear-gradient(90deg, #c9a227, #e6cd7a);
}

/* ---------- Header state ---------- */
#site-header.is-scrolled {
  box-shadow: 0 10px 30px -12px rgba(0, 0, 0, 0.55);
}

/* ---------- Scroll reveal (only when JS is running) ---------- */
.js .reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.js .reveal.is-visible {
  opacity: 1;
  transform: none;
}

/* ---------- Form ---------- */
.field-error {
  border-color: #dc2626 !important;
}

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

  .js .reveal,
  .dropdown-menu,
  .mobile-menu {
    transition: none;
  }

  .js .reveal {
    opacity: 1;
    transform: none;
  }
}
