:root {
  --control-transition: 180ms var(--ease);
}

/* Interaction is selected by visual role: text links change color; button-shaped controls may change fill. */
a {
  transition:
    color var(--control-transition),
    border-color var(--control-transition),
    opacity var(--control-transition),
    filter var(--control-transition);
}

button,
.button,
.quote-button,
input[type="submit"],
[role="button"] {
  transition:
    color var(--control-transition),
    background-color var(--control-transition),
    border-color var(--control-transition),
    opacity var(--control-transition),
    filter var(--control-transition);
}

.text-link i,
.product-card h3,
.mega-card h3,
.archive-card h2,
.news-card h3,
.case-card h3,
.solution-card h3 {
  transition:
    color var(--control-transition),
    border-color var(--control-transition);
}

button:focus-visible,
.button:focus-visible,
.quote-button:focus-visible,
input[type="submit"]:focus-visible,
[role="button"]:focus-visible,
a:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
}

button:disabled,
input[type="submit"]:disabled,
.swiper-button-disabled {
  opacity: 0.42;
  cursor: not-allowed;
  pointer-events: none;
}

@media (hover: hover) and (pointer: fine) {
  /* Ordinary links: color only. */
  a:hover {
    color: var(--accent);
  }

  .site-header:not(.sticky) .utility a:hover,
  .site-header:not(.sticky) .primary-menu > ul > li > a:hover {
    color: var(--sand);
  }

  .site-header.sticky .primary-menu > ul > li > a:hover,
  .primary-menu .sub-menu a:hover {
    color: var(--accent);
  }

  .footer-col a:hover,
  .footer-bottom a:hover,
  .mobile-contact > a:not(.button):hover {
    color: #fff;
  }

  .brand-logo:hover,
  .footer-logo:hover {
    opacity: 0.8;
  }

  .text-link:hover,
  .text-link:hover i {
    color: var(--accent);
    border-color: var(--accent);
  }

  .product-card > a:hover h3,
  .mega-card:hover h3,
  .archive-card > a:hover h2,
  .news-card > a:hover h3,
  .case-card > a:hover h3,
  .solution-card > a:hover h3 {
    color: var(--accent);
  }

  /* Visually button-shaped controls: fill/border/color changes only. */
  .button-primary:hover,
  .quote-button:hover,
  .wpcf7 input[type="submit"]:hover {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    filter: brightness(0.92);
  }

  .button-outline:hover {
    background: #fff;
    border-color: #fff;
    color: var(--ink);
  }

  .hero-controls button:hover {
    background: #fff;
    border-color: #fff;
    color: var(--ink);
  }

  .product-carousel-arrows button:hover,
  .process-controls button:hover,
  .odm-controls button:hover {
    background: var(--ink);
    border-color: var(--ink);
    color: var(--sand);
  }

  .nav-icon:hover,
  .mobile-toggle:hover,
  .mobile-submenu-toggle:hover,
  .search-close:hover {
    background: rgba(207, 69, 32, 0.12);
    color: var(--accent);
  }

  .mega-category:hover,
  .product-tab:hover,
  .service-tab:hover {
    background: var(--canvas);
    color: var(--accent);
  }

  .archive-filter a:hover,
  .pagination a:hover,
  .album-links a:hover {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
  }

  .floating-actions > a:hover,
  .floating-actions > button:hover,
  .video-play:hover {
    background: var(--ink);
    color: #fff;
  }
}

button:not(:disabled):active,
.button:active,
.quote-button:active,
input[type="submit"]:not(:disabled):active,
[role="button"]:active,
.floating-actions > a:active,
.video-play:active {
  opacity: 0.78;
}

@media (prefers-reduced-motion: reduce) {
  a,
  button,
  .button,
  .quote-button,
  input[type="submit"],
  [role="button"],
  .text-link i,
  .product-card h3,
  .mega-card h3,
  .archive-card h2,
  .news-card h3,
  .case-card h3,
  .solution-card h3 {
    transition-duration: 0.01ms;
  }
}
