.switcher {
    $shadow-color: rgba(0, 0, 0, 0.05);
    position: fixed;
    z-index: 101;
    bottom: 16px;
    left: 16px;

    @include bp (sm) {
        bottom: 20px;
        left: 20px;
    }
    @include bp (md) {
        bottom: 40px;
        left: 40px;
    }

    // Links
    &__links {
        opacity: 0;
        padding: 8px;
        background: $color-primary-tertiary20;
        border-radius: 12px;
        margin-bottom: 16px;
        pointer-events: none;
        transform: translate3d(0, 8px, 0);
        box-shadow: 0 6px 6px $shadow-color, 0 12px 12px $shadow-color, 0 24px 24px $shadow-color;
        transition: opacity 0.8s var(--ease-quart), transform 0.8s var(--ease-quart);

        li {
            display: block;
            line-height: 1.5;
        }
        a {
            display: flex;
            align-items: center;
            padding: 8px 16px 8px 10px;
            color: #fff;
            font-weight: 900;
            font-size: rem(16px);
            text-decoration: none;
            border-radius: 6px;
            transition: background-color 0.4s ease-out;

            &:hover {
                background-color: rgba($color-tertiary, 0.15);
            }
        }
        .icon {
            display: block;
            width: 32px;
            height: 32px;
            object-fit: contain;
            margin-right: 16px;
        }
    }

    // Button
    &__button {
        $shadow-color: rgba(0, 0, 0, 0.05);
        width: 56px;
        height: 56px;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        background: $color-primary-tertiary20;
        border-radius: 100%;
        box-shadow: 0 6px 6px $shadow-color, 0 12px 12px $shadow-color, 0 24px 24px $shadow-color;
        transition: background-color 0.6s var(--ease-quart);

        // Dots container
        span {
            display: inline-flex;
            flex-flow: column;
            transition: transform 0.8s var(--ease-quart);
        }
        // Dot
        i {
            display: block;
            width: 6px;
            height: 6px;
            margin: 2px 0;
            border-radius: 100%;
            background: #fff;
            transition: transform 0.8s var(--ease-quart);
        }

        // Hover
        &:hover {
            background-color: #7e5288;

            i {
                &:nth-child(1) { transform: translate3d(0, -2px, 0); }
                &:nth-child(3) { transform: translate3d(0, 2px, 0); }
            }
        }
    }


    // Open state
    &.is-open {
        .switcher {
            &__links {
                opacity: 1;
                pointer-events: auto;
                transform: translate3d(0, 0, 0);
            }

            &__button {
                span {
                    transform: rotate3d(70deg, 120deg, 180deg) translateZ(0);
                }
                i {
                    &:nth-child(1) { transform: translate3d(-7px, 8px, 0); }
                    &:nth-child(2) { transform: translate3d(7px, -2px, 0); }
                    &:nth-child(3) { transform: translate3d(0px, -3px, 0); }
                }
            }
        }
    }
}