/* The old per-page toast styles were removed — every screen now uses the shared
   .wv-toast component in css/toast.css. */

/* .product-card sets display:flex, which beats the browser's [hidden] rule — without
   this the filtered-out cards stay on screen even though the attribute is set. */
.product-grid .product-card[hidden] {
    display: none !important;
}

.shop-no-matches {
    margin: 24px 0 8px;
    color: #5d6b87;
    font-size: 15px;
    text-align: center;
}

    .shop-no-matches[hidden] {
        display: none;
    }

.cart-btn {
    position: relative;
}

.btn-loader {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

    .btn-loader span {
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: currentColor;
        animation: dotBounce 1.4s infinite ease-in-out both;
    }

        .btn-loader span:nth-child(1) {
            animation-delay: -0.32s;
        }

        .btn-loader span:nth-child(2) {
            animation-delay: -0.16s;
        }

        .btn-loader span:nth-child(3) {
            animation-delay: 0s;
        }

@keyframes dotBounce {
    0%, 80%, 100% {
        transform: scale(0);
        opacity: .4;
    }

    40% {
        transform: scale(1);
        opacity: 1;
    }
}
.btn-loader {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

    .btn-loader span {
        width: 6px;
        height: 6px;
        border-radius: 50%;
        background: white;
        display: block;
    }

        .btn-loader span:nth-child(1) {
            animation: dotLoader 1.4s infinite;
        }

        .btn-loader span:nth-child(2) {
            animation: dotLoader 1.4s .2s infinite;
        }

        .btn-loader span:nth-child(3) {
            animation: dotLoader 1.4s .4s infinite;
        }

@keyframes dotLoader {

    0%,100% {
        opacity: .3;
        transform: scale(.8);
    }

    50% {
        opacity: 1;
        transform: scale(1.3);
    }
}

/* ---------- Custom kit request form ----------
   Moved out of Shop.cshtml. */
.custom-kit-help { font-size: 13px; color: #61708d; line-height: 1.5; margin: 0 0 12px; }
.custom-kit-label { display: block; font-size: 13px; font-weight: 700; color: #22314f; margin-bottom: 6px; }
.custom-kit-input {
    width: 100%; height: 44px; border: 1px solid #d7dde8; border-radius: 10px;
    padding: 0 14px; font-size: 15px; margin-bottom: 12px;
}
.custom-kit-input:focus { outline: none; border-color: #1a73e8; }

/* Already-purchased License: disabled Add-to-Cart state (duplicate-license block). */
.cart-btn-disabled,
.cart-btn-disabled:hover {
    background: #eef1f6;
    color: #6b7280;
    cursor: not-allowed;
    box-shadow: none;
    opacity: 1;
}
