/* Start custom CSS *//* Ticket cards: tear line + punched notches. Pseudo-elements, so not
   expressible as V4 variants. Notch fill matches the section background. */
#tickets .e-div-block-base {
  position: relative;
  overflow: visible;
}
#tickets .e-div-block-base > p:nth-last-of-type(1) {
  width: 100%;
  padding-bottom: 1.15rem;
  border-bottom: 2px dashed rgba(48, 56, 61, .3);
}
#tickets .e-div-block-base::before,
#tickets .e-div-block-base::after {
  content: "";
  position: absolute;
  bottom: 4.05rem;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background: #fff3e6;
  border: 2px solid #30383d;
  pointer-events: none;
}
#tickets .e-div-block-base::before { left: -0.85rem; }
#tickets .e-div-block-base::after  { right: -0.85rem; }

/* Line icons: Elementor's e-svg base sets fill:currentColor, and CSS beats the
   fill="none" presentation attribute in the file - so the shapes render solid. */
#event-details .e-svg-base svg,
#event-details .e-svg-base svg * {
  fill: none;
}

/* Motion. Scroll-driven, no JS. Falls back to nothing where unsupported. */
@media (prefers-reduced-motion: no-preference) {
  @keyframes lp-rise {
    from { opacity: 0; transform: translateY(1.75rem); }
    to   { opacity: 1; transform: none; }
  }
  @keyframes lp-float {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-6px); }
  }
  @keyframes lp-drift {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50%      { transform: translateY(-12px) rotate(-1.2deg); }
  }

  @supports (animation-timeline: view()) {
    .elementor-1926 > .e-con:not(:first-child) {
      animation: lp-rise linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 42%;
    }
    /* cards settle in on their own entry, so rows stagger naturally */
    .elementor-1926 .e-div-block-base {
      animation: lp-rise linear both;
      animation-timeline: view();
      animation-range: entry 0% entry 55%;
    }
  }

  /* the emoji icons drift gently - card icons only, the event list stays put */
  .elementor-1926 .e-div-block-base .e-svg-base {
    animation: lp-float 4.6s ease-in-out infinite;
    will-change: transform;
  }
  .elementor-1926 .e-div-block-base:nth-child(2n) .e-svg-base { animation-duration: 5.3s; animation-delay: -1.4s; }
  .elementor-1926 .e-div-block-base:nth-child(3n) .e-svg-base { animation-duration: 5.9s; animation-delay: -2.7s; }

  /* hero illustration breathes slowly */
  .elementor-1926 > .e-con:first-child img {
    animation: lp-drift 9s ease-in-out infinite;
    will-change: transform;
  }
}/* End custom CSS */