/**
 * AV WooCommerce Search - Frontend Styles
 */

/* ================================
   FORM LAYOUTS
   ================================ */

.avws-search-form {
    width: 100%;
}

/* Vertical Layout */
.avws-search-form.avws-layout-vertical .avws-fields-wrapper {
    display: flex;
    flex-direction: column;
}

.avws-search-form.avws-layout-vertical .avws-field-wrapper {
    margin-bottom: 15px;
}

.avws-search-form.avws-layout-vertical .avws-field-wrapper:last-child {
    margin-bottom: 0;
}

/* Horizontal Layout (Grid) */
.avws-search-form.avws-layout-horizontal .avws-fields-wrapper {
    display: grid;
    gap: 15px;
}

/* Inline Layout - tout sur une ligne */
.avws-search-form.avws-layout-inline {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 15px;
}

.avws-search-form.avws-layout-inline .avws-fields-wrapper {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 15px;
    flex: 1 1 auto;
}

.avws-search-form.avws-layout-inline .avws-field-wrapper {
    flex: 1 1 150px;
    min-width: 150px;
    display: flex;
    flex-direction: column;
}

.avws-search-form.avws-layout-inline .avws-field-wrapper .avws-field {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
}

.avws-search-form.avws-layout-inline .avws-submit-wrapper {
    flex: 0 0 auto;
    margin-top: 0;
    display: flex;
    align-items: flex-end;
}

/* Assurer une hauteur cohérente pour les champs et le bouton */
.avws-search-form.avws-layout-inline .avws-search-input,
.avws-search-form.avws-layout-inline .select2-container--default .select2-selection--single,
.avws-search-form.avws-layout-inline .select2-container--default .select2-selection--multiple,
.avws-search-form.avws-layout-inline .avws-submit-button {
    box-sizing: border-box;
}

/* ================================
   FIELD WRAPPERS
   ================================ */

.avws-field-wrapper {
    position: relative;
}

.avws-field-label {
    display: block;
    margin-bottom: 5px;
    font-weight: 600;
    font-size: 14px;
}

.avws-field {
    position: relative;
}

/* ================================
   SEARCH INPUT
   ================================ */

.avws-search-input-field {
    position: relative;
}

.avws-search-input {
    width: 100%;
    padding: 10px 15px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 14px;
    line-height: 1.5;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.avws-search-input:focus {
    outline: none;
    border-color: #2271b1;
    box-shadow: 0 0 0 1px #2271b1;
}

/* ================================
   AUTOCOMPLETE RESULTS
   ================================ */

.avws-autocomplete-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1000;
    background: #fff;
    border: 1px solid #ddd;
    border-top: none;
    border-radius: 0 0 4px 4px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    max-height: 400px;
    overflow-y: auto;
    display: none;
}

.avws-autocomplete-results.active {
    display: block;
}

.avws-autocomplete-item {
    display: flex;
    align-items: center;
    padding: 10px 15px;
    cursor: pointer;
    transition: background-color 0.15s;
    border-bottom: 1px solid #f0f0f0;
}

.avws-autocomplete-item:last-child {
    border-bottom: none;
}

.avws-autocomplete-item:hover,
.avws-autocomplete-item.highlighted {
    background-color: #f7f7f7;
}

.avws-autocomplete-item-image {
    width: 50px;
    height: 50px;
    margin-right: 12px;
    border-radius: 4px;
    object-fit: cover;
    flex-shrink: 0;
}

.avws-autocomplete-item-image.no-image {
    background: #f0f0f0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #999;
    font-size: 20px;
}

.avws-autocomplete-item-content {
    flex: 1;
    min-width: 0;
}

.avws-autocomplete-item-title {
    font-weight: 600;
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.avws-autocomplete-item-meta {
    font-size: 12px;
    color: #666;
}

.avws-autocomplete-item-price {
    font-weight: 600;
    color: #2271b1;
}

.avws-autocomplete-item-sku {
    margin-left: 10px;
    color: #999;
}

.avws-autocomplete-loading,
.avws-autocomplete-no-results {
    padding: 15px;
    text-align: center;
    color: #666;
}

.avws-autocomplete-view-all {
    display: block;
    padding: 12px 15px;
    text-align: center;
    background: #f7f7f7;
    color: #2271b1;
    font-weight: 600;
    text-decoration: none;
    border-top: 1px solid #ddd;
}

.avws-autocomplete-view-all:hover {
    background: #eee;
    color: #135e96;
}

/* ================================
   TAXONOMY SELECTS
   ================================ */

.avws-taxonomy-select {
    width: 100%;
}

/* Select natif */
.avws-field-type-select select {
    width: 100%;
    padding: 10px 15px;
    border: 1px solid #ddd;
    border-radius: 4px;
    font-size: 14px;
    line-height: 1.5;
    background: #fff;
    cursor: pointer;
}

.avws-field-type-select select:focus {
    outline: none;
    border-color: #2271b1;
    box-shadow: 0 0 0 1px #2271b1;
}

/* ================================
   SELECT2 CUSTOMIZATION
   ================================ */

.avws-search-form .select2-container {
    width: 100% !important;
}

.avws-search-form .select2-container--default .select2-selection--single,
.avws-search-form .select2-container--default .select2-selection--multiple {
    border: 1px solid #ddd;
    border-radius: 4px;
    min-height: 42px;
    padding: 5px 10px;
}

.avws-search-form .select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 30px;
    padding-left: 0;
}

.avws-search-form .select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 40px;
}

.avws-search-form .select2-container--default .select2-selection--multiple .select2-selection__rendered {
    padding: 0;
}

.avws-search-form .select2-container--default .select2-selection--multiple .select2-selection__choice {
    background: #2271b1;
    border: none;
    color: #fff;
    padding: 3px 8px;
    border-radius: 3px;
    margin: 3px 3px 3px 0;
}

.avws-search-form .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: #fff;
    margin-right: 5px;
}

.avws-search-form .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: #fff;
    background: transparent;
}

.avws-search-form .select2-container--default.select2-container--focus .select2-selection--single,
.avws-search-form .select2-container--default.select2-container--focus .select2-selection--multiple,
.avws-search-form .select2-container--default.select2-container--open .select2-selection--single,
.avws-search-form .select2-container--default.select2-container--open .select2-selection--multiple {
    border-color: #2271b1;
    box-shadow: 0 0 0 1px #2271b1;
}

/* Select2 Dropdown */
.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: #2271b1;
}

/* ================================
   CHECKBOX FIELDS
   ================================ */

.avws-checkbox-group {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.avws-checkbox-label {
    display: flex;
    align-items: center;
    cursor: pointer;
    padding: 8px 12px;
    background: #f7f7f7;
    border: 1px solid #ddd;
    border-radius: 4px;
    transition: all 0.2s;
}

.avws-checkbox-label:hover {
    background: #eee;
    border-color: #ccc;
}

.avws-checkbox-label input {
    margin-right: 8px;
}

.avws-checkbox-label input:checked + span {
    font-weight: 600;
}

.avws-term-count {
    font-size: 12px;
    color: #999;
    margin-left: 5px;
}

/* ================================
   MERGED TAXONOMY SELECT
   ================================ */

.avws-merged-option {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
}

.avws-merged-option-text {
    flex: 1;
}

.avws-merged-option-count {
    font-size: 12px;
    color: #666;
    background: #f0f0f0;
    padding: 2px 8px;
    border-radius: 10px;
    margin-left: 10px;
    white-space: nowrap;
}

/* Masquer la flèche du select fusionné */
.avws-hide-arrow .select2-container--default .select2-selection--single .select2-selection__arrow {
    display: none;
}

.avws-hide-arrow .select2-container--default .select2-selection--single .select2-selection__rendered {
    padding-right: 10px;
}

.avws-hide-arrow .select2-container--default .select2-selection--single {
    cursor: text;
}

/* ================================
   GEOLOCATION FIELD
   ================================ */

.avws-geolocation-field {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.avws-geolocation-btn-wrapper {
    display: flex;
    align-items: center;
    gap: 10px;
}

.avws-geolocation-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    background: #f7f7f7;
    border: 1px solid #ddd;
    border-radius: 4px;
    cursor: pointer;
    font-size: 14px;
    transition: all 0.2s;
}

.avws-geolocation-btn:hover {
    background: #eee;
    border-color: #ccc;
}

.avws-geolocation-btn.loading {
    opacity: 0.7;
    cursor: wait;
}

.avws-geolocation-btn.loading .avws-geolocation-icon {
    animation: avws-pulse 1s infinite;
}

.avws-geolocation-btn.located {
    background: #d4edda;
    border-color: #28a745;
    color: #155724;
}

@keyframes avws-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

.avws-geolocation-icon {
    font-size: 16px;
    display: inline-flex;
    align-items: center;
}

.avws-geolocation-status {
    font-size: 13px;
}

.avws-geolocation-status.error {
    color: #dc3545;
}

.avws-geolocation-status.success {
    color: #28a745;
}

/* Icône de géolocalisation inline dans le champ */
.avws-has-geo-inline {
    position: relative;
}

.avws-field-with-geo {
    position: relative;
}

.avws-field-with-geo .select2-container {
    width: 100% !important;
}

.avws-field-with-geo .select2-container--default .select2-selection--single .select2-selection__rendered {
    padding-right: 50px;
}

.avws-geo-inline-btn,
button.avws-geo-inline-btn,
.avws-geo-inline-btn[type="button"],
button[type="button"].avws-geo-inline-btn {
    position: absolute;
    right: 30px;
    top: 50%;
    transform: translateY(-50%);
    background: none !important;
    background-color: transparent !important;
    border: none !important;
    border-width: 0 !important;
    border-color: transparent !important;
    cursor: pointer;
    padding: 5px 10px;
    font-size: 16px;
    color: #666;
    transition: all 0.2s;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    outline: none !important;
    box-shadow: none !important;
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    margin: 0;
    line-height: 1;
}

.avws-geo-inline-btn i,
.avws-geo-inline-btn svg {
    width: 1em;
    height: 1em;
    font-size: inherit;
    display: block;
}

.avws-geo-inline-btn svg {
    fill: currentColor;
}

.avws-geo-inline-btn:hover {
    color: #2271b1;
}

.avws-geo-inline-btn.loading {
    opacity: 0.5;
    cursor: wait;
}

.avws-geo-inline-btn.loading i,
.avws-geo-inline-btn.loading svg,
.avws-geo-inline-btn.loading .avws-geo-inline-icon {
    animation: avws-pulse 1s infinite;
}

.avws-geo-inline-btn.located {
    color: #28a745;
}

/* Wrapper géolocalisation inline */
.avws-geo-inline-wrapper {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 100;
    background: #fff;
    border: 1px solid #ddd;
    border-top: none;
    border-radius: 0 0 4px 4px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    padding: 10px;
}

.avws-geo-inline-wrapper.avws-geo-active {
    display: block;
}

.avws-geo-inline-wrapper .avws-range-wrapper {
    display: block !important;
    margin: 0;
    padding: 0;
}

.avws-geo-inline-wrapper .avws-geolocation-status {
    display: block;
    margin-top: 5px;
    font-size: 12px;
}

.avws-geo-inline-wrapper .avws-geolocation-status:empty {
    display: none;
}

/* Range Slider */
.avws-range-wrapper {
    padding: 10px 0;
}

.avws-range-slider-container {
    display: flex;
    align-items: center;
    gap: 15px;
}

.avws-range-slider {
    flex: 1;
    height: 6px;
    -webkit-appearance: none;
    appearance: none;
    background: #ddd;
    border-radius: 3px;
    outline: none;
}

.avws-range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    background: #2271b1;
    border-radius: 50%;
    cursor: pointer;
    transition: background 0.2s;
}

.avws-range-slider::-webkit-slider-thumb:hover {
    background: #135e96;
}

.avws-range-slider::-moz-range-thumb {
    width: 20px;
    height: 20px;
    background: #2271b1;
    border: none;
    border-radius: 50%;
    cursor: pointer;
}

.avws-range-value {
    display: flex;
    align-items: baseline;
    gap: 3px;
    min-width: 70px;
    font-weight: 600;
    white-space: nowrap;
}

.avws-range-value-num {
    font-size: 18px;
    color: #2271b1;
}

.avws-range-value-unit {
    font-size: 13px;
    color: #666;
}

/* ================================
   SUBMIT BUTTON
   ================================ */

.avws-submit-wrapper {
    margin-top: 15px;
}

.avws-search-form.avws-layout-inline .avws-submit-wrapper {
    margin-top: 0;
}

.avws-submit-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 12px 30px;
    background: #2271b1;
    color: #fff;
    border: none;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.2s, transform 0.1s;
}

.avws-submit-button i,
.avws-submit-button svg {
    font-size: 1em;
    width: 1em;
    height: 1em;
    fill: currentColor;
}

.avws-submit-button.icon-left i,
.avws-submit-button.icon-left svg {
    margin-right: 8px;
}

.avws-submit-button.icon-right i,
.avws-submit-button.icon-right svg {
    margin-left: 8px;
}

.avws-submit-button:hover {
    background: #135e96;
}

.avws-submit-button:active {
    transform: translateY(1px);
}

/* Bouton avec icône uniquement */
.avws-submit-button.avws-icon-only {
    padding: 12px;
}

.avws-submit-button.avws-icon-only i,
.avws-submit-button.avws-icon-only svg {
    margin: 0;
}

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

@media (max-width: 768px) {
    .avws-search-form.avws-layout-inline .avws-fields-wrapper {
        flex-direction: column;
    }
    
    .avws-search-form.avws-layout-inline .avws-field-wrapper {
        flex: 1 1 100%;
    }
    
    .avws-search-form.avws-layout-horizontal .avws-fields-wrapper {
        grid-template-columns: 1fr !important;
    }
    
    .avws-submit-button {
        width: 100%;
    }
}

/* ================================
   LOADING STATE
   ================================ */

.avws-search-form.avws-loading .avws-submit-button {
    opacity: 0.7;
    pointer-events: none;
}

.avws-search-form.avws-loading .avws-submit-button::after {
    content: '';
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-left: 8px;
    border: 2px solid #fff;
    border-right-color: transparent;
    border-radius: 50%;
    animation: avws-spin 0.75s linear infinite;
    vertical-align: middle;
}

@keyframes avws-spin {
    to {
        transform: rotate(360deg);
    }
}
