/** +------------------------+ **/
/** | Base styling           | **/
/** +------------------------+ **/

.button-xs, .button-sm, .button, .button-lg {
    @apply inline-grid grid-rows-1 auto-cols-max grid-flow-col gap-x-1 items-center justify-center;
}

.button-xs:not(.button-group > .button-xs),
.button-sm:not(.button-group > .button-sm),
.button:not(.button-group > .button),
.button-lg:not(.button-group > .button-lg) {
    @apply rounded-lg;
}

.button-xs {
    @apply p-1;
}

.button-sm {
    @apply px-3 py-1;
}

.button {
    @apply px-4 py-2;
}

.button-lg {
    @apply px-5 py-3;
}


/** +------------------------+ **/
/** | Gradient Buttons       | **/
/** +------------------------+ **/

.button-xs[class*="button-gradient"],
.button-sm[class*="button-gradient"],
.button[class*="button-gradient"],
.button-lg[class*="button-gradient"] {
    @apply transition-all duration-300 ease-in-out border-2;
}

.button-gradient-primary {
    @apply text-white;
    background: linear-gradient(to right, hsl(291, 95.9%, 61.8%), hsl(187, 100%, 41.6%));
    border-color: hsl(187, 100%, 41.6%);
    box-shadow: 0 4px 12px 0 hsla(223, 15.7%, 65.1%, 0.1);
}
.button-gradient-primary:hover {
    border-color: hsl(187, 100%, 51.6%);
}

.button-gradient-secondary {
    @apply text-white;
    background: linear-gradient(to right, hsl(229, 75.9%, 65.9%), hsl(270, 36.7%, 46.5%) 90%);
    border-color: hsl(270, 36.7%, 46.5%);
    box-shadow: 0 4px 15px 0 hsla(265, 36%, 48.4%, 0.75);
}
.button-gradient-secondary:hover {
    border-color: hsl(270, 36.7%, 56.5%);
}

.button-gradient-tertiary {
    @apply text-white;
    background: linear-gradient(to right, hsl(212, 18.8%, 19.8%), hsl(211, 15.8%, 33.5%));
    border-color: hsl(211, 15.8%, 33.5%);
    box-shadow: 0 4px 15px 0 hsla(213, 18.2%, 21.6%, 0.75);
}
.button-gradient-tertiary:hover {
    border-color: hsl(211, 15.8%, 43.5%);
    backdrop-filter: blur(25px) brightness(125%) hue-rotate(20deg);
}

.button-gradient-info {
    @apply text-white;
    background: linear-gradient(to right, hsl(198, 75.8%, 51.4%), hsl(218, 80.7%, 59.4%));
    border-color: hsl(218, 80.7%, 59.4%);
    box-shadow: 0 4px 15px 0 hsla(216, 80.1%, 58.6%, 0.75);
}
.button-gradient-info:hover {
    border-color: hsl(218, 80.7%, 69.4%);
}

.button-gradient-success {
    @apply text-white;
    background: linear-gradient(to right, hsl(151, 71.8%, 52.7%), hsl(151, 61.8%, 44.1%));
    border-color: hsl(151, 61.8%, 44.1%);
    box-shadow: 0 4px 15px 0 hsla(155, 75.9%, 37.5%, 0.75);
}
.button-gradient-success:hover {
    border-color: hsl(151, 61.8%, 54.1%);
}

.button-gradient-warning {
    @apply text-white;
    background: linear-gradient(to right, hsl(44, 88%, 67.3%), hsl(14, 97.4%, 45.3%));
    border-color: hsl(14, 97.4%, 45.3%);
    box-shadow: 0 4px 15px 0 hsla(15, 91.6%, 46.9%, 0.75);
}
.button-gradient-warning:hover {
    border-color: hsl(14, 97.4%, 55.3%);
}

.button-gradient-danger {
    @apply text-white;
    background: linear-gradient(to right, hsl(357, 81.7%, 57.3%), hsl(358, 84%, 65.7%));
    border-color: hsl(358, 84%, 65.7%);
    box-shadow: 0 5px 15px hsla(358, 96.1%, 69.8%, 0.4);
}
.button-gradient-danger:hover {
    border-color: hsl(358, 84%, 75.7%);
}


/** +------------------------+ **/
/** | Outline Buttons        | **/
/** +------------------------+ **/

.button-xs[class*="button-outline"],
.button-sm[class*="button-outline"],
.button[class*="button-outline"],
.button-lg[class*="button-outline"] {
    @apply font-bold transition-all duration-300 ease-in-out border-2 bg-transparent;
}

.button-outline-primary {
    color: hsl(187, 100%, 41.6%);
    border-color: hsl(187, 100%, 41.6%);
    box-shadow: 0 4px 12px 0 hsla(187, 100%, 41.6%, 0.25), inset 0 4px 12px 0 hsla(187, 100%, 41.6%, 0.25);
}
.button-outline-primary:hover {
    color: hsl(187, 100%, 61.6%);
    border-color: hsl(187, 100%, 61.6%);
    box-shadow: 0 6px 16px 0 hsla(187, 100%, 61.6%, 0.33), inset 0 6px 16px 0 hsla(187, 100%, 61.6%, 0.33);
}

.button-outline-secondary {
    color: hsl(270, 36.7%, 46.5%);
    border-color: hsl(270, 36.7%, 46.5%);
    box-shadow: 0 4px 12px 0 hsla(270, 36.7%, 46.5%, 0.25), inset 0 4px 12px 0 hsla(270, 36.7%, 46.5%, 0.25);
}
.button-outline-secondary:hover {
    color: hsl(270, 36.7%, 66.5%);
    border-color: hsl(270, 36.7%, 66.5%);
    box-shadow: 0 6px 16px 0 hsla(270, 36.7%, 66.5%, 0.33), inset 0 6px 16px 0 hsla(270, 36.7%, 66.5%, 0.33);
}

.button-outline-tertiary {
    color: hsl(211, 15.8%, 33.5%);
    border-color: hsl(211, 15.8%, 33.5%);
    box-shadow: 0 4px 12px 0 hsla(211, 15.8%, 33.5%, 0.25), inset 0 4px 12px 0 hsla(211, 15.8%, 33.5%, 0.25);
}
.button-outline-tertiary:hover {
    color: hsl(211, 15.8%, 53.5%);
    border-color: hsl(211, 15.8%, 53.5%);
    box-shadow: 0 6px 16px 0 hsla(211, 15.8%, 53.5%, 0.33), inset 0 6px 16px 0 hsla(211, 15.8%, 53.5%, 0.33);
}

.button-outline-info {
    color: hsl(218, 80.7%, 59.4%);
    border-color: hsl(218, 80.7%, 59.4%);
    box-shadow: 0 4px 12px 0 hsla(218, 80.7%, 59.4%, 0.25), inset 0 4px 12px 0 hsla(218, 80.7%, 59.4%, 0.25);
}
.button-outline-info:hover {
    color: hsl(218, 80.7%, 79.4%);
    border-color: hsl(218, 80.7%, 79.4%);
    box-shadow: 0 6px 16px 0 hsla(218, 80.7%, 79.4%, 0.33), inset 0 6px 16px 0 hsla(218, 80.7%, 79.4%, 0.33);
}

.button-outline-success {
    color: hsl(151, 61.8%, 44.1%);
    border-color: hsl(151, 61.8%, 44.1%);
    box-shadow: 0 4px 12px 0 hsla(151, 61.8%, 44.1%, 0.25), inset 0 4px 12px 0 hsla(151, 61.8%, 44.1%, 0.25);
}
.button-outline-success:hover {
    color: hsl(151, 61.8%, 64.1%);
    border-color: hsl(151, 61.8%, 64.1%);
    box-shadow: 0 6px 16px 0 hsla(151, 61.8%, 64.1%, 0.33), inset 0 6px 16px 0 hsla(151, 61.8%, 64.1%, 0.33);
}

.button-outline-warning {
    color: hsl(14, 97.4%, 45.3%);
    border-color: hsl(14, 97.4%, 45.3%);
    box-shadow: 0 4px 12px 0 hsla(14, 97.4%, 45.3%, 0.25), inset 0 4px 12px 0 hsla(14, 97.4%, 45.3%, 0.25);
}
.button-outline-warning:hover {
    color: hsl(14, 97.4%, 65.3%);
    border-color: hsl(14, 97.4%, 65.3%);
    box-shadow: 0 6px 16px 0 hsla(14, 97.4%, 65.3%, 0.33), inset 0 6px 16px 0 hsla(14, 97.4%, 65.3%, 0.33);
}

.button-outline-danger {
    color: hsl(358, 84%, 65.7%);
    border-color: hsl(358, 84%, 65.7%);
    box-shadow: 0 4px 12px 0 hsla(358, 84%, 65.7%, 0.25), inset 0 4px 12px 0 hsla(358, 84%, 65.7%, 0.25);
}
.button-outline-danger:hover {
    color: hsl(358, 84%, 85.7%);
    border-color: hsl(358, 84%, 85.7%);
    box-shadow: 0 6px 16px 0 hsla(358, 84%, 85.7%, 0.33), inset 0 6px 16px 0 hsla(358, 84%, 85.7%, 0.33);
}
