/**
 * Method Dropdown Component
 * Custom select dropdown with icons for method selection
 */

@use '../variables' as *;
@use '../mixins' as *;

.target-conditions-trait,
.entity-selector-trait {

    // Method dropdown trigger button
    .method-dropdown-trigger {
        display: inline-flex;
        align-items: center;
        gap: 0.5rem;
        height: 36px;
        padding: 0 $es-spacing-md;
        border-radius: $es-radius-md;
        background: $es-white;
        color: $es-slate-800;
        font-size: $es-font-size-sm;
        cursor: pointer;
        transition: all $es-transition-fast;
        min-width: 180px;
        max-width: 320px;
        border: 1px solid $es-border-color;

        &:hover {
            background: $es-slate-50;
            border-color: $es-gray-300;
        }

        &:focus,
        &:active {
            outline: none;
            border-color: $es-primary;
            box-shadow: 0 0 0 3px rgba($es-primary, 0.1);
        }
    }

    .method-trigger-icon {
        font-size: $es-font-size-sm;
        color: $es-text-muted;
        flex-shrink: 0;
        width: 18px;
        text-align: center;
    }

    .method-trigger-label {
        flex: 1;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        font-weight: $es-font-weight-medium;
    }

    .method-trigger-caret {
        font-size: $es-font-size-xs;
        color: $es-slate-400;
        flex-shrink: 0;
        margin-left: auto;
    }

    // Locked state
    .selector-locked .method-dropdown-trigger {
        background: $es-slate-100;
        color: $es-slate-400;
        cursor: not-allowed;
        border-color: $es-border-color;

        &:hover {
            background: $es-slate-100;
            border-color: $es-border-color;
        }
    }

    // Method selector wrapper
    .method-selector-wrapper {
        position: relative;
    }

    // Hidden select (for form submission)
    .method-select-hidden {
        position: absolute !important;
        opacity: 0 !important;
        pointer-events: none !important;
        width: 0 !important;
        height: 0 !important;
        overflow: hidden !important;
    }
}

// Global fallback for hidden method selects
.method-select-hidden {
    position: absolute !important;
    opacity: 0 !important;
    pointer-events: none !important;
    width: 0 !important;
    height: 0 !important;
    overflow: hidden !important;
}

// =============================================================================
// Method Dropdown Menu (appended to body, outside trait wrappers)
// =============================================================================

.method-dropdown-menu {
    position: absolute;
    z-index: $es-z-dropdown + 1;
    min-width: 200px;
    max-width: 360px;
    max-height: 400px;
    overflow-y: auto;
    background: $es-white;
    border-radius: $es-radius-lg;
    padding: 0.375rem 0;
    border: 1px solid $es-border-color;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);
    animation: methodDropdownFadeIn 0.15s ease;
    @include custom-scrollbar;
}

@keyframes methodDropdownFadeIn {
    from {
        opacity: 0;
        transform: translateY(-4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

// Method dropdown item
.method-dropdown-item {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.5rem $es-spacing-md;
    cursor: pointer;
    transition: background-color 0.1s;
    position: relative;

    &:hover {
        background: $es-slate-100;
    }

    &.selected {
        background: rgba($es-primary, 0.08);
    }

    .method-item-icon {
        font-size: $es-font-size-sm;
        color: $es-text-muted;
        width: 18px;
        text-align: center;
        flex-shrink: 0;
    }

    &.selected .method-item-icon {
        color: $es-primary;
    }

    .method-item-label {
        flex: 1;
        font-size: $es-font-size-sm;
        color: $es-slate-700;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    &.selected .method-item-label {
        color: $es-cyan-700;
        font-weight: $es-font-weight-medium;
    }

    .method-item-check {
        font-size: $es-font-size-xs;
        flex-shrink: 0;
        margin-left: auto;
        color: $es-primary;
    }
}

// Method dropdown optgroup
.method-dropdown-optgroup {
    margin-top: 0.25rem;

    &:first-child {
        margin-top: 0;
    }
}

.method-optgroup-label {
    padding: 0.5rem $es-spacing-md;
    font-size: 11px;
    font-weight: $es-font-weight-semibold;
    color: $es-text-muted;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: $es-slate-50;
    border-top: 1px solid $es-slate-100;
    border-bottom: 1px solid $es-slate-100;

    .method-dropdown-optgroup:first-child & {
        border-top: 0;
    }
}

.method-optgroup-items {
    padding: 0.25rem 0;

    .method-dropdown-item {
        padding-left: $es-spacing-lg;
    }
}

// Method info placeholder
.method-info-placeholder {
    font-size: $es-font-size-xs;
    color: $es-text-muted;
    font-style: italic;
}
