/* Glass Button */
/* Made by Jenny @uplift-beyond.de */
/* Setup 
    <button class="glassContainer"> (Settings: add the classes bounceOut / noBounce for diffrent bounce effects or roundGlass for round buttons)
        <span> Text </span>
    </button>
*/

:root {
    /* Transition Curve for the bounce effect */
    --bubleCubicCurve: cubic-bezier(0,.89,.37,1.94);

    /* Can be replaced by your Radius or padding */
    --borderRadius: 10px;
    --padding: 15px;
    --paddingHeight: 15px;

    /* Glass effect settings */
    --glassBackground: rgba(255, 255, 255, 0.2);
    --glassFilter: blur(2px) saturate(180%);
    --glassOutlineColor: rgb(250, 250, 250);
    --glassOutlineOpacity: .5;
    --glassInnerColor: rgb(255, 255, 255);
    --angle: 180deg;
}

.glassContainer {
    --x: 50%;
    --y: 50%;

    position: relative;
    transform: scale(1);

    width: fit-content;
    height: fit-content;
    padding: var(--padding);
    padding-top: var(--paddingHeight);
    padding-bottom: var(--paddingHeight);
    box-sizing: border-box;
    border-radius: var(--borderRadius);

    background: var(--glassBackground);
    backdrop-filter: var(--glassFilter);
    -webkit-backdrop-filter: var(--glassFilter);

    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);

    cursor: pointer;
    user-select: none;
    z-index: 1;

    transition: transform .2s var(--bubleCubicCurve), filter .3s ease;

    display: flex;
    justify-content: center;
    align-items: center;

    overflow: hidden;
    text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5);
}

.glassContainer span,
.glassContainer img {
    transition: transform .2s var(--bubleCubicCurve);
}

.glassContainer:hover span,
.glassContainer:hover img,
.glassContainer:focus-visible span,
.glassContainer:focus-visible img {
    transform: scaleX(.9);
}

.glassContainer:hover,
.glassContainer:focus-visible {
    filter: brightness(.92);
    transform: scaleX(1.1);
}

.glassContainer:active {
  transform: scaleX(1);
}

.glassContainer:active span,
.glassContainer:active img {
    transform: scaleX(1) scale(.95);
}

.glassContainer::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    padding: 1px;

    opacity: var(--glassOutlineOpacity);
    transition: --angle 1s ease, padding 1s ease;

    background: conic-gradient(
        from var(--angle) at 50% 70%,
        var(--glassOutlineColor) 0deg,
        #eec42d00 72deg,
        var(--glassOutlineColor) 144deg,
        #709ab900 216deg,
        var(--glassOutlineColor) 288deg,
        hsla(0, 0%, 98%, 1) 360deg
    );

    mask: linear-gradient(white, white) content-box, linear-gradient(white, white);
    mask-composite: exclude;
    -webkit-mask-composite: destination-out;
}

.glassContainer:hover::after {
    padding: 2px;
}

.glassContainer::before {
    content: '';
    position: absolute;
    width: 100px;
    height: 100px;
    background: radial-gradient(circle at center, var(--glassInnerColor), transparent 60%);
    pointer-events: none;
    top: 0;
    left: 0;
    transform: translate(calc(var(--x) - 50%), calc(var(--y) - 50%));
    transition: transform .1s ease, opacity .5s ease;
    border-radius: 50%;
    opacity: 0;
    z-index: -1;
}

.glassContainer:hover::before {
    opacity: .5;
}

.glassContainer.red::before {
    background: radial-gradient(circle at center, red, transparent 60%);
}

.glassContainer.blue::before {
    background: radial-gradient(circle at center, rgb(0, 225, 255), transparent 60%);
}

.glassContainer.green::before {
    background: radial-gradient(circle at center, rgb(0, 255, 21), transparent 60%);
}

.glassContainer.darkblue::before {
    background: radial-gradient(circle at center, rgb(4, 0, 255), transparent 60%);
}

.glassContainer.default::before {
    background: radial-gradient(circle at center, rgb(4, 0, 255), transparent 60%);
}

/* Bounce out */

    .glassContainer:hover.bounceOut,
    .glassContainer:focus-visible.bounceOut {
        transform: scaleX(1) scale(1.1);
    }
    .glassContainer:hover.bounceOut span,
    .glassContainer:hover.bounceOut img,
    .glassContainer:focus-visible.bounceOut span,
    .glassContainer:focus-visible.bounceOut img {
        transform: scaleX(1) scale(.9);
    }

    .glassContainer:active.bounceOut {
        transform: scaleX(1) scale(1);
    }

/* No bounce */

    .glassContainer:hover.noBounce,
    .glassContainer:focus-visible.noBounce {
        transform: scaleX(1) scale(1);
    }
    .glassContainer:hover.noBounce span,
    .glassContainer:hover.noBounce img,
    .glassContainer:focus-visible.noBounce span,
    .glassContainer:focus-visible.noBounce img {
        transform: scaleX(1) scale(1);
    }

    .glassContainer:active.noBounce {
        transform: scaleX(1) scale(1);
    }

/* Round glass */

    .roundGlass {
        aspect-ratio: 1 / 1;
        border-radius: 50% !important;
    }