/* 3D Grid Image Widget */
.ggpw-3d-grid-gallery {
    position: relative;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    perspective: var(--ggpw-grid-perspective, 1000px);
    perspective-origin: center center;
    transform-style: preserve-3d;
}

.ggpw-3d-grid-viewport {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
    transform-style: preserve-3d;
    perspective: var(--ggpw-grid-perspective, 1000px);
}

.ggpw-3d-grid-inner {
    --ggpw-grid-columns: 3;
    --ggpw-grid-gap: 18px;
    --ggpw-grid-rotate-z: -12deg;
    --ggpw-grid-tilt-x: 18deg;
    --ggpw-grid-tilt-y: -18deg;
    --ggpw-grid-perspective: 1000px;
    --ggpw-grid-stage-width: var(--ggpw-grid-stage-width);
    --ggpw-grid-stage-x: 0px;
    --ggpw-grid-stage-y: 0px;
    display: grid;
    grid-template-columns: repeat(var(--ggpw-grid-columns), minmax(0, 1fr));
    gap: var(--ggpw-grid-gap);
    width: var(--ggpw-grid-stage-width);
    min-height: 220%;
    position: relative;
    left: 50%;
    top: 50%;
    transform-style: preserve-3d;
    transform: translate(calc(-50% + var(--ggpw-grid-stage-x)), calc(-50% + var(--ggpw-grid-stage-y))) rotateZ(var(--ggpw-grid-rotate-z)) rotateX(var(--ggpw-grid-tilt-x)) rotateY(var(--ggpw-grid-tilt-y));
    transform-origin: center center;
    will-change: transform;
}

.ggpw-3d-grid-column {
    overflow: hidden;
    min-width: 0;
}

.ggpw-3d-grid-track {
    display: flex;
    flex-direction: column;
    gap: var(--ggpw-grid-gap);
    will-change: transform;
}

.ggpw-3d-grid-item {
    width: 100%;
    overflow: hidden;
    background: transparent;
    box-sizing: border-box;
    flex: 0 0 auto;
}

.ggpw-3d-grid-item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}


/* 3D Grid Image animation fix */
.ggpw-3d-grid-column {
    height: 100%;
}
.ggpw-3d-grid-track {
    min-height: 200%;
}


/* 3D Grid Image gap fix */
.ggpw-3d-grid-track {
    display: flex;
    flex-direction: column;
}
.ggpw-3d-grid-set {
    display: flex;
    flex-direction: column;
    gap: var(--ggpw-grid-gap);
    flex: 0 0 auto;
}


/* 3D Grid Image perspective/placement fix */
.ggpw-3d-grid-gallery * {
    transform-style: preserve-3d;
}
