/*
 * Site-wide hover/focus micro-interactions.
 * The layer is intentionally separate from custom.css: remove the enqueue in functions.php
 * or delete this file if the client asks to roll it back.
 */

body {
  --samed-hover-primary: var(--primary, #2287e7);
  --samed-hover-primary-dark: var(--primary-56, #1673d3);
  --samed-hover-blue: rgba(34, 135, 231, .14);
  --samed-hover-blue-strong: rgba(34, 135, 231, .34);
  --samed-hover-shadow: 0 16px 34px rgba(22, 115, 211, .12);
  --samed-hover-shadow-soft: 0 12px 28px rgba(75, 101, 128, .12);
  --samed-hover-red-shadow: 0 14px 30px rgba(246, 19, 19, .18);
  --samed-hover-green-shadow: 0 14px 30px rgba(0, 169, 98, .18);
}

:where(.header, .footer, .sidebar, .services-menu) :where(a, button, [role="button"], input[type="submit"]) {
  -webkit-tap-highlight-color: transparent;
}

:where(.header, .footer, .sidebar, .services-menu) :where(a, button, [role="button"], input[type="submit"]):focus-visible {
  outline: 3px solid rgba(34, 135, 231, .32);
  outline-offset: 4px;
}

:where(
  .header .logo,
  .header .phone-link,
  .header .menu__link,
  .header .menu__sublink,
  .header .search-form__label,
  .header .button,
  .header .button-icon,
  .header .icon-menu,
  .services-menu__tabs-title,
  .services-menu__sub-item > a,
  .services-menu__mobile-link,
  .services-menu__mobile-sublink,
  .footer .footer__logo a,
  .footer .footer__phone a,
  .footer__menu a,
  .footer .text-footer,
  .footer .button,
  .footer .button-icon,
  .sidebar__menu-link,
  .sidebar__menu-sublink
) {
  transition:
    transform .2s ease,
    color .2s ease,
    opacity .2s ease,
    border-color .2s ease,
    background-color .2s ease,
    box-shadow .2s ease,
    filter .2s ease,
    padding-left .2s ease;
}

/* Header: top-level navigation. */
.header .menu__link {
  position: relative;
  border-radius: 1.2rem;
}

@media (min-width: 47.99875em) {
  .header .menu__link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -.55rem;
    height: 2px;
    border-radius: 999px;
    background: linear-gradient(90deg, #3aa0ff, #62b7a3);
    opacity: 0;
    transform: scaleX(.35);
    transform-origin: 50% 50%;
    transition: opacity .2s ease, transform .2s ease;
  }

  .header .header__menu-item:hover > .menu__link,
  .header .menu__link:focus-visible,
  .header .current-menu-item > .menu__link,
  .header .current-menu-ancestor > .menu__link {
    color: var(--samed-hover-primary-dark);
  }

  .header .header__menu-item:hover > .menu__link::after,
  .header .menu__link:focus-visible::after,
  .header .current-menu-item > .menu__link::after,
  .header .current-menu-ancestor > .menu__link::after {
    opacity: 1;
    transform: scaleX(1);
  }
}

/* Header: dropdown menu links. */
.header .header__menu-sub-list {
  box-shadow: 0 18px 48px rgba(28, 51, 78, .12);
}

.header .menu__sublink {
  position: relative;
  border-radius: 1rem;
}

.header .menu__sublink::before {
  content: none !important;
  display: none !important;
}

@media (min-width: 47.99875em) {
  .header .menu__sublink {
    margin-inline: 0;
    padding: .65rem 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    transform: none;
  }

  .header .menu__sublink::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: .25rem;
    height: 1px;
    border-radius: 999px;
    background: currentColor;
    opacity: 0;
    transform: scaleX(.35);
    transform-origin: 0 50%;
    transition: opacity .18s ease, transform .18s ease;
    pointer-events: none;
  }

  .header .menu__sublink:hover,
  .header .menu__sublink:focus-visible {
    color: var(--samed-hover-primary-dark);
    background: transparent;
    box-shadow: none;
    transform: none;
    padding-left: 0;
  }

  .header .menu__sublink:hover::after,
  .header .menu__sublink:focus-visible::after {
    opacity: .55;
    transform: scaleX(1);
  }
}

/* Header: services mega menu and mobile services list. */
.services-menu__tabs-title,
.services-menu__mobile-link,
.services-menu__mobile-sublink,
.services-menu__sub-item > a {
  position: relative;
}

.services-menu__tabs-title,
.services-menu__mobile-sublink {
  overflow: visible;
}

.services-menu__sub-item > a,
.services-menu__mobile-sublink {
  border-radius: 1rem;
}

.services-menu__sub-item > a::before,
.services-menu__mobile-sublink::before {
  content: none !important;
  display: none !important;
}

.services-menu__tabs-title:hover,
.services-menu__tabs-title:focus-visible,
.services-menu__tabs-title._tab-active {
  color: var(--samed-hover-primary-dark);
  border-color: rgba(34, 135, 231, .22);
  background: rgba(34, 135, 231, .07);
  box-shadow: inset 0 0 0 1px rgba(34, 135, 231, .08);
}

.services-menu__sub-item > a:hover,
.services-menu__sub-item > a:focus-visible,
.services-menu__mobile-sublink:hover,
.services-menu__mobile-sublink:focus-visible {
  color: var(--samed-hover-primary-dark);
  background: rgba(34, 135, 231, .06);
  transform: translateX(.35rem);
}

.services-menu__mobile-link:hover,
.services-menu__mobile-link:focus-visible {
  color: #fff;
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .2);
}

.services-menu__mobile-link:hover .menu__arrow,
.services-menu__mobile-link:focus-visible .menu__arrow {
  background: rgba(255, 255, 255, .09);
  border-color: rgba(255, 255, 255, .24);
}

@media (min-width: 47.99875em) {
  .services-menu__tabs-title:hover:not(._tab-active),
  .services-menu__tabs-title:focus-visible:not(._tab-active) {
    color: var(--samed-hover-primary-dark);
    background: transparent;
    border-color: transparent;
    box-shadow: none;
  }

  .services-menu__tabs-title._tab-active,
  .services-menu__tabs-title._tab-active:hover,
  .services-menu__tabs-title._tab-active:focus-visible {
    color: var(--samed-hover-primary);
    background-color: var(--bg-primary, #fff);
    border-color: transparent;
    box-shadow: none;
  }

  .services-menu__sub-item > a {
    display: inline-flex;
    width: auto;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    transform: none;
  }

  .services-menu__sub-item > a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: .25rem;
    height: 1px;
    border-radius: 999px;
    background: currentColor;
    opacity: 0;
    transform: scaleX(.35);
    transform-origin: 0 50%;
    transition: opacity .18s ease, transform .18s ease;
    pointer-events: none;
  }

  .services-menu__sub-item > a:hover,
  .services-menu__sub-item > a:focus-visible {
    color: var(--samed-hover-primary-dark);
    background: transparent;
    box-shadow: none;
    transform: none;
  }

  .services-menu__sub-item > a:hover::after,
  .services-menu__sub-item > a:focus-visible::after {
    opacity: .55;
    transform: scaleX(1);
  }
}

@media (max-width: 47.99875em) {
  .header .menu__link:hover,
  .header .menu__link:focus-visible {
    color: #fff;
    background: rgba(255, 255, 255, .06);
  }

  .header .menu__sublink:hover,
  .header .menu__sublink:focus-visible {
    color: #fff;
    background: rgba(255, 255, 255, .06);
    transform: none;
    padding-left: 3.2rem;
  }

  .services-menu__mobile-sublink:hover,
  .services-menu__mobile-sublink:focus-visible {
    transform: none;
    background: rgba(255, 255, 255, .06);
  }
}

/* Header utility buttons/search/logo. */
@media (hover: hover) and (pointer: fine) {
  .header .logo:hover {
    opacity: .92;
    transform: translateY(-1px);
  }

  .header .phone-link:hover,
  .header .phone-link:focus-visible {
    color: var(--samed-hover-primary-dark);
  }

  .header .search-form__label:hover {
    border-color: rgba(34, 135, 231, .3);
    background: rgba(34, 135, 231, .05);
    box-shadow: 0 12px 28px rgba(22, 115, 211, .1);
  }

  .header :where(.button, .button-icon):hover {
    transform: translateY(-2px);
    filter: brightness(1.035);
    box-shadow: var(--samed-hover-shadow-soft);
  }

  .header .icon-menu:hover {
    transform: translateY(-1px);
  }
}

.header :where(.button, .button-icon, .icon-menu):active,
.footer :where(.button, .button-icon):active {
  transform: translateY(0);
  filter: brightness(.98);
}

/* Sidebar navigation: top-level service items. */
.sidebar__menu-link {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}

.sidebar__menu-link::before {
  content: "";
  position: absolute;
  inset: -1px auto -1px 0;
  width: 4px;
  border-radius: 999px;
  background: linear-gradient(180deg, #3aa0ff, #62b7a3);
  opacity: 0;
  transform: scaleY(.45);
  transform-origin: 50% 50%;
  transition: opacity .2s ease, transform .2s ease;
  z-index: 0;
}

.sidebar__menu-link:hover,
.sidebar__menu-link:focus-visible,
.sidebar__menu-link:has(.menu__arrow[aria-expanded="true"]),
.sidebar__menu-item.open > .sidebar__menu-link,
.sidebar__menu-item.is-open > .sidebar__menu-link {
  color: var(--samed-hover-primary-dark);
  border-color: var(--samed-hover-blue-strong);
  background: linear-gradient(180deg, #ffffff 0%, #f7fbff 100%);
  box-shadow: var(--samed-hover-shadow);
  transform: translateY(-1px);
}

.sidebar__menu-link:hover::before,
.sidebar__menu-link:focus-visible::before,
.sidebar__menu-link:has(.menu__arrow[aria-expanded="true"])::before,
.sidebar__menu-item.open > .sidebar__menu-link::before,
.sidebar__menu-item.is-open > .sidebar__menu-link::before {
  opacity: 1;
  transform: scaleY(1);
}

.sidebar__menu-link:hover .menu__arrow,
.sidebar__menu-link:focus-visible .menu__arrow,
.sidebar__menu-link:has(.menu__arrow[aria-expanded="true"]) .menu__arrow,
.sidebar__menu-item.open > .sidebar__menu-link .menu__arrow,
.sidebar__menu-item.is-open > .sidebar__menu-link .menu__arrow {
  color: var(--samed-hover-primary-dark);
}

.sidebar__menu-link:hover .menu__arrow svg,
.sidebar__menu-link:focus-visible .menu__arrow svg {
  transform: translateY(1px);
}

.sidebar__menu-link .menu__arrow[aria-expanded="true"] svg,
.sidebar__menu-item.open > .sidebar__menu-link .menu__arrow svg,
.sidebar__menu-item.is-open > .sidebar__menu-link .menu__arrow svg {
  transform: rotate(180deg);
}

/* Sidebar navigation: nested service items. */
.sidebar__menu-sublink {
  position: relative;
  border-radius: 14px;
  color: #516078;
}

.sidebar__menu-sublink::before {
  content: "";
  position: absolute;
  left: 21px;
  top: 50%;
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: currentColor;
  opacity: .22;
  transform: translateY(-50%) scale(.75);
  transition: opacity .2s ease, transform .2s ease, background-color .2s ease;
}

.sidebar__menu-sublink:hover,
.sidebar__menu-sublink:focus-visible {
  color: var(--samed-hover-primary-dark);
  background: rgba(34, 135, 231, .06);
  transform: translateX(3px);
  box-shadow: inset 0 0 0 1px rgba(34, 135, 231, .08);
}

.sidebar__menu-sublink:hover::before,
.sidebar__menu-sublink:focus-visible::before {
  opacity: 1;
  background: var(--samed-hover-primary-dark);
  transform: translateY(-50%) scale(1);
}

/* Footer: links on dark background. */
.footer__menu a,
.footer .footer__phone a,
.footer .text-footer {
  position: relative;
  text-decoration: none;
}

.footer__menu a::after,
.footer .footer__phone a::after,
.footer .text-footer::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -.35rem;
  height: 1px;
  border-radius: 999px;
  background: currentColor;
  opacity: 0;
  transform: scaleX(.28);
  transform-origin: 0 50%;
  transition: opacity .2s ease, transform .2s ease;
}

@media (hover: hover) and (pointer: fine) {
  .footer__menu a:hover,
  .footer__menu a:focus-visible,
  .footer .footer__phone a:hover,
  .footer .footer__phone a:focus-visible,
  .footer .text-footer:hover,
  .footer .text-footer:focus-visible {
    color: #72bcff;
  }

  .footer__menu a:hover,
  .footer__menu a:focus-visible {
    transform: translateX(.35rem);
  }

  .footer__menu a:hover::after,
  .footer__menu a:focus-visible::after,
  .footer .footer__phone a:hover::after,
  .footer .footer__phone a:focus-visible::after,
  .footer .text-footer:hover::after,
  .footer .text-footer:focus-visible::after {
    opacity: .72;
    transform: scaleX(1);
  }

  .footer :where(.button, .button-icon):hover {
    transform: translateY(-2px);
    filter: brightness(1.05);
    box-shadow: 0 14px 30px rgba(34, 135, 231, .16);
  }
}

@media (prefers-reduced-motion: reduce) {
  :where(.header, .footer, .sidebar, .services-menu) :where(a, button, [role="button"], input[type="submit"]),
  :where(.header, .footer, .sidebar, .services-menu) :where(a, button, [role="button"], input[type="submit"])::before,
  :where(.header, .footer, .sidebar, .services-menu) :where(a, button, [role="button"], input[type="submit"])::after {
    transition: none !important;
    animation: none !important;
  }
}

/* v68: keep the desktop header logo corner stable on hover.
   The logo uses a negative-z-index corner pseudo-element; opacity/transform on the
   parent creates a new stacking context and can expose the corner over the menu. */
@media (min-width: 47.99875em) {
  .header .logo:hover,
  .header .logo:focus-visible {
    opacity: 1 !important;
    transform: none !important;
  }
}
