/* The old per-page toast styles were removed — every screen now uses the shared
   .wv-toast component in css/toast.css. */

/* =========================
   PRODUCT TYPE FILTER
   -------------------------
   Three columns so the heading keeps its centred position and the filter sits
   at the right edge; the empty first column balances the filter's width.
========================= */

.shop-products .shop-section-header {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: end;
    gap: 16px;
}

    .shop-section-header .section-header-text {
        grid-column: 2;
    }

    .shop-section-header .shop-filter {
        grid-column: 3;
        justify-self: end;
        display: flex;
        align-items: center;
        gap: 8px;
        white-space: nowrap;
    }

        .shop-section-header .shop-filter label {
            margin: 0;
            color: #5d6b87;
            font-size: 13px;
            font-weight: 600;
        }

        .shop-section-header .shop-filter select {
            min-width: 150px;
            padding: 10px 14px;
            border: 1px solid #d7dde8;
            border-radius: 10px;
            background: #fff;
            color: #071b63;
            font-size: 14px;
            cursor: pointer;
        }

            .shop-section-header .shop-filter select:focus {
                outline: none;
                border-color: #2453ff;
                box-shadow: 0 0 0 3px rgba(36, 83, 255, .15);
            }

/* .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;
    }

@media (max-width: 768px) {
    .shop-products .shop-section-header {
        grid-template-columns: 1fr;
    }

        .shop-section-header .section-header-text,
        .shop-section-header .shop-filter {
            grid-column: 1;
            justify-self: center;
        }
}

.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;
}
