.js-reveal .bio-reveal { opacity: 0; transform: translateY(2rem); transition: opacity .7s ease, transform .7s ease; }
  .js-reveal .bio-reveal.is-visible { opacity: 1; transform: none; }
  @media (prefers-reduced-motion: reduce) {
    .js-reveal .bio-reveal { opacity: 1; transform: none; transition: none; }
  }

  .cta-center-wrap .cta-wrap { transform: translateX(0) !important; }
  .cta-center-wrap .label { transform: translate(-100%, -50%) !important; }

  #upcoming { padding-top: 7em; padding-bottom: 7em; }
  #upcoming .content { max-width: 1000px; }
  #upcoming .performance-card { display: block; text-decoration: none; color: #fff; padding-bottom: 2.5rem; margin-bottom: 2.5rem; border-bottom: 1px solid rgba(255,255,255,0.2); transition: opacity .25s ease; }
  #upcoming .performance-card:last-of-type { border-bottom: none; margin-bottom: 0; }
  #upcoming .performance-card:hover { opacity: .7; }
  #upcoming .performance-grid { display: grid; grid-template-columns: 1fr 1.6fr; gap: 2.5rem; align-items: center; }
  #upcoming .performance-card h3 { font-size: 2.4rem; line-height: 1.1; margin: 0 0 .75rem; color: #fff; }
  #upcoming .performance-card .composer { font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; opacity: .6; margin-bottom: .4rem; }
  #upcoming .performance-card .role { font-size: 1.25rem; font-weight: 600; color: #fff; margin-bottom: .35rem; }
  #upcoming .performance-card .venue { font-size: 1.1rem; color: #fff; margin-bottom: .85rem; }
  #upcoming .performance-card .credits { font-size: .9rem; line-height: 1.55; color: rgba(255,255,255,.55); }
  @media (max-width: 767px) {
    #upcoming { padding-top: 4em; padding-bottom: 4em; }
    #upcoming .performance-grid { grid-template-columns: 1fr; gap: 1.25rem; }
    #upcoming .performance-card h3 { font-size: 1.8rem; }
  }
