@layer components {
  .ka-kg {
    container-type: inline-size;
    container-name: ka-kg;
  }

  .ka-kg__grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-m);
  }

  .ka-kg__item {
    position: relative;
    border-radius: var(--radius-l);
    overflow: hidden;
    aspect-ratio: 3 / 2;
    cursor: pointer;
  }

  .ka-kg__item:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 3px;
  }

  .ka-kg__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  }

  .ka-kg__item:hover .ka-kg__img,
  .ka-kg__item:focus-visible .ka-kg__img {
    transform: scale(1.04);
  }

  /* Lightbox overlay */
  .ka-kg__lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: oklch(0.06 0 0 / 0.92);
    backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
  }

  .ka-kg__lightbox.is-active {
    opacity: 1;
    visibility: visible;
  }

  .ka-kg__lightbox-content {
    max-width: 90vw;
    max-height: 85vh;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
  }

  .ka-kg__lightbox-img {
    max-width: 100%;
    max-height: 85vh;
    object-fit: contain;
    border-radius: var(--radius-m);
    opacity: 0;
    transform: scale(0.96);
    transition: opacity 0.3s ease, transform 0.3s ease;
    pointer-events: auto;
  }

  .ka-kg__lightbox.is-active .ka-kg__lightbox-img {
    opacity: 1;
    transform: scale(1);
  }

  .ka-kg__lightbox-close,
  .ka-kg__lightbox-prev,
  .ka-kg__lightbox-next {
    position: absolute;
    background: none;
    border: none;
    color: var(--always-light);
    cursor: pointer;
    padding: var(--space-s);
    opacity: 0.75;
    transition: opacity 0.2s ease;
    z-index: 2;
  }

  .ka-kg__lightbox-close:hover,
  .ka-kg__lightbox-prev:hover,
  .ka-kg__lightbox-next:hover,
  .ka-kg__lightbox-close:focus-visible,
  .ka-kg__lightbox-prev:focus-visible,
  .ka-kg__lightbox-next:focus-visible {
    opacity: 1;
    outline: none;
  }

  .ka-kg__lightbox-close {
    top: var(--space-l);
    right: var(--space-l);
  }

  .ka-kg__lightbox-close .icon {
    width: 2.8rem;
    height: 2.8rem;
  }

  .ka-kg__lightbox-prev,
  .ka-kg__lightbox-next {
    top: 50%;
    transform: translateY(-50%);
  }

  .ka-kg__lightbox-prev .icon,
  .ka-kg__lightbox-next .icon {
    width: 3.2rem;
    height: 3.2rem;
  }

  .ka-kg__lightbox-prev {
    left: var(--space-l);
  }

  .ka-kg__lightbox-next {
    right: var(--space-l);
  }

  .ka-kg__lightbox-counter {
    position: absolute;
    bottom: var(--space-xl);
    left: 50%;
    transform: translateX(-50%);
    color: var(--always-light);
    opacity: 0.65;
    font-size: var(--text-s);
    font-weight: var(--weight-medium);
    letter-spacing: 0.05em;
  }

  @container ka-kg (max-width: 768px) {
    .ka-kg__grid {
      grid-template-columns: repeat(2, 1fr);
    }
  }

  @container ka-kg (max-width: 480px) {
    .ka-kg__grid {
      grid-template-columns: 1fr;
      gap: var(--space-s);
    }

    .ka-kg__lightbox-prev,
    .ka-kg__lightbox-next {
      display: none;
    }
  }
}
