/**
 * Mimeeq Advanced Button Styles
 * Matching Shopify plugin button styling 1:1
 */

/* CSS Variables - Default values */
:root {
    --mmq-btn-gradient: linear-gradient(90deg, #E2B45C 0%, #E19E94 21.5%, #D19DCC 41.5%, #91AFDA 65%, #74C396 97.5%);
    --mmq-btn-gradient-rainbow: linear-gradient(90deg, #FF5178 0%, #FF9259 20%, #FFD23B 40%, #49B296 60%, #3EC3FF 80%, #622876 100%);
}

/* Base button styles */
.mmq-advanced-btn {
    display: flex;
    height: 60px;
    padding: var(--mmq-btn-padding-v, 20px) var(--mmq-btn-padding-h, 20px);
    justify-content: center;
    align-items: center;
    gap: 8px;
    align-self: stretch;
    background-color: var(--mmq-btn-bg, #fff);
    position: relative;
    cursor: pointer;
    border: none;
    width: 100%;
    font-size: 14px;
    font-style: normal;
    font-weight: 600;
    line-height: 20px;
    color: var(--mmq-btn-text, #2E3341);
    transition: color 0.2s ease-in-out, background-color 0.2s ease-in-out;
    box-sizing: border-box;
    font-family: inherit;
}

/* Border pseudo-element (gradient or custom) */
.mmq-advanced-btn::before {
    content: '';
    position: absolute;
    inset: 0;
    padding: 2px;
    background: var(--mmq-btn-border, var(--mmq-btn-gradient));
    background-size: 100%;
    -webkit-mask:
        linear-gradient(var(--mmq-btn-bg, #fff) 0 0) content-box,
        linear-gradient(var(--mmq-btn-bg, #fff) 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    opacity: 1;
    border-radius: inherit;
    pointer-events: none;
}

/* Hover states */
.mmq-advanced-btn:hover {
    color: var(--mmq-btn-hover-text, var(--mmq-btn-text));
}

.mmq-advanced-btn:hover .mmq-btn-icon {
    --mmq-btn-icon: var(--mmq-btn-hover-icon, var(--mmq-btn-icon));
}

/* Custom hover background (non-gradient) */
.mmq-advanced-btn:not(.mmq-btn--hover-gradient):hover {
    background-color: var(--mmq-btn-hover-bg, var(--mmq-btn-bg));
}

/* ========================================
   GRADIENT HOVER EFFECT (hover-fill)
   Uses dedicated .mmq-btn-hover-glow element
   ======================================== */

@keyframes mmq-hover-slide {
    0%, 100% {
        background-position: 0;
    }
    99.9999% {
        background-position: 100vw;
    }
}

/* Hover glow element - hidden by default */
.mmq-btn-hover-glow {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: conic-gradient(from 0deg at 50% 50%, 
        rgba(0, 0, 255, 0.07) 0deg, 
        rgba(0, 255, 255, 0.07) 72deg, 
        rgba(0, 255, 0, 0.07) 144deg, 
        rgba(255, 0, 0, 0.07) 216deg, 
        rgba(255, 255, 0, 0.07) 288deg, 
        rgba(255, 0, 255, 0.07) 324deg, 
        rgba(0, 0, 255, 0.07) 360deg);
    z-index: -1;
    filter: blur(7px);
    border-radius: inherit;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease-in-out;
}

/* Show hover glow on hover */
.mmq-advanced-btn.mmq-btn--hover-gradient:hover .mmq-btn-hover-glow {
    opacity: 1;
    animation: mmq-hover-slide 5s infinite linear;
}

/* On hover: make background transparent and stop border animation */
.mmq-advanced-btn.mmq-btn--hover-gradient:hover {
    background: transparent !important;
}

.mmq-advanced-btn.mmq-btn--hover-gradient:hover::before {
    animation: unset !important;
}

/* On hover: hide idle animations that use ::after */
.mmq-advanced-btn.mmq-btn--hover-gradient.mmq-btn--shimmer:hover::after,
.mmq-advanced-btn.mmq-btn--hover-gradient.mmq-btn--glow-pulse:hover::after {
    opacity: 0 !important;
    animation: none !important;
}

/* On hover: hide corner-sweep animation */
.mmq-advanced-btn.mmq-btn--hover-gradient:hover .mmq-btn-corner-sweep-box::before,
.mmq-advanced-btn.mmq-btn--hover-gradient:hover .mmq-btn-corner-sweep-box::after {
    animation: unset !important;
    opacity: 0 !important;
}

/* Ensure button content is above the glow */
.mmq-advanced-btn.mmq-btn--hover-gradient .mmq-btn-icon,
.mmq-advanced-btn.mmq-btn--hover-gradient .mmq-btn-label,
.mmq-advanced-btn.mmq-btn--hover-gradient .mmq-btn-loader {
    position: relative;
    z-index: 1;
}

.mmq-advanced-btn.mmq-btn--hover-gradient .mmq-btn-corner-sweep-box {
    z-index: 0;
}

/* Shape variants */
.mmq-advanced-btn.mmq-btn--rectangle {
    border-radius: 0;
}

.mmq-advanced-btn.mmq-btn--rectangle::before,
.mmq-advanced-btn.mmq-btn--rectangle::after {
    border-radius: 0;
}

.mmq-advanced-btn.mmq-btn--rounded {
    border-radius: 12px;
}

.mmq-advanced-btn.mmq-btn--rounded::before,
.mmq-advanced-btn.mmq-btn--rounded::after {
    border-radius: 12px;
}

.mmq-advanced-btn.mmq-btn--rounded .mmq-btn-corner-sweep-box,
.mmq-advanced-btn.mmq-btn--rounded .mmq-btn-corner-sweep-box::before,
.mmq-advanced-btn.mmq-btn--rounded .mmq-btn-corner-sweep-box::after {
    border-radius: 12px;
}

.mmq-advanced-btn.mmq-btn--pill {
    border-radius: 100px;
}

.mmq-advanced-btn.mmq-btn--pill::before,
.mmq-advanced-btn.mmq-btn--pill::after {
    border-radius: 100px;
}

.mmq-advanced-btn.mmq-btn--pill .mmq-btn-corner-sweep-box,
.mmq-advanced-btn.mmq-btn--pill .mmq-btn-corner-sweep-box::before,
.mmq-advanced-btn.mmq-btn--pill .mmq-btn-corner-sweep-box::after {
    border-radius: 100px;
}

.mmq-advanced-btn.mmq-btn--custom {
    border-radius: var(--mmq-btn-radius, 20px);
}

.mmq-advanced-btn.mmq-btn--custom::before,
.mmq-advanced-btn.mmq-btn--custom::after {
    border-radius: var(--mmq-btn-radius, 20px);
}

.mmq-advanced-btn.mmq-btn--custom .mmq-btn-corner-sweep-box,
.mmq-advanced-btn.mmq-btn--custom .mmq-btn-corner-sweep-box::before,
.mmq-advanced-btn.mmq-btn--custom .mmq-btn-corner-sweep-box::after {
    border-radius: var(--mmq-btn-radius, 20px);
}

/* Icon styles */
.mmq-btn-icon {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

/* Label */
.mmq-btn-label {
    white-space: nowrap;
}

/* Loader */
.mmq-btn-loader {
    display: none;
    justify-content: center;
    align-items: center;
    position: relative;
    padding: 32px 0;
    margin: 0 -5%;
    overflow: hidden;
    width: 100%;
}

.mmq-advanced-btn.mmq-btn--loading .mmq-btn-loader {
    display: flex;
}

.mmq-advanced-btn.mmq-btn--loading .mmq-btn-label,
.mmq-advanced-btn.mmq-btn--loading .mmq-btn-icon {
    display: none;
}

.mmq-btn-dots {
    position: relative;
    left: -9999px;
    width: 8px;
    height: 8px;
    border-radius: 5px;
    background-color: var(--mmq-btn-hover-text, var(--mmq-btn-text));
    color: var(--mmq-btn-hover-text, var(--mmq-btn-text));
    box-shadow: 9999px 0 0 -4px;
    animation: mmq-dot-pulse 1.5s infinite linear;
    animation-delay: 0.25s;
    display: block;
}

.mmq-btn-dots::before,
.mmq-btn-dots::after {
    content: "";
    display: inline-block;
    position: absolute;
    top: 0;
    width: 8px;
    height: 8px;
    border-radius: 5px;
    background-color: var(--mmq-btn-hover-text, var(--mmq-btn-text));
    color: var(--mmq-btn-hover-text, var(--mmq-btn-text));
}

.mmq-btn-dots::before {
    box-shadow: 9974px 0 0 -4px;
    animation: mmq-dot-pulse-before 1.5s infinite linear;
    animation-delay: 0s;
}

.mmq-btn-dots::after {
    box-shadow: 10014px 0 0 -4px;
    animation: mmq-dot-pulse-after 1.5s infinite linear;
    animation-delay: 0.5s;
}

/* ========================================
   IDLE ANIMATIONS
   ======================================== */

/* Animation: Shimmer */
.mmq-advanced-btn.mmq-btn--shimmer::after {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(
        90deg,
        transparent,
        rgba(255, 255, 255, 0.4),
        rgba(255, 255, 255, 0.6),
        rgba(255, 255, 255, 0.4),
        transparent
    );
    transform: skewX(-25deg);
    opacity: 1;
    pointer-events: none;
    border-radius: inherit;
    animation: mmq-shimmer var(--mmq-btn-anim-duration, 7s) infinite ease-out;
}

/* Animation: Border Pulse */
.mmq-advanced-btn.mmq-btn--border-pulse::before {
    animation: mmq-border-pulse var(--mmq-btn-anim-duration, 7s) infinite ease-in-out;
}

/* Animation: Glow Pulse */
.mmq-advanced-btn.mmq-btn--glow-pulse::after {
    content: '';
    position: absolute;
    inset: -5px;
    z-index: -2;
    background: var(--mmq-btn-border, var(--mmq-btn-gradient));
    filter: blur(10px);
    animation: mmq-glow var(--mmq-btn-anim-duration, 7s) infinite ease-in-out;
    border-radius: inherit;
    pointer-events: none;
}

/* Animation: Corner Sweep */
.mmq-advanced-btn.mmq-btn--corner-sweep {
    overflow: hidden;
}

.mmq-advanced-btn.mmq-btn--corner-sweep:hover {
    overflow: visible;
}

.mmq-btn-corner-sweep-box {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    display: block !important;
    pointer-events: none;
    border-radius: inherit;
}

.mmq-btn-corner-sweep-box::before,
.mmq-btn-corner-sweep-box::after {
    content: '';
    position: absolute;
    width: 0;
    height: 0;
    opacity: 0;
    pointer-events: none;
    animation: mmq-corner-sweep var(--mmq-btn-anim-duration, 7s) infinite ease-out;
}

.mmq-btn-corner-sweep-box::before {
    top: 0;
    left: 0;
    border-top: 6px solid var(--mmq-btn-bg, #fff);
    border-left: 6px solid var(--mmq-btn-bg, #fff);
    border-radius: inherit;
}

.mmq-btn-corner-sweep-box::after {
    bottom: 0;
    right: 0;
    top: auto;
    left: auto;
    border-bottom: 6px solid var(--mmq-btn-bg, #fff);
    border-right: 6px solid var(--mmq-btn-bg, #fff);
    border-radius: inherit;
}

/* Animation: Wave Border */
.mmq-advanced-btn.mmq-btn--wave-border::after {
    content: '';
    position: absolute;
    inset: 0;
    padding: 2px;
    background: linear-gradient(90deg, transparent 0%, #fff 20%, #fff 40%, transparent 60%, transparent 100%);
    background-size: 200% 100%;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    animation: mmq-wave-border var(--mmq-btn-anim-duration, 7s) infinite ease-in-out;
    border-radius: inherit;
    pointer-events: none;
}

/* No animation state */
.mmq-advanced-btn.mmq-btn--none::before,
.mmq-advanced-btn.mmq-btn--none::after {
    animation: none;
}

/* Animation stopped state - via JS */
.mmq-advanced-btn[data-animation-stopped="true"]::before {
    animation: none !important;
}

.mmq-advanced-btn.mmq-btn--shimmer[data-animation-stopped="true"]::after,
.mmq-advanced-btn.mmq-btn--glow-pulse[data-animation-stopped="true"]::after,
.mmq-advanced-btn.mmq-btn--wave-border[data-animation-stopped="true"]::after {
    animation: none !important;
    opacity: 0 !important;
}

.mmq-advanced-btn[data-animation-stopped="true"] .mmq-btn-corner-sweep-box::before,
.mmq-advanced-btn[data-animation-stopped="true"] .mmq-btn-corner-sweep-box::after {
    animation: none !important;
    opacity: 0 !important;
}

/* ========================================
   KEYFRAMES
   ======================================== */

/* Loader dots */
@keyframes mmq-dot-pulse-before {
    0% { box-shadow: 9974px 0 0 -4px; }
    30% { box-shadow: 9974px 0 0 2px; }
    60%, 100% { box-shadow: 9974px 0 0 -4px; }
}

@keyframes mmq-dot-pulse {
    0% { box-shadow: 9999px 0 0 -4px; }
    30% { box-shadow: 9999px 0 0 2px; }
    60%, 100% { box-shadow: 9999px 0 0 -4px; }
}

@keyframes mmq-dot-pulse-after {
    0% { box-shadow: 10014px 0 0 -4px; }
    30% { box-shadow: 10014px 0 0 2px; }
    60%, 100% { box-shadow: 10014px 0 0 -4px; }
}

/* Shimmer animation */
@keyframes mmq-shimmer {
    0% {
        left: -100%;
        opacity: 1;
    }
    25% {
        opacity: 1;
    }
    50% {
        left: 200%;
        opacity: 0;
    }
    50.01%, 100% {
        left: -100%;
        opacity: 0;
    }
}

/* Border Pulse animation */
@keyframes mmq-border-pulse {
    0% {
        opacity: 1;
        background-position: 100% 50%;
    }
    25% {
        opacity: 0.1;
        background-position: 0% 50%;
    }
    50% {
        opacity: 1;
        background-position: 100% 50%;
    }
    50.01%, 100% {
        opacity: 1;
        background-position: 100% 50%;
    }
}

/* Glow animation */
@keyframes mmq-glow {
    0% { opacity: 0; }
    25% { opacity: 1; }
    50% { opacity: 0; }
    50.01%, 100% { opacity: 0; }
}

/* Corner Sweep animation */
@keyframes mmq-corner-sweep {
    0% {
        opacity: 0;
        width: 0;
        height: 0;
    }
    25% {
        opacity: 1;
        width: 100%;
        height: 100%;
    }
    50% {
        opacity: 0;
        width: 0;
        height: 0;
    }
    50.01%, 100% {
        opacity: 0;
        width: 0;
        height: 0;
    }
}

/* Wave Border animation */
@keyframes mmq-wave-border {
    0% {
        background-position: 200% 0;
        opacity: 0;
    }
    25% {
        background-position: 0% 0;
        opacity: 1;
    }
    50% {
        background-position: -200% 0;
        opacity: 0;
    }
    50.01%, 100% {
        background-position: 200% 0;
        opacity: 0;
    }
}

/* Hover slide animation - exactly as Shopify */
@keyframes mmq-hover-slide {
    0%, 100% {
        background-position: 0;
    }
    99.9999% {
        background-position: 100vw;
    }
}

/* ========================================
   RESPONSIVE
   ======================================== */

@media (max-width: 480px) {
    .mmq-advanced-btn {
        font-size: 13px;
        gap: 6px;
    }
    
    .mmq-btn-icon {
        width: 18px;
        height: 18px;
    }
}
