/* ============================================================
   SCOTT PRICE MEDIA
   Back to Top Component
   Bootstrap 5.3
   ============================================================ */


/* ------------------------------------------------------------
   BUTTON
   ------------------------------------------------------------ */

.spm-back-to-top {
    position: fixed;
    right: clamp(1rem, 2vw, 1.5rem);
    bottom: clamp(1rem, 2vw, 1.5rem);

    z-index: 1030;

    display: inline-flex;
    align-items: center;
    justify-content: center;

    width: 3rem;
    height: 3rem;

    padding: 0;

    border: 1px solid rgba(102, 16, 242, 0.35);
    border-radius: 50%;

    color: #ffffff;

    background:
        linear-gradient(
            135deg,
            rgba(102, 16, 242, 0.92),
            rgba(79, 9, 190, 0.78)
        );

    box-shadow:
        0 8px 24px rgba(102, 16, 242, 0.24);

    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);

    cursor: pointer;

    /* Hidden state */
    opacity: 0;
    visibility: hidden;
    transform: translateY(0.75rem);

    pointer-events: none;

    transition:
        opacity 0.25s ease,
        visibility 0.25s ease,
        transform 0.25s ease,
        background-color 0.2s ease,
        border-color 0.2s ease,
        box-shadow 0.2s ease;
}


/* ------------------------------------------------------------
   VISIBLE STATE
   ------------------------------------------------------------ */

.spm-back-to-top.spm-back-to-top-visible {
    opacity: 1;
    visibility: visible;

    transform: translateY(0);

    pointer-events: auto;
}


/* ------------------------------------------------------------
   ICON
   ------------------------------------------------------------ */

.spm-back-to-top i {
    font-size: 1.25rem;
    line-height: 1;
}


/* ------------------------------------------------------------
   HOVER
   ------------------------------------------------------------ */

.spm-back-to-top:hover {
    color: #ffffff;

    border-color: rgba(255, 255, 255, 0.35);

    background:
        linear-gradient(
            135deg,
            rgba(117, 38, 255, 0.98),
            rgba(102, 16, 242, 0.88)
        );

    box-shadow:
        0 10px 28px rgba(102, 16, 242, 0.34);

    transform: translateY(-2px);
}


/* ------------------------------------------------------------
   ACTIVE
   ------------------------------------------------------------ */

.spm-back-to-top:active {
    transform: translateY(0);
}


/* ------------------------------------------------------------
   KEYBOARD FOCUS
   ------------------------------------------------------------ */

.spm-back-to-top:focus-visible {
    outline: none;

    border-color: #ffffff;

    box-shadow:
        0 0 0 0.25rem rgba(102, 16, 242, 0.30),
        0 8px 24px rgba(102, 16, 242, 0.28);
}


/* ------------------------------------------------------------
   LIGHT THEME
   ------------------------------------------------------------ */

[data-bs-theme="light"] .spm-back-to-top {
    color: #ffffff;

    border-color: rgba(102, 16, 242, 0.32);

    background:
        linear-gradient(
            135deg,
            rgba(102, 16, 242, 0.94),
            rgba(79, 9, 190, 0.84)
        );

    box-shadow:
        0 8px 24px rgba(102, 16, 242, 0.22);
}


/* ------------------------------------------------------------
   DARK THEME
   ------------------------------------------------------------ */

[data-bs-theme="dark"] .spm-back-to-top {
    color: #ffffff;

    border-color: rgba(149, 92, 255, 0.40);

    background:
        linear-gradient(
            135deg,
            rgba(102, 16, 242, 0.94),
            rgba(82, 12, 198, 0.82)
        );

    box-shadow:
        0 8px 26px rgba(102, 16, 242, 0.30);
}


/* ------------------------------------------------------------
   MOBILE
   ------------------------------------------------------------ */

@media (max-width: 575.98px) {

    .spm-back-to-top {
        right: 1rem;
        bottom: 1rem;

        width: 2.75rem;
        height: 2.75rem;
    }

    .spm-back-to-top i {
        font-size: 1.15rem;
    }
}


/* ------------------------------------------------------------
   REDUCED MOTION
   ------------------------------------------------------------ */

@media (prefers-reduced-motion: reduce) {

    .spm-back-to-top {
        transition:
            opacity 0.01ms,
            visibility 0.01ms;
    }

    .spm-back-to-top:hover,
    .spm-back-to-top:active {
        transform: none;
    }
}