/* ═══ Oberlander × Young · ripple ═══════════════════════════════
   The press effect for every button in the system (David 2026-09-05,
   from a Material Design ripple reference): a disc grows from the
   point of contact to the farthest corner and fades when the press
   ends. Pair with ripple.js. Any element with class .btn or the
   attribute data-ripple gets it; data-ripple="soft" is the large,
   quiet version for a whole surface (the closing band on the site).
   The disc is drawn in currentColor, so it takes the button's own ink
   on any ground. Reduced motion: no disc. */
.btn,[data-ripple]{position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}
.ripple{position:absolute;border-radius:50%;pointer-events:none;background:currentColor;
  opacity:0;transform:scale(0);z-index:0;
  transition:transform .55s cubic-bezier(.2,.6,.2,1),opacity .55s cubic-bezier(.2,.6,.2,1)}
.ripple.in{opacity:.4;transform:scale(1)}
.ripple.out{opacity:0;transition:opacity .4s ease-out,transform .55s cubic-bezier(.2,.6,.2,1)}
[data-ripple="soft"]>.ripple{opacity:0;transition-duration:1.4s}
[data-ripple="soft"]>.ripple.in{opacity:.16;transform:scale(1)}
[data-ripple="soft"]>.ripple.out{opacity:0;transition:opacity 1.1s ease-out,transform 1.4s cubic-bezier(.2,.6,.2,1)}
@media(prefers-reduced-motion:reduce){.ripple{display:none}}
