/* ========================================================================
   Menu States
   Interactive icon, toggle and motion states shared across breakpoints.
   ======================================================================== */

/* ===== Icon Hover Effects ===== */
.site-menu__list a:hover .nav-icon:not(.theme-icon),
.site-menu__list a:focus .nav-icon:not(.theme-icon),
.site-menu__list button:hover .nav-icon:not(.theme-icon),
.site-menu__list button:focus .nav-icon:not(.theme-icon) {
  transform: translateY(calc(var(--size-1) * -1)) scale(1.1);
  opacity: 1;
  filter: drop-shadow(
    0 var(--size-1) var(--size-2) color-mix(in srgb, var(--clr-black) 25%, transparent)
  );
}

/* ===== Modern Hamburger Toggle ===== */
.site-menu__toggle {
  --menu-toggle-transform-rest: translateY(-50%);
  --menu-toggle-transform-hover: translateY(-50%) scale(1.05);
  --menu-toggle-transform-active: translateY(-50%) scale(0.95);
  --menu-toggle-transition:
    transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s cubic-bezier(0.4, 0, 0.2, 1),
    border-color 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  display: none;
  position: absolute;
  right: var(--size-20);
  top: 50%;
  transform: var(--menu-toggle-transform-rest);
  width: var(--size-48);
  height: var(--size-48);
  border-radius: var(--size-16);
  background: color-mix(in srgb, var(--clr-white) 8%, transparent);
  backdrop-filter: blur(var(--size-20));
  -webkit-backdrop-filter: blur(var(--size-20));
  cursor: pointer;
  overflow: hidden;
  transition: var(--menu-toggle-transition);
  box-shadow:
    0 var(--size-4) var(--size-16) color-mix(in srgb, var(--clr-black) 10%, transparent),
    inset 0 var(--size-1) 0 color-mix(in srgb, var(--clr-white) 10%, transparent);
  border: var(--size-1) solid color-mix(in srgb, var(--clr-white) 10%, transparent);
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  isolation: isolate;
}

.site-menu__toggle:hover {
  background: color-mix(in srgb, var(--clr-white) 12%, transparent);
  transform: var(--menu-toggle-transform-hover);
  box-shadow:
    0 var(--size-8) var(--size-24) color-mix(in srgb, var(--clr-black) 15%, transparent),
    inset 0 var(--size-1) 0 color-mix(in srgb, var(--clr-white) 15%, transparent);
  border-color: color-mix(in srgb, var(--clr-white) 20%, transparent);
}

.site-menu__toggle:active {
  transform: var(--menu-toggle-transform-active);
  background: color-mix(in srgb, var(--component-accent-blue) 20%, transparent);
  box-shadow:
    0 var(--size-2) var(--size-8) color-mix(in srgb, var(--clr-black) 20%, transparent),
    inset 0 var(--size-1) 0 color-mix(in srgb, var(--clr-white) 10%, transparent);
}

.site-menu__toggle:focus-visible {
  outline: none;
  box-shadow:
    0 var(--size-8) var(--size-24) color-mix(in srgb, var(--clr-black) 15%, transparent),
    0 0 0 var(--size-3) color-mix(in srgb, var(--component-accent-blue) 40%, transparent),
    inset 0 var(--size-1) 0 color-mix(in srgb, var(--clr-white) 15%, transparent);
}

.hamburger-container {
  position: relative;
  width: var(--size-24);
  height: var(--size-18);
  margin: auto;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  z-index: var(--z-menu-foreground);
}

.hamburger-line {
  display: block;
  width: 100%;
  height: var(--size-2);
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--clr-white) 90%, transparent) 0%,
    var(--clr-white) 50%,
    color-mix(in srgb, var(--clr-white) 90%, transparent) 100%
  );
  border-radius: var(--size-2);
  transition:
    transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55),
    opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1),
    background 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: center;
  box-shadow: 0 var(--size-1) var(--size-2) color-mix(in srgb, var(--clr-black) 10%, transparent);
  position: relative;
}

.site-menu__toggle.active .hamburger-line--top {
  transform: translateY(var(--size-8)) rotate(45deg);
  background: linear-gradient(90deg, var(--component-accent-blue) 0%, var(--menu-accent-alt) 100%);
}

.site-menu__toggle.active .hamburger-line--middle {
  opacity: 0;
  transform: scaleX(0);
}

.site-menu__toggle.active .hamburger-line--bottom {
  transform: translateY(calc(var(--size-8) * -1)) rotate(-45deg);
  background: linear-gradient(90deg, var(--component-accent-blue) 0%, var(--menu-accent-alt) 100%);
}

.menu-ripple {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  background: radial-gradient(
    circle,
    color-mix(in srgb, var(--component-accent-blue) 30%, transparent) 0%,
    transparent 70%
  );
  border-radius: 50%;
  transform: translate(-50%, -50%);
  transition:
    width 0.6s cubic-bezier(0.4, 0, 0.2, 1),
    height 0.6s cubic-bezier(0.4, 0, 0.2, 1),
    opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
  z-index: var(--z-base);
  opacity: 0;
}

.site-menu__toggle:active .menu-ripple {
  width: var(--size-80);
  height: var(--size-80);
  opacity: 1;
}

/* ===== Active Link States ===== */
.site-menu__list li a.active,
.site-menu__list li a[aria-current="page"] {
  color: var(--component-accent-blue);
  background: color-mix(in srgb, var(--clr-white) 20%, transparent);
  font-weight: 600;
  border: var(--size-1) solid color-mix(in srgb, var(--clr-white) 25%, transparent);
  box-shadow: 0 0 var(--size-12) color-mix(in srgb, var(--clr-white) 10%, transparent);
}

.site-menu__list li a.active:hover,
.site-menu__list li a.active:focus,
.site-menu__list li a[aria-current="page"]:hover,
.site-menu__list li a[aria-current="page"]:focus {
  color: var(--component-accent-blue);
  background: color-mix(in srgb, var(--clr-white) 24%, transparent);
  border-color: color-mix(in srgb, var(--clr-white) 30%, transparent);
  box-shadow:
    0 var(--size-4) var(--size-14) color-mix(in srgb, var(--clr-black) 18%, transparent),
    0 0 var(--size-12) color-mix(in srgb, var(--clr-white) 12%, transparent);
}

@media (prefers-reduced-motion: reduce) {
  .skip-link {
    transition-duration: 0.01ms !important;
  }

  .site-header {
    animation-duration: 0.01ms !important;
    opacity: 1;
    transform: translateX(-50%) translateY(0) scale(1);
  }

  .site-menu,
  .site-menu__list li,
  .site-menu__toggle,
  .hamburger-line,
  .menu-ripple,
  .menu-search__bar,
  .menu-search__result,
  .menu-search__results,
  .menu-search__item,
  .skeleton-title,
  .skeleton-desc {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }

  .site-menu.open .site-menu__list li {
    transition-delay: 0s !important;
  }
}

/* ===== View Transitions ===== */
::view-transition-group(menu) {
  animation-duration: 0.3s;
}

.site-menu {
  view-transition-name: menu;
}
