@layer components {
    .gallery {
        padding-block: var(--space-2xl);
        background: var(--color-bg);

        & .gallery__heading {
            font-size: var(--size-step-2);
            font-weight: 600;
            color: var(--color-text-main);
            margin-bottom: var(--space-l);
            letter-spacing: -0.02em;
        }

        & .gallery__grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
            gap: var(--space-s);
        }

        & .gallery__thumb {
            position: relative;
            aspect-ratio: 16 / 9;
            overflow: hidden;
            border-radius: var(--radius-m);
            border: var(--border-thin);
            background: var(--color-surface);
            cursor: pointer;
            display: block;
            text-decoration: none;
            transition: border-color var(--transition-fast), box-shadow var(--transition-fast);

            &:hover {
                border-color: rgba(0, 112, 243, 0.4);
                box-shadow: 0 0 0 1px rgba(0, 112, 243, 0.15), 0 8px 32px rgba(0, 0, 0, 0.5);
            }

            &:focus-visible {
                outline: 2px solid var(--color-accent-blue);
                outline-offset: 2px;
            }
        }

        & .gallery__thumb-img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
            opacity: 0;
            transition: opacity 400ms ease, transform 400ms var(--ease-out);

            &.is-loaded {
                opacity: 1;
            }
        }

        & .gallery__thumb:hover .gallery__thumb-img {
            transform: scale(1.05);
        }

        & .gallery__thumb-zoom {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            background: rgba(0, 0, 0, 0.55);
            color: #fff;
            opacity: 0;
            transition: opacity 200ms ease;
            pointer-events: none;
        }

        & .gallery__thumb:hover .gallery__thumb-zoom {
            opacity: 1;
        }
    }
}
