/* Scroll reveal, with delay set by the script */
.reveal { opacity: 0; transform: translateY(16px);
  transition: opacity .6s ease var(--reveal-delay, 0s),
              transform .6s ease var(--reveal-delay, 0s); }
.reveal.in { opacity: 1; transform: none; }

/* Partner rows: the title slides right on hover, dividers stay put */
.bu-svc > div:nth-child(2) { transition: transform .25s ease; }
.bu-svc:hover > div:nth-child(2) { transform: translateX(8px); }

/* Header: soft shadow after scrolling */
body > div:first-child { transition: box-shadow .3s ease; }
body > div.scrolled:first-child { box-shadow: 0 1px 12px rgba(0,0,0,.06); }

/* Underline that grows on hover: plain text links in header and footer only */
:is(body > div:first-child, body > div:last-of-type) a:not(.lift):not(:has(> span)):not(:has(> div)):not(:has(> img)) {
  background: linear-gradient(currentColor, currentColor) 0 100% / 0 1px no-repeat;
  transition: background-size .25s ease, color .15s ease;
}
:is(body > div:first-child, body > div:last-of-type) a:not(.lift):not(:has(> span)):not(:has(> div)):not(:has(> img)):hover {
  background-size: 100% 1px;
}

/* Button lift (class added by the script to pill-shaped links) */
a.lift { transition: transform .2s ease, opacity .15s ease, border-color .15s ease; }
a.lift:hover { transform: translateY(-2px); }

/* Logo dot: slow, faint pulse */
body > div:first-child a:has(> span) > div { animation: dot 3.5s ease-in-out infinite; }
@keyframes dot { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }

/* Respect reduced-motion settings */
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
  .bu-svc > div:nth-child(2) { transition: none; transform: none !important; }
  a.lift { transition: none; transform: none !important; }
  body > div:first-child a:has(> span) > div { animation: none; }
}