/* enhancements.css — visual polish layer on top of existing tokens.
   Loaded LAST, after components.css. Purely additive: removing this file
   leaves the site fully functional. Respects prefers-reduced-motion. */

/* ---------- Global polish ---------- */
::selection {
  background: var(--color-accent);
  color: #fff;
}

html {
  scroll-behavior: smooth;
}

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

/* Unified, more visible keyboard focus */
:where(a, button, input, textarea, select, [tabindex]):focus-visible {
  outline: 3px solid var(--color-focus-ring);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Subtle, on-brand scrollbar (supporting browsers) */
@supports (scrollbar-color: auto) {
  html {
    scrollbar-color: var(--color-border-strong) transparent;
  }
}

/* ---------- Hero: layered depth ---------- */
.hero {
  position: relative;
  background:
    radial-gradient(
      120% 90% at 85% -10%,
      rgba(255, 106, 0, 0.22) 0%,
      rgba(255, 106, 0, 0) 55%
    ),
    radial-gradient(
      90% 80% at 0% 110%,
      rgba(61, 125, 255, 0.16) 0%,
      rgba(61, 125, 255, 0) 60%
    ),
    linear-gradient(165deg, var(--color-primary-700) 0%, var(--color-primary) 60%, var(--color-ink) 100%);
}

/* Fine dot-grid texture overlay */
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px);
  background-size: 22px 22px;
  mask-image: linear-gradient(to bottom, #000 0%, transparent 85%);
  -webkit-mask-image: linear-gradient(to bottom, #000 0%, transparent 85%);
  pointer-events: none;
  z-index: 0;
}

.hero > .container {
  position: relative;
  z-index: 1;
}

.hero__eyebrow {
  padding: 6px 12px;
  border-radius: var(--radius-pill);
  background: rgba(255, 106, 0, 0.12);
  border: 1px solid rgba(255, 138, 61, 0.32);
}

.hero__media {
  position: relative;
  box-shadow: var(--shadow-lg), 0 0 0 1px rgba(255, 255, 255, 0.06) inset;
}

/* Accent corner glow framing the hero image */
.hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: 0 0 60px rgba(255, 106, 0, 0.18);
  pointer-events: none;
}

/* ---------- Primary button: gradient + sheen ---------- */
.btn--primary {
  background-image: linear-gradient(135deg, var(--color-accent-300), var(--color-accent) 55%, var(--color-accent-600));
  background-size: 100% 100%;
}

.btn--primary:hover {
  background-image: linear-gradient(135deg, var(--color-accent), var(--color-accent-600));
  box-shadow: 0 8px 22px rgba(255, 106, 0, 0.38);
  transform: translateY(-1px);
}

.btn--primary:active {
  transform: translateY(0);
}

/* ---------- Section heads: accent rule under centered titles ---------- */
.section__head--center .section__title {
  position: relative;
  padding-bottom: var(--space-3);
}

.section__head--center .section__title::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 56px;
  height: 3px;
  border-radius: 3px;
  background: var(--color-accent);
}

/* ---------- Category + product cards: richer interaction ---------- */
.card,
.product-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.card__media,
.product-card__media {
  position: relative;
}

.card__media img,
.product-card__media img {
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.card:hover .card__media img,
.product-card:hover .product-card__media img {
  transform: scale(1.06);
}

/* Accent bar that wipes in along the top edge on hover */
.card::after,
.product-card::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--color-accent-300), var(--color-accent-600));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
  z-index: 2;
}

.card,
.product-card {
  position: relative;
}

.card:hover::after,
.product-card:hover::after,
.product-card.is-active::after {
  transform: scaleX(1);
}

.product-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

/* ---------- Value cards: gradient icon + lift ---------- */
.value-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.value-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.value-card__icon {
  background: linear-gradient(135deg, var(--color-accent-tint), #ffe3cf);
  box-shadow: inset 0 0 0 1px rgba(255, 106, 0, 0.12);
  transition: transform 0.2s ease;
}

.value-card:hover .value-card__icon {
  transform: scale(1.08) rotate(-3deg);
}

/* ---------- Brand logos: gentle lift ---------- */
.brand-logo {
  transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
}

.brand-logo:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-sm);
  border-color: var(--color-border-strong);
}

/* ---------- CTA band: accent glow ---------- */
.cta-band::before {
  content: "";
  position: absolute;
  inset: -40% 30% auto -10%;
  height: 80%;
  background: radial-gradient(60% 60% at 50% 50%, rgba(255, 106, 0, 0.28), transparent 70%);
  pointer-events: none;
  z-index: -1;
}

/* ---------- Spec tags: subtle border ---------- */
.spec-tag {
  border: 1px solid rgba(255, 106, 0, 0.18);
}

/* ---------- About media band: framing ---------- */
.media-band__figure {
  box-shadow: var(--shadow-md);
}

.media-band__figure img {
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.media-band__figure:hover img {
  transform: scale(1.04);
}

/* ---------- Scroll-reveal (progressive; JS opt-in via .reveal-ready) ---------- */
.reveal-ready [data-reveal] {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.6s ease, transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}

.reveal-ready [data-reveal].is-in {
  opacity: 1;
  transform: none;
}

/* Stagger children inside grids/rows for a cascade effect */
.reveal-ready [data-reveal].is-in:nth-child(2) {
  transition-delay: 0.06s;
}
.reveal-ready [data-reveal].is-in:nth-child(3) {
  transition-delay: 0.12s;
}
.reveal-ready [data-reveal].is-in:nth-child(4) {
  transition-delay: 0.18s;
}

@media (prefers-reduced-motion: reduce) {
  .card:hover .card__media img,
  .product-card:hover .product-card__media img,
  .media-band__figure:hover img {
    transform: none;
  }

  .reveal-ready [data-reveal] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .sector-card:hover .sector-card__media img {
    transform: none;
  }

  .sector-card,
  .fab-btn {
    transition: none;
    transform: none;
  }

  .sector-card::after {
    transition: none;
  }
}

/* ---------- Sector cards visual polish ---------- */
.sector-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.sector-card__media img {
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}

.sector-card:hover .sector-card__media img {
  transform: scale(1.06);
}

.sector-card::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--color-accent-300), var(--color-accent-600));
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
  z-index: 2;
}

.sector-card:hover::after {
  transform: scaleX(1);
}

.sector-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

