
    .festival-popup {
      position: fixed;
      inset: 0;
      z-index: 99999;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 20px;
      background: rgb(0 0 0 / 0%);
      opacity: 0;
      visibility: hidden;
      transition: opacity .25s ease, visibility .25s ease;
    }
    .festival-popup.show {
      opacity: 1;
      visibility: visible;
    }

    .popup-panel {
      position: relative;
      width: min(1100px, 96vw);
      max-height: 92vh;
      display: flex;
      align-items: center;
      justify-content: center;
      transform: scale(.96);
      transition: transform .25s ease;
    }
    .festival-popup.show .popup-panel { transform: scale(1); }

    .popup-image {
      display: block;
      max-width: 100%;
      max-height: 88vh;
      width: auto;
      height: auto;
      object-fit: contain;
      border-radius: 8px;
      box-shadow: 0 18px 60px rgba(0,0,0,.45);
    }

    .popup-close {
      position: absolute;
    top: 1px;
    right: 0px;
      z-index: 2;
      width: 42px;
      height: 42px;
      border: 2px solid #fff;
      border-radius: 50%;
      background: #102c54;
      color: #fff;
      font-size: 28px;
      line-height: 1;
      cursor: pointer;
      box-shadow: 0 4px 16px rgba(0,0,0,.35);
    }
    .popup-close:hover { background: #e58a13; }

    @media (max-width: 600px) {
      .festival-popup { padding: 12px; }
      .popup-panel { width: 100%; }
      .popup-image { max-height: 82vh; border-radius: 5px; }
      .popup-close {
        top: -10px;
        right: -5px;
        width: 38px;
        height: 38px;
      }
    }