/* v49: one light treatment for existing buttons and editorial eye-catches.
   Artwork, typography, spacing, hit areas and destinations remain unchanged. */
[data-shiny] {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}

/* Keep the original blue button and add a polished top reflection. */
.home-page .home-section-cta[data-shiny="cta"] {
  background: linear-gradient(180deg, rgba(255,255,255,.23), transparent 47%),
    linear-gradient(112deg, #109bd8 0%, #0876c4 48%, #064a99 100%);
  border-color: #96dcf8;
  box-shadow: inset 0 2px 3px rgba(255,255,255,.64),
    inset 0 -2px 3px rgba(0,29,80,.3), 0 4px 12px rgba(0,27,66,.18);
}
.gg-article .article-cta[data-shiny="cta"]::before {
  display: none;
  content: none;
  animation: none;
}
[data-shiny="cta"] > :is(span, svg) { position: relative; z-index: 1; }

/* A diagonal highlight crosses briefly, then rests; only transform and opacity move. */
.home-page [data-shiny="cta"]::after,
.gg-article [data-shiny="cta"]::after,
body .gg-article [data-shiny="eyecatch"]::after,
.home-page [data-shiny="eyecatch"]::after,
.events-page [data-shiny="eyecatch"]::after {
  content: "";
  display: block;
  position: absolute;
  inset: -25% 0;
  width: 100%;
  height: auto;
  z-index: 2;
  border: 0;
  border-radius: 0;
  background: linear-gradient(112deg,
    transparent 33%, rgba(255,255,255,.06) 41%,
    rgba(255,255,255,.44) 49%, rgba(255,255,255,.14) 55%, transparent 64%);
  opacity: 0;
  transform: translate3d(-115%,0,0);
  pointer-events: none;
  animation: gg-v49-light-pass 8.6s cubic-bezier(.25,.46,.45,.94) infinite;
  animation-delay: var(--shine-delay, .25s);
  will-change: auto;
}
.home-page [data-shiny="cta"]::after,
.gg-article [data-shiny="cta"]::after {
  z-index: 0;
  background: linear-gradient(112deg,
    transparent 29%, rgba(255,255,255,.08) 39%,
    rgba(255,255,255,.58) 49%, rgba(255,255,255,.16) 57%, transparent 68%);
  animation-duration: 6.8s;
}
/* The anchor owns the effect; never run a second sweep on a picture inside it. */
.gg-article a[data-shiny="eyecatch"] picture::after {
  content: none;
  animation: none;
}
body :is(.gg-article, .home-page, .events-list) [data-shiny][data-shine-running="false"]::after {
  animation-play-state: paused;
  visibility: hidden;
}
@keyframes gg-v49-light-pass {
  0% { opacity: 0; transform: translate3d(-115%,0,0); }
  3% { opacity: 1; }
  23% { opacity: 1; transform: translate3d(115%,0,0); }
  24%, 100% { opacity: 0; transform: translate3d(115%,0,0); }
}
@media (prefers-reduced-motion: reduce) {
  body :is(.gg-article, .home-page, .events-list) [data-shiny]::after {
    display: none;
    animation: none;
  }
}
