.ms-icon-grid {
    &>.container {
        display: flex;
        flex-direction: column;

        &>.ms-icon-grid-title {
            font-size: var(--font-xxl);
            margin-bottom: var(--font-md);
        }

        &>.ms-icon-grid-description {
            font-size: var(--font-md);
            margin-bottom: var(--font-lg);
        }

        &>.ms-icon-grid-items {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: var(--font-lg);

            &[data-cols="2"] {
                grid-template-columns: repeat(2, 1fr);
            }

            &[data-cols="4"] {
                grid-template-columns: repeat(4, 1fr);
            }

            &>.ms-icon-grid-item {
                &:not(.scroll-intersecting)
                {
                    opacity: 0;
                    transform: translateY(20px);
                }
                &.scroll-intersecting
                {
                    opacity: 1;
                    transform: translateY(0);
                    transition-property: opacity, transform;
                    transition-duration: 0.4s;
                    transition-timing-function: ease-out;
                }
                &>.ms-icon-grid-item-inner {
                    --msi-primary: var(--ncs-cc-primary);
                    --msi-container-weak: color-mix(in srgb, var(--ncs-cc-container-weak) 20%, var(--background));
                    --msi-weak-primary: color-mix(in srgb, var(--msi-primary) 20%, transparent);
                    height: 100%;
                    display: flex;
                    flex-direction: column;
                    padding: var(--font-xl);
                    gap: var(--font-md);
                    border-radius: var(--border-radius);
                    text-align: start;
                    box-shadow: 0px 0px 0px 1.5px var(--msi-weak-primary);
                    background-color: var(--msi-container-weak);
                    transition: box-shadow 0.2s ease, transform 0.2s ease;

                    &>.ms-icon-grid-item-title {
                        font-size: var(--font-lg);
                        &:not(.scroll-intersecting)
                        {
                            opacity: 0;
                        }
                        &.scroll-intersecting
                        {
                            opacity: 1;
                            transform: translateY(0);
                            transition: 0.4s ease-out;
                        }

                        &>.ms-icon-grid-item-title-text {
                            line-height: var(--font-xl);
                            opacity: 0;

                            &.scroll-intersecting {
                                opacity: 1;
                                transform: translateY(0px);
                                transition: 0.4s ease-out;
                            }
                        }

                        &>.ms-icon-grid-item-icon {
                            display: inline-block;
                            width: var(--font-xl);
                            height: var(--font-xl);
                            aspect-ratio: 1;
                            vertical-align: bottom;
                            background: var(--msi-primary);
                            mask-image: var(--icon-url);
                            mask-size: contain;
                            mask-repeat: no-repeat;
                            mask-position: center;
                            margin-right: calc(var(--font-xs) * 0.3);
                            transform: scale(0.5);
                            opacity: 0;

                            &.scroll-intersecting {
                                transition: 0.4s cubic-bezier(.87,-.41,.19,1.44);
                                transform: scale(1);
                                opacity: 1;
                            }
                        }
                    }

                    &>.ms-icon-grid-item-description {
                        opacity: 0;
                        transform: translateY(5px);

                        &.scroll-intersecting {
                            opacity: 1;
                            transform: translateY(0);
                            transition: 0.4s ease-out;
                        }
                    }
                }
                &:hover > .ms-icon-grid-item-inner {
                    --msi-weak-primary: var(--msi-primary);
                    transform: translateY(-10px);
                }
            }
        }
    }
}

@media (max-width: 991px) {
    .ms-icon-grid > .container > .ms-icon-grid-items {
        grid-template-columns: 1fr !important;
        width: 100%;
    }
}