.m10-fsn {
    --m10-fsn-offset: 0px;
    --m10-fsn-mobile-bottom: 18px;
    position: fixed;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    transform: translateY(-50%);
}

.m10-fsn__link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: transform .2s ease, background-color .2s ease, color .2s ease, box-shadow .2s ease;
    -webkit-tap-highlight-color: transparent;
}

.m10-fsn--side-right .m10-fsn__link:hover,
.m10-fsn--side-right .m10-fsn__link:focus-visible {
    transform: translateX(-4px);
}

.m10-fsn--side-left .m10-fsn__link:hover,
.m10-fsn--side-left .m10-fsn__link:focus-visible {
    transform: translateX(4px);
}

.m10-fsn__link--calendar {
    position: relative;
    box-shadow: 0 7px 20px rgba(0, 0, 0, .18);
}

.m10-fsn--calendar-pulse .m10-fsn__link--calendar::after {
    content: "";
    position: absolute;
    inset: -1px;
    border: 2px solid currentColor;
    border-radius: inherit;
    opacity: 0;
    pointer-events: none;
    animation: m10-fsn-pulse 8s ease-out infinite;
}

@keyframes m10-fsn-pulse {
    0%, 82%, 100% { transform: scale(1); opacity: 0; }
    86% { opacity: .28; }
    94% { transform: scale(1.28); opacity: 0; }
}

.m10-fsn__link svg {
    display: block;
    transition: fill .2s ease;
}

.screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

@media (max-width: 767px) {
    .m10-fsn--mobile-horizontal {
        top: auto !important;
        bottom: calc(var(--m10-fsn-mobile-bottom) + env(safe-area-inset-bottom));
        flex-direction: row;
        transform: none;
    }

    .m10-fsn--mobile-horizontal.m10-fsn--side-right {
        right: 14px !important;
        left: auto !important;
    }

    .m10-fsn--mobile-horizontal.m10-fsn--side-left {
        left: 14px !important;
        right: auto !important;
    }

    .m10-fsn--mobile-horizontal .m10-fsn__link:hover,
    .m10-fsn--mobile-horizontal .m10-fsn__link:focus-visible {
        transform: translateY(-3px);
    }
}

@media (prefers-reduced-motion: reduce) {
    .m10-fsn__link,
    .m10-fsn__link--calendar::after {
        transition: none;
        animation: none !important;
    }
}
