/**
 * Product search filter toolbar — unified control system.
 */

.vgl-product-filter-toolbar {
    --vgl-ft-h: 2.5rem;
    --vgl-ft-radius: 10px;
    --vgl-ft-bg: var(--vgl-color-bg-alt, #f5f7fa);
    --vgl-ft-border: transparent;
    --vgl-ft-border-hover: #d7dee8;
    --vgl-ft-focus-ring: var(--vgl-color-primary-soft, rgba(0, 107, 189, 0.12));

    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    margin-bottom: var(--vgl-space-5);
    padding: var(--vgl-space-4) 0 1rem;
    border-top: 1px solid var(--vgl-color-border);
    border-bottom: 1px solid var(--vgl-color-border);
    background: transparent;
}

.vgl-product-filter-toolbar__count {
    margin: 0;
    font-size: var(--vgl-font-size-xs, 0.75rem);
    font-weight: 500;
    color: var(--vgl-color-text-muted);
}

.vgl-product-filter-toolbar__form,
.vgl-product-filter-toolbar__form-inner {
    width: 100%;
    margin: 0;
}

/* ── Shared control primitive ── */
.vgl-product-filter-toolbar .vgl-ft-control {
    box-sizing: border-box;
    min-height: var(--vgl-ft-h);
    border: 1px solid var(--vgl-ft-border);
    border-radius: var(--vgl-ft-radius);
    background: var(--vgl-ft-bg);
    color: var(--vgl-color-text);
    font-family: inherit;
    font-size: var(--vgl-font-size-sm);
    line-height: 1.25;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

.vgl-product-filter-toolbar .vgl-ft-control:hover {
    border-color: var(--vgl-ft-border-hover);
    background: #fff;
}

.vgl-product-filter-toolbar .vgl-ft-control:focus,
.vgl-product-filter-toolbar .vgl-ft-control:focus-visible,
.vgl-product-filter-toolbar .vgl-ft-control:focus-within {
    outline: none;
    border-color: var(--vgl-color-primary);
    box-shadow: 0 0 0 3px var(--vgl-ft-focus-ring);
    background: #fff;
}

/* Search with external icon */
.vgl-product-filter-toolbar__search {
    position: relative;
    min-width: 0;
}

.vgl-product-filter-toolbar__search-icon {
    position: absolute;
    left: 0.85rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--vgl-color-text-muted);
    pointer-events: none;
    z-index: 1;
}

.vgl-product-filter-toolbar #filter-search-input {
    width: 100%;
    height: var(--vgl-ft-h);
    margin-bottom: 0;
    padding: 0 0.85rem 0 2.75rem;
    border: 1px solid var(--vgl-ft-border);
    border-radius: var(--vgl-ft-radius);
    background: var(--vgl-ft-bg);
    font-weight: 400;
    font-size: var(--vgl-font-size-sm);
    box-sizing: border-box;
}

.vgl-product-filter-toolbar #filter-search-input:focus {
    border-color: var(--vgl-color-primary);
    box-shadow: 0 0 0 3px var(--vgl-ft-focus-ring);
    background: #fff;
}

.vgl-product-filter-toolbar .vgl-ft-control--search {
    width: 100%;
    padding: 0 0.85rem 0 2.75rem;
    background-image: none;
}

.vgl-product-filter-toolbar .vgl-ft-control--menu {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 0.5rem;
    height: var(--vgl-ft-h);
    padding: 0 2rem 0 0.75rem;
    font-weight: 500;
    cursor: pointer;
    white-space: nowrap;
}

.vgl-product-filter-toolbar button.vgl-ft-control--menu {
    appearance: none;
    -webkit-appearance: none;
    margin: 0;
    font-family: inherit;
    line-height: inherit;
    color: inherit;
    text-align: left;
}

.vgl-product-filter-toolbar .vgl-product-filter-toolbar__dropdown-trigger {
    position: relative;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 6.646a.5.5 0 0 1 .708 0L8 9.293l2.646-2.647a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.65rem center;
}

.vgl-product-filter-toolbar select.vgl-ft-control--menu {
    appearance: none;
    justify-content: space-between;
    padding-right: 2rem;
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2364748b' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 6.646a.5.5 0 0 1 .708 0L8 9.293l2.646-2.647a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.65rem center;
    cursor: pointer;
}

/* Deals toggle switch */
.vgl-product-filter-toolbar .vgl-ft-control--toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    height: var(--vgl-ft-h);
    padding: 0 0.75rem;
    margin: 0;
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}

.vgl-product-filter-toolbar .vgl-ft-control__switch-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.vgl-product-filter-toolbar .vgl-ft-control__switch {
    position: relative;
    flex-shrink: 0;
    width: 2.125rem;
    height: 1.25rem;
    border-radius: 999px;
    background: #cbd5e1;
    transition: background-color 0.2s ease;
}

.vgl-product-filter-toolbar .vgl-ft-control__switch::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.18);
    transition: transform 0.2s ease;
}

.vgl-product-filter-toolbar .vgl-ft-control--toggle:has(.vgl-ft-control__switch-input:checked) {
    border-color: var(--vgl-color-primary);
    background: var(--vgl-color-primary-soft, rgba(0, 107, 189, 0.08));
    color: var(--vgl-color-primary);
}

.vgl-product-filter-toolbar .vgl-ft-control--toggle:has(.vgl-ft-control__switch-input:checked) .vgl-ft-control__switch {
    background: var(--vgl-color-primary);
}

.vgl-product-filter-toolbar .vgl-ft-control--toggle:has(.vgl-ft-control__switch-input:checked) .vgl-ft-control__switch::after {
    transform: translateX(0.875rem);
}

.vgl-product-filter-toolbar .vgl-ft-control__label {
    font-size: var(--vgl-font-size-sm);
    font-weight: 500;
}

/* Price inputs */
.vgl-product-filter-toolbar .vgl-ft-control--price {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    height: var(--vgl-ft-h);
    padding: 0 0.5rem;
    min-width: 6.75rem;
    flex: 1 1 6.75rem;
}

.vgl-product-filter-toolbar .vgl-ft-control__prefix {
    font-size: var(--vgl-font-size-xs, 0.75rem);
    font-weight: 600;
    color: var(--vgl-color-text-muted);
    flex-shrink: 0;
}

.vgl-product-filter-toolbar .vgl-ft-control--price .price-range-input {
    width: 100%;
    min-width: 4.5rem;
    max-width: none;
    height: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    font-size: var(--vgl-font-size-sm);
    font-weight: 600;
    text-align: right;
    color: inherit;
}

.vgl-product-filter-toolbar .vgl-ft-control--price .price-range-input:focus {
    outline: none;
}

/* ── Layout rows ── */
.vgl-product-filter-toolbar__layout {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: 100%;
}

.vgl-product-filter-toolbar__row--top {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.75rem;
    align-items: center;
}

.vgl-product-filter-toolbar__row--filters {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.5rem;
}

.vgl-product-filter-toolbar__price-col {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    flex-shrink: 0;
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
}

.vgl-product-filter-toolbar__price-col.is-active .vgl-product-filter-toolbar__price-track {
    --vgl-price-track-active: var(--vgl-color-primary);
}

.vgl-product-filter-toolbar__price-inputs-wrap {
    width: 100%;
}

.vgl-product-filter-toolbar__price-inputs {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: nowrap;
}

.vgl-product-filter-toolbar__price-sep {
    color: var(--vgl-color-text-muted);
    font-size: var(--vgl-font-size-sm);
    user-select: none;
}

.vgl-product-filter-toolbar__price-slider-row {
    width: 100%;
    padding: 0.35rem 0;
    box-sizing: border-box;
}

.vgl-product-filter-toolbar__price-track,
.vgl-product-filter-toolbar__price-slider-row #slider-range {
    display: block;
    width: 100%;
    height: 3px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    box-sizing: border-box;
    touch-action: none;
}

.vgl-product-filter-toolbar__price-col .price-loader {
    display: none !important;
}

.vgl-product-filter-toolbar__facets {
    display: flex;
    flex: 1 1 auto;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.vgl-product-filter-toolbar__facets-head {
    display: none;
}

.vgl-product-filter-toolbar__dropdowns {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

.vgl-product-filter-toolbar__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-left: auto;
}

.vgl-product-filter-toolbar__sort {
    min-width: 0;
}

.vgl-product-filter-toolbar__select {
    min-width: 10.5rem;
    max-width: 14rem;
}

.vgl-product-filter-toolbar__extras {
    display: none;
}

.vgl-product-filter-toolbar__extras .sidebar_button {
    display: none;
}

/* jQuery UI slider — toolbar scope */
.vgl-product-filter-toolbar .ui-slider {
    margin: 0;
    height: 3px;
    border: 0;
    background: #e2e8f0;
    border-radius: 999px;
}

.vgl-product-filter-toolbar .ui-slider .ui-slider-range {
    background: var(--vgl-price-track-active, var(--vgl-color-primary)) !important;
    border: 0 !important;
    border-radius: 999px;
}

.vgl-product-filter-toolbar .ui-slider .ui-slider-handle {
    top: 50%;
    width: 12px;
    height: 12px;
    margin-top: -6px;
    margin-left: -6px;
    border: 2px solid #fff;
    border-radius: 50%;
    background: var(--vgl-color-primary);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.18);
    cursor: grab;
    touch-action: none;
}

.vgl-product-filter-toolbar .ui-slider .ui-slider-handle:focus {
    outline: none;
    box-shadow: 0 0 0 3px var(--vgl-ft-focus-ring), 0 1px 4px rgba(15, 23, 42, 0.2);
}

/* Dropdown panels */
.vgl-product-filter-toolbar__dropdown {
    position: relative;
}

.vgl-product-filter-toolbar__dropdown.is-open .vgl-product-filter-toolbar__dropdown-trigger,
.vgl-product-filter-toolbar__dropdown#labels_d.is-open .vgl-product-filter-toolbar__dropdown-trigger {
    border-color: var(--vgl-color-primary);
    color: var(--vgl-color-primary);
    background: #fff;
}

.vgl-product-filter-toolbar__panel {
    position: absolute;
    top: calc(100% + 0.35rem);
    left: 0;
    right: auto;
    z-index: 40;
    min-width: 16rem;
    max-width: 22rem;
    max-height: 18rem;
    overflow: auto;
    padding: var(--vgl-space-3);
    border: 1px solid var(--vgl-color-border);
    border-radius: var(--vgl-ft-radius);
    background: #fff;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.1);
}

.vgl-product-filter-toolbar__panel .categories-sidebar,
.vgl-product-filter-toolbar__panel .brands-sidebar,
.vgl-product-filter-toolbar__panel .merchants-sidebar,
.vgl-product-filter-toolbar__panel .labels_field {
    margin: 0;
    padding: 0;
    list-style: none;
}

.vgl-product-filter-toolbar__panel .merchants-sidebar {
    display: block;
    flex-wrap: nowrap;
    justify-content: flex-start;
}

.vgl-product-filter-toolbar__panel .checkbox {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.35rem 0;
    font-size: var(--vgl-font-size-sm);
    cursor: pointer;
}

.vgl-product-filter-toolbar__panel .merchants-sidebar .checkbox input[type="checkbox"] {
    position: static;
    width: auto;
    height: auto;
    margin: 0.15rem 0 0;
    clip: auto;
    overflow: visible;
}

.vgl-product-filter-toolbar__panel .labels_field {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.vgl-product-filter-toolbar__panel .labels_field .checkbox {
    align-items: center;
    gap: 0.65rem;
}

.vgl-product-filter-toolbar__panel .labels_field .sidebar_label {
    display: block;
    width: 2.25rem;
    height: 2.25rem;
    object-fit: contain;
    flex-shrink: 0;
}

.vgl-product-filter-toolbar__panel .labels_field .popuptext {
    display: none;
}

.vgl-product-filter-toolbar__dropdown#labels_d:not(.display_none) {
    display: block;
}

.vgl-product-filter-toolbar__dropdown-trigger.has-active::before {
    content: "";
    width: 0.4rem;
    height: 0.4rem;
    border-radius: 999px;
    background: var(--vgl-color-primary);
    flex-shrink: 0;
}

/* Active filter chips */
.vgl-product-filter-toolbar__chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.vgl-product-filter-toolbar__chips:empty {
    display: none;
}

.vgl-product-filter-toolbar__chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.25rem 0.6rem;
    border-radius: 999px;
    background: var(--vgl-color-primary-soft, rgba(0, 107, 189, 0.1));
    color: var(--vgl-color-primary);
    font-size: var(--vgl-font-size-xs, 0.75rem);
    font-weight: 600;
}

.vgl-product-filter-toolbar__chip button {
    border: 0;
    background: transparent;
    color: inherit;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    padding: 0;
}

/* Legacy sidebar (non-toolbar pages) */
.vgl-product-filter-toolbar__facets--legacy {
    display: block;
}

/* ── Desktop layout ── */
@media (min-width: 992px) {
    .vgl-product-filter-toolbar__price-col {
        width: 17.5rem;
    }

    .vgl-product-filter-toolbar__row--filters {
        flex-wrap: nowrap;
    }
}

@media (min-width: 768px) and (max-width: 991px) {
    .vgl-product-filter-toolbar__price-col {
        width: 100%;
    }

    .vgl-product-filter-toolbar__row--filters {
        display: grid;
        grid-template-columns: 1fr;
        gap: 0.5rem;
    }

    .vgl-product-filter-toolbar__facets,
    .vgl-product-filter-toolbar__actions {
        margin-left: 0;
        width: 100%;
    }

    .vgl-product-filter-toolbar__actions {
        justify-content: flex-start;
    }

    .vgl-product-filter-toolbar__select {
        max-width: none;
        width: 100%;
    }
}

/* ── Mobile layout ── */
@media (max-width: 767px) {
    .vgl-product-filter-toolbar {
        padding-bottom: 0.75rem;
    }

    .vgl-product-filter-toolbar__row--top {
        grid-template-columns: 1fr;
        gap: 0.35rem;
    }

    .vgl-product-filter-toolbar__count {
        text-align: right;
    }

    .vgl-product-filter-toolbar__row--filters {
        flex-direction: column;
        align-items: stretch;
    }

    .vgl-product-filter-toolbar__price-col {
        width: 100%;
    }

    .vgl-product-filter-toolbar__price-inputs {
        width: 100%;
    }

    .vgl-product-filter-toolbar .vgl-ft-control--price {
        flex: 1 1 calc(50% - 1rem);
        min-width: 0;
    }

    .vgl-product-filter-toolbar .vgl-ft-control--price .price-range-input {
        width: 100%;
        min-width: 4rem;
    }

    .vgl-product-filter-toolbar__facets {
        width: 100%;
    }

    .vgl-product-filter-toolbar__dropdowns {
        width: 100%;
    }

    .vgl-product-filter-toolbar__dropdown {
        flex: 1 1 calc(50% - 0.25rem);
        min-width: calc(50% - 0.25rem);
    }

    .vgl-product-filter-toolbar__dropdown-trigger {
        width: 100%;
    }

    .vgl-product-filter-toolbar__actions {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0.5rem;
        width: 100%;
        margin-left: 0;
    }

    .vgl-product-filter-toolbar .vgl-ft-control--toggle {
        grid-column: 1 / -1;
        width: 100%;
        justify-content: space-between;
    }

    .vgl-product-filter-toolbar__sort {
        grid-column: 1 / -1;
    }

    .vgl-product-filter-toolbar__select {
        width: 100%;
        max-width: none;
    }

    .vgl-product-filter-toolbar__panel {
        position: absolute;
        left: 0;
        right: auto;
        width: max(100%, 16rem);
        max-width: min(22rem, calc(100vw - 2rem));
        box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
        border: 1px solid var(--vgl-color-border);
        padding: var(--vgl-space-3);
    }
}
