  /* Compact location modal: same visual system as Portfolio.
     These rules stay active during the closing fade, after main.js
     removes the temporary modal state classes. */
  .location-modal-gallery {
    width: 0;
    height: 0;
    margin: 0;
    columns: auto;
  }

  .location-modal-gallery .modal .modal__panel {
    width: min(100%, 42rem);
    padding: 2.5rem 2.5rem 2rem 2.5rem;
    background: rgba(0, 0, 0, 0.88);
    border: solid 1px rgba(255, 255, 255, 0.14);
  }

  .location-modal-gallery .modal .modal__inner {
    display: block;
  }

  .location-modal-gallery .modal .modal__content,
  .location-modal-gallery .modal .modal__content.is-full {
    min-height: 0;
    padding: 0;
    background: transparent;
    border: 0;
  }

  .location-modal-gallery .modal .modal__content.is-full:before {
    display: none;
  }

  .location-modal-gallery .modal .modal__title,
  .location-modal-gallery .modal .modal__actions {
    display: none !important;
  }

  .location-modal-gallery > a[hidden] {
    display: none !important;
  }

  @media screen and (max-width: 736px) {
    .location-modal-gallery .modal .modal__panel {
      padding: 2rem 1.5rem 1.5rem 1.5rem;
    }
  }


  /* Animated service-area map inside the compact Portfolio-style modal. */
  .location-modal-gallery .modal__body p {
    margin-bottom: 0;
  }

  .location-map-stage {
    position: relative;
    width: min(17rem, 72vw);
    margin: 1.2rem auto 1.35rem;
  }

  .location-map-visual {
    position: relative;
    width: 100%;
  }

  .location-map__country-glow {
    fill: url(#location-map-glow-gradient);
    opacity: 0;
    transform-box: fill-box;
    transform-origin: center;
    transform: scale(0.35);
    animation: location-map-glow 1.15s cubic-bezier(0.22, 1, 0.36, 1) 0.58s forwards;
    pointer-events: none;
  }

  .location-map__svg {
    position: relative;
    z-index: 1;
    display: block;
    width: 100%;
    height: auto;
    overflow: visible;
    opacity: 0;
    transform: translateY(0.35rem) scale(0.965);
    transform-origin: center;
    animation: location-map-enter 0.5s ease 0.12s forwards;
  }

  .location-map__region .location-map__fill {
    fill: rgba(255, 255, 255, 0.1);
  }

  .location-map__region .location-map__line {
    fill: rgba(255, 255, 255, 0.56);
  }

  .location-map__region:not(.location-map__region--slaskie) .location-map__fill {
    animation: location-map-country 0.72s ease var(--location-region-delay) forwards;
  }

  .location-map__region--slaskie .location-map__fill {
    animation: location-map-slaskie 0.68s cubic-bezier(0.22, 1, 0.36, 1) 0.58s forwards;
  }

  .location-map__marker-halo,
  .location-map__marker-ring,
  .location-map__marker-dot {
    transform-box: fill-box;
    transform-origin: center;
  }

  .location-map__marker-halo {
    fill: rgba(232, 105, 105, 0.2);
    opacity: 0;
    transform: scale(0.5);
    animation: location-map-marker-halo 0.9s ease 0.92s forwards;
  }

  .location-map__marker-ring {
    fill: none;
    stroke: rgba(255, 255, 255, 0.82);
    stroke-width: 9;
    opacity: 0;
    transform: scale(0.55);
    animation: location-map-marker-ring 0.7s ease 1s forwards;
  }

  .location-map__marker-dot {
    fill: #ef9696;
    opacity: 0;
    transform: scale(0.4);
    animation: location-map-marker-dot 0.45s ease 1.08s forwards;
  }

  @keyframes location-map-enter {
    to {
      opacity: 1;
      transform: translateY(0) scale(1);
    }
  }

  @keyframes location-map-glow {
    0% { opacity: 0; transform: scale(0.35); }
    62% { opacity: 0.92; transform: scale(0.9); }
    100% { opacity: 0.62; transform: scale(1); }
  }

  @keyframes location-map-slaskie {
    0% { fill: rgba(255, 255, 255, 0.1); }
    55% { fill: rgba(245, 151, 151, 0.98); }
    100% { fill: rgba(226, 113, 113, 0.94); }
  }

  @keyframes location-map-country {
    to { fill: rgba(255, 255, 255, 0.3); }
  }

  @keyframes location-map-marker-halo {
    0% { opacity: 0; transform: scale(0.45); }
    55% { opacity: 0.82; transform: scale(1.12); }
    100% { opacity: 0.4; transform: scale(1); }
  }

  @keyframes location-map-marker-ring {
    0% { opacity: 0; transform: scale(0.55); }
    60% { opacity: 1; transform: scale(1.18); }
    100% { opacity: 0.72; transform: scale(1); }
  }

  @keyframes location-map-marker-dot {
    to { opacity: 1; transform: scale(1); }
  }

  @media screen and (max-width: 736px) {
    .location-map-stage {
      width: min(13.5rem, 68vw);
      margin: 1rem auto 1.1rem;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .location-map__country-glow,
    .location-map__svg,
    .location-map__region .location-map__fill,
    .location-map__marker-halo,
    .location-map__marker-ring,
    .location-map__marker-dot {
      animation: none !important;
    }

    .location-map__country-glow {
      opacity: 1;
      transform: scale(1);
    }

    .location-map__svg {
      opacity: 1;
      transform: none;
    }

    .location-map__region:not(.location-map__region--slaskie) .location-map__fill {
      fill: rgba(255, 255, 255, 0.3);
    }

    .location-map__region--slaskie .location-map__fill {
      fill: rgba(226, 113, 113, 0.94);
    }

    .location-map__marker-halo {
      opacity: 0.4;
      transform: scale(1);
    }

    .location-map__marker-ring {
      opacity: 0.72;
      transform: scale(1);
    }

    .location-map__marker-dot {
      opacity: 1;
      transform: scale(1);
    }
  }
