diff --git a/assets/css/admin/entity-selector.css b/assets/css/admin/entity-selector.css index 8a1c1a8..5072696 100644 --- a/assets/css/admin/entity-selector.css +++ b/assets/css/admin/entity-selector.css @@ -1,2 +1,2 @@ -@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.target-conditions-trait,.target-conditions-trait *,.entity-selector-trait,.entity-selector-trait *,.method-dropdown-menu,.method-dropdown-menu *,.target-preview-popover,.target-preview-popover *{border-style:solid;border-width:0;border-color:#dee2e6}.form-group:has(.entity-selector-trait),.form-group:has(.target-conditions-trait),.form-group:has(.condition-trait){display:block}.form-group:has(.entity-selector-trait)>.control-label,.form-group:has(.target-conditions-trait)>.control-label,.form-group:has(.condition-trait)>.control-label{display:none}.form-group:has(.entity-selector-trait)>.col-lg-8,.form-group:has(.target-conditions-trait)>.col-lg-8,.form-group:has(.condition-trait)>.col-lg-8{width:100%;max-width:100%;padding-left:1rem;padding-right:1rem;flex:0 0 100% !important}.form-group.condition-trait-fullwidth{display:block}.form-group.condition-trait-fullwidth>.control-label{display:none}.form-group.condition-trait-fullwidth>.col-lg-8{width:100%;max-width:100%;padding-left:1rem;padding-right:1rem;flex:0 0 100% !important}.panel:has(.target-search-dropdown.show),.card:has(.target-search-dropdown.show),.form-wrapper:has(.target-search-dropdown.show),.panel-body:has(.target-search-dropdown.show),.card-body:has(.target-search-dropdown.show),.form-group:has(.target-search-dropdown.show),.col-lg-8:has(.target-search-dropdown.show),.col-lg-12:has(.target-search-dropdown.show){overflow:visible !important}.target-conditions-trait:has(.target-search-dropdown.show),.entity-selector-trait:has(.target-search-dropdown.show),.condition-trait-body:has(.target-search-dropdown.show),.target-block-content:has(.target-search-dropdown.show),.target-block-groups:has(.target-search-dropdown.show),.target-group:has(.target-search-dropdown.show),.target-group-body:has(.target-search-dropdown.show),.target-search-wrapper:has(.target-search-dropdown.show){overflow:visible !important}@media(max-width: 991px){.target-conditions-trait .condition-trait-header,.entity-selector-trait .condition-trait-header{flex-direction:column;align-items:flex-start;gap:.5rem}.target-conditions-trait .trait-header-right,.entity-selector-trait .trait-header-right{width:100%;justify-content:flex-end}.target-conditions-trait .target-block-tabs,.entity-selector-trait .target-block-tabs{flex-wrap:wrap}}@media(max-width: 767px){.target-conditions-trait .target-block-tab,.entity-selector-trait .target-block-tab{padding:.5rem;font-size:.75rem}.target-conditions-trait .target-group-header,.entity-selector-trait .target-group-header{flex-direction:column;align-items:flex-start}.target-conditions-trait .target-search-dropdown,.entity-selector-trait .target-search-dropdown{width:100% !important;left:0 !important;right:0 !important}.target-conditions-trait .dropdown-results-grid,.entity-selector-trait .dropdown-results-grid{grid-template-columns:1fr !important}}@media(min-width: 1600px){.target-conditions-trait .dropdown-results-grid.view-grid-3,.entity-selector-trait .dropdown-results-grid.view-grid-3{grid-template-columns:repeat(4, 1fr)}}.target-conditions-trait,.entity-selector-trait{position:relative;overflow:visible;background:#fff;border:1px solid #dee2e6;border-radius:.3rem}.target-conditions-trait .condition-trait-header,.entity-selector-trait .condition-trait-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:.875rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.target-conditions-trait .condition-trait-header:hover,.entity-selector-trait .condition-trait-header:hover{background:#e9ecef}.target-conditions-trait .trait-header-left,.entity-selector-trait .trait-header-left{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.target-conditions-trait .trait-icon,.entity-selector-trait .trait-icon{font-size:1.125rem;color:#6c757d;flex-shrink:0}.target-conditions-trait .trait-title-group,.entity-selector-trait .trait-title-group{display:flex;flex-direction:column;gap:.125rem;min-width:0}.target-conditions-trait .trait-title,.entity-selector-trait .trait-title{font-size:.875rem;font-weight:600;color:#212529;white-space:nowrap}.target-conditions-trait .trait-subtitle,.entity-selector-trait .trait-subtitle{font-size:.75rem;color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-conditions-trait .trait-total-count,.entity-selector-trait .trait-total-count{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .trait-total-count:hover,.entity-selector-trait .trait-total-count:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .trait-total-count.loading,.entity-selector-trait .trait-total-count.loading{cursor:wait}.target-conditions-trait .trait-total-count.loading i,.entity-selector-trait .trait-total-count.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .trait-total-count.loading:hover,.entity-selector-trait .trait-total-count.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .trait-total-count.inactive,.target-conditions-trait .trait-total-count.no-matches,.entity-selector-trait .trait-total-count.inactive,.entity-selector-trait .trait-total-count.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .trait-total-count.inactive:hover,.target-conditions-trait .trait-total-count.no-matches:hover,.entity-selector-trait .trait-total-count.inactive:hover,.entity-selector-trait .trait-total-count.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .trait-total-count.popover-open,.entity-selector-trait .trait-total-count.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .trait-total-count i,.entity-selector-trait .trait-total-count i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .trait-total-count:hover i,.entity-selector-trait .trait-total-count:hover i{opacity:1}.target-conditions-trait .trait-total-count .preview-count,.entity-selector-trait .trait-total-count .preview-count{font-weight:700}.target-conditions-trait .trait-total-count,.entity-selector-trait .trait-total-count{margin-left:.5rem}.target-conditions-trait .trait-show-all-toggle,.entity-selector-trait .trait-show-all-toggle{display:inline-flex;align-items:center;gap:.5rem;margin-right:.75rem;padding:.25rem .5rem;border-radius:.2rem;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.target-conditions-trait .trait-show-all-toggle:hover,.entity-selector-trait .trait-show-all-toggle:hover{background:rgba(0,0,0,.05)}.target-conditions-trait .trait-show-all-toggle .toggle-label,.entity-selector-trait .trait-show-all-toggle .toggle-label{font-size:.75rem;font-weight:500;color:#6c757d}.target-conditions-trait .trait-show-all-toggle .show-all-checkbox,.entity-selector-trait .trait-show-all-toggle .show-all-checkbox{display:none}.target-conditions-trait .trait-show-all-toggle .toggle-slider,.entity-selector-trait .trait-show-all-toggle .toggle-slider{position:relative;width:36px;height:20px;background:#cbd5e1;border-radius:50rem;transition:background-color .2s ease-in-out}.target-conditions-trait .trait-show-all-toggle .toggle-slider::after,.entity-selector-trait .trait-show-all-toggle .toggle-slider::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s ease-in-out}.target-conditions-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider,.entity-selector-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider{background:#28a745}.target-conditions-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider::after,.entity-selector-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider::after{transform:translateX(16px)}.target-conditions-trait.has-validation-error,.entity-selector-trait.has-validation-error{border-color:#dc3545;box-shadow:0 0 0 3px rgba(220,53,69,.1)}.target-conditions-trait.has-validation-error .condition-trait-header,.entity-selector-trait.has-validation-error .condition-trait-header{border-bottom-color:#dc3545}.target-conditions-trait .trait-validation-error,.entity-selector-trait .trait-validation-error{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem;background:#f8d7da;color:#b91c1c;font-size:.875rem;font-weight:500;border-bottom:1px solid #fecaca}.target-conditions-trait .trait-validation-error i,.entity-selector-trait .trait-validation-error i{color:#dc3545}.target-conditions-trait.trait-required .trait-title::after,.entity-selector-trait.trait-required .trait-title::after{content:" *";color:#dc3545}.target-conditions-trait .condition-trait-body,.entity-selector-trait .condition-trait-body{padding:0;background:#fff;border-radius:0 0 .3rem .3rem}.target-conditions-trait .target-block-tabs,.entity-selector-trait .target-block-tabs{display:flex;flex-wrap:wrap;gap:0;padding:0;background:#f1f5f9;border-bottom:1px solid #dee2e6}.target-conditions-trait .target-block-tab,.entity-selector-trait .target-block-tab{position:relative;display:flex;align-items:center;gap:.5rem;flex:none;min-width:0;padding:.625rem 1rem;margin-bottom:-1px;background:rgba(0,0,0,0);border:0;border-bottom:2px solid rgba(0,0,0,0);color:#6c757d;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .target-block-tab:hover,.entity-selector-trait .target-block-tab:hover{background:#e2e8f0;color:#334155}.target-conditions-trait .target-block-tab.active,.entity-selector-trait .target-block-tab.active{background:#fff;border-bottom-color:#06b6d4;color:#25b9d7}.target-conditions-trait .target-block-tab i,.entity-selector-trait .target-block-tab i{font-size:.875rem}.target-conditions-trait .target-block-tab .tab-label,.entity-selector-trait .target-block-tab .tab-label{white-space:nowrap}.target-conditions-trait .target-block-tab .tab-badge,.entity-selector-trait .target-block-tab .tab-badge{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .target-block-tab .tab-badge:hover,.entity-selector-trait .target-block-tab .tab-badge:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .target-block-tab .tab-badge.loading,.entity-selector-trait .target-block-tab .tab-badge.loading{cursor:wait}.target-conditions-trait .target-block-tab .tab-badge.loading i,.entity-selector-trait .target-block-tab .tab-badge.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .target-block-tab .tab-badge.loading:hover,.entity-selector-trait .target-block-tab .tab-badge.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab .tab-badge.inactive,.target-conditions-trait .target-block-tab .tab-badge.no-matches,.entity-selector-trait .target-block-tab .tab-badge.inactive,.entity-selector-trait .target-block-tab .tab-badge.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .target-block-tab .tab-badge.inactive:hover,.target-conditions-trait .target-block-tab .tab-badge.no-matches:hover,.entity-selector-trait .target-block-tab .tab-badge.inactive:hover,.entity-selector-trait .target-block-tab .tab-badge.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab .tab-badge.popover-open,.entity-selector-trait .target-block-tab .tab-badge.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .target-block-tab .tab-badge i,.entity-selector-trait .target-block-tab .tab-badge i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .target-block-tab .tab-badge:hover i,.entity-selector-trait .target-block-tab .tab-badge:hover i{opacity:1}.target-conditions-trait .target-block-tab .tab-badge .preview-count,.entity-selector-trait .target-block-tab .tab-badge .preview-count{font-weight:700}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#94a3b8;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(148,163,184,.4)}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.loading,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.loading{cursor:wait}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.loading i,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.loading:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive,.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive:hover,.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.popover-open,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.popover-open{background:hsl(215,20.2247191011%,55.0980392157%);box-shadow:0 2px 8px rgba(148,163,184,.4)}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge i,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge:hover i,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge:hover i{opacity:1}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge .preview-count,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge .preview-count{font-weight:700}.target-conditions-trait .target-block-container,.entity-selector-trait .target-block-container{display:none}.target-conditions-trait .target-block-container.active,.entity-selector-trait .target-block-container.active{display:block}.target-conditions-trait .target-block-content,.entity-selector-trait .target-block-content{padding:1rem}.target-conditions-trait .target-block-groups,.entity-selector-trait .target-block-groups{display:flex;flex-direction:column;gap:1rem}.target-conditions-trait .target-block-header,.entity-selector-trait .target-block-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6}.target-conditions-trait .target-block-empty,.entity-selector-trait .target-block-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;text-align:center;color:#6c757d}.target-conditions-trait .target-block-empty i,.entity-selector-trait .target-block-empty i{font-size:2rem;opacity:.5}.target-conditions-trait .target-block-empty p,.entity-selector-trait .target-block-empty p{margin:0;font-size:.875rem}.target-conditions-trait .trait-collapse-toggle,.target-conditions-trait .collapse-toggle,.entity-selector-trait .trait-collapse-toggle,.entity-selector-trait .collapse-toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;cursor:pointer;transition:transform .2s ease-in-out}.target-conditions-trait .trait-collapse-toggle.collapsed,.target-conditions-trait .collapse-toggle.collapsed,.entity-selector-trait .trait-collapse-toggle.collapsed,.entity-selector-trait .collapse-toggle.collapsed{transform:rotate(-90deg)}.target-conditions-trait .trait-header-right,.entity-selector-trait .trait-header-right{display:flex;align-items:center;gap:.5rem}.target-conditions-trait.collapsed .condition-trait-body,.entity-selector-trait.collapsed .condition-trait-body{display:none}.target-conditions-trait.collapsed .condition-trait-header,.entity-selector-trait.collapsed .condition-trait-header{border-radius:.3rem}.target-conditions-trait.single-mode .target-block-tabs,.entity-selector-trait.single-mode .target-block-tabs{display:none}.target-conditions-trait.single-mode .target-block-container,.entity-selector-trait.single-mode .target-block-container{display:block}.target-conditions-trait .header-actions,.entity-selector-trait .header-actions{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .header-action-btn,.entity-selector-trait .header-action-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .header-action-btn:focus,.entity-selector-trait .header-action-btn:focus{outline:none}.target-conditions-trait .header-action-btn,.entity-selector-trait .header-action-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;color:#6c757d;background:rgba(0,0,0,0);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .header-action-btn:hover,.entity-selector-trait .header-action-btn:hover{background:#e2e8f0;color:#495057}.target-conditions-trait .header-action-btn i,.entity-selector-trait .header-action-btn i{font-size:12px}.target-conditions-trait .target-search-wrapper,.entity-selector-trait .target-search-wrapper{position:relative}.target-conditions-trait .target-search-dropdown,.entity-selector-trait .target-search-dropdown{position:absolute;z-index:1000;background:#fff;border:1px solid #dee2e6;border-radius:.3rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);display:none;width:600px;max-width:calc(100vw - 40px)}.target-conditions-trait .target-search-dropdown.show,.entity-selector-trait .target-search-dropdown.show{display:block}.target-conditions-trait .dropdown-header,.entity-selector-trait .dropdown-header{display:flex;align-items:center;gap:.5rem;padding:1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0}.target-conditions-trait .dropdown-search-input,.entity-selector-trait .dropdown-search-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .dropdown-search-input:focus,.entity-selector-trait .dropdown-search-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .dropdown-search-input::placeholder,.entity-selector-trait .dropdown-search-input::placeholder{color:#adb5bd}.target-conditions-trait .dropdown-search-input,.entity-selector-trait .dropdown-search-input{flex:1;padding:.5rem 1rem}.target-conditions-trait .dropdown-close-btn,.entity-selector-trait .dropdown-close-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .dropdown-close-btn:focus,.entity-selector-trait .dropdown-close-btn:focus{outline:none}.target-conditions-trait .dropdown-close-btn,.entity-selector-trait .dropdown-close-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#6c757d;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-close-btn:hover,.entity-selector-trait .dropdown-close-btn:hover{background:#e2e8f0;color:#495057}.target-conditions-trait .dropdown-controls,.entity-selector-trait .dropdown-controls{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#fff;border-bottom:1px solid #dee2e6}.target-conditions-trait .dropdown-controls-left,.target-conditions-trait .dropdown-controls-right,.entity-selector-trait .dropdown-controls-left,.entity-selector-trait .dropdown-controls-right{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .view-mode-btn,.entity-selector-trait .view-mode-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .view-mode-btn:focus,.entity-selector-trait .view-mode-btn:focus{outline:none}.target-conditions-trait .view-mode-btn,.entity-selector-trait .view-mode-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;background:rgba(0,0,0,0);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .view-mode-btn:hover,.entity-selector-trait .view-mode-btn:hover{background:#f1f5f9;color:#495057}.target-conditions-trait .view-mode-btn.active,.entity-selector-trait .view-mode-btn.active{background:#25b9d7;color:#fff}.target-conditions-trait .dropdown-results-count,.entity-selector-trait .dropdown-results-count{font-size:.75rem;color:#6c757d}.target-conditions-trait .dropdown-body,.entity-selector-trait .dropdown-body{max-height:400px;overflow-y:auto}.target-conditions-trait .dropdown-body::-webkit-scrollbar,.entity-selector-trait .dropdown-body::-webkit-scrollbar{width:6px;height:6px}.target-conditions-trait .dropdown-body::-webkit-scrollbar-track,.entity-selector-trait .dropdown-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-conditions-trait .dropdown-body::-webkit-scrollbar-thumb,.entity-selector-trait .dropdown-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-conditions-trait .dropdown-body::-webkit-scrollbar-thumb:hover,.entity-selector-trait .dropdown-body::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-conditions-trait .dropdown-results,.entity-selector-trait .dropdown-results{padding:.5rem}.target-conditions-trait .results-count,.entity-selector-trait .results-count{font-size:.75rem;color:#6c757d;padding:.25rem .5rem}.target-conditions-trait .results-header,.entity-selector-trait .results-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-size:.75rem;font-weight:600;color:#495057}.target-conditions-trait .dropdown-results-grid,.entity-selector-trait .dropdown-results-grid{display:grid;gap:.5rem}.target-conditions-trait .dropdown-results-grid.view-list,.entity-selector-trait .dropdown-results-grid.view-list{grid-template-columns:1fr}.target-conditions-trait .dropdown-results-grid.view-grid-2,.entity-selector-trait .dropdown-results-grid.view-grid-2{grid-template-columns:repeat(2, 1fr)}.target-conditions-trait .dropdown-results-grid.view-grid-3,.entity-selector-trait .dropdown-results-grid.view-grid-3{grid-template-columns:repeat(3, 1fr)}.target-conditions-trait .dropdown-result-item,.target-conditions-trait .dropdown-item,.entity-selector-trait .dropdown-result-item,.entity-selector-trait .dropdown-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-result-item:hover,.target-conditions-trait .dropdown-item:hover,.entity-selector-trait .dropdown-result-item:hover,.entity-selector-trait .dropdown-item:hover{background:#e9ecef;border-color:#cbd5e1}.target-conditions-trait .dropdown-result-item.selected,.target-conditions-trait .dropdown-item.selected,.entity-selector-trait .dropdown-result-item.selected,.entity-selector-trait .dropdown-item.selected{background:rgba(37,185,215,.1);border-color:#25b9d7}.target-conditions-trait .dropdown-result-item.disabled,.target-conditions-trait .dropdown-item.disabled,.entity-selector-trait .dropdown-result-item.disabled,.entity-selector-trait .dropdown-item.disabled{opacity:.5;cursor:not-allowed}.target-conditions-trait .dropdown-result-item.disabled:hover,.target-conditions-trait .dropdown-item.disabled:hover,.entity-selector-trait .dropdown-result-item.disabled:hover,.entity-selector-trait .dropdown-item.disabled:hover{background:#fff;border-color:#dee2e6}.target-conditions-trait .result-item-image,.target-conditions-trait .result-image,.entity-selector-trait .result-item-image,.entity-selector-trait .result-image{flex-shrink:0;width:40px;height:40px;overflow:hidden;border-radius:.2rem;background:#f1f5f9}.target-conditions-trait .result-item-image img,.target-conditions-trait .result-image img,.entity-selector-trait .result-item-image img,.entity-selector-trait .result-image img{width:100%;height:100%;object-fit:cover}.target-conditions-trait .result-icon,.entity-selector-trait .result-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;background:#f1f5f9;border-radius:.2rem;color:#6c757d}.target-conditions-trait .result-icon i,.entity-selector-trait .result-icon i{font-size:16px}.target-conditions-trait .result-item-info,.target-conditions-trait .result-info,.entity-selector-trait .result-item-info,.entity-selector-trait .result-info{flex:1;min-width:0}.target-conditions-trait .result-item-name,.target-conditions-trait .result-name,.entity-selector-trait .result-item-name,.entity-selector-trait .result-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .result-item-meta,.target-conditions-trait .result-subtitle,.entity-selector-trait .result-item-meta,.entity-selector-trait .result-subtitle{font-size:.75rem;color:#6c757d}.target-conditions-trait .subtitle-line,.entity-selector-trait .subtitle-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .subtitle-line-primary,.entity-selector-trait .subtitle-line-primary{color:#495057}.target-conditions-trait .subtitle-line-secondary,.entity-selector-trait .subtitle-line-secondary{color:#6c757d;font-size:11px}.target-conditions-trait .result-col,.entity-selector-trait .result-col{flex-shrink:0;width:70px;text-align:right;font-size:.75rem}.target-conditions-trait .result-col-price,.entity-selector-trait .result-col-price{color:#495057}.target-conditions-trait .result-col-sale,.entity-selector-trait .result-col-sale{color:#dc3545;font-weight:600}.target-conditions-trait .result-col-stock .col-value.stock-ok,.entity-selector-trait .result-col-stock .col-value.stock-ok{color:#28a745}.target-conditions-trait .result-col-stock .col-value.stock-low,.entity-selector-trait .result-col-stock .col-value.stock-low{color:#ffc107}.target-conditions-trait .result-col-stock .col-value.stock-out,.entity-selector-trait .result-col-stock .col-value.stock-out{color:#dc3545}.target-conditions-trait .result-col-sales,.entity-selector-trait .result-col-sales{color:#6c757d}.target-conditions-trait .col-value,.entity-selector-trait .col-value{display:block}.target-conditions-trait .result-item-checkbox,.target-conditions-trait .result-checkbox,.entity-selector-trait .result-item-checkbox,.entity-selector-trait .result-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;border:2px solid #ced4da;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .result-item-checkbox i,.target-conditions-trait .result-checkbox i,.entity-selector-trait .result-item-checkbox i,.entity-selector-trait .result-checkbox i{display:none;font-size:10px;color:#fff}.dropdown-result-item.selected .target-conditions-trait .result-item-checkbox,.dropdown-item.selected .target-conditions-trait .result-item-checkbox,.dropdown-result-item.selected .target-conditions-trait .result-checkbox,.dropdown-item.selected .target-conditions-trait .result-checkbox,.dropdown-result-item.selected .entity-selector-trait .result-item-checkbox,.dropdown-item.selected .entity-selector-trait .result-item-checkbox,.dropdown-result-item.selected .entity-selector-trait .result-checkbox,.dropdown-item.selected .entity-selector-trait .result-checkbox{background:#25b9d7;border-color:#25b9d7}.dropdown-result-item.selected .target-conditions-trait .result-item-checkbox i,.dropdown-item.selected .target-conditions-trait .result-item-checkbox i,.dropdown-result-item.selected .target-conditions-trait .result-checkbox i,.dropdown-item.selected .target-conditions-trait .result-checkbox i,.dropdown-result-item.selected .entity-selector-trait .result-item-checkbox i,.dropdown-item.selected .entity-selector-trait .result-item-checkbox i,.dropdown-result-item.selected .entity-selector-trait .result-checkbox i,.dropdown-item.selected .entity-selector-trait .result-checkbox i{display:block}.target-conditions-trait .result-item-product,.entity-selector-trait .result-item-product{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .no-results,.entity-selector-trait .no-results{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}.target-conditions-trait .no-results i,.entity-selector-trait .no-results i{font-size:1.25rem;opacity:.5}.target-conditions-trait .dropdown-empty,.entity-selector-trait .dropdown-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;text-align:center;color:#6c757d}.target-conditions-trait .dropdown-empty i,.entity-selector-trait .dropdown-empty i{font-size:2rem;opacity:.5}.target-conditions-trait .dropdown-empty p,.entity-selector-trait .dropdown-empty p{margin:0;font-size:.875rem}.target-conditions-trait .dropdown-loading,.entity-selector-trait .dropdown-loading{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6c757d}.target-conditions-trait .dropdown-loading i,.entity-selector-trait .dropdown-loading i{font-size:1.5rem;animation:spin 1s linear infinite}.target-conditions-trait .load-more-controls,.entity-selector-trait .load-more-controls{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border-top:1px solid #dee2e6;font-size:.75rem;color:#6c757d}.target-conditions-trait .load-more-controls .remaining-count,.entity-selector-trait .load-more-controls .remaining-count{font-weight:600;color:#495057}.target-conditions-trait .load-more-controls .load-more-select,.entity-selector-trait .load-more-controls .load-more-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .load-more-controls .load-more-select:focus,.entity-selector-trait .load-more-controls .load-more-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .load-more-controls .load-more-select::placeholder,.entity-selector-trait .load-more-controls .load-more-select::placeholder{color:#adb5bd}.target-conditions-trait .load-more-controls .load-more-select,.entity-selector-trait .load-more-controls .load-more-select{padding:.25rem .5rem;font-size:.75rem;min-width:70px}.target-conditions-trait .dropdown-load-more,.entity-selector-trait .dropdown-load-more{display:flex;justify-content:center;padding:1rem;border-top:1px solid #dee2e6}.target-conditions-trait .dropdown-load-more .load-more-btn,.entity-selector-trait .dropdown-load-more .load-more-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .dropdown-load-more .load-more-btn:focus,.entity-selector-trait .dropdown-load-more .load-more-btn:focus{outline:none}.target-conditions-trait .dropdown-load-more .load-more-btn,.entity-selector-trait .dropdown-load-more .load-more-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:#25b9d7;background:rgba(37,185,215,.1);border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-load-more .load-more-btn:hover,.entity-selector-trait .dropdown-load-more .load-more-btn:hover{background:rgba(37,185,215,.2)}.target-conditions-trait .dropdown-load-more .load-more-btn.loading,.entity-selector-trait .dropdown-load-more .load-more-btn.loading{opacity:.7;cursor:wait}.target-conditions-trait .dropdown-footer,.entity-selector-trait .dropdown-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}.target-conditions-trait .dropdown-selection-count,.entity-selector-trait .dropdown-selection-count{font-size:.75rem;color:#6c757d}.target-conditions-trait .dropdown-selection-count strong,.entity-selector-trait .dropdown-selection-count strong{color:#25b9d7}.target-conditions-trait .dropdown-actions,.entity-selector-trait .dropdown-actions{display:flex;gap:.5rem}.target-conditions-trait .dropdown-action-btn,.entity-selector-trait .dropdown-action-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .dropdown-action-btn:focus,.entity-selector-trait .dropdown-action-btn:focus{outline:none}.target-conditions-trait .dropdown-action-btn,.entity-selector-trait .dropdown-action-btn{padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-action-btn.btn-cancel,.entity-selector-trait .dropdown-action-btn.btn-cancel{color:#495057;background:#f1f5f9}.target-conditions-trait .dropdown-action-btn.btn-cancel:hover,.entity-selector-trait .dropdown-action-btn.btn-cancel:hover{background:#e2e8f0}.target-conditions-trait .dropdown-action-btn.btn-apply,.entity-selector-trait .dropdown-action-btn.btn-apply{color:#fff;background:#25b9d7}.target-conditions-trait .dropdown-action-btn.btn-apply:hover,.entity-selector-trait .dropdown-action-btn.btn-apply:hover{background:#1a9ab7}.target-conditions-trait .dropdown-filter-panel,.entity-selector-trait .dropdown-filter-panel{padding:1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}.target-conditions-trait .filter-panel-header,.entity-selector-trait .filter-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.target-conditions-trait .filter-panel-title,.entity-selector-trait .filter-panel-title{font-size:.875rem;font-weight:600;color:#212529}.target-conditions-trait .filter-panel-toggle,.entity-selector-trait .filter-panel-toggle{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .filter-panel-toggle:focus,.entity-selector-trait .filter-panel-toggle:focus{outline:none}.target-conditions-trait .filter-panel-toggle,.entity-selector-trait .filter-panel-toggle{font-size:.75rem;color:#25b9d7}.target-conditions-trait .filter-panel-toggle:hover,.entity-selector-trait .filter-panel-toggle:hover{text-decoration:underline}.target-conditions-trait .filter-panel-content,.entity-selector-trait .filter-panel-content{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr))}.target-conditions-trait .filter-group,.entity-selector-trait .filter-group{display:flex;flex-direction:column;gap:.25rem}.target-conditions-trait .filter-label,.entity-selector-trait .filter-label{font-size:.75rem;font-weight:500;color:#495057}.target-conditions-trait .filter-select,.target-conditions-trait .filter-input,.entity-selector-trait .filter-select,.entity-selector-trait .filter-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .filter-select:focus,.target-conditions-trait .filter-input:focus,.entity-selector-trait .filter-select:focus,.entity-selector-trait .filter-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .filter-select::placeholder,.target-conditions-trait .filter-input::placeholder,.entity-selector-trait .filter-select::placeholder,.entity-selector-trait .filter-input::placeholder{color:#adb5bd}.target-conditions-trait .filter-select,.target-conditions-trait .filter-input,.entity-selector-trait .filter-select,.entity-selector-trait .filter-input{padding:.375rem .5rem;font-size:.75rem}.target-conditions-trait .category-tree,.entity-selector-trait .category-tree{padding:.5rem}.target-conditions-trait .tree-loading,.entity-selector-trait .tree-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}.target-conditions-trait .tree-loading i,.entity-selector-trait .tree-loading i{animation:spin .6s linear infinite}.target-conditions-trait .tree-item,.entity-selector-trait .tree-item{display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}.target-conditions-trait .tree-item:hover,.entity-selector-trait .tree-item:hover{background:#e9ecef}.target-conditions-trait .tree-item.selected,.entity-selector-trait .tree-item.selected{background:rgba(37,185,215,.1)}.target-conditions-trait .tree-item.selected .tree-checkbox,.entity-selector-trait .tree-item.selected .tree-checkbox{background:#25b9d7;border-color:#25b9d7}.target-conditions-trait .tree-item.selected .tree-checkbox i,.entity-selector-trait .tree-item.selected .tree-checkbox i{display:block}.target-conditions-trait .tree-toggle,.entity-selector-trait .tree-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#6c757d;cursor:pointer;transition:transform .15s ease-in-out}.target-conditions-trait .tree-toggle i,.entity-selector-trait .tree-toggle i{font-size:12px}.target-conditions-trait .tree-toggle-placeholder,.entity-selector-trait .tree-toggle-placeholder{width:16px;height:16px}.target-conditions-trait .btn-select-children,.entity-selector-trait .btn-select-children{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-select-children:focus,.entity-selector-trait .btn-select-children:focus{outline:none}.target-conditions-trait .btn-select-children,.entity-selector-trait .btn-select-children{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-select-children:hover,.entity-selector-trait .btn-select-children:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-select-children i,.entity-selector-trait .btn-select-children i{font-size:12px}.target-conditions-trait .btn-select-children-placeholder,.entity-selector-trait .btn-select-children-placeholder{width:18px;height:18px}.target-conditions-trait .tree-checkbox,.entity-selector-trait .tree-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.target-conditions-trait .tree-checkbox i,.entity-selector-trait .tree-checkbox i{display:none;font-size:10px;color:#fff}.target-conditions-trait .tree-icon,.entity-selector-trait .tree-icon{display:flex;align-items:center;justify-content:center;width:16px;color:#6c757d}.target-conditions-trait .tree-icon i,.entity-selector-trait .tree-icon i{font-size:14px}.target-conditions-trait .tree-info,.entity-selector-trait .tree-info{display:flex;align-items:center;gap:.25rem;flex:1;min-width:0}.target-conditions-trait .tree-name,.entity-selector-trait .tree-name{font-size:.875rem;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .tree-subtitle,.entity-selector-trait .tree-subtitle{font-size:.75rem;color:#6c757d}.target-conditions-trait .category-tree-item,.entity-selector-trait .category-tree-item{padding:.25rem 0}.target-conditions-trait .category-tree-node,.entity-selector-trait .category-tree-node{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}.target-conditions-trait .category-tree-node:hover,.entity-selector-trait .category-tree-node:hover{background:#e9ecef}.target-conditions-trait .category-tree-node.selected,.entity-selector-trait .category-tree-node.selected{background:rgba(37,185,215,.1)}.target-conditions-trait .category-tree-toggle,.entity-selector-trait .category-tree-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#6c757d;transition:transform .15s ease-in-out}.target-conditions-trait .category-tree-toggle.expanded,.entity-selector-trait .category-tree-toggle.expanded{transform:rotate(90deg)}.target-conditions-trait .category-tree-toggle.empty,.entity-selector-trait .category-tree-toggle.empty{visibility:hidden}.target-conditions-trait .category-tree-checkbox,.entity-selector-trait .category-tree-checkbox{flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.target-conditions-trait .category-tree-checkbox.checked,.entity-selector-trait .category-tree-checkbox.checked{background:#25b9d7;border-color:#25b9d7}.target-conditions-trait .category-tree-checkbox.checked::after,.entity-selector-trait .category-tree-checkbox.checked::after{content:"✓";display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;font-size:10px}.target-conditions-trait .category-tree-checkbox.indeterminate,.entity-selector-trait .category-tree-checkbox.indeterminate{background:#25b9d7;border-color:#25b9d7}.target-conditions-trait .category-tree-checkbox.indeterminate::after,.entity-selector-trait .category-tree-checkbox.indeterminate::after{content:"−";display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;font-size:10px}.target-conditions-trait .category-tree-name,.entity-selector-trait .category-tree-name{flex:1;font-size:.875rem;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .category-tree-count,.entity-selector-trait .category-tree-count{font-size:.75rem;color:#6c757d}.target-conditions-trait .category-tree-children,.entity-selector-trait .category-tree-children{margin-left:24px}.target-conditions-trait .search-history-list,.entity-selector-trait .search-history-list{padding:.5rem}.target-conditions-trait .history-item,.entity-selector-trait .history-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}.target-conditions-trait .history-item:hover,.entity-selector-trait .history-item:hover{background:#e9ecef}.target-conditions-trait .history-item>i,.entity-selector-trait .history-item>i{color:#6c757d;font-size:14px}.target-conditions-trait .history-query,.entity-selector-trait .history-query{flex:1;font-size:.875rem;color:#212529}.target-conditions-trait .btn-delete-history,.entity-selector-trait .btn-delete-history{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-delete-history:focus,.entity-selector-trait .btn-delete-history:focus{outline:none}.target-conditions-trait .btn-delete-history,.entity-selector-trait .btn-delete-history{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;opacity:0;transition:all .15s ease-in-out}.history-item:hover .target-conditions-trait .btn-delete-history,.history-item:hover .entity-selector-trait .btn-delete-history{opacity:1}.target-conditions-trait .btn-delete-history:hover,.entity-selector-trait .btn-delete-history:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .btn-delete-history i,.entity-selector-trait .btn-delete-history i{font-size:12px}.target-conditions-trait .filter-panel,.entity-selector-trait .filter-panel{display:none;padding:1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}.target-conditions-trait .filter-panel.show,.entity-selector-trait .filter-panel.show{display:block}.target-conditions-trait .filter-row,.entity-selector-trait .filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem}.target-conditions-trait .filter-row:last-child,.entity-selector-trait .filter-row:last-child{margin-bottom:0}.target-conditions-trait .view-mode-select,.entity-selector-trait .view-mode-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .view-mode-select:focus,.entity-selector-trait .view-mode-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .view-mode-select::placeholder,.entity-selector-trait .view-mode-select::placeholder{color:#adb5bd}.target-conditions-trait .view-mode-select,.entity-selector-trait .view-mode-select{padding:.25rem .5rem;font-size:.75rem;min-width:80px}body>.target-search-dropdown,.target-search-dropdown{position:absolute;z-index:1000;background:#fff;border:1px solid #dee2e6;border-radius:.3rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);display:none;width:600px;max-width:calc(100vw - 40px)}body>.target-search-dropdown.show,.target-search-dropdown.show{display:block}body>.target-search-dropdown .dropdown-header,.target-search-dropdown .dropdown-header{display:flex;align-items:center;gap:.5rem;padding:1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;flex-wrap:wrap}body>.target-search-dropdown .results-count,.target-search-dropdown .results-count{font-size:.875rem;font-weight:600;color:#212529;white-space:nowrap}body>.target-search-dropdown .dropdown-actions,.target-search-dropdown .dropdown-actions{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap;flex:1;justify-content:flex-end}body>.target-search-dropdown .btn-select-all,body>.target-search-dropdown .btn-clear-selection,.target-search-dropdown .btn-select-all,.target-search-dropdown .btn-clear-selection{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-select-all:focus,body>.target-search-dropdown .btn-clear-selection:focus,.target-search-dropdown .btn-select-all:focus,.target-search-dropdown .btn-clear-selection:focus{outline:none}body>.target-search-dropdown .btn-select-all,body>.target-search-dropdown .btn-clear-selection,.target-search-dropdown .btn-select-all,.target-search-dropdown .btn-clear-selection{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-select-all:hover,body>.target-search-dropdown .btn-clear-selection:hover,.target-search-dropdown .btn-select-all:hover,.target-search-dropdown .btn-clear-selection:hover{background:#e9ecef;border-color:#cbd5e1}body>.target-search-dropdown .btn-select-all kbd,body>.target-search-dropdown .btn-clear-selection kbd,.target-search-dropdown .btn-select-all kbd,.target-search-dropdown .btn-clear-selection kbd{font-size:.65rem;padding:.125rem .25rem;background:#f1f5f9;border-radius:2px;color:#6c757d}body>.target-search-dropdown .sort-controls,.target-search-dropdown .sort-controls{display:flex;align-items:center;gap:.25rem}body>.target-search-dropdown .sort-field-select,body>.target-search-dropdown .view-mode-select,.target-search-dropdown .sort-field-select,.target-search-dropdown .view-mode-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .sort-field-select:focus,body>.target-search-dropdown .view-mode-select:focus,.target-search-dropdown .sort-field-select:focus,.target-search-dropdown .view-mode-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .sort-field-select::placeholder,body>.target-search-dropdown .view-mode-select::placeholder,.target-search-dropdown .sort-field-select::placeholder,.target-search-dropdown .view-mode-select::placeholder{color:#adb5bd}body>.target-search-dropdown .sort-field-select,body>.target-search-dropdown .view-mode-select,.target-search-dropdown .sort-field-select,.target-search-dropdown .view-mode-select{padding:.25rem .5rem;font-size:.75rem;min-width:80px}body>.target-search-dropdown .btn-sort-dir,body>.target-search-dropdown .btn-toggle-filters,body>.target-search-dropdown .btn-show-history,.target-search-dropdown .btn-sort-dir,.target-search-dropdown .btn-toggle-filters,.target-search-dropdown .btn-show-history{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-sort-dir:focus,body>.target-search-dropdown .btn-toggle-filters:focus,body>.target-search-dropdown .btn-show-history:focus,.target-search-dropdown .btn-sort-dir:focus,.target-search-dropdown .btn-toggle-filters:focus,.target-search-dropdown .btn-show-history:focus{outline:none}body>.target-search-dropdown .btn-sort-dir,body>.target-search-dropdown .btn-toggle-filters,body>.target-search-dropdown .btn-show-history,.target-search-dropdown .btn-sort-dir,.target-search-dropdown .btn-toggle-filters,.target-search-dropdown .btn-show-history{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-sort-dir:hover,body>.target-search-dropdown .btn-toggle-filters:hover,body>.target-search-dropdown .btn-show-history:hover,.target-search-dropdown .btn-sort-dir:hover,.target-search-dropdown .btn-toggle-filters:hover,.target-search-dropdown .btn-show-history:hover{background:#e9ecef;color:#212529}body>.target-search-dropdown .btn-sort-dir.active,body>.target-search-dropdown .btn-toggle-filters.active,body>.target-search-dropdown .btn-show-history.active,.target-search-dropdown .btn-sort-dir.active,.target-search-dropdown .btn-toggle-filters.active,.target-search-dropdown .btn-show-history.active{background:rgba(37,185,215,.1);border-color:#25b9d7;color:#25b9d7}body>.target-search-dropdown .refine-compact,.target-search-dropdown .refine-compact{display:flex;align-items:center;gap:.25rem}body>.target-search-dropdown .refine-compact .refine-input,.target-search-dropdown .refine-compact .refine-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .refine-compact .refine-input:focus,.target-search-dropdown .refine-compact .refine-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .refine-compact .refine-input::placeholder,.target-search-dropdown .refine-compact .refine-input::placeholder{color:#adb5bd}body>.target-search-dropdown .refine-compact .refine-input,.target-search-dropdown .refine-compact .refine-input{width:100px;padding:.25rem .5rem;font-size:.75rem}body>.target-search-dropdown .refine-compact .btn-refine-negate,body>.target-search-dropdown .refine-compact .btn-clear-refine,.target-search-dropdown .refine-compact .btn-refine-negate,.target-search-dropdown .refine-compact .btn-clear-refine{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .refine-compact .btn-refine-negate:focus,body>.target-search-dropdown .refine-compact .btn-clear-refine:focus,.target-search-dropdown .refine-compact .btn-refine-negate:focus,.target-search-dropdown .refine-compact .btn-clear-refine:focus{outline:none}body>.target-search-dropdown .refine-compact .btn-refine-negate,body>.target-search-dropdown .refine-compact .btn-clear-refine,.target-search-dropdown .refine-compact .btn-refine-negate,.target-search-dropdown .refine-compact .btn-clear-refine{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;cursor:pointer}body>.target-search-dropdown .refine-compact .btn-refine-negate:hover,body>.target-search-dropdown .refine-compact .btn-clear-refine:hover,.target-search-dropdown .refine-compact .btn-refine-negate:hover,.target-search-dropdown .refine-compact .btn-clear-refine:hover{background:#e9ecef}body>.target-search-dropdown .refine-compact .btn-refine-negate.active,body>.target-search-dropdown .refine-compact .btn-clear-refine.active,.target-search-dropdown .refine-compact .btn-refine-negate.active,.target-search-dropdown .refine-compact .btn-clear-refine.active{color:#dc3545}body>.target-search-dropdown .filter-panel,.target-search-dropdown .filter-panel{display:none;padding:1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}body>.target-search-dropdown .filter-panel.show,.target-search-dropdown .filter-panel.show{display:block}body>.target-search-dropdown .filter-row,.target-search-dropdown .filter-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}body>.target-search-dropdown .filter-row:last-child,.target-search-dropdown .filter-row:last-child{margin-bottom:0}body>.target-search-dropdown .filter-label,.target-search-dropdown .filter-label{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:#495057;cursor:pointer}body>.target-search-dropdown .filter-label input[type=checkbox],.target-search-dropdown .filter-label input[type=checkbox]{margin:0}body>.target-search-dropdown .filter-price-range,.target-search-dropdown .filter-price-range{display:flex;align-items:center;gap:.25rem}body>.target-search-dropdown .filter-price-range .filter-price-label,.target-search-dropdown .filter-price-range .filter-price-label{font-size:.75rem;color:#6c757d}body>.target-search-dropdown .filter-price-range .filter-price-min,body>.target-search-dropdown .filter-price-range .filter-price-max,.target-search-dropdown .filter-price-range .filter-price-min,.target-search-dropdown .filter-price-range .filter-price-max{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .filter-price-range .filter-price-min:focus,body>.target-search-dropdown .filter-price-range .filter-price-max:focus,.target-search-dropdown .filter-price-range .filter-price-min:focus,.target-search-dropdown .filter-price-range .filter-price-max:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .filter-price-range .filter-price-min::placeholder,body>.target-search-dropdown .filter-price-range .filter-price-max::placeholder,.target-search-dropdown .filter-price-range .filter-price-min::placeholder,.target-search-dropdown .filter-price-range .filter-price-max::placeholder{color:#adb5bd}body>.target-search-dropdown .filter-price-range .filter-price-min,body>.target-search-dropdown .filter-price-range .filter-price-max,.target-search-dropdown .filter-price-range .filter-price-min,.target-search-dropdown .filter-price-range .filter-price-max{width:70px;padding:.25rem .5rem;font-size:.75rem}body>.target-search-dropdown .filter-price-range .filter-price-sep,.target-search-dropdown .filter-price-range .filter-price-sep{color:#6c757d}body>.target-search-dropdown .btn-clear-filters,.target-search-dropdown .btn-clear-filters{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-clear-filters:focus,.target-search-dropdown .btn-clear-filters:focus{outline:none}body>.target-search-dropdown .btn-clear-filters,.target-search-dropdown .btn-clear-filters{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;cursor:pointer;margin-left:auto}body>.target-search-dropdown .btn-clear-filters:hover,.target-search-dropdown .btn-clear-filters:hover{background:#e2e8f0;color:#212529}body>.target-search-dropdown .filter-row-multi,.target-search-dropdown .filter-row-multi{flex-direction:column;align-items:stretch;gap:.5rem}body>.target-search-dropdown .filter-subrow,.target-search-dropdown .filter-subrow{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}body>.target-search-dropdown .filter-range-group,body>.target-search-dropdown .filter-date-group,body>.target-search-dropdown .filter-select-group,.target-search-dropdown .filter-range-group,.target-search-dropdown .filter-date-group,.target-search-dropdown .filter-select-group{display:flex;align-items:center;gap:.25rem}body>.target-search-dropdown .filter-range-label,body>.target-search-dropdown .filter-date-label,body>.target-search-dropdown .filter-select-label,body>.target-search-dropdown .filter-row-label,.target-search-dropdown .filter-range-label,.target-search-dropdown .filter-date-label,.target-search-dropdown .filter-select-label,.target-search-dropdown .filter-row-label{font-size:.75rem;color:#6c757d;white-space:nowrap}body>.target-search-dropdown .filter-range-label i,body>.target-search-dropdown .filter-date-label i,body>.target-search-dropdown .filter-select-label i,body>.target-search-dropdown .filter-row-label i,.target-search-dropdown .filter-range-label i,.target-search-dropdown .filter-date-label i,.target-search-dropdown .filter-select-label i,.target-search-dropdown .filter-row-label i{margin-right:.25rem}body>.target-search-dropdown .filter-range-sep,.target-search-dropdown .filter-range-sep{color:#6c757d}body>.target-search-dropdown .filter-product-count-min,body>.target-search-dropdown .filter-product-count-max,body>.target-search-dropdown .filter-sales-min,body>.target-search-dropdown .filter-sales-max,body>.target-search-dropdown .filter-turnover-min,body>.target-search-dropdown .filter-turnover-max,body>.target-search-dropdown .filter-date-add-from,body>.target-search-dropdown .filter-date-add-to,body>.target-search-dropdown .filter-last-product-from,body>.target-search-dropdown .filter-last-product-to,.target-search-dropdown .filter-product-count-min,.target-search-dropdown .filter-product-count-max,.target-search-dropdown .filter-sales-min,.target-search-dropdown .filter-sales-max,.target-search-dropdown .filter-turnover-min,.target-search-dropdown .filter-turnover-max,.target-search-dropdown .filter-date-add-from,.target-search-dropdown .filter-date-add-to,.target-search-dropdown .filter-last-product-from,.target-search-dropdown .filter-last-product-to{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .filter-product-count-min:focus,body>.target-search-dropdown .filter-product-count-max:focus,body>.target-search-dropdown .filter-sales-min:focus,body>.target-search-dropdown .filter-sales-max:focus,body>.target-search-dropdown .filter-turnover-min:focus,body>.target-search-dropdown .filter-turnover-max:focus,body>.target-search-dropdown .filter-date-add-from:focus,body>.target-search-dropdown .filter-date-add-to:focus,body>.target-search-dropdown .filter-last-product-from:focus,body>.target-search-dropdown .filter-last-product-to:focus,.target-search-dropdown .filter-product-count-min:focus,.target-search-dropdown .filter-product-count-max:focus,.target-search-dropdown .filter-sales-min:focus,.target-search-dropdown .filter-sales-max:focus,.target-search-dropdown .filter-turnover-min:focus,.target-search-dropdown .filter-turnover-max:focus,.target-search-dropdown .filter-date-add-from:focus,.target-search-dropdown .filter-date-add-to:focus,.target-search-dropdown .filter-last-product-from:focus,.target-search-dropdown .filter-last-product-to:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .filter-product-count-min::placeholder,body>.target-search-dropdown .filter-product-count-max::placeholder,body>.target-search-dropdown .filter-sales-min::placeholder,body>.target-search-dropdown .filter-sales-max::placeholder,body>.target-search-dropdown .filter-turnover-min::placeholder,body>.target-search-dropdown .filter-turnover-max::placeholder,body>.target-search-dropdown .filter-date-add-from::placeholder,body>.target-search-dropdown .filter-date-add-to::placeholder,body>.target-search-dropdown .filter-last-product-from::placeholder,body>.target-search-dropdown .filter-last-product-to::placeholder,.target-search-dropdown .filter-product-count-min::placeholder,.target-search-dropdown .filter-product-count-max::placeholder,.target-search-dropdown .filter-sales-min::placeholder,.target-search-dropdown .filter-sales-max::placeholder,.target-search-dropdown .filter-turnover-min::placeholder,.target-search-dropdown .filter-turnover-max::placeholder,.target-search-dropdown .filter-date-add-from::placeholder,.target-search-dropdown .filter-date-add-to::placeholder,.target-search-dropdown .filter-last-product-from::placeholder,.target-search-dropdown .filter-last-product-to::placeholder{color:#adb5bd}body>.target-search-dropdown .filter-product-count-min,body>.target-search-dropdown .filter-product-count-max,body>.target-search-dropdown .filter-sales-min,body>.target-search-dropdown .filter-sales-max,body>.target-search-dropdown .filter-turnover-min,body>.target-search-dropdown .filter-turnover-max,body>.target-search-dropdown .filter-date-add-from,body>.target-search-dropdown .filter-date-add-to,body>.target-search-dropdown .filter-last-product-from,body>.target-search-dropdown .filter-last-product-to,.target-search-dropdown .filter-product-count-min,.target-search-dropdown .filter-product-count-max,.target-search-dropdown .filter-sales-min,.target-search-dropdown .filter-sales-max,.target-search-dropdown .filter-turnover-min,.target-search-dropdown .filter-turnover-max,.target-search-dropdown .filter-date-add-from,.target-search-dropdown .filter-date-add-to,.target-search-dropdown .filter-last-product-from,.target-search-dropdown .filter-last-product-to{width:70px;padding:.25rem .5rem;font-size:.75rem}body>.target-search-dropdown .filter-depth-select,body>.target-search-dropdown .filter-attribute-group-select,body>.target-search-dropdown .filter-feature-group-select,.target-search-dropdown .filter-depth-select,.target-search-dropdown .filter-attribute-group-select,.target-search-dropdown .filter-feature-group-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .filter-depth-select:focus,body>.target-search-dropdown .filter-attribute-group-select:focus,body>.target-search-dropdown .filter-feature-group-select:focus,.target-search-dropdown .filter-depth-select:focus,.target-search-dropdown .filter-attribute-group-select:focus,.target-search-dropdown .filter-feature-group-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .filter-depth-select::placeholder,body>.target-search-dropdown .filter-attribute-group-select::placeholder,body>.target-search-dropdown .filter-feature-group-select::placeholder,.target-search-dropdown .filter-depth-select::placeholder,.target-search-dropdown .filter-attribute-group-select::placeholder,.target-search-dropdown .filter-feature-group-select::placeholder{color:#adb5bd}body>.target-search-dropdown .filter-depth-select,body>.target-search-dropdown .filter-attribute-group-select,body>.target-search-dropdown .filter-feature-group-select,.target-search-dropdown .filter-depth-select,.target-search-dropdown .filter-attribute-group-select,.target-search-dropdown .filter-feature-group-select{padding:.25rem .5rem;font-size:.75rem;min-width:100px}body>.target-search-dropdown .filter-attributes-container,body>.target-search-dropdown .filter-features-container,body>.target-search-dropdown .filter-values-container,.target-search-dropdown .filter-attributes-container,.target-search-dropdown .filter-features-container,.target-search-dropdown .filter-values-container{display:flex;flex-wrap:wrap;gap:.25rem}body>.target-search-dropdown .filter-group-toggle,.target-search-dropdown .filter-group-toggle{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-group-toggle:focus,.target-search-dropdown .filter-group-toggle:focus{outline:none}body>.target-search-dropdown .filter-group-toggle,.target-search-dropdown .filter-group-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .filter-group-toggle:hover,.target-search-dropdown .filter-group-toggle:hover{background:#e9ecef;border-color:#cbd5e1}body>.target-search-dropdown .filter-group-toggle.active,.target-search-dropdown .filter-group-toggle.active{background:rgba(37,185,215,.1);border-color:#25b9d7;color:#25b9d7}body>.target-search-dropdown .filter-group-toggle.active .toggle-count,.target-search-dropdown .filter-group-toggle.active .toggle-count{color:#25b9d7}body>.target-search-dropdown .filter-group-toggle.has-selection,.target-search-dropdown .filter-group-toggle.has-selection{border-color:#28a745;background:rgba(40,167,69,.05)}body>.target-search-dropdown .filter-group-toggle.has-selection .toggle-count,.target-search-dropdown .filter-group-toggle.has-selection .toggle-count{color:#28a745;font-weight:600}body>.target-search-dropdown .filter-group-toggle .toggle-name,.target-search-dropdown .filter-group-toggle .toggle-name{font-weight:500}body>.target-search-dropdown .filter-group-toggle .toggle-count,.target-search-dropdown .filter-group-toggle .toggle-count{display:inline-flex;align-items:center;gap:.125rem;color:#6c757d;font-size:.65rem}body>.target-search-dropdown .filter-group-toggle .toggle-count i,.target-search-dropdown .filter-group-toggle .toggle-count i{font-size:10px;color:#25b9d7}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable,.target-search-dropdown .filter-group-toggle .toggle-count.clickable{cursor:pointer;padding:.125rem .25rem;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover,.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover{background:rgba(37,185,215,.1);color:#25b9d7}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover i,.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover i{color:#25b9d7}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open,.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open{background:#25b9d7;color:#fff}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open i,.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open i{color:#fff}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable.loading i,.target-search-dropdown .filter-group-toggle .toggle-count.clickable.loading i{animation:spin .6s linear infinite}body>.target-search-dropdown .filter-chip,body>.target-search-dropdown .filter-attr-chip,body>.target-search-dropdown .filter-feat-chip,.target-search-dropdown .filter-chip,.target-search-dropdown .filter-attr-chip,.target-search-dropdown .filter-feat-chip{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-chip:focus,.target-search-dropdown .filter-chip:focus,.target-search-dropdown .filter-attr-chip:focus,.target-search-dropdown .filter-feat-chip:focus{outline:none}body>.target-search-dropdown .filter-chip,body>.target-search-dropdown .filter-attr-chip,body>.target-search-dropdown .filter-feat-chip,.target-search-dropdown .filter-chip,.target-search-dropdown .filter-attr-chip,.target-search-dropdown .filter-feat-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#495057;background:#f1f5f9;border:1px solid rgba(0,0,0,0);border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .filter-chip:hover,.target-search-dropdown .filter-chip:hover,.target-search-dropdown .filter-attr-chip:hover,.target-search-dropdown .filter-feat-chip:hover{background:#e2e8f0}body>.target-search-dropdown .filter-chip.active,.target-search-dropdown .filter-chip.active,.target-search-dropdown .active.filter-attr-chip,.target-search-dropdown .active.filter-feat-chip{background:#25b9d7;color:#fff}body>.target-search-dropdown .filter-row-values,.target-search-dropdown .filter-row-values{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:.2rem}body>.target-search-dropdown .filter-row-values .filter-values-container,.target-search-dropdown .filter-row-values .filter-values-container{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;flex:1}body>.target-search-dropdown .filter-row-values .filter-values-label,.target-search-dropdown .filter-row-values .filter-values-label{font-size:.75rem;font-weight:600;color:#495057;white-space:nowrap}body>.target-search-dropdown .filter-row-values .btn-close-values,.target-search-dropdown .filter-row-values .btn-close-values{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-row-values .btn-close-values:focus,.target-search-dropdown .filter-row-values .btn-close-values:focus{outline:none}body>.target-search-dropdown .filter-row-values .btn-close-values,.target-search-dropdown .filter-row-values .btn-close-values{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:20px;color:#6c757d;border-radius:.2rem}body>.target-search-dropdown .filter-row-values .btn-close-values:hover,.target-search-dropdown .filter-row-values .btn-close-values:hover{background:#e2e8f0;color:#212529}body>.target-search-dropdown .chip-name,.target-search-dropdown .chip-name{font-weight:500}body>.target-search-dropdown .chip-count,.target-search-dropdown .chip-count{font-size:.6rem;color:#6c757d;margin-left:.125rem}body>.target-search-dropdown .filter-chip.active .chip-count,.target-search-dropdown .filter-chip.active .chip-count,.target-search-dropdown .active.filter-attr-chip .chip-count,.target-search-dropdown .active.filter-feat-chip .chip-count{color:hsla(0,0%,100%,.8)}body>.target-search-dropdown .dropdown-content,.target-search-dropdown .dropdown-content{max-height:400px;overflow-y:auto}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar,.target-search-dropdown .dropdown-content::-webkit-scrollbar{width:6px;height:6px}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar-track,.target-search-dropdown .dropdown-content::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb,.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb:hover,.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb:hover{background:#ced4da}body>.target-search-dropdown .dropdown-items,.target-search-dropdown .dropdown-items{display:flex;flex-direction:column;gap:.25rem;padding:.5rem}body>.target-search-dropdown .dropdown-item,.target-search-dropdown .dropdown-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .dropdown-item:hover,.target-search-dropdown .dropdown-item:hover{background:#e9ecef;border-color:#cbd5e1}body>.target-search-dropdown .dropdown-item.selected,.target-search-dropdown .dropdown-item.selected{background:rgba(37,185,215,.1);border-color:#25b9d7}body>.target-search-dropdown .dropdown-item.disabled,.target-search-dropdown .dropdown-item.disabled{opacity:.5;cursor:not-allowed}body>.target-search-dropdown .item-checkbox,.target-search-dropdown .item-checkbox{flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.dropdown-item.selected body>.target-search-dropdown .item-checkbox,.dropdown-item.selected .target-search-dropdown .item-checkbox{background:#25b9d7;border-color:#25b9d7}body>.target-search-dropdown .item-image,.target-search-dropdown .item-image{flex-shrink:0;width:40px;height:40px;object-fit:cover;border-radius:.2rem;background:#f1f5f9}body>.target-search-dropdown .item-info,.target-search-dropdown .item-info{flex:1;min-width:0}body>.target-search-dropdown .item-name,.target-search-dropdown .item-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .item-meta,.target-search-dropdown .item-meta{font-size:.75rem;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .dropdown-footer,.target-search-dropdown .dropdown-footer{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}body>.target-search-dropdown .dropdown-footer-info,.target-search-dropdown .dropdown-footer-info{font-size:.75rem;color:#6c757d}body>.target-search-dropdown .dropdown-footer-actions,.target-search-dropdown .dropdown-footer-actions{display:flex;align-items:center;gap:.5rem}body>.target-search-dropdown .btn-cancel-dropdown,.target-search-dropdown .btn-cancel-dropdown{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-cancel-dropdown:focus,.target-search-dropdown .btn-cancel-dropdown:focus{outline:none}body>.target-search-dropdown .btn-cancel-dropdown,.target-search-dropdown .btn-cancel-dropdown{padding:.375rem .75rem;font-size:.875rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer}body>.target-search-dropdown .btn-cancel-dropdown:hover,.target-search-dropdown .btn-cancel-dropdown:hover{background:#e9ecef}body>.target-search-dropdown .btn-cancel-dropdown kbd,.target-search-dropdown .btn-cancel-dropdown kbd{font-size:.65rem;padding:.125rem .25rem;background:#f1f5f9;border-radius:2px;color:#6c757d;margin-left:.25rem}body>.target-search-dropdown .btn-confirm-dropdown,.target-search-dropdown .btn-confirm-dropdown{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-confirm-dropdown:focus,.target-search-dropdown .btn-confirm-dropdown:focus{outline:none}body>.target-search-dropdown .btn-confirm-dropdown,.target-search-dropdown .btn-confirm-dropdown{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.875rem;color:#fff;background:#25b9d7;border:1px solid #25b9d7;border-radius:.2rem;cursor:pointer}body>.target-search-dropdown .btn-confirm-dropdown:hover,.target-search-dropdown .btn-confirm-dropdown:hover{background:#1a9ab7}body>.target-search-dropdown .btn-confirm-dropdown kbd,.target-search-dropdown .btn-confirm-dropdown kbd{font-size:.65rem;padding:.125rem .25rem;background:hsla(0,0%,100%,.2);border-radius:2px;color:hsla(0,0%,100%,.8)}body>.target-search-dropdown .filter-chips-row,.target-search-dropdown .filter-chips-row{display:flex;flex-wrap:wrap;gap:.25rem;padding:.25rem 1rem;border-bottom:1px solid #dee2e6}body>.target-search-dropdown .filter-chip,body>.target-search-dropdown .filter-attr-chip,body>.target-search-dropdown .filter-feat-chip,.target-search-dropdown .filter-chip,.target-search-dropdown .filter-attr-chip,.target-search-dropdown .filter-feat-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:#e9ecef;color:#495057;border-radius:50rem}body>.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-attr-chip .chip-remove,.target-search-dropdown .filter-feat-chip .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-chip .chip-remove:focus,.target-search-dropdown .filter-chip .chip-remove:focus,.target-search-dropdown .filter-attr-chip .chip-remove:focus,.target-search-dropdown .filter-feat-chip .chip-remove:focus{outline:none}body>.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-attr-chip .chip-remove,.target-search-dropdown .filter-feat-chip .chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;color:#6c757d;border-radius:50%}body>.target-search-dropdown .filter-chip .chip-remove:hover,.target-search-dropdown .filter-chip .chip-remove:hover,.target-search-dropdown .filter-attr-chip .chip-remove:hover,.target-search-dropdown .filter-feat-chip .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}body>.target-search-dropdown .dropdown-empty,body>.target-search-dropdown .dropdown-loading,.target-search-dropdown .dropdown-empty,.target-search-dropdown .dropdown-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;color:#6c757d;font-size:.875rem}body>.target-search-dropdown .dropdown-empty i,body>.target-search-dropdown .dropdown-loading i,.target-search-dropdown .dropdown-empty i,.target-search-dropdown .dropdown-loading i{font-size:2rem;opacity:.5;margin-bottom:.5rem}body>.target-search-dropdown .search-history-panel,.target-search-dropdown .search-history-panel{display:none;padding:.5rem;background:#fff;border-bottom:1px solid #dee2e6}body>.target-search-dropdown .search-history-panel.show,.target-search-dropdown .search-history-panel.show{display:block}body>.target-search-dropdown .history-item,.target-search-dropdown .history-item{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:.2rem;cursor:pointer;transition:background .15s ease-in-out}body>.target-search-dropdown .history-item:hover,.target-search-dropdown .history-item:hover{background:#e9ecef}body>.target-search-dropdown .history-item i,.target-search-dropdown .history-item i{color:#6c757d;font-size:.875rem}body>.target-search-dropdown .history-item span,.target-search-dropdown .history-item span{flex:1;font-size:.875rem;color:#212529}body>.target-search-dropdown .history-item .btn-remove-history,.target-search-dropdown .history-item .btn-remove-history{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .history-item .btn-remove-history:focus,.target-search-dropdown .history-item .btn-remove-history:focus{outline:none}body>.target-search-dropdown .history-item .btn-remove-history,.target-search-dropdown .history-item .btn-remove-history{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#6c757d;border-radius:.2rem;opacity:0;transition:all .15s ease-in-out}body>.target-search-dropdown .history-item .btn-remove-history:hover,.target-search-dropdown .history-item .btn-remove-history:hover{background:#e2e8f0;color:#212529}body>.target-search-dropdown .history-item:hover .btn-remove-history,.target-search-dropdown .history-item:hover .btn-remove-history{opacity:1}body>.target-search-dropdown .results-header,.target-search-dropdown .results-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-size:.75rem;font-weight:600;color:#495057}body>.target-search-dropdown .results-header .header-spacer,.target-search-dropdown .results-header .header-spacer{width:58px;flex-shrink:0}body>.target-search-dropdown .results-header .header-col,.target-search-dropdown .results-header .header-col{flex-shrink:0;width:70px;text-align:right}body>.target-search-dropdown .results-header .header-col-name,.target-search-dropdown .results-header .header-col-name{flex:1;text-align:left}body>.target-search-dropdown .dropdown-results,.target-search-dropdown .dropdown-results{padding:.5rem}body>.target-search-dropdown .dropdown-results-grid,.target-search-dropdown .dropdown-results-grid{display:grid;gap:.5rem}body>.target-search-dropdown .dropdown-results-grid.view-list,.target-search-dropdown .dropdown-results-grid.view-list{grid-template-columns:1fr}body>.target-search-dropdown .dropdown-results-grid.view-grid-2,.target-search-dropdown .dropdown-results-grid.view-grid-2{grid-template-columns:repeat(2, 1fr)}body>.target-search-dropdown .dropdown-results-grid.view-grid-3,.target-search-dropdown .dropdown-results-grid.view-grid-3{grid-template-columns:repeat(3, 1fr)}body>.target-search-dropdown .dropdown-result-item,.target-search-dropdown .dropdown-result-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .dropdown-result-item:hover,.target-search-dropdown .dropdown-result-item:hover{background:#e9ecef;border-color:#cbd5e1}body>.target-search-dropdown .dropdown-result-item.selected,.target-search-dropdown .dropdown-result-item.selected{background:rgba(37,185,215,.1);border-color:#25b9d7}body>.target-search-dropdown .dropdown-result-item.disabled,.target-search-dropdown .dropdown-result-item.disabled{opacity:.5;cursor:not-allowed}body>.target-search-dropdown .result-item-product,.target-search-dropdown .result-item-product{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}body>.target-search-dropdown .result-item-image,body>.target-search-dropdown .result-image,.target-search-dropdown .result-item-image,.target-search-dropdown .result-image{flex-shrink:0;width:40px;height:40px;overflow:hidden;border-radius:.2rem;background:#f1f5f9}body>.target-search-dropdown .result-item-image img,body>.target-search-dropdown .result-image img,.target-search-dropdown .result-item-image img,.target-search-dropdown .result-image img{width:100%;height:100%;object-fit:cover}body>.target-search-dropdown .result-icon,.target-search-dropdown .result-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;background:#f1f5f9;border-radius:.2rem;color:#6c757d}body>.target-search-dropdown .result-icon i,.target-search-dropdown .result-icon i{font-size:16px}body>.target-search-dropdown .result-item-info,body>.target-search-dropdown .result-info,.target-search-dropdown .result-item-info,.target-search-dropdown .result-info{flex:1;min-width:0}body>.target-search-dropdown .result-item-name,body>.target-search-dropdown .result-name,.target-search-dropdown .result-item-name,.target-search-dropdown .result-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .result-item-meta,body>.target-search-dropdown .result-subtitle,.target-search-dropdown .result-item-meta,.target-search-dropdown .result-subtitle{font-size:.75rem;color:#6c757d}body>.target-search-dropdown .subtitle-line,.target-search-dropdown .subtitle-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .subtitle-line-primary,.target-search-dropdown .subtitle-line-primary{color:#495057}body>.target-search-dropdown .subtitle-line-secondary,.target-search-dropdown .subtitle-line-secondary{color:#6c757d;font-size:11px}body>.target-search-dropdown .result-col,.target-search-dropdown .result-col{flex-shrink:0;width:70px;text-align:right;font-size:.75rem}body>.target-search-dropdown .result-col-price,.target-search-dropdown .result-col-price{color:#495057}body>.target-search-dropdown .result-col-sale,.target-search-dropdown .result-col-sale{color:#dc3545;font-weight:600}body>.target-search-dropdown .result-col-stock .col-value.stock-ok,.target-search-dropdown .result-col-stock .col-value.stock-ok{color:#28a745}body>.target-search-dropdown .result-col-stock .col-value.stock-low,.target-search-dropdown .result-col-stock .col-value.stock-low{color:#ffc107}body>.target-search-dropdown .result-col-stock .col-value.stock-out,.target-search-dropdown .result-col-stock .col-value.stock-out{color:#dc3545}body>.target-search-dropdown .result-col-sales,.target-search-dropdown .result-col-sales{color:#6c757d}body>.target-search-dropdown .col-value,.target-search-dropdown .col-value{display:block}body>.target-search-dropdown .result-item-checkbox,body>.target-search-dropdown .result-checkbox,.target-search-dropdown .result-item-checkbox,.target-search-dropdown .result-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;border:2px solid #ced4da;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .result-item-checkbox i,body>.target-search-dropdown .result-checkbox i,.target-search-dropdown .result-item-checkbox i,.target-search-dropdown .result-checkbox i{display:none;font-size:10px;color:#fff}.dropdown-result-item.selected body>.target-search-dropdown .result-item-checkbox,.dropdown-item.selected body>.target-search-dropdown .result-item-checkbox,.dropdown-result-item.selected body>.target-search-dropdown .result-checkbox,.dropdown-item.selected body>.target-search-dropdown .result-checkbox,.dropdown-result-item.selected .target-search-dropdown .result-item-checkbox,.dropdown-item.selected .target-search-dropdown .result-item-checkbox,.dropdown-result-item.selected .target-search-dropdown .result-checkbox,.dropdown-item.selected .target-search-dropdown .result-checkbox{background:#25b9d7;border-color:#25b9d7}.dropdown-result-item.selected body>.target-search-dropdown .result-item-checkbox i,.dropdown-item.selected body>.target-search-dropdown .result-item-checkbox i,.dropdown-result-item.selected body>.target-search-dropdown .result-checkbox i,.dropdown-item.selected body>.target-search-dropdown .result-checkbox i,.dropdown-result-item.selected .target-search-dropdown .result-item-checkbox i,.dropdown-item.selected .target-search-dropdown .result-item-checkbox i,.dropdown-result-item.selected .target-search-dropdown .result-checkbox i,.dropdown-item.selected .target-search-dropdown .result-checkbox i{display:block}body>.target-search-dropdown .no-results,.target-search-dropdown .no-results{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}body>.target-search-dropdown .no-results i,.target-search-dropdown .no-results i{font-size:1.25rem;opacity:.5}body>.target-search-dropdown .load-more-controls,.target-search-dropdown .load-more-controls{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.75rem;color:#6c757d}body>.target-search-dropdown .load-more-controls .load-more-label,body>.target-search-dropdown .load-more-controls .load-more-of,.target-search-dropdown .load-more-controls .load-more-label,.target-search-dropdown .load-more-controls .load-more-of{white-space:nowrap}body>.target-search-dropdown .load-more-controls .remaining-count,.target-search-dropdown .load-more-controls .remaining-count{font-weight:600;color:#495057}body>.target-search-dropdown .load-more-controls .load-more-select,.target-search-dropdown .load-more-controls .load-more-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .load-more-controls .load-more-select:focus,.target-search-dropdown .load-more-controls .load-more-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .load-more-controls .load-more-select::placeholder,.target-search-dropdown .load-more-controls .load-more-select::placeholder{color:#adb5bd}body>.target-search-dropdown .load-more-controls .load-more-select,.target-search-dropdown .load-more-controls .load-more-select{padding:.25rem .5rem;font-size:.75rem;min-width:60px}body>.target-search-dropdown .load-more-controls .btn-load-more,.target-search-dropdown .load-more-controls .btn-load-more{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .load-more-controls .btn-load-more:focus,.target-search-dropdown .load-more-controls .btn-load-more:focus{outline:none}body>.target-search-dropdown .load-more-controls .btn-load-more,.target-search-dropdown .load-more-controls .btn-load-more{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#25b9d7;background:rgba(37,185,215,.1);border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .load-more-controls .btn-load-more:hover,.target-search-dropdown .load-more-controls .btn-load-more:hover{background:rgba(37,185,215,.2)}body>.target-search-dropdown .dropdown-load-more,.target-search-dropdown .dropdown-load-more{display:flex;justify-content:center;padding:1rem;border-top:1px solid #dee2e6}body>.target-search-dropdown .dropdown-load-more .load-more-btn,.target-search-dropdown .dropdown-load-more .load-more-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .dropdown-load-more .load-more-btn:focus,.target-search-dropdown .dropdown-load-more .load-more-btn:focus{outline:none}body>.target-search-dropdown .dropdown-load-more .load-more-btn,.target-search-dropdown .dropdown-load-more .load-more-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:#25b9d7;background:rgba(37,185,215,.1);border-radius:.25rem;transition:all .15s ease-in-out}body>.target-search-dropdown .dropdown-load-more .load-more-btn:hover,.target-search-dropdown .dropdown-load-more .load-more-btn:hover{background:rgba(37,185,215,.2)}body>.target-search-dropdown .dropdown-load-more .load-more-btn.loading,.target-search-dropdown .dropdown-load-more .load-more-btn.loading{opacity:.7;cursor:wait}body>.target-search-dropdown .dropdown-body,.target-search-dropdown .dropdown-body{max-height:400px;overflow-y:auto}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar,.target-search-dropdown .dropdown-body::-webkit-scrollbar{width:6px;height:6px}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar-track,.target-search-dropdown .dropdown-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb,.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb:hover,.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb:hover{background:#ced4da}body>.target-search-dropdown .tree-container,.target-search-dropdown .tree-container{padding:.5rem}body>.target-search-dropdown .tree-loading,.target-search-dropdown .tree-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}body>.target-search-dropdown .tree-loading i,.target-search-dropdown .tree-loading i{animation:spin .6s linear infinite}body>.target-search-dropdown .tree-item,.target-search-dropdown .tree-item{display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}body>.target-search-dropdown .tree-item:hover,.target-search-dropdown .tree-item:hover{background:#e9ecef}body>.target-search-dropdown .tree-item.selected,.target-search-dropdown .tree-item.selected{background:rgba(37,185,215,.1)}body>.target-search-dropdown .tree-item.selected .tree-checkbox,.target-search-dropdown .tree-item.selected .tree-checkbox{background:#25b9d7;border-color:#25b9d7}body>.target-search-dropdown .tree-item.selected .tree-checkbox i,.target-search-dropdown .tree-item.selected .tree-checkbox i{display:block}body>.target-search-dropdown .tree-toggle,.target-search-dropdown .tree-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#6c757d;cursor:pointer;transition:transform .15s ease-in-out}body>.target-search-dropdown .tree-toggle i,.target-search-dropdown .tree-toggle i{font-size:12px}body>.target-search-dropdown .tree-toggle-placeholder,.target-search-dropdown .tree-toggle-placeholder{width:16px;height:16px}body>.target-search-dropdown .btn-select-children,.target-search-dropdown .btn-select-children{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-select-children:focus,.target-search-dropdown .btn-select-children:focus{outline:none}body>.target-search-dropdown .btn-select-children,.target-search-dropdown .btn-select-children{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-select-children:hover,.target-search-dropdown .btn-select-children:hover{background:rgba(37,185,215,.1)}body>.target-search-dropdown .btn-select-children i,.target-search-dropdown .btn-select-children i{font-size:12px}body>.target-search-dropdown .btn-select-children-placeholder,.target-search-dropdown .btn-select-children-placeholder{width:18px;height:18px}body>.target-search-dropdown .tree-checkbox,.target-search-dropdown .tree-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}body>.target-search-dropdown .tree-checkbox i,.target-search-dropdown .tree-checkbox i{display:none;font-size:10px;color:#fff}body>.target-search-dropdown .tree-icon,.target-search-dropdown .tree-icon{display:flex;align-items:center;justify-content:center;width:16px;color:#6c757d}body>.target-search-dropdown .tree-icon i,.target-search-dropdown .tree-icon i{font-size:14px}body>.target-search-dropdown .tree-info,.target-search-dropdown .tree-info{display:flex;align-items:center;gap:.25rem;flex:1;min-width:0}body>.target-search-dropdown .tree-name,.target-search-dropdown .tree-name{font-size:.875rem;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .tree-subtitle,.target-search-dropdown .tree-subtitle{font-size:.75rem;color:#6c757d}.target-search-dropdown .dropdown-results{max-height:400px;overflow-y:auto;padding:.5rem}.target-search-dropdown .dropdown-results::-webkit-scrollbar{width:6px;height:6px}.target-search-dropdown .dropdown-results::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-search-dropdown .dropdown-results::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-search-dropdown .dropdown-results::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-search-dropdown .results-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-size:.75rem;font-weight:600;color:#495057}.target-search-dropdown .results-header .header-spacer{width:58px;flex-shrink:0}.target-search-dropdown .results-header .header-col{flex-shrink:0;width:70px;text-align:right}.target-search-dropdown .results-header .header-col-name{flex:1;text-align:left}.target-search-dropdown:not(.view-list) .results-header,.target-search-dropdown.view-tree .results-header{display:none}.target-search-dropdown .result-item-product{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.target-search-dropdown .result-col{flex-shrink:0;width:70px;text-align:right;font-size:.75rem}.target-search-dropdown .result-col-price{color:#495057}.target-search-dropdown .result-col-sale{color:#dc3545;font-weight:600}.target-search-dropdown .result-col-stock .col-value.stock-ok{color:#28a745}.target-search-dropdown .result-col-stock .col-value.stock-low{color:#ffc107}.target-search-dropdown .result-col-stock .col-value.stock-out{color:#dc3545}.target-search-dropdown .result-col-sales{color:#6c757d}.target-search-dropdown .dropdown-item{display:flex;align-items:center;gap:.5rem;padding:0;border:none;border-bottom:1px solid #dee2e6;border-radius:0;cursor:pointer;transition:background-color .15s ease-in-out}.target-search-dropdown .dropdown-item:last-child{border-bottom:none}.target-search-dropdown .dropdown-item:hover{background:#e9ecef}.target-search-dropdown .dropdown-item.selected{background:rgba(37,185,215,.1)}.target-search-dropdown .result-checkbox{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.target-search-dropdown .result-checkbox i{font-size:10px;color:rgba(0,0,0,0)}.dropdown-item.selected .target-search-dropdown .result-checkbox{background:#25b9d7;border-color:#25b9d7}.dropdown-item.selected .target-search-dropdown .result-checkbox i{color:#fff}.target-search-dropdown .result-image{flex-shrink:0;width:40px;height:40px;overflow:hidden;border-radius:.2rem;background:#f1f5f9}.target-search-dropdown .result-image img{width:100%;height:100%;object-fit:cover}.target-search-dropdown .result-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#f1f5f9;border-radius:.2rem}.target-search-dropdown .result-icon i{font-size:16px;color:#6c757d}.target-search-dropdown .result-info{flex:1;min-width:0}.target-search-dropdown .result-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-search-dropdown .result-subtitle{font-size:.75rem;color:#6c757d}.target-search-dropdown .subtitle-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-search-dropdown .subtitle-line-primary{color:#495057}.target-search-dropdown .subtitle-line-secondary{color:#6c757d;font-size:11px}.target-search-dropdown[class*=view-cols-] .result-col,.target-search-dropdown.view-tree .result-col{display:none}.target-search-dropdown .entity-search-box{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;background:#fff;border:none;border-bottom:1px solid #dee2e6;border-radius:0}.target-search-dropdown .entity-search-box .entity-search-icon{color:#6c757d;flex-shrink:0}.target-search-dropdown .entity-search-box input.entity-search-input,.target-search-dropdown .entity-search-box input.entity-search-input[type=text]{flex:1;min-width:0;width:auto !important;max-width:none !important;height:auto;padding:0;margin:0;border:none !important;outline:none;background:rgba(0,0,0,0) !important;font-size:.875rem;color:#212529;box-shadow:none !important}.target-search-dropdown .entity-search-box input.entity-search-input::placeholder,.target-search-dropdown .entity-search-box input.entity-search-input[type=text]::placeholder{color:#6c757d}.target-search-dropdown .entity-search-box input.entity-search-input:focus,.target-search-dropdown .entity-search-box input.entity-search-input[type=text]:focus{border:none !important;box-shadow:none !important;outline:none}.target-search-dropdown .entity-search-box .search-loading{color:#6c757d}body>.target-search-dropdown .dropdown-item{border:none;border-radius:0}body>.target-search-dropdown .dropdown-item:not(:last-child){border-bottom:1px solid #dee2e6}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.target-conditions-trait .entity-chips,.entity-selector-trait .entity-chips{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem 0;min-height:32px}.target-conditions-trait .entity-chips:empty,.entity-selector-trait .entity-chips:empty{display:none}.target-conditions-trait .entity-chip,.entity-selector-trait .entity-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:#f1f5f9;color:#495057;font-size:.75rem;font-weight:500;border-radius:50rem;max-width:200px;transition:all .15s ease-in-out}.target-conditions-trait .entity-chip:hover,.entity-selector-trait .entity-chip:hover{background:#e2e8f0}.target-conditions-trait .entity-chip.has-image,.entity-selector-trait .entity-chip.has-image{padding-left:.25rem}.target-conditions-trait .chip-image,.entity-selector-trait .chip-image{width:20px;height:20px;object-fit:cover;border-radius:50%;flex-shrink:0}.target-conditions-trait .chip-icon,.entity-selector-trait .chip-icon{font-size:12px;color:#6c757d;flex-shrink:0}.target-conditions-trait .chip-text,.target-conditions-trait .chip-name,.entity-selector-trait .chip-text,.entity-selector-trait .chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .chip-remove,.entity-selector-trait .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .chip-remove:focus,.entity-selector-trait .chip-remove:focus{outline:none}.target-conditions-trait .chip-remove,.entity-selector-trait .chip-remove{display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:.125rem;color:#6c757d;border-radius:50%;flex-shrink:0;transition:all .15s ease-in-out}.target-conditions-trait .chip-remove:hover,.entity-selector-trait .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}.target-conditions-trait .chip-remove i,.entity-selector-trait .chip-remove i{font-size:10px}.target-conditions-trait .entity-chip.chip-primary,.entity-selector-trait .entity-chip.chip-primary{background:rgba(37,185,215,.1);color:#25b9d7}.target-conditions-trait .entity-chip.chip-primary:hover,.entity-selector-trait .entity-chip.chip-primary:hover{background:rgba(37,185,215,.2)}.target-conditions-trait .entity-chip.chip-success,.entity-selector-trait .entity-chip.chip-success{background:#d4edda;color:#1e7e34}.target-conditions-trait .entity-chip.chip-success:hover,.entity-selector-trait .entity-chip.chip-success:hover{background:rgba(40,167,69,.2)}.target-conditions-trait .entity-chip.chip-danger,.entity-selector-trait .entity-chip.chip-danger{background:#f8d7da;color:#dc3545}.target-conditions-trait .entity-chip.chip-danger:hover,.entity-selector-trait .entity-chip.chip-danger:hover{background:rgba(220,53,69,.2)}.target-conditions-trait .entity-chip.chip-warning,.entity-selector-trait .entity-chip.chip-warning{background:#fff3cd;color:#a07800}.target-conditions-trait .entity-chip.chip-warning:hover,.entity-selector-trait .entity-chip.chip-warning:hover{background:rgba(255,193,7,.3)}.target-conditions-trait .entity-chip.loading,.target-conditions-trait .entity-chip-loading,.entity-selector-trait .entity-chip.loading,.entity-selector-trait .entity-chip-loading{opacity:.7}.target-conditions-trait .entity-chip.loading .chip-remove,.target-conditions-trait .entity-chip-loading .chip-remove,.entity-selector-trait .entity-chip.loading .chip-remove,.entity-selector-trait .entity-chip-loading .chip-remove{display:none}.target-conditions-trait .entity-chip.loading .chip-icon i,.target-conditions-trait .entity-chip-loading .chip-icon i,.entity-selector-trait .entity-chip.loading .chip-icon i,.entity-selector-trait .entity-chip-loading .chip-icon i{animation:spin .6s linear infinite}.target-conditions-trait .entity-chip.chip-hidden,.entity-selector-trait .entity-chip.chip-hidden{display:none}.target-conditions-trait .entity-chips.chips-collapsed,.target-conditions-trait .entity-chips.chips-expanded,.entity-selector-trait .entity-chips.chips-collapsed,.entity-selector-trait .entity-chips.chips-expanded{position:relative}.target-conditions-trait .chips-show-more-toggle,.entity-selector-trait .chips-show-more-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;color:#25b9d7;font-size:.75rem;font-weight:500;cursor:pointer;transition:color .15s ease-in-out}.target-conditions-trait .chips-show-more-toggle:hover,.entity-selector-trait .chips-show-more-toggle:hover{color:#1a9ab7}.target-conditions-trait .chips-show-more-toggle i,.entity-selector-trait .chips-show-more-toggle i{font-size:10px}.target-conditions-trait .chips-more,.entity-selector-trait .chips-more{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem;background:#e2e8f0;color:#495057;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .chips-more:hover,.entity-selector-trait .chips-more:hover{background:#cbd5e1}.target-conditions-trait .chip-add-btn,.entity-selector-trait .chip-add-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .chip-add-btn:focus,.entity-selector-trait .chip-add-btn:focus{outline:none}.target-conditions-trait .chip-add-btn,.entity-selector-trait .chip-add-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:rgba(0,0,0,0);color:#25b9d7;font-size:.75rem;font-weight:500;border:1px dashed #25b9d7;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .chip-add-btn:hover,.entity-selector-trait .chip-add-btn:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .chip-add-btn i,.entity-selector-trait .chip-add-btn i{font-size:10px}.target-conditions-trait .entity-chips.inline,.entity-selector-trait .entity-chips.inline{display:inline-flex;padding:0;min-height:auto}.target-conditions-trait .entity-chips.inline .entity-chip,.entity-selector-trait .entity-chips.inline .entity-chip{padding:.125rem .375rem;font-size:11px}.target-conditions-trait .selected-chips-container,.entity-selector-trait .selected-chips-container{display:flex;flex-direction:column;gap:.25rem}.target-conditions-trait .selected-chips-label,.entity-selector-trait .selected-chips-label{font-size:.75rem;font-weight:500;color:#6c757d}.target-conditions-trait .entity-chip.chip-pattern,.entity-selector-trait .entity-chip.chip-pattern{background:#fef3c7;color:#92400e;font-family:monospace}.target-conditions-trait .entity-chip.chip-pattern:hover,.entity-selector-trait .entity-chip.chip-pattern:hover{background:#fde68a}.target-conditions-trait .entity-chip.chip-pattern .chip-icon,.entity-selector-trait .entity-chip.chip-pattern .chip-icon{color:#d97706}.target-conditions-trait .entity-chip.chip-range,.target-conditions-trait .range-chip,.entity-selector-trait .entity-chip.chip-range,.entity-selector-trait .range-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:#ecfeff;color:#0891b2;font-size:.75rem;font-weight:500;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .entity-chip.chip-range:hover,.target-conditions-trait .range-chip:hover,.entity-selector-trait .entity-chip.chip-range:hover,.entity-selector-trait .range-chip:hover{background:#cffafe}.target-conditions-trait .range-chip-text,.entity-selector-trait .range-chip-text{font-family:monospace}.target-conditions-trait .btn-remove-range,.entity-selector-trait .btn-remove-range{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-range:focus,.entity-selector-trait .btn-remove-range:focus{outline:none}.target-conditions-trait .btn-remove-range,.entity-selector-trait .btn-remove-range{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#0891b2;border-radius:50%;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-range:hover,.entity-selector-trait .btn-remove-range:hover{background:rgba(0,0,0,.1);color:#dc3545}.target-conditions-trait .btn-remove-range i,.entity-selector-trait .btn-remove-range i{font-size:10px}.target-conditions-trait .multi-range-chips,.entity-selector-trait .multi-range-chips{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.25rem}.target-conditions-trait .multi-range-chips:empty,.entity-selector-trait .multi-range-chips:empty{display:none}.target-conditions-trait .pattern-chips,.entity-selector-trait .pattern-chips{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem 0;min-height:32px}.target-conditions-trait .pattern-chips:empty::before,.entity-selector-trait .pattern-chips:empty::before{content:attr(data-placeholder);color:#6c757d;font-size:.75rem;font-style:italic}.target-conditions-trait .pattern-tag,.entity-selector-trait .pattern-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:500;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .pattern-tag:hover,.entity-selector-trait .pattern-tag:hover{background:#fde68a}.target-conditions-trait .pattern-tag.case-sensitive .case-icon,.entity-selector-trait .pattern-tag.case-sensitive .case-icon{color:#28a745;font-weight:700}.target-conditions-trait .pattern-tag.draft-tag,.entity-selector-trait .pattern-tag.draft-tag{background:#fff;border:1px solid #dee2e6;padding:0;flex:1;min-width:150px}.target-conditions-trait .pattern-tag.draft-tag:hover,.entity-selector-trait .pattern-tag.draft-tag:hover{background:#fff}.target-conditions-trait .pattern-tag.draft-tag .pattern-input,.entity-selector-trait .pattern-tag.draft-tag .pattern-input{flex:1;min-width:100px;padding:.375rem;border:0;background:rgba(0,0,0,0);font-size:.875rem;font-family:inherit}.target-conditions-trait .pattern-tag.draft-tag .pattern-input:focus,.entity-selector-trait .pattern-tag.draft-tag .pattern-input:focus{outline:none}.target-conditions-trait .pattern-tag.draft-tag .pattern-input::placeholder,.entity-selector-trait .pattern-tag.draft-tag .pattern-input::placeholder{color:#6c757d;font-style:italic}.target-conditions-trait .pattern-tag-text,.entity-selector-trait .pattern-tag-text{font-family:monospace;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .btn-toggle-case,.entity-selector-trait .btn-toggle-case{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-toggle-case:focus,.entity-selector-trait .btn-toggle-case:focus{outline:none}.target-conditions-trait .btn-toggle-case,.entity-selector-trait .btn-toggle-case{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-toggle-case:hover,.entity-selector-trait .btn-toggle-case:hover{background:rgba(0,0,0,.1)}.target-conditions-trait .case-icon,.entity-selector-trait .case-icon{font-size:11px;font-weight:600;font-family:monospace}.target-conditions-trait .btn-remove-pattern,.entity-selector-trait .btn-remove-pattern{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-pattern:focus,.entity-selector-trait .btn-remove-pattern:focus{outline:none}.target-conditions-trait .btn-remove-pattern,.entity-selector-trait .btn-remove-pattern{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:#d97706;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-pattern:hover,.entity-selector-trait .btn-remove-pattern:hover{background:rgba(0,0,0,.1);color:#dc3545}.target-conditions-trait .btn-remove-pattern i,.entity-selector-trait .btn-remove-pattern i{font-size:10px}.target-conditions-trait .btn-add-pattern,.entity-selector-trait .btn-add-pattern{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-pattern:focus,.entity-selector-trait .btn-add-pattern:focus{outline:none}.target-conditions-trait .btn-add-pattern,.entity-selector-trait .btn-add-pattern{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-pattern:hover,.entity-selector-trait .btn-add-pattern:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-add-pattern i,.entity-selector-trait .btn-add-pattern i{font-size:12px}.target-conditions-trait .pattern-match-count,.entity-selector-trait .pattern-match-count{display:inline-flex;align-items:center;gap:.25rem;padding:0 .375rem;color:#6c757d;font-size:.75rem;cursor:pointer}.target-conditions-trait .pattern-match-count.count-zero,.entity-selector-trait .pattern-match-count.count-zero{color:#ffc107}.target-conditions-trait .pattern-match-count.count-found,.entity-selector-trait .pattern-match-count.count-found{color:#28a745}.target-conditions-trait .pattern-match-count .count-value,.entity-selector-trait .pattern-match-count .count-value{font-weight:600}.target-conditions-trait .pattern-input-row,.entity-selector-trait .pattern-input-row{display:flex;align-items:stretch;gap:.25rem}.target-conditions-trait .target-group,.entity-selector-trait .target-group{background:#fff;border:1px solid #dee2e6;border-radius:.3rem;overflow:hidden}.target-conditions-trait .target-group-header,.entity-selector-trait .target-group-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6}.target-conditions-trait .target-group-title,.entity-selector-trait .target-group-title{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;color:#212529}.target-conditions-trait .target-group-title .group-number,.entity-selector-trait .target-group-title .group-number{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 .25rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:700;border-radius:50rem}.target-conditions-trait .target-group-actions,.entity-selector-trait .target-group-actions{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .group-action-btn,.entity-selector-trait .group-action-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .group-action-btn:focus,.entity-selector-trait .group-action-btn:focus{outline:none}.target-conditions-trait .group-action-btn,.entity-selector-trait .group-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .group-action-btn:hover,.entity-selector-trait .group-action-btn:hover{background:#e2e8f0;color:#495057}.target-conditions-trait .group-action-btn.danger:hover,.entity-selector-trait .group-action-btn.danger:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .target-group-body,.target-conditions-trait .group-body,.entity-selector-trait .target-group-body,.entity-selector-trait .group-body{padding:1rem}.target-conditions-trait .include-section,.entity-selector-trait .include-section{margin-bottom:1rem}.target-conditions-trait .section-label,.entity-selector-trait .section-label{display:flex;align-items:center;gap:.25rem;margin-bottom:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.target-conditions-trait .section-label.label-include,.entity-selector-trait .section-label.label-include{color:#1e7e34}.target-conditions-trait .section-label.label-include i,.entity-selector-trait .section-label.label-include i{color:#28a745}.target-conditions-trait .section-label.label-exclude,.entity-selector-trait .section-label.label-exclude{color:#dc3545}.target-conditions-trait .section-label.label-exclude i,.entity-selector-trait .section-label.label-exclude i{color:#dc3545}.target-conditions-trait .method-selector,.entity-selector-trait .method-selector{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.target-conditions-trait .method-selector-wrapper,.entity-selector-trait .method-selector-wrapper{flex:1;position:relative}.target-conditions-trait .method-select,.entity-selector-trait .method-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .method-select:focus,.entity-selector-trait .method-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .method-select::placeholder,.entity-selector-trait .method-select::placeholder{color:#adb5bd}.target-conditions-trait .method-select,.entity-selector-trait .method-select{padding-right:2rem;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em}.target-conditions-trait .method-help-btn,.entity-selector-trait .method-help-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .method-help-btn:focus,.entity-selector-trait .method-help-btn:focus{outline:none}.target-conditions-trait .method-help-btn,.entity-selector-trait .method-help-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .method-help-btn:hover,.entity-selector-trait .method-help-btn:hover{background:#f1f5f9;color:#25b9d7}.target-conditions-trait .value-picker,.entity-selector-trait .value-picker{position:relative}.target-conditions-trait .value-picker-trigger,.entity-selector-trait .value-picker-trigger{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .value-picker-trigger:focus,.entity-selector-trait .value-picker-trigger:focus{outline:none}.target-conditions-trait .value-picker-trigger,.entity-selector-trait .value-picker-trigger{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#6c757d;font-size:.875rem;text-align:left;transition:all .15s ease-in-out}.target-conditions-trait .value-picker-trigger:hover,.entity-selector-trait .value-picker-trigger:hover{border-color:#cbd5e1}.target-conditions-trait .value-picker-trigger:focus,.entity-selector-trait .value-picker-trigger:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .value-picker-trigger i,.entity-selector-trait .value-picker-trigger i{color:#adb5bd}.target-conditions-trait .pattern-input-wrapper,.entity-selector-trait .pattern-input-wrapper{position:relative}.target-conditions-trait .pattern-input,.entity-selector-trait .pattern-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .pattern-input:focus,.entity-selector-trait .pattern-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .pattern-input::placeholder,.entity-selector-trait .pattern-input::placeholder{color:#adb5bd}.target-conditions-trait .pattern-input,.entity-selector-trait .pattern-input{font-family:monospace}.target-conditions-trait .pattern-add-btn,.entity-selector-trait .pattern-add-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .pattern-add-btn:focus,.entity-selector-trait .pattern-add-btn:focus{outline:none}.target-conditions-trait .pattern-add-btn,.entity-selector-trait .pattern-add-btn{position:absolute;right:.25rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .pattern-add-btn:hover,.entity-selector-trait .pattern-add-btn:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .multi-range-container,.entity-selector-trait .multi-range-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .range-row,.entity-selector-trait .range-row{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .range-input,.entity-selector-trait .range-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .range-input:focus,.entity-selector-trait .range-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .range-input::placeholder,.entity-selector-trait .range-input::placeholder{color:#adb5bd}.target-conditions-trait .range-input,.entity-selector-trait .range-input{width:100px;text-align:center}.target-conditions-trait .range-separator,.entity-selector-trait .range-separator{color:#6c757d;font-size:.875rem}.target-conditions-trait .range-remove-btn,.entity-selector-trait .range-remove-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .range-remove-btn:focus,.entity-selector-trait .range-remove-btn:focus{outline:none}.target-conditions-trait .range-remove-btn,.entity-selector-trait .range-remove-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .range-remove-btn:hover,.entity-selector-trait .range-remove-btn:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .range-add-btn,.entity-selector-trait .range-add-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .range-add-btn:focus,.entity-selector-trait .range-add-btn:focus{outline:none}.target-conditions-trait .range-add-btn,.entity-selector-trait .range-add-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;color:#25b9d7;font-size:.75rem;font-weight:500;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .range-add-btn:hover,.entity-selector-trait .range-add-btn:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .multi-select-tiles,.entity-selector-trait .multi-select-tiles{display:flex;flex-wrap:wrap;gap:.25rem}.target-conditions-trait .multi-select-tile,.entity-selector-trait .multi-select-tile{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .multi-select-tile:focus,.entity-selector-trait .multi-select-tile:focus{outline:none}.target-conditions-trait .multi-select-tile,.entity-selector-trait .multi-select-tile{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;background:#f1f5f9;color:#495057;font-size:.75rem;font-weight:500;border:1px solid rgba(0,0,0,0);border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .multi-select-tile:hover,.entity-selector-trait .multi-select-tile:hover{background:#e2e8f0}.target-conditions-trait .multi-select-tile.selected,.entity-selector-trait .multi-select-tile.selected{background:rgba(37,185,215,.1);color:#25b9d7;border-color:#25b9d7}.target-conditions-trait .exclude-section,.entity-selector-trait .exclude-section{margin-top:1rem;padding-top:1rem;border-top:1px dashed #dee2e6}.target-conditions-trait .exclude-rows,.entity-selector-trait .exclude-rows{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .exclude-row,.entity-selector-trait .exclude-row{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem;background:rgba(220,53,69,.05);border:1px solid rgba(220,53,69,.2);border-radius:.25rem}.target-conditions-trait .exclude-row-content,.entity-selector-trait .exclude-row-content{flex:1}.target-conditions-trait .exclude-remove-btn,.entity-selector-trait .exclude-remove-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .exclude-remove-btn:focus,.entity-selector-trait .exclude-remove-btn:focus{outline:none}.target-conditions-trait .exclude-remove-btn,.entity-selector-trait .exclude-remove-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;flex-shrink:0;transition:all .15s ease-in-out}.target-conditions-trait .exclude-remove-btn:hover,.entity-selector-trait .exclude-remove-btn:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .add-exclude-btn,.entity-selector-trait .add-exclude-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .add-exclude-btn:focus,.entity-selector-trait .add-exclude-btn:focus{outline:none}.target-conditions-trait .add-exclude-btn,.entity-selector-trait .add-exclude-btn{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.25rem .5rem;color:#dc3545;font-size:.75rem;font-weight:500;border:1px dashed #dc3545;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .add-exclude-btn:hover,.entity-selector-trait .add-exclude-btn:hover{background:#f8d7da}.target-conditions-trait .btn-add-group,.entity-selector-trait .btn-add-group{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-group:focus,.entity-selector-trait .btn-add-group:focus{outline:none}.target-conditions-trait .btn-add-group,.entity-selector-trait .btn-add-group{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;color:#25b9d7;font-size:.875rem;font-weight:500;background:rgba(37,185,215,.05);border:1px dashed #25b9d7;border-radius:.375rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-group:hover,.entity-selector-trait .btn-add-group:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-add-group i,.entity-selector-trait .btn-add-group i{font-size:12px}.target-conditions-trait .block-footer,.entity-selector-trait .block-footer{display:flex;align-items:center;gap:.5rem;padding:1rem;border-top:1px solid #dee2e6}.target-conditions-trait .block-body,.entity-selector-trait .block-body{padding:0}.target-conditions-trait .groups-container,.entity-selector-trait .groups-container{padding:1rem}.target-conditions-trait .groups-empty-state,.entity-selector-trait .groups-empty-state{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6c757d;font-size:.875rem}.target-conditions-trait .selection-group,.entity-selector-trait .selection-group{background:#fff;border:1px solid #dee2e6;border-radius:.3rem;margin-bottom:1rem}.target-conditions-trait .selection-group:last-child,.entity-selector-trait .selection-group:last-child{margin-bottom:0}.target-conditions-trait .selection-group.collapsed .group-body,.entity-selector-trait .selection-group.collapsed .group-body{display:none}.target-conditions-trait .selection-group.collapsed .group-collapse-toggle i,.entity-selector-trait .selection-group.collapsed .group-collapse-toggle i{transform:rotate(-90deg)}.target-conditions-trait .group-header,.entity-selector-trait .group-header{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer}.target-conditions-trait .group-header.group-header-single,.entity-selector-trait .group-header.group-header-single{padding:.25rem 1rem;background:rgba(0,0,0,0);border-bottom:none}.target-conditions-trait .group-collapse-toggle,.entity-selector-trait .group-collapse-toggle{display:flex;align-items:center;justify-content:center;width:20px;color:#6c757d}.target-conditions-trait .group-collapse-toggle i,.entity-selector-trait .group-collapse-toggle i{transition:transform .15s ease-in-out}.target-conditions-trait .group-name-wrapper,.entity-selector-trait .group-name-wrapper{flex:1;display:flex;align-items:center;gap:.5rem}.target-conditions-trait .group-name-input,.entity-selector-trait .group-name-input{flex:1;padding:.25rem .5rem;font-size:.875rem;font-weight:600;color:#212529;background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .group-name-input:hover,.target-conditions-trait .group-name-input:focus,.entity-selector-trait .group-name-input:hover,.entity-selector-trait .group-name-input:focus{background:#fff;border-color:#dee2e6;outline:none}.target-conditions-trait .group-name-input::placeholder,.entity-selector-trait .group-name-input::placeholder{color:#6c757d;font-weight:500}.target-conditions-trait .group-count-badge,.entity-selector-trait .group-count-badge{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .group-count-badge:hover,.entity-selector-trait .group-count-badge:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .group-count-badge.loading,.entity-selector-trait .group-count-badge.loading{cursor:wait}.target-conditions-trait .group-count-badge.loading i,.entity-selector-trait .group-count-badge.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .group-count-badge.loading:hover,.entity-selector-trait .group-count-badge.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .group-count-badge.inactive,.target-conditions-trait .group-count-badge.no-matches,.entity-selector-trait .group-count-badge.inactive,.entity-selector-trait .group-count-badge.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .group-count-badge.inactive:hover,.target-conditions-trait .group-count-badge.no-matches:hover,.entity-selector-trait .group-count-badge.inactive:hover,.entity-selector-trait .group-count-badge.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .group-count-badge.popover-open,.entity-selector-trait .group-count-badge.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .group-count-badge i,.entity-selector-trait .group-count-badge i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .group-count-badge:hover i,.entity-selector-trait .group-count-badge:hover i{opacity:1}.target-conditions-trait .group-count-badge .preview-count,.entity-selector-trait .group-count-badge .preview-count{font-weight:700}.target-conditions-trait .btn-remove-group,.entity-selector-trait .btn-remove-group{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-group:focus,.entity-selector-trait .btn-remove-group:focus{outline:none}.target-conditions-trait .btn-remove-group,.entity-selector-trait .btn-remove-group{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-group:hover,.entity-selector-trait .btn-remove-group:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .group-include,.entity-selector-trait .group-include{margin-bottom:1rem}.target-conditions-trait .section-row,.entity-selector-trait .section-row{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .method-selector-wrapper,.entity-selector-trait .method-selector-wrapper{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .method-info-placeholder,.entity-selector-trait .method-info-placeholder{display:flex;align-items:center;min-width:20px}.target-conditions-trait .include-method-select,.target-conditions-trait .exclude-method-select,.entity-selector-trait .include-method-select,.entity-selector-trait .exclude-method-select{flex:1;width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .include-method-select:focus,.target-conditions-trait .exclude-method-select:focus,.entity-selector-trait .include-method-select:focus,.entity-selector-trait .exclude-method-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .include-method-select::placeholder,.target-conditions-trait .exclude-method-select::placeholder,.entity-selector-trait .include-method-select::placeholder,.entity-selector-trait .exclude-method-select::placeholder{color:#adb5bd}.target-conditions-trait .include-method-select,.target-conditions-trait .exclude-method-select,.entity-selector-trait .include-method-select,.entity-selector-trait .exclude-method-select{cursor:pointer}.target-conditions-trait .group-excludes,.entity-selector-trait .group-excludes{margin-top:1rem}.target-conditions-trait .group-excludes.has-excludes,.entity-selector-trait .group-excludes.has-excludes{padding-top:1rem;border-top:1px dashed #dee2e6}.target-conditions-trait .except-separator,.entity-selector-trait .except-separator{display:flex;align-items:center;margin-bottom:.5rem}.target-conditions-trait .except-label,.entity-selector-trait .except-label{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#f8d7da;color:#dc3545;font-size:.75rem;font-weight:600;border-radius:.2rem}.target-conditions-trait .except-label i,.entity-selector-trait .except-label i{font-size:10px}.target-conditions-trait .exclude-rows-container,.entity-selector-trait .exclude-rows-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .exclude-row,.entity-selector-trait .exclude-row{padding:.5rem;background:rgba(220,53,69,.03);border:1px solid rgba(220,53,69,.15);border-radius:.25rem}.target-conditions-trait .exclude-header-row,.entity-selector-trait .exclude-header-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.target-conditions-trait .btn-remove-exclude-row,.entity-selector-trait .btn-remove-exclude-row{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-exclude-row:focus,.entity-selector-trait .btn-remove-exclude-row:focus{outline:none}.target-conditions-trait .btn-remove-exclude-row,.entity-selector-trait .btn-remove-exclude-row{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-exclude-row:hover,.entity-selector-trait .btn-remove-exclude-row:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .btn-add-exclude,.target-conditions-trait .btn-add-another-exclude,.entity-selector-trait .btn-add-exclude,.entity-selector-trait .btn-add-another-exclude{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-exclude:focus,.target-conditions-trait .btn-add-another-exclude:focus,.entity-selector-trait .btn-add-exclude:focus,.entity-selector-trait .btn-add-another-exclude:focus{outline:none}.target-conditions-trait .btn-add-exclude,.target-conditions-trait .btn-add-another-exclude,.entity-selector-trait .btn-add-exclude,.entity-selector-trait .btn-add-another-exclude{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.375rem .625rem;color:#dc3545;font-size:.75rem;font-weight:500;background:rgba(0,0,0,0);border:1px dashed rgba(220,53,69,.5);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-exclude:hover,.target-conditions-trait .btn-add-another-exclude:hover,.entity-selector-trait .btn-add-exclude:hover,.entity-selector-trait .btn-add-another-exclude:hover{background:#f8d7da;border-color:#dc3545}.target-conditions-trait .btn-add-exclude i,.target-conditions-trait .btn-add-another-exclude i,.entity-selector-trait .btn-add-exclude i,.entity-selector-trait .btn-add-another-exclude i{font-size:10px}.target-conditions-trait .group-modifiers,.entity-selector-trait .group-modifiers{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;padding:.5rem 1rem;margin:1rem -1rem -1rem;background:#f8fafc;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}.target-conditions-trait .modifier-inline,.entity-selector-trait .modifier-inline{display:flex;align-items:center;gap:.375rem}.target-conditions-trait .group-modifier-limit,.entity-selector-trait .group-modifier-limit{width:60px;padding:.25rem .5rem;font-size:.75rem;text-align:center;border:1px solid #dee2e6;border-radius:.2rem}.target-conditions-trait .group-modifier-limit:focus,.entity-selector-trait .group-modifier-limit:focus{border-color:#25b9d7;outline:none}.target-conditions-trait .group-modifier-sort,.entity-selector-trait .group-modifier-sort{padding:.25rem .5rem;font-size:.75rem;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer}.target-conditions-trait .group-modifier-sort:focus,.entity-selector-trait .group-modifier-sort:focus{border-color:#25b9d7;outline:none}.target-conditions-trait .btn-sort-dir,.entity-selector-trait .btn-sort-dir{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-sort-dir:focus,.entity-selector-trait .btn-sort-dir:focus{outline:none}.target-conditions-trait .btn-sort-dir,.entity-selector-trait .btn-sort-dir{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border:1px solid #dee2e6;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-sort-dir:hover,.entity-selector-trait .btn-sort-dir:hover{background:#f1f5f9;color:#495057}.target-conditions-trait .group-preview-badge,.entity-selector-trait .group-preview-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#f1f5f9;color:#6c757d;font-size:.75rem;font-weight:500;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .group-preview-badge.clickable,.entity-selector-trait .group-preview-badge.clickable{cursor:pointer}.target-conditions-trait .group-preview-badge.clickable:hover,.entity-selector-trait .group-preview-badge.clickable:hover{background:rgba(37,185,215,.1);color:#25b9d7}.target-conditions-trait .group-separator,.entity-selector-trait .group-separator{display:flex;align-items:center;justify-content:center;padding:.5rem 0;color:#6c757d;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em}.target-conditions-trait .group-separator::before,.target-conditions-trait .group-separator::after,.entity-selector-trait .group-separator::before,.entity-selector-trait .group-separator::after{content:"";flex:1;height:1px;background:#dee2e6;margin:0 1rem}.target-conditions-trait .group-modifiers,.entity-selector-trait .group-modifiers{display:flex;flex-wrap:wrap;gap:1rem;padding-top:1rem;margin-top:1rem;border-top:1px solid #dee2e6}.target-conditions-trait .modifier-group,.entity-selector-trait .modifier-group{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .modifier-label,.entity-selector-trait .modifier-label{font-size:.75rem;font-weight:500;color:#6c757d;white-space:nowrap}.target-conditions-trait .modifier-input,.entity-selector-trait .modifier-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .modifier-input:focus,.entity-selector-trait .modifier-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .modifier-input::placeholder,.entity-selector-trait .modifier-input::placeholder{color:#adb5bd}.target-conditions-trait .modifier-input,.entity-selector-trait .modifier-input{width:80px;padding:.25rem .5rem;font-size:.75rem}.target-conditions-trait .modifier-select,.entity-selector-trait .modifier-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .modifier-select:focus,.entity-selector-trait .modifier-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .modifier-select::placeholder,.entity-selector-trait .modifier-select::placeholder{color:#adb5bd}.target-conditions-trait .modifier-select,.entity-selector-trait .modifier-select{width:auto;padding:.25rem 1.5rem .25rem .5rem;font-size:.75rem;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .25rem center;background-repeat:no-repeat;background-size:1.25em 1.25em}.target-conditions-trait .condition-match-count,.entity-selector-trait .condition-match-count{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .375rem;background:#f1f5f9;color:#6c757d;font-size:.75rem;font-weight:500;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .condition-match-count:hover,.entity-selector-trait .condition-match-count:hover{background:#e2e8f0}.target-conditions-trait .condition-match-count.has-results,.entity-selector-trait .condition-match-count.has-results{background:rgba(37,185,215,.1);color:#25b9d7}.target-conditions-trait .condition-match-count i,.entity-selector-trait .condition-match-count i{font-size:10px}.target-conditions-trait .value-picker,.entity-selector-trait .value-picker{padding:.5rem 0}.target-conditions-trait .value-picker[style*="display: none"],.target-conditions-trait .value-picker[style*="display:none"],.entity-selector-trait .value-picker[style*="display: none"],.entity-selector-trait .value-picker[style*="display:none"]{padding:0}.target-conditions-trait .entity-search-box,.entity-selector-trait .entity-search-box{position:relative;display:flex;align-items:center;gap:.5rem;padding:.25rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .entity-search-box:focus-within,.entity-selector-trait .entity-search-box:focus-within{border-color:#25b9d7;box-shadow:0 0 0 2px rgba(37,185,215,.1)}.target-conditions-trait .entity-search-icon,.entity-selector-trait .entity-search-icon{color:#6c757d;font-size:14px;flex-shrink:0}.target-conditions-trait input.entity-search-input,.target-conditions-trait input.entity-search-input[type=text],.entity-selector-trait input.entity-search-input,.entity-selector-trait input.entity-search-input[type=text]{padding:0;margin:0;background:none;border:none;font:inherit;color:inherit}.target-conditions-trait input.entity-search-input:focus,.target-conditions-trait input.entity-search-input[type=text]:focus,.entity-selector-trait input.entity-search-input:focus,.entity-selector-trait input.entity-search-input[type=text]:focus{outline:none}.target-conditions-trait input.entity-search-input,.target-conditions-trait input.entity-search-input[type=text],.entity-selector-trait input.entity-search-input,.entity-selector-trait input.entity-search-input[type=text]{flex:1;min-width:0;width:auto !important;max-width:none !important;padding:.375rem;font-size:.875rem;color:#212529;border:none !important;background:rgba(0,0,0,0) !important;box-shadow:none !important}.target-conditions-trait input.entity-search-input::placeholder,.target-conditions-trait input.entity-search-input[type=text]::placeholder,.entity-selector-trait input.entity-search-input::placeholder,.entity-selector-trait input.entity-search-input[type=text]::placeholder{color:#6c757d}.target-conditions-trait input.entity-search-input:focus,.target-conditions-trait input.entity-search-input[type=text]:focus,.entity-selector-trait input.entity-search-input:focus,.entity-selector-trait input.entity-search-input[type=text]:focus{border:none !important;box-shadow:none !important;outline:none}.target-conditions-trait .search-loading,.entity-selector-trait .search-loading{display:flex;align-items:center;justify-content:center;color:#25b9d7}.target-conditions-trait .search-loading i,.entity-selector-trait .search-loading i{animation:spin .6s linear infinite}.target-conditions-trait .numeric-range-box,.target-conditions-trait .multi-range-input-row,.entity-selector-trait .numeric-range-box,.entity-selector-trait .multi-range-input-row{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .range-min-input,.target-conditions-trait .range-max-input,.entity-selector-trait .range-min-input,.entity-selector-trait .range-max-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .range-min-input:focus,.target-conditions-trait .range-max-input:focus,.entity-selector-trait .range-min-input:focus,.entity-selector-trait .range-max-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .range-min-input::placeholder,.target-conditions-trait .range-max-input::placeholder,.entity-selector-trait .range-min-input::placeholder,.entity-selector-trait .range-max-input::placeholder{color:#adb5bd}.target-conditions-trait .range-min-input,.target-conditions-trait .range-max-input,.entity-selector-trait .range-min-input,.entity-selector-trait .range-max-input{width:100px;padding:.5rem;text-align:center;font-size:.875rem}.target-conditions-trait .range-min-input::-webkit-inner-spin-button,.target-conditions-trait .range-min-input::-webkit-outer-spin-button,.target-conditions-trait .range-max-input::-webkit-inner-spin-button,.target-conditions-trait .range-max-input::-webkit-outer-spin-button,.entity-selector-trait .range-min-input::-webkit-inner-spin-button,.entity-selector-trait .range-min-input::-webkit-outer-spin-button,.entity-selector-trait .range-max-input::-webkit-inner-spin-button,.entity-selector-trait .range-max-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.target-conditions-trait .range-min-input,.target-conditions-trait .range-max-input,.entity-selector-trait .range-min-input,.entity-selector-trait .range-max-input{-moz-appearance:textfield}.target-conditions-trait .range-separator,.entity-selector-trait .range-separator{color:#6c757d;font-size:.875rem;font-weight:500}.target-conditions-trait .btn-add-range,.entity-selector-trait .btn-add-range{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-range:focus,.entity-selector-trait .btn-add-range:focus{outline:none}.target-conditions-trait .btn-add-range,.entity-selector-trait .btn-add-range{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#fff;background:#25b9d7;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-range:hover,.entity-selector-trait .btn-add-range:hover{background:#1a9ab7}.target-conditions-trait .btn-add-range i,.entity-selector-trait .btn-add-range i{font-size:12px}.target-conditions-trait .multi-range-container,.entity-selector-trait .multi-range-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .date-range-box,.entity-selector-trait .date-range-box{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .date-from-input,.target-conditions-trait .date-to-input,.entity-selector-trait .date-from-input,.entity-selector-trait .date-to-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .date-from-input:focus,.target-conditions-trait .date-to-input:focus,.entity-selector-trait .date-from-input:focus,.entity-selector-trait .date-to-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .date-from-input::placeholder,.target-conditions-trait .date-to-input::placeholder,.entity-selector-trait .date-from-input::placeholder,.entity-selector-trait .date-to-input::placeholder{color:#adb5bd}.target-conditions-trait .date-from-input,.target-conditions-trait .date-to-input,.entity-selector-trait .date-from-input,.entity-selector-trait .date-to-input{width:140px;padding:.5rem;font-size:.875rem}.target-conditions-trait .multi-select-tiles,.entity-selector-trait .multi-select-tiles{display:flex;flex-wrap:wrap;gap:.25rem}.target-conditions-trait .tile-option,.entity-selector-trait .tile-option{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .tile-option:focus,.entity-selector-trait .tile-option:focus{outline:none}.target-conditions-trait .tile-option,.entity-selector-trait .tile-option{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;color:#495057;background:#f1f5f9;border:1px solid rgba(0,0,0,0);border-radius:.2rem;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .tile-option:hover,.entity-selector-trait .tile-option:hover{background:#e2e8f0}.target-conditions-trait .tile-option.selected,.entity-selector-trait .tile-option.selected{color:#25b9d7;background:rgba(37,185,215,.1);border-color:#25b9d7}.target-conditions-trait .tile-option i,.entity-selector-trait .tile-option i{font-size:12px}.target-conditions-trait .tile-label,.entity-selector-trait .tile-label{white-space:nowrap}.target-conditions-trait .select-input-box,.entity-selector-trait .select-input-box{display:inline-block}.target-conditions-trait .select-value-input,.entity-selector-trait .select-value-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .select-value-input:focus,.entity-selector-trait .select-value-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .select-value-input::placeholder,.entity-selector-trait .select-value-input::placeholder{color:#adb5bd}.target-conditions-trait .select-value-input,.entity-selector-trait .select-value-input{padding:.5rem 1rem;font-size:.875rem;min-width:150px}.target-conditions-trait .boolean-input-box,.entity-selector-trait .boolean-input-box{display:inline-flex;align-items:center;padding:.5rem 1rem;background:#d4edda;color:#1e7e34;border-radius:.25rem;font-size:.875rem;font-weight:500}.target-conditions-trait .boolean-label,.entity-selector-trait .boolean-label{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .boolean-label::before,.entity-selector-trait .boolean-label::before{content:"✓";font-weight:bold}.target-conditions-trait .condition-match-count,.entity-selector-trait .condition-match-count{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .condition-match-count:hover,.entity-selector-trait .condition-match-count:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .condition-match-count.loading,.entity-selector-trait .condition-match-count.loading{cursor:wait}.target-conditions-trait .condition-match-count.loading i,.entity-selector-trait .condition-match-count.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .condition-match-count.loading:hover,.entity-selector-trait .condition-match-count.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .condition-match-count.inactive,.target-conditions-trait .condition-match-count.no-matches,.entity-selector-trait .condition-match-count.inactive,.entity-selector-trait .condition-match-count.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .condition-match-count.inactive:hover,.target-conditions-trait .condition-match-count.no-matches:hover,.entity-selector-trait .condition-match-count.inactive:hover,.entity-selector-trait .condition-match-count.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .condition-match-count.popover-open,.entity-selector-trait .condition-match-count.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .condition-match-count i,.entity-selector-trait .condition-match-count i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .condition-match-count:hover i,.entity-selector-trait .condition-match-count:hover i{opacity:1}.target-conditions-trait .condition-match-count .preview-count,.entity-selector-trait .condition-match-count .preview-count{font-weight:700}.target-conditions-trait .condition-match-count,.entity-selector-trait .condition-match-count{margin-left:.5rem}.mpr-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:1050;opacity:0;transition:opacity .2s ease-in-out}.mpr-modal-backdrop.show{opacity:1}.mpr-modal{position:fixed;top:50%;left:50%;transform:translate(-50%, -50%) scale(0.95);z-index:1051;width:90%;max-width:600px;max-height:90vh;background:#fff;border-radius:.5rem;box-shadow:0 1.5rem 4rem rgba(0,0,0,.2);opacity:0;transition:all .2s ease-in-out;overflow:hidden;display:flex;flex-direction:column}.mpr-modal.show{opacity:1;transform:translate(-50%, -50%) scale(1)}.mpr-modal.modal-sm{max-width:400px}.mpr-modal.modal-lg{max-width:800px}.mpr-modal.modal-xl{max-width:1000px}.mpr-modal.modal-fullscreen{width:95%;max-width:none;height:90vh;max-height:none}.mpr-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;flex-shrink:0}.mpr-modal-title{font-size:1rem;font-weight:600;color:#212529;margin:0}.mpr-modal-close{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.mpr-modal-close:focus{outline:none}.mpr-modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#6c757d;border-radius:.25rem;transition:all .15s ease-in-out}.mpr-modal-close:hover{background:#e2e8f0;color:#495057}.mpr-modal-close i{font-size:1.125rem}.mpr-modal-body{flex:1;overflow-y:auto;padding:1.5rem}.mpr-modal-body::-webkit-scrollbar{width:6px;height:6px}.mpr-modal-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.mpr-modal-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.mpr-modal-body::-webkit-scrollbar-thumb:hover{background:#ced4da}.mpr-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem;background:#f8f9fa;border-top:1px solid #dee2e6;flex-shrink:0}.mpr-modal-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.mpr-modal-btn:focus{outline:none}.mpr-modal-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.25rem;transition:all .15s ease-in-out}.mpr-modal-btn.btn-secondary{color:#495057;background:#f1f5f9}.mpr-modal-btn.btn-secondary:hover{background:#e2e8f0}.mpr-modal-btn.btn-primary{color:#fff;background:#25b9d7}.mpr-modal-btn.btn-primary:hover{background:#1a9ab7}.mpr-modal-btn.btn-danger{color:#fff;background:#dc3545}.mpr-modal-btn.btn-danger:hover{background:rgb(189.2151898734,32.7848101266,47.7721518987)}.mpr-modal-btn:disabled{opacity:.5;cursor:not-allowed}.popover-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0}.popover-title{font-size:.875rem;font-weight:600;color:#212529}.popover-close{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.popover-close:focus{outline:none}.popover-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.popover-close:hover{background:#e2e8f0;color:#495057}.popover-body{max-height:300px;overflow-y:auto;padding:.5rem}.popover-body::-webkit-scrollbar{width:6px;height:6px}.popover-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.popover-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.popover-body::-webkit-scrollbar-thumb:hover{background:#ced4da}.popover-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}.popover-info{font-size:.75rem;color:#6c757d}.popover-load-more{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.popover-load-more:focus{outline:none}.popover-load-more{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.popover-load-more:hover{background:rgba(37,185,215,.1)}.popover-arrow{position:absolute;width:12px;height:12px;background:#fff;border:1px solid #dee2e6;transform:rotate(45deg)}.popover-arrow.arrow-top{top:-7px;left:50%;margin-left:-6px;border-right:none;border-bottom:none}.popover-arrow.arrow-bottom{bottom:-7px;left:50%;margin-left:-6px;border-left:none;border-top:none}.target-preview-popover{position:absolute;z-index:10000;min-width:280px;max-width:400px;background:#fff;border:1px solid #dee2e6;border-radius:.3rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);overflow:hidden}.target-preview-popover::before{content:"";position:absolute;top:-8px;left:50%;transform:translateX(-50%);border-left:8px solid rgba(0,0,0,0);border-right:8px solid rgba(0,0,0,0);border-bottom:8px solid #dee2e6}.target-preview-popover::after{content:"";position:absolute;top:-6px;left:50%;transform:translateX(-50%);border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #fff}.target-preview-popover .preview-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6}.target-preview-popover .preview-header .preview-count{font-size:.875rem;font-weight:600;color:#212529}.target-preview-popover .preview-header .preview-close{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-preview-popover .preview-header .preview-close:focus{outline:none}.target-preview-popover .preview-header .preview-close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-preview-popover .preview-header .preview-close:hover{background:#e2e8f0;color:#212529}.target-preview-popover .preview-list{max-height:300px;overflow-y:auto}.target-preview-popover .preview-list::-webkit-scrollbar{width:6px;height:6px}.target-preview-popover .preview-list::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-preview-popover .preview-list::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-preview-popover .preview-list::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-preview-popover .preview-list{padding:.5rem;display:flex;flex-direction:column;gap:.25rem}.target-preview-popover .preview-footer{padding:.5rem 1rem;background:#f8fafc;border-top:1px solid #dee2e6;text-align:center}.target-preview-popover .preview-footer .preview-more-info{font-size:.75rem;color:#6c757d;font-weight:500}.entity-list-preview{display:flex;flex-direction:column;gap:.25rem}.preview-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:all .15s ease-in-out}.preview-item:hover{background:#e9ecef;border-color:#cbd5e1}.preview-item-image{flex-shrink:0;width:36px;height:36px;object-fit:cover;border-radius:.2rem;background:#f1f5f9}.preview-item-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;background:#f1f5f9;color:#6c757d;border-radius:.2rem;font-size:1rem}.preview-item-info{flex:1;min-width:0}.preview-item-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-item-meta{font-size:.75rem;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-item-badge{display:inline-flex;align-items:center;justify-content:center;padding:.125rem .5rem;font-size:.75rem;font-weight:500;line-height:1;background-color:#f1f5f9;color:#6c757d;border-radius:50rem;flex-shrink:0}.preview-item-price{font-size:.875rem;font-weight:600;color:#25b9d7;flex-shrink:0}.entity-list-preview.grid-layout{display:grid;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));gap:.5rem}.entity-list-preview.grid-layout .preview-item{flex-direction:column;text-align:center;padding:1rem}.entity-list-preview.grid-layout .preview-item-image{width:60px;height:60px}.entity-list-preview.grid-layout .preview-item-info{width:100%}.entity-list-preview.compact{gap:0}.entity-list-preview.compact .preview-item{border-radius:0;border-bottom:none}.entity-list-preview.compact .preview-item:first-child{border-radius:.25rem .25rem 0 0}.entity-list-preview.compact .preview-item:last-child{border-radius:0 0 .25rem .25rem;border-bottom:1px solid #dee2e6}.preview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;text-align:center;color:#6c757d}.preview-empty i{font-size:2rem;opacity:.5}.preview-empty p{margin:0;font-size:.875rem}.preview-loading{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6c757d}.preview-loading .spinner{width:24px;height:24px;border:3px solid #e2e8f0;border-top-color:#25b9d7;border-radius:50%;animation:spin .8s linear infinite}.preview-pagination{display:flex;align-items:center;justify-content:center;gap:.25rem;padding:1rem 0}.preview-page-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.preview-page-btn:focus{outline:none}.preview-page-btn{display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 .5rem;font-size:.75rem;font-weight:500;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;transition:all .15s ease-in-out}.preview-page-btn:hover:not(:disabled){background:#e9ecef;border-color:#cbd5e1}.preview-page-btn.active{background:#25b9d7;border-color:#25b9d7;color:#fff}.preview-page-btn:disabled{opacity:.5;cursor:not-allowed}.preview-summary{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;font-size:.75rem;color:#6c757d}.preview-count{font-weight:500}.preview-count strong{color:#212529}.preview-filters{display:flex;flex-wrap:wrap;gap:.5rem;padding:.5rem 1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}.preview-filter-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:#e9ecef;color:#495057;border-radius:50rem}.preview-filter-chip .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.preview-filter-chip .chip-remove:focus{outline:none}.preview-filter-chip .chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;color:#6c757d;border-radius:50%}.preview-filter-chip .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}.preview-search{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.preview-search:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.preview-search::placeholder{color:#adb5bd}.preview-search{flex:1;min-width:150px;padding:.375rem .5rem;font-size:.75rem}.preview-list-scrollable{max-height:400px;overflow-y:auto}.preview-list-scrollable::-webkit-scrollbar{width:6px;height:6px}.preview-list-scrollable::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.preview-list-scrollable::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.preview-list-scrollable::-webkit-scrollbar-thumb:hover{background:#ced4da}.entity-mini-preview{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:#f8fafc;border-radius:.2rem;font-size:.75rem}.entity-mini-preview img{width:16px;height:16px;object-fit:cover;border-radius:2px}.entity-mini-preview .mini-preview-name{color:#212529;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.schedule-conditions-trait{background:#fff;border:1px solid #dee2e6;border-radius:.3rem}.schedule-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.schedule-header:hover{background:#e9ecef}.schedule-title{display:flex;align-items:center;gap:.75rem;font-size:.875rem;font-weight:600;color:#212529}.schedule-title i{color:#6c757d}.schedule-body{padding:1rem}.schedule-section{margin-bottom:1.5rem}.schedule-section:last-child{margin-bottom:0}.schedule-section-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.875rem;font-weight:600;color:#212529}.schedule-section-title i{color:#6c757d}.schedule-section-description{margin-bottom:1rem;font-size:.75rem;color:#6c757d}.datetime-range{display:flex;flex-wrap:wrap;gap:1rem}.datetime-field{flex:1;min-width:200px}.datetime-label{display:block;margin-bottom:.25rem;font-size:.75rem;font-weight:500;color:#495057}.datetime-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.datetime-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.datetime-input::placeholder{color:#adb5bd}.weekly-schedule{display:flex;flex-direction:column;gap:.5rem}.day-row{display:flex;align-items:center;gap:1rem;padding:.5rem;background:#f8fafc;border-radius:.25rem}.day-row.disabled{opacity:.5}.day-toggle{display:flex;align-items:center;gap:.5rem;min-width:100px}.day-checkbox{width:18px;height:18px;cursor:pointer}.day-name{font-size:.875rem;font-weight:500;color:#212529}.timeline-slider{flex:1;position:relative;height:24px;background:#e2e8f0;border-radius:50rem;cursor:pointer}.timeline-fill{position:absolute;top:0;height:100%;background:#25b9d7;border-radius:50rem;transition:all .15s ease-in-out}.timeline-handle{position:absolute;top:50%;width:16px;height:16px;background:#fff;border:2px solid #25b9d7;border-radius:50%;transform:translate(-50%, -50%);cursor:grab;box-shadow:0 .125rem .25rem rgba(0,0,0,.075);transition:box-shadow .15s ease-in-out}.timeline-handle:hover{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.timeline-handle:active{cursor:grabbing}.timeline-handle.handle-start{z-index:2}.timeline-handle.handle-end{z-index:1}.day-times{display:flex;align-items:center;gap:.25rem;min-width:120px;font-size:.75rem;font-family:monospace;color:#495057}.time-separator{color:#6c757d}.holiday-section{padding:1rem;background:#f8fafc;border-radius:.25rem}.holiday-toggle{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.holiday-checkbox{width:18px;height:18px;cursor:pointer}.holiday-label{font-size:.875rem;font-weight:500;color:#212529}.holiday-countries{display:flex;flex-wrap:wrap;gap:.25rem}.holiday-country-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:#e9ecef;color:#495057;border-radius:50rem}.holiday-country-chip .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.holiday-country-chip .chip-remove:focus{outline:none}.holiday-country-chip .chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;color:#6c757d;border-radius:50%}.holiday-country-chip .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}.holiday-country-chip{cursor:pointer}.holiday-country-chip.selected{background:rgba(37,185,215,.1);color:#25b9d7}.server-time{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#d1ecf1;border-radius:.25rem;font-size:.75rem;color:#17a2b8}.server-time i{font-size:.875rem}.server-time .time-value{font-family:monospace;font-weight:600}.schedule-summary{display:flex;flex-direction:column;gap:.25rem;padding:1rem;background:#f8fafc;border-radius:.25rem;font-size:.875rem;color:#495057}.schedule-summary .summary-item{display:flex;align-items:center;gap:.5rem}.schedule-summary .summary-item i{color:#28a745;font-size:.875rem}.schedule-summary .summary-item.inactive i{color:#6c757d}.schedule-conditions-trait.collapsed .schedule-body{display:none}.schedule-conditions-trait.collapsed .schedule-header{border-radius:.3rem}.target-conditions-trait .target-tips-box,.entity-selector-trait .target-tips-box{margin:1.5rem 1rem 1rem;border:1px solid #dee2e6;border-radius:.3rem;overflow:hidden;background:linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%)}.target-conditions-trait .tips-header,.entity-selector-trait .tips-header{display:flex;align-items:center;gap:.625rem;padding:1rem 1.5rem;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.target-conditions-trait .tips-header:hover,.entity-selector-trait .tips-header:hover{background:rgba(0,0,0,.02)}.target-conditions-trait .tips-header>i:first-child,.entity-selector-trait .tips-header>i:first-child{font-size:1rem;color:#ffc107}.target-conditions-trait .tips-header>span,.entity-selector-trait .tips-header>span{flex:1;font-size:13px;font-weight:600;color:#475569}.target-conditions-trait .tips-toggle,.entity-selector-trait .tips-toggle{font-size:.75rem;color:#94a3b8;transition:transform .2s}.target-conditions-trait .target-tips-box.expanded .tips-toggle,.entity-selector-trait .target-tips-box.expanded .tips-toggle{transform:rotate(180deg)}.target-conditions-trait .target-tips-box.expanded .tips-content,.entity-selector-trait .target-tips-box.expanded .tips-content{display:block}.target-conditions-trait .tips-content,.entity-selector-trait .tips-content{display:none;padding:0 1.5rem 1.5rem}.target-conditions-trait .tips-grid,.entity-selector-trait .tips-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr))}.target-conditions-trait .tip-item,.entity-selector-trait .tip-item{display:flex;gap:1rem;padding:1rem;background:#fff;border-radius:.25rem;border:1px solid #dee2e6}.target-conditions-trait .tip-icon,.entity-selector-trait .tip-icon{flex-shrink:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:rgba(37,185,215,.1);border-radius:.25rem;color:#25b9d7;font-size:.875rem}.target-conditions-trait .tip-text,.entity-selector-trait .tip-text{flex:1;min-width:0}.target-conditions-trait .tip-text strong,.entity-selector-trait .tip-text strong{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:.25rem}.target-conditions-trait .tip-text p,.entity-selector-trait .tip-text p{font-size:11px;color:#6c757d;line-height:1.625;margin:0}.target-conditions-trait .tips-footer,.entity-selector-trait .tips-footer{margin-top:1rem;padding:.625rem 1rem;background:#fff;border-radius:.25rem;border:1px dashed #dee2e6;font-size:11px;color:#6c757d;line-height:1.625}.target-conditions-trait .tips-footer i,.entity-selector-trait .tips-footer i{color:#25b9d7;margin-right:.25rem}.condition-trait{background:#fff;border:1px solid #dee2e6;border-radius:.3rem;margin-bottom:1.5rem}.condition-trait:last-child{margin-bottom:0}.condition-trait.collapsed .condition-trait-header{border-bottom-color:rgba(0,0,0,0);border-radius:.3rem}.condition-trait.collapsed .collapse-icon{transform:rotate(180deg)}.condition-trait-header{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;padding:.875rem 1.5rem;background:#f8fafc;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer;transition:background-color .15s ease-in-out}.condition-trait-header:hover{background:#f1f5f9}.trait-header-left{display:flex;align-items:center;gap:1rem;min-width:0;flex:1}.trait-icon{font-size:1.125rem;color:#6c757d;flex-shrink:0}.trait-title-group{display:flex;flex-direction:column;gap:.125rem;min-width:0}.trait-title{font-size:.875rem;font-weight:600;color:#1e293b;white-space:nowrap}.trait-subtitle{font-size:.75rem;color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trait-header-right{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.trait-header-actions{display:flex;align-items:center;gap:.5rem}.collapse-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;font-size:.875rem;color:#6c757d;cursor:pointer;transition:all .2s;border-radius:.2rem;background:rgba(0,0,0,0)}.collapse-icon:hover{color:#25b9d7;background:rgba(37,185,215,.08)}.trait-show-all-toggle{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:#25b9d7;cursor:pointer}.trait-show-all-toggle:hover{text-decoration:underline}.trait-total-count{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.trait-total-count:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.trait-total-count.loading{cursor:wait}.trait-total-count.loading i{font-size:10px;animation:spin .6s linear infinite}.trait-total-count.loading:hover{transform:none;box-shadow:none}.trait-total-count.inactive,.trait-total-count.no-matches{background:#94a3b8;cursor:default}.trait-total-count.inactive:hover,.trait-total-count.no-matches:hover{transform:none;box-shadow:none}.trait-total-count.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.trait-total-count i{font-size:10px;line-height:1;opacity:.8}.trait-total-count:hover i{opacity:1}.trait-total-count .preview-count{font-weight:700}.trait-required{color:#dc3545;font-size:.75rem}.trait-validation-error{color:#dc3545;font-size:.75rem;margin-top:.25rem}.trait-toggle{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.trait-toggle:focus{outline:none}.trait-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:all .15s ease-in-out}.trait-toggle:hover{background:#f8fafc;border-color:#dee2e6}.trait-toggle.active{color:#25b9d7;border-color:#25b9d7;background:rgba(37,185,215,.1)}.condition-trait-body{padding:1.5rem;border-radius:0 0 .3rem .3rem;background:#fff;animation:slideDown .2s ease-out}.condition-trait.collapsed .condition-trait-body{display:none}.schedule-section,.context-section{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid #f1f5f9}.schedule-section:last-child,.context-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}.section-label{display:flex;align-items:center;gap:.5rem;font-size:13px;font-weight:600;color:#475569;margin-bottom:1rem}.section-label i{font-size:.875rem;color:#94a3b8;margin-right:.25rem}.section-hint{margin-top:.5rem;font-size:11px;color:#94a3b8}.form-group.condition-trait-fullwidth{display:block !important}.form-group.condition-trait-fullwidth>.control-label{display:none !important}.form-group.condition-trait-fullwidth>.col-lg-8,.form-group.condition-trait-fullwidth>.col-lg-8.col-lg-offset-3{width:100% !important;max-width:100% !important;flex:0 0 100% !important;padding-left:1.5rem !important;padding-right:1.5rem !important;margin:0 !important;margin-left:0 !important}.condition-traits-group-label{font-size:.875rem;font-weight:600;color:#334155;margin-bottom:1rem}.condition-traits-wrapper{display:flex;flex-direction:column;gap:1rem}@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.target-conditions-trait .combination-attributes-picker,.entity-selector-trait .combination-attributes-picker{display:flex;flex-direction:column;gap:.625rem}.target-conditions-trait .combination-mode-toggle,.entity-selector-trait .combination-mode-toggle{display:inline-flex;gap:.25rem;padding:.125rem;background:#f1f5f9;border-radius:.25rem;margin-bottom:.5rem}.target-conditions-trait .combination-mode-option,.entity-selector-trait .combination-mode-option{display:flex;align-items:center;gap:.25rem;cursor:pointer;font-size:11px;color:#6c757d;padding:.25rem .625rem;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .combination-mode-option input[type=radio],.entity-selector-trait .combination-mode-option input[type=radio]{display:none}.target-conditions-trait .combination-mode-option .mode-label,.entity-selector-trait .combination-mode-option .mode-label{user-select:none}.target-conditions-trait .combination-mode-option:hover,.entity-selector-trait .combination-mode-option:hover{color:#25b9d7;background:rgba(37,185,215,.1)}.target-conditions-trait .combination-mode-option:has(input[type=radio]:checked),.entity-selector-trait .combination-mode-option:has(input[type=radio]:checked){background:#25b9d7;color:#fff;font-weight:500}.target-conditions-trait .combination-groups-container,.entity-selector-trait .combination-groups-container{display:flex;flex-wrap:wrap;gap:1rem}.target-conditions-trait .combination-loading,.target-conditions-trait .combination-empty,.target-conditions-trait .combination-error,.entity-selector-trait .combination-loading,.entity-selector-trait .combination-empty,.entity-selector-trait .combination-error{color:#6c757d;font-style:italic;padding:.5rem}.target-conditions-trait .combination-error,.entity-selector-trait .combination-error{color:#dc3545}.target-conditions-trait .combinations-section,.entity-selector-trait .combinations-section{margin-bottom:1rem}.target-conditions-trait .combinations-header,.entity-selector-trait .combinations-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.target-conditions-trait .combinations-label,.entity-selector-trait .combinations-label{font-size:.75rem;font-weight:500;color:#6c757d}.target-conditions-trait .combinations-help,.entity-selector-trait .combinations-help{font-size:11px;color:#94a3b8}.target-conditions-trait .btn-toggle-combinations,.entity-selector-trait .btn-toggle-combinations{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-toggle-combinations:focus,.entity-selector-trait .btn-toggle-combinations:focus{outline:none}.target-conditions-trait .btn-toggle-combinations,.entity-selector-trait .btn-toggle-combinations{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#25b9d7;background:rgba(0,0,0,0);border:1px solid #25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-toggle-combinations:hover,.entity-selector-trait .btn-toggle-combinations:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-remove-combinations,.entity-selector-trait .btn-remove-combinations{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-combinations:focus,.entity-selector-trait .btn-remove-combinations:focus{outline:none}.target-conditions-trait .btn-remove-combinations,.entity-selector-trait .btn-remove-combinations{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#dc3545;background:rgba(0,0,0,0)}.target-conditions-trait .btn-remove-combinations:hover,.entity-selector-trait .btn-remove-combinations:hover{text-decoration:underline}.target-conditions-trait .comb-attr-group,.entity-selector-trait .comb-attr-group{flex:none;min-width:120px;max-width:200px;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;overflow:hidden}.target-conditions-trait .comb-attr-group.has-selections,.entity-selector-trait .comb-attr-group.has-selections{border-color:#25b9d7}.target-conditions-trait .comb-attr-group-header,.entity-selector-trait .comb-attr-group-header{display:flex;justify-content:space-between;align-items:center;padding:.375rem .625rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-weight:600;font-size:.75rem;color:#1e293b}.comb-attr-group.has-selections .target-conditions-trait .comb-attr-group-header,.comb-attr-group.has-selections .entity-selector-trait .comb-attr-group-header{background:#ecfeff;border-bottom-color:#a5f3fc}.target-conditions-trait .comb-attr-group-name,.entity-selector-trait .comb-attr-group-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-conditions-trait .comb-attr-group-count,.entity-selector-trait .comb-attr-group-count{flex-shrink:0;min-width:18px;height:18px;padding:0 .25rem;background:#dee2e6;border-radius:50rem;font-size:11px;font-weight:600;line-height:18px;text-align:center;color:#6c757d}.comb-attr-group.has-selections .target-conditions-trait .comb-attr-group-count,.comb-attr-group.has-selections .entity-selector-trait .comb-attr-group-count{background:#25b9d7;color:#fff}.target-conditions-trait .comb-attr-toolbar,.entity-selector-trait .comb-attr-toolbar{display:flex;align-items:center;gap:.25rem;padding:.25rem .375rem;background:#f8fafc;border-bottom:1px solid #f1f5f9}.target-conditions-trait .comb-toolbar-btn,.entity-selector-trait .comb-toolbar-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .comb-toolbar-btn:focus,.entity-selector-trait .comb-toolbar-btn:focus{outline:none}.target-conditions-trait .comb-toolbar-btn,.entity-selector-trait .comb-toolbar-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;color:#6c757d;cursor:pointer;font-size:.75rem;transition:all .15s ease-in-out}.target-conditions-trait .comb-toolbar-btn:hover,.entity-selector-trait .comb-toolbar-btn:hover{background:#f1f5f9;border-color:#94a3b8;color:#1e293b}.target-conditions-trait .comb-attr-search,.entity-selector-trait .comb-attr-search{flex:1;min-width:60px;padding:.125rem .375rem;border:1px solid #dee2e6;border-radius:.2rem;font-size:11px;outline:none}.target-conditions-trait .comb-attr-search:focus,.entity-selector-trait .comb-attr-search:focus{border-color:#25b9d7}.target-conditions-trait .comb-attr-search::placeholder,.entity-selector-trait .comb-attr-search::placeholder{color:#94a3b8}.target-conditions-trait .comb-attr-values,.entity-selector-trait .comb-attr-values{display:flex;flex-wrap:wrap;gap:.25rem;padding:.375rem;max-height:150px;overflow-y:auto}.target-conditions-trait .comb-attr-values::-webkit-scrollbar,.entity-selector-trait .comb-attr-values::-webkit-scrollbar{width:6px;height:6px}.target-conditions-trait .comb-attr-values::-webkit-scrollbar-track,.entity-selector-trait .comb-attr-values::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-conditions-trait .comb-attr-values::-webkit-scrollbar-thumb,.entity-selector-trait .comb-attr-values::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-conditions-trait .comb-attr-values::-webkit-scrollbar-thumb:hover,.entity-selector-trait .comb-attr-values::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-conditions-trait .comb-attr-loading,.target-conditions-trait .comb-attr-empty,.target-conditions-trait .comb-attr-error,.entity-selector-trait .comb-attr-loading,.entity-selector-trait .comb-attr-empty,.entity-selector-trait .comb-attr-error{width:100%;text-align:center;color:#94a3b8;font-size:11px;padding:.25rem}.target-conditions-trait .comb-attr-error,.entity-selector-trait .comb-attr-error{color:#dc3545}.target-conditions-trait .comb-attr-value,.entity-selector-trait .comb-attr-value{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .5rem;background:#fff;border:1px solid #94a3b8;border-radius:.75rem;font-size:11px;color:#475569;cursor:pointer;transition:all .15s ease-in-out;white-space:nowrap}.target-conditions-trait .comb-attr-value:hover,.entity-selector-trait .comb-attr-value:hover{background:#f1f5f9;border-color:#6c757d}.target-conditions-trait .comb-attr-value.selected,.entity-selector-trait .comb-attr-value.selected{background:#25b9d7;border-color:#1a9ab7;color:#fff}.target-conditions-trait .comb-attr-value.selected:hover,.entity-selector-trait .comb-attr-value.selected:hover{background:#1a9ab7;border-color:rgb(22.8277511962,135.2105263158,160.6722488038)}.target-conditions-trait .comb-attr-value-count,.entity-selector-trait .comb-attr-value-count{font-size:9px;color:#94a3b8;background:#f1f5f9;padding:1px .25rem;border-radius:.5rem;min-width:14px;text-align:center}.comb-attr-value.selected .target-conditions-trait .comb-attr-value-count,.comb-attr-value.selected .entity-selector-trait .comb-attr-value-count{color:#fff;background:hsla(0,0%,100%,.3)}.target-conditions-trait .combination-conditions-container,.entity-selector-trait .combination-conditions-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .combination-condition-row,.entity-selector-trait .combination-condition-row{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#f8fafc;border-radius:.2rem}.target-conditions-trait .combination-group-select,.target-conditions-trait .combination-values-select,.entity-selector-trait .combination-group-select,.entity-selector-trait .combination-values-select{flex:1;min-width:120px}.target-conditions-trait .combination-equals,.entity-selector-trait .combination-equals{font-size:.75rem;color:#6c757d;padding:0 .25rem}.target-conditions-trait .btn-add-combination-condition,.entity-selector-trait .btn-add-combination-condition{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-combination-condition:focus,.entity-selector-trait .btn-add-combination-condition:focus{outline:none}.target-conditions-trait .btn-add-combination-condition,.entity-selector-trait .btn-add-combination-condition{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:#25b9d7;background:rgba(0,0,0,0);border:1px dashed #25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-combination-condition:hover,.entity-selector-trait .btn-add-combination-condition:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-add-combination-condition i,.entity-selector-trait .btn-add-combination-condition i{font-size:10px}.target-conditions-trait .btn-remove-combination-row,.entity-selector-trait .btn-remove-combination-row{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-combination-row:focus,.entity-selector-trait .btn-remove-combination-row:focus{outline:none}.target-conditions-trait .btn-remove-combination-row,.entity-selector-trait .btn-remove-combination-row{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-combination-row:hover,.entity-selector-trait .btn-remove-combination-row:hover{background:rgba(220,53,69,.1);color:#dc3545}.target-conditions-trait .btn-remove-combination-row i,.entity-selector-trait .btn-remove-combination-row i{font-size:12px}.target-conditions-trait .method-dropdown-trigger,.entity-selector-trait .method-dropdown-trigger{display:inline-flex;align-items:center;gap:.5rem;height:36px;padding:0 1rem;border-radius:.25rem;background:#fff;color:#1e293b;font-size:.875rem;cursor:pointer;transition:all .15s ease-in-out;min-width:180px;max-width:320px;border:1px solid #dee2e6}.target-conditions-trait .method-dropdown-trigger:hover,.entity-selector-trait .method-dropdown-trigger:hover{background:#f8fafc;border-color:#dee2e6}.target-conditions-trait .method-dropdown-trigger:focus,.target-conditions-trait .method-dropdown-trigger:active,.entity-selector-trait .method-dropdown-trigger:focus,.entity-selector-trait .method-dropdown-trigger:active{outline:none;border-color:#25b9d7;box-shadow:0 0 0 3px rgba(37,185,215,.1)}.target-conditions-trait .method-trigger-icon,.entity-selector-trait .method-trigger-icon{font-size:.875rem;color:#6c757d;flex-shrink:0;width:18px;text-align:center}.target-conditions-trait .method-trigger-label,.entity-selector-trait .method-trigger-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.target-conditions-trait .method-trigger-caret,.entity-selector-trait .method-trigger-caret{font-size:.75rem;color:#94a3b8;flex-shrink:0;margin-left:auto}.target-conditions-trait .selector-locked .method-dropdown-trigger,.entity-selector-trait .selector-locked .method-dropdown-trigger{background:#f1f5f9;color:#94a3b8;cursor:not-allowed;border-color:#dee2e6}.target-conditions-trait .selector-locked .method-dropdown-trigger:hover,.entity-selector-trait .selector-locked .method-dropdown-trigger:hover{background:#f1f5f9;border-color:#dee2e6}.target-conditions-trait .method-selector-wrapper,.entity-selector-trait .method-selector-wrapper{position:relative}.target-conditions-trait .method-select-hidden,.entity-selector-trait .method-select-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.method-dropdown-menu{position:absolute;z-index:1001;min-width:200px;max-width:360px;max-height:400px;overflow-y:auto;background:#fff;border-radius:.3rem;padding:.375rem 0;border:1px solid #dee2e6;box-shadow:0 10px 40px rgba(0,0,0,.15);animation:methodDropdownFadeIn .15s ease}.method-dropdown-menu::-webkit-scrollbar{width:6px;height:6px}.method-dropdown-menu::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.method-dropdown-menu::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.method-dropdown-menu::-webkit-scrollbar-thumb:hover{background:#ced4da}@keyframes methodDropdownFadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.method-dropdown-item{display:flex;align-items:center;gap:.625rem;padding:.5rem 1rem;cursor:pointer;transition:background-color .1s;position:relative}.method-dropdown-item:hover{background:#f1f5f9}.method-dropdown-item.selected{background:rgba(37,185,215,.08)}.method-dropdown-item .method-item-icon{font-size:.875rem;color:#6c757d;width:18px;text-align:center;flex-shrink:0}.method-dropdown-item.selected .method-item-icon{color:#25b9d7}.method-dropdown-item .method-item-label{flex:1;font-size:.875rem;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.method-dropdown-item.selected .method-item-label{color:#0e7490;font-weight:500}.method-dropdown-item .method-item-check{font-size:.75rem;flex-shrink:0;margin-left:auto;color:#25b9d7}.method-dropdown-optgroup{margin-top:.25rem}.method-dropdown-optgroup:first-child{margin-top:0}.method-optgroup-label{padding:.5rem 1rem;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;background:#f8fafc;border-top:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9}.method-dropdown-optgroup:first-child .method-optgroup-label{border-top:0}.method-optgroup-items{padding:.25rem 0}.method-optgroup-items .method-dropdown-item{padding-left:1.5rem}.method-info-placeholder{font-size:.75rem;color:#6c757d;font-style:italic}.mpr-info-wrapper{display:inline-flex;align-items:center;position:relative;cursor:help;vertical-align:middle;margin-left:.5rem}.mpr-info-wrapper .mpr-tooltip{position:absolute;background:#fff;color:#1e293b;padding:1rem 1.5rem;border-radius:.25rem;font-size:13px;line-height:1.625;white-space:normal;z-index:1050;max-width:350px;min-width:200px;text-align:left;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);box-shadow:rgba(0,0,0,.12) 0px 1px 1px 0px,rgba(64,68,82,.16) 0px 0px 0px 1px,rgba(64,68,82,.08) 0px 2px 5px 0px}.mpr-info-wrapper .mpr-tooltip::before{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:9px solid rgba(0,0,0,0);border-top-color:rgba(64,68,82,.16)}.mpr-info-wrapper .mpr-tooltip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:8px solid rgba(0,0,0,0);border-top-color:#fff}.mpr-info-wrapper .mpr-tooltip strong{display:block;margin-bottom:.5rem;font-weight:600;color:#337ab7}.mpr-info-wrapper .mpr-tooltip p{margin:0;color:#495057}.mpr-tooltip-fixed{position:fixed;background:#fff;color:#1e293b;padding:1rem 1.5rem;border-radius:.25rem;font-size:13px;line-height:1.625;white-space:normal;z-index:10500;max-width:350px;min-width:200px;text-align:left;box-shadow:rgba(0,0,0,.12) 0px 1px 1px 0px,rgba(64,68,82,.16) 0px 0px 0px 1px,rgba(64,68,82,.08) 0px 2px 5px 0px}.mpr-tooltip-fixed strong{display:block;margin-bottom:.5rem;font-weight:600;color:#337ab7}.mpr-tooltip-fixed p{margin:0;color:#495057}.mpr-icon{display:inline-block;width:16px;height:16px;background-color:#475569;vertical-align:middle;cursor:pointer;transition:background-color .2s;mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}.mpr-icon:hover{background-color:#5bc0de}.mpr-icon.link{background-color:#5bc0de}.mpr-icon.link:hover{background-color:#337ab7}.mpr-icon.icon-info{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E")}.tooltip-list{margin:.5rem 0}.tooltip-list>div{margin:.25rem 0;padding-left:.5rem}.tooltip-example{font-family:monospace;font-size:12px;background:#f1f5f9;padding:.25rem .5rem;border-radius:.2rem;margin:.25rem 0}.tooltip-logic{font-size:11px;color:#6c757d;margin-top:.5rem;padding-top:.5rem;border-top:1px solid #dee2e6} +@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.target-conditions-trait,.target-conditions-trait *,.entity-selector-trait,.entity-selector-trait *,.method-dropdown-menu,.method-dropdown-menu *,.target-preview-popover,.target-preview-popover *{border-style:solid;border-width:0;border-color:#dee2e6}.form-group:has(.entity-selector-trait),.form-group:has(.target-conditions-trait),.form-group:has(.condition-trait){display:block}.form-group:has(.entity-selector-trait)>.control-label,.form-group:has(.target-conditions-trait)>.control-label,.form-group:has(.condition-trait)>.control-label{display:none}.form-group:has(.entity-selector-trait)>.col-lg-8,.form-group:has(.target-conditions-trait)>.col-lg-8,.form-group:has(.condition-trait)>.col-lg-8{width:100%;max-width:100%;padding-left:1rem;padding-right:1rem;flex:0 0 100% !important}.form-group.condition-trait-fullwidth{display:block}.form-group.condition-trait-fullwidth>.control-label{display:none}.form-group.condition-trait-fullwidth>.col-lg-8{width:100%;max-width:100%;padding-left:1rem;padding-right:1rem;flex:0 0 100% !important}.panel:has(.target-search-dropdown.show),.card:has(.target-search-dropdown.show),.form-wrapper:has(.target-search-dropdown.show),.panel-body:has(.target-search-dropdown.show),.card-body:has(.target-search-dropdown.show),.form-group:has(.target-search-dropdown.show),.col-lg-8:has(.target-search-dropdown.show),.col-lg-12:has(.target-search-dropdown.show){overflow:visible !important}.target-conditions-trait:has(.target-search-dropdown.show),.entity-selector-trait:has(.target-search-dropdown.show),.condition-trait-body:has(.target-search-dropdown.show),.target-block-content:has(.target-search-dropdown.show),.target-block-groups:has(.target-search-dropdown.show),.target-group:has(.target-search-dropdown.show),.target-group-body:has(.target-search-dropdown.show),.target-search-wrapper:has(.target-search-dropdown.show){overflow:visible !important}@media(max-width: 991px){.target-conditions-trait .condition-trait-header,.entity-selector-trait .condition-trait-header{flex-direction:column;align-items:flex-start;gap:.5rem}.target-conditions-trait .trait-header-right,.entity-selector-trait .trait-header-right{width:100%;justify-content:flex-end}.target-conditions-trait .target-block-tabs,.entity-selector-trait .target-block-tabs{flex-wrap:wrap}}@media(max-width: 767px){.target-conditions-trait .target-block-tab,.entity-selector-trait .target-block-tab{padding:.5rem;font-size:.75rem}.target-conditions-trait .target-group-header,.entity-selector-trait .target-group-header{flex-direction:column;align-items:flex-start}.target-conditions-trait .target-search-dropdown,.entity-selector-trait .target-search-dropdown{width:100% !important;left:0 !important;right:0 !important}.target-conditions-trait .dropdown-results-grid,.entity-selector-trait .dropdown-results-grid{grid-template-columns:1fr !important}}@media(min-width: 1600px){.target-conditions-trait .dropdown-results-grid.view-grid-3,.entity-selector-trait .dropdown-results-grid.view-grid-3{grid-template-columns:repeat(4, 1fr)}}.target-conditions-trait,.entity-selector-trait{position:relative;overflow:visible;background:#fff;border:1px solid #dee2e6;border-radius:.3rem}.target-conditions-trait .condition-trait-header,.entity-selector-trait .condition-trait-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;padding:.875rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.target-conditions-trait .condition-trait-header:hover,.entity-selector-trait .condition-trait-header:hover{background:#e9ecef}.target-conditions-trait .trait-header-left,.entity-selector-trait .trait-header-left{display:flex;align-items:center;gap:.75rem;min-width:0;flex:1}.target-conditions-trait .trait-icon,.entity-selector-trait .trait-icon{font-size:1.125rem;color:#6c757d;flex-shrink:0}.target-conditions-trait .trait-title-group,.entity-selector-trait .trait-title-group{display:flex;flex-direction:column;gap:.125rem;min-width:0}.target-conditions-trait .trait-title,.entity-selector-trait .trait-title{font-size:.875rem;font-weight:600;color:#212529;white-space:nowrap}.target-conditions-trait .trait-subtitle,.entity-selector-trait .trait-subtitle{font-size:.75rem;color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-conditions-trait .trait-total-count,.entity-selector-trait .trait-total-count{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .trait-total-count:hover,.entity-selector-trait .trait-total-count:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .trait-total-count.loading,.entity-selector-trait .trait-total-count.loading{cursor:wait}.target-conditions-trait .trait-total-count.loading i,.entity-selector-trait .trait-total-count.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .trait-total-count.loading:hover,.entity-selector-trait .trait-total-count.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .trait-total-count.inactive,.target-conditions-trait .trait-total-count.no-matches,.entity-selector-trait .trait-total-count.inactive,.entity-selector-trait .trait-total-count.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .trait-total-count.inactive:hover,.target-conditions-trait .trait-total-count.no-matches:hover,.entity-selector-trait .trait-total-count.inactive:hover,.entity-selector-trait .trait-total-count.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .trait-total-count.popover-open,.entity-selector-trait .trait-total-count.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .trait-total-count i,.entity-selector-trait .trait-total-count i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .trait-total-count:hover i,.entity-selector-trait .trait-total-count:hover i{opacity:1}.target-conditions-trait .trait-total-count .preview-count,.entity-selector-trait .trait-total-count .preview-count{font-weight:700}.target-conditions-trait .trait-total-count,.entity-selector-trait .trait-total-count{margin-left:.5rem}.target-conditions-trait .trait-show-all-toggle,.entity-selector-trait .trait-show-all-toggle{display:inline-flex;align-items:center;gap:.5rem;margin-right:.75rem;padding:.25rem .5rem;border-radius:.2rem;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.target-conditions-trait .trait-show-all-toggle:hover,.entity-selector-trait .trait-show-all-toggle:hover{background:rgba(0,0,0,.05)}.target-conditions-trait .trait-show-all-toggle .toggle-label,.entity-selector-trait .trait-show-all-toggle .toggle-label{font-size:.75rem;font-weight:500;color:#6c757d}.target-conditions-trait .trait-show-all-toggle .show-all-checkbox,.entity-selector-trait .trait-show-all-toggle .show-all-checkbox{display:none}.target-conditions-trait .trait-show-all-toggle .toggle-slider,.entity-selector-trait .trait-show-all-toggle .toggle-slider{position:relative;width:36px;height:20px;background:#cbd5e1;border-radius:50rem;transition:background-color .2s ease-in-out}.target-conditions-trait .trait-show-all-toggle .toggle-slider::after,.entity-selector-trait .trait-show-all-toggle .toggle-slider::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s ease-in-out}.target-conditions-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider,.entity-selector-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider{background:#28a745}.target-conditions-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider::after,.entity-selector-trait .trait-show-all-toggle .show-all-checkbox:checked+.toggle-slider::after{transform:translateX(16px)}.target-conditions-trait.has-validation-error,.entity-selector-trait.has-validation-error{border-color:#dc3545;box-shadow:0 0 0 3px rgba(220,53,69,.1)}.target-conditions-trait.has-validation-error .condition-trait-header,.entity-selector-trait.has-validation-error .condition-trait-header{border-bottom-color:#dc3545}.target-conditions-trait .trait-validation-error,.entity-selector-trait .trait-validation-error{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem;background:#f8d7da;color:#b91c1c;font-size:.875rem;font-weight:500;border-bottom:1px solid #fecaca}.target-conditions-trait .trait-validation-error i,.entity-selector-trait .trait-validation-error i{color:#dc3545}.target-conditions-trait.trait-required .trait-title::after,.entity-selector-trait.trait-required .trait-title::after{content:" *";color:#dc3545}.target-conditions-trait .condition-trait-body,.entity-selector-trait .condition-trait-body{padding:0;background:#fff;border-radius:0 0 .3rem .3rem}.target-conditions-trait .target-block-tabs,.entity-selector-trait .target-block-tabs{display:flex;flex-wrap:wrap;gap:0;padding:0;background:#f1f5f9;border-bottom:1px solid #dee2e6}.target-conditions-trait .target-block-tab,.entity-selector-trait .target-block-tab{position:relative;display:flex;align-items:center;gap:.5rem;flex:none;min-width:0;padding:.625rem 1rem;margin-bottom:-1px;background:rgba(0,0,0,0);border:0;border-bottom:2px solid rgba(0,0,0,0);color:#6c757d;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .target-block-tab:hover,.entity-selector-trait .target-block-tab:hover{background:#e2e8f0;color:#334155}.target-conditions-trait .target-block-tab.active,.entity-selector-trait .target-block-tab.active{background:#fff;border-bottom-color:#06b6d4;color:#25b9d7}.target-conditions-trait .target-block-tab i,.entity-selector-trait .target-block-tab i{font-size:.875rem}.target-conditions-trait .target-block-tab .tab-label,.entity-selector-trait .target-block-tab .tab-label{white-space:nowrap}.target-conditions-trait .target-block-tab .tab-badge,.entity-selector-trait .target-block-tab .tab-badge{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .target-block-tab .tab-badge:hover,.entity-selector-trait .target-block-tab .tab-badge:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .target-block-tab .tab-badge.loading,.entity-selector-trait .target-block-tab .tab-badge.loading{cursor:wait}.target-conditions-trait .target-block-tab .tab-badge.loading i,.entity-selector-trait .target-block-tab .tab-badge.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .target-block-tab .tab-badge.loading:hover,.entity-selector-trait .target-block-tab .tab-badge.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab .tab-badge.inactive,.target-conditions-trait .target-block-tab .tab-badge.no-matches,.entity-selector-trait .target-block-tab .tab-badge.inactive,.entity-selector-trait .target-block-tab .tab-badge.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .target-block-tab .tab-badge.inactive:hover,.target-conditions-trait .target-block-tab .tab-badge.no-matches:hover,.entity-selector-trait .target-block-tab .tab-badge.inactive:hover,.entity-selector-trait .target-block-tab .tab-badge.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab .tab-badge.popover-open,.entity-selector-trait .target-block-tab .tab-badge.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .target-block-tab .tab-badge i,.entity-selector-trait .target-block-tab .tab-badge i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .target-block-tab .tab-badge:hover i,.entity-selector-trait .target-block-tab .tab-badge:hover i{opacity:1}.target-conditions-trait .target-block-tab .tab-badge .preview-count,.entity-selector-trait .target-block-tab .tab-badge .preview-count{font-weight:700}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#94a3b8;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(148,163,184,.4)}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.loading,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.loading{cursor:wait}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.loading i,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.loading:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive,.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive:hover,.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.inactive:hover,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge.popover-open,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge.popover-open{background:hsl(215,20.2247191011%,55.0980392157%);box-shadow:0 2px 8px rgba(148,163,184,.4)}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge i,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge:hover i,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge:hover i{opacity:1}.target-conditions-trait .target-block-tab.has-data:not(.active) .tab-badge .preview-count,.entity-selector-trait .target-block-tab.has-data:not(.active) .tab-badge .preview-count{font-weight:700}.target-conditions-trait .target-block-container,.entity-selector-trait .target-block-container{display:none}.target-conditions-trait .target-block-container.active,.entity-selector-trait .target-block-container.active{display:block}.target-conditions-trait .target-block-content,.entity-selector-trait .target-block-content{padding:1rem}.target-conditions-trait .target-block-groups,.entity-selector-trait .target-block-groups{display:flex;flex-direction:column;gap:1rem}.target-conditions-trait .target-block-header,.entity-selector-trait .target-block-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6}.target-conditions-trait .target-block-empty,.entity-selector-trait .target-block-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;text-align:center;color:#6c757d}.target-conditions-trait .target-block-empty i,.entity-selector-trait .target-block-empty i{font-size:2rem;opacity:.5}.target-conditions-trait .target-block-empty p,.entity-selector-trait .target-block-empty p{margin:0;font-size:.875rem}.target-conditions-trait .trait-collapse-toggle,.target-conditions-trait .collapse-toggle,.entity-selector-trait .trait-collapse-toggle,.entity-selector-trait .collapse-toggle{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;cursor:pointer;transition:transform .2s ease-in-out}.target-conditions-trait .trait-collapse-toggle.collapsed,.target-conditions-trait .collapse-toggle.collapsed,.entity-selector-trait .trait-collapse-toggle.collapsed,.entity-selector-trait .collapse-toggle.collapsed{transform:rotate(-90deg)}.target-conditions-trait .trait-header-right,.entity-selector-trait .trait-header-right{display:flex;align-items:center;gap:.5rem}.target-conditions-trait.collapsed .condition-trait-body,.entity-selector-trait.collapsed .condition-trait-body{display:none}.target-conditions-trait.collapsed .condition-trait-header,.entity-selector-trait.collapsed .condition-trait-header{border-radius:.3rem}.target-conditions-trait.single-mode .target-block-tabs,.entity-selector-trait.single-mode .target-block-tabs{display:none}.target-conditions-trait.single-mode .target-block-container,.entity-selector-trait.single-mode .target-block-container{display:block}.target-conditions-trait .header-actions,.entity-selector-trait .header-actions{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .header-action-btn,.entity-selector-trait .header-action-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .header-action-btn:focus,.entity-selector-trait .header-action-btn:focus{outline:none}.target-conditions-trait .header-action-btn,.entity-selector-trait .header-action-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;color:#6c757d;background:rgba(0,0,0,0);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .header-action-btn:hover,.entity-selector-trait .header-action-btn:hover{background:#e2e8f0;color:#495057}.target-conditions-trait .header-action-btn i,.entity-selector-trait .header-action-btn i{font-size:12px}.target-conditions-trait .target-search-wrapper,.entity-selector-trait .target-search-wrapper{position:relative}.target-conditions-trait .target-search-dropdown,.entity-selector-trait .target-search-dropdown{position:absolute;z-index:1000;background:#fff;border:1px solid #dee2e6;border-radius:.3rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);display:none;width:600px;max-width:calc(100vw - 40px)}.target-conditions-trait .target-search-dropdown.show,.entity-selector-trait .target-search-dropdown.show{display:block}.target-conditions-trait .dropdown-header,.entity-selector-trait .dropdown-header{display:flex;align-items:center;gap:.5rem;padding:1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0}.target-conditions-trait .dropdown-search-input,.entity-selector-trait .dropdown-search-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .dropdown-search-input:focus,.entity-selector-trait .dropdown-search-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .dropdown-search-input::placeholder,.entity-selector-trait .dropdown-search-input::placeholder{color:#adb5bd}.target-conditions-trait .dropdown-search-input,.entity-selector-trait .dropdown-search-input{flex:1;padding:.5rem 1rem}.target-conditions-trait .dropdown-close-btn,.entity-selector-trait .dropdown-close-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .dropdown-close-btn:focus,.entity-selector-trait .dropdown-close-btn:focus{outline:none}.target-conditions-trait .dropdown-close-btn,.entity-selector-trait .dropdown-close-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#6c757d;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-close-btn:hover,.entity-selector-trait .dropdown-close-btn:hover{background:#e2e8f0;color:#495057}.target-conditions-trait .dropdown-controls,.entity-selector-trait .dropdown-controls{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#fff;border-bottom:1px solid #dee2e6}.target-conditions-trait .dropdown-controls-left,.target-conditions-trait .dropdown-controls-right,.entity-selector-trait .dropdown-controls-left,.entity-selector-trait .dropdown-controls-right{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .view-mode-btn,.entity-selector-trait .view-mode-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .view-mode-btn:focus,.entity-selector-trait .view-mode-btn:focus{outline:none}.target-conditions-trait .view-mode-btn,.entity-selector-trait .view-mode-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;background:rgba(0,0,0,0);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .view-mode-btn:hover,.entity-selector-trait .view-mode-btn:hover{background:#f1f5f9;color:#495057}.target-conditions-trait .view-mode-btn.active,.entity-selector-trait .view-mode-btn.active{background:#25b9d7;color:#fff}.target-conditions-trait .dropdown-results-count,.entity-selector-trait .dropdown-results-count{font-size:.75rem;color:#6c757d}.target-conditions-trait .dropdown-body,.entity-selector-trait .dropdown-body{max-height:400px;overflow-y:auto}.target-conditions-trait .dropdown-body::-webkit-scrollbar,.entity-selector-trait .dropdown-body::-webkit-scrollbar{width:6px;height:6px}.target-conditions-trait .dropdown-body::-webkit-scrollbar-track,.entity-selector-trait .dropdown-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-conditions-trait .dropdown-body::-webkit-scrollbar-thumb,.entity-selector-trait .dropdown-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-conditions-trait .dropdown-body::-webkit-scrollbar-thumb:hover,.entity-selector-trait .dropdown-body::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-conditions-trait .dropdown-results,.entity-selector-trait .dropdown-results{padding:.5rem}.target-conditions-trait .results-count,.entity-selector-trait .results-count{font-size:.75rem;color:#6c757d;padding:.25rem .5rem}.target-conditions-trait .results-header,.entity-selector-trait .results-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-size:.75rem;font-weight:600;color:#495057}.target-conditions-trait .dropdown-results-grid,.entity-selector-trait .dropdown-results-grid{display:grid;gap:.5rem}.target-conditions-trait .dropdown-results-grid.view-list,.entity-selector-trait .dropdown-results-grid.view-list{grid-template-columns:1fr}.target-conditions-trait .dropdown-results-grid.view-grid-2,.entity-selector-trait .dropdown-results-grid.view-grid-2{grid-template-columns:repeat(2, 1fr)}.target-conditions-trait .dropdown-results-grid.view-grid-3,.entity-selector-trait .dropdown-results-grid.view-grid-3{grid-template-columns:repeat(3, 1fr)}.target-conditions-trait .dropdown-result-item,.entity-selector-trait .dropdown-result-item{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;background:#fff;border:none;border-bottom:1px solid #dee2e6;border-radius:0;cursor:pointer;transition:background .15s ease-in-out}.target-conditions-trait .dropdown-result-item:last-child,.entity-selector-trait .dropdown-result-item:last-child{border-bottom:none}.target-conditions-trait .dropdown-result-item:hover,.entity-selector-trait .dropdown-result-item:hover{background:#e9ecef}.target-conditions-trait .dropdown-result-item.selected,.entity-selector-trait .dropdown-result-item.selected{background:rgba(37,185,215,.1)}.target-conditions-trait .dropdown-result-item.disabled,.entity-selector-trait .dropdown-result-item.disabled{opacity:.5;cursor:not-allowed}.target-conditions-trait .dropdown-result-item.disabled:hover,.entity-selector-trait .dropdown-result-item.disabled:hover{background:#fff}.target-conditions-trait .result-item-image,.target-conditions-trait .result-image,.entity-selector-trait .result-item-image,.entity-selector-trait .result-image{flex-shrink:0;width:40px;height:40px;overflow:hidden;border-radius:.2rem;background:#f1f5f9}.target-conditions-trait .result-item-image img,.target-conditions-trait .result-image img,.entity-selector-trait .result-item-image img,.entity-selector-trait .result-image img{width:100%;height:100%;object-fit:cover}.target-conditions-trait .result-icon,.entity-selector-trait .result-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;background:#f1f5f9;border-radius:.2rem;color:#6c757d}.target-conditions-trait .result-icon i,.entity-selector-trait .result-icon i{font-size:16px}.target-conditions-trait .result-item-info,.target-conditions-trait .result-info,.entity-selector-trait .result-item-info,.entity-selector-trait .result-info{flex:1;min-width:0}.target-conditions-trait .result-item-name,.target-conditions-trait .result-name,.entity-selector-trait .result-item-name,.entity-selector-trait .result-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .result-item-meta,.target-conditions-trait .result-subtitle,.entity-selector-trait .result-item-meta,.entity-selector-trait .result-subtitle{font-size:.75rem;color:#6c757d}.target-conditions-trait .subtitle-line,.entity-selector-trait .subtitle-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .subtitle-line-primary,.entity-selector-trait .subtitle-line-primary{color:#495057}.target-conditions-trait .subtitle-line-secondary,.entity-selector-trait .subtitle-line-secondary{color:#6c757d;font-size:11px}.target-conditions-trait .result-col,.entity-selector-trait .result-col{flex-shrink:0;width:70px;text-align:right;font-size:.75rem}.target-conditions-trait .result-col-price,.entity-selector-trait .result-col-price{color:#495057}.target-conditions-trait .result-col-sale,.entity-selector-trait .result-col-sale{color:#dc3545;font-weight:600}.target-conditions-trait .result-col-stock .col-value.stock-ok,.entity-selector-trait .result-col-stock .col-value.stock-ok{color:#28a745}.target-conditions-trait .result-col-stock .col-value.stock-low,.entity-selector-trait .result-col-stock .col-value.stock-low{color:#ffc107}.target-conditions-trait .result-col-stock .col-value.stock-out,.entity-selector-trait .result-col-stock .col-value.stock-out{color:#dc3545}.target-conditions-trait .result-col-sales,.entity-selector-trait .result-col-sales{color:#6c757d}.target-conditions-trait .col-value,.entity-selector-trait .col-value{display:block}.target-conditions-trait .result-item-checkbox,.target-conditions-trait .result-checkbox,.entity-selector-trait .result-item-checkbox,.entity-selector-trait .result-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;border:2px solid #ced4da;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .result-item-checkbox i,.target-conditions-trait .result-checkbox i,.entity-selector-trait .result-item-checkbox i,.entity-selector-trait .result-checkbox i{display:none;font-size:10px;color:#fff}.dropdown-result-item.selected .target-conditions-trait .result-item-checkbox,.dropdown-item.selected .target-conditions-trait .result-item-checkbox,.dropdown-result-item.selected .target-conditions-trait .result-checkbox,.dropdown-item.selected .target-conditions-trait .result-checkbox,.dropdown-result-item.selected .entity-selector-trait .result-item-checkbox,.dropdown-item.selected .entity-selector-trait .result-item-checkbox,.dropdown-result-item.selected .entity-selector-trait .result-checkbox,.dropdown-item.selected .entity-selector-trait .result-checkbox{background:#25b9d7;border-color:#25b9d7}.dropdown-result-item.selected .target-conditions-trait .result-item-checkbox i,.dropdown-item.selected .target-conditions-trait .result-item-checkbox i,.dropdown-result-item.selected .target-conditions-trait .result-checkbox i,.dropdown-item.selected .target-conditions-trait .result-checkbox i,.dropdown-result-item.selected .entity-selector-trait .result-item-checkbox i,.dropdown-item.selected .entity-selector-trait .result-item-checkbox i,.dropdown-result-item.selected .entity-selector-trait .result-checkbox i,.dropdown-item.selected .entity-selector-trait .result-checkbox i{display:block}.target-conditions-trait .result-item-product,.entity-selector-trait .result-item-product{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .no-results,.entity-selector-trait .no-results{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}.target-conditions-trait .no-results i,.entity-selector-trait .no-results i{font-size:1.25rem;opacity:.5}.target-conditions-trait .dropdown-empty,.entity-selector-trait .dropdown-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;text-align:center;color:#6c757d}.target-conditions-trait .dropdown-empty i,.entity-selector-trait .dropdown-empty i{font-size:2rem;opacity:.5}.target-conditions-trait .dropdown-empty p,.entity-selector-trait .dropdown-empty p{margin:0;font-size:.875rem}.target-conditions-trait .dropdown-loading,.entity-selector-trait .dropdown-loading{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6c757d}.target-conditions-trait .dropdown-loading i,.entity-selector-trait .dropdown-loading i{font-size:1.5rem;animation:spin 1s linear infinite}.target-conditions-trait .load-more-controls,.entity-selector-trait .load-more-controls{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;border-top:1px solid #dee2e6;font-size:.75rem;color:#6c757d}.target-conditions-trait .load-more-controls .remaining-count,.entity-selector-trait .load-more-controls .remaining-count{font-weight:600;color:#495057}.target-conditions-trait .load-more-controls .load-more-select,.entity-selector-trait .load-more-controls .load-more-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .load-more-controls .load-more-select:focus,.entity-selector-trait .load-more-controls .load-more-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .load-more-controls .load-more-select::placeholder,.entity-selector-trait .load-more-controls .load-more-select::placeholder{color:#adb5bd}.target-conditions-trait .load-more-controls .load-more-select,.entity-selector-trait .load-more-controls .load-more-select{padding:.25rem .5rem;font-size:.75rem;min-width:70px}.target-conditions-trait .dropdown-load-more,.entity-selector-trait .dropdown-load-more{display:flex;justify-content:center;padding:1rem;border-top:1px solid #dee2e6}.target-conditions-trait .dropdown-load-more .load-more-btn,.entity-selector-trait .dropdown-load-more .load-more-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .dropdown-load-more .load-more-btn:focus,.entity-selector-trait .dropdown-load-more .load-more-btn:focus{outline:none}.target-conditions-trait .dropdown-load-more .load-more-btn,.entity-selector-trait .dropdown-load-more .load-more-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:#25b9d7;background:rgba(37,185,215,.1);border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-load-more .load-more-btn:hover,.entity-selector-trait .dropdown-load-more .load-more-btn:hover{background:rgba(37,185,215,.2)}.target-conditions-trait .dropdown-load-more .load-more-btn.loading,.entity-selector-trait .dropdown-load-more .load-more-btn.loading{opacity:.7;cursor:wait}.target-conditions-trait .dropdown-footer,.entity-selector-trait .dropdown-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}.target-conditions-trait .dropdown-selection-count,.entity-selector-trait .dropdown-selection-count{font-size:.75rem;color:#6c757d}.target-conditions-trait .dropdown-selection-count strong,.entity-selector-trait .dropdown-selection-count strong{color:#25b9d7}.target-conditions-trait .dropdown-actions,.entity-selector-trait .dropdown-actions{display:flex;gap:.5rem}.target-conditions-trait .dropdown-action-btn,.entity-selector-trait .dropdown-action-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .dropdown-action-btn:focus,.entity-selector-trait .dropdown-action-btn:focus{outline:none}.target-conditions-trait .dropdown-action-btn,.entity-selector-trait .dropdown-action-btn{padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .dropdown-action-btn.btn-cancel,.entity-selector-trait .dropdown-action-btn.btn-cancel{color:#495057;background:#f1f5f9}.target-conditions-trait .dropdown-action-btn.btn-cancel:hover,.entity-selector-trait .dropdown-action-btn.btn-cancel:hover{background:#e2e8f0}.target-conditions-trait .dropdown-action-btn.btn-apply,.entity-selector-trait .dropdown-action-btn.btn-apply{color:#fff;background:#25b9d7}.target-conditions-trait .dropdown-action-btn.btn-apply:hover,.entity-selector-trait .dropdown-action-btn.btn-apply:hover{background:#1a9ab7}.target-conditions-trait .dropdown-filter-panel,.entity-selector-trait .dropdown-filter-panel{padding:1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}.target-conditions-trait .filter-panel-header,.entity-selector-trait .filter-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.target-conditions-trait .filter-panel-title,.entity-selector-trait .filter-panel-title{font-size:.875rem;font-weight:600;color:#212529}.target-conditions-trait .filter-panel-toggle,.entity-selector-trait .filter-panel-toggle{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .filter-panel-toggle:focus,.entity-selector-trait .filter-panel-toggle:focus{outline:none}.target-conditions-trait .filter-panel-toggle,.entity-selector-trait .filter-panel-toggle{font-size:.75rem;color:#25b9d7}.target-conditions-trait .filter-panel-toggle:hover,.entity-selector-trait .filter-panel-toggle:hover{text-decoration:underline}.target-conditions-trait .filter-panel-content,.entity-selector-trait .filter-panel-content{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr))}.target-conditions-trait .filter-group,.entity-selector-trait .filter-group{display:flex;flex-direction:column;gap:.25rem}.target-conditions-trait .filter-label,.entity-selector-trait .filter-label{font-size:.75rem;font-weight:500;color:#495057}.target-conditions-trait .filter-select,.target-conditions-trait .filter-input,.entity-selector-trait .filter-select,.entity-selector-trait .filter-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .filter-select:focus,.target-conditions-trait .filter-input:focus,.entity-selector-trait .filter-select:focus,.entity-selector-trait .filter-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .filter-select::placeholder,.target-conditions-trait .filter-input::placeholder,.entity-selector-trait .filter-select::placeholder,.entity-selector-trait .filter-input::placeholder{color:#adb5bd}.target-conditions-trait .filter-select,.target-conditions-trait .filter-input,.entity-selector-trait .filter-select,.entity-selector-trait .filter-input{padding:.375rem .5rem;font-size:.75rem}.target-conditions-trait .category-tree,.entity-selector-trait .category-tree{padding:.5rem}.target-conditions-trait .tree-loading,.entity-selector-trait .tree-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}.target-conditions-trait .tree-loading i,.entity-selector-trait .tree-loading i{animation:spin .6s linear infinite}.target-conditions-trait .tree-item,.entity-selector-trait .tree-item{display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}.target-conditions-trait .tree-item:hover,.entity-selector-trait .tree-item:hover{background:#e9ecef}.target-conditions-trait .tree-item.selected,.entity-selector-trait .tree-item.selected{background:rgba(37,185,215,.1)}.target-conditions-trait .tree-item.selected .tree-checkbox,.entity-selector-trait .tree-item.selected .tree-checkbox{background:#25b9d7;border-color:#25b9d7}.target-conditions-trait .tree-item.selected .tree-checkbox i,.entity-selector-trait .tree-item.selected .tree-checkbox i{display:block}.target-conditions-trait .tree-toggle,.entity-selector-trait .tree-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#6c757d;cursor:pointer;transition:transform .15s ease-in-out}.target-conditions-trait .tree-toggle i,.entity-selector-trait .tree-toggle i{font-size:12px}.target-conditions-trait .tree-toggle-placeholder,.entity-selector-trait .tree-toggle-placeholder{width:16px;height:16px}.target-conditions-trait .btn-select-children,.entity-selector-trait .btn-select-children{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-select-children:focus,.entity-selector-trait .btn-select-children:focus{outline:none}.target-conditions-trait .btn-select-children,.entity-selector-trait .btn-select-children{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-select-children:hover,.entity-selector-trait .btn-select-children:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-select-children i,.entity-selector-trait .btn-select-children i{font-size:12px}.target-conditions-trait .btn-select-children-placeholder,.entity-selector-trait .btn-select-children-placeholder{width:18px;height:18px}.target-conditions-trait .tree-checkbox,.entity-selector-trait .tree-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.target-conditions-trait .tree-checkbox i,.entity-selector-trait .tree-checkbox i{display:none;font-size:10px;color:#fff}.target-conditions-trait .tree-icon,.entity-selector-trait .tree-icon{display:flex;align-items:center;justify-content:center;width:16px;color:#6c757d}.target-conditions-trait .tree-icon i,.entity-selector-trait .tree-icon i{font-size:14px}.target-conditions-trait .tree-info,.entity-selector-trait .tree-info{display:flex;align-items:center;gap:.25rem;flex:1;min-width:0}.target-conditions-trait .tree-name,.entity-selector-trait .tree-name{font-size:.875rem;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .tree-subtitle,.entity-selector-trait .tree-subtitle{font-size:.75rem;color:#6c757d}.target-conditions-trait .category-tree-item,.entity-selector-trait .category-tree-item{padding:.25rem 0}.target-conditions-trait .category-tree-node,.entity-selector-trait .category-tree-node{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}.target-conditions-trait .category-tree-node:hover,.entity-selector-trait .category-tree-node:hover{background:#e9ecef}.target-conditions-trait .category-tree-node.selected,.entity-selector-trait .category-tree-node.selected{background:rgba(37,185,215,.1)}.target-conditions-trait .category-tree-toggle,.entity-selector-trait .category-tree-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#6c757d;transition:transform .15s ease-in-out}.target-conditions-trait .category-tree-toggle.expanded,.entity-selector-trait .category-tree-toggle.expanded{transform:rotate(90deg)}.target-conditions-trait .category-tree-toggle.empty,.entity-selector-trait .category-tree-toggle.empty{visibility:hidden}.target-conditions-trait .category-tree-checkbox,.entity-selector-trait .category-tree-checkbox{flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.target-conditions-trait .category-tree-checkbox.checked,.entity-selector-trait .category-tree-checkbox.checked{background:#25b9d7;border-color:#25b9d7}.target-conditions-trait .category-tree-checkbox.checked::after,.entity-selector-trait .category-tree-checkbox.checked::after{content:"✓";display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;font-size:10px}.target-conditions-trait .category-tree-checkbox.indeterminate,.entity-selector-trait .category-tree-checkbox.indeterminate{background:#25b9d7;border-color:#25b9d7}.target-conditions-trait .category-tree-checkbox.indeterminate::after,.entity-selector-trait .category-tree-checkbox.indeterminate::after{content:"−";display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#fff;font-size:10px}.target-conditions-trait .category-tree-name,.entity-selector-trait .category-tree-name{flex:1;font-size:.875rem;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .category-tree-count,.entity-selector-trait .category-tree-count{font-size:.75rem;color:#6c757d}.target-conditions-trait .category-tree-children,.entity-selector-trait .category-tree-children{margin-left:24px}.target-conditions-trait .search-history-list,.entity-selector-trait .search-history-list{padding:.5rem}.target-conditions-trait .history-item,.entity-selector-trait .history-item{display:flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}.target-conditions-trait .history-item:hover,.entity-selector-trait .history-item:hover{background:#e9ecef}.target-conditions-trait .history-item>i,.entity-selector-trait .history-item>i{color:#6c757d;font-size:14px}.target-conditions-trait .history-query,.entity-selector-trait .history-query{flex:1;font-size:.875rem;color:#212529}.target-conditions-trait .btn-delete-history,.entity-selector-trait .btn-delete-history{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-delete-history:focus,.entity-selector-trait .btn-delete-history:focus{outline:none}.target-conditions-trait .btn-delete-history,.entity-selector-trait .btn-delete-history{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;opacity:0;transition:all .15s ease-in-out}.history-item:hover .target-conditions-trait .btn-delete-history,.history-item:hover .entity-selector-trait .btn-delete-history{opacity:1}.target-conditions-trait .btn-delete-history:hover,.entity-selector-trait .btn-delete-history:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .btn-delete-history i,.entity-selector-trait .btn-delete-history i{font-size:12px}.target-conditions-trait .filter-panel,.entity-selector-trait .filter-panel{display:none;padding:1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}.target-conditions-trait .filter-panel.show,.entity-selector-trait .filter-panel.show{display:block}.target-conditions-trait .filter-row,.entity-selector-trait .filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.5rem}.target-conditions-trait .filter-row:last-child,.entity-selector-trait .filter-row:last-child{margin-bottom:0}.target-conditions-trait .view-mode-select,.entity-selector-trait .view-mode-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .view-mode-select:focus,.entity-selector-trait .view-mode-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .view-mode-select::placeholder,.entity-selector-trait .view-mode-select::placeholder{color:#adb5bd}.target-conditions-trait .view-mode-select,.entity-selector-trait .view-mode-select{padding:.25rem .5rem;font-size:.75rem;min-width:80px}body>.target-search-dropdown,.target-search-dropdown{position:absolute;z-index:1000;background:#fff;border:1px solid #dee2e6;border-radius:.3rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);display:none;width:600px;max-width:calc(100vw - 40px)}body>.target-search-dropdown.show,.target-search-dropdown.show{display:block}body>.target-search-dropdown .dropdown-header,.target-search-dropdown .dropdown-header{display:flex;align-items:center;gap:.5rem;padding:1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;flex-wrap:wrap}body>.target-search-dropdown .results-count,.target-search-dropdown .results-count{font-size:.875rem;font-weight:600;color:#212529;white-space:nowrap}body>.target-search-dropdown .dropdown-actions,.target-search-dropdown .dropdown-actions{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap;flex:1;justify-content:flex-end}body>.target-search-dropdown .btn-select-all,body>.target-search-dropdown .btn-clear-selection,.target-search-dropdown .btn-select-all,.target-search-dropdown .btn-clear-selection{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-select-all:focus,body>.target-search-dropdown .btn-clear-selection:focus,.target-search-dropdown .btn-select-all:focus,.target-search-dropdown .btn-clear-selection:focus{outline:none}body>.target-search-dropdown .btn-select-all,body>.target-search-dropdown .btn-clear-selection,.target-search-dropdown .btn-select-all,.target-search-dropdown .btn-clear-selection{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-select-all:hover,body>.target-search-dropdown .btn-clear-selection:hover,.target-search-dropdown .btn-select-all:hover,.target-search-dropdown .btn-clear-selection:hover{background:#e9ecef;border-color:#cbd5e1}body>.target-search-dropdown .btn-select-all kbd,body>.target-search-dropdown .btn-clear-selection kbd,.target-search-dropdown .btn-select-all kbd,.target-search-dropdown .btn-clear-selection kbd{font-size:.65rem;padding:.125rem .25rem;background:#f1f5f9;border-radius:2px;color:#6c757d}body>.target-search-dropdown .sort-controls,.target-search-dropdown .sort-controls{display:flex;align-items:center}body>.target-search-dropdown .sort-field-select,.target-search-dropdown .sort-field-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .sort-field-select:focus,.target-search-dropdown .sort-field-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .sort-field-select::placeholder,.target-search-dropdown .sort-field-select::placeholder{color:#adb5bd}body>.target-search-dropdown .sort-field-select,.target-search-dropdown .sort-field-select{padding:.25rem .5rem;font-size:.75rem;min-width:80px;height:28px;border-radius:.2rem 0 0 .2rem;border-right:none}body>.target-search-dropdown .btn-sort-dir,.target-search-dropdown .btn-sort-dir{display:flex;align-items:center;justify-content:center;width:38px;min-width:38px;flex-shrink:0;height:28px;padding:0;margin:0;color:#6c757d;background:#fff;border:1px solid #dee2e6;border-radius:0 .2rem .2rem 0;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-sort-dir i,.target-search-dropdown .btn-sort-dir i{font-size:14px}body>.target-search-dropdown .btn-sort-dir:hover,.target-search-dropdown .btn-sort-dir:hover{background:#e9ecef;color:#212529}body>.target-search-dropdown .btn-sort-dir.active,.target-search-dropdown .btn-sort-dir.active{background:rgba(37,185,215,.1);border-color:#25b9d7;color:#25b9d7}body>.target-search-dropdown .view-mode-select,.target-search-dropdown .view-mode-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .view-mode-select:focus,.target-search-dropdown .view-mode-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .view-mode-select::placeholder,.target-search-dropdown .view-mode-select::placeholder{color:#adb5bd}body>.target-search-dropdown .view-mode-select,.target-search-dropdown .view-mode-select{padding:.25rem .5rem;font-size:.75rem;min-width:80px;margin-left:.25rem}body>.target-search-dropdown .btn-toggle-filters,body>.target-search-dropdown .btn-show-history,.target-search-dropdown .btn-toggle-filters,.target-search-dropdown .btn-show-history{display:flex;align-items:center;justify-content:center;width:32px;min-width:32px;flex-shrink:0;height:28px;padding:0;margin:0;color:#6c757d;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-toggle-filters i,body>.target-search-dropdown .btn-show-history i,.target-search-dropdown .btn-toggle-filters i,.target-search-dropdown .btn-show-history i{font-size:14px}body>.target-search-dropdown .btn-toggle-filters:hover,body>.target-search-dropdown .btn-show-history:hover,.target-search-dropdown .btn-toggle-filters:hover,.target-search-dropdown .btn-show-history:hover{background:#e9ecef;color:#212529}body>.target-search-dropdown .btn-toggle-filters.active,body>.target-search-dropdown .btn-show-history.active,.target-search-dropdown .btn-toggle-filters.active,.target-search-dropdown .btn-show-history.active{background:rgba(37,185,215,.1);border-color:#25b9d7;color:#25b9d7}body>.target-search-dropdown .refine-compact,.target-search-dropdown .refine-compact{display:flex;align-items:center}body>.target-search-dropdown .refine-compact .btn-refine-negate,.target-search-dropdown .refine-compact .btn-refine-negate{display:flex;align-items:center;justify-content:center;width:32px;min-width:32px;flex-shrink:0;height:28px;padding:0;margin:0;color:#6c757d;background:#fff;border:1px solid #dee2e6;border-right:none;border-radius:.2rem 0 0 .2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .refine-compact .btn-refine-negate:hover,.target-search-dropdown .refine-compact .btn-refine-negate:hover{background:#e9ecef;color:#212529}body>.target-search-dropdown .refine-compact .btn-refine-negate.active,.target-search-dropdown .refine-compact .btn-refine-negate.active{background:#f8d7da;color:#dc3545;border-color:#dc3545}body>.target-search-dropdown .refine-compact .refine-input,.target-search-dropdown .refine-compact .refine-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .refine-compact .refine-input:focus,.target-search-dropdown .refine-compact .refine-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .refine-compact .refine-input::placeholder,.target-search-dropdown .refine-compact .refine-input::placeholder{color:#adb5bd}body>.target-search-dropdown .refine-compact .refine-input,.target-search-dropdown .refine-compact .refine-input{width:100px;padding:.25rem .5rem;font-size:.75rem;border-radius:0 .2rem .2rem 0}body>.target-search-dropdown .refine-compact .btn-clear-refine,.target-search-dropdown .refine-compact .btn-clear-refine{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;margin:0;margin-left:-1px;color:#6c757d;background:#fff;border:1px solid #dee2e6;border-radius:0 .2rem .2rem 0;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .refine-compact .btn-clear-refine:hover,.target-search-dropdown .refine-compact .btn-clear-refine:hover{background:#e9ecef;color:#212529}body>.target-search-dropdown .filter-panel,.target-search-dropdown .filter-panel{display:none;padding:1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}body>.target-search-dropdown .filter-panel.show,.target-search-dropdown .filter-panel.show{display:block}body>.target-search-dropdown .filter-row,.target-search-dropdown .filter-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.5rem}body>.target-search-dropdown .filter-row:last-child,.target-search-dropdown .filter-row:last-child{margin-bottom:0}body>.target-search-dropdown .filter-label,.target-search-dropdown .filter-label{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:#495057;cursor:pointer}body>.target-search-dropdown .filter-label input[type=checkbox],.target-search-dropdown .filter-label input[type=checkbox]{margin:0}body>.target-search-dropdown .filter-price-range,.target-search-dropdown .filter-price-range{display:flex;align-items:center;gap:.25rem}body>.target-search-dropdown .filter-price-range .filter-price-label,.target-search-dropdown .filter-price-range .filter-price-label{font-size:.75rem;color:#6c757d}body>.target-search-dropdown .filter-price-range .filter-price-min,body>.target-search-dropdown .filter-price-range .filter-price-max,.target-search-dropdown .filter-price-range .filter-price-min,.target-search-dropdown .filter-price-range .filter-price-max{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .filter-price-range .filter-price-min:focus,body>.target-search-dropdown .filter-price-range .filter-price-max:focus,.target-search-dropdown .filter-price-range .filter-price-min:focus,.target-search-dropdown .filter-price-range .filter-price-max:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .filter-price-range .filter-price-min::placeholder,body>.target-search-dropdown .filter-price-range .filter-price-max::placeholder,.target-search-dropdown .filter-price-range .filter-price-min::placeholder,.target-search-dropdown .filter-price-range .filter-price-max::placeholder{color:#adb5bd}body>.target-search-dropdown .filter-price-range .filter-price-min,body>.target-search-dropdown .filter-price-range .filter-price-max,.target-search-dropdown .filter-price-range .filter-price-min,.target-search-dropdown .filter-price-range .filter-price-max{width:70px;padding:.25rem .5rem;font-size:.75rem}body>.target-search-dropdown .filter-price-range .filter-price-sep,.target-search-dropdown .filter-price-range .filter-price-sep{color:#6c757d}body>.target-search-dropdown .btn-clear-filters,.target-search-dropdown .btn-clear-filters{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-clear-filters:focus,.target-search-dropdown .btn-clear-filters:focus{outline:none}body>.target-search-dropdown .btn-clear-filters,.target-search-dropdown .btn-clear-filters{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;cursor:pointer;margin-left:auto}body>.target-search-dropdown .btn-clear-filters:hover,.target-search-dropdown .btn-clear-filters:hover{background:#e2e8f0;color:#212529}body>.target-search-dropdown .filter-row-multi,.target-search-dropdown .filter-row-multi{flex-direction:column;align-items:stretch;gap:.5rem}body>.target-search-dropdown .filter-subrow,.target-search-dropdown .filter-subrow{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}body>.target-search-dropdown .filter-range-group,body>.target-search-dropdown .filter-date-group,body>.target-search-dropdown .filter-select-group,.target-search-dropdown .filter-range-group,.target-search-dropdown .filter-date-group,.target-search-dropdown .filter-select-group{display:flex;align-items:center;gap:.25rem}body>.target-search-dropdown .filter-range-label,body>.target-search-dropdown .filter-date-label,body>.target-search-dropdown .filter-select-label,body>.target-search-dropdown .filter-row-label,.target-search-dropdown .filter-range-label,.target-search-dropdown .filter-date-label,.target-search-dropdown .filter-select-label,.target-search-dropdown .filter-row-label{font-size:.75rem;color:#6c757d;white-space:nowrap}body>.target-search-dropdown .filter-range-label i,body>.target-search-dropdown .filter-date-label i,body>.target-search-dropdown .filter-select-label i,body>.target-search-dropdown .filter-row-label i,.target-search-dropdown .filter-range-label i,.target-search-dropdown .filter-date-label i,.target-search-dropdown .filter-select-label i,.target-search-dropdown .filter-row-label i{margin-right:.25rem}body>.target-search-dropdown .filter-range-sep,.target-search-dropdown .filter-range-sep{color:#6c757d}body>.target-search-dropdown .filter-product-count-min,body>.target-search-dropdown .filter-product-count-max,body>.target-search-dropdown .filter-sales-min,body>.target-search-dropdown .filter-sales-max,body>.target-search-dropdown .filter-turnover-min,body>.target-search-dropdown .filter-turnover-max,body>.target-search-dropdown .filter-date-add-from,body>.target-search-dropdown .filter-date-add-to,body>.target-search-dropdown .filter-last-product-from,body>.target-search-dropdown .filter-last-product-to,.target-search-dropdown .filter-product-count-min,.target-search-dropdown .filter-product-count-max,.target-search-dropdown .filter-sales-min,.target-search-dropdown .filter-sales-max,.target-search-dropdown .filter-turnover-min,.target-search-dropdown .filter-turnover-max,.target-search-dropdown .filter-date-add-from,.target-search-dropdown .filter-date-add-to,.target-search-dropdown .filter-last-product-from,.target-search-dropdown .filter-last-product-to{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .filter-product-count-min:focus,body>.target-search-dropdown .filter-product-count-max:focus,body>.target-search-dropdown .filter-sales-min:focus,body>.target-search-dropdown .filter-sales-max:focus,body>.target-search-dropdown .filter-turnover-min:focus,body>.target-search-dropdown .filter-turnover-max:focus,body>.target-search-dropdown .filter-date-add-from:focus,body>.target-search-dropdown .filter-date-add-to:focus,body>.target-search-dropdown .filter-last-product-from:focus,body>.target-search-dropdown .filter-last-product-to:focus,.target-search-dropdown .filter-product-count-min:focus,.target-search-dropdown .filter-product-count-max:focus,.target-search-dropdown .filter-sales-min:focus,.target-search-dropdown .filter-sales-max:focus,.target-search-dropdown .filter-turnover-min:focus,.target-search-dropdown .filter-turnover-max:focus,.target-search-dropdown .filter-date-add-from:focus,.target-search-dropdown .filter-date-add-to:focus,.target-search-dropdown .filter-last-product-from:focus,.target-search-dropdown .filter-last-product-to:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .filter-product-count-min::placeholder,body>.target-search-dropdown .filter-product-count-max::placeholder,body>.target-search-dropdown .filter-sales-min::placeholder,body>.target-search-dropdown .filter-sales-max::placeholder,body>.target-search-dropdown .filter-turnover-min::placeholder,body>.target-search-dropdown .filter-turnover-max::placeholder,body>.target-search-dropdown .filter-date-add-from::placeholder,body>.target-search-dropdown .filter-date-add-to::placeholder,body>.target-search-dropdown .filter-last-product-from::placeholder,body>.target-search-dropdown .filter-last-product-to::placeholder,.target-search-dropdown .filter-product-count-min::placeholder,.target-search-dropdown .filter-product-count-max::placeholder,.target-search-dropdown .filter-sales-min::placeholder,.target-search-dropdown .filter-sales-max::placeholder,.target-search-dropdown .filter-turnover-min::placeholder,.target-search-dropdown .filter-turnover-max::placeholder,.target-search-dropdown .filter-date-add-from::placeholder,.target-search-dropdown .filter-date-add-to::placeholder,.target-search-dropdown .filter-last-product-from::placeholder,.target-search-dropdown .filter-last-product-to::placeholder{color:#adb5bd}body>.target-search-dropdown .filter-product-count-min,body>.target-search-dropdown .filter-product-count-max,body>.target-search-dropdown .filter-sales-min,body>.target-search-dropdown .filter-sales-max,body>.target-search-dropdown .filter-turnover-min,body>.target-search-dropdown .filter-turnover-max,body>.target-search-dropdown .filter-date-add-from,body>.target-search-dropdown .filter-date-add-to,body>.target-search-dropdown .filter-last-product-from,body>.target-search-dropdown .filter-last-product-to,.target-search-dropdown .filter-product-count-min,.target-search-dropdown .filter-product-count-max,.target-search-dropdown .filter-sales-min,.target-search-dropdown .filter-sales-max,.target-search-dropdown .filter-turnover-min,.target-search-dropdown .filter-turnover-max,.target-search-dropdown .filter-date-add-from,.target-search-dropdown .filter-date-add-to,.target-search-dropdown .filter-last-product-from,.target-search-dropdown .filter-last-product-to{width:70px;padding:.25rem .5rem;font-size:.75rem}body>.target-search-dropdown .filter-depth-select,body>.target-search-dropdown .filter-attribute-group-select,body>.target-search-dropdown .filter-feature-group-select,.target-search-dropdown .filter-depth-select,.target-search-dropdown .filter-attribute-group-select,.target-search-dropdown .filter-feature-group-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .filter-depth-select:focus,body>.target-search-dropdown .filter-attribute-group-select:focus,body>.target-search-dropdown .filter-feature-group-select:focus,.target-search-dropdown .filter-depth-select:focus,.target-search-dropdown .filter-attribute-group-select:focus,.target-search-dropdown .filter-feature-group-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .filter-depth-select::placeholder,body>.target-search-dropdown .filter-attribute-group-select::placeholder,body>.target-search-dropdown .filter-feature-group-select::placeholder,.target-search-dropdown .filter-depth-select::placeholder,.target-search-dropdown .filter-attribute-group-select::placeholder,.target-search-dropdown .filter-feature-group-select::placeholder{color:#adb5bd}body>.target-search-dropdown .filter-depth-select,body>.target-search-dropdown .filter-attribute-group-select,body>.target-search-dropdown .filter-feature-group-select,.target-search-dropdown .filter-depth-select,.target-search-dropdown .filter-attribute-group-select,.target-search-dropdown .filter-feature-group-select{padding:.25rem .5rem;font-size:.75rem;min-width:100px}body>.target-search-dropdown .filter-attributes-container,body>.target-search-dropdown .filter-features-container,body>.target-search-dropdown .filter-values-container,.target-search-dropdown .filter-attributes-container,.target-search-dropdown .filter-features-container,.target-search-dropdown .filter-values-container{display:flex;flex-wrap:wrap;gap:.25rem}body>.target-search-dropdown .filter-group-toggle,.target-search-dropdown .filter-group-toggle{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-group-toggle:focus,.target-search-dropdown .filter-group-toggle:focus{outline:none}body>.target-search-dropdown .filter-group-toggle,.target-search-dropdown .filter-group-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .filter-group-toggle:hover,.target-search-dropdown .filter-group-toggle:hover{background:#e9ecef;border-color:#cbd5e1}body>.target-search-dropdown .filter-group-toggle.active,.target-search-dropdown .filter-group-toggle.active{background:rgba(37,185,215,.1);border-color:#25b9d7;color:#25b9d7}body>.target-search-dropdown .filter-group-toggle.active .toggle-count,.target-search-dropdown .filter-group-toggle.active .toggle-count{color:#25b9d7}body>.target-search-dropdown .filter-group-toggle.has-selection,.target-search-dropdown .filter-group-toggle.has-selection{border-color:#28a745;background:rgba(40,167,69,.05)}body>.target-search-dropdown .filter-group-toggle.has-selection .toggle-count,.target-search-dropdown .filter-group-toggle.has-selection .toggle-count{color:#28a745;font-weight:600}body>.target-search-dropdown .filter-group-toggle .toggle-name,.target-search-dropdown .filter-group-toggle .toggle-name{font-weight:500}body>.target-search-dropdown .filter-group-toggle .toggle-count,.target-search-dropdown .filter-group-toggle .toggle-count{display:inline-flex;align-items:center;gap:.125rem;color:#6c757d;font-size:.65rem}body>.target-search-dropdown .filter-group-toggle .toggle-count i,.target-search-dropdown .filter-group-toggle .toggle-count i{font-size:10px;color:#25b9d7}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable,.target-search-dropdown .filter-group-toggle .toggle-count.clickable{cursor:pointer;padding:.125rem .25rem;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover,.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover{background:rgba(37,185,215,.1);color:#25b9d7}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover i,.target-search-dropdown .filter-group-toggle .toggle-count.clickable:hover i{color:#25b9d7}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open,.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open{background:#25b9d7;color:#fff}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open i,.target-search-dropdown .filter-group-toggle .toggle-count.clickable.popover-open i{color:#fff}body>.target-search-dropdown .filter-group-toggle .toggle-count.clickable.loading i,.target-search-dropdown .filter-group-toggle .toggle-count.clickable.loading i{animation:spin .6s linear infinite}body>.target-search-dropdown .filter-chip,body>.target-search-dropdown .filter-attr-chip,body>.target-search-dropdown .filter-feat-chip,.target-search-dropdown .filter-chip,.target-search-dropdown .filter-attr-chip,.target-search-dropdown .filter-feat-chip{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-chip:focus,.target-search-dropdown .filter-chip:focus,.target-search-dropdown .filter-attr-chip:focus,.target-search-dropdown .filter-feat-chip:focus{outline:none}body>.target-search-dropdown .filter-chip,body>.target-search-dropdown .filter-attr-chip,body>.target-search-dropdown .filter-feat-chip,.target-search-dropdown .filter-chip,.target-search-dropdown .filter-attr-chip,.target-search-dropdown .filter-feat-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#495057;background:#f1f5f9;border:1px solid rgba(0,0,0,0);border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out}body>.target-search-dropdown .filter-chip:hover,.target-search-dropdown .filter-chip:hover,.target-search-dropdown .filter-attr-chip:hover,.target-search-dropdown .filter-feat-chip:hover{background:#e2e8f0}body>.target-search-dropdown .filter-chip.active,.target-search-dropdown .filter-chip.active,.target-search-dropdown .active.filter-attr-chip,.target-search-dropdown .active.filter-feat-chip{background:#25b9d7;color:#fff}body>.target-search-dropdown .filter-row-values,.target-search-dropdown .filter-row-values{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#fff;border:1px solid #dee2e6;border-radius:.2rem}body>.target-search-dropdown .filter-row-values .filter-values-container,.target-search-dropdown .filter-row-values .filter-values-container{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;flex:1}body>.target-search-dropdown .filter-row-values .filter-values-label,.target-search-dropdown .filter-row-values .filter-values-label{font-size:.75rem;font-weight:600;color:#495057;white-space:nowrap}body>.target-search-dropdown .filter-row-values .btn-close-values,.target-search-dropdown .filter-row-values .btn-close-values{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-row-values .btn-close-values:focus,.target-search-dropdown .filter-row-values .btn-close-values:focus{outline:none}body>.target-search-dropdown .filter-row-values .btn-close-values,.target-search-dropdown .filter-row-values .btn-close-values{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:20px;height:20px;color:#6c757d;border-radius:.2rem}body>.target-search-dropdown .filter-row-values .btn-close-values:hover,.target-search-dropdown .filter-row-values .btn-close-values:hover{background:#e2e8f0;color:#212529}body>.target-search-dropdown .chip-name,.target-search-dropdown .chip-name{font-weight:500}body>.target-search-dropdown .chip-count,.target-search-dropdown .chip-count{font-size:.6rem;color:#6c757d;margin-left:.125rem}body>.target-search-dropdown .filter-chip.active .chip-count,.target-search-dropdown .filter-chip.active .chip-count,.target-search-dropdown .active.filter-attr-chip .chip-count,.target-search-dropdown .active.filter-feat-chip .chip-count{color:hsla(0,0%,100%,.8)}body>.target-search-dropdown .dropdown-content,.target-search-dropdown .dropdown-content{max-height:400px;overflow-y:auto}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar,.target-search-dropdown .dropdown-content::-webkit-scrollbar{width:6px;height:6px}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar-track,.target-search-dropdown .dropdown-content::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb,.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}body>.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb:hover,.target-search-dropdown .dropdown-content::-webkit-scrollbar-thumb:hover{background:#ced4da}body>.target-search-dropdown .dropdown-items,.target-search-dropdown .dropdown-items{display:flex;flex-direction:column;gap:.25rem;padding:.5rem}body>.target-search-dropdown .item-checkbox,.target-search-dropdown .item-checkbox{flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.dropdown-item.selected body>.target-search-dropdown .item-checkbox,.dropdown-item.selected .target-search-dropdown .item-checkbox{background:#25b9d7;border-color:#25b9d7}body>.target-search-dropdown .item-image,.target-search-dropdown .item-image{flex-shrink:0;width:40px;height:40px;object-fit:cover;border-radius:.2rem;background:#f1f5f9}body>.target-search-dropdown .item-info,.target-search-dropdown .item-info{flex:1;min-width:0}body>.target-search-dropdown .item-name,.target-search-dropdown .item-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .item-meta,.target-search-dropdown .item-meta{font-size:.75rem;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .dropdown-footer,.target-search-dropdown .dropdown-footer{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}body>.target-search-dropdown .dropdown-footer-info,.target-search-dropdown .dropdown-footer-info{font-size:.75rem;color:#6c757d}body>.target-search-dropdown .dropdown-footer-actions,.target-search-dropdown .dropdown-footer-actions{display:flex;align-items:center;gap:.5rem}body>.target-search-dropdown .btn-cancel-dropdown,.target-search-dropdown .btn-cancel-dropdown{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-cancel-dropdown:focus,.target-search-dropdown .btn-cancel-dropdown:focus{outline:none}body>.target-search-dropdown .btn-cancel-dropdown,.target-search-dropdown .btn-cancel-dropdown{padding:.375rem .75rem;font-size:.875rem;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer}body>.target-search-dropdown .btn-cancel-dropdown:hover,.target-search-dropdown .btn-cancel-dropdown:hover{background:#e9ecef}body>.target-search-dropdown .btn-cancel-dropdown kbd,.target-search-dropdown .btn-cancel-dropdown kbd{font-size:.65rem;padding:.125rem .25rem;background:#f1f5f9;border-radius:2px;color:#6c757d;margin-left:.25rem}body>.target-search-dropdown .btn-confirm-dropdown,.target-search-dropdown .btn-confirm-dropdown{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-confirm-dropdown:focus,.target-search-dropdown .btn-confirm-dropdown:focus{outline:none}body>.target-search-dropdown .btn-confirm-dropdown,.target-search-dropdown .btn-confirm-dropdown{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.875rem;color:#fff;background:#25b9d7;border:1px solid #25b9d7;border-radius:.2rem;cursor:pointer}body>.target-search-dropdown .btn-confirm-dropdown:hover,.target-search-dropdown .btn-confirm-dropdown:hover{background:#1a9ab7}body>.target-search-dropdown .btn-confirm-dropdown kbd,.target-search-dropdown .btn-confirm-dropdown kbd{font-size:.65rem;padding:.125rem .25rem;background:hsla(0,0%,100%,.2);border-radius:2px;color:hsla(0,0%,100%,.8)}body>.target-search-dropdown .filter-chips-row,.target-search-dropdown .filter-chips-row{display:flex;flex-wrap:wrap;gap:.25rem;padding:.25rem 1rem;border-bottom:1px solid #dee2e6}body>.target-search-dropdown .filter-chip,body>.target-search-dropdown .filter-attr-chip,body>.target-search-dropdown .filter-feat-chip,.target-search-dropdown .filter-chip,.target-search-dropdown .filter-attr-chip,.target-search-dropdown .filter-feat-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:#e9ecef;color:#495057;border-radius:50rem}body>.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-attr-chip .chip-remove,.target-search-dropdown .filter-feat-chip .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .filter-chip .chip-remove:focus,.target-search-dropdown .filter-chip .chip-remove:focus,.target-search-dropdown .filter-attr-chip .chip-remove:focus,.target-search-dropdown .filter-feat-chip .chip-remove:focus{outline:none}body>.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-chip .chip-remove,.target-search-dropdown .filter-attr-chip .chip-remove,.target-search-dropdown .filter-feat-chip .chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;color:#6c757d;border-radius:50%}body>.target-search-dropdown .filter-chip .chip-remove:hover,.target-search-dropdown .filter-chip .chip-remove:hover,.target-search-dropdown .filter-attr-chip .chip-remove:hover,.target-search-dropdown .filter-feat-chip .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}body>.target-search-dropdown .dropdown-empty,body>.target-search-dropdown .dropdown-loading,.target-search-dropdown .dropdown-empty,.target-search-dropdown .dropdown-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;text-align:center;color:#6c757d;font-size:.875rem}body>.target-search-dropdown .dropdown-empty i,body>.target-search-dropdown .dropdown-loading i,.target-search-dropdown .dropdown-empty i,.target-search-dropdown .dropdown-loading i{font-size:2rem;opacity:.5;margin-bottom:.5rem}body>.target-search-dropdown .search-history-panel,.target-search-dropdown .search-history-panel{display:none;padding:.5rem;background:#fff;border-bottom:1px solid #dee2e6}body>.target-search-dropdown .search-history-panel.show,.target-search-dropdown .search-history-panel.show{display:block}body>.target-search-dropdown .history-item,.target-search-dropdown .history-item{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border-radius:.2rem;cursor:pointer;transition:background .15s ease-in-out}body>.target-search-dropdown .history-item:hover,.target-search-dropdown .history-item:hover{background:#e9ecef}body>.target-search-dropdown .history-item i,.target-search-dropdown .history-item i{color:#6c757d;font-size:.875rem}body>.target-search-dropdown .history-item span,.target-search-dropdown .history-item span{flex:1;font-size:.875rem;color:#212529}body>.target-search-dropdown .history-item .btn-remove-history,body>.target-search-dropdown .history-item .btn-delete-history,.target-search-dropdown .history-item .btn-remove-history,.target-search-dropdown .history-item .btn-delete-history{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .history-item .btn-remove-history:focus,body>.target-search-dropdown .history-item .btn-delete-history:focus,.target-search-dropdown .history-item .btn-remove-history:focus,.target-search-dropdown .history-item .btn-delete-history:focus{outline:none}body>.target-search-dropdown .history-item .btn-remove-history,body>.target-search-dropdown .history-item .btn-delete-history,.target-search-dropdown .history-item .btn-remove-history,.target-search-dropdown .history-item .btn-delete-history{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .history-item .btn-remove-history:hover,body>.target-search-dropdown .history-item .btn-delete-history:hover,.target-search-dropdown .history-item .btn-remove-history:hover,.target-search-dropdown .history-item .btn-delete-history:hover{background:#e2e8f0;color:#dc3545}body>.target-search-dropdown .search-history-list,.target-search-dropdown .search-history-list{display:flex;flex-direction:column;gap:.25rem}body>.target-search-dropdown .results-header,.target-search-dropdown .results-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-size:.75rem;font-weight:600;color:#495057}body>.target-search-dropdown .results-header .header-spacer,.target-search-dropdown .results-header .header-spacer{width:58px;flex-shrink:0}body>.target-search-dropdown .results-header .header-col,.target-search-dropdown .results-header .header-col{flex-shrink:0;width:70px;text-align:right}body>.target-search-dropdown .results-header .header-col-name,.target-search-dropdown .results-header .header-col-name{flex:1;text-align:left}body>.target-search-dropdown .dropdown-results,.target-search-dropdown .dropdown-results{padding:.5rem;background:#fff;min-height:200px}body>.target-search-dropdown .dropdown-item,.target-search-dropdown .dropdown-item{position:relative;display:flex;align-items:center;gap:.5rem;padding:.5rem 0;background:#fff;border:none;border-bottom:1px solid #dee2e6;border-radius:0;cursor:pointer;transition:background .15s ease-in-out}body>.target-search-dropdown .dropdown-item:last-child,.target-search-dropdown .dropdown-item:last-child{border-bottom:none}body>.target-search-dropdown .dropdown-item:hover,.target-search-dropdown .dropdown-item:hover{background:#e9ecef}body>.target-search-dropdown .dropdown-item.selected,.target-search-dropdown .dropdown-item.selected{background:rgba(37,185,215,.1)}body>.target-search-dropdown .dropdown-item.selected .result-checkbox,.target-search-dropdown .dropdown-item.selected .result-checkbox{background:#25b9d7;border-color:#25b9d7;color:#fff}body>.target-search-dropdown .dropdown-item.selected .result-checkbox i,.target-search-dropdown .dropdown-item.selected .result-checkbox i{display:block}body>.target-search-dropdown .dropdown-item.disabled,.target-search-dropdown .dropdown-item.disabled{opacity:.5;cursor:not-allowed}body>.target-search-dropdown .result-checkbox,.target-search-dropdown .result-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;background:#fff;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}body>.target-search-dropdown .result-checkbox i,.target-search-dropdown .result-checkbox i{display:none;font-size:10px}body>.target-search-dropdown.view-cols-2 .dropdown-results,.target-search-dropdown.view-cols-2 .dropdown-results{display:grid;grid-template-columns:repeat(2, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-3 .dropdown-results,.target-search-dropdown.view-cols-3 .dropdown-results{display:grid;grid-template-columns:repeat(3, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-4 .dropdown-results,.target-search-dropdown.view-cols-4 .dropdown-results{display:grid;grid-template-columns:repeat(4, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-5 .dropdown-results,.target-search-dropdown.view-cols-5 .dropdown-results{display:grid;grid-template-columns:repeat(5, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-6 .dropdown-results,.target-search-dropdown.view-cols-6 .dropdown-results{display:grid;grid-template-columns:repeat(6, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-7 .dropdown-results,.target-search-dropdown.view-cols-7 .dropdown-results{display:grid;grid-template-columns:repeat(7, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-8 .dropdown-results,.target-search-dropdown.view-cols-8 .dropdown-results{display:grid;grid-template-columns:repeat(8, 1fr);gap:.5rem}body>.target-search-dropdown.view-cols-2 .dropdown-item,body>.target-search-dropdown.view-cols-3 .dropdown-item,body>.target-search-dropdown.view-cols-4 .dropdown-item,body>.target-search-dropdown.view-cols-5 .dropdown-item,body>.target-search-dropdown.view-cols-6 .dropdown-item,body>.target-search-dropdown.view-cols-7 .dropdown-item,body>.target-search-dropdown.view-cols-8 .dropdown-item,.target-search-dropdown.view-cols-2 .dropdown-item,.target-search-dropdown.view-cols-3 .dropdown-item,.target-search-dropdown.view-cols-4 .dropdown-item,.target-search-dropdown.view-cols-5 .dropdown-item,.target-search-dropdown.view-cols-6 .dropdown-item,.target-search-dropdown.view-cols-7 .dropdown-item,.target-search-dropdown.view-cols-8 .dropdown-item{flex-direction:column;align-items:center;text-align:center;padding:0;border:1px solid #dee2e6;border-radius:.2rem}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-checkbox,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-checkbox,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-checkbox,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-checkbox,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-checkbox,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-checkbox,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-2 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-3 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-4 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-5 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-6 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-7 .dropdown-item .result-checkbox,.target-search-dropdown.view-cols-8 .dropdown-item .result-checkbox{position:absolute;top:.25rem;left:.25rem}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-2 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-icon,.target-search-dropdown.view-cols-2 .dropdown-item .result-image,.target-search-dropdown.view-cols-2 .dropdown-item .result-icon,.target-search-dropdown.view-cols-3 .dropdown-item .result-image,.target-search-dropdown.view-cols-3 .dropdown-item .result-icon,.target-search-dropdown.view-cols-4 .dropdown-item .result-image,.target-search-dropdown.view-cols-4 .dropdown-item .result-icon,.target-search-dropdown.view-cols-5 .dropdown-item .result-image,.target-search-dropdown.view-cols-5 .dropdown-item .result-icon,.target-search-dropdown.view-cols-6 .dropdown-item .result-image,.target-search-dropdown.view-cols-6 .dropdown-item .result-icon,.target-search-dropdown.view-cols-7 .dropdown-item .result-image,.target-search-dropdown.view-cols-7 .dropdown-item .result-icon,.target-search-dropdown.view-cols-8 .dropdown-item .result-image,.target-search-dropdown.view-cols-8 .dropdown-item .result-icon{width:48px;height:48px;margin-bottom:.25rem}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-info,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-info,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-info,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-info,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-info,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-info,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-info,.target-search-dropdown.view-cols-2 .dropdown-item .result-info,.target-search-dropdown.view-cols-3 .dropdown-item .result-info,.target-search-dropdown.view-cols-4 .dropdown-item .result-info,.target-search-dropdown.view-cols-5 .dropdown-item .result-info,.target-search-dropdown.view-cols-6 .dropdown-item .result-info,.target-search-dropdown.view-cols-7 .dropdown-item .result-info,.target-search-dropdown.view-cols-8 .dropdown-item .result-info{width:100%}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-name,.target-search-dropdown.view-cols-2 .dropdown-item .result-name,.target-search-dropdown.view-cols-3 .dropdown-item .result-name,.target-search-dropdown.view-cols-4 .dropdown-item .result-name,.target-search-dropdown.view-cols-5 .dropdown-item .result-name,.target-search-dropdown.view-cols-6 .dropdown-item .result-name,.target-search-dropdown.view-cols-7 .dropdown-item .result-name,.target-search-dropdown.view-cols-8 .dropdown-item .result-name{font-size:.75rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-subtitle,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-subtitle,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-subtitle,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-subtitle,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-subtitle,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-subtitle,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-2 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-3 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-4 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-5 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-6 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-7 .dropdown-item .result-subtitle,.target-search-dropdown.view-cols-8 .dropdown-item .result-subtitle{display:none}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-col,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-col,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-col,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-col,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-col,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-col,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-col,.target-search-dropdown.view-cols-2 .dropdown-item .result-col,.target-search-dropdown.view-cols-3 .dropdown-item .result-col,.target-search-dropdown.view-cols-4 .dropdown-item .result-col,.target-search-dropdown.view-cols-5 .dropdown-item .result-col,.target-search-dropdown.view-cols-6 .dropdown-item .result-col,.target-search-dropdown.view-cols-7 .dropdown-item .result-col,.target-search-dropdown.view-cols-8 .dropdown-item .result-col{display:none}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info,.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info{display:flex;flex-wrap:wrap;justify-content:center;gap:.25rem;margin-top:.25rem;font-size:.65rem}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-price,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-price,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-price,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-price,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-price,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-price,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-price,.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-price{color:#212529;font-weight:600}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-stock,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-stock,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-stock,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-stock,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock,.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock{color:#6c757d}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-stock.stock-out,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-stock.stock-out,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-stock.stock-out,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-stock.stock-out,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock.stock-out,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock.stock-out,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock.stock-out,.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock.stock-out{color:#dc3545}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-stock.stock-low,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-stock.stock-low,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-stock.stock-low,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-stock.stock-low,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock.stock-low,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock.stock-low,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-stock.stock-low,.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-stock.stock-low{color:#ffc107}body>.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-discount,body>.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-discount,body>.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-discount,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-discount,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-discount,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-discount,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-2 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-3 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-4 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-5 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-6 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-7 .dropdown-item .result-grid-info .grid-discount,.target-search-dropdown.view-cols-8 .dropdown-item .result-grid-info .grid-discount{color:#28a745;font-weight:500}body>.target-search-dropdown.view-cols-2 .results-header,body>.target-search-dropdown.view-cols-3 .results-header,body>.target-search-dropdown.view-cols-4 .results-header,body>.target-search-dropdown.view-cols-5 .results-header,body>.target-search-dropdown.view-cols-6 .results-header,body>.target-search-dropdown.view-cols-7 .results-header,body>.target-search-dropdown.view-cols-8 .results-header,.target-search-dropdown.view-cols-2 .results-header,.target-search-dropdown.view-cols-3 .results-header,.target-search-dropdown.view-cols-4 .results-header,.target-search-dropdown.view-cols-5 .results-header,.target-search-dropdown.view-cols-6 .results-header,.target-search-dropdown.view-cols-7 .results-header,.target-search-dropdown.view-cols-8 .results-header{display:none}body>.target-search-dropdown.view-cols-5 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-5 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-icon,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-image,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-icon,.target-search-dropdown.view-cols-5 .dropdown-item .result-image,.target-search-dropdown.view-cols-5 .dropdown-item .result-icon,.target-search-dropdown.view-cols-6 .dropdown-item .result-image,.target-search-dropdown.view-cols-6 .dropdown-item .result-icon,.target-search-dropdown.view-cols-7 .dropdown-item .result-image,.target-search-dropdown.view-cols-7 .dropdown-item .result-icon,.target-search-dropdown.view-cols-8 .dropdown-item .result-image,.target-search-dropdown.view-cols-8 .dropdown-item .result-icon{width:40px;height:40px}body>.target-search-dropdown.view-cols-5 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-6 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-7 .dropdown-item .result-name,body>.target-search-dropdown.view-cols-8 .dropdown-item .result-name,.target-search-dropdown.view-cols-5 .dropdown-item .result-name,.target-search-dropdown.view-cols-6 .dropdown-item .result-name,.target-search-dropdown.view-cols-7 .dropdown-item .result-name,.target-search-dropdown.view-cols-8 .dropdown-item .result-name{font-size:.65rem}body>.target-search-dropdown .result-item-product,.target-search-dropdown .result-item-product{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}body>.target-search-dropdown .result-item-image,body>.target-search-dropdown .result-image,.target-search-dropdown .result-item-image,.target-search-dropdown .result-image{flex-shrink:0;width:40px;height:40px;overflow:hidden;border-radius:.2rem;background:#f1f5f9}body>.target-search-dropdown .result-item-image img,body>.target-search-dropdown .result-image img,.target-search-dropdown .result-item-image img,.target-search-dropdown .result-image img{width:100%;height:100%;object-fit:cover}body>.target-search-dropdown .result-icon,.target-search-dropdown .result-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:40px;height:40px;background:#f1f5f9;border-radius:.2rem;color:#6c757d}body>.target-search-dropdown .result-icon i,.target-search-dropdown .result-icon i{font-size:16px}body>.target-search-dropdown .result-item-info,body>.target-search-dropdown .result-info,.target-search-dropdown .result-item-info,.target-search-dropdown .result-info{flex:1;min-width:0}body>.target-search-dropdown .result-item-name,body>.target-search-dropdown .result-name,.target-search-dropdown .result-item-name,.target-search-dropdown .result-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .result-item-meta,body>.target-search-dropdown .result-subtitle,.target-search-dropdown .result-item-meta,.target-search-dropdown .result-subtitle{font-size:.75rem;color:#6c757d}body>.target-search-dropdown .subtitle-line,.target-search-dropdown .subtitle-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .subtitle-line-primary,.target-search-dropdown .subtitle-line-primary{color:#495057}body>.target-search-dropdown .subtitle-line-secondary,.target-search-dropdown .subtitle-line-secondary{color:#6c757d;font-size:11px}body>.target-search-dropdown .result-col,.target-search-dropdown .result-col{flex-shrink:0;width:70px;text-align:right;font-size:.75rem}body>.target-search-dropdown .result-col-price,.target-search-dropdown .result-col-price{color:#495057}body>.target-search-dropdown .result-col-sale,.target-search-dropdown .result-col-sale{color:#dc3545;font-weight:600}body>.target-search-dropdown .result-col-stock .col-value.stock-ok,.target-search-dropdown .result-col-stock .col-value.stock-ok{color:#28a745}body>.target-search-dropdown .result-col-stock .col-value.stock-low,.target-search-dropdown .result-col-stock .col-value.stock-low{color:#ffc107}body>.target-search-dropdown .result-col-stock .col-value.stock-out,.target-search-dropdown .result-col-stock .col-value.stock-out{color:#dc3545}body>.target-search-dropdown .result-col-sales,.target-search-dropdown .result-col-sales{color:#6c757d}body>.target-search-dropdown .col-value,.target-search-dropdown .col-value{display:block}body>.target-search-dropdown .result-item-checkbox,body>.target-search-dropdown .result-checkbox,.target-search-dropdown .result-item-checkbox,.target-search-dropdown .result-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:18px;height:18px;border:2px solid #ced4da;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .result-item-checkbox i,body>.target-search-dropdown .result-checkbox i,.target-search-dropdown .result-item-checkbox i,.target-search-dropdown .result-checkbox i{display:none;font-size:10px;color:#fff}.dropdown-result-item.selected body>.target-search-dropdown .result-item-checkbox,.dropdown-item.selected body>.target-search-dropdown .result-item-checkbox,.dropdown-result-item.selected body>.target-search-dropdown .result-checkbox,.dropdown-item.selected body>.target-search-dropdown .result-checkbox,.dropdown-result-item.selected .target-search-dropdown .result-item-checkbox,.dropdown-item.selected .target-search-dropdown .result-item-checkbox,.dropdown-result-item.selected .target-search-dropdown .result-checkbox,.dropdown-item.selected .target-search-dropdown .result-checkbox{background:#25b9d7;border-color:#25b9d7}.dropdown-result-item.selected body>.target-search-dropdown .result-item-checkbox i,.dropdown-item.selected body>.target-search-dropdown .result-item-checkbox i,.dropdown-result-item.selected body>.target-search-dropdown .result-checkbox i,.dropdown-item.selected body>.target-search-dropdown .result-checkbox i,.dropdown-result-item.selected .target-search-dropdown .result-item-checkbox i,.dropdown-item.selected .target-search-dropdown .result-item-checkbox i,.dropdown-result-item.selected .target-search-dropdown .result-checkbox i,.dropdown-item.selected .target-search-dropdown .result-checkbox i{display:block}body>.target-search-dropdown .no-results,.target-search-dropdown .no-results{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}body>.target-search-dropdown .no-results i,.target-search-dropdown .no-results i{font-size:1.25rem;opacity:.5}body>.target-search-dropdown .load-more-controls,.target-search-dropdown .load-more-controls{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.75rem;color:#6c757d}body>.target-search-dropdown .load-more-controls .load-more-label,body>.target-search-dropdown .load-more-controls .load-more-of,.target-search-dropdown .load-more-controls .load-more-label,.target-search-dropdown .load-more-controls .load-more-of{white-space:nowrap}body>.target-search-dropdown .load-more-controls .remaining-count,.target-search-dropdown .load-more-controls .remaining-count{font-weight:600;color:#495057}body>.target-search-dropdown .load-more-controls .load-more-select,.target-search-dropdown .load-more-controls .load-more-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}body>.target-search-dropdown .load-more-controls .load-more-select:focus,.target-search-dropdown .load-more-controls .load-more-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}body>.target-search-dropdown .load-more-controls .load-more-select::placeholder,.target-search-dropdown .load-more-controls .load-more-select::placeholder{color:#adb5bd}body>.target-search-dropdown .load-more-controls .load-more-select,.target-search-dropdown .load-more-controls .load-more-select{padding:.25rem .5rem;font-size:.75rem;min-width:60px}body>.target-search-dropdown .load-more-controls .btn-load-more,.target-search-dropdown .load-more-controls .btn-load-more{display:flex;align-items:center;justify-content:center;padding:.25rem;margin:0;border:none;color:#25b9d7;background:rgba(37,185,215,.1) !important;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out;font:inherit}body>.target-search-dropdown .load-more-controls .btn-load-more i,.target-search-dropdown .load-more-controls .btn-load-more i{font-size:14px}body>.target-search-dropdown .load-more-controls .btn-load-more:hover,.target-search-dropdown .load-more-controls .btn-load-more:hover{background:rgba(37,185,215,.2) !important}body>.target-search-dropdown .dropdown-load-more,.target-search-dropdown .dropdown-load-more{display:flex;justify-content:center;padding:1rem;border-top:1px solid #dee2e6}body>.target-search-dropdown .dropdown-load-more .load-more-btn,.target-search-dropdown .dropdown-load-more .load-more-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .dropdown-load-more .load-more-btn:focus,.target-search-dropdown .dropdown-load-more .load-more-btn:focus{outline:none}body>.target-search-dropdown .dropdown-load-more .load-more-btn,.target-search-dropdown .dropdown-load-more .load-more-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:#25b9d7;background:rgba(37,185,215,.1);border-radius:.25rem;transition:all .15s ease-in-out}body>.target-search-dropdown .dropdown-load-more .load-more-btn:hover,.target-search-dropdown .dropdown-load-more .load-more-btn:hover{background:rgba(37,185,215,.2)}body>.target-search-dropdown .dropdown-load-more .load-more-btn.loading,.target-search-dropdown .dropdown-load-more .load-more-btn.loading{opacity:.7;cursor:wait}body>.target-search-dropdown .dropdown-body,.target-search-dropdown .dropdown-body{max-height:400px;overflow-y:auto}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar,.target-search-dropdown .dropdown-body::-webkit-scrollbar{width:6px;height:6px}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar-track,.target-search-dropdown .dropdown-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb,.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}body>.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb:hover,.target-search-dropdown .dropdown-body::-webkit-scrollbar-thumb:hover{background:#ced4da}body>.target-search-dropdown .tree-container,.target-search-dropdown .tree-container{padding:.5rem}body>.target-search-dropdown .tree-loading,.target-search-dropdown .tree-loading{display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:#6c757d;font-size:.875rem}body>.target-search-dropdown .tree-loading i,.target-search-dropdown .tree-loading i{animation:spin .6s linear infinite}body>.target-search-dropdown .tree-item,.target-search-dropdown .tree-item{display:flex;align-items:center;gap:.25rem;padding:.375rem .5rem;border-radius:.2rem;cursor:pointer;transition:background-color .15s ease-in-out}body>.target-search-dropdown .tree-item:hover,.target-search-dropdown .tree-item:hover{background:#e9ecef}body>.target-search-dropdown .tree-item.selected,.target-search-dropdown .tree-item.selected{background:rgba(37,185,215,.1)}body>.target-search-dropdown .tree-item.selected .tree-checkbox,.target-search-dropdown .tree-item.selected .tree-checkbox{background:#25b9d7;border-color:#25b9d7}body>.target-search-dropdown .tree-item.selected .tree-checkbox i,.target-search-dropdown .tree-item.selected .tree-checkbox i{display:block}body>.target-search-dropdown .tree-toggle,.target-search-dropdown .tree-toggle{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#6c757d;cursor:pointer;transition:transform .15s ease-in-out}body>.target-search-dropdown .tree-toggle i,.target-search-dropdown .tree-toggle i{font-size:12px}body>.target-search-dropdown .tree-toggle-placeholder,.target-search-dropdown .tree-toggle-placeholder{width:16px;height:16px}body>.target-search-dropdown .btn-select-children,.target-search-dropdown .btn-select-children{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}body>.target-search-dropdown .btn-select-children:focus,.target-search-dropdown .btn-select-children:focus{outline:none}body>.target-search-dropdown .btn-select-children,.target-search-dropdown .btn-select-children{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}body>.target-search-dropdown .btn-select-children:hover,.target-search-dropdown .btn-select-children:hover{background:rgba(37,185,215,.1)}body>.target-search-dropdown .btn-select-children i,.target-search-dropdown .btn-select-children i{font-size:12px}body>.target-search-dropdown .btn-select-children-placeholder,.target-search-dropdown .btn-select-children-placeholder{width:18px;height:18px}body>.target-search-dropdown .tree-checkbox,.target-search-dropdown .tree-checkbox{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:16px;height:16px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}body>.target-search-dropdown .tree-checkbox i,.target-search-dropdown .tree-checkbox i{display:none;font-size:10px;color:#fff}body>.target-search-dropdown .tree-icon,.target-search-dropdown .tree-icon{display:flex;align-items:center;justify-content:center;width:16px;color:#6c757d}body>.target-search-dropdown .tree-icon i,.target-search-dropdown .tree-icon i{font-size:14px}body>.target-search-dropdown .tree-info,.target-search-dropdown .tree-info{display:flex;align-items:center;gap:.25rem;flex:1;min-width:0}body>.target-search-dropdown .tree-name,.target-search-dropdown .tree-name{font-size:.875rem;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body>.target-search-dropdown .tree-subtitle,.target-search-dropdown .tree-subtitle{font-size:.75rem;color:#6c757d}.target-search-dropdown .dropdown-results{max-height:400px;overflow-y:auto;padding:.5rem}.target-search-dropdown .dropdown-results::-webkit-scrollbar{width:6px;height:6px}.target-search-dropdown .dropdown-results::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-search-dropdown .dropdown-results::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-search-dropdown .dropdown-results::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-search-dropdown .results-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 1rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-size:.75rem;font-weight:600;color:#495057}.target-search-dropdown .results-header .header-spacer{width:58px;flex-shrink:0}.target-search-dropdown .results-header .header-col{flex-shrink:0;width:70px;text-align:right}.target-search-dropdown .results-header .header-col-name{flex:1;text-align:left}.target-search-dropdown:not(.view-list) .results-header,.target-search-dropdown.view-tree .results-header{display:none}.target-search-dropdown .result-item-product{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.target-search-dropdown .result-col{flex-shrink:0;width:70px;text-align:right;font-size:.75rem}.target-search-dropdown .result-col-price{color:#495057}.target-search-dropdown .result-col-sale{color:#dc3545;font-weight:600}.target-search-dropdown .result-col-stock .col-value.stock-ok{color:#28a745}.target-search-dropdown .result-col-stock .col-value.stock-low{color:#ffc107}.target-search-dropdown .result-col-stock .col-value.stock-out{color:#dc3545}.target-search-dropdown .result-col-sales{color:#6c757d}.target-search-dropdown .dropdown-item{display:flex;align-items:center;gap:.5rem;padding:0;border:none;border-bottom:1px solid #dee2e6;border-radius:0;cursor:pointer;transition:background-color .15s ease-in-out}.target-search-dropdown .dropdown-item:last-child{border-bottom:none}.target-search-dropdown .dropdown-item:hover{background:#e9ecef}.target-search-dropdown .dropdown-item.selected{background:rgba(37,185,215,.1)}.target-search-dropdown .result-checkbox{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border:2px solid #ced4da;border-radius:3px;transition:all .15s ease-in-out}.target-search-dropdown .result-checkbox i{font-size:10px;color:rgba(0,0,0,0)}.dropdown-item.selected .target-search-dropdown .result-checkbox{background:#25b9d7;border-color:#25b9d7}.dropdown-item.selected .target-search-dropdown .result-checkbox i{color:#fff}.target-search-dropdown .result-image{flex-shrink:0;width:40px;height:40px;overflow:hidden;border-radius:.2rem;background:#f1f5f9}.target-search-dropdown .result-image img{width:100%;height:100%;object-fit:cover}.target-search-dropdown .result-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#f1f5f9;border-radius:.2rem}.target-search-dropdown .result-icon i{font-size:16px;color:#6c757d}.target-search-dropdown .result-info{flex:1;min-width:0}.target-search-dropdown .result-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-search-dropdown .result-subtitle{font-size:.75rem;color:#6c757d}.target-search-dropdown .subtitle-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-search-dropdown .subtitle-line-primary{color:#495057}.target-search-dropdown .subtitle-line-secondary{color:#6c757d;font-size:11px}.target-search-dropdown[class*=view-cols-] .result-col,.target-search-dropdown.view-tree .result-col{display:none}.target-search-dropdown .entity-search-box{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;background:#fff;border:none;border-bottom:1px solid #dee2e6;border-radius:0}.target-search-dropdown .entity-search-box .entity-search-icon{color:#6c757d;flex-shrink:0}.target-search-dropdown .entity-search-box input.entity-search-input,.target-search-dropdown .entity-search-box input.entity-search-input[type=text]{flex:1;min-width:0;width:auto !important;max-width:none !important;height:auto;padding:0;margin:0;border:none !important;outline:none;background:rgba(0,0,0,0) !important;font-size:.875rem;color:#212529;box-shadow:none !important}.target-search-dropdown .entity-search-box input.entity-search-input::placeholder,.target-search-dropdown .entity-search-box input.entity-search-input[type=text]::placeholder{color:#6c757d}.target-search-dropdown .entity-search-box input.entity-search-input:focus,.target-search-dropdown .entity-search-box input.entity-search-input[type=text]:focus{border:none !important;box-shadow:none !important;outline:none}.target-search-dropdown .entity-search-box .search-loading{color:#6c757d}body>.target-search-dropdown .dropdown-item{border:none;border-radius:0}body>.target-search-dropdown .dropdown-item:not(:last-child){border-bottom:1px solid #dee2e6}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.target-conditions-trait .entity-chips,.entity-selector-trait .entity-chips{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem 0;min-height:32px}.target-conditions-trait .entity-chips:empty,.entity-selector-trait .entity-chips:empty{display:none}.target-conditions-trait .entity-chip,.entity-selector-trait .entity-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:#f1f5f9;color:#495057;font-size:.75rem;font-weight:500;border-radius:50rem;max-width:200px;transition:all .15s ease-in-out}.target-conditions-trait .entity-chip:hover,.entity-selector-trait .entity-chip:hover{background:#e2e8f0}.target-conditions-trait .entity-chip.has-image,.entity-selector-trait .entity-chip.has-image{padding-left:.25rem}.target-conditions-trait .chip-image,.entity-selector-trait .chip-image{width:20px;height:20px;object-fit:cover;border-radius:50%;flex-shrink:0}.target-conditions-trait .chip-icon,.entity-selector-trait .chip-icon{font-size:12px;color:#6c757d;flex-shrink:0}.target-conditions-trait .chip-text,.target-conditions-trait .chip-name,.entity-selector-trait .chip-text,.entity-selector-trait .chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .chip-remove,.entity-selector-trait .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .chip-remove:focus,.entity-selector-trait .chip-remove:focus{outline:none}.target-conditions-trait .chip-remove,.entity-selector-trait .chip-remove{display:flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:.125rem;color:#6c757d;border-radius:50%;flex-shrink:0;transition:all .15s ease-in-out}.target-conditions-trait .chip-remove:hover,.entity-selector-trait .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}.target-conditions-trait .chip-remove i,.entity-selector-trait .chip-remove i{font-size:10px}.target-conditions-trait .entity-chip.chip-primary,.entity-selector-trait .entity-chip.chip-primary{background:rgba(37,185,215,.1);color:#25b9d7}.target-conditions-trait .entity-chip.chip-primary:hover,.entity-selector-trait .entity-chip.chip-primary:hover{background:rgba(37,185,215,.2)}.target-conditions-trait .entity-chip.chip-success,.entity-selector-trait .entity-chip.chip-success{background:#d4edda;color:#1e7e34}.target-conditions-trait .entity-chip.chip-success:hover,.entity-selector-trait .entity-chip.chip-success:hover{background:rgba(40,167,69,.2)}.target-conditions-trait .entity-chip.chip-danger,.entity-selector-trait .entity-chip.chip-danger{background:#f8d7da;color:#dc3545}.target-conditions-trait .entity-chip.chip-danger:hover,.entity-selector-trait .entity-chip.chip-danger:hover{background:rgba(220,53,69,.2)}.target-conditions-trait .entity-chip.chip-warning,.entity-selector-trait .entity-chip.chip-warning{background:#fff3cd;color:#a07800}.target-conditions-trait .entity-chip.chip-warning:hover,.entity-selector-trait .entity-chip.chip-warning:hover{background:rgba(255,193,7,.3)}.target-conditions-trait .entity-chip.loading,.target-conditions-trait .entity-chip-loading,.entity-selector-trait .entity-chip.loading,.entity-selector-trait .entity-chip-loading{opacity:.7}.target-conditions-trait .entity-chip.loading .chip-remove,.target-conditions-trait .entity-chip-loading .chip-remove,.entity-selector-trait .entity-chip.loading .chip-remove,.entity-selector-trait .entity-chip-loading .chip-remove{display:none}.target-conditions-trait .entity-chip.loading .chip-icon i,.target-conditions-trait .entity-chip-loading .chip-icon i,.entity-selector-trait .entity-chip.loading .chip-icon i,.entity-selector-trait .entity-chip-loading .chip-icon i{animation:spin .6s linear infinite}.target-conditions-trait .entity-chip.chip-hidden,.entity-selector-trait .entity-chip.chip-hidden{display:none}.target-conditions-trait .entity-chips.chips-collapsed,.target-conditions-trait .entity-chips.chips-expanded,.entity-selector-trait .entity-chips.chips-collapsed,.entity-selector-trait .entity-chips.chips-expanded{position:relative}.target-conditions-trait .chips-show-more-toggle,.entity-selector-trait .chips-show-more-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;color:#25b9d7;font-size:.75rem;font-weight:500;cursor:pointer;transition:color .15s ease-in-out}.target-conditions-trait .chips-show-more-toggle:hover,.entity-selector-trait .chips-show-more-toggle:hover{color:#1a9ab7}.target-conditions-trait .chips-show-more-toggle i,.entity-selector-trait .chips-show-more-toggle i{font-size:10px}.target-conditions-trait .chips-more,.entity-selector-trait .chips-more{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem;background:#e2e8f0;color:#495057;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .chips-more:hover,.entity-selector-trait .chips-more:hover{background:#cbd5e1}.target-conditions-trait .chip-add-btn,.entity-selector-trait .chip-add-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .chip-add-btn:focus,.entity-selector-trait .chip-add-btn:focus{outline:none}.target-conditions-trait .chip-add-btn,.entity-selector-trait .chip-add-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:rgba(0,0,0,0);color:#25b9d7;font-size:.75rem;font-weight:500;border:1px dashed #25b9d7;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .chip-add-btn:hover,.entity-selector-trait .chip-add-btn:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .chip-add-btn i,.entity-selector-trait .chip-add-btn i{font-size:10px}.target-conditions-trait .entity-chips.inline,.entity-selector-trait .entity-chips.inline{display:inline-flex;padding:0;min-height:auto}.target-conditions-trait .entity-chips.inline .entity-chip,.entity-selector-trait .entity-chips.inline .entity-chip{padding:.125rem .375rem;font-size:11px}.target-conditions-trait .selected-chips-container,.entity-selector-trait .selected-chips-container{display:flex;flex-direction:column;gap:.25rem}.target-conditions-trait .selected-chips-label,.entity-selector-trait .selected-chips-label{font-size:.75rem;font-weight:500;color:#6c757d}.target-conditions-trait .entity-chip.chip-pattern,.entity-selector-trait .entity-chip.chip-pattern{background:#fef3c7;color:#92400e;font-family:monospace}.target-conditions-trait .entity-chip.chip-pattern:hover,.entity-selector-trait .entity-chip.chip-pattern:hover{background:#fde68a}.target-conditions-trait .entity-chip.chip-pattern .chip-icon,.entity-selector-trait .entity-chip.chip-pattern .chip-icon{color:#d97706}.target-conditions-trait .entity-chip.chip-range,.target-conditions-trait .range-chip,.entity-selector-trait .entity-chip.chip-range,.entity-selector-trait .range-chip{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:#ecfeff;color:#0891b2;font-size:.75rem;font-weight:500;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .entity-chip.chip-range:hover,.target-conditions-trait .range-chip:hover,.entity-selector-trait .entity-chip.chip-range:hover,.entity-selector-trait .range-chip:hover{background:#cffafe}.target-conditions-trait .range-chip-text,.entity-selector-trait .range-chip-text{font-family:monospace}.target-conditions-trait .btn-remove-range,.entity-selector-trait .btn-remove-range{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-range:focus,.entity-selector-trait .btn-remove-range:focus{outline:none}.target-conditions-trait .btn-remove-range,.entity-selector-trait .btn-remove-range{display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#0891b2;border-radius:50%;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-range:hover,.entity-selector-trait .btn-remove-range:hover{background:rgba(0,0,0,.1);color:#dc3545}.target-conditions-trait .btn-remove-range i,.entity-selector-trait .btn-remove-range i{font-size:10px}.target-conditions-trait .multi-range-chips,.entity-selector-trait .multi-range-chips{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:.25rem}.target-conditions-trait .multi-range-chips:empty,.entity-selector-trait .multi-range-chips:empty{display:none}.target-conditions-trait .pattern-chips,.entity-selector-trait .pattern-chips{display:flex;flex-wrap:wrap;gap:.25rem;padding:.5rem 0;min-height:32px}.target-conditions-trait .pattern-chips:empty::before,.entity-selector-trait .pattern-chips:empty::before{content:attr(data-placeholder);color:#6c757d;font-size:.75rem;font-style:italic}.target-conditions-trait .pattern-tag,.entity-selector-trait .pattern-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#fef3c7;color:#92400e;font-size:.75rem;font-weight:500;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .pattern-tag:hover,.entity-selector-trait .pattern-tag:hover{background:#fde68a}.target-conditions-trait .pattern-tag.case-sensitive .case-icon,.entity-selector-trait .pattern-tag.case-sensitive .case-icon{color:#28a745;font-weight:700}.target-conditions-trait .pattern-tag.draft-tag,.entity-selector-trait .pattern-tag.draft-tag{background:#fff;border:1px solid #dee2e6;padding:0;flex:1;min-width:150px}.target-conditions-trait .pattern-tag.draft-tag:hover,.entity-selector-trait .pattern-tag.draft-tag:hover{background:#fff}.target-conditions-trait .pattern-tag.draft-tag .pattern-input,.entity-selector-trait .pattern-tag.draft-tag .pattern-input{flex:1;min-width:100px;padding:.375rem;border:0;background:rgba(0,0,0,0);font-size:.875rem;font-family:inherit}.target-conditions-trait .pattern-tag.draft-tag .pattern-input:focus,.entity-selector-trait .pattern-tag.draft-tag .pattern-input:focus{outline:none}.target-conditions-trait .pattern-tag.draft-tag .pattern-input::placeholder,.entity-selector-trait .pattern-tag.draft-tag .pattern-input::placeholder{color:#6c757d;font-style:italic}.target-conditions-trait .pattern-tag-text,.entity-selector-trait .pattern-tag-text{font-family:monospace;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.target-conditions-trait .btn-toggle-case,.entity-selector-trait .btn-toggle-case{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-toggle-case:focus,.entity-selector-trait .btn-toggle-case:focus{outline:none}.target-conditions-trait .btn-toggle-case,.entity-selector-trait .btn-toggle-case{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-toggle-case:hover,.entity-selector-trait .btn-toggle-case:hover{background:rgba(0,0,0,.1)}.target-conditions-trait .case-icon,.entity-selector-trait .case-icon{font-size:11px;font-weight:600;font-family:monospace}.target-conditions-trait .btn-remove-pattern,.entity-selector-trait .btn-remove-pattern{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-pattern:focus,.entity-selector-trait .btn-remove-pattern:focus{outline:none}.target-conditions-trait .btn-remove-pattern,.entity-selector-trait .btn-remove-pattern{display:flex;align-items:center;justify-content:center;width:18px;height:18px;color:#d97706;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-pattern:hover,.entity-selector-trait .btn-remove-pattern:hover{background:rgba(0,0,0,.1);color:#dc3545}.target-conditions-trait .btn-remove-pattern i,.entity-selector-trait .btn-remove-pattern i{font-size:10px}.target-conditions-trait .btn-add-pattern,.entity-selector-trait .btn-add-pattern{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-pattern:focus,.entity-selector-trait .btn-add-pattern:focus{outline:none}.target-conditions-trait .btn-add-pattern,.entity-selector-trait .btn-add-pattern{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-pattern:hover,.entity-selector-trait .btn-add-pattern:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-add-pattern i,.entity-selector-trait .btn-add-pattern i{font-size:12px}.target-conditions-trait .pattern-match-count,.entity-selector-trait .pattern-match-count{display:inline-flex;align-items:center;gap:.25rem;padding:0 .375rem;color:#6c757d;font-size:.75rem;cursor:pointer}.target-conditions-trait .pattern-match-count.count-zero,.entity-selector-trait .pattern-match-count.count-zero{color:#ffc107}.target-conditions-trait .pattern-match-count.count-found,.entity-selector-trait .pattern-match-count.count-found{color:#28a745}.target-conditions-trait .pattern-match-count .count-value,.entity-selector-trait .pattern-match-count .count-value{font-weight:600}.target-conditions-trait .pattern-input-row,.entity-selector-trait .pattern-input-row{display:flex;align-items:stretch;gap:.25rem}.target-conditions-trait .target-group,.entity-selector-trait .target-group{background:#fff;border:1px solid #dee2e6;border-radius:.3rem;overflow:hidden}.target-conditions-trait .target-group-header,.entity-selector-trait .target-group-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6}.target-conditions-trait .target-group-title,.entity-selector-trait .target-group-title{display:flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:600;color:#212529}.target-conditions-trait .target-group-title .group-number,.entity-selector-trait .target-group-title .group-number{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 .25rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:700;border-radius:50rem}.target-conditions-trait .target-group-actions,.entity-selector-trait .target-group-actions{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .group-action-btn,.entity-selector-trait .group-action-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .group-action-btn:focus,.entity-selector-trait .group-action-btn:focus{outline:none}.target-conditions-trait .group-action-btn,.entity-selector-trait .group-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .group-action-btn:hover,.entity-selector-trait .group-action-btn:hover{background:#e2e8f0;color:#495057}.target-conditions-trait .group-action-btn.danger:hover,.entity-selector-trait .group-action-btn.danger:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .target-group-body,.target-conditions-trait .group-body,.entity-selector-trait .target-group-body,.entity-selector-trait .group-body{padding:1rem}.target-conditions-trait .include-section,.entity-selector-trait .include-section{margin-bottom:1rem}.target-conditions-trait .section-label,.entity-selector-trait .section-label{display:flex;align-items:center;gap:.25rem;margin-bottom:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.target-conditions-trait .section-label.label-include,.entity-selector-trait .section-label.label-include{color:#1e7e34}.target-conditions-trait .section-label.label-include i,.entity-selector-trait .section-label.label-include i{color:#28a745}.target-conditions-trait .section-label.label-exclude,.entity-selector-trait .section-label.label-exclude{color:#dc3545}.target-conditions-trait .section-label.label-exclude i,.entity-selector-trait .section-label.label-exclude i{color:#dc3545}.target-conditions-trait .method-selector,.entity-selector-trait .method-selector{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.target-conditions-trait .method-selector-wrapper,.entity-selector-trait .method-selector-wrapper{flex:1;position:relative}.target-conditions-trait .method-select,.entity-selector-trait .method-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .method-select:focus,.entity-selector-trait .method-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .method-select::placeholder,.entity-selector-trait .method-select::placeholder{color:#adb5bd}.target-conditions-trait .method-select,.entity-selector-trait .method-select{padding-right:2rem;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em}.target-conditions-trait .method-help-btn,.entity-selector-trait .method-help-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .method-help-btn:focus,.entity-selector-trait .method-help-btn:focus{outline:none}.target-conditions-trait .method-help-btn,.entity-selector-trait .method-help-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .method-help-btn:hover,.entity-selector-trait .method-help-btn:hover{background:#f1f5f9;color:#25b9d7}.target-conditions-trait .value-picker,.entity-selector-trait .value-picker{position:relative}.target-conditions-trait .value-picker-trigger,.entity-selector-trait .value-picker-trigger{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .value-picker-trigger:focus,.entity-selector-trait .value-picker-trigger:focus{outline:none}.target-conditions-trait .value-picker-trigger,.entity-selector-trait .value-picker-trigger{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#6c757d;font-size:.875rem;text-align:left;transition:all .15s ease-in-out}.target-conditions-trait .value-picker-trigger:hover,.entity-selector-trait .value-picker-trigger:hover{border-color:#cbd5e1}.target-conditions-trait .value-picker-trigger:focus,.entity-selector-trait .value-picker-trigger:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .value-picker-trigger i,.entity-selector-trait .value-picker-trigger i{color:#adb5bd}.target-conditions-trait .pattern-input-wrapper,.entity-selector-trait .pattern-input-wrapper{position:relative}.target-conditions-trait .pattern-input,.entity-selector-trait .pattern-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .pattern-input:focus,.entity-selector-trait .pattern-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .pattern-input::placeholder,.entity-selector-trait .pattern-input::placeholder{color:#adb5bd}.target-conditions-trait .pattern-input,.entity-selector-trait .pattern-input{font-family:monospace}.target-conditions-trait .pattern-add-btn,.entity-selector-trait .pattern-add-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .pattern-add-btn:focus,.entity-selector-trait .pattern-add-btn:focus{outline:none}.target-conditions-trait .pattern-add-btn,.entity-selector-trait .pattern-add-btn{position:absolute;right:.25rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .pattern-add-btn:hover,.entity-selector-trait .pattern-add-btn:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .multi-range-container,.entity-selector-trait .multi-range-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .range-row,.entity-selector-trait .range-row{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .range-input,.entity-selector-trait .range-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .range-input:focus,.entity-selector-trait .range-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .range-input::placeholder,.entity-selector-trait .range-input::placeholder{color:#adb5bd}.target-conditions-trait .range-input,.entity-selector-trait .range-input{width:100px;text-align:center}.target-conditions-trait .range-separator,.entity-selector-trait .range-separator{color:#6c757d;font-size:.875rem}.target-conditions-trait .range-remove-btn,.entity-selector-trait .range-remove-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .range-remove-btn:focus,.entity-selector-trait .range-remove-btn:focus{outline:none}.target-conditions-trait .range-remove-btn,.entity-selector-trait .range-remove-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .range-remove-btn:hover,.entity-selector-trait .range-remove-btn:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .range-add-btn,.entity-selector-trait .range-add-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .range-add-btn:focus,.entity-selector-trait .range-add-btn:focus{outline:none}.target-conditions-trait .range-add-btn,.entity-selector-trait .range-add-btn{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;color:#25b9d7;font-size:.75rem;font-weight:500;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .range-add-btn:hover,.entity-selector-trait .range-add-btn:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .multi-select-tiles,.entity-selector-trait .multi-select-tiles{display:flex;flex-wrap:wrap;gap:.25rem}.target-conditions-trait .multi-select-tile,.entity-selector-trait .multi-select-tile{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .multi-select-tile:focus,.entity-selector-trait .multi-select-tile:focus{outline:none}.target-conditions-trait .multi-select-tile,.entity-selector-trait .multi-select-tile{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;background:#f1f5f9;color:#495057;font-size:.75rem;font-weight:500;border:1px solid rgba(0,0,0,0);border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .multi-select-tile:hover,.entity-selector-trait .multi-select-tile:hover{background:#e2e8f0}.target-conditions-trait .multi-select-tile.selected,.entity-selector-trait .multi-select-tile.selected{background:rgba(37,185,215,.1);color:#25b9d7;border-color:#25b9d7}.target-conditions-trait .exclude-section,.entity-selector-trait .exclude-section{margin-top:1rem;padding-top:1rem;border-top:1px dashed #dee2e6}.target-conditions-trait .exclude-rows,.entity-selector-trait .exclude-rows{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .exclude-row,.entity-selector-trait .exclude-row{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem;background:rgba(220,53,69,.05);border:1px solid rgba(220,53,69,.2);border-radius:.25rem}.target-conditions-trait .exclude-row-content,.entity-selector-trait .exclude-row-content{flex:1}.target-conditions-trait .exclude-remove-btn,.entity-selector-trait .exclude-remove-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .exclude-remove-btn:focus,.entity-selector-trait .exclude-remove-btn:focus{outline:none}.target-conditions-trait .exclude-remove-btn,.entity-selector-trait .exclude-remove-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;flex-shrink:0;transition:all .15s ease-in-out}.target-conditions-trait .exclude-remove-btn:hover,.entity-selector-trait .exclude-remove-btn:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .add-exclude-btn,.entity-selector-trait .add-exclude-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .add-exclude-btn:focus,.entity-selector-trait .add-exclude-btn:focus{outline:none}.target-conditions-trait .add-exclude-btn,.entity-selector-trait .add-exclude-btn{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.25rem .5rem;color:#dc3545;font-size:.75rem;font-weight:500;border:1px dashed #dc3545;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .add-exclude-btn:hover,.entity-selector-trait .add-exclude-btn:hover{background:#f8d7da}.target-conditions-trait .btn-add-group,.entity-selector-trait .btn-add-group{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-group:focus,.entity-selector-trait .btn-add-group:focus{outline:none}.target-conditions-trait .btn-add-group,.entity-selector-trait .btn-add-group{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;color:#25b9d7;font-size:.875rem;font-weight:500;background:rgba(37,185,215,.05);border:1px dashed #25b9d7;border-radius:.375rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-group:hover,.entity-selector-trait .btn-add-group:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-add-group i,.entity-selector-trait .btn-add-group i{font-size:12px}.target-conditions-trait .block-footer,.entity-selector-trait .block-footer{display:flex;align-items:center;gap:.5rem;padding:1rem;border-top:1px solid #dee2e6}.target-conditions-trait .block-body,.entity-selector-trait .block-body{padding:0}.target-conditions-trait .groups-container,.entity-selector-trait .groups-container{padding:1rem}.target-conditions-trait .groups-empty-state,.entity-selector-trait .groups-empty-state{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6c757d;font-size:.875rem}.target-conditions-trait .selection-group,.entity-selector-trait .selection-group{background:#fff;border:1px solid #dee2e6;border-radius:.3rem;margin-bottom:1rem}.target-conditions-trait .selection-group:last-child,.entity-selector-trait .selection-group:last-child{margin-bottom:0}.target-conditions-trait .selection-group.collapsed .group-body,.entity-selector-trait .selection-group.collapsed .group-body{display:none}.target-conditions-trait .selection-group.collapsed .group-collapse-toggle i,.entity-selector-trait .selection-group.collapsed .group-collapse-toggle i{transform:rotate(-90deg)}.target-conditions-trait .group-header,.entity-selector-trait .group-header{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer}.target-conditions-trait .group-header.group-header-single,.entity-selector-trait .group-header.group-header-single{padding:.25rem 1rem;background:rgba(0,0,0,0);border-bottom:none}.target-conditions-trait .group-collapse-toggle,.entity-selector-trait .group-collapse-toggle{display:flex;align-items:center;justify-content:center;width:20px;color:#6c757d}.target-conditions-trait .group-collapse-toggle i,.entity-selector-trait .group-collapse-toggle i{transition:transform .15s ease-in-out}.target-conditions-trait .group-name-wrapper,.entity-selector-trait .group-name-wrapper{flex:1;display:flex;align-items:center;gap:.5rem}.target-conditions-trait .group-name-input,.entity-selector-trait .group-name-input{flex:1;padding:.25rem .5rem;font-size:.875rem;font-weight:600;color:#212529;background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .group-name-input:hover,.target-conditions-trait .group-name-input:focus,.entity-selector-trait .group-name-input:hover,.entity-selector-trait .group-name-input:focus{background:#fff;border-color:#dee2e6;outline:none}.target-conditions-trait .group-name-input::placeholder,.entity-selector-trait .group-name-input::placeholder{color:#6c757d;font-weight:500}.target-conditions-trait .group-count-badge,.entity-selector-trait .group-count-badge{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .group-count-badge:hover,.entity-selector-trait .group-count-badge:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .group-count-badge.loading,.entity-selector-trait .group-count-badge.loading{cursor:wait}.target-conditions-trait .group-count-badge.loading i,.entity-selector-trait .group-count-badge.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .group-count-badge.loading:hover,.entity-selector-trait .group-count-badge.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .group-count-badge.inactive,.target-conditions-trait .group-count-badge.no-matches,.entity-selector-trait .group-count-badge.inactive,.entity-selector-trait .group-count-badge.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .group-count-badge.inactive:hover,.target-conditions-trait .group-count-badge.no-matches:hover,.entity-selector-trait .group-count-badge.inactive:hover,.entity-selector-trait .group-count-badge.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .group-count-badge.popover-open,.entity-selector-trait .group-count-badge.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .group-count-badge i,.entity-selector-trait .group-count-badge i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .group-count-badge:hover i,.entity-selector-trait .group-count-badge:hover i{opacity:1}.target-conditions-trait .group-count-badge .preview-count,.entity-selector-trait .group-count-badge .preview-count{font-weight:700}.target-conditions-trait .btn-remove-group,.entity-selector-trait .btn-remove-group{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-group:focus,.entity-selector-trait .btn-remove-group:focus{outline:none}.target-conditions-trait .btn-remove-group,.entity-selector-trait .btn-remove-group{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-group:hover,.entity-selector-trait .btn-remove-group:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .group-include,.entity-selector-trait .group-include{margin-bottom:1rem}.target-conditions-trait .section-row,.entity-selector-trait .section-row{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .method-selector-wrapper,.entity-selector-trait .method-selector-wrapper{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .method-info-placeholder,.entity-selector-trait .method-info-placeholder{display:flex;align-items:center;min-width:20px}.target-conditions-trait .include-method-select,.target-conditions-trait .exclude-method-select,.entity-selector-trait .include-method-select,.entity-selector-trait .exclude-method-select{flex:1;width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .include-method-select:focus,.target-conditions-trait .exclude-method-select:focus,.entity-selector-trait .include-method-select:focus,.entity-selector-trait .exclude-method-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .include-method-select::placeholder,.target-conditions-trait .exclude-method-select::placeholder,.entity-selector-trait .include-method-select::placeholder,.entity-selector-trait .exclude-method-select::placeholder{color:#adb5bd}.target-conditions-trait .include-method-select,.target-conditions-trait .exclude-method-select,.entity-selector-trait .include-method-select,.entity-selector-trait .exclude-method-select{cursor:pointer}.target-conditions-trait .group-excludes,.entity-selector-trait .group-excludes{margin-top:1rem}.target-conditions-trait .group-excludes.has-excludes,.entity-selector-trait .group-excludes.has-excludes{padding-top:1rem;border-top:1px dashed #dee2e6}.target-conditions-trait .except-separator,.entity-selector-trait .except-separator{display:flex;align-items:center;margin-bottom:.5rem}.target-conditions-trait .except-label,.entity-selector-trait .except-label{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#f8d7da;color:#dc3545;font-size:.75rem;font-weight:600;border-radius:.2rem}.target-conditions-trait .except-label i,.entity-selector-trait .except-label i{font-size:10px}.target-conditions-trait .exclude-rows-container,.entity-selector-trait .exclude-rows-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .exclude-row,.entity-selector-trait .exclude-row{padding:.5rem;background:rgba(220,53,69,.03);border:1px solid rgba(220,53,69,.15);border-radius:.25rem}.target-conditions-trait .exclude-header-row,.entity-selector-trait .exclude-header-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.target-conditions-trait .btn-remove-exclude-row,.entity-selector-trait .btn-remove-exclude-row{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-exclude-row:focus,.entity-selector-trait .btn-remove-exclude-row:focus{outline:none}.target-conditions-trait .btn-remove-exclude-row,.entity-selector-trait .btn-remove-exclude-row{display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-exclude-row:hover,.entity-selector-trait .btn-remove-exclude-row:hover{background:#f8d7da;color:#dc3545}.target-conditions-trait .btn-add-exclude,.target-conditions-trait .btn-add-another-exclude,.entity-selector-trait .btn-add-exclude,.entity-selector-trait .btn-add-another-exclude{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-exclude:focus,.target-conditions-trait .btn-add-another-exclude:focus,.entity-selector-trait .btn-add-exclude:focus,.entity-selector-trait .btn-add-another-exclude:focus{outline:none}.target-conditions-trait .btn-add-exclude,.target-conditions-trait .btn-add-another-exclude,.entity-selector-trait .btn-add-exclude,.entity-selector-trait .btn-add-another-exclude{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.375rem .625rem;color:#dc3545;font-size:.75rem;font-weight:500;background:rgba(0,0,0,0);border:1px dashed rgba(220,53,69,.5);border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-exclude:hover,.target-conditions-trait .btn-add-another-exclude:hover,.entity-selector-trait .btn-add-exclude:hover,.entity-selector-trait .btn-add-another-exclude:hover{background:#f8d7da;border-color:#dc3545}.target-conditions-trait .btn-add-exclude i,.target-conditions-trait .btn-add-another-exclude i,.entity-selector-trait .btn-add-exclude i,.entity-selector-trait .btn-add-another-exclude i{font-size:10px}.target-conditions-trait .group-modifiers,.entity-selector-trait .group-modifiers{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;padding:.5rem 1rem;margin:1rem -1rem -1rem;background:#f8fafc;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}.target-conditions-trait .modifier-inline,.entity-selector-trait .modifier-inline{display:flex;align-items:center;gap:.375rem}.target-conditions-trait .group-modifier-limit,.entity-selector-trait .group-modifier-limit{width:60px;padding:.25rem .5rem;font-size:.75rem;text-align:center;border:1px solid #dee2e6;border-radius:.2rem}.target-conditions-trait .group-modifier-limit:focus,.entity-selector-trait .group-modifier-limit:focus{border-color:#25b9d7;outline:none}.target-conditions-trait .group-modifier-sort,.entity-selector-trait .group-modifier-sort{padding:.25rem .5rem;font-size:.75rem;border:1px solid #dee2e6;border-radius:.2rem;cursor:pointer}.target-conditions-trait .group-modifier-sort:focus,.entity-selector-trait .group-modifier-sort:focus{border-color:#25b9d7;outline:none}.target-conditions-trait .btn-sort-dir,.entity-selector-trait .btn-sort-dir{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-sort-dir:focus,.entity-selector-trait .btn-sort-dir:focus{outline:none}.target-conditions-trait .btn-sort-dir,.entity-selector-trait .btn-sort-dir{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border:1px solid #dee2e6;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-sort-dir:hover,.entity-selector-trait .btn-sort-dir:hover{background:#f1f5f9;color:#495057}.target-conditions-trait .group-preview-badge,.entity-selector-trait .group-preview-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#f1f5f9;color:#6c757d;font-size:.75rem;font-weight:500;border-radius:50rem;transition:all .15s ease-in-out}.target-conditions-trait .group-preview-badge.clickable,.entity-selector-trait .group-preview-badge.clickable{cursor:pointer}.target-conditions-trait .group-preview-badge.clickable:hover,.entity-selector-trait .group-preview-badge.clickable:hover{background:rgba(37,185,215,.1);color:#25b9d7}.target-conditions-trait .group-separator,.entity-selector-trait .group-separator{display:flex;align-items:center;justify-content:center;padding:.5rem 0;color:#6c757d;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em}.target-conditions-trait .group-separator::before,.target-conditions-trait .group-separator::after,.entity-selector-trait .group-separator::before,.entity-selector-trait .group-separator::after{content:"";flex:1;height:1px;background:#dee2e6;margin:0 1rem}.target-conditions-trait .group-modifiers,.entity-selector-trait .group-modifiers{display:flex;flex-wrap:wrap;gap:1rem;padding-top:1rem;margin-top:1rem;border-top:1px solid #dee2e6}.target-conditions-trait .modifier-group,.entity-selector-trait .modifier-group{display:flex;align-items:center;gap:.5rem}.target-conditions-trait .modifier-label,.entity-selector-trait .modifier-label{font-size:.75rem;font-weight:500;color:#6c757d;white-space:nowrap}.target-conditions-trait .modifier-input,.entity-selector-trait .modifier-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .modifier-input:focus,.entity-selector-trait .modifier-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .modifier-input::placeholder,.entity-selector-trait .modifier-input::placeholder{color:#adb5bd}.target-conditions-trait .modifier-input,.entity-selector-trait .modifier-input{width:80px;padding:.25rem .5rem;font-size:.75rem}.target-conditions-trait .modifier-select,.entity-selector-trait .modifier-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .modifier-select:focus,.entity-selector-trait .modifier-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .modifier-select::placeholder,.entity-selector-trait .modifier-select::placeholder{color:#adb5bd}.target-conditions-trait .modifier-select,.entity-selector-trait .modifier-select{width:auto;padding:.25rem 1.5rem .25rem .5rem;font-size:.75rem;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .25rem center;background-repeat:no-repeat;background-size:1.25em 1.25em}.target-conditions-trait .condition-match-count,.entity-selector-trait .condition-match-count{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .375rem;background:#f1f5f9;color:#6c757d;font-size:.75rem;font-weight:500;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .condition-match-count:hover,.entity-selector-trait .condition-match-count:hover{background:#e2e8f0}.target-conditions-trait .condition-match-count.has-results,.entity-selector-trait .condition-match-count.has-results{background:rgba(37,185,215,.1);color:#25b9d7}.target-conditions-trait .condition-match-count i,.entity-selector-trait .condition-match-count i{font-size:10px}.target-conditions-trait .value-picker,.entity-selector-trait .value-picker{padding:.5rem 0}.target-conditions-trait .value-picker[style*="display: none"],.target-conditions-trait .value-picker[style*="display:none"],.entity-selector-trait .value-picker[style*="display: none"],.entity-selector-trait .value-picker[style*="display:none"]{padding:0}.target-conditions-trait .entity-search-box,.entity-selector-trait .entity-search-box{position:relative;display:flex;align-items:center;gap:.5rem;padding:.25rem;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .entity-search-box:focus-within,.entity-selector-trait .entity-search-box:focus-within{border-color:#25b9d7;box-shadow:0 0 0 2px rgba(37,185,215,.1)}.target-conditions-trait .entity-search-icon,.entity-selector-trait .entity-search-icon{color:#6c757d;font-size:14px;flex-shrink:0}.target-conditions-trait input.entity-search-input,.target-conditions-trait input.entity-search-input[type=text],.entity-selector-trait input.entity-search-input,.entity-selector-trait input.entity-search-input[type=text]{padding:0;margin:0;background:none;border:none;font:inherit;color:inherit}.target-conditions-trait input.entity-search-input:focus,.target-conditions-trait input.entity-search-input[type=text]:focus,.entity-selector-trait input.entity-search-input:focus,.entity-selector-trait input.entity-search-input[type=text]:focus{outline:none}.target-conditions-trait input.entity-search-input,.target-conditions-trait input.entity-search-input[type=text],.entity-selector-trait input.entity-search-input,.entity-selector-trait input.entity-search-input[type=text]{flex:1;min-width:0;width:auto !important;max-width:none !important;padding:.375rem;font-size:.875rem;color:#212529;border:none !important;background:rgba(0,0,0,0) !important;box-shadow:none !important}.target-conditions-trait input.entity-search-input::placeholder,.target-conditions-trait input.entity-search-input[type=text]::placeholder,.entity-selector-trait input.entity-search-input::placeholder,.entity-selector-trait input.entity-search-input[type=text]::placeholder{color:#6c757d}.target-conditions-trait input.entity-search-input:focus,.target-conditions-trait input.entity-search-input[type=text]:focus,.entity-selector-trait input.entity-search-input:focus,.entity-selector-trait input.entity-search-input[type=text]:focus{border:none !important;box-shadow:none !important;outline:none}.target-conditions-trait .search-loading,.entity-selector-trait .search-loading{display:flex;align-items:center;justify-content:center;color:#25b9d7}.target-conditions-trait .search-loading i,.entity-selector-trait .search-loading i{animation:spin .6s linear infinite}.target-conditions-trait .numeric-range-box,.target-conditions-trait .multi-range-input-row,.entity-selector-trait .numeric-range-box,.entity-selector-trait .multi-range-input-row{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .range-min-input,.target-conditions-trait .range-max-input,.entity-selector-trait .range-min-input,.entity-selector-trait .range-max-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .range-min-input:focus,.target-conditions-trait .range-max-input:focus,.entity-selector-trait .range-min-input:focus,.entity-selector-trait .range-max-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .range-min-input::placeholder,.target-conditions-trait .range-max-input::placeholder,.entity-selector-trait .range-min-input::placeholder,.entity-selector-trait .range-max-input::placeholder{color:#adb5bd}.target-conditions-trait .range-min-input,.target-conditions-trait .range-max-input,.entity-selector-trait .range-min-input,.entity-selector-trait .range-max-input{width:100px;padding:.5rem;text-align:center;font-size:.875rem}.target-conditions-trait .range-min-input::-webkit-inner-spin-button,.target-conditions-trait .range-min-input::-webkit-outer-spin-button,.target-conditions-trait .range-max-input::-webkit-inner-spin-button,.target-conditions-trait .range-max-input::-webkit-outer-spin-button,.entity-selector-trait .range-min-input::-webkit-inner-spin-button,.entity-selector-trait .range-min-input::-webkit-outer-spin-button,.entity-selector-trait .range-max-input::-webkit-inner-spin-button,.entity-selector-trait .range-max-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.target-conditions-trait .range-min-input,.target-conditions-trait .range-max-input,.entity-selector-trait .range-min-input,.entity-selector-trait .range-max-input{-moz-appearance:textfield}.target-conditions-trait .range-separator,.entity-selector-trait .range-separator{color:#6c757d;font-size:.875rem;font-weight:500}.target-conditions-trait .btn-add-range,.entity-selector-trait .btn-add-range{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-range:focus,.entity-selector-trait .btn-add-range:focus{outline:none}.target-conditions-trait .btn-add-range,.entity-selector-trait .btn-add-range{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#fff;background:#25b9d7;border-radius:.25rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-range:hover,.entity-selector-trait .btn-add-range:hover{background:#1a9ab7}.target-conditions-trait .btn-add-range i,.entity-selector-trait .btn-add-range i{font-size:12px}.target-conditions-trait .multi-range-container,.entity-selector-trait .multi-range-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .date-range-box,.entity-selector-trait .date-range-box{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .date-from-input,.target-conditions-trait .date-to-input,.entity-selector-trait .date-from-input,.entity-selector-trait .date-to-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .date-from-input:focus,.target-conditions-trait .date-to-input:focus,.entity-selector-trait .date-from-input:focus,.entity-selector-trait .date-to-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .date-from-input::placeholder,.target-conditions-trait .date-to-input::placeholder,.entity-selector-trait .date-from-input::placeholder,.entity-selector-trait .date-to-input::placeholder{color:#adb5bd}.target-conditions-trait .date-from-input,.target-conditions-trait .date-to-input,.entity-selector-trait .date-from-input,.entity-selector-trait .date-to-input{width:140px;padding:.5rem;font-size:.875rem}.target-conditions-trait .multi-select-tiles,.entity-selector-trait .multi-select-tiles{display:flex;flex-wrap:wrap;gap:.25rem}.target-conditions-trait .tile-option,.entity-selector-trait .tile-option{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .tile-option:focus,.entity-selector-trait .tile-option:focus{outline:none}.target-conditions-trait .tile-option,.entity-selector-trait .tile-option{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .625rem;color:#495057;background:#f1f5f9;border:1px solid rgba(0,0,0,0);border-radius:.2rem;font-size:.75rem;font-weight:500;cursor:pointer;transition:all .15s ease-in-out}.target-conditions-trait .tile-option:hover,.entity-selector-trait .tile-option:hover{background:#e2e8f0}.target-conditions-trait .tile-option.selected,.entity-selector-trait .tile-option.selected{color:#25b9d7;background:rgba(37,185,215,.1);border-color:#25b9d7}.target-conditions-trait .tile-option i,.entity-selector-trait .tile-option i{font-size:12px}.target-conditions-trait .tile-label,.entity-selector-trait .tile-label{white-space:nowrap}.target-conditions-trait .select-input-box,.entity-selector-trait .select-input-box{display:inline-block}.target-conditions-trait .select-value-input,.entity-selector-trait .select-value-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-conditions-trait .select-value-input:focus,.entity-selector-trait .select-value-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-conditions-trait .select-value-input::placeholder,.entity-selector-trait .select-value-input::placeholder{color:#adb5bd}.target-conditions-trait .select-value-input,.entity-selector-trait .select-value-input{padding:.5rem 1rem;font-size:.875rem;min-width:150px}.target-conditions-trait .boolean-input-box,.entity-selector-trait .boolean-input-box{display:inline-flex;align-items:center;padding:.5rem 1rem;background:#d4edda;color:#1e7e34;border-radius:.25rem;font-size:.875rem;font-weight:500}.target-conditions-trait .boolean-label,.entity-selector-trait .boolean-label{display:flex;align-items:center;gap:.25rem}.target-conditions-trait .boolean-label::before,.entity-selector-trait .boolean-label::before{content:"✓";font-weight:bold}.target-conditions-trait .condition-match-count,.entity-selector-trait .condition-match-count{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.target-conditions-trait .condition-match-count:hover,.entity-selector-trait .condition-match-count:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .condition-match-count.loading,.entity-selector-trait .condition-match-count.loading{cursor:wait}.target-conditions-trait .condition-match-count.loading i,.entity-selector-trait .condition-match-count.loading i{font-size:10px;animation:spin .6s linear infinite}.target-conditions-trait .condition-match-count.loading:hover,.entity-selector-trait .condition-match-count.loading:hover{transform:none;box-shadow:none}.target-conditions-trait .condition-match-count.inactive,.target-conditions-trait .condition-match-count.no-matches,.entity-selector-trait .condition-match-count.inactive,.entity-selector-trait .condition-match-count.no-matches{background:#94a3b8;cursor:default}.target-conditions-trait .condition-match-count.inactive:hover,.target-conditions-trait .condition-match-count.no-matches:hover,.entity-selector-trait .condition-match-count.inactive:hover,.entity-selector-trait .condition-match-count.no-matches:hover{transform:none;box-shadow:none}.target-conditions-trait .condition-match-count.popover-open,.entity-selector-trait .condition-match-count.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.target-conditions-trait .condition-match-count i,.entity-selector-trait .condition-match-count i{font-size:10px;line-height:1;opacity:.8}.target-conditions-trait .condition-match-count:hover i,.entity-selector-trait .condition-match-count:hover i{opacity:1}.target-conditions-trait .condition-match-count .preview-count,.entity-selector-trait .condition-match-count .preview-count{font-weight:700}.target-conditions-trait .condition-match-count,.entity-selector-trait .condition-match-count{margin-left:.5rem}.mpr-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:1050;opacity:0;transition:opacity .2s ease-in-out}.mpr-modal-backdrop.show{opacity:1}.mpr-modal{position:fixed;top:50%;left:50%;transform:translate(-50%, -50%) scale(0.95);z-index:1051;width:90%;max-width:600px;max-height:90vh;background:#fff;border-radius:.5rem;box-shadow:0 1.5rem 4rem rgba(0,0,0,.2);opacity:0;transition:all .2s ease-in-out;overflow:hidden;display:flex;flex-direction:column}.mpr-modal.show{opacity:1;transform:translate(-50%, -50%) scale(1)}.mpr-modal.modal-sm{max-width:400px}.mpr-modal.modal-lg{max-width:800px}.mpr-modal.modal-xl{max-width:1000px}.mpr-modal.modal-fullscreen{width:95%;max-width:none;height:90vh;max-height:none}.mpr-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;flex-shrink:0}.mpr-modal-title{font-size:1rem;font-weight:600;color:#212529;margin:0}.mpr-modal-close{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.mpr-modal-close:focus{outline:none}.mpr-modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:#6c757d;border-radius:.25rem;transition:all .15s ease-in-out}.mpr-modal-close:hover{background:#e2e8f0;color:#495057}.mpr-modal-close i{font-size:1.125rem}.mpr-modal-body{flex:1;overflow-y:auto;padding:1.5rem}.mpr-modal-body::-webkit-scrollbar{width:6px;height:6px}.mpr-modal-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.mpr-modal-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.mpr-modal-body::-webkit-scrollbar-thumb:hover{background:#ced4da}.mpr-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem;background:#f8f9fa;border-top:1px solid #dee2e6;flex-shrink:0}.mpr-modal-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.mpr-modal-btn:focus{outline:none}.mpr-modal-btn{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.25rem;transition:all .15s ease-in-out}.mpr-modal-btn.btn-secondary{color:#495057;background:#f1f5f9}.mpr-modal-btn.btn-secondary:hover{background:#e2e8f0}.mpr-modal-btn.btn-primary{color:#fff;background:#25b9d7}.mpr-modal-btn.btn-primary:hover{background:#1a9ab7}.mpr-modal-btn.btn-danger{color:#fff;background:#dc3545}.mpr-modal-btn.btn-danger:hover{background:rgb(189.2151898734,32.7848101266,47.7721518987)}.mpr-modal-btn:disabled{opacity:.5;cursor:not-allowed}.popover-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0}.popover-title{font-size:.875rem;font-weight:600;color:#212529}.popover-close{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.popover-close:focus{outline:none}.popover-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.popover-close:hover{background:#e2e8f0;color:#495057}.popover-body{max-height:300px;overflow-y:auto;padding:.5rem}.popover-body::-webkit-scrollbar{width:6px;height:6px}.popover-body::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.popover-body::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.popover-body::-webkit-scrollbar-thumb:hover{background:#ced4da}.popover-footer{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;border-radius:0 0 .3rem .3rem}.popover-info{font-size:.75rem;color:#6c757d}.popover-load-more{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.popover-load-more:focus{outline:none}.popover-load-more{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;color:#25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.popover-load-more:hover{background:rgba(37,185,215,.1)}.popover-arrow{position:absolute;width:12px;height:12px;background:#fff;border:1px solid #dee2e6;transform:rotate(45deg)}.popover-arrow.arrow-top{top:-7px;left:50%;margin-left:-6px;border-right:none;border-bottom:none}.popover-arrow.arrow-bottom{bottom:-7px;left:50%;margin-left:-6px;border-left:none;border-top:none}.target-preview-popover{position:absolute;z-index:10000;min-width:280px;max-width:400px;background:#fff;border:1px solid #dee2e6;border-radius:.3rem;box-shadow:0 1rem 3rem rgba(0,0,0,.175);overflow:hidden}.target-preview-popover::before{content:"";position:absolute;top:-8px;left:50%;transform:translateX(-50%);border-left:8px solid rgba(0,0,0,0);border-right:8px solid rgba(0,0,0,0);border-bottom:8px solid #dee2e6}.target-preview-popover::after{content:"";position:absolute;top:-6px;left:50%;transform:translateX(-50%);border-left:6px solid rgba(0,0,0,0);border-right:6px solid rgba(0,0,0,0);border-bottom:6px solid #fff}.target-preview-popover .preview-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6}.target-preview-popover .preview-header .preview-count{font-size:.875rem;font-weight:600;color:#212529}.target-preview-popover .preview-header .preview-close{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-preview-popover .preview-header .preview-close:focus{outline:none}.target-preview-popover .preview-header .preview-close{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-preview-popover .preview-header .preview-close:hover{background:#e2e8f0;color:#212529}.target-preview-popover .preview-list{max-height:300px;overflow-y:auto}.target-preview-popover .preview-list::-webkit-scrollbar{width:6px;height:6px}.target-preview-popover .preview-list::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-preview-popover .preview-list::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-preview-popover .preview-list::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-preview-popover .preview-list{padding:.5rem;display:flex;flex-direction:column;gap:.25rem}.target-preview-popover .preview-filter{padding:.5rem 1rem;border-bottom:1px solid #dee2e6}.target-preview-popover .preview-filter .preview-filter-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-preview-popover .preview-filter .preview-filter-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-preview-popover .preview-filter .preview-filter-input::placeholder{color:#adb5bd}.target-preview-popover .preview-filter .preview-filter-input{width:100%;padding:.5rem;font-size:.875rem;box-sizing:border-box}.target-preview-popover .preview-filter .preview-filter-input::placeholder{color:#6c757d}.target-preview-popover .preview-footer{padding:.5rem 1rem;background:#f8fafc;border-top:1px solid #dee2e6}.target-preview-popover .preview-footer .preview-more-info{font-size:.75rem;color:#6c757d;font-weight:500;text-align:center}.target-preview-popover .load-more-controls{display:flex;align-items:center;justify-content:center;gap:.5rem;font-size:.75rem;color:#6c757d}.target-preview-popover .load-more-controls .load-more-label{white-space:nowrap}.target-preview-popover .load-more-controls .load-more-select{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.target-preview-popover .load-more-controls .load-more-select:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.target-preview-popover .load-more-controls .load-more-select::placeholder{color:#adb5bd}.target-preview-popover .load-more-controls .load-more-select{padding:.25rem .5rem;font-size:.75rem;min-width:70px}.target-preview-popover .load-more-controls .load-more-of{white-space:nowrap}.target-preview-popover .load-more-controls .remaining-count{font-weight:600;color:#495057}.target-preview-popover .load-more-controls .btn-load-more{display:flex;align-items:center;justify-content:center;padding:.25rem;margin:0;border:none;color:#25b9d7;background:rgba(37,185,215,.1) !important;border-radius:.2rem;cursor:pointer;transition:all .15s ease-in-out;font:inherit}.target-preview-popover .load-more-controls .btn-load-more i{font-size:14px}.target-preview-popover .load-more-controls .btn-load-more:hover{background:rgba(37,185,215,.2) !important}.target-preview-popover .load-more-controls .btn-load-more.loading{cursor:wait}.target-preview-popover .load-more-controls .btn-load-more.loading i{animation:spin .6s linear infinite}.entity-list-preview{display:flex;flex-direction:column;gap:.25rem}.preview-item{display:flex;align-items:center;gap:.5rem;padding:.5rem 0;background:#fff;border:none;border-bottom:1px solid #dee2e6;border-radius:0;transition:background .15s ease-in-out}.preview-item:last-child{border-bottom:none}.preview-item:hover{background:#e9ecef}.preview-item-image{flex-shrink:0;width:36px;height:36px;object-fit:cover;border-radius:.2rem;background:#f1f5f9}.preview-item-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;background:#f1f5f9;color:#6c757d;border-radius:.2rem;font-size:1rem}.preview-item-info{flex:1;min-width:0}.preview-item-name{font-size:.875rem;font-weight:500;color:#212529;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-item-meta{font-size:.75rem;color:#6c757d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-item-badge{display:inline-flex;align-items:center;justify-content:center;padding:.125rem .5rem;font-size:.75rem;font-weight:500;line-height:1;background-color:#f1f5f9;color:#6c757d;border-radius:50rem;flex-shrink:0}.preview-item-price{font-size:.875rem;font-weight:600;color:#25b9d7;flex-shrink:0}.entity-list-preview.grid-layout{display:grid;grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));gap:.5rem}.entity-list-preview.grid-layout .preview-item{flex-direction:column;text-align:center;padding:1rem}.entity-list-preview.grid-layout .preview-item-image{width:60px;height:60px}.entity-list-preview.grid-layout .preview-item-info{width:100%}.entity-list-preview.compact{gap:0}.entity-list-preview.compact .preview-item{border-radius:0;border-bottom:none}.entity-list-preview.compact .preview-item:first-child{border-radius:.25rem .25rem 0 0}.entity-list-preview.compact .preview-item:last-child{border-radius:0 0 .25rem .25rem;border-bottom:1px solid #dee2e6}.preview-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;text-align:center;color:#6c757d}.preview-empty i{font-size:2rem;opacity:.5}.preview-empty p{margin:0;font-size:.875rem}.preview-loading{display:flex;align-items:center;justify-content:center;padding:2rem;color:#6c757d}.preview-loading .spinner{width:24px;height:24px;border:3px solid #e2e8f0;border-top-color:#25b9d7;border-radius:50%;animation:spin .8s linear infinite}.preview-pagination{display:flex;align-items:center;justify-content:center;gap:.25rem;padding:1rem 0}.preview-page-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.preview-page-btn:focus{outline:none}.preview-page-btn{display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 .5rem;font-size:.75rem;font-weight:500;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;transition:all .15s ease-in-out}.preview-page-btn:hover:not(:disabled){background:#e9ecef;border-color:#cbd5e1}.preview-page-btn.active{background:#25b9d7;border-color:#25b9d7;color:#fff}.preview-page-btn:disabled{opacity:.5;cursor:not-allowed}.preview-summary{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-top:1px solid #dee2e6;font-size:.75rem;color:#6c757d}.preview-count{font-weight:500}.preview-count strong{color:#212529}.preview-filters{display:flex;flex-wrap:wrap;gap:.5rem;padding:.5rem 1rem;background:#f8fafc;border-bottom:1px solid #dee2e6}.preview-filter-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:#e9ecef;color:#495057;border-radius:50rem}.preview-filter-chip .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.preview-filter-chip .chip-remove:focus{outline:none}.preview-filter-chip .chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;color:#6c757d;border-radius:50%}.preview-filter-chip .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}.preview-search{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.preview-search:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.preview-search::placeholder{color:#adb5bd}.preview-search{flex:1;min-width:150px;padding:.375rem .5rem;font-size:.75rem}.preview-list-scrollable{max-height:400px;overflow-y:auto}.preview-list-scrollable::-webkit-scrollbar{width:6px;height:6px}.preview-list-scrollable::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.preview-list-scrollable::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.preview-list-scrollable::-webkit-scrollbar-thumb:hover{background:#ced4da}.entity-mini-preview{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:#f8fafc;border-radius:.2rem;font-size:.75rem}.entity-mini-preview img{width:16px;height:16px;object-fit:cover;border-radius:2px}.entity-mini-preview .mini-preview-name{color:#212529;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100px}.schedule-conditions-trait{background:#fff;border:1px solid #dee2e6;border-radius:.3rem}.schedule-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.875rem 1rem;background:#f8f9fa;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.schedule-header:hover{background:#e9ecef}.schedule-title{display:flex;align-items:center;gap:.75rem;font-size:.875rem;font-weight:600;color:#212529}.schedule-title i{color:#6c757d}.schedule-body{padding:1rem}.schedule-section{margin-bottom:1.5rem}.schedule-section:last-child{margin-bottom:0}.schedule-section-title{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.875rem;font-weight:600;color:#212529}.schedule-section-title i{color:#6c757d}.schedule-section-description{margin-bottom:1rem;font-size:.75rem;color:#6c757d}.datetime-range{display:flex;flex-wrap:wrap;gap:1rem}.datetime-field{flex:1;min-width:200px}.datetime-label{display:block;margin-bottom:.25rem;font-size:.75rem;font-weight:500;color:#495057}.datetime-input{width:100%;padding:.5rem 1rem;font-size:.875rem;line-height:1.5;color:#212529;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.datetime-input:focus{border-color:#25b9d7;outline:0;box-shadow:0 0 0 .2rem rgba(37,185,215,.25)}.datetime-input::placeholder{color:#adb5bd}.weekly-schedule{display:flex;flex-direction:column;gap:.5rem}.day-row{display:flex;align-items:center;gap:1rem;padding:.5rem;background:#f8fafc;border-radius:.25rem}.day-row.disabled{opacity:.5}.day-toggle{display:flex;align-items:center;gap:.5rem;min-width:100px}.day-checkbox{width:18px;height:18px;cursor:pointer}.day-name{font-size:.875rem;font-weight:500;color:#212529}.timeline-slider{flex:1;position:relative;height:24px;background:#e2e8f0;border-radius:50rem;cursor:pointer}.timeline-fill{position:absolute;top:0;height:100%;background:#25b9d7;border-radius:50rem;transition:all .15s ease-in-out}.timeline-handle{position:absolute;top:50%;width:16px;height:16px;background:#fff;border:2px solid #25b9d7;border-radius:50%;transform:translate(-50%, -50%);cursor:grab;box-shadow:0 .125rem .25rem rgba(0,0,0,.075);transition:box-shadow .15s ease-in-out}.timeline-handle:hover{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.timeline-handle:active{cursor:grabbing}.timeline-handle.handle-start{z-index:2}.timeline-handle.handle-end{z-index:1}.day-times{display:flex;align-items:center;gap:.25rem;min-width:120px;font-size:.75rem;font-family:monospace;color:#495057}.time-separator{color:#6c757d}.holiday-section{padding:1rem;background:#f8fafc;border-radius:.25rem}.holiday-toggle{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.holiday-checkbox{width:18px;height:18px;cursor:pointer}.holiday-label{font-size:.875rem;font-weight:500;color:#212529}.holiday-countries{display:flex;flex-wrap:wrap;gap:.25rem}.holiday-country-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:#e9ecef;color:#495057;border-radius:50rem}.holiday-country-chip .chip-remove{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.holiday-country-chip .chip-remove:focus{outline:none}.holiday-country-chip .chip-remove{display:flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:10px;color:#6c757d;border-radius:50%}.holiday-country-chip .chip-remove:hover{background:rgba(0,0,0,.1);color:#dc3545}.holiday-country-chip{cursor:pointer}.holiday-country-chip.selected{background:rgba(37,185,215,.1);color:#25b9d7}.server-time{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#d1ecf1;border-radius:.25rem;font-size:.75rem;color:#17a2b8}.server-time i{font-size:.875rem}.server-time .time-value{font-family:monospace;font-weight:600}.schedule-summary{display:flex;flex-direction:column;gap:.25rem;padding:1rem;background:#f8fafc;border-radius:.25rem;font-size:.875rem;color:#495057}.schedule-summary .summary-item{display:flex;align-items:center;gap:.5rem}.schedule-summary .summary-item i{color:#28a745;font-size:.875rem}.schedule-summary .summary-item.inactive i{color:#6c757d}.schedule-conditions-trait.collapsed .schedule-body{display:none}.schedule-conditions-trait.collapsed .schedule-header{border-radius:.3rem}.target-conditions-trait .target-tips-box,.entity-selector-trait .target-tips-box{margin:1.5rem 1rem 1rem;border:1px solid #dee2e6;border-radius:.3rem;overflow:hidden;background:linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%)}.target-conditions-trait .tips-header,.entity-selector-trait .tips-header{display:flex;align-items:center;gap:.625rem;padding:1rem 1.5rem;cursor:pointer;user-select:none;transition:background-color .15s ease-in-out}.target-conditions-trait .tips-header:hover,.entity-selector-trait .tips-header:hover{background:rgba(0,0,0,.02)}.target-conditions-trait .tips-header>i:first-child,.entity-selector-trait .tips-header>i:first-child{font-size:1rem;color:#ffc107}.target-conditions-trait .tips-header>span,.entity-selector-trait .tips-header>span{flex:1;font-size:13px;font-weight:600;color:#475569}.target-conditions-trait .tips-toggle,.entity-selector-trait .tips-toggle{font-size:.75rem;color:#94a3b8;transition:transform .2s}.target-conditions-trait .target-tips-box.expanded .tips-toggle,.entity-selector-trait .target-tips-box.expanded .tips-toggle{transform:rotate(180deg)}.target-conditions-trait .target-tips-box.expanded .tips-content,.entity-selector-trait .target-tips-box.expanded .tips-content{display:block}.target-conditions-trait .tips-content,.entity-selector-trait .tips-content{display:none;padding:0 1.5rem 1.5rem}.target-conditions-trait .tips-grid,.entity-selector-trait .tips-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr))}.target-conditions-trait .tip-item,.entity-selector-trait .tip-item{display:flex;gap:1rem;padding:1rem;background:#fff;border-radius:.25rem;border:1px solid #dee2e6}.target-conditions-trait .tip-icon,.entity-selector-trait .tip-icon{flex-shrink:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;background:rgba(37,185,215,.1);border-radius:.25rem;color:#25b9d7;font-size:.875rem}.target-conditions-trait .tip-text,.entity-selector-trait .tip-text{flex:1;min-width:0}.target-conditions-trait .tip-text strong,.entity-selector-trait .tip-text strong{display:block;font-size:.75rem;font-weight:600;color:#334155;margin-bottom:.25rem}.target-conditions-trait .tip-text p,.entity-selector-trait .tip-text p{font-size:11px;color:#6c757d;line-height:1.625;margin:0}.target-conditions-trait .tips-footer,.entity-selector-trait .tips-footer{margin-top:1rem;padding:.625rem 1rem;background:#fff;border-radius:.25rem;border:1px dashed #dee2e6;font-size:11px;color:#6c757d;line-height:1.625}.target-conditions-trait .tips-footer i,.entity-selector-trait .tips-footer i{color:#25b9d7;margin-right:.25rem}.condition-trait{background:#fff;border:1px solid #dee2e6;border-radius:.3rem;margin-bottom:1.5rem}.condition-trait:last-child{margin-bottom:0}.condition-trait.collapsed .condition-trait-header{border-bottom-color:rgba(0,0,0,0);border-radius:.3rem}.condition-trait.collapsed .collapse-icon{transform:rotate(180deg)}.condition-trait-header{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;padding:.875rem 1.5rem;background:#f8fafc;border-bottom:1px solid #dee2e6;border-radius:.3rem .3rem 0 0;cursor:pointer;transition:background-color .15s ease-in-out}.condition-trait-header:hover{background:#f1f5f9}.trait-header-left{display:flex;align-items:center;gap:1rem;min-width:0;flex:1}.trait-icon{font-size:1.125rem;color:#6c757d;flex-shrink:0}.trait-title-group{display:flex;flex-direction:column;gap:.125rem;min-width:0}.trait-title{font-size:.875rem;font-weight:600;color:#1e293b;white-space:nowrap}.trait-subtitle{font-size:.75rem;color:#6c757d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trait-header-right{display:flex;align-items:center;gap:1rem;flex-shrink:0;margin-left:auto}.trait-header-actions{display:flex;align-items:center;gap:.5rem}.collapse-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;font-size:.875rem;color:#6c757d;cursor:pointer;transition:all .2s;border-radius:.2rem;background:rgba(0,0,0,0)}.collapse-icon:hover{color:#25b9d7;background:rgba(37,185,215,.08)}.trait-show-all-toggle{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;color:#25b9d7;cursor:pointer}.trait-show-all-toggle:hover{text-decoration:underline}.trait-total-count{display:inline-flex;align-items:center;justify-content:center;gap:.25rem;min-width:20px;height:20px;padding:0 .5rem;background:#25b9d7;color:#fff;font-size:.75rem;font-weight:600;border-radius:50rem;cursor:pointer;transition:all .15s ease-in-out;flex-shrink:0}.trait-total-count:hover{transform:scale(1.05);box-shadow:0 2px 8px rgba(37,185,215,.4)}.trait-total-count.loading{cursor:wait}.trait-total-count.loading i{font-size:10px;animation:spin .6s linear infinite}.trait-total-count.loading:hover{transform:none;box-shadow:none}.trait-total-count.inactive,.trait-total-count.no-matches{background:#94a3b8;cursor:default}.trait-total-count.inactive:hover,.trait-total-count.no-matches:hover{transform:none;box-shadow:none}.trait-total-count.popover-open{background:rgb(29.5119047619,147.5595238095,171.4880952381);box-shadow:0 2px 8px rgba(37,185,215,.4)}.trait-total-count i{font-size:10px;line-height:1;opacity:.8}.trait-total-count:hover i{opacity:1}.trait-total-count .preview-count{font-weight:700}.trait-required{color:#dc3545;font-size:.75rem}.trait-validation-error{color:#dc3545;font-size:.75rem;margin-top:.25rem}.trait-toggle{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.trait-toggle:focus{outline:none}.trait-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:#495057;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;transition:all .15s ease-in-out}.trait-toggle:hover{background:#f8fafc;border-color:#dee2e6}.trait-toggle.active{color:#25b9d7;border-color:#25b9d7;background:rgba(37,185,215,.1)}.condition-trait-body{padding:1.5rem;border-radius:0 0 .3rem .3rem;background:#fff;animation:slideDown .2s ease-out}.condition-trait.collapsed .condition-trait-body{display:none}.schedule-section,.context-section{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid #f1f5f9}.schedule-section:last-child,.context-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}.section-label{display:flex;align-items:center;gap:.5rem;font-size:13px;font-weight:600;color:#475569;margin-bottom:1rem}.section-label i{font-size:.875rem;color:#94a3b8;margin-right:.25rem}.section-hint{margin-top:.5rem;font-size:11px;color:#94a3b8}.form-group.condition-trait-fullwidth{display:block !important}.form-group.condition-trait-fullwidth>.control-label{display:none !important}.form-group.condition-trait-fullwidth>.col-lg-8,.form-group.condition-trait-fullwidth>.col-lg-8.col-lg-offset-3{width:100% !important;max-width:100% !important;flex:0 0 100% !important;padding-left:1.5rem !important;padding-right:1.5rem !important;margin:0 !important;margin-left:0 !important}.condition-traits-group-label{font-size:.875rem;font-weight:600;color:#334155;margin-bottom:1rem}.condition-traits-wrapper{display:flex;flex-direction:column;gap:1rem}@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.target-conditions-trait .combination-attributes-picker,.entity-selector-trait .combination-attributes-picker{display:flex;flex-direction:column;gap:.625rem}.target-conditions-trait .combination-mode-toggle,.entity-selector-trait .combination-mode-toggle{display:inline-flex;gap:.25rem;padding:.125rem;background:#f1f5f9;border-radius:.25rem;margin-bottom:.5rem}.target-conditions-trait .combination-mode-option,.entity-selector-trait .combination-mode-option{display:flex;align-items:center;gap:.25rem;cursor:pointer;font-size:11px;color:#6c757d;padding:.25rem .625rem;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .combination-mode-option input[type=radio],.entity-selector-trait .combination-mode-option input[type=radio]{display:none}.target-conditions-trait .combination-mode-option .mode-label,.entity-selector-trait .combination-mode-option .mode-label{user-select:none}.target-conditions-trait .combination-mode-option:hover,.entity-selector-trait .combination-mode-option:hover{color:#25b9d7;background:rgba(37,185,215,.1)}.target-conditions-trait .combination-mode-option:has(input[type=radio]:checked),.entity-selector-trait .combination-mode-option:has(input[type=radio]:checked){background:#25b9d7;color:#fff;font-weight:500}.target-conditions-trait .combination-groups-container,.entity-selector-trait .combination-groups-container{display:flex;flex-wrap:wrap;gap:1rem}.target-conditions-trait .combination-loading,.target-conditions-trait .combination-empty,.target-conditions-trait .combination-error,.entity-selector-trait .combination-loading,.entity-selector-trait .combination-empty,.entity-selector-trait .combination-error{color:#6c757d;font-style:italic;padding:.5rem}.target-conditions-trait .combination-error,.entity-selector-trait .combination-error{color:#dc3545}.target-conditions-trait .combinations-section,.entity-selector-trait .combinations-section{margin-bottom:1rem}.target-conditions-trait .combinations-header,.entity-selector-trait .combinations-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.target-conditions-trait .combinations-label,.entity-selector-trait .combinations-label{font-size:.75rem;font-weight:500;color:#6c757d}.target-conditions-trait .combinations-help,.entity-selector-trait .combinations-help{font-size:11px;color:#94a3b8}.target-conditions-trait .btn-toggle-combinations,.entity-selector-trait .btn-toggle-combinations{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-toggle-combinations:focus,.entity-selector-trait .btn-toggle-combinations:focus{outline:none}.target-conditions-trait .btn-toggle-combinations,.entity-selector-trait .btn-toggle-combinations{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#25b9d7;background:rgba(0,0,0,0);border:1px solid #25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-toggle-combinations:hover,.entity-selector-trait .btn-toggle-combinations:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-remove-combinations,.entity-selector-trait .btn-remove-combinations{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-combinations:focus,.entity-selector-trait .btn-remove-combinations:focus{outline:none}.target-conditions-trait .btn-remove-combinations,.entity-selector-trait .btn-remove-combinations{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;color:#dc3545;background:rgba(0,0,0,0)}.target-conditions-trait .btn-remove-combinations:hover,.entity-selector-trait .btn-remove-combinations:hover{text-decoration:underline}.target-conditions-trait .comb-attr-group,.entity-selector-trait .comb-attr-group{flex:none;min-width:120px;max-width:200px;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;overflow:hidden}.target-conditions-trait .comb-attr-group.has-selections,.entity-selector-trait .comb-attr-group.has-selections{border-color:#25b9d7}.target-conditions-trait .comb-attr-group-header,.entity-selector-trait .comb-attr-group-header{display:flex;justify-content:space-between;align-items:center;padding:.375rem .625rem;background:#f1f5f9;border-bottom:1px solid #dee2e6;font-weight:600;font-size:.75rem;color:#1e293b}.comb-attr-group.has-selections .target-conditions-trait .comb-attr-group-header,.comb-attr-group.has-selections .entity-selector-trait .comb-attr-group-header{background:#ecfeff;border-bottom-color:#a5f3fc}.target-conditions-trait .comb-attr-group-name,.entity-selector-trait .comb-attr-group-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.target-conditions-trait .comb-attr-group-count,.entity-selector-trait .comb-attr-group-count{flex-shrink:0;min-width:18px;height:18px;padding:0 .25rem;background:#dee2e6;border-radius:50rem;font-size:11px;font-weight:600;line-height:18px;text-align:center;color:#6c757d}.comb-attr-group.has-selections .target-conditions-trait .comb-attr-group-count,.comb-attr-group.has-selections .entity-selector-trait .comb-attr-group-count{background:#25b9d7;color:#fff}.target-conditions-trait .comb-attr-toolbar,.entity-selector-trait .comb-attr-toolbar{display:flex;align-items:center;gap:.25rem;padding:.25rem .375rem;background:#f8fafc;border-bottom:1px solid #f1f5f9}.target-conditions-trait .comb-toolbar-btn,.entity-selector-trait .comb-toolbar-btn{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .comb-toolbar-btn:focus,.entity-selector-trait .comb-toolbar-btn:focus{outline:none}.target-conditions-trait .comb-toolbar-btn,.entity-selector-trait .comb-toolbar-btn{display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;background:#fff;border:1px solid #dee2e6;border-radius:.2rem;color:#6c757d;cursor:pointer;font-size:.75rem;transition:all .15s ease-in-out}.target-conditions-trait .comb-toolbar-btn:hover,.entity-selector-trait .comb-toolbar-btn:hover{background:#f1f5f9;border-color:#94a3b8;color:#1e293b}.target-conditions-trait .comb-attr-search,.entity-selector-trait .comb-attr-search{flex:1;min-width:60px;padding:.125rem .375rem;border:1px solid #dee2e6;border-radius:.2rem;font-size:11px;outline:none}.target-conditions-trait .comb-attr-search:focus,.entity-selector-trait .comb-attr-search:focus{border-color:#25b9d7}.target-conditions-trait .comb-attr-search::placeholder,.entity-selector-trait .comb-attr-search::placeholder{color:#94a3b8}.target-conditions-trait .comb-attr-values,.entity-selector-trait .comb-attr-values{display:flex;flex-wrap:wrap;gap:.25rem;padding:.375rem;max-height:150px;overflow-y:auto}.target-conditions-trait .comb-attr-values::-webkit-scrollbar,.entity-selector-trait .comb-attr-values::-webkit-scrollbar{width:6px;height:6px}.target-conditions-trait .comb-attr-values::-webkit-scrollbar-track,.entity-selector-trait .comb-attr-values::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.target-conditions-trait .comb-attr-values::-webkit-scrollbar-thumb,.entity-selector-trait .comb-attr-values::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.target-conditions-trait .comb-attr-values::-webkit-scrollbar-thumb:hover,.entity-selector-trait .comb-attr-values::-webkit-scrollbar-thumb:hover{background:#ced4da}.target-conditions-trait .comb-attr-loading,.target-conditions-trait .comb-attr-empty,.target-conditions-trait .comb-attr-error,.entity-selector-trait .comb-attr-loading,.entity-selector-trait .comb-attr-empty,.entity-selector-trait .comb-attr-error{width:100%;text-align:center;color:#94a3b8;font-size:11px;padding:.25rem}.target-conditions-trait .comb-attr-error,.entity-selector-trait .comb-attr-error{color:#dc3545}.target-conditions-trait .comb-attr-value,.entity-selector-trait .comb-attr-value{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .5rem;background:#fff;border:1px solid #94a3b8;border-radius:.75rem;font-size:11px;color:#475569;cursor:pointer;transition:all .15s ease-in-out;white-space:nowrap}.target-conditions-trait .comb-attr-value:hover,.entity-selector-trait .comb-attr-value:hover{background:#f1f5f9;border-color:#6c757d}.target-conditions-trait .comb-attr-value.selected,.entity-selector-trait .comb-attr-value.selected{background:#25b9d7;border-color:#1a9ab7;color:#fff}.target-conditions-trait .comb-attr-value.selected:hover,.entity-selector-trait .comb-attr-value.selected:hover{background:#1a9ab7;border-color:rgb(22.8277511962,135.2105263158,160.6722488038)}.target-conditions-trait .comb-attr-value-count,.entity-selector-trait .comb-attr-value-count{font-size:9px;color:#94a3b8;background:#f1f5f9;padding:1px .25rem;border-radius:.5rem;min-width:14px;text-align:center}.comb-attr-value.selected .target-conditions-trait .comb-attr-value-count,.comb-attr-value.selected .entity-selector-trait .comb-attr-value-count{color:#fff;background:hsla(0,0%,100%,.3)}.target-conditions-trait .combination-conditions-container,.entity-selector-trait .combination-conditions-container{display:flex;flex-direction:column;gap:.5rem}.target-conditions-trait .combination-condition-row,.entity-selector-trait .combination-condition-row{display:flex;align-items:center;gap:.5rem;padding:.5rem;background:#f8fafc;border-radius:.2rem}.target-conditions-trait .combination-group-select,.target-conditions-trait .combination-values-select,.entity-selector-trait .combination-group-select,.entity-selector-trait .combination-values-select{flex:1;min-width:120px}.target-conditions-trait .combination-equals,.entity-selector-trait .combination-equals{font-size:.75rem;color:#6c757d;padding:0 .25rem}.target-conditions-trait .btn-add-combination-condition,.entity-selector-trait .btn-add-combination-condition{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-add-combination-condition:focus,.entity-selector-trait .btn-add-combination-condition:focus{outline:none}.target-conditions-trait .btn-add-combination-condition,.entity-selector-trait .btn-add-combination-condition{display:inline-flex;align-items:center;gap:.25rem;padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:#25b9d7;background:rgba(0,0,0,0);border:1px dashed #25b9d7;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-add-combination-condition:hover,.entity-selector-trait .btn-add-combination-condition:hover{background:rgba(37,185,215,.1)}.target-conditions-trait .btn-add-combination-condition i,.entity-selector-trait .btn-add-combination-condition i{font-size:10px}.target-conditions-trait .btn-remove-combination-row,.entity-selector-trait .btn-remove-combination-row{padding:0;margin:0;background:none;border:none;cursor:pointer;font:inherit;color:inherit}.target-conditions-trait .btn-remove-combination-row:focus,.entity-selector-trait .btn-remove-combination-row:focus{outline:none}.target-conditions-trait .btn-remove-combination-row,.entity-selector-trait .btn-remove-combination-row{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#6c757d;border-radius:.2rem;transition:all .15s ease-in-out}.target-conditions-trait .btn-remove-combination-row:hover,.entity-selector-trait .btn-remove-combination-row:hover{background:rgba(220,53,69,.1);color:#dc3545}.target-conditions-trait .btn-remove-combination-row i,.entity-selector-trait .btn-remove-combination-row i{font-size:12px}.target-conditions-trait .method-dropdown-trigger,.entity-selector-trait .method-dropdown-trigger{display:inline-flex;align-items:center;gap:.5rem;height:36px;padding:0 1rem;border-radius:.25rem;background:#fff;color:#1e293b;font-size:.875rem;cursor:pointer;transition:all .15s ease-in-out;min-width:180px;max-width:320px;border:1px solid #dee2e6}.target-conditions-trait .method-dropdown-trigger:hover,.entity-selector-trait .method-dropdown-trigger:hover{background:#f8fafc;border-color:#dee2e6}.target-conditions-trait .method-dropdown-trigger:focus,.target-conditions-trait .method-dropdown-trigger:active,.entity-selector-trait .method-dropdown-trigger:focus,.entity-selector-trait .method-dropdown-trigger:active{outline:none;border-color:#25b9d7;box-shadow:0 0 0 3px rgba(37,185,215,.1)}.target-conditions-trait .method-trigger-icon,.entity-selector-trait .method-trigger-icon{font-size:.875rem;color:#6c757d;flex-shrink:0;width:18px;text-align:center}.target-conditions-trait .method-trigger-label,.entity-selector-trait .method-trigger-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.target-conditions-trait .method-trigger-caret,.entity-selector-trait .method-trigger-caret{font-size:.75rem;color:#94a3b8;flex-shrink:0;margin-left:auto}.target-conditions-trait .selector-locked .method-dropdown-trigger,.entity-selector-trait .selector-locked .method-dropdown-trigger{background:#f1f5f9;color:#94a3b8;cursor:not-allowed;border-color:#dee2e6}.target-conditions-trait .selector-locked .method-dropdown-trigger:hover,.entity-selector-trait .selector-locked .method-dropdown-trigger:hover{background:#f1f5f9;border-color:#dee2e6}.target-conditions-trait .method-selector-wrapper,.entity-selector-trait .method-selector-wrapper{position:relative}.target-conditions-trait .method-select-hidden,.entity-selector-trait .method-select-hidden{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.method-dropdown-menu{position:absolute;z-index:1001;min-width:200px;max-width:360px;max-height:400px;overflow-y:auto;background:#fff;border-radius:.3rem;padding:.375rem 0;border:1px solid #dee2e6;box-shadow:0 10px 40px rgba(0,0,0,.15);animation:methodDropdownFadeIn .15s ease}.method-dropdown-menu::-webkit-scrollbar{width:6px;height:6px}.method-dropdown-menu::-webkit-scrollbar-track{background:#f8f9fa;border-radius:3px}.method-dropdown-menu::-webkit-scrollbar-thumb{background:#dee2e6;border-radius:3px}.method-dropdown-menu::-webkit-scrollbar-thumb:hover{background:#ced4da}@keyframes methodDropdownFadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.method-dropdown-item{display:flex;align-items:center;gap:.625rem;padding:.5rem 1rem;cursor:pointer;transition:background-color .1s;position:relative}.method-dropdown-item:hover{background:#f1f5f9}.method-dropdown-item.selected{background:rgba(37,185,215,.08)}.method-dropdown-item .method-item-icon{font-size:.875rem;color:#6c757d;width:18px;text-align:center;flex-shrink:0}.method-dropdown-item.selected .method-item-icon{color:#25b9d7}.method-dropdown-item .method-item-label{flex:1;font-size:.875rem;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.method-dropdown-item.selected .method-item-label{color:#0e7490;font-weight:500}.method-dropdown-item .method-item-check{font-size:.75rem;flex-shrink:0;margin-left:auto;color:#25b9d7}.method-dropdown-optgroup{margin-top:.25rem}.method-dropdown-optgroup:first-child{margin-top:0}.method-optgroup-label{padding:.5rem 1rem;font-size:11px;font-weight:600;color:#6c757d;text-transform:uppercase;letter-spacing:.05em;background:#f8fafc;border-top:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9}.method-dropdown-optgroup:first-child .method-optgroup-label{border-top:0}.method-optgroup-items{padding:.25rem 0}.method-optgroup-items .method-dropdown-item{padding-left:1.5rem}.method-info-placeholder{font-size:.75rem;color:#6c757d;font-style:italic}.mpr-info-wrapper{display:inline-flex;align-items:center;position:relative;cursor:help;vertical-align:middle;margin-left:.5rem}.mpr-info-wrapper .mpr-tooltip{position:absolute;background:#fff;color:#1e293b;padding:1rem 1.5rem;border-radius:.25rem;font-size:13px;line-height:1.625;white-space:normal;z-index:1050;max-width:350px;min-width:200px;text-align:left;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);box-shadow:rgba(0,0,0,.12) 0px 1px 1px 0px,rgba(64,68,82,.16) 0px 0px 0px 1px,rgba(64,68,82,.08) 0px 2px 5px 0px}.mpr-info-wrapper .mpr-tooltip::before{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:9px solid rgba(0,0,0,0);border-top-color:rgba(64,68,82,.16)}.mpr-info-wrapper .mpr-tooltip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:8px solid rgba(0,0,0,0);border-top-color:#fff}.mpr-info-wrapper .mpr-tooltip strong{display:block;margin-bottom:.5rem;font-weight:600;color:#337ab7}.mpr-info-wrapper .mpr-tooltip p{margin:0;color:#495057}.mpr-tooltip-fixed{position:fixed;background:#fff;color:#1e293b;padding:1rem 1.5rem;border-radius:.25rem;font-size:13px;line-height:1.625;white-space:normal;z-index:10500;max-width:350px;min-width:200px;text-align:left;box-shadow:rgba(0,0,0,.12) 0px 1px 1px 0px,rgba(64,68,82,.16) 0px 0px 0px 1px,rgba(64,68,82,.08) 0px 2px 5px 0px}.mpr-tooltip-fixed strong{display:block;margin-bottom:.5rem;font-weight:600;color:#337ab7}.mpr-tooltip-fixed p{margin:0;color:#495057}.mpr-icon{display:inline-block;width:16px;height:16px;background-color:#475569;vertical-align:middle;cursor:pointer;transition:background-color .2s;mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}.mpr-icon:hover{background-color:#5bc0de}.mpr-icon.link{background-color:#5bc0de}.mpr-icon.link:hover{background-color:#337ab7}.mpr-icon.icon-info{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E")}.tooltip-list{margin:.5rem 0}.tooltip-list>div{margin:.25rem 0;padding-left:.5rem}.tooltip-example{font-family:monospace;font-size:12px;background:#f1f5f9;padding:.25rem .5rem;border-radius:.2rem;margin:.25rem 0}.tooltip-logic{font-size:11px;color:#6c757d;margin-top:.5rem;padding-top:.5rem;border-top:1px solid #dee2e6} /*# sourceMappingURL=entity-selector.css.map */ diff --git a/assets/css/admin/entity-selector.css.map b/assets/css/admin/entity-selector.css.map index d30181c..29efd6f 100644 --- a/assets/css/admin/entity-selector.css.map +++ b/assets/css/admin/entity-selector.css.map @@ -1 +1 @@ -{"version":3,"sources":["_mixins.scss","layouts/_form-integration.scss","_variables.scss","layouts/_responsive.scss","components/_entity-selector.scss","components/_dropdown.scss","components/_chips.scss","components/_groups.scss","components/_value-picker.scss","components/_modal.scss","components/_list-preview.scss","components/_schedule.scss","components/_tips.scss","components/_condition-trait.scss","components/_combinations.scss","components/_method-dropdown.scss","components/_tooltip.scss"],"names":[],"mappings":"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MH/CM,QGgDN,yBACA,cHQO,MGPP,gCAEA,0FACI,WH9CG,QG+CH,MHrDE,QGwDN,4FACI,WHtFC,QGuFD,MH3FD,KGgGP,gGACI,UH8BU,OG7BV,MHlEM,QGsEV,8EACI,iBACA,gBLkBJ,oHACI,UACA,WAGJ,gIACI,WErGM,QFsGN,kBAGJ,gIACI,WExGM,QFyGN,kBAEA,4IACI,WE3GE,QG+EV,oFACI,QH9BQ,MGkCZ,8EACI,UHYU,OGXV,MHpFM,QGqFN,qBAIJ,gFACI,aACA,mBACA,IH5CQ,MG6CR,oBACA,WHvFO,QGwFP,gCACA,UHDU,OGEV,YHKkB,IGJlB,MHjGM,QGqGV,8FACI,aACA,IHxDQ,MG0DR,kHACI,0BAGJ,sHACI,qCAGJ,sHACI,qCAKR,0KAEI,aACA,mBACA,IH5EQ,MG6ER,QH7EQ,MG8ER,WH9JG,KG+JH,yBACA,cHtEO,OGuEP,eACA,gCAEA,kMACI,WHzIE,QG0IF,aH7HG,QGgIP,8MACI,WHpKO,oBGqKP,aHvKC,QG0KL,8MACI,WACA,mBAEA,sOACI,WHnLL,KGoLK,aHvJF,QG4JV,kKAEI,cACA,WACA,YACA,gBACA,cHtGO,MGuGP,WHzJO,QG2JP,kLACI,WACA,YACA,iBAIR,0EACI,aACA,mBACA,uBACA,cACA,WACA,YACA,WHzKO,QG0KP,cHxHO,MGyHP,MHlLM,QGoLN,8EACI,eAIR,8JAEI,OACA,YAGJ,8JAEI,UHjGU,QGkGV,YH7FgB,IG8FhB,MHhMM,QFhBV,gBACA,uBACA,mBKkNA,sKAEI,UH1GU,OG2GV,MH1MM,QG6MV,8EL1NA,gBACA,uBACA,mBK4NA,8FACI,MHjNM,QGoNV,kGACI,MHtNM,QGuNN,eAIJ,wEACI,cACA,WACA,iBACA,UHhIU,OGmId,oFACI,MHlOM,QGqOV,kFACI,MH1PI,QG2PJ,YHlIkB,IGuId,4HACI,MHrQH,QGwQD,8HACI,MHjQH,QGoQD,8HACI,MHzQJ,QG8QR,oFACI,MH5PM,QG+PV,sEACI,cAGJ,8KAEI,aACA,mBACA,uBACA,cACA,WACA,YACA,yBACA,cHnNO,MGoNP,gCAEA,sLACI,aACA,eACA,MHlTD,KGqTH,wjBAEI,WHnTC,QGoTD,aHpTC,QGsTD,wkBACI,cAMZ,0FACI,aACA,mBACA,IHpPQ,MGwPZ,wEACI,aACA,mBACA,uBACA,IH5PQ,MG6PR,QH1PQ,KG2PR,MH9SM,QG+SN,UH/MU,QGiNV,4EACI,kBACA,WAKR,gFACI,aACA,sBACA,mBACA,uBACA,IH7QQ,MG8QR,QH3QQ,KG4QR,kBACA,MHhUM,QGkUN,oFACI,eACA,WAGJ,oFACI,SACA,UHzOM,QG8Od,oFACI,aACA,mBACA,uBACA,QH/RQ,KGgSR,MHnVM,QGqVN,wFACI,iBACA,kCAKR,wFACI,aACA,mBACA,uBACA,IHhTQ,MGiTR,mBACA,6BACA,UHpQU,OGqQV,MHpWM,QGsWN,0HACI,YHjQc,IGkQd,MHvWE,QG0WN,4HL1SJ,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,wIACI,aExGK,QFyCT,UACA,4CAkEA,sJACI,MElFM,QG4WN,4HAEI,qBACA,UH/QM,OGgRN,eAKR,wFACI,aACA,uBACA,QHtUQ,KGuUR,6BAEA,sHL5XJ,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,kIACI,aKmXA,sHAEI,oBACA,mBACA,IH/UI,OGgVJ,mBACA,UHhSM,QGiSN,YH5RY,IG6RZ,MH9ZC,QG+ZD,WH7ZO,oBG8ZP,cH1UG,OG2UH,gCAEA,kIACI,+BAGJ,sIACI,WACA,YAMZ,kFACI,aACA,mBACA,8BACA,IHvWQ,MGwWR,mBACA,WH9ZM,QG+ZN,6BACA,8BAGJ,oGACI,UHhUU,OGiUV,MHhaM,QGkaN,kHACI,MH/bC,QGmcT,oFACI,aACA,IHzXQ,MG4XZ,0FL9aA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,sGACI,aKqaJ,0FAEI,mBACA,UH/UU,QGgVV,YH3UgB,IG4UhB,cHvXO,OGwXP,gCAEA,gHACI,MHpbE,QGqbF,WH/aG,QGibH,4HACI,WHjbD,QGqbP,8GACI,MH9dD,KG+dC,WH3dC,QG6dD,0HACI,WH7dG,QGmef,8FACI,QHxZQ,KGyZR,WHpcM,QGqcN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WACA,YACA,MHv9BE,QGw9BF,cH/5BG,MGg6BH,eAEA,4QACI,WHh+BF,QGm+BF,gRACI,MHn/BJ,QGy/BR,iFACI,aACA,QHv7BQ,KGw7BR,WHn+BM,QGo+BN,gCAEA,2FACI,cAIR,6EACI,aACA,mBACA,IHp8BQ,MGq8BR,eACA,cHt8BQ,MGw8BR,mGACI,gBAIR,iFACI,oBACA,mBACA,WACA,UHl6BU,OGm6BV,MHjgCM,QGkgCN,eAEA,2HACI,SAIR,6FACI,aACA,mBACA,WAEA,qIACI,UHj7BM,OGk7BN,MHjhCE,QGohCN,kQLn9BJ,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,0RACI,aExGK,QFyCT,UACA,4CAkEA,sTACI,MElFM,QGqhCN,kQAGI,WACA,qBACA,UH17BM,OG67BV,iIACI,MH7hCE,QGiiCV,2FLniCA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,uGACI,aK0hCJ,2FAEI,aACA,mBACA,uBACA,WACA,YACA,MHxiCM,QGyiCN,cHh/BO,MGi/BP,eACA,iBAEA,uGACI,WHtiCG,QGuiCH,MH5iCE,QGijCV,yFACI,sBACA,oBACA,IHvgCQ,MG0gCZ,mFACI,aACA,mBACA,IH7gCQ,MG8gCR,eAGJ,uRAGI,aACA,mBACA,WAGJ,gXAII,UH9+BU,OG++BV,MH9kCM,QG+kCN,mBAEA,gYACI,oBAIR,yFACI,MHvlCM,QG0lCV,88BLzhCA,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,skCACI,aExGK,QFyCT,UACA,4CAkEA,ktCACI,MElFM,QG2lCV,88BAWI,WACA,qBACA,UHxgCU,OG2gCd,iULziCA,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,qWACI,aExGK,QFyCT,UACA,4CAkEA,+YACI,MElFM,QG2mCV,iUAII,qBACA,UHhhCU,OGihCV,gBAGJ,iUAGI,aACA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YACA,MJlbK,QImbL,cJ9VO,MI+VP,gCAEA,8FACI,WJrbO,oBIwbX,sFACI,eAKR,0FACI,oBACA,mBACA,WACA,kBACA,MJzaM,QI0aN,UJ3UU,OI4UV,eAEA,gHACI,MJ7bC,QIgcL,kHACI,MJzcC,QI4cL,oHACI,YJhVc,IIqVtB,sFACI,aACA,oBACA,IJ/YQ,OK5EZ,4EACI,WLJG,KKKH,yBACA,cLqFO,MKpFP,gBAIJ,0FACI,aACA,mBACA,8BACA,ILkEQ,KKjER,mBACA,WLUM,QKTN,gCAGJ,wFACI,aACA,mBACA,ILwDQ,MKvDR,ULuGU,QKtGV,YL4GkB,IK3GlB,MLQM,QKNN,oHACI,oBACA,mBACA,uBACA,eACA,YACA,iBACA,WLhCC,QKiCD,MLrCD,KKsCC,ULyFM,OKxFN,YLgGU,IK/FV,cLqDK,MKjDb,4FACI,aACA,mBACA,ILgCQ,OK7BZ,oFPpBA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,gGACI,aOWJ,oFAEI,aACA,mBACA,uBACA,WACA,YACA,MLzBM,QK0BN,cL+BO,MK9BP,gCAEA,gGACI,WLtBG,QKuBH,ML9BE,QKiCN,8GACI,WLrDM,QKsDN,MLvDA,QK4DR,8JAEI,QLMQ,KKFZ,kFACI,cLCQ,KKEZ,8EACI,aACA,mBACA,ILPQ,OKQR,cLPQ,MKQR,ULuCU,OKtCV,YL6CkB,IK5ClB,yBACA,qBAEA,0GACI,MLnFM,QKqFN,8GACI,MLxFH,QK4FL,0GACI,MLzFA,QK2FA,8GACI,ML5FJ,QKkGR,kFACI,aACA,mBACA,ILlCQ,MKmCR,cLnCQ,MKsCZ,kGACI,OACA,kBAGJ,8EP1BA,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,0FACI,aExGK,QFyCT,UACA,4CAkEA,wGACI,MElFM,QK4FV,8EAEI,mBACA,eACA,gBACA,mPACA,uCACA,4BACA,4BAGJ,kFPxGA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,8FACI,aO+FJ,kFAEI,aACA,mBACA,uBACA,WACA,YACA,ML7GM,QK8GN,cL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mPX,yBACI,WRzRK,QQ0RL,aR1RK,QQ2RL,MR/RG,KQkSP,2BACI,WACA,mBAKR,iBACI,aACA,mBACA,8BACA,mBACA,WRnRU,QQoRV,6BACA,URjLc,OQkLd,MRjRU,QQoRd,eACI,YRhLoB,IQkLpB,sBACI,MRrRM,QQ0Rd,iBACI,aACA,eACA,IRhPY,MQiPZ,mBACA,WR5RU,QQ6RV,gCAGJ,qBVxFI,oBACA,mBACA,IEjKY,OFkKZ,qBACA,UEnHc,OFoHd,YE9GoB,IF+GpB,WExNU,QFyNV,MEpNU,QFqNV,cEzJa,MF2Jb,kCA1NA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,wCACI,aAiNJ,kCArPA,aACA,mBACA,uBAsPI,WACA,YACA,eACA,ME9NM,QF+NN,kBAEA,wCACI,0BACA,MEtPA,QQ6TZ,gBVzOI,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,sBACI,aExGK,QFyCT,UACA,4CAkEA,6BACI,MElFM,QQ2Sd,gBAEI,OACA,gBACA,sBACA,URhNc,OQoNlB,yBACI,iBACA,gBV3NA,4CACI,UACA,WAGJ,kDACI,WErGM,QFsGN,kBAGJ,kDACI,WExGM,QFyGN,kBAEA,wDACI,WE3GE,QQ4Td,qBACI,oBACA,mBACA,YACA,qBACA,WRzTU,QQ0TV,cRvQW,MQwQX,URlOc,OQoOd,yBACI,WACA,YACA,iBACA,kBAGJ,wCACI,MRxUM,QQyUN,YRvOgB,IFlHpB,gBACA,uBACA,mBUyVI,gBC9WR,2BACI,WTDO,KSEP,yBACA,cTwFW,MSpFf,iBACI,aACA,mBACA,8BACA,ITsEY,KSrEZ,qBACA,WTcU,QSbV,gCACA,8BACA,eACA,iBACA,6CAEA,uBACI,WTOM,QSHd,gBACI,aACA,mBACA,WACA,UTmGc,QSlGd,YTwGsB,ISvGtB,MTIU,QSFV,kBACI,MTFM,QSOd,eACI,QTyCY,KSrChB,kBACI,cTqCY,OSnCZ,6BACI,gBAIR,wBACI,aACA,mBACA,ITyBY,MSxBZ,cTwBY,MSvBZ,UTuEc,QStEd,YT4EsB,IS3EtB,MTxBU,QS0BV,0BACI,MT9BM,QSkCd,8BACI,cTcY,KSbZ,UT2Dc,OS1Dd,MTrCU,QSyCd,gBACI,aACA,eACA,ITKY,KSFhB,gBACI,OACA,gBAGJ,gBACI,cACA,qBACA,UTwCc,OSvCd,YT6CoB,IS5CpB,MTxDU,QS2Dd,gBXKI,WACA,mBACA,UE6Bc,QF5Bd,YEsCoB,IFrCpB,MElEU,QFmEV,iBEtGO,KFuGP,yBACA,cEdW,OFeX,qEAEA,sBACI,aExGK,QFyCT,UACA,4CAkEA,6BACI,MElFM,QSkEd,iBACI,aACA,sBACA,ITpBY,MSuBhB,SACI,aACA,mBACA,ITzBY,KS0BZ,QT3BY,MS4BZ,WTtEU,QSuEV,cTnBW,OSqBX,kBACI,WAIR,YACI,aACA,mBACA,ITvCY,MSwCZ,gBAGJ,cACI,WACA,YACA,eAGJ,UACI,UTFc,QSGd,YTEoB,ISDpB,MTjGU,QSqGd,iBACI,OACA,kBACA,YACA,WTpGW,QSqGX,cThDa,MSiDb,eAGJ,eACI,kBACA,MACA,YACA,WTjJS,QSkJT,cTzDa,MS0Db,gCAGJ,iBACI,kBACA,QACA,WACA,YACA,WT/JO,KSgKP,yBACA,kBACA,gCACA,YACA,WTjEW,kCSkEX,uCAEA,uBACI,WTpEO,6BSuEX,wBACI,gBAGJ,8BACI,UAGJ,4BACI,UAKR,WACI,aACA,mBACA,IT7GY,OS8GZ,gBACA,UT/Dc,OSgEd,sBACA,MT/JU,QSkKd,gBACI,MTpKU,QSwKd,iBACI,QTxHY,KSyHZ,WTpKU,QSqKV,cTjHW,OSoHf,gBACI,aACA,mBACA,ITjIY,MSkIZ,cTjIY,KSoIhB,kBACI,WACA,YACA,eAGJ,eACI,UT5Fc,QS6Fd,YTxFoB,ISyFpB,MT3LU,QS8Ld,mBACI,aACA,eACA,ITrJY,OSwJhB,sBXOI,oBACA,mBACA,IEjKY,OFkKZ,qBACA,UEnHc,OFoHd,YE9GoB,IF+GpB,WExNU,QFyNV,MEpNU,QFqNV,cEzJa,MF2Jb,mCA1NA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,yCACI,aAiNJ,mCArPA,aACA,mBACA,uBAsPI,WACA,YACA,eACA,ME9NM,QF+NN,kBAEA,yCACI,0BACA,MEtPA,QS0NZ,sBAEI,eAEA,+BACI,WTtOW,oBSuOX,MTzOK,QS8Ob,aACI,aACA,mBACA,ITrKY,MSsKZ,mBACA,WTlOY,QSmOZ,cT9JW,OS+JX,UT1Hc,OS2Hd,MTtOM,QSwON,eACI,UT7HU,QSgId,yBACI,sBACA,YT5HkB,ISiI1B,kBACI,aACA,sBACA,IT3LY,OS4LZ,QT1LY,KS2LZ,WTtOU,QSuOV,cTnLW,OSoLX,UT9Ic,QS+Id,MT9OU,QSgPV,gCACI,aACA,mBACA,ITpMQ,MSsMR,kCACI,MT9QC,QS+QD,UTxJM,QS2JV,2CACI,MT5PE,QSmQV,oDACI,aAGJ,sDACI,cT7MO,MUxFX,kFACI,wBACA,yBACA,cVqFO,MUpFP,gBACA,6DAIJ,0EACI,aACA,mBACA,YACA,oBACA,eACA,iBACA,6CAEA,sFACI,2BAIJ,sGACI,eACA,MVXC,QUeL,oFACI,OACA,eACA,YVmGc,IUlGd,MVQG,QUHX,0EACI,UVqFU,OUpFV,MVDO,QUEP,yBAKA,8HACI,yBAGJ,gIACI,cAKR,4EACI,aACA,wBAIJ,sEACI,aACA,IVcQ,KUbR,2DAIJ,oEACI,aACA,IVOQ,KUNR,QVMQ,KULR,WV5EG,KU6EH,cVaO,OUZP,yBAIJ,oEACI,cACA,WACA,YACA,aACA,mBACA,uBACA,WVnFW,oBUoFX,qBACA,MVvFK,QUwFL,UVoCU,QUhCd,oEACI,OACA,YAEA,kFACI,cACA,UVyBM,OUxBN,YV+Bc,IU9Bd,MV3DG,QU4DH,qBAGJ,wEACI,eACA,MV9EE,QU+EF,kBACA,SAKR,0EACI,WVrCQ,KUsCR,qBACA,WVxHG,KUyHH,cV/BO,OUgCP,0BACA,eACA,MV5FM,QU6FN,kBAEA,8EACI,MV5HC,QU6HD,oBCjIZ,iBACI,WXDO,KWEP,yBACA,cXwFW,MWvFX,cX8EY,OW5EZ,4BACI,gBAMJ,mDACI,kCACA,cX4EO,MWzEX,0CACI,yBAQR,wBACI,aACA,mBACA,8BACA,IXmDY,OWlDZ,eACA,uBACA,WXIU,QWHV,gCACA,8BACA,eACA,6CAEA,8BACI,WXFO,QWMf,mBACI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KV,kBCxMJ,kBACI,oBACA,mBACA,kBACA,YACA,sBACA,kBAIJ,+BACI,kBACA,WdfO,KcgBP,Md8BW,Qc7BX,oBACA,cdwEW,OcvEX,eACA,kBACA,mBACA,aACA,gBACA,gBACA,gBACA,yBACA,SACA,2BACA,iHAKA,uCACI,WACA,kBACA,SACA,SACA,2BACA,+BACA,oCAIJ,sCACI,WACA,kBACA,SACA,SACA,2BACA,+BACA,iBdpDG,KcuDP,sCACI,cACA,oBACA,Yd4EkB,Ic3ElB,cAGJ,iCACI,SACA,Md/BM,QcuCd,mBACI,eACA,Wd1EO,Kc2EP,Md7BW,Qc8BX,oBACA,cdaW,OcZX,eACA,kBACA,mBACA,cACA,gBACA,gBACA,gBACA,iHAIA,0BACI,cACA,oBACA,Yd0CkB,IczClB,cAGJ,qBACI,SACA,MdjEM,QcyEd,UACI,qBACA,WACA,YACA,iBdlEW,QcmEX,sBACA,eACA,gCACA,kBACA,sBACA,qBACA,0BACA,8BACA,6BAEA,gBACI,yBAGJ,eACI,yBAEA,qBACI,yBAMZ,oBACI,2nBACA,moBAOJ,cACI,eAEA,kBACI,gBACA,mBAIR,iBACI,sBACA,eACA,WdrHW,QcsHX,qBACA,cdrEW,McsEX,gBAGJ,eACI,eACA,MdpIU,QcqIV,iBACA,kBACA","file":"entity-selector.css","sourcesContent":["/**\n * Entity Selector Mixins\n * Reusable patterns - prefer Bootstrap utilities in HTML where possible\n */\n\n@use 'variables' as *;\n\n// =============================================================================\n// Layout\n// =============================================================================\n\n@mixin flex-center {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n@mixin flex-between {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n// =============================================================================\n// Text\n// =============================================================================\n\n@mixin text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// =============================================================================\n// Interactive Elements\n// =============================================================================\n\n// Reset button styles\n@mixin button-reset {\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n cursor: pointer;\n font: inherit;\n color: inherit;\n\n &:focus {\n outline: none;\n }\n}\n\n// Focus ring (Bootstrap 4 style)\n@mixin focus-ring($color: $es-primary) {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba($color, 0.25);\n}\n\n// Interactive hover state\n@mixin interactive-item {\n cursor: pointer;\n transition: background-color $es-transition-fast, color $es-transition-fast;\n\n &:hover {\n background-color: $es-bg-hover;\n }\n}\n\n// =============================================================================\n// Cards & Containers\n// =============================================================================\n\n@mixin card {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n}\n\n@mixin dropdown-container {\n position: absolute;\n z-index: $es-z-dropdown;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n box-shadow: $es-shadow-lg;\n}\n\n// =============================================================================\n// Form Elements\n// =============================================================================\n\n// Reset input styles (for inputs in custom wrappers)\n@mixin input-reset {\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n font: inherit;\n color: inherit;\n\n &:focus {\n outline: none;\n }\n}\n\n@mixin input-base {\n width: 100%;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n line-height: $es-line-height-normal;\n color: $es-text-primary;\n background-color: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: border-color $es-transition-fast, box-shadow $es-transition-fast;\n\n &:focus {\n border-color: $es-primary;\n @include focus-ring($es-primary);\n }\n\n &::placeholder {\n color: $es-text-light;\n }\n}\n\n// =============================================================================\n// Scrollbar\n// =============================================================================\n\n@mixin custom-scrollbar {\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: $es-gray-100;\n border-radius: 3px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: $es-gray-300;\n border-radius: 3px;\n\n &:hover {\n background: $es-gray-400;\n }\n }\n}\n\n// =============================================================================\n// Badges & Chips\n// =============================================================================\n\n@mixin badge($bg: $es-gray-200, $color: $es-gray-700) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.125rem 0.5rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n line-height: 1;\n background-color: $bg;\n color: $color;\n border-radius: $es-radius-full;\n}\n\n// Count badge with preview icon (used for tab badges, match counts, totals)\n// Note: Eye icon is provided in HTML via \n@mixin count-badge($bg: $es-primary) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-width: 20px;\n height: 20px;\n padding: 0 0.5rem;\n background: $bg;\n color: $es-white;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n border-radius: $es-radius-full;\n cursor: pointer;\n transition: all $es-transition-fast;\n flex-shrink: 0;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 2px 8px rgba($bg, 0.4);\n }\n\n // Loading state - spinner icon replaces eye\n &.loading {\n cursor: wait;\n\n i {\n font-size: 10px;\n animation: spin 0.6s linear infinite;\n }\n\n &:hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n // Inactive/empty state\n &.inactive,\n &.no-matches {\n background: $es-slate-400;\n cursor: default;\n\n &:hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n // Popover open state\n &.popover-open {\n background: darken($bg, 10%);\n box-shadow: 0 2px 8px rgba($bg, 0.4);\n }\n\n // Icon inside badge (eye, spinner, etc.)\n i {\n font-size: 10px;\n line-height: 1;\n opacity: 0.8;\n }\n\n &:hover i {\n opacity: 1;\n }\n\n .preview-count {\n font-weight: $es-font-weight-bold;\n }\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@mixin chip {\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-xs $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n background: $es-gray-200;\n color: $es-gray-700;\n border-radius: $es-radius-full;\n\n .chip-remove {\n @include button-reset;\n @include flex-center;\n width: 14px;\n height: 14px;\n font-size: 10px;\n color: $es-text-muted;\n border-radius: 50%;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n }\n}\n\n// =============================================================================\n// Toggle Switch\n// =============================================================================\n\n@mixin toggle-switch($width: 36px, $height: 20px) {\n position: relative;\n width: $width;\n height: $height;\n border-radius: $height;\n background: $es-gray-400;\n transition: background-color $es-transition-normal;\n cursor: pointer;\n\n &::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: $height - 4px;\n height: $height - 4px;\n background: $es-white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n transition: transform $es-transition-normal;\n }\n\n &.active {\n background: $es-success;\n\n &::after {\n transform: translateX($width - $height);\n }\n }\n}\n\n// =============================================================================\n// Screen Reader Only\n// =============================================================================\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n","/**\n * Form Integration Styles\n * Handles PrestaShop admin form layout overrides\n */\n\n@use '../variables' as *;\n\n// Base border reset for all entity-selector elements\n.target-conditions-trait,\n.target-conditions-trait *,\n.entity-selector-trait,\n.entity-selector-trait *,\n.method-dropdown-menu,\n.method-dropdown-menu *,\n.target-preview-popover,\n.target-preview-popover * {\n border-style: solid;\n border-width: 0;\n border-color: $es-border-color;\n}\n\n// Full-width form group override using :has()\n.form-group:has(.entity-selector-trait),\n.form-group:has(.target-conditions-trait),\n.form-group:has(.condition-trait) {\n display: block;\n\n > .control-label {\n display: none;\n }\n\n > .col-lg-8 {\n width: 100%;\n max-width: 100%;\n padding-left: $es-spacing-md;\n padding-right: $es-spacing-md;\n flex: 0 0 100% !important;\n }\n}\n\n// Fallback class for browsers without :has() support\n.form-group.condition-trait-fullwidth {\n display: block;\n\n > .control-label {\n display: none;\n }\n\n > .col-lg-8 {\n width: 100%;\n max-width: 100%;\n padding-left: $es-spacing-md;\n padding-right: $es-spacing-md;\n flex: 0 0 100% !important;\n }\n}\n\n// Dropdown overflow fix\n// When dropdown is open, parent containers must allow overflow\n.panel:has(.target-search-dropdown.show),\n.card:has(.target-search-dropdown.show),\n.form-wrapper:has(.target-search-dropdown.show),\n.panel-body:has(.target-search-dropdown.show),\n.card-body:has(.target-search-dropdown.show),\n.form-group:has(.target-search-dropdown.show),\n.col-lg-8:has(.target-search-dropdown.show),\n.col-lg-12:has(.target-search-dropdown.show) {\n overflow: visible !important;\n}\n\n// Target conditions wrapper hierarchy overflow fix\n.target-conditions-trait:has(.target-search-dropdown.show),\n.entity-selector-trait:has(.target-search-dropdown.show),\n.condition-trait-body:has(.target-search-dropdown.show),\n.target-block-content:has(.target-search-dropdown.show),\n.target-block-groups:has(.target-search-dropdown.show),\n.target-group:has(.target-search-dropdown.show),\n.target-group-body:has(.target-search-dropdown.show),\n.target-search-wrapper:has(.target-search-dropdown.show) {\n overflow: visible !important;\n}\n","/**\n * Entity Selector Variables\n * Bootstrap 4 compatible values for PrestaShop admin theme\n */\n\n// =============================================================================\n// Base Colors\n// =============================================================================\n\n$es-white: #ffffff !default;\n$es-black: #000000 !default;\n\n// Primary (PrestaShop admin accent)\n$es-primary: #25b9d7 !default;\n$es-primary-hover: #1a9ab7 !default;\n$es-primary-light: rgba(37, 185, 215, 0.1) !default;\n\n// Semantic colors (Bootstrap 4 aligned)\n$es-success: #28a745 !default;\n$es-success-light: #d4edda !default;\n$es-success-dark: #1e7e34 !default;\n\n$es-danger: #dc3545 !default;\n$es-danger-light: #f8d7da !default;\n$es-danger-dark: #bd2130 !default;\n\n$es-warning: #ffc107 !default;\n$es-warning-light: #fff3cd !default;\n\n$es-info: #17a2b8 !default;\n$es-info-light: #d1ecf1 !default;\n\n// =============================================================================\n// Gray Scale (Bootstrap 4)\n// =============================================================================\n\n$es-gray-100: #f8f9fa !default;\n$es-gray-200: #e9ecef !default;\n$es-gray-300: #dee2e6 !default;\n$es-gray-400: #ced4da !default;\n$es-gray-500: #adb5bd !default;\n$es-gray-600: #6c757d !default;\n$es-gray-700: #495057 !default;\n$es-gray-800: #343a40 !default;\n$es-gray-900: #212529 !default;\n\n// Slate (subtle variations)\n$es-slate-50: #f8fafc !default;\n$es-slate-100: #f1f5f9 !default;\n$es-slate-200: #e2e8f0 !default;\n$es-slate-300: #cbd5e1 !default;\n$es-slate-400: #94a3b8 !default;\n$es-slate-500: #64748b !default;\n$es-slate-600: #475569 !default;\n$es-slate-700: #334155 !default;\n$es-slate-800: #1e293b !default;\n$es-slate-900: #0f172a !default;\n\n// Cyan\n$es-cyan-50: #ecfeff !default;\n$es-cyan-100: #cffafe !default;\n$es-cyan-200: #a5f3fc !default;\n$es-cyan-500: #06b6d4 !default;\n$es-cyan-600: #0891b2 !default;\n$es-cyan-700: #0e7490 !default;\n\n// =============================================================================\n// Semantic Aliases\n// =============================================================================\n\n$es-bg-header: $es-gray-100 !default;\n$es-bg-hover: $es-gray-200 !default;\n$es-bg-active: $es-gray-200 !default;\n$es-bg-body: $es-white !default;\n\n$es-border-color: $es-gray-300 !default;\n$es-border-light: $es-gray-200 !default;\n$es-border-dark: $es-gray-400 !default;\n\n$es-text-primary: $es-gray-900 !default;\n$es-text-secondary: $es-gray-700 !default;\n$es-text-muted: $es-gray-600 !default;\n$es-text-light: $es-gray-500 !default;\n\n// =============================================================================\n// Spacing (Bootstrap 4 compatible)\n// =============================================================================\n\n$es-spacing-xs: 0.25rem !default; // 4px\n$es-spacing-sm: 0.5rem !default; // 8px\n$es-spacing-md: 1rem !default; // 16px\n$es-spacing-lg: 1.5rem !default; // 24px\n$es-spacing-xl: 2rem !default; // 32px\n\n// =============================================================================\n// Border Radius (Bootstrap 4 compatible)\n// =============================================================================\n\n$es-radius-sm: 0.2rem !default;\n$es-radius-md: 0.25rem !default;\n$es-radius-lg: 0.3rem !default;\n$es-radius-xl: 0.5rem !default;\n$es-radius-full: 50rem !default;\n\n// =============================================================================\n// Box Shadows (Bootstrap 4 compatible)\n// =============================================================================\n\n$es-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !default;\n$es-shadow-md: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !default;\n$es-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175) !default;\n$es-shadow-xl: 0 1.5rem 4rem rgba(0, 0, 0, 0.2) !default;\n\n// =============================================================================\n// Transitions\n// =============================================================================\n\n$es-transition-fast: 0.15s ease-in-out !default;\n$es-transition-normal: 0.2s ease-in-out !default;\n$es-transition-slow: 0.3s ease-in-out !default;\n\n// =============================================================================\n// Z-Index (below Bootstrap modal)\n// =============================================================================\n\n$es-z-dropdown: 1000 !default;\n$es-z-modal: 1050 !default;\n$es-z-popover: 1060 !default;\n$es-z-tooltip: 1070 !default;\n\n// =============================================================================\n// Typography\n// =============================================================================\n\n$es-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n\n$es-font-size-xs: 0.75rem !default; // 12px\n$es-font-size-sm: 0.875rem !default; // 14px\n$es-font-size-base: 1rem !default; // 16px\n$es-font-size-lg: 1.125rem !default; // 18px\n\n$es-font-weight-normal: 400 !default;\n$es-font-weight-medium: 500 !default;\n$es-font-weight-semibold: 600 !default;\n$es-font-weight-bold: 700 !default;\n\n$es-line-height-tight: 1.25 !default;\n$es-line-height-normal: 1.5 !default;\n","/**\n * Responsive Styles\n * Media query adjustments for different screen sizes\n */\n\n@use '../variables' as *;\n\n// Tablet and below\n@media (max-width: 991px) {\n .target-conditions-trait,\n .entity-selector-trait {\n .condition-trait-header {\n flex-direction: column;\n align-items: flex-start;\n gap: $es-spacing-sm;\n }\n\n .trait-header-right {\n width: 100%;\n justify-content: flex-end;\n }\n\n .target-block-tabs {\n flex-wrap: wrap;\n }\n }\n}\n\n// Mobile\n@media (max-width: 767px) {\n .target-conditions-trait,\n .entity-selector-trait {\n .target-block-tab {\n padding: $es-spacing-sm;\n font-size: $es-font-size-xs;\n }\n\n .target-group-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .target-search-dropdown {\n width: 100% !important;\n left: 0 !important;\n right: 0 !important;\n }\n\n .dropdown-results-grid {\n grid-template-columns: 1fr !important;\n }\n }\n}\n\n// High-resolution displays\n@media (min-width: 1600px) {\n .target-conditions-trait,\n .entity-selector-trait {\n .dropdown-results-grid.view-grid-3 {\n grid-template-columns: repeat(4, 1fr);\n }\n }\n}\n","/**\n * Entity Selector - Main Component Styles\n * Wrapper, header, body, tabs, blocks\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Main wrapper (supports both .target-conditions-trait and .entity-selector-trait)\n.target-conditions-trait,\n.entity-selector-trait {\n position: relative;\n overflow: visible;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n\n // Trait Header (collapsible)\n .condition-trait-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n padding: 0.875rem $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n }\n\n .trait-header-left {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 0;\n flex: 1;\n }\n\n .trait-icon {\n font-size: $es-font-size-lg;\n color: $es-text-muted;\n flex-shrink: 0;\n }\n\n .trait-title-group {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n }\n\n .trait-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n white-space: nowrap;\n }\n\n .trait-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n // Total count badge in header\n .trait-total-count {\n @include count-badge($es-primary);\n margin-left: $es-spacing-sm;\n }\n\n // Show all toggle switch\n .trait-show-all-toggle {\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-right: 0.75rem;\n padding: 0.25rem $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.05);\n }\n\n .toggle-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n }\n\n .show-all-checkbox {\n display: none;\n }\n\n .toggle-slider {\n position: relative;\n width: 36px;\n height: 20px;\n background: $es-slate-300;\n border-radius: $es-radius-full;\n transition: background-color $es-transition-normal;\n\n &::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n background: $es-white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n transition: transform $es-transition-normal;\n }\n }\n\n .show-all-checkbox:checked + .toggle-slider {\n background: $es-success;\n\n &::after {\n transform: translateX(16px);\n }\n }\n }\n\n // Validation error states\n &.has-validation-error {\n border-color: $es-danger;\n box-shadow: 0 0 0 3px rgba($es-danger, 0.1);\n\n .condition-trait-header {\n border-bottom-color: $es-danger;\n }\n }\n\n .trait-validation-error {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: 0.625rem $es-spacing-md;\n background: $es-danger-light;\n color: #b91c1c;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n border-bottom: 1px solid #fecaca;\n\n i {\n color: $es-danger;\n }\n }\n\n // Required indicator\n &.trait-required .trait-title::after {\n content: ' *';\n color: $es-danger;\n }\n\n // Body\n .condition-trait-body {\n padding: 0;\n background: $es-white;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n // Block type tabs\n .target-block-tabs {\n display: flex;\n flex-wrap: wrap;\n gap: 0;\n padding: 0;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n }\n\n .target-block-tab {\n position: relative;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex: none;\n min-width: 0;\n padding: 0.625rem $es-spacing-md;\n margin-bottom: -1px;\n background: transparent;\n border: 0;\n border-bottom: 2px solid transparent;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-slate-700;\n }\n\n &.active {\n background: $es-white;\n border-bottom-color: $es-cyan-500;\n color: $es-primary;\n }\n\n i {\n font-size: $es-font-size-sm;\n }\n\n .tab-label {\n white-space: nowrap;\n }\n\n .tab-badge {\n @include count-badge($es-primary);\n }\n\n &.has-data:not(.active) .tab-badge {\n @include count-badge($es-slate-400);\n }\n }\n\n // Block container\n .target-block-container {\n display: none;\n\n &.active {\n display: block;\n }\n }\n\n .target-block-content {\n padding: $es-spacing-md;\n }\n\n .target-block-groups {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-md;\n }\n\n // Block header (for standalone blocks)\n .target-block-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n }\n\n // Empty state\n .target-block-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: $es-font-size-sm;\n }\n }\n\n // Collapse toggle\n .trait-collapse-toggle,\n .collapse-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n cursor: pointer;\n transition: transform $es-transition-normal;\n\n &.collapsed {\n transform: rotate(-90deg);\n }\n }\n\n // Header actions\n .trait-header-right {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n // Collapsed state\n &.collapsed {\n .condition-trait-body {\n display: none;\n }\n\n .condition-trait-header {\n border-radius: $es-radius-lg;\n }\n }\n}\n\n// Single mode specific styles\n.target-conditions-trait.single-mode,\n.entity-selector-trait.single-mode {\n .target-block-tabs {\n display: none;\n }\n\n .target-block-container {\n display: block;\n }\n}\n\n// Header action buttons\n.target-conditions-trait,\n.entity-selector-trait {\n .header-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .header-action-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n background: transparent;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n\n i {\n font-size: 12px;\n }\n }\n}\n","/**\n * Search Dropdown Component\n * Includes search input, filter panel, results grid\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Search wrapper\n .target-search-wrapper {\n position: relative;\n }\n\n // Search dropdown\n .target-search-dropdown {\n @include dropdown-container;\n display: none;\n width: 600px;\n max-width: calc(100vw - 40px);\n\n &.show {\n display: block;\n }\n }\n\n // Dropdown header\n .dropdown-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n }\n\n .dropdown-search-input {\n @include input-base;\n flex: 1;\n padding: $es-spacing-sm $es-spacing-md;\n }\n\n .dropdown-close-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n color: $es-text-muted;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n }\n\n // Dropdown controls bar\n .dropdown-controls {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-white;\n border-bottom: 1px solid $es-border-color;\n }\n\n .dropdown-controls-left,\n .dropdown-controls-right {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n // View mode buttons\n .view-mode-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n background: transparent;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n color: $es-text-secondary;\n }\n\n &.active {\n background: $es-primary;\n color: $es-white;\n }\n }\n\n // Results count\n .dropdown-results-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n // Dropdown body\n .dropdown-body {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n // Results container\n .dropdown-results {\n padding: $es-spacing-sm;\n }\n\n // Results count text\n .results-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n padding: $es-spacing-xs $es-spacing-sm;\n }\n\n // Results header (for list view columns)\n .results-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-md;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n // Grid view\n .dropdown-results-grid {\n display: grid;\n gap: $es-spacing-sm;\n\n &.view-list {\n grid-template-columns: 1fr;\n }\n\n &.view-grid-2 {\n grid-template-columns: repeat(2, 1fr);\n }\n\n &.view-grid-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n // Result item (both class names for compatibility)\n .dropdown-result-item,\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.selected {\n background: $es-primary-light;\n border-color: $es-primary;\n }\n\n &.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n\n &:hover {\n background: $es-white;\n border-color: $es-border-color;\n }\n }\n }\n\n .result-item-image,\n .result-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .result-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n background: $es-slate-100;\n border-radius: $es-radius-sm;\n color: $es-text-muted;\n\n i {\n font-size: 16px;\n }\n }\n\n .result-item-info,\n .result-info {\n flex: 1;\n min-width: 0;\n }\n\n .result-item-name,\n .result-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .result-item-meta,\n .result-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .subtitle-line {\n @include text-truncate;\n }\n\n .subtitle-line-primary {\n color: $es-text-secondary;\n }\n\n .subtitle-line-secondary {\n color: $es-text-muted;\n font-size: 11px;\n }\n\n // Result columns (for product list view)\n .result-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n font-size: $es-font-size-xs;\n }\n\n .result-col-price {\n color: $es-text-secondary;\n }\n\n .result-col-sale {\n color: $es-danger;\n font-weight: $es-font-weight-semibold;\n }\n\n .result-col-stock {\n .col-value {\n &.stock-ok {\n color: $es-success;\n }\n\n &.stock-low {\n color: $es-warning;\n }\n\n &.stock-out {\n color: $es-danger;\n }\n }\n }\n\n .result-col-sales {\n color: $es-text-muted;\n }\n\n .col-value {\n display: block;\n }\n\n .result-item-checkbox,\n .result-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid $es-border-dark;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n\n .dropdown-result-item.selected &,\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n\n // Product-specific result item\n .result-item-product {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n // No results state\n .no-results {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n font-size: 1.25rem;\n opacity: 0.5;\n }\n }\n\n // Empty state\n .dropdown-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: $es-font-size-sm;\n }\n }\n\n // Loading state\n .dropdown-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n\n i {\n font-size: 1.5rem;\n animation: spin 1s linear infinite;\n }\n }\n\n // Load more controls\n .load-more-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n border-top: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n .remaining-count {\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n .load-more-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 70px;\n }\n }\n\n // Load more button\n .dropdown-load-more {\n display: flex;\n justify-content: center;\n padding: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n\n .load-more-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n background: $es-primary-light;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n\n &.loading {\n opacity: 0.7;\n cursor: wait;\n }\n }\n }\n\n // Dropdown footer\n .dropdown-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n .dropdown-selection-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n strong {\n color: $es-primary;\n }\n }\n\n .dropdown-actions {\n display: flex;\n gap: $es-spacing-sm;\n }\n\n .dropdown-action-btn {\n @include button-reset;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &.btn-cancel {\n color: $es-text-secondary;\n background: $es-slate-100;\n\n &:hover {\n background: $es-slate-200;\n }\n }\n\n &.btn-apply {\n color: $es-white;\n background: $es-primary;\n\n &:hover {\n background: $es-primary-hover;\n }\n }\n }\n\n // Filter panel\n .dropdown-filter-panel {\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n }\n\n .filter-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: $es-spacing-sm;\n }\n\n .filter-panel-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n }\n\n .filter-panel-toggle {\n @include button-reset;\n font-size: $es-font-size-xs;\n color: $es-primary;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .filter-panel-content {\n display: grid;\n gap: $es-spacing-sm;\n grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n }\n\n .filter-group {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .filter-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n }\n\n .filter-select,\n .filter-input {\n @include input-base;\n padding: 0.375rem $es-spacing-sm;\n font-size: $es-font-size-xs;\n }\n}\n\n// Category tree view\n.target-conditions-trait,\n.entity-selector-trait {\n .category-tree {\n padding: $es-spacing-sm;\n }\n\n .tree-container {\n // Contains tree items\n }\n\n .tree-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n // Tree item (used by JavaScript)\n .tree-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: 0.375rem $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n\n .tree-checkbox {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n\n &.has-children {\n // Parent node styling\n }\n }\n\n .tree-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-text-muted;\n cursor: pointer;\n transition: transform $es-transition-fast;\n\n i {\n font-size: 12px;\n }\n }\n\n .tree-toggle-placeholder {\n width: 16px;\n height: 16px;\n }\n\n .btn-select-children {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n .btn-select-children-placeholder {\n width: 18px;\n height: 18px;\n }\n\n .tree-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n }\n\n .tree-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n color: $es-text-muted;\n\n i {\n font-size: 14px;\n }\n }\n\n .tree-info {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n flex: 1;\n min-width: 0;\n }\n\n .tree-name {\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .tree-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n // Legacy category tree classes (for compatibility)\n .category-tree-item {\n padding: 0.25rem 0;\n }\n\n .category-tree-node {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n }\n }\n\n .category-tree-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-text-muted;\n transition: transform $es-transition-fast;\n\n &.expanded {\n transform: rotate(90deg);\n }\n\n &.empty {\n visibility: hidden;\n }\n }\n\n .category-tree-checkbox {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n &.checked {\n background: $es-primary;\n border-color: $es-primary;\n\n &::after {\n content: '\\2713';\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: $es-white;\n font-size: 10px;\n }\n }\n\n &.indeterminate {\n background: $es-primary;\n border-color: $es-primary;\n\n &::after {\n content: '\\2212';\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: $es-white;\n font-size: 10px;\n }\n }\n }\n\n .category-tree-name {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .category-tree-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .category-tree-children {\n margin-left: 24px;\n }\n\n // Search history\n .search-history-list {\n padding: $es-spacing-sm;\n }\n\n .history-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n > i {\n color: $es-text-muted;\n font-size: 14px;\n }\n }\n\n .history-query {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n }\n\n .btn-delete-history {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n opacity: 0;\n transition: all $es-transition-fast;\n\n .history-item:hover & {\n opacity: 1;\n }\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Filter panel\n .filter-panel {\n display: none;\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n\n &.show {\n display: block;\n }\n }\n\n .filter-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // View mode select\n .view-mode-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 80px;\n }\n}\n\n// =============================================================================\n// Global dropdown styles (when appended to body instead of inside wrapper)\n// Duplicates key styles for when dropdown is outside .entity-selector-trait\n// =============================================================================\nbody > .target-search-dropdown,\n.target-search-dropdown {\n @include dropdown-container;\n display: none;\n width: 600px;\n max-width: calc(100vw - 40px);\n\n &.show {\n display: block;\n }\n\n // Dropdown header\n .dropdown-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n flex-wrap: wrap;\n }\n\n .results-count {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n white-space: nowrap;\n }\n\n .dropdown-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n flex-wrap: wrap;\n flex: 1;\n justify-content: flex-end;\n }\n\n .btn-select-all,\n .btn-clear-selection {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n kbd {\n font-size: 0.65rem;\n padding: 0.125rem 0.25rem;\n background: $es-slate-100;\n border-radius: 2px;\n color: $es-text-muted;\n }\n }\n\n .sort-controls {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .sort-field-select,\n .view-mode-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 80px;\n }\n\n .btn-sort-dir,\n .btn-toggle-filters,\n .btn-show-history {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n color: $es-text-primary;\n }\n\n &.active {\n background: $es-primary-light;\n border-color: $es-primary;\n color: $es-primary;\n }\n }\n\n .refine-compact {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n .refine-input {\n @include input-base;\n width: 100px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .btn-refine-negate,\n .btn-clear-refine {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.active {\n color: $es-danger;\n }\n }\n }\n\n // Filter panel\n .filter-panel {\n display: none;\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n\n &.show {\n display: block;\n }\n }\n\n .filter-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex-wrap: wrap;\n margin-bottom: $es-spacing-sm;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .filter-label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n cursor: pointer;\n\n input[type=\"checkbox\"] {\n margin: 0;\n }\n }\n\n .filter-price-range {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n .filter-price-label {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .filter-price-min,\n .filter-price-max {\n @include input-base;\n width: 70px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .filter-price-sep {\n color: $es-text-muted;\n }\n }\n\n .btn-clear-filters {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n cursor: pointer;\n margin-left: auto;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n\n // Multi-row filters\n .filter-row-multi {\n flex-direction: column;\n align-items: stretch;\n gap: $es-spacing-sm;\n }\n\n .filter-subrow {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex-wrap: wrap;\n }\n\n .filter-range-group,\n .filter-date-group,\n .filter-select-group {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .filter-range-label,\n .filter-date-label,\n .filter-select-label,\n .filter-row-label {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n white-space: nowrap;\n\n i {\n margin-right: 0.25rem;\n }\n }\n\n .filter-range-sep {\n color: $es-text-muted;\n }\n\n .filter-product-count-min,\n .filter-product-count-max,\n .filter-sales-min,\n .filter-sales-max,\n .filter-turnover-min,\n .filter-turnover-max,\n .filter-date-add-from,\n .filter-date-add-to,\n .filter-last-product-from,\n .filter-last-product-to {\n @include input-base;\n width: 70px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .filter-depth-select,\n .filter-attribute-group-select,\n .filter-feature-group-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 100px;\n }\n\n .filter-attributes-container,\n .filter-features-container,\n .filter-values-container {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n }\n\n // Filter group toggle buttons (attribute/feature groups)\n .filter-group-toggle {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.active {\n background: $es-primary-light;\n border-color: $es-primary;\n color: $es-primary;\n\n .toggle-count {\n color: $es-primary;\n }\n }\n\n &.has-selection {\n border-color: $es-success;\n background: rgba($es-success, 0.05);\n\n .toggle-count {\n color: $es-success;\n font-weight: $es-font-weight-semibold;\n }\n }\n\n .toggle-name {\n font-weight: $es-font-weight-medium;\n }\n\n // Count with eye icon (like group-count-badge)\n .toggle-count {\n display: inline-flex;\n align-items: center;\n gap: 0.125rem;\n color: $es-text-muted;\n font-size: 0.65rem;\n\n i {\n font-size: 10px;\n color: $es-primary;\n }\n\n // Clickable preview badge\n &.clickable {\n cursor: pointer;\n padding: 0.125rem 0.25rem;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.1);\n color: $es-primary;\n\n i {\n color: $es-primary;\n }\n }\n\n &.popover-open {\n background: $es-primary;\n color: $es-white;\n\n i {\n color: $es-white;\n }\n }\n\n &.loading {\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n }\n }\n }\n\n // Filter value chips\n .filter-chip {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n background: $es-slate-100;\n border: 1px solid transparent;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.active {\n background: $es-primary;\n color: $es-white;\n }\n }\n\n // Filter attribute chip (specific)\n .filter-attr-chip,\n .filter-feat-chip {\n @extend .filter-chip;\n }\n\n // Filter row for values (expandable)\n .filter-row-values {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n\n .filter-values-container {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.25rem;\n flex: 1;\n }\n\n .filter-values-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n white-space: nowrap;\n }\n\n .btn-close-values {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n }\n\n // Filter chip name and count\n .chip-name {\n font-weight: $es-font-weight-medium;\n }\n\n .chip-count {\n font-size: 0.6rem;\n color: $es-text-muted;\n margin-left: 0.125rem;\n }\n\n .filter-chip.active .chip-count {\n color: rgba(255, 255, 255, 0.8);\n }\n\n // Dropdown content\n .dropdown-content {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n .dropdown-items {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm;\n }\n\n // Dropdown item\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.selected {\n background: $es-primary-light;\n border-color: $es-primary;\n }\n\n &.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n .item-checkbox {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n }\n }\n\n .item-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n object-fit: cover;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n }\n\n .item-info {\n flex: 1;\n min-width: 0;\n }\n\n .item-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .item-meta {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n @include text-truncate;\n }\n\n // Dropdown footer\n .dropdown-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n .dropdown-footer-info {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .dropdown-footer-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .btn-cancel-dropdown {\n @include button-reset;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-sm;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n kbd {\n font-size: 0.65rem;\n padding: 0.125rem 0.25rem;\n background: $es-slate-100;\n border-radius: 2px;\n color: $es-text-muted;\n margin-left: 0.25rem;\n }\n }\n\n .btn-confirm-dropdown {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-sm;\n color: $es-white;\n background: $es-primary;\n border: 1px solid $es-primary;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:hover {\n background: $es-primary-hover;\n }\n\n kbd {\n font-size: 0.65rem;\n padding: 0.125rem 0.25rem;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 2px;\n color: rgba(255, 255, 255, 0.8);\n }\n }\n\n // Filter chips in dropdown\n .filter-chips-row {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n padding: $es-spacing-xs $es-spacing-md;\n border-bottom: 1px solid $es-border-color;\n }\n\n .filter-chip {\n @include chip;\n }\n\n // Empty and loading states\n .dropdown-empty,\n .dropdown-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n margin-bottom: $es-spacing-sm;\n }\n }\n\n // Search history panel\n .search-history-panel {\n display: none;\n padding: $es-spacing-sm;\n background: $es-white;\n border-bottom: 1px solid $es-border-color;\n\n &.show {\n display: block;\n }\n }\n\n .history-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n i {\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n }\n\n span {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n }\n\n .btn-remove-history {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n opacity: 0;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n\n &:hover .btn-remove-history {\n opacity: 1;\n }\n }\n\n // Results header (for list view columns)\n .results-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-md;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n\n .header-spacer {\n width: 58px; // checkbox + image width\n flex-shrink: 0;\n }\n\n .header-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n }\n\n .header-col-name {\n flex: 1;\n text-align: left;\n }\n }\n\n // Results container\n .dropdown-results {\n padding: $es-spacing-sm;\n }\n\n // Grid view modes\n .dropdown-results-grid {\n display: grid;\n gap: $es-spacing-sm;\n\n &.view-list {\n grid-template-columns: 1fr;\n }\n\n &.view-grid-2 {\n grid-template-columns: repeat(2, 1fr);\n }\n\n &.view-grid-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n // Result item styles\n .dropdown-result-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.selected {\n background: $es-primary-light;\n border-color: $es-primary;\n }\n\n &.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n // Product-specific result item\n .result-item-product {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex: 1;\n min-width: 0;\n }\n\n .result-item-image,\n .result-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .result-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n background: $es-slate-100;\n border-radius: $es-radius-sm;\n color: $es-text-muted;\n\n i {\n font-size: 16px;\n }\n }\n\n .result-item-info,\n .result-info {\n flex: 1;\n min-width: 0;\n }\n\n .result-item-name,\n .result-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .result-item-meta,\n .result-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .subtitle-line {\n @include text-truncate;\n }\n\n .subtitle-line-primary {\n color: $es-text-secondary;\n }\n\n .subtitle-line-secondary {\n color: $es-text-muted;\n font-size: 11px;\n }\n\n // Result columns (for product list view)\n .result-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n font-size: $es-font-size-xs;\n }\n\n .result-col-price {\n color: $es-text-secondary;\n }\n\n .result-col-sale {\n color: $es-danger;\n font-weight: $es-font-weight-semibold;\n }\n\n .result-col-stock {\n .col-value {\n &.stock-ok {\n color: $es-success;\n }\n\n &.stock-low {\n color: $es-warning;\n }\n\n &.stock-out {\n color: $es-danger;\n }\n }\n }\n\n .result-col-sales {\n color: $es-text-muted;\n }\n\n .col-value {\n display: block;\n }\n\n // Result checkbox\n .result-item-checkbox,\n .result-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid $es-border-dark;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n\n .dropdown-result-item.selected &,\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n\n // No results state\n .no-results {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n font-size: 1.25rem;\n opacity: 0.5;\n }\n }\n\n // Load more controls\n .load-more-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n .load-more-label,\n .load-more-of {\n white-space: nowrap;\n }\n\n .remaining-count {\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n .load-more-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 60px;\n }\n\n .btn-load-more {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-primary;\n background: $es-primary-light;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n }\n }\n\n // Load more button\n .dropdown-load-more {\n display: flex;\n justify-content: center;\n padding: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n\n .load-more-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n background: $es-primary-light;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n\n &.loading {\n opacity: 0.7;\n cursor: wait;\n }\n }\n }\n\n // Dropdown body\n .dropdown-body {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n // Tree view styles (for categories)\n .tree-container {\n padding: $es-spacing-sm;\n }\n\n .tree-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n .tree-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: 0.375rem $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n\n .tree-checkbox {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n }\n\n .tree-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-text-muted;\n cursor: pointer;\n transition: transform $es-transition-fast;\n\n i {\n font-size: 12px;\n }\n }\n\n .tree-toggle-placeholder {\n width: 16px;\n height: 16px;\n }\n\n .btn-select-children {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n .btn-select-children-placeholder {\n width: 18px;\n height: 18px;\n }\n\n .tree-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n }\n\n .tree-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n color: $es-text-muted;\n\n i {\n font-size: 14px;\n }\n }\n\n .tree-info {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n flex: 1;\n min-width: 0;\n }\n\n .tree-name {\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .tree-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n}\n\n// ============================================================================\n// Standalone dropdown styles (for when dropdown is appended to body)\n// These selectors work because .target-search-dropdown is on the dropdown itself\n// ============================================================================\n\n.target-search-dropdown {\n // Results container - scrollable\n .dropdown-results {\n max-height: 400px;\n overflow-y: auto;\n padding: $es-spacing-sm;\n @include custom-scrollbar;\n }\n\n // Results header (for list view columns)\n .results-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-md;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n\n .header-spacer {\n width: 58px; // checkbox + image width\n flex-shrink: 0;\n }\n\n .header-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n }\n\n .header-col-name {\n flex: 1;\n text-align: left;\n }\n }\n\n // Hide results-header by default, show only for products in list view\n &:not(.view-list) .results-header,\n &.view-tree .results-header {\n display: none;\n }\n\n // Result item for products\n .result-item-product {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex: 1;\n min-width: 0;\n }\n\n // Result columns for product data\n .result-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n font-size: $es-font-size-xs;\n }\n\n .result-col-price {\n color: $es-text-secondary;\n }\n\n .result-col-sale {\n color: $es-danger;\n font-weight: $es-font-weight-semibold;\n }\n\n .result-col-stock {\n .col-value {\n &.stock-ok { color: $es-success; }\n &.stock-low { color: $es-warning; }\n &.stock-out { color: $es-danger; }\n }\n }\n\n .result-col-sales {\n color: $es-text-muted;\n }\n\n // Dropdown item styling\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: 0;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n }\n }\n\n // Result checkbox styling\n .result-checkbox {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n font-size: 10px;\n color: transparent;\n }\n\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n color: $es-white;\n }\n }\n }\n\n // Result image\n .result-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n // Result icon (for non-image entities)\n .result-icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: $es-slate-100;\n border-radius: $es-radius-sm;\n\n i {\n font-size: 16px;\n color: $es-text-muted;\n }\n }\n\n // Result info container\n .result-info {\n flex: 1;\n min-width: 0;\n }\n\n .result-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .result-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .subtitle-line {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .subtitle-line-primary {\n color: $es-text-secondary;\n }\n\n .subtitle-line-secondary {\n color: $es-text-muted;\n font-size: 11px;\n }\n\n // Hide columns in grid/tree views\n &[class*=\"view-cols-\"] .result-col,\n &.view-tree .result-col {\n display: none;\n }\n\n // Entity search box - full width\n .entity-search-box {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n width: 100%;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-white;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n\n .entity-search-icon {\n color: $es-text-muted;\n flex-shrink: 0;\n }\n\n // Override Bootstrap/parent form input styles\n input.entity-search-input,\n input.entity-search-input[type=\"text\"] {\n flex: 1;\n min-width: 0;\n width: auto !important;\n max-width: none !important;\n height: auto;\n padding: 0;\n margin: 0;\n border: none !important;\n outline: none;\n background: transparent !important;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n box-shadow: none !important;\n\n &::placeholder {\n color: $es-text-muted;\n }\n\n &:focus {\n border: none !important;\n box-shadow: none !important;\n outline: none;\n }\n }\n\n .search-loading {\n color: $es-text-muted;\n }\n }\n}\n\n// Body-level dropdown (when appended to body for z-index)\nbody > .target-search-dropdown {\n // Override dropdown-item border when inside body-appended dropdown\n .dropdown-item {\n border: none;\n border-radius: 0;\n\n &:not(:last-child) {\n border-bottom: 1px solid $es-border-color;\n }\n }\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n","/**\n * Chips Component\n * Entity chips, selection pills, tags\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Chips container\n .entity-chips {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm 0;\n min-height: 32px;\n\n &:empty {\n display: none;\n }\n }\n\n // Individual chip\n .entity-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.25rem 0.5rem;\n background: $es-slate-100;\n color: $es-text-secondary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n max-width: 200px;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n // Chip with image\n &.has-image {\n padding-left: 0.25rem;\n }\n }\n\n .chip-image {\n width: 20px;\n height: 20px;\n object-fit: cover;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .chip-icon {\n font-size: 12px;\n color: $es-text-muted;\n flex-shrink: 0;\n }\n\n .chip-text,\n .chip-name {\n @include text-truncate;\n }\n\n .chip-remove {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-left: 0.125rem;\n color: $es-text-muted;\n border-radius: 50%;\n flex-shrink: 0;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Chip variants\n .entity-chip.chip-primary {\n background: $es-primary-light;\n color: $es-primary;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n }\n\n .entity-chip.chip-success {\n background: $es-success-light;\n color: $es-success-dark;\n\n &:hover {\n background: rgba($es-success, 0.2);\n }\n }\n\n .entity-chip.chip-danger {\n background: $es-danger-light;\n color: $es-danger;\n\n &:hover {\n background: rgba($es-danger, 0.2);\n }\n }\n\n .entity-chip.chip-warning {\n background: $es-warning-light;\n color: darken($es-warning, 20%);\n\n &:hover {\n background: rgba($es-warning, 0.3);\n }\n }\n\n // Chip loading state\n .entity-chip.loading,\n .entity-chip-loading {\n opacity: 0.7;\n\n .chip-remove {\n display: none;\n }\n\n .chip-icon i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n // Hidden chip (collapsed view)\n .entity-chip.chip-hidden {\n display: none;\n }\n\n // Chips expanded/collapsed states\n .entity-chips.chips-collapsed,\n .entity-chips.chips-expanded {\n position: relative;\n }\n\n // Show more/less toggle\n .chips-show-more-toggle {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n color: $es-primary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n cursor: pointer;\n transition: color $es-transition-fast;\n\n &:hover {\n color: $es-primary-hover;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n .chips-collapse-toggle,\n .chips-expand-toggle {\n // Specific variants inherit from .chips-show-more-toggle\n }\n\n // More chips indicator\n .chips-more {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem 0.5rem;\n background: $es-slate-200;\n color: $es-text-secondary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n border-radius: $es-radius-full;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-300;\n }\n }\n\n // Add chip button\n .chip-add-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: transparent;\n color: $es-primary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border: 1px dashed $es-primary;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Inline chips (compact mode)\n .entity-chips.inline {\n display: inline-flex;\n padding: 0;\n min-height: auto;\n\n .entity-chip {\n padding: 0.125rem 0.375rem;\n font-size: 11px;\n }\n }\n\n // Selected chips section in include/exclude\n .selected-chips-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n }\n\n .selected-chips-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n }\n\n // Pattern chips (for name/reference patterns)\n .entity-chip.chip-pattern {\n background: #fef3c7;\n color: #92400e;\n font-family: monospace;\n\n &:hover {\n background: #fde68a;\n }\n\n .chip-icon {\n color: #d97706;\n }\n }\n\n // Range chips (price, quantity, etc.)\n .entity-chip.chip-range,\n .range-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.25rem 0.5rem;\n background: $es-cyan-50;\n color: $es-cyan-600;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-cyan-100;\n }\n }\n\n .range-chip-text {\n font-family: monospace;\n }\n\n .btn-remove-range {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-cyan-600;\n border-radius: 50%;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Multi-range chips container\n .multi-range-chips {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n margin-bottom: $es-spacing-xs;\n\n &:empty {\n display: none;\n }\n }\n\n // Pattern chips container\n .pattern-chips {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm 0;\n min-height: 32px;\n\n &:empty::before {\n content: attr(data-placeholder);\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-style: italic;\n }\n }\n\n // Pattern tag\n .pattern-tag {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: #fef3c7;\n color: #92400e;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: #fde68a;\n }\n\n &.case-sensitive {\n .case-icon {\n color: $es-success;\n font-weight: $es-font-weight-bold;\n }\n }\n\n &.draft-tag {\n background: $es-white;\n border: 1px solid $es-border-color;\n padding: 0;\n flex: 1;\n min-width: 150px;\n\n &:hover {\n background: $es-white;\n }\n\n .pattern-input {\n flex: 1;\n min-width: 100px;\n padding: 0.375rem;\n border: 0;\n background: transparent;\n font-size: $es-font-size-sm;\n font-family: inherit;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: $es-text-muted;\n font-style: italic;\n }\n }\n }\n }\n\n .pattern-tag-text {\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .btn-toggle-case {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n }\n }\n\n .case-icon {\n font-size: 11px;\n font-weight: $es-font-weight-semibold;\n font-family: monospace;\n }\n\n .btn-remove-pattern {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n color: #d97706;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n .btn-add-pattern {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Pattern match count (in draft tag)\n .pattern-match-count {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0 0.375rem;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n cursor: pointer;\n\n &.count-zero {\n color: $es-warning;\n }\n\n &.count-found {\n color: $es-success;\n }\n\n .count-value {\n font-weight: $es-font-weight-semibold;\n }\n }\n\n // Pattern input row\n .pattern-input-row {\n display: flex;\n align-items: stretch;\n gap: $es-spacing-xs;\n }\n}\n","/**\n * Groups Component\n * Selection groups, include/exclude sections, method selectors\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Group container\n .target-group {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n overflow: hidden;\n }\n\n // Group header\n .target-group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-md;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n }\n\n .target-group-title {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n\n .group-number {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 0.25rem;\n background: $es-primary;\n color: $es-white;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-bold;\n border-radius: $es-radius-full;\n }\n }\n\n .target-group-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .group-action-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n\n &.danger:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n // Group body\n .target-group-body,\n .group-body {\n padding: $es-spacing-md;\n }\n\n // Include section\n .include-section {\n margin-bottom: $es-spacing-md;\n }\n\n .section-label {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n margin-bottom: $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n\n &.label-include {\n color: $es-success-dark;\n\n i {\n color: $es-success;\n }\n }\n\n &.label-exclude {\n color: $es-danger;\n\n i {\n color: $es-danger;\n }\n }\n }\n\n // Method selector\n .method-selector {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n }\n\n .method-selector-wrapper {\n flex: 1;\n position: relative;\n }\n\n .method-select {\n @include input-base;\n padding-right: 2rem;\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n }\n\n .method-help-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n color: $es-primary;\n }\n }\n\n // Value picker (search trigger)\n .value-picker {\n position: relative;\n }\n\n .value-picker-trigger {\n @include button-reset;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n width: 100%;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n text-align: left;\n transition: all $es-transition-fast;\n\n &:hover {\n border-color: $es-slate-300;\n }\n\n &:focus {\n border-color: $es-primary;\n @include focus-ring($es-primary);\n }\n\n i {\n color: $es-text-light;\n }\n }\n\n // Pattern input (text input for patterns)\n .pattern-input-wrapper {\n position: relative;\n }\n\n .pattern-input {\n @include input-base;\n font-family: monospace;\n }\n\n .pattern-add-btn {\n @include button-reset;\n position: absolute;\n right: 0.25rem;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n }\n\n // Multi-range input (price ranges)\n .multi-range-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .range-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .range-input {\n @include input-base;\n width: 100px;\n text-align: center;\n }\n\n .range-separator {\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n }\n\n .range-remove-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n .range-add-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n color: $es-primary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n }\n\n // Multi-select tiles (stock status, etc.)\n .multi-select-tiles {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n }\n\n .multi-select-tile {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n background: $es-slate-100;\n color: $es-text-secondary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border: 1px solid transparent;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.selected {\n background: $es-primary-light;\n color: $es-primary;\n border-color: $es-primary;\n }\n }\n\n // Exclude section\n .exclude-section {\n margin-top: $es-spacing-md;\n padding-top: $es-spacing-md;\n border-top: 1px dashed $es-border-color;\n }\n\n .exclude-rows {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .exclude-row {\n display: flex;\n align-items: flex-start;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: rgba($es-danger, 0.05);\n border: 1px solid rgba($es-danger, 0.2);\n border-radius: $es-radius-md;\n }\n\n .exclude-row-content {\n flex: 1;\n }\n\n .exclude-remove-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n flex-shrink: 0;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n .add-exclude-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-top: $es-spacing-sm;\n padding: 0.25rem 0.5rem;\n color: $es-danger;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border: 1px dashed $es-danger;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n }\n }\n\n // Add group button (used in block-footer)\n .btn-add-group {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.5rem 0.875rem;\n color: $es-primary;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n background: rgba($es-primary, 0.05);\n border: 1px dashed $es-primary;\n border-radius: 0.375rem;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.1);\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Block footer\n .block-footer {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n }\n\n // Block body\n .block-body {\n padding: 0;\n }\n\n // Groups container\n .groups-container {\n padding: $es-spacing-md;\n }\n\n // Groups empty state\n .groups-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n }\n\n // Selection group\n .selection-group {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n margin-bottom: $es-spacing-md;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &.collapsed {\n .group-body {\n display: none;\n }\n\n .group-collapse-toggle i {\n transform: rotate(-90deg);\n }\n }\n }\n\n // Group header\n .group-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n\n &.group-header-single {\n padding: $es-spacing-xs $es-spacing-md;\n background: transparent;\n border-bottom: none;\n }\n }\n\n .group-collapse-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n color: $es-text-muted;\n\n i {\n transition: transform $es-transition-fast;\n }\n }\n\n .group-name-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .group-name-input {\n flex: 1;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n background: transparent;\n border: 1px solid transparent;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover,\n &:focus {\n background: $es-white;\n border-color: $es-border-color;\n outline: none;\n }\n\n &::placeholder {\n color: $es-text-muted;\n font-weight: $es-font-weight-medium;\n }\n }\n\n .group-count-badge {\n @include count-badge($es-primary);\n }\n\n .btn-remove-group {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n // Group include section\n .group-include {\n margin-bottom: $es-spacing-md;\n }\n\n .section-row {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n // Method selector wrapper (from PHP)\n .method-selector-wrapper {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .method-info-placeholder {\n display: flex;\n align-items: center;\n min-width: 20px;\n }\n\n .include-method-select,\n .exclude-method-select {\n flex: 1;\n @include input-base;\n cursor: pointer;\n }\n\n // Group excludes section\n .group-excludes {\n margin-top: $es-spacing-md;\n\n &.has-excludes {\n padding-top: $es-spacing-md;\n border-top: 1px dashed $es-border-color;\n }\n }\n\n .except-separator {\n display: flex;\n align-items: center;\n margin-bottom: $es-spacing-sm;\n }\n\n .except-label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: $es-danger-light;\n color: $es-danger;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n border-radius: $es-radius-sm;\n\n i {\n font-size: 10px;\n }\n }\n\n .exclude-rows-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .exclude-row {\n padding: $es-spacing-sm;\n background: rgba($es-danger, 0.03);\n border: 1px solid rgba($es-danger, 0.15);\n border-radius: $es-radius-md;\n }\n\n .exclude-header-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n }\n\n .btn-remove-exclude-row {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n .btn-add-exclude,\n .btn-add-another-exclude {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-top: $es-spacing-sm;\n padding: 0.375rem 0.625rem;\n color: $es-danger;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n background: transparent;\n border: 1px dashed rgba($es-danger, 0.5);\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n border-color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Group modifiers (inline version from PHP)\n // Uses negative margins to break out of .group-body padding\n .group-modifiers {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: $es-spacing-md;\n padding: $es-spacing-sm $es-spacing-md;\n margin: $es-spacing-md (-$es-spacing-md) (-$es-spacing-md);\n background: $es-slate-50;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n .modifier-inline {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n }\n\n .group-modifier-limit {\n width: 60px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n text-align: center;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n\n &:focus {\n border-color: $es-primary;\n outline: none;\n }\n }\n\n .group-modifier-sort {\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:focus {\n border-color: $es-primary;\n outline: none;\n }\n }\n\n .btn-sort-dir {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n color: $es-text-secondary;\n }\n }\n\n .group-preview-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: $es-slate-100;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &.clickable {\n cursor: pointer;\n\n &:hover {\n background: $es-primary-light;\n color: $es-primary;\n }\n }\n }\n\n // OR separator between groups\n .group-separator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-sm 0;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n &::before,\n &::after {\n content: '';\n flex: 1;\n height: 1px;\n background: $es-border-color;\n margin: 0 $es-spacing-md;\n }\n }\n\n // Group modifiers (limit, sort)\n .group-modifiers {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n padding-top: $es-spacing-md;\n margin-top: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n }\n\n .modifier-group {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .modifier-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n white-space: nowrap;\n }\n\n .modifier-input {\n @include input-base;\n width: 80px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .modifier-select {\n @include input-base;\n width: auto;\n padding: 0.25rem 1.5rem 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.25rem center;\n background-repeat: no-repeat;\n background-size: 1.25em 1.25em;\n }\n\n // Condition match count badge\n .condition-match-count {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.125rem 0.375rem;\n background: $es-slate-100;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.has-results {\n background: $es-primary-light;\n color: $es-primary;\n }\n\n i {\n font-size: 10px;\n }\n }\n}\n","/**\n * Value Picker Component\n * Search boxes, input types, range inputs\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Value picker container\n .value-picker {\n padding: $es-spacing-sm 0;\n\n &[style*=\"display: none\"],\n &[style*=\"display:none\"] {\n padding: 0;\n }\n }\n\n .include-picker,\n .exclude-picker {\n // Section-specific picker styles\n }\n\n // Entity search box\n .entity-search-box {\n position: relative;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:focus-within {\n border-color: $es-primary;\n box-shadow: 0 0 0 2px rgba($es-primary, 0.1);\n }\n }\n\n .entity-search-icon {\n color: $es-text-muted;\n font-size: 14px;\n flex-shrink: 0;\n }\n\n // Override parent form's max-width on search input\n input.entity-search-input,\n input.entity-search-input[type=\"text\"] {\n @include input-reset;\n flex: 1;\n min-width: 0;\n width: auto !important;\n max-width: none !important;\n padding: 0.375rem;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n border: none !important;\n background: transparent !important;\n box-shadow: none !important;\n\n &::placeholder {\n color: $es-text-muted;\n }\n\n &:focus {\n border: none !important;\n box-shadow: none !important;\n outline: none;\n }\n }\n\n .search-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n color: $es-primary;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n // Numeric range box\n .numeric-range-box,\n .multi-range-input-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .range-min-input,\n .range-max-input {\n @include input-base;\n width: 100px;\n padding: $es-spacing-sm;\n text-align: center;\n font-size: $es-font-size-sm;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n -moz-appearance: textfield;\n }\n\n .range-separator {\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n }\n\n .btn-add-range {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n color: $es-white;\n background: $es-primary;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-hover;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Multi-range container\n .multi-range-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n // Date range box\n .date-range-box {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .date-from-input,\n .date-to-input {\n @include input-base;\n width: 140px;\n padding: $es-spacing-sm;\n font-size: $es-font-size-sm;\n }\n\n // Multi-select tiles\n .multi-select-tiles {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n }\n\n .tile-option {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.625rem;\n color: $es-text-secondary;\n background: $es-slate-100;\n border: 1px solid transparent;\n border-radius: $es-radius-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.selected {\n color: $es-primary;\n background: $es-primary-light;\n border-color: $es-primary;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n .tile-label {\n white-space: nowrap;\n }\n\n // Select input box\n .select-input-box {\n display: inline-block;\n }\n\n .select-value-input {\n @include input-base;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n min-width: 150px;\n }\n\n // Boolean input box\n .boolean-input-box {\n display: inline-flex;\n align-items: center;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-success-light;\n color: $es-success-dark;\n border-radius: $es-radius-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n }\n\n .boolean-label {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n &::before {\n content: '\\2713';\n font-weight: bold;\n }\n }\n\n // Condition match count badge\n .condition-match-count {\n @include count-badge($es-primary);\n margin-left: $es-spacing-sm;\n }\n}\n","/**\n * Modal Component\n * Preview modals, confirmation dialogs\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Modal backdrop\n.mpr-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: $es-z-modal;\n opacity: 0;\n transition: opacity $es-transition-normal;\n\n &.show {\n opacity: 1;\n }\n}\n\n// Modal container\n.mpr-modal {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n z-index: $es-z-modal + 1;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n background: $es-white;\n border-radius: $es-radius-xl;\n box-shadow: $es-shadow-xl;\n opacity: 0;\n transition: all $es-transition-normal;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n &.show {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n\n &.modal-sm {\n max-width: 400px;\n }\n\n &.modal-lg {\n max-width: 800px;\n }\n\n &.modal-xl {\n max-width: 1000px;\n }\n\n &.modal-fullscreen {\n width: 95%;\n max-width: none;\n height: 90vh;\n max-height: none;\n }\n}\n\n// Modal header\n.mpr-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-md;\n padding: $es-spacing-md $es-spacing-lg;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n flex-shrink: 0;\n}\n\n.mpr-modal-title {\n font-size: $es-font-size-base;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n margin: 0;\n}\n\n.mpr-modal-close {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n color: $es-text-muted;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n\n i {\n font-size: $es-font-size-lg;\n }\n}\n\n// Modal body\n.mpr-modal-body {\n flex: 1;\n overflow-y: auto;\n padding: $es-spacing-lg;\n @include custom-scrollbar;\n}\n\n// Modal footer\n.mpr-modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: $es-spacing-sm;\n padding: $es-spacing-md $es-spacing-lg;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n flex-shrink: 0;\n}\n\n.mpr-modal-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &.btn-secondary {\n color: $es-text-secondary;\n background: $es-slate-100;\n\n &:hover {\n background: $es-slate-200;\n }\n }\n\n &.btn-primary {\n color: $es-white;\n background: $es-primary;\n\n &:hover {\n background: $es-primary-hover;\n }\n }\n\n &.btn-danger {\n color: $es-white;\n background: $es-danger;\n\n &:hover {\n background: darken($es-danger, 10%);\n }\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n// Preview popover styles moved to _list-preview.scss\n\n.popover-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n}\n\n.popover-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n}\n\n.popover-close {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n}\n\n.popover-body {\n max-height: 300px;\n overflow-y: auto;\n padding: $es-spacing-sm;\n @include custom-scrollbar;\n}\n\n.popover-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n}\n\n.popover-info {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n}\n\n.popover-load-more {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n}\n\n// Popover arrow\n.popover-arrow {\n position: absolute;\n width: 12px;\n height: 12px;\n background: $es-white;\n border: 1px solid $es-border-color;\n transform: rotate(45deg);\n\n &.arrow-top {\n top: -7px;\n left: 50%;\n margin-left: -6px;\n border-right: none;\n border-bottom: none;\n }\n\n &.arrow-bottom {\n bottom: -7px;\n left: 50%;\n margin-left: -6px;\n border-left: none;\n border-top: none;\n }\n}\n","/**\n * List Preview Component\n * Entity list display in modals and popovers\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// =============================================================================\n// Preview Popover (floating popover attached to badges)\n// =============================================================================\n\n.target-preview-popover {\n position: absolute;\n z-index: 10000;\n min-width: 280px;\n max-width: 400px;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n box-shadow: $es-shadow-lg;\n overflow: hidden;\n\n // Arrow pointing to badge\n &::before {\n content: '';\n position: absolute;\n top: -8px;\n left: 50%;\n transform: translateX(-50%);\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid $es-border-color;\n }\n\n &::after {\n content: '';\n position: absolute;\n top: -6px;\n left: 50%;\n transform: translateX(-50%);\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid $es-white;\n }\n\n .preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n\n .preview-count {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n }\n\n .preview-close {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n }\n\n .preview-list {\n max-height: 300px;\n overflow-y: auto;\n @include custom-scrollbar;\n padding: $es-spacing-sm;\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n }\n\n .preview-footer {\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-slate-50;\n border-top: 1px solid $es-border-color;\n text-align: center;\n\n .preview-more-info {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n font-weight: $es-font-weight-medium;\n }\n }\n}\n\n// =============================================================================\n// Preview List Container\n// =============================================================================\n\n// Preview list container\n.entity-list-preview {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n}\n\n// Preview item\n.preview-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n}\n\n.preview-item-image {\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n object-fit: cover;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n}\n\n.preview-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n background: $es-slate-100;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n font-size: $es-font-size-base;\n}\n\n.preview-item-info {\n flex: 1;\n min-width: 0;\n}\n\n.preview-item-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n}\n\n.preview-item-meta {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n @include text-truncate;\n}\n\n.preview-item-badge {\n @include badge($es-slate-100, $es-text-muted);\n flex-shrink: 0;\n}\n\n.preview-item-price {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-primary;\n flex-shrink: 0;\n}\n\n// Preview grid layout\n.entity-list-preview.grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n gap: $es-spacing-sm;\n\n .preview-item {\n flex-direction: column;\n text-align: center;\n padding: $es-spacing-md;\n }\n\n .preview-item-image {\n width: 60px;\n height: 60px;\n }\n\n .preview-item-info {\n width: 100%;\n }\n}\n\n// Compact list layout\n.entity-list-preview.compact {\n gap: 0;\n\n .preview-item {\n border-radius: 0;\n border-bottom: none;\n\n &:first-child {\n border-radius: $es-radius-md $es-radius-md 0 0;\n }\n\n &:last-child {\n border-radius: 0 0 $es-radius-md $es-radius-md;\n border-bottom: 1px solid $es-border-color;\n }\n }\n}\n\n// Preview empty state\n.preview-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: $es-font-size-sm;\n }\n}\n\n// Preview loading state\n.preview-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n\n .spinner {\n width: 24px;\n height: 24px;\n border: 3px solid $es-slate-200;\n border-top-color: $es-primary;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n }\n}\n\n// Preview pagination\n.preview-pagination {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-md 0;\n}\n\n.preview-page-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover:not(:disabled) {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.active {\n background: $es-primary;\n border-color: $es-primary;\n color: $es-white;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n// Preview summary\n.preview-summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n}\n\n.preview-count {\n font-weight: $es-font-weight-medium;\n\n strong {\n color: $es-text-primary;\n }\n}\n\n// Preview filters in modal\n.preview-filters {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n}\n\n.preview-filter-chip {\n @include chip;\n}\n\n.preview-search {\n @include input-base;\n flex: 1;\n min-width: 150px;\n padding: 0.375rem $es-spacing-sm;\n font-size: $es-font-size-xs;\n}\n\n// Scrollable preview list\n.preview-list-scrollable {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n}\n\n// Mini preview (inline)\n.entity-mini-preview {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.25rem 0.5rem;\n background: $es-slate-50;\n border-radius: $es-radius-sm;\n font-size: $es-font-size-xs;\n\n img {\n width: 16px;\n height: 16px;\n object-fit: cover;\n border-radius: 2px;\n }\n\n .mini-preview-name {\n color: $es-text-primary;\n font-weight: $es-font-weight-medium;\n @include text-truncate;\n max-width: 100px;\n }\n}\n","/**\n * Schedule Conditions Component\n * DateTime picker, weekly timeline, holidays\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Schedule conditions wrapper\n.schedule-conditions-trait {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n}\n\n// Schedule header\n.schedule-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-md;\n padding: 0.875rem $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n}\n\n.schedule-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n\n i {\n color: $es-text-muted;\n }\n}\n\n// Schedule body\n.schedule-body {\n padding: $es-spacing-md;\n}\n\n// Schedule section\n.schedule-section {\n margin-bottom: $es-spacing-lg;\n\n &:last-child {\n margin-bottom: 0;\n }\n}\n\n.schedule-section-title {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n\n i {\n color: $es-text-muted;\n }\n}\n\n.schedule-section-description {\n margin-bottom: $es-spacing-md;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n}\n\n// DateTime range picker\n.datetime-range {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n}\n\n.datetime-field {\n flex: 1;\n min-width: 200px;\n}\n\n.datetime-label {\n display: block;\n margin-bottom: 0.25rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n}\n\n.datetime-input {\n @include input-base;\n}\n\n// Weekly schedule\n.weekly-schedule {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n}\n\n.day-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-md;\n padding: $es-spacing-sm;\n background: $es-slate-50;\n border-radius: $es-radius-md;\n\n &.disabled {\n opacity: 0.5;\n }\n}\n\n.day-toggle {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n min-width: 100px;\n}\n\n.day-checkbox {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.day-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n}\n\n// Timeline slider\n.timeline-slider {\n flex: 1;\n position: relative;\n height: 24px;\n background: $es-slate-200;\n border-radius: $es-radius-full;\n cursor: pointer;\n}\n\n.timeline-fill {\n position: absolute;\n top: 0;\n height: 100%;\n background: $es-primary;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n}\n\n.timeline-handle {\n position: absolute;\n top: 50%;\n width: 16px;\n height: 16px;\n background: $es-white;\n border: 2px solid $es-primary;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n cursor: grab;\n box-shadow: $es-shadow-sm;\n transition: box-shadow $es-transition-fast;\n\n &:hover {\n box-shadow: $es-shadow-md;\n }\n\n &:active {\n cursor: grabbing;\n }\n\n &.handle-start {\n z-index: 2;\n }\n\n &.handle-end {\n z-index: 1;\n }\n}\n\n// Time display\n.day-times {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n min-width: 120px;\n font-size: $es-font-size-xs;\n font-family: monospace;\n color: $es-text-secondary;\n}\n\n.time-separator {\n color: $es-text-muted;\n}\n\n// Holiday exclusions\n.holiday-section {\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-radius: $es-radius-md;\n}\n\n.holiday-toggle {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-md;\n}\n\n.holiday-checkbox {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.holiday-label {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n}\n\n.holiday-countries {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n}\n\n.holiday-country-chip {\n @include chip;\n cursor: pointer;\n\n &.selected {\n background: $es-primary-light;\n color: $es-primary;\n }\n}\n\n// Server time display\n.server-time {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-info-light;\n border-radius: $es-radius-md;\n font-size: $es-font-size-xs;\n color: $es-info;\n\n i {\n font-size: $es-font-size-sm;\n }\n\n .time-value {\n font-family: monospace;\n font-weight: $es-font-weight-semibold;\n }\n}\n\n// Schedule summary\n.schedule-summary {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-radius: $es-radius-md;\n font-size: $es-font-size-sm;\n color: $es-text-secondary;\n\n .summary-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n\n i {\n color: $es-success;\n font-size: $es-font-size-sm;\n }\n\n &.inactive i {\n color: $es-text-muted;\n }\n }\n}\n\n// Collapsed state\n.schedule-conditions-trait.collapsed {\n .schedule-body {\n display: none;\n }\n\n .schedule-header {\n border-radius: $es-radius-lg;\n }\n}\n","/**\n * Tips Box Component\n * Pro tips and help information display\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Tips box container\n .target-tips-box {\n margin: $es-spacing-lg $es-spacing-md $es-spacing-md;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n overflow: hidden;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n }\n\n // Tips header (clickable to expand/collapse)\n .tips-header {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n padding: $es-spacing-md $es-spacing-lg;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.02);\n }\n\n // Lightbulb icon\n > i:first-child {\n font-size: 1rem;\n color: $es-warning;\n }\n\n // Title text\n > span {\n flex: 1;\n font-size: 13px;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-600;\n }\n }\n\n // Toggle chevron icon\n .tips-toggle {\n font-size: $es-font-size-xs;\n color: $es-slate-400;\n transition: transform 0.2s;\n }\n\n // Expanded state\n .target-tips-box.expanded {\n .tips-toggle {\n transform: rotate(180deg);\n }\n\n .tips-content {\n display: block;\n }\n }\n\n // Tips content (hidden by default)\n .tips-content {\n display: none;\n padding: 0 $es-spacing-lg $es-spacing-lg;\n }\n\n // Tips grid layout\n .tips-grid {\n display: grid;\n gap: $es-spacing-md;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n }\n\n // Individual tip item\n .tip-item {\n display: flex;\n gap: $es-spacing-md;\n padding: $es-spacing-md;\n background: $es-white;\n border-radius: $es-radius-md;\n border: 1px solid $es-border-color;\n }\n\n // Tip icon\n .tip-icon {\n flex-shrink: 0;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n background: $es-primary-light;\n border-radius: $es-radius-md;\n color: $es-primary;\n font-size: $es-font-size-sm;\n }\n\n // Tip text content\n .tip-text {\n flex: 1;\n min-width: 0;\n\n strong {\n display: block;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-700;\n margin-bottom: 0.25rem;\n }\n\n p {\n font-size: 11px;\n color: $es-text-muted;\n line-height: 1.625;\n margin: 0;\n }\n }\n\n // Tips footer\n .tips-footer {\n margin-top: $es-spacing-md;\n padding: 0.625rem $es-spacing-md;\n background: $es-white;\n border-radius: $es-radius-md;\n border: 1px dashed $es-gray-300;\n font-size: 11px;\n color: $es-text-muted;\n line-height: 1.625;\n\n i {\n color: $es-primary;\n margin-right: 0.25rem;\n }\n }\n}\n","/**\n * Condition Trait Base Styles\n * Shared styling for all condition trait components\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Base condition trait container\n.condition-trait {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n margin-bottom: $es-spacing-lg;\n\n &:last-child {\n margin-bottom: 0;\n }\n}\n\n// Collapsed state\n.condition-trait.collapsed {\n .condition-trait-header {\n border-bottom-color: transparent;\n border-radius: $es-radius-lg;\n }\n\n .collapse-icon {\n transform: rotate(180deg);\n }\n}\n\n// =============================================================================\n// Trait Header\n// =============================================================================\n\n.condition-trait-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-lg;\n flex-wrap: wrap;\n padding: 0.875rem $es-spacing-lg;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n }\n}\n\n.trait-header-left {\n display: flex;\n align-items: center;\n gap: $es-spacing-md;\n min-width: 0;\n flex: 1;\n}\n\n.trait-icon {\n font-size: 1.125rem;\n color: $es-text-muted;\n flex-shrink: 0;\n}\n\n.trait-title-group {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n}\n\n.trait-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-800;\n white-space: nowrap;\n}\n\n.trait-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.trait-header-right {\n display: flex;\n align-items: center;\n gap: $es-spacing-md;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.trait-header-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n}\n\n// Collapse icon\n.collapse-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n font-size: $es-font-size-sm;\n color: $es-text-muted;\n cursor: pointer;\n transition: all 0.2s;\n border-radius: $es-radius-sm;\n background: transparent;\n\n &:hover {\n color: $es-primary;\n background: rgba($es-primary, 0.08);\n }\n}\n\n// Show all toggle\n.trait-show-all-toggle {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: $es-font-size-xs;\n color: $es-primary;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n// Trait total count badge (global fallback)\n.trait-total-count {\n @include count-badge($es-primary);\n}\n\n// Required indicator\n.trait-required {\n color: $es-danger;\n font-size: $es-font-size-xs;\n}\n\n// Validation error\n.trait-validation-error {\n color: $es-danger;\n font-size: $es-font-size-xs;\n margin-top: 0.25rem;\n}\n\n// Trait toggle button\n.trait-toggle {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-50;\n border-color: $es-gray-300;\n }\n\n &.active {\n color: $es-primary;\n border-color: $es-primary;\n background: $es-primary-light;\n }\n}\n\n// =============================================================================\n// Trait Body\n// =============================================================================\n\n.condition-trait-body {\n padding: $es-spacing-lg;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n background: $es-white;\n animation: slideDown 0.2s ease-out;\n}\n\n// Condition trait collapsed - hide body\n.condition-trait.collapsed .condition-trait-body {\n display: none;\n}\n\n// =============================================================================\n// Section Styles\n// =============================================================================\n\n.schedule-section,\n.context-section {\n margin-bottom: 1.25rem;\n padding-bottom: 1.25rem;\n border-bottom: 1px solid $es-slate-100;\n\n &:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom: 0;\n }\n}\n\n.section-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 13px;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-600;\n margin-bottom: $es-spacing-md;\n\n i {\n font-size: $es-font-size-sm;\n color: $es-slate-400;\n margin-right: 0.25rem;\n }\n}\n\n.section-content {\n // Container for section content\n}\n\n.section-hint {\n margin-top: 0.5rem;\n font-size: 11px;\n color: $es-slate-400;\n}\n\n// =============================================================================\n// Full-width Form Group Override\n// =============================================================================\n\n.form-group.condition-trait-fullwidth {\n display: block !important;\n\n > .control-label {\n display: none !important;\n }\n\n > .col-lg-8,\n > .col-lg-8.col-lg-offset-3 {\n width: 100% !important;\n max-width: 100% !important;\n flex: 0 0 100% !important;\n padding-left: $es-spacing-lg !important;\n padding-right: $es-spacing-lg !important;\n margin: 0 !important;\n margin-left: 0 !important;\n }\n}\n\n// Condition traits group label\n.condition-traits-group-label {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-700;\n margin-bottom: $es-spacing-md;\n}\n\n.condition-traits-wrapper {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-md;\n}\n\n// =============================================================================\n// Animations\n// =============================================================================\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n","/**\n * Combination Attributes Picker Component\n * Product attribute combination selection styles\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Main container\n .combination-attributes-picker {\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n }\n\n // Mode toggle (Any/All)\n .combination-mode-toggle {\n display: inline-flex;\n gap: 0.25rem;\n padding: 0.125rem;\n background: $es-slate-100;\n border-radius: $es-radius-md;\n margin-bottom: 0.5rem;\n }\n\n .combination-mode-option {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n cursor: pointer;\n font-size: 11px;\n color: $es-text-muted;\n padding: 0.25rem 0.625rem;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n input[type=\"radio\"] {\n display: none;\n }\n\n .mode-label {\n user-select: none;\n }\n\n &:hover {\n color: $es-primary;\n background: rgba($es-primary, 0.1);\n }\n\n &:has(input[type=\"radio\"]:checked) {\n background: $es-primary;\n color: $es-white;\n font-weight: $es-font-weight-medium;\n }\n }\n\n // Groups container\n .combination-groups-container {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n }\n\n // Loading/Empty/Error states\n .combination-loading,\n .combination-empty,\n .combination-error {\n color: $es-text-muted;\n font-style: italic;\n padding: 0.5rem;\n }\n\n .combination-error {\n color: $es-danger;\n }\n\n // Section header\n .combinations-section {\n margin-bottom: $es-spacing-md;\n }\n\n .combinations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: $es-spacing-sm;\n }\n\n .combinations-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n }\n\n .combinations-help {\n font-size: 11px;\n color: $es-slate-400;\n }\n\n // Toggle combinations button\n .btn-toggle-combinations {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-primary;\n background: transparent;\n border: 1px solid $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n }\n\n .btn-remove-combinations {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-danger;\n background: transparent;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n // =============================================================================\n // Attribute Group\n // =============================================================================\n\n .comb-attr-group {\n flex: none;\n min-width: 120px;\n max-width: 200px;\n background: $es-white;\n border: 1px solid $es-gray-300;\n border-radius: $es-radius-sm;\n overflow: hidden;\n\n &.has-selections {\n border-color: $es-primary;\n }\n }\n\n .comb-attr-group-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.375rem 0.625rem;\n background: $es-slate-100;\n border-bottom: 1px solid $es-gray-300;\n font-weight: $es-font-weight-semibold;\n font-size: $es-font-size-xs;\n color: $es-slate-800;\n\n .comb-attr-group.has-selections & {\n background: $es-cyan-50;\n border-bottom-color: $es-cyan-200;\n }\n }\n\n .comb-attr-group-name {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .comb-attr-group-count {\n flex-shrink: 0;\n min-width: 18px;\n height: 18px;\n padding: 0 0.25rem;\n background: $es-gray-300;\n border-radius: $es-radius-full;\n font-size: 11px;\n font-weight: $es-font-weight-semibold;\n line-height: 18px;\n text-align: center;\n color: $es-text-muted;\n\n .comb-attr-group.has-selections & {\n background: $es-primary;\n color: $es-white;\n }\n }\n\n // Toolbar\n .comb-attr-toolbar {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.375rem;\n background: $es-slate-50;\n border-bottom: 1px solid $es-slate-100;\n }\n\n .comb-toolbar-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n padding: 0;\n background: $es-white;\n border: 1px solid $es-gray-300;\n border-radius: $es-radius-sm;\n color: $es-text-muted;\n cursor: pointer;\n font-size: $es-font-size-xs;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n border-color: $es-slate-400;\n color: $es-slate-800;\n }\n }\n\n .comb-attr-search {\n flex: 1;\n min-width: 60px;\n padding: 0.125rem 0.375rem;\n border: 1px solid $es-gray-300;\n border-radius: $es-radius-sm;\n font-size: 11px;\n outline: none;\n\n &:focus {\n border-color: $es-primary;\n }\n\n &::placeholder {\n color: $es-slate-400;\n }\n }\n\n // Values container\n .comb-attr-values {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n padding: 0.375rem;\n max-height: 150px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n .comb-attr-loading,\n .comb-attr-empty,\n .comb-attr-error {\n width: 100%;\n text-align: center;\n color: $es-slate-400;\n font-size: 11px;\n padding: 0.25rem;\n }\n\n .comb-attr-error {\n color: $es-danger;\n }\n\n // Individual value\n .comb-attr-value {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.125rem 0.5rem;\n background: $es-white;\n border: 1px solid $es-slate-400;\n border-radius: 0.75rem;\n font-size: 11px;\n color: $es-slate-600;\n cursor: pointer;\n transition: all $es-transition-fast;\n white-space: nowrap;\n\n &:hover {\n background: $es-slate-100;\n border-color: $es-text-muted;\n }\n\n &.selected {\n background: $es-primary;\n border-color: $es-primary-hover;\n color: $es-white;\n\n &:hover {\n background: $es-primary-hover;\n border-color: darken($es-primary-hover, 5%);\n }\n }\n }\n\n .comb-attr-value-count {\n font-size: 9px;\n color: $es-slate-400;\n background: $es-slate-100;\n padding: 1px 0.25rem;\n border-radius: 0.5rem;\n min-width: 14px;\n text-align: center;\n\n .comb-attr-value.selected & {\n color: $es-white;\n background: rgba(255, 255, 255, 0.3);\n }\n }\n\n // =============================================================================\n // Combination Conditions (Row-based)\n // =============================================================================\n\n .combination-conditions-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .combination-condition-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-slate-50;\n border-radius: $es-radius-sm;\n }\n\n .combination-group-select,\n .combination-values-select {\n flex: 1;\n min-width: 120px;\n }\n\n .combination-equals {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n padding: 0 0.25rem;\n }\n\n .btn-add-combination-condition {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n background: transparent;\n border: 1px dashed $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n .btn-remove-combination-row {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-danger, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 12px;\n }\n }\n}\n","/**\n * Method Dropdown Component\n * Custom select dropdown with icons for method selection\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Method dropdown trigger button\n .method-dropdown-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n height: 36px;\n padding: 0 $es-spacing-md;\n border-radius: $es-radius-md;\n background: $es-white;\n color: $es-slate-800;\n font-size: $es-font-size-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n min-width: 180px;\n max-width: 320px;\n border: 1px solid $es-border-color;\n\n &:hover {\n background: $es-slate-50;\n border-color: $es-gray-300;\n }\n\n &:focus,\n &:active {\n outline: none;\n border-color: $es-primary;\n box-shadow: 0 0 0 3px rgba($es-primary, 0.1);\n }\n }\n\n .method-trigger-icon {\n font-size: $es-font-size-sm;\n color: $es-text-muted;\n flex-shrink: 0;\n width: 18px;\n text-align: center;\n }\n\n .method-trigger-label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: $es-font-weight-medium;\n }\n\n .method-trigger-caret {\n font-size: $es-font-size-xs;\n color: $es-slate-400;\n flex-shrink: 0;\n margin-left: auto;\n }\n\n // Locked state\n .selector-locked .method-dropdown-trigger {\n background: $es-slate-100;\n color: $es-slate-400;\n cursor: not-allowed;\n border-color: $es-border-color;\n\n &:hover {\n background: $es-slate-100;\n border-color: $es-border-color;\n }\n }\n\n // Method selector wrapper\n .method-selector-wrapper {\n position: relative;\n }\n\n // Hidden select (for form submission)\n .method-select-hidden {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n width: 0;\n height: 0;\n }\n}\n\n// =============================================================================\n// Method Dropdown Menu (appended to body, outside trait wrappers)\n// =============================================================================\n\n.method-dropdown-menu {\n position: absolute;\n z-index: $es-z-dropdown + 1;\n min-width: 200px;\n max-width: 360px;\n max-height: 400px;\n overflow-y: auto;\n background: $es-white;\n border-radius: $es-radius-lg;\n padding: 0.375rem 0;\n border: 1px solid $es-border-color;\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);\n animation: methodDropdownFadeIn 0.15s ease;\n @include custom-scrollbar;\n}\n\n@keyframes methodDropdownFadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n// Method dropdown item\n.method-dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n padding: 0.5rem $es-spacing-md;\n cursor: pointer;\n transition: background-color 0.1s;\n position: relative;\n\n &:hover {\n background: $es-slate-100;\n }\n\n &.selected {\n background: rgba($es-primary, 0.08);\n }\n\n .method-item-icon {\n font-size: $es-font-size-sm;\n color: $es-text-muted;\n width: 18px;\n text-align: center;\n flex-shrink: 0;\n }\n\n &.selected .method-item-icon {\n color: $es-primary;\n }\n\n .method-item-label {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-slate-700;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.selected .method-item-label {\n color: $es-cyan-700;\n font-weight: $es-font-weight-medium;\n }\n\n .method-item-check {\n font-size: $es-font-size-xs;\n flex-shrink: 0;\n margin-left: auto;\n color: $es-primary;\n }\n}\n\n// Method dropdown optgroup\n.method-dropdown-optgroup {\n margin-top: 0.25rem;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.method-optgroup-label {\n padding: 0.5rem $es-spacing-md;\n font-size: 11px;\n font-weight: $es-font-weight-semibold;\n color: $es-text-muted;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: $es-slate-50;\n border-top: 1px solid $es-slate-100;\n border-bottom: 1px solid $es-slate-100;\n\n .method-dropdown-optgroup:first-child & {\n border-top: 0;\n }\n}\n\n.method-optgroup-items {\n padding: 0.25rem 0;\n\n .method-dropdown-item {\n padding-left: $es-spacing-lg;\n }\n}\n\n// Method info placeholder\n.method-info-placeholder {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n font-style: italic;\n}\n","/**\n * Tooltip Component\n * Info tooltips and help popovers\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// =============================================================================\n// MPR Info Wrapper (hover tooltip trigger)\n// =============================================================================\n\n.mpr-info-wrapper {\n display: inline-flex;\n align-items: center;\n position: relative;\n cursor: help;\n vertical-align: middle;\n margin-left: 0.5rem;\n}\n\n// Tooltip (absolute positioned, follows element)\n.mpr-info-wrapper .mpr-tooltip {\n position: absolute;\n background: $es-white;\n color: $es-slate-800;\n padding: $es-spacing-md $es-spacing-lg;\n border-radius: $es-radius-md;\n font-size: 13px;\n line-height: 1.625;\n white-space: normal;\n z-index: 1050;\n max-width: 350px;\n min-width: 200px;\n text-align: left;\n bottom: calc(100% + 10px);\n left: 50%;\n transform: translateX(-50%);\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 1px 0px,\n rgba(64, 68, 82, 0.16) 0px 0px 0px 1px,\n rgba(64, 68, 82, 0.08) 0px 2px 5px 0px;\n\n // Arrow (border)\n &::before {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border: 9px solid transparent;\n border-top-color: rgba(64, 68, 82, 0.16);\n }\n\n // Arrow (fill)\n &::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border: 8px solid transparent;\n border-top-color: $es-white;\n }\n\n strong {\n display: block;\n margin-bottom: 0.5rem;\n font-weight: $es-font-weight-semibold;\n color: #337ab7;\n }\n\n p {\n margin: 0;\n color: $es-text-secondary;\n }\n}\n\n// =============================================================================\n// Fixed Tooltip (appended to body)\n// =============================================================================\n\n.mpr-tooltip-fixed {\n position: fixed;\n background: $es-white;\n color: $es-slate-800;\n padding: $es-spacing-md $es-spacing-lg;\n border-radius: $es-radius-md;\n font-size: 13px;\n line-height: 1.625;\n white-space: normal;\n z-index: 10500;\n max-width: 350px;\n min-width: 200px;\n text-align: left;\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 1px 0px,\n rgba(64, 68, 82, 0.16) 0px 0px 0px 1px,\n rgba(64, 68, 82, 0.08) 0px 2px 5px 0px;\n\n strong {\n display: block;\n margin-bottom: 0.5rem;\n font-weight: $es-font-weight-semibold;\n color: #337ab7;\n }\n\n p {\n margin: 0;\n color: $es-text-secondary;\n }\n}\n\n// =============================================================================\n// MPR Icon (SVG mask icons)\n// =============================================================================\n\n.mpr-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n background-color: $es-slate-600;\n vertical-align: middle;\n cursor: pointer;\n transition: background-color 0.2s;\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n -webkit-mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: center;\n\n &:hover {\n background-color: #5bc0de;\n }\n\n &.link {\n background-color: #5bc0de;\n\n &:hover {\n background-color: #337ab7;\n }\n }\n}\n\n// Info icon\n.mpr-icon.icon-info {\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E\");\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E\");\n}\n\n// =============================================================================\n// Tooltip Content Styling\n// =============================================================================\n\n.tooltip-list {\n margin: 0.5rem 0;\n\n > div {\n margin: 0.25rem 0;\n padding-left: 0.5rem;\n }\n}\n\n.tooltip-example {\n font-family: monospace;\n font-size: 12px;\n background: $es-slate-100;\n padding: 0.25rem 0.5rem;\n border-radius: $es-radius-sm;\n margin: 0.25rem 0;\n}\n\n.tooltip-logic {\n font-size: 11px;\n color: $es-text-muted;\n margin-top: 0.5rem;\n padding-top: 0.5rem;\n border-top: 1px solid $es-border-color;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["_mixins.scss","layouts/_form-integration.scss","_variables.scss","layouts/_responsive.scss","components/_entity-selector.scss","components/_dropdown.scss","components/_chips.scss","components/_groups.scss","components/_value-picker.scss","components/_modal.scss","components/_list-preview.scss","components/_schedule.scss","components/_tips.scss","components/_condition-trait.scss","components/_combinations.scss","components/_method-dropdown.scss","components/_tooltip.scss"],"names":[],"mappings":"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ACI,cAMZ,0FACI,aACA,mBACA,IHtPQ,MG0PZ,wEACI,aACA,mBACA,uBACA,IH9PQ,MG+PR,QH5PQ,KG6PR,MHhTM,QGiTN,UHjNU,QGmNV,4EACI,kBACA,WAKR,gFACI,aACA,sBACA,mBACA,uBACA,IH/QQ,MGgRR,QH7QQ,KG8QR,kBACA,MHlUM,QGoUN,oFACI,eACA,WAGJ,oFACI,SACA,UH3OM,QGgPd,oFACI,aACA,mBACA,uBACA,QHjSQ,KGkSR,MHrVM,QGuVN,wFACI,iBACA,kCAKR,wFACI,aACA,mBACA,uBACA,IHlTQ,MGmTR,mBACA,6BACA,UHtQU,OGuQV,MHtWM,QGwWN,0HACI,YHnQc,IGoQd,MHzWE,QG4WN,4HLtSJ,WACA,mBACA,UEuBc,QFtBd,YEgCoB,IF/BpB,MExEU,QFyEV,iBE5GO,KF6GP,yBACA,cEpBW,OFqBX,qEAEA,wIACI,aE9GK,QF+CT,UACA,4CAkEA,sJACI,MExFM,QG8WN,4HAEI,qBACA,UHjRM,OGkRN,eAKR,wFACI,aACA,uBACA,QHxUQ,KGyUR,6BAEA,sHLxXJ,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,kIACI,aK+WA,sHAEI,oBACA,mBACA,IHjVI,OGkVJ,mBACA,UHlSM,QGmSN,YH9RY,IG+RZ,MHhaC,QGiaD,WH/ZO,oBGgaP,cH5UG,OG6UH,gCAEA,kIACI,+BAGJ,sIACI,WACA,YAMZ,kFACI,aACA,mBACA,8BACA,IHzWQ,MG0WR,mBACA,WHhaM,QGiaN,6BACA,8BAGJ,oGACI,UHlUU,OGmUV,MHlaM,QGoaN,kHACI,MHjcC,QGqcT,oFACI,aACA,IH3XQ,MG8XZ,0FL1aA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,sGACI,aKiaJ,0FAEI,mBACA,UHjVU,QGkVV,YH7UgB,IG8UhB,cHzXO,OG0XP,gCAEA,gHACI,MHtbE,QGubF,WHjbG,QGmbH,4HACI,WHnbD,QGubP,8GACI,MHheD,KGieC,WH7dC,QG+dD,0HACI,WH/dG,QGqef,8FACI,QH1ZQ,KG2ZR,WHtcM,QGucN,gCAGJ,0FACI,aACA,mBACA,8BACA,cHpaQ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CQ,MG8lCZ,mFACI,aACA,mBACA,IHjmCQ,MGkmCR,eAGJ,uRAGI,aACA,mBACA,WAGJ,gXAII,UHlkCU,OGmkCV,MHlqCM,QGmqCN,mBAEA,gYACI,oBAIR,yFACI,MH3qCM,QG8qCV,88BLvmCA,WACA,mBACA,UEuBc,QFtBd,YEgCoB,IF/BpB,MExEU,QFyEV,iBE5GO,KF6GP,yBACA,cEpBW,OFqBX,qEAEA,skCACI,aE9GK,QF+CT,UACA,4CAkEA,ktCACI,MExFM,QG+qCV,88BAWI,WACA,qBACA,UH5lCU,OG+lCd,iULvnCA,WACA,mBACA,UEuBc,QFtBd,YEgCoB,IF/BpB,MExEU,QFyEV,iBE5GO,KF6GP,yBACA,cEpBW,OFqBX,qEAEA,qWACI,aE9GK,QF+CT,UACA,4CAkEA,+YACI,MExFM,QG+rCV,iUAII,qBACA,UHpmCU,OGqmCV,gBAGJ,iUAGI,aACA,eACA,WAIJ,+FL5sCA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,2GACI,aKmsCJ,+FAEI,oBACA,mBACA,WACA,qBACA,UHvnCU,OGwnCV,MHttCM,QGutCN,WHxvCG,KGyvCH,yBACA,cHjqCO,MGkqCP,eACA,gCAEA,2GACI,WHnuCE,QGouCF,aHvtCG,QG0tCP,6GACI,WH9vCO,oBG+vCP,aHjwCC,QGkwCD,MHlwCC,QGowCD,yIACI,MHrwCH,QGywCL,2HACI,aHrwCC,QGswCD,+BAEA,uJACI,MHzwCH,QG0wCG,YH7oCU,IGipClB,yHACI,YHnpCY,IGupChB,2HACI,oBACA,mBACA,YACA,MHhwCE,QGiwCF,iBAEA,+HACI,eACA,MHjyCH,QGqyCD,+IACI,eACA,uBACA,cHntCD,MGotCC,gCAEA,2JACI,+BACA,MH7yCP,QG+yCO,+JACI,MHhzCX,QGozCG,yKACI,WHrzCP,QGszCO,MH1zCT,KG4zCS,6KACI,MH7zCb,KGk0CS,mKACI,mCAQpB,iQLvyCA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,2LACI,aK8xCJ,iQAEI,oBACA,mBACA,WACA,qBACA,UHltCU,OGmtCV,MHjzCM,QGkzCN,WH5yCO,QG6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QGkwDV,YH7vDgB,IG8vDhB,MHh2DM,QFVV,gBACA,uBACA,mBK42DA,gLAEI,UH1wDU,OG2wDV,MH12DM,QG62DV,mFLp3DA,gBACA,uBACA,mBKs3DA,mGACI,MHj3DM,QGo3DV,uGACI,MHt3DM,QGu3DN,eAIJ,6EACI,cACA,WACA,iBACA,UHhyDU,OGmyDd,yFACI,MHl4DM,QGq4DV,uFACI,MH15DI,QG25DJ,YHlyDkB,IGuyDd,iIACI,MHr6DH,QGw6DD,mIACI,MHj6DH,QGo6DD,mIACI,MHz6DJ,QG86DR,yFACI,MH55DM,QG+5DV,2EACI,cAIJ,wLAEI,aACA,mBACA,uBACA,cACA,WACA,YACA,yBACA,cHp3DO,MGq3DP,gCAEA,gMACI,aACA,eACA,MHn9DD,KGs9DH,4kBAEI,WHp9DC,QGq9DD,aHr9DC,QGu9DD,4lBACI,cAMZ,6EACI,aACA,mBACA,uBACA,IHt5DQ,MGu5DR,QHp5DQ,KGq5DR,MHx8DM,QGy8DN,UHz2DU,QG22DV,iFACI,kBACA,WAKR,6FACI,aACA,mBACA,uBACA,IHt6DQ,MGu6DR,mBACA,UHz3DU,OG03DV,MHz9DM,QG29DN,wPAEI,mBAGJ,+HACI,YH33Dc,IG43Dd,MHj+DE,QGo+DN,iIL95DJ,WACA,mBACA,UEuBc,QFtBd,YEgCoB,IF/BpB,MExEU,QFyEV,iBE5GO,KF6GP,yBACA,cEpBW,OFqBX,qEAEA,6IACI,aE9GK,QF+CT,UACA,4CAkEA,2JACI,MExFM,QGs+DN,iIAEI,qBACA,UHz4DM,OG04DN,eAGJ,2HACI,aACA,mBACA,uBACA,QHj8DI,OGk8DJ,SACA,YACA,MH/gEC,QGghED,0CACA,cH57DG,MG67DH,eACA,gCACA,aAEA,+HACI,eAGJ,uIACI,0CAMZ,6FACI,aACA,uBACA,QHv9DQ,KGw9DR,6BAEA,2HLvgEJ,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,uIACI,aK8/DA,2HAEI,oBACA,mBACA,IHh+DI,OGi+DJ,mBACA,UHj7DM,QGk7DN,YH76DY,IG86DZ,MH/iEC,QGgjED,WH9iEO,oBG+iEP,cH39DG,OG49DH,gCAEA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I,WEjHE,QQ+Yd,qBACI,oBACA,mBACA,YACA,qBACA,WR5YU,QQ6YV,cR1VW,MQ2VX,URrTc,OQuTd,yBACI,WACA,YACA,iBACA,kBAGJ,wCACI,MR3ZM,QQ4ZN,YR1TgB,IF5GpB,gBACA,uBACA,mBUsaI,gBCjcR,2BACI,WTDO,KSEP,yBACA,cTwFW,MSpFf,iBACI,aACA,mBACA,8BACA,ITsEY,KSrEZ,qBACA,WTcU,QSbV,gCACA,8BACA,eACA,iBACA,6CAEA,uBACI,WTOM,QSHd,gBACI,aACA,mBACA,WACA,UTmGc,QSlGd,YTwGsB,ISvGtB,MTIU,QSFV,kBACI,MTFM,QSOd,eACI,QTyCY,KSrChB,kBACI,cTqCY,OSnCZ,6BACI,gBAIR,wBACI,aACA,mBACA,ITyBY,MSxBZ,cTwBY,MSvBZ,UTuEc,QStEd,YT4EsB,IS3EtB,MTxBU,QS0BV,0BACI,MT9BM,QSkCd,8BACI,cTcY,KSbZ,UT2Dc,OS1Dd,MTrCU,QSyCd,gBACI,aACA,eACA,ITKY,KSFhB,gBACI,OACA,gBAGJ,gBACI,cACA,qBACA,UTwCc,OSvCd,YT6CoB,IS5CpB,MTxDU,QS2Dd,gBXWI,WACA,mBACA,UEuBc,QFtBd,YEgCoB,IF/BpB,MExEU,QFyEV,iBE5GO,KF6GP,yBACA,cEpBW,OFqBX,qEAEA,sBACI,aE9GK,QF+CT,UACA,4CAkEA,6BACI,MExFM,QSkEd,iBACI,aACA,sBACA,ITpBY,MSuBhB,SACI,aACA,mBACA,ITzBY,KS0BZ,QT3BY,MS4BZ,WTtEU,QSuEV,cTnBW,OSqBX,kBACI,WAIR,YACI,aACA,mBACA,ITvCY,MSwCZ,gBAGJ,cACI,WACA,YACA,eAGJ,UACI,UTFc,QSGd,YTEoB,ISDpB,MTjGU,QSqGd,iBACI,OACA,kBACA,YACA,WTpGW,QSqGX,cThDa,MSiDb,eAGJ,eACI,kBACA,MACA,YACA,WTjJS,QSkJT,cTzDa,MS0Db,gCAGJ,iBACI,kBACA,QACA,WACA,YACA,WT/JO,KSgKP,yBACA,kBACA,gCACA,YACA,WTjEW,kCSkEX,uCAEA,uBACI,WTpEO,6BSuEX,wBACI,gBAGJ,8BACI,UAGJ,4BACI,UAKR,WACI,aACA,mBACA,IT7GY,OS8GZ,gBACA,UT/Dc,OSgEd,sBACA,MT/JU,QSkKd,gBACI,MTpKU,QSwKd,iBACI,QTxHY,KSyHZ,WTpKU,QSqKV,cTjHW,OSoHf,gBACI,aACA,mBACA,ITjIY,MSkIZ,cTjIY,KSoIhB,kBACI,WACA,YACA,eAGJ,eACI,UT5Fc,QS6Fd,YTxFoB,ISyFpB,MT3LU,QS8Ld,mBACI,aACA,eACA,ITrJY,OSwJhB,sBXaI,oBACA,mBACA,IEvKY,OFwKZ,qBACA,UEzHc,OF0Hd,YEpHoB,IFqHpB,WE9NU,QF+NV,ME1NU,QF2NV,cE/Ja,MFiKb,mCA1NA,UACA,SACA,gBACA,YACA,eACA,aACA,cAEA,yCACI,aAiNJ,mCA3PA,aACA,mBACA,uBA4PI,WACA,YACA,eACA,MEpOM,QFqON,kBAEA,yCACI,0BACA,ME5PA,QS0NZ,sBAEI,eAEA,+BACI,WTtOW,oBSuOX,MTzOK,QS8Ob,aACI,aACA,mBACA,ITrKY,MSsKZ,mBACA,WTlOY,QSmOZ,cT9JW,OS+JX,UT1Hc,OS2Hd,MTtOM,QSwON,eACI,UT7HU,QSgId,yBACI,sBACA,YT5HkB,ISiI1B,kBACI,aACA,sBACA,IT3LY,OS4LZ,QT1LY,KS2LZ,WTtOU,QSuOV,cTnLW,OSoLX,UT9Ic,QS+Id,MT9OU,QSgPV,gCACI,aACA,mBACA,ITpMQ,MSsMR,kCACI,MT9QC,QS+QD,UTxJM,QS2JV,2CACI,MT5PE,QSmQV,oDACI,aAGJ,sDACI,cT7MO,MUxFX,kFACI,wBACA,yBACA,cVqFO,MUpFP,gBACA,6DAIJ,0EACI,aACA,mBACA,YACA,oBACA,eACA,iBACA,6CAEA,sFACI,2BAIJ,sGACI,eACA,MVXC,QUeL,oFACI,OACA,eACA,YVmGc,IUlGd,MVQG,QUHX,0EACI,UVqFU,OUpFV,MVDO,QUEP,yBAKA,8HACI,yBAGJ,gIACI,cAKR,4EACI,aACA,wBAIJ,sEACI,aACA,IVcQ,KUbR,2DAIJ,oEACI,aACA,IVOQ,KUNR,QVMQ,KULR,WV5EG,KU6EH,cVaO,OUZP,yBAIJ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","file":"entity-selector.css","sourcesContent":["/**\n * Entity Selector Mixins\n * Reusable patterns - prefer Bootstrap utilities in HTML where possible\n */\n\n@use 'variables' as *;\n\n// =============================================================================\n// Layout\n// =============================================================================\n\n@mixin flex-center {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n@mixin flex-between {\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n@mixin grid-columns($cols) {\n display: grid;\n grid-template-columns: repeat($cols, 1fr);\n gap: $es-spacing-sm;\n}\n\n// =============================================================================\n// Text\n// =============================================================================\n\n@mixin text-truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n// =============================================================================\n// Interactive Elements\n// =============================================================================\n\n// Reset button styles\n@mixin button-reset {\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n cursor: pointer;\n font: inherit;\n color: inherit;\n\n &:focus {\n outline: none;\n }\n}\n\n// Focus ring (Bootstrap 4 style)\n@mixin focus-ring($color: $es-primary) {\n outline: 0;\n box-shadow: 0 0 0 0.2rem rgba($color, 0.25);\n}\n\n// Interactive hover state\n@mixin interactive-item {\n cursor: pointer;\n transition: background-color $es-transition-fast, color $es-transition-fast;\n\n &:hover {\n background-color: $es-bg-hover;\n }\n}\n\n// =============================================================================\n// Cards & Containers\n// =============================================================================\n\n@mixin card {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n}\n\n@mixin dropdown-container {\n position: absolute;\n z-index: $es-z-dropdown;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n box-shadow: $es-shadow-lg;\n}\n\n// =============================================================================\n// Form Elements\n// =============================================================================\n\n// Reset input styles (for inputs in custom wrappers)\n@mixin input-reset {\n padding: 0;\n margin: 0;\n background: none;\n border: none;\n font: inherit;\n color: inherit;\n\n &:focus {\n outline: none;\n }\n}\n\n@mixin input-base {\n width: 100%;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n line-height: $es-line-height-normal;\n color: $es-text-primary;\n background-color: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: border-color $es-transition-fast, box-shadow $es-transition-fast;\n\n &:focus {\n border-color: $es-primary;\n @include focus-ring($es-primary);\n }\n\n &::placeholder {\n color: $es-text-light;\n }\n}\n\n// =============================================================================\n// Scrollbar\n// =============================================================================\n\n@mixin custom-scrollbar {\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n &::-webkit-scrollbar-track {\n background: $es-gray-100;\n border-radius: 3px;\n }\n\n &::-webkit-scrollbar-thumb {\n background: $es-gray-300;\n border-radius: 3px;\n\n &:hover {\n background: $es-gray-400;\n }\n }\n}\n\n// =============================================================================\n// Badges & Chips\n// =============================================================================\n\n@mixin badge($bg: $es-gray-200, $color: $es-gray-700) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.125rem 0.5rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n line-height: 1;\n background-color: $bg;\n color: $color;\n border-radius: $es-radius-full;\n}\n\n// Count badge with preview icon (used for tab badges, match counts, totals)\n// Note: Eye icon is provided in HTML via \n@mixin count-badge($bg: $es-primary) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.25rem;\n min-width: 20px;\n height: 20px;\n padding: 0 0.5rem;\n background: $bg;\n color: $es-white;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n border-radius: $es-radius-full;\n cursor: pointer;\n transition: all $es-transition-fast;\n flex-shrink: 0;\n\n &:hover {\n transform: scale(1.05);\n box-shadow: 0 2px 8px rgba($bg, 0.4);\n }\n\n // Loading state - spinner icon replaces eye\n &.loading {\n cursor: wait;\n\n i {\n font-size: 10px;\n animation: spin 0.6s linear infinite;\n }\n\n &:hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n // Inactive/empty state\n &.inactive,\n &.no-matches {\n background: $es-slate-400;\n cursor: default;\n\n &:hover {\n transform: none;\n box-shadow: none;\n }\n }\n\n // Popover open state\n &.popover-open {\n background: darken($bg, 10%);\n box-shadow: 0 2px 8px rgba($bg, 0.4);\n }\n\n // Icon inside badge (eye, spinner, etc.)\n i {\n font-size: 10px;\n line-height: 1;\n opacity: 0.8;\n }\n\n &:hover i {\n opacity: 1;\n }\n\n .preview-count {\n font-weight: $es-font-weight-bold;\n }\n}\n\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n\n@mixin chip {\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-xs $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n background: $es-gray-200;\n color: $es-gray-700;\n border-radius: $es-radius-full;\n\n .chip-remove {\n @include button-reset;\n @include flex-center;\n width: 14px;\n height: 14px;\n font-size: 10px;\n color: $es-text-muted;\n border-radius: 50%;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n }\n}\n\n// =============================================================================\n// Toggle Switch\n// =============================================================================\n\n@mixin toggle-switch($width: 36px, $height: 20px) {\n position: relative;\n width: $width;\n height: $height;\n border-radius: $height;\n background: $es-gray-400;\n transition: background-color $es-transition-normal;\n cursor: pointer;\n\n &::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: $height - 4px;\n height: $height - 4px;\n background: $es-white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n transition: transform $es-transition-normal;\n }\n\n &.active {\n background: $es-success;\n\n &::after {\n transform: translateX($width - $height);\n }\n }\n}\n\n// =============================================================================\n// Screen Reader Only\n// =============================================================================\n\n@mixin sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n","/**\n * Form Integration Styles\n * Handles PrestaShop admin form layout overrides\n */\n\n@use '../variables' as *;\n\n// Base border reset for all entity-selector elements\n.target-conditions-trait,\n.target-conditions-trait *,\n.entity-selector-trait,\n.entity-selector-trait *,\n.method-dropdown-menu,\n.method-dropdown-menu *,\n.target-preview-popover,\n.target-preview-popover * {\n border-style: solid;\n border-width: 0;\n border-color: $es-border-color;\n}\n\n// Full-width form group override using :has()\n.form-group:has(.entity-selector-trait),\n.form-group:has(.target-conditions-trait),\n.form-group:has(.condition-trait) {\n display: block;\n\n > .control-label {\n display: none;\n }\n\n > .col-lg-8 {\n width: 100%;\n max-width: 100%;\n padding-left: $es-spacing-md;\n padding-right: $es-spacing-md;\n flex: 0 0 100% !important;\n }\n}\n\n// Fallback class for browsers without :has() support\n.form-group.condition-trait-fullwidth {\n display: block;\n\n > .control-label {\n display: none;\n }\n\n > .col-lg-8 {\n width: 100%;\n max-width: 100%;\n padding-left: $es-spacing-md;\n padding-right: $es-spacing-md;\n flex: 0 0 100% !important;\n }\n}\n\n// Dropdown overflow fix\n// When dropdown is open, parent containers must allow overflow\n.panel:has(.target-search-dropdown.show),\n.card:has(.target-search-dropdown.show),\n.form-wrapper:has(.target-search-dropdown.show),\n.panel-body:has(.target-search-dropdown.show),\n.card-body:has(.target-search-dropdown.show),\n.form-group:has(.target-search-dropdown.show),\n.col-lg-8:has(.target-search-dropdown.show),\n.col-lg-12:has(.target-search-dropdown.show) {\n overflow: visible !important;\n}\n\n// Target conditions wrapper hierarchy overflow fix\n.target-conditions-trait:has(.target-search-dropdown.show),\n.entity-selector-trait:has(.target-search-dropdown.show),\n.condition-trait-body:has(.target-search-dropdown.show),\n.target-block-content:has(.target-search-dropdown.show),\n.target-block-groups:has(.target-search-dropdown.show),\n.target-group:has(.target-search-dropdown.show),\n.target-group-body:has(.target-search-dropdown.show),\n.target-search-wrapper:has(.target-search-dropdown.show) {\n overflow: visible !important;\n}\n","/**\n * Entity Selector Variables\n * Bootstrap 4 compatible values for PrestaShop admin theme\n */\n\n// =============================================================================\n// Base Colors\n// =============================================================================\n\n$es-white: #ffffff !default;\n$es-black: #000000 !default;\n\n// Primary (PrestaShop admin accent)\n$es-primary: #25b9d7 !default;\n$es-primary-hover: #1a9ab7 !default;\n$es-primary-light: rgba(37, 185, 215, 0.1) !default;\n\n// Semantic colors (Bootstrap 4 aligned)\n$es-success: #28a745 !default;\n$es-success-light: #d4edda !default;\n$es-success-dark: #1e7e34 !default;\n\n$es-danger: #dc3545 !default;\n$es-danger-light: #f8d7da !default;\n$es-danger-dark: #bd2130 !default;\n\n$es-warning: #ffc107 !default;\n$es-warning-light: #fff3cd !default;\n\n$es-info: #17a2b8 !default;\n$es-info-light: #d1ecf1 !default;\n\n// =============================================================================\n// Gray Scale (Bootstrap 4)\n// =============================================================================\n\n$es-gray-100: #f8f9fa !default;\n$es-gray-200: #e9ecef !default;\n$es-gray-300: #dee2e6 !default;\n$es-gray-400: #ced4da !default;\n$es-gray-500: #adb5bd !default;\n$es-gray-600: #6c757d !default;\n$es-gray-700: #495057 !default;\n$es-gray-800: #343a40 !default;\n$es-gray-900: #212529 !default;\n\n// Slate (subtle variations)\n$es-slate-50: #f8fafc !default;\n$es-slate-100: #f1f5f9 !default;\n$es-slate-200: #e2e8f0 !default;\n$es-slate-300: #cbd5e1 !default;\n$es-slate-400: #94a3b8 !default;\n$es-slate-500: #64748b !default;\n$es-slate-600: #475569 !default;\n$es-slate-700: #334155 !default;\n$es-slate-800: #1e293b !default;\n$es-slate-900: #0f172a !default;\n\n// Cyan\n$es-cyan-50: #ecfeff !default;\n$es-cyan-100: #cffafe !default;\n$es-cyan-200: #a5f3fc !default;\n$es-cyan-500: #06b6d4 !default;\n$es-cyan-600: #0891b2 !default;\n$es-cyan-700: #0e7490 !default;\n\n// =============================================================================\n// Semantic Aliases\n// =============================================================================\n\n$es-bg-header: $es-gray-100 !default;\n$es-bg-hover: $es-gray-200 !default;\n$es-bg-active: $es-gray-200 !default;\n$es-bg-body: $es-white !default;\n\n$es-border-color: $es-gray-300 !default;\n$es-border-light: $es-gray-200 !default;\n$es-border-dark: $es-gray-400 !default;\n\n$es-text-primary: $es-gray-900 !default;\n$es-text-secondary: $es-gray-700 !default;\n$es-text-muted: $es-gray-600 !default;\n$es-text-light: $es-gray-500 !default;\n\n// =============================================================================\n// Spacing (Bootstrap 4 compatible)\n// =============================================================================\n\n$es-spacing-xs: 0.25rem !default; // 4px\n$es-spacing-sm: 0.5rem !default; // 8px\n$es-spacing-md: 1rem !default; // 16px\n$es-spacing-lg: 1.5rem !default; // 24px\n$es-spacing-xl: 2rem !default; // 32px\n\n// =============================================================================\n// Border Radius (Bootstrap 4 compatible)\n// =============================================================================\n\n$es-radius-sm: 0.2rem !default;\n$es-radius-md: 0.25rem !default;\n$es-radius-lg: 0.3rem !default;\n$es-radius-xl: 0.5rem !default;\n$es-radius-full: 50rem !default;\n\n// =============================================================================\n// Box Shadows (Bootstrap 4 compatible)\n// =============================================================================\n\n$es-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !default;\n$es-shadow-md: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !default;\n$es-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175) !default;\n$es-shadow-xl: 0 1.5rem 4rem rgba(0, 0, 0, 0.2) !default;\n\n// =============================================================================\n// Transitions\n// =============================================================================\n\n$es-transition-fast: 0.15s ease-in-out !default;\n$es-transition-normal: 0.2s ease-in-out !default;\n$es-transition-slow: 0.3s ease-in-out !default;\n\n// =============================================================================\n// Z-Index (below Bootstrap modal)\n// =============================================================================\n\n$es-z-dropdown: 1000 !default;\n$es-z-modal: 1050 !default;\n$es-z-popover: 1060 !default;\n$es-z-tooltip: 1070 !default;\n\n// =============================================================================\n// Typography\n// =============================================================================\n\n$es-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif !default;\n\n$es-font-size-xs: 0.75rem !default; // 12px\n$es-font-size-sm: 0.875rem !default; // 14px\n$es-font-size-base: 1rem !default; // 16px\n$es-font-size-lg: 1.125rem !default; // 18px\n\n$es-font-weight-normal: 400 !default;\n$es-font-weight-medium: 500 !default;\n$es-font-weight-semibold: 600 !default;\n$es-font-weight-bold: 700 !default;\n\n$es-line-height-tight: 1.25 !default;\n$es-line-height-normal: 1.5 !default;\n","/**\n * Responsive Styles\n * Media query adjustments for different screen sizes\n */\n\n@use '../variables' as *;\n\n// Tablet and below\n@media (max-width: 991px) {\n .target-conditions-trait,\n .entity-selector-trait {\n .condition-trait-header {\n flex-direction: column;\n align-items: flex-start;\n gap: $es-spacing-sm;\n }\n\n .trait-header-right {\n width: 100%;\n justify-content: flex-end;\n }\n\n .target-block-tabs {\n flex-wrap: wrap;\n }\n }\n}\n\n// Mobile\n@media (max-width: 767px) {\n .target-conditions-trait,\n .entity-selector-trait {\n .target-block-tab {\n padding: $es-spacing-sm;\n font-size: $es-font-size-xs;\n }\n\n .target-group-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .target-search-dropdown {\n width: 100% !important;\n left: 0 !important;\n right: 0 !important;\n }\n\n .dropdown-results-grid {\n grid-template-columns: 1fr !important;\n }\n }\n}\n\n// High-resolution displays\n@media (min-width: 1600px) {\n .target-conditions-trait,\n .entity-selector-trait {\n .dropdown-results-grid.view-grid-3 {\n grid-template-columns: repeat(4, 1fr);\n }\n }\n}\n","/**\n * Entity Selector - Main Component Styles\n * Wrapper, header, body, tabs, blocks\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Main wrapper (supports both .target-conditions-trait and .entity-selector-trait)\n.target-conditions-trait,\n.entity-selector-trait {\n position: relative;\n overflow: visible;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n\n // Trait Header (collapsible)\n .condition-trait-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n padding: 0.875rem $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n }\n\n .trait-header-left {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 0;\n flex: 1;\n }\n\n .trait-icon {\n font-size: $es-font-size-lg;\n color: $es-text-muted;\n flex-shrink: 0;\n }\n\n .trait-title-group {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n }\n\n .trait-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n white-space: nowrap;\n }\n\n .trait-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n // Total count badge in header\n .trait-total-count {\n @include count-badge($es-primary);\n margin-left: $es-spacing-sm;\n }\n\n // Show all toggle switch\n .trait-show-all-toggle {\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-right: 0.75rem;\n padding: 0.25rem $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.05);\n }\n\n .toggle-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n }\n\n .show-all-checkbox {\n display: none;\n }\n\n .toggle-slider {\n position: relative;\n width: 36px;\n height: 20px;\n background: $es-slate-300;\n border-radius: $es-radius-full;\n transition: background-color $es-transition-normal;\n\n &::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n background: $es-white;\n border-radius: 50%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n transition: transform $es-transition-normal;\n }\n }\n\n .show-all-checkbox:checked + .toggle-slider {\n background: $es-success;\n\n &::after {\n transform: translateX(16px);\n }\n }\n }\n\n // Validation error states\n &.has-validation-error {\n border-color: $es-danger;\n box-shadow: 0 0 0 3px rgba($es-danger, 0.1);\n\n .condition-trait-header {\n border-bottom-color: $es-danger;\n }\n }\n\n .trait-validation-error {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: 0.625rem $es-spacing-md;\n background: $es-danger-light;\n color: #b91c1c;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n border-bottom: 1px solid #fecaca;\n\n i {\n color: $es-danger;\n }\n }\n\n // Required indicator\n &.trait-required .trait-title::after {\n content: ' *';\n color: $es-danger;\n }\n\n // Body\n .condition-trait-body {\n padding: 0;\n background: $es-white;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n // Block type tabs\n .target-block-tabs {\n display: flex;\n flex-wrap: wrap;\n gap: 0;\n padding: 0;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n }\n\n .target-block-tab {\n position: relative;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex: none;\n min-width: 0;\n padding: 0.625rem $es-spacing-md;\n margin-bottom: -1px;\n background: transparent;\n border: 0;\n border-bottom: 2px solid transparent;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-slate-700;\n }\n\n &.active {\n background: $es-white;\n border-bottom-color: $es-cyan-500;\n color: $es-primary;\n }\n\n i {\n font-size: $es-font-size-sm;\n }\n\n .tab-label {\n white-space: nowrap;\n }\n\n .tab-badge {\n @include count-badge($es-primary);\n }\n\n &.has-data:not(.active) .tab-badge {\n @include count-badge($es-slate-400);\n }\n }\n\n // Block container\n .target-block-container {\n display: none;\n\n &.active {\n display: block;\n }\n }\n\n .target-block-content {\n padding: $es-spacing-md;\n }\n\n .target-block-groups {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-md;\n }\n\n // Block header (for standalone blocks)\n .target-block-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n }\n\n // Empty state\n .target-block-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: $es-font-size-sm;\n }\n }\n\n // Collapse toggle\n .trait-collapse-toggle,\n .collapse-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n cursor: pointer;\n transition: transform $es-transition-normal;\n\n &.collapsed {\n transform: rotate(-90deg);\n }\n }\n\n // Header actions\n .trait-header-right {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n // Collapsed state\n &.collapsed {\n .condition-trait-body {\n display: none;\n }\n\n .condition-trait-header {\n border-radius: $es-radius-lg;\n }\n }\n}\n\n// Single mode specific styles\n.target-conditions-trait.single-mode,\n.entity-selector-trait.single-mode {\n .target-block-tabs {\n display: none;\n }\n\n .target-block-container {\n display: block;\n }\n}\n\n// Header action buttons\n.target-conditions-trait,\n.entity-selector-trait {\n .header-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .header-action-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n background: transparent;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n\n i {\n font-size: 12px;\n }\n }\n}\n","/**\n * Search Dropdown Component\n * Includes search input, filter panel, results grid\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Search wrapper\n .target-search-wrapper {\n position: relative;\n }\n\n // Search dropdown\n .target-search-dropdown {\n @include dropdown-container;\n display: none;\n width: 600px;\n max-width: calc(100vw - 40px);\n\n &.show {\n display: block;\n }\n }\n\n // Dropdown header\n .dropdown-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n }\n\n .dropdown-search-input {\n @include input-base;\n flex: 1;\n padding: $es-spacing-sm $es-spacing-md;\n }\n\n .dropdown-close-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n color: $es-text-muted;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n }\n\n // Dropdown controls bar\n .dropdown-controls {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-white;\n border-bottom: 1px solid $es-border-color;\n }\n\n .dropdown-controls-left,\n .dropdown-controls-right {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n // View mode buttons\n .view-mode-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n background: transparent;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n color: $es-text-secondary;\n }\n\n &.active {\n background: $es-primary;\n color: $es-white;\n }\n }\n\n // Results count\n .dropdown-results-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n // Dropdown body\n .dropdown-body {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n // Results container\n .dropdown-results {\n padding: $es-spacing-sm;\n }\n\n // Results count text\n .results-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n padding: $es-spacing-xs $es-spacing-sm;\n }\n\n // Results header (for list view columns)\n .results-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-md;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n // Grid view\n .dropdown-results-grid {\n display: grid;\n gap: $es-spacing-sm;\n\n &.view-list {\n grid-template-columns: 1fr;\n }\n\n &.view-grid-2 {\n grid-template-columns: repeat(2, 1fr);\n }\n\n &.view-grid-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n }\n\n // Result item (both class names for compatibility)\n // Note: Main dropdown-item styling is in the global .target-search-dropdown section below\n .dropdown-result-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm 0;\n background: $es-white;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n cursor: pointer;\n transition: background $es-transition-fast;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n }\n\n &.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n\n &:hover {\n background: $es-white;\n }\n }\n }\n\n .result-item-image,\n .result-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .result-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n background: $es-slate-100;\n border-radius: $es-radius-sm;\n color: $es-text-muted;\n\n i {\n font-size: 16px;\n }\n }\n\n .result-item-info,\n .result-info {\n flex: 1;\n min-width: 0;\n }\n\n .result-item-name,\n .result-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .result-item-meta,\n .result-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .subtitle-line {\n @include text-truncate;\n }\n\n .subtitle-line-primary {\n color: $es-text-secondary;\n }\n\n .subtitle-line-secondary {\n color: $es-text-muted;\n font-size: 11px;\n }\n\n // Result columns (for product list view)\n .result-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n font-size: $es-font-size-xs;\n }\n\n .result-col-price {\n color: $es-text-secondary;\n }\n\n .result-col-sale {\n color: $es-danger;\n font-weight: $es-font-weight-semibold;\n }\n\n .result-col-stock {\n .col-value {\n &.stock-ok {\n color: $es-success;\n }\n\n &.stock-low {\n color: $es-warning;\n }\n\n &.stock-out {\n color: $es-danger;\n }\n }\n }\n\n .result-col-sales {\n color: $es-text-muted;\n }\n\n .col-value {\n display: block;\n }\n\n .result-item-checkbox,\n .result-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid $es-border-dark;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n\n .dropdown-result-item.selected &,\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n\n // Product-specific result item\n .result-item-product {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n // No results state\n .no-results {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n font-size: 1.25rem;\n opacity: 0.5;\n }\n }\n\n // Empty state\n .dropdown-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: $es-font-size-sm;\n }\n }\n\n // Loading state\n .dropdown-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n\n i {\n font-size: 1.5rem;\n animation: spin 1s linear infinite;\n }\n }\n\n // Load more controls\n .load-more-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n border-top: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n .remaining-count {\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n .load-more-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 70px;\n }\n }\n\n // Load more button\n .dropdown-load-more {\n display: flex;\n justify-content: center;\n padding: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n\n .load-more-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n background: $es-primary-light;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n\n &.loading {\n opacity: 0.7;\n cursor: wait;\n }\n }\n }\n\n // Dropdown footer\n .dropdown-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n .dropdown-selection-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n strong {\n color: $es-primary;\n }\n }\n\n .dropdown-actions {\n display: flex;\n gap: $es-spacing-sm;\n }\n\n .dropdown-action-btn {\n @include button-reset;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &.btn-cancel {\n color: $es-text-secondary;\n background: $es-slate-100;\n\n &:hover {\n background: $es-slate-200;\n }\n }\n\n &.btn-apply {\n color: $es-white;\n background: $es-primary;\n\n &:hover {\n background: $es-primary-hover;\n }\n }\n }\n\n // Filter panel\n .dropdown-filter-panel {\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n }\n\n .filter-panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: $es-spacing-sm;\n }\n\n .filter-panel-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n }\n\n .filter-panel-toggle {\n @include button-reset;\n font-size: $es-font-size-xs;\n color: $es-primary;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .filter-panel-content {\n display: grid;\n gap: $es-spacing-sm;\n grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n }\n\n .filter-group {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n\n .filter-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n }\n\n .filter-select,\n .filter-input {\n @include input-base;\n padding: 0.375rem $es-spacing-sm;\n font-size: $es-font-size-xs;\n }\n}\n\n// Category tree view\n.target-conditions-trait,\n.entity-selector-trait {\n .category-tree {\n padding: $es-spacing-sm;\n }\n\n .tree-container {\n // Contains tree items\n }\n\n .tree-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n // Tree item (used by JavaScript)\n .tree-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: 0.375rem $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n\n .tree-checkbox {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n\n &.has-children {\n // Parent node styling\n }\n }\n\n .tree-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-text-muted;\n cursor: pointer;\n transition: transform $es-transition-fast;\n\n i {\n font-size: 12px;\n }\n }\n\n .tree-toggle-placeholder {\n width: 16px;\n height: 16px;\n }\n\n .btn-select-children {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n .btn-select-children-placeholder {\n width: 18px;\n height: 18px;\n }\n\n .tree-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n }\n\n .tree-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n color: $es-text-muted;\n\n i {\n font-size: 14px;\n }\n }\n\n .tree-info {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n flex: 1;\n min-width: 0;\n }\n\n .tree-name {\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .tree-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n // Legacy category tree classes (for compatibility)\n .category-tree-item {\n padding: 0.25rem 0;\n }\n\n .category-tree-node {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n }\n }\n\n .category-tree-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-text-muted;\n transition: transform $es-transition-fast;\n\n &.expanded {\n transform: rotate(90deg);\n }\n\n &.empty {\n visibility: hidden;\n }\n }\n\n .category-tree-checkbox {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n &.checked {\n background: $es-primary;\n border-color: $es-primary;\n\n &::after {\n content: '\\2713';\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: $es-white;\n font-size: 10px;\n }\n }\n\n &.indeterminate {\n background: $es-primary;\n border-color: $es-primary;\n\n &::after {\n content: '\\2212';\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: $es-white;\n font-size: 10px;\n }\n }\n }\n\n .category-tree-name {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .category-tree-count {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .category-tree-children {\n margin-left: 24px;\n }\n\n // Search history\n .search-history-list {\n padding: $es-spacing-sm;\n }\n\n .history-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n > i {\n color: $es-text-muted;\n font-size: 14px;\n }\n }\n\n .history-query {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n }\n\n .btn-delete-history {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n opacity: 0;\n transition: all $es-transition-fast;\n\n .history-item:hover & {\n opacity: 1;\n }\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Filter panel\n .filter-panel {\n display: none;\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n\n &.show {\n display: block;\n }\n }\n\n .filter-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // View mode select\n .view-mode-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 80px;\n }\n}\n\n// =============================================================================\n// Global dropdown styles (when appended to body instead of inside wrapper)\n// Duplicates key styles for when dropdown is outside .entity-selector-trait\n// =============================================================================\nbody > .target-search-dropdown,\n.target-search-dropdown {\n @include dropdown-container;\n display: none;\n width: 600px;\n max-width: calc(100vw - 40px);\n\n &.show {\n display: block;\n }\n\n // Dropdown header\n .dropdown-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n flex-wrap: wrap;\n }\n\n .results-count {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n white-space: nowrap;\n }\n\n .dropdown-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n flex-wrap: wrap;\n flex: 1;\n justify-content: flex-end;\n }\n\n .btn-select-all,\n .btn-clear-selection {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n kbd {\n font-size: 0.65rem;\n padding: 0.125rem 0.25rem;\n background: $es-slate-100;\n border-radius: 2px;\n color: $es-text-muted;\n }\n }\n\n .sort-controls {\n display: flex;\n align-items: center;\n // No gap - elements are connected\n }\n\n .sort-field-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 80px;\n height: 28px; // Match btn-sort-dir height\n border-radius: $es-radius-sm 0 0 $es-radius-sm;\n border-right: none;\n }\n\n .btn-sort-dir {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n min-width: 38px;\n flex-shrink: 0;\n height: 28px;\n padding: 0;\n margin: 0;\n color: $es-text-muted;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: 0 $es-radius-sm $es-radius-sm 0;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n i {\n font-size: 14px;\n }\n\n &:hover {\n background: $es-bg-hover;\n color: $es-text-primary;\n }\n\n &.active {\n background: $es-primary-light;\n border-color: $es-primary;\n color: $es-primary;\n }\n }\n\n .view-mode-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 80px;\n margin-left: 0.25rem;\n }\n\n .btn-toggle-filters,\n .btn-show-history {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n min-width: 32px;\n flex-shrink: 0;\n height: 28px;\n padding: 0;\n margin: 0;\n color: $es-text-muted;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n i {\n font-size: 14px;\n }\n\n &:hover {\n background: $es-bg-hover;\n color: $es-text-primary;\n }\n\n &.active {\n background: $es-primary-light;\n border-color: $es-primary;\n color: $es-primary;\n }\n }\n\n .refine-compact {\n display: flex;\n align-items: center;\n // No gap - elements are connected\n\n // Connected to refine-input\n .btn-refine-negate {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n min-width: 32px;\n flex-shrink: 0;\n height: 28px;\n padding: 0;\n margin: 0;\n color: $es-text-muted;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-right: none;\n border-radius: $es-radius-sm 0 0 $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n color: $es-text-primary;\n }\n\n &.active {\n background: $es-danger-light;\n color: $es-danger;\n border-color: $es-danger;\n }\n }\n\n .refine-input {\n @include input-base;\n width: 100px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n border-radius: 0 $es-radius-sm $es-radius-sm 0;\n }\n\n .btn-clear-refine {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n margin: 0;\n margin-left: -1px; // Overlap input border when visible\n color: $es-text-muted;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: 0 $es-radius-sm $es-radius-sm 0;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n color: $es-text-primary;\n }\n }\n }\n\n // Filter panel\n .filter-panel {\n display: none;\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n\n &.show {\n display: block;\n }\n }\n\n .filter-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex-wrap: wrap;\n margin-bottom: $es-spacing-sm;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n .filter-label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n cursor: pointer;\n\n input[type=\"checkbox\"] {\n margin: 0;\n }\n }\n\n .filter-price-range {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n .filter-price-label {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .filter-price-min,\n .filter-price-max {\n @include input-base;\n width: 70px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .filter-price-sep {\n color: $es-text-muted;\n }\n }\n\n .btn-clear-filters {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n cursor: pointer;\n margin-left: auto;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n\n // Multi-row filters\n .filter-row-multi {\n flex-direction: column;\n align-items: stretch;\n gap: $es-spacing-sm;\n }\n\n .filter-subrow {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex-wrap: wrap;\n }\n\n .filter-range-group,\n .filter-date-group,\n .filter-select-group {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n }\n\n .filter-range-label,\n .filter-date-label,\n .filter-select-label,\n .filter-row-label {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n white-space: nowrap;\n\n i {\n margin-right: 0.25rem;\n }\n }\n\n .filter-range-sep {\n color: $es-text-muted;\n }\n\n .filter-product-count-min,\n .filter-product-count-max,\n .filter-sales-min,\n .filter-sales-max,\n .filter-turnover-min,\n .filter-turnover-max,\n .filter-date-add-from,\n .filter-date-add-to,\n .filter-last-product-from,\n .filter-last-product-to {\n @include input-base;\n width: 70px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .filter-depth-select,\n .filter-attribute-group-select,\n .filter-feature-group-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 100px;\n }\n\n .filter-attributes-container,\n .filter-features-container,\n .filter-values-container {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n }\n\n // Filter group toggle buttons (attribute/feature groups)\n .filter-group-toggle {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.active {\n background: $es-primary-light;\n border-color: $es-primary;\n color: $es-primary;\n\n .toggle-count {\n color: $es-primary;\n }\n }\n\n &.has-selection {\n border-color: $es-success;\n background: rgba($es-success, 0.05);\n\n .toggle-count {\n color: $es-success;\n font-weight: $es-font-weight-semibold;\n }\n }\n\n .toggle-name {\n font-weight: $es-font-weight-medium;\n }\n\n // Count with eye icon (like group-count-badge)\n .toggle-count {\n display: inline-flex;\n align-items: center;\n gap: 0.125rem;\n color: $es-text-muted;\n font-size: 0.65rem;\n\n i {\n font-size: 10px;\n color: $es-primary;\n }\n\n // Clickable preview badge\n &.clickable {\n cursor: pointer;\n padding: 0.125rem 0.25rem;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.1);\n color: $es-primary;\n\n i {\n color: $es-primary;\n }\n }\n\n &.popover-open {\n background: $es-primary;\n color: $es-white;\n\n i {\n color: $es-white;\n }\n }\n\n &.loading {\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n }\n }\n }\n\n // Filter value chips\n .filter-chip {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-text-secondary;\n background: $es-slate-100;\n border: 1px solid transparent;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.active {\n background: $es-primary;\n color: $es-white;\n }\n }\n\n // Filter attribute chip (specific)\n .filter-attr-chip,\n .filter-feat-chip {\n @extend .filter-chip;\n }\n\n // Filter row for values (expandable)\n .filter-row-values {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n\n .filter-values-container {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 0.25rem;\n flex: 1;\n }\n\n .filter-values-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n white-space: nowrap;\n }\n\n .btn-close-values {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n }\n\n // Filter chip name and count\n .chip-name {\n font-weight: $es-font-weight-medium;\n }\n\n .chip-count {\n font-size: 0.6rem;\n color: $es-text-muted;\n margin-left: 0.125rem;\n }\n\n .filter-chip.active .chip-count {\n color: rgba(255, 255, 255, 0.8);\n }\n\n // Dropdown content\n .dropdown-content {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n .dropdown-items {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm;\n }\n\n .item-checkbox {\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n }\n }\n\n .item-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n object-fit: cover;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n }\n\n .item-info {\n flex: 1;\n min-width: 0;\n }\n\n .item-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .item-meta {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n @include text-truncate;\n }\n\n // Dropdown footer\n .dropdown-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n .dropdown-footer-info {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .dropdown-footer-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .btn-cancel-dropdown {\n @include button-reset;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-sm;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n kbd {\n font-size: 0.65rem;\n padding: 0.125rem 0.25rem;\n background: $es-slate-100;\n border-radius: 2px;\n color: $es-text-muted;\n margin-left: 0.25rem;\n }\n }\n\n .btn-confirm-dropdown {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-sm;\n color: $es-white;\n background: $es-primary;\n border: 1px solid $es-primary;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:hover {\n background: $es-primary-hover;\n }\n\n kbd {\n font-size: 0.65rem;\n padding: 0.125rem 0.25rem;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 2px;\n color: rgba(255, 255, 255, 0.8);\n }\n }\n\n // Filter chips in dropdown\n .filter-chips-row {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n padding: $es-spacing-xs $es-spacing-md;\n border-bottom: 1px solid $es-border-color;\n }\n\n .filter-chip {\n @include chip;\n }\n\n // Empty and loading states\n .dropdown-empty,\n .dropdown-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n margin-bottom: $es-spacing-sm;\n }\n }\n\n // Search history panel\n .search-history-panel {\n display: none;\n padding: $es-spacing-sm;\n background: $es-white;\n border-bottom: 1px solid $es-border-color;\n\n &.show {\n display: block;\n }\n }\n\n .history-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n i {\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n }\n\n span {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n }\n\n .btn-remove-history,\n .btn-delete-history {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-danger;\n }\n }\n }\n\n // Search history list container\n .search-history-list {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n }\n\n // Results header (for list view columns)\n .results-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-md;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n\n .header-spacer {\n width: 58px; // checkbox + image width\n flex-shrink: 0;\n }\n\n .header-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n }\n\n .header-col-name {\n flex: 1;\n text-align: left;\n }\n }\n\n // Results container\n .dropdown-results {\n padding: $es-spacing-sm;\n background: $es-white;\n min-height: 200px;\n }\n\n // Dropdown item (search result)\n .dropdown-item {\n position: relative;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm 0;\n background: $es-white;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n cursor: pointer;\n transition: background $es-transition-fast;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n\n .result-checkbox {\n background: $es-primary;\n border-color: $es-primary;\n color: $es-white;\n\n i {\n display: block;\n }\n }\n }\n\n &.disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n\n // Checkbox indicator\n .result-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n background: $es-white;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n }\n }\n\n // View mode classes (applied to dropdown container)\n &.view-cols-2 .dropdown-results { @include grid-columns(2); }\n &.view-cols-3 .dropdown-results { @include grid-columns(3); }\n &.view-cols-4 .dropdown-results { @include grid-columns(4); }\n &.view-cols-5 .dropdown-results { @include grid-columns(5); }\n &.view-cols-6 .dropdown-results { @include grid-columns(6); }\n &.view-cols-7 .dropdown-results { @include grid-columns(7); }\n &.view-cols-8 .dropdown-results { @include grid-columns(8); }\n\n // Grid view item styling (compact cards)\n &.view-cols-2,\n &.view-cols-3,\n &.view-cols-4,\n &.view-cols-5,\n &.view-cols-6,\n &.view-cols-7,\n &.view-cols-8 {\n .dropdown-item {\n flex-direction: column;\n align-items: center;\n text-align: center;\n padding: 0;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n\n .result-checkbox {\n position: absolute;\n top: $es-spacing-xs;\n left: $es-spacing-xs;\n }\n\n .result-image,\n .result-icon {\n width: 48px;\n height: 48px;\n margin-bottom: $es-spacing-xs;\n }\n\n .result-info {\n width: 100%;\n }\n\n .result-name {\n font-size: $es-font-size-xs;\n line-height: 1.3;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .result-subtitle {\n display: none;\n }\n\n // Show compact product info in grid\n .result-col {\n display: none;\n }\n\n .result-grid-info {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 0.25rem;\n margin-top: $es-spacing-xs;\n font-size: 0.65rem;\n\n .grid-price {\n color: $es-text-primary;\n font-weight: $es-font-weight-semibold;\n }\n\n .grid-stock {\n color: $es-text-muted;\n\n &.stock-out { color: $es-danger; }\n &.stock-low { color: $es-warning; }\n }\n\n .grid-discount {\n color: $es-success;\n font-weight: $es-font-weight-medium;\n }\n }\n }\n\n // Hide results header in grid views\n .results-header {\n display: none;\n }\n }\n\n // Smaller items for higher column counts\n &.view-cols-5,\n &.view-cols-6,\n &.view-cols-7,\n &.view-cols-8 {\n .dropdown-item {\n .result-image,\n .result-icon {\n width: 40px;\n height: 40px;\n }\n\n .result-name {\n font-size: 0.65rem;\n }\n }\n }\n\n // Product-specific result item\n .result-item-product {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex: 1;\n min-width: 0;\n }\n\n .result-item-image,\n .result-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n .result-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n background: $es-slate-100;\n border-radius: $es-radius-sm;\n color: $es-text-muted;\n\n i {\n font-size: 16px;\n }\n }\n\n .result-item-info,\n .result-info {\n flex: 1;\n min-width: 0;\n }\n\n .result-item-name,\n .result-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .result-item-meta,\n .result-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .subtitle-line {\n @include text-truncate;\n }\n\n .subtitle-line-primary {\n color: $es-text-secondary;\n }\n\n .subtitle-line-secondary {\n color: $es-text-muted;\n font-size: 11px;\n }\n\n // Result columns (for product list view)\n .result-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n font-size: $es-font-size-xs;\n }\n\n .result-col-price {\n color: $es-text-secondary;\n }\n\n .result-col-sale {\n color: $es-danger;\n font-weight: $es-font-weight-semibold;\n }\n\n .result-col-stock {\n .col-value {\n &.stock-ok {\n color: $es-success;\n }\n\n &.stock-low {\n color: $es-warning;\n }\n\n &.stock-out {\n color: $es-danger;\n }\n }\n }\n\n .result-col-sales {\n color: $es-text-muted;\n }\n\n .col-value {\n display: block;\n }\n\n // Result checkbox\n .result-item-checkbox,\n .result-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 18px;\n height: 18px;\n border: 2px solid $es-border-dark;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n\n .dropdown-result-item.selected &,\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n\n // No results state\n .no-results {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n font-size: 1.25rem;\n opacity: 0.5;\n }\n }\n\n // Load more controls\n .load-more-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n .load-more-label,\n .load-more-of {\n white-space: nowrap;\n }\n\n .remaining-count {\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n .load-more-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 60px;\n }\n\n .btn-load-more {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xs;\n margin: 0;\n border: none;\n color: $es-primary;\n background: $es-primary-light !important;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n font: inherit;\n\n i {\n font-size: 14px;\n }\n\n &:hover {\n background: rgba($es-primary, 0.2) !important;\n }\n }\n }\n\n // Load more button\n .dropdown-load-more {\n display: flex;\n justify-content: center;\n padding: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n\n .load-more-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n background: $es-primary-light;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n\n &.loading {\n opacity: 0.7;\n cursor: wait;\n }\n }\n }\n\n // Dropdown body\n .dropdown-body {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n // Tree view styles (for categories)\n .tree-container {\n padding: $es-spacing-sm;\n }\n\n .tree-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n .tree-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n padding: 0.375rem $es-spacing-sm;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n\n .tree-checkbox {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n display: block;\n }\n }\n }\n }\n\n .tree-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-text-muted;\n cursor: pointer;\n transition: transform $es-transition-fast;\n\n i {\n font-size: 12px;\n }\n }\n\n .tree-toggle-placeholder {\n width: 16px;\n height: 16px;\n }\n\n .btn-select-children {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n .btn-select-children-placeholder {\n width: 18px;\n height: 18px;\n }\n\n .tree-checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 16px;\n height: 16px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n display: none;\n font-size: 10px;\n color: $es-white;\n }\n }\n\n .tree-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n color: $es-text-muted;\n\n i {\n font-size: 14px;\n }\n }\n\n .tree-info {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n flex: 1;\n min-width: 0;\n }\n\n .tree-name {\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n @include text-truncate;\n }\n\n .tree-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n}\n\n// ============================================================================\n// Standalone dropdown styles (for when dropdown is appended to body)\n// These selectors work because .target-search-dropdown is on the dropdown itself\n// ============================================================================\n\n.target-search-dropdown {\n // Results container - scrollable\n .dropdown-results {\n max-height: 400px;\n overflow-y: auto;\n padding: $es-spacing-sm;\n @include custom-scrollbar;\n }\n\n // Results header (for list view columns)\n .results-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs $es-spacing-md;\n background: $es-slate-100;\n border-bottom: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n\n .header-spacer {\n width: 58px; // checkbox + image width\n flex-shrink: 0;\n }\n\n .header-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n }\n\n .header-col-name {\n flex: 1;\n text-align: left;\n }\n }\n\n // Hide results-header by default, show only for products in list view\n &:not(.view-list) .results-header,\n &.view-tree .results-header {\n display: none;\n }\n\n // Result item for products\n .result-item-product {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n flex: 1;\n min-width: 0;\n }\n\n // Result columns for product data\n .result-col {\n flex-shrink: 0;\n width: 70px;\n text-align: right;\n font-size: $es-font-size-xs;\n }\n\n .result-col-price {\n color: $es-text-secondary;\n }\n\n .result-col-sale {\n color: $es-danger;\n font-weight: $es-font-weight-semibold;\n }\n\n .result-col-stock {\n .col-value {\n &.stock-ok { color: $es-success; }\n &.stock-low { color: $es-warning; }\n &.stock-out { color: $es-danger; }\n }\n }\n\n .result-col-sales {\n color: $es-text-muted;\n }\n\n // Dropdown item styling\n .dropdown-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: 0;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n background: $es-bg-hover;\n }\n\n &.selected {\n background: $es-primary-light;\n }\n }\n\n // Result checkbox styling\n .result-checkbox {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border: 2px solid $es-border-dark;\n border-radius: 3px;\n transition: all $es-transition-fast;\n\n i {\n font-size: 10px;\n color: transparent;\n }\n\n .dropdown-item.selected & {\n background: $es-primary;\n border-color: $es-primary;\n\n i {\n color: $es-white;\n }\n }\n }\n\n // Result image\n .result-image {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n overflow: hidden;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n }\n\n // Result icon (for non-image entities)\n .result-icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background: $es-slate-100;\n border-radius: $es-radius-sm;\n\n i {\n font-size: 16px;\n color: $es-text-muted;\n }\n }\n\n // Result info container\n .result-info {\n flex: 1;\n min-width: 0;\n }\n\n .result-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .result-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n }\n\n .subtitle-line {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .subtitle-line-primary {\n color: $es-text-secondary;\n }\n\n .subtitle-line-secondary {\n color: $es-text-muted;\n font-size: 11px;\n }\n\n // Hide columns in grid/tree views\n &[class*=\"view-cols-\"] .result-col,\n &.view-tree .result-col {\n display: none;\n }\n\n // Entity search box - full width\n .entity-search-box {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n width: 100%;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-white;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n\n .entity-search-icon {\n color: $es-text-muted;\n flex-shrink: 0;\n }\n\n // Override Bootstrap/parent form input styles\n input.entity-search-input,\n input.entity-search-input[type=\"text\"] {\n flex: 1;\n min-width: 0;\n width: auto !important;\n max-width: none !important;\n height: auto;\n padding: 0;\n margin: 0;\n border: none !important;\n outline: none;\n background: transparent !important;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n box-shadow: none !important;\n\n &::placeholder {\n color: $es-text-muted;\n }\n\n &:focus {\n border: none !important;\n box-shadow: none !important;\n outline: none;\n }\n }\n\n .search-loading {\n color: $es-text-muted;\n }\n }\n}\n\n// Body-level dropdown (when appended to body for z-index)\nbody > .target-search-dropdown {\n // Override dropdown-item border when inside body-appended dropdown\n .dropdown-item {\n border: none;\n border-radius: 0;\n\n &:not(:last-child) {\n border-bottom: 1px solid $es-border-color;\n }\n }\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n","/**\n * Chips Component\n * Entity chips, selection pills, tags\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Chips container\n .entity-chips {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm 0;\n min-height: 32px;\n\n &:empty {\n display: none;\n }\n }\n\n // Individual chip\n .entity-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.25rem 0.5rem;\n background: $es-slate-100;\n color: $es-text-secondary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n max-width: 200px;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n // Chip with image\n &.has-image {\n padding-left: 0.25rem;\n }\n }\n\n .chip-image {\n width: 20px;\n height: 20px;\n object-fit: cover;\n border-radius: 50%;\n flex-shrink: 0;\n }\n\n .chip-icon {\n font-size: 12px;\n color: $es-text-muted;\n flex-shrink: 0;\n }\n\n .chip-text,\n .chip-name {\n @include text-truncate;\n }\n\n .chip-remove {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin-left: 0.125rem;\n color: $es-text-muted;\n border-radius: 50%;\n flex-shrink: 0;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Chip variants\n .entity-chip.chip-primary {\n background: $es-primary-light;\n color: $es-primary;\n\n &:hover {\n background: rgba($es-primary, 0.2);\n }\n }\n\n .entity-chip.chip-success {\n background: $es-success-light;\n color: $es-success-dark;\n\n &:hover {\n background: rgba($es-success, 0.2);\n }\n }\n\n .entity-chip.chip-danger {\n background: $es-danger-light;\n color: $es-danger;\n\n &:hover {\n background: rgba($es-danger, 0.2);\n }\n }\n\n .entity-chip.chip-warning {\n background: $es-warning-light;\n color: darken($es-warning, 20%);\n\n &:hover {\n background: rgba($es-warning, 0.3);\n }\n }\n\n // Chip loading state\n .entity-chip.loading,\n .entity-chip-loading {\n opacity: 0.7;\n\n .chip-remove {\n display: none;\n }\n\n .chip-icon i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n // Hidden chip (collapsed view)\n .entity-chip.chip-hidden {\n display: none;\n }\n\n // Chips expanded/collapsed states\n .entity-chips.chips-collapsed,\n .entity-chips.chips-expanded {\n position: relative;\n }\n\n // Show more/less toggle\n .chips-show-more-toggle {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n color: $es-primary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n cursor: pointer;\n transition: color $es-transition-fast;\n\n &:hover {\n color: $es-primary-hover;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n .chips-collapse-toggle,\n .chips-expand-toggle {\n // Specific variants inherit from .chips-show-more-toggle\n }\n\n // More chips indicator\n .chips-more {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem 0.5rem;\n background: $es-slate-200;\n color: $es-text-secondary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n border-radius: $es-radius-full;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-300;\n }\n }\n\n // Add chip button\n .chip-add-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: transparent;\n color: $es-primary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border: 1px dashed $es-primary;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Inline chips (compact mode)\n .entity-chips.inline {\n display: inline-flex;\n padding: 0;\n min-height: auto;\n\n .entity-chip {\n padding: 0.125rem 0.375rem;\n font-size: 11px;\n }\n }\n\n // Selected chips section in include/exclude\n .selected-chips-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n }\n\n .selected-chips-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n }\n\n // Pattern chips (for name/reference patterns)\n .entity-chip.chip-pattern {\n background: #fef3c7;\n color: #92400e;\n font-family: monospace;\n\n &:hover {\n background: #fde68a;\n }\n\n .chip-icon {\n color: #d97706;\n }\n }\n\n // Range chips (price, quantity, etc.)\n .entity-chip.chip-range,\n .range-chip {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.25rem 0.5rem;\n background: $es-cyan-50;\n color: $es-cyan-600;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-cyan-100;\n }\n }\n\n .range-chip-text {\n font-family: monospace;\n }\n\n .btn-remove-range {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n color: $es-cyan-600;\n border-radius: 50%;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Multi-range chips container\n .multi-range-chips {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n margin-bottom: $es-spacing-xs;\n\n &:empty {\n display: none;\n }\n }\n\n // Pattern chips container\n .pattern-chips {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm 0;\n min-height: 32px;\n\n &:empty::before {\n content: attr(data-placeholder);\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-style: italic;\n }\n }\n\n // Pattern tag\n .pattern-tag {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: #fef3c7;\n color: #92400e;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: #fde68a;\n }\n\n &.case-sensitive {\n .case-icon {\n color: $es-success;\n font-weight: $es-font-weight-bold;\n }\n }\n\n &.draft-tag {\n background: $es-white;\n border: 1px solid $es-border-color;\n padding: 0;\n flex: 1;\n min-width: 150px;\n\n &:hover {\n background: $es-white;\n }\n\n .pattern-input {\n flex: 1;\n min-width: 100px;\n padding: 0.375rem;\n border: 0;\n background: transparent;\n font-size: $es-font-size-sm;\n font-family: inherit;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: $es-text-muted;\n font-style: italic;\n }\n }\n }\n }\n\n .pattern-tag-text {\n font-family: monospace;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .btn-toggle-case {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n }\n }\n\n .case-icon {\n font-size: 11px;\n font-weight: $es-font-weight-semibold;\n font-family: monospace;\n }\n\n .btn-remove-pattern {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n color: #d97706;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n .btn-add-pattern {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Pattern match count (in draft tag)\n .pattern-match-count {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0 0.375rem;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n cursor: pointer;\n\n &.count-zero {\n color: $es-warning;\n }\n\n &.count-found {\n color: $es-success;\n }\n\n .count-value {\n font-weight: $es-font-weight-semibold;\n }\n }\n\n // Pattern input row\n .pattern-input-row {\n display: flex;\n align-items: stretch;\n gap: $es-spacing-xs;\n }\n}\n","/**\n * Groups Component\n * Selection groups, include/exclude sections, method selectors\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Group container\n .target-group {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n overflow: hidden;\n }\n\n // Group header\n .target-group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-md;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n }\n\n .target-group-title {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n\n .group-number {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 0.25rem;\n background: $es-primary;\n color: $es-white;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-bold;\n border-radius: $es-radius-full;\n }\n }\n\n .target-group-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .group-action-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n\n &.danger:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n // Group body\n .target-group-body,\n .group-body {\n padding: $es-spacing-md;\n }\n\n // Include section\n .include-section {\n margin-bottom: $es-spacing-md;\n }\n\n .section-label {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n margin-bottom: $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n\n &.label-include {\n color: $es-success-dark;\n\n i {\n color: $es-success;\n }\n }\n\n &.label-exclude {\n color: $es-danger;\n\n i {\n color: $es-danger;\n }\n }\n }\n\n // Method selector\n .method-selector {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n }\n\n .method-selector-wrapper {\n flex: 1;\n position: relative;\n }\n\n .method-select {\n @include input-base;\n padding-right: 2rem;\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n }\n\n .method-help-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n color: $es-primary;\n }\n }\n\n // Value picker (search trigger)\n .value-picker {\n position: relative;\n }\n\n .value-picker-trigger {\n @include button-reset;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n width: 100%;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n text-align: left;\n transition: all $es-transition-fast;\n\n &:hover {\n border-color: $es-slate-300;\n }\n\n &:focus {\n border-color: $es-primary;\n @include focus-ring($es-primary);\n }\n\n i {\n color: $es-text-light;\n }\n }\n\n // Pattern input (text input for patterns)\n .pattern-input-wrapper {\n position: relative;\n }\n\n .pattern-input {\n @include input-base;\n font-family: monospace;\n }\n\n .pattern-add-btn {\n @include button-reset;\n position: absolute;\n right: 0.25rem;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n }\n\n // Multi-range input (price ranges)\n .multi-range-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .range-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .range-input {\n @include input-base;\n width: 100px;\n text-align: center;\n }\n\n .range-separator {\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n }\n\n .range-remove-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n .range-add-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n color: $es-primary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n }\n\n // Multi-select tiles (stock status, etc.)\n .multi-select-tiles {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n }\n\n .multi-select-tile {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n background: $es-slate-100;\n color: $es-text-secondary;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border: 1px solid transparent;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.selected {\n background: $es-primary-light;\n color: $es-primary;\n border-color: $es-primary;\n }\n }\n\n // Exclude section\n .exclude-section {\n margin-top: $es-spacing-md;\n padding-top: $es-spacing-md;\n border-top: 1px dashed $es-border-color;\n }\n\n .exclude-rows {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .exclude-row {\n display: flex;\n align-items: flex-start;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: rgba($es-danger, 0.05);\n border: 1px solid rgba($es-danger, 0.2);\n border-radius: $es-radius-md;\n }\n\n .exclude-row-content {\n flex: 1;\n }\n\n .exclude-remove-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n flex-shrink: 0;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n .add-exclude-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-top: $es-spacing-sm;\n padding: 0.25rem 0.5rem;\n color: $es-danger;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border: 1px dashed $es-danger;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n }\n }\n\n // Add group button (used in block-footer)\n .btn-add-group {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.5rem 0.875rem;\n color: $es-primary;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n background: rgba($es-primary, 0.05);\n border: 1px dashed $es-primary;\n border-radius: 0.375rem;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-primary, 0.1);\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Block footer\n .block-footer {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n }\n\n // Block body\n .block-body {\n padding: 0;\n }\n\n // Groups container\n .groups-container {\n padding: $es-spacing-md;\n }\n\n // Groups empty state\n .groups-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n }\n\n // Selection group\n .selection-group {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n margin-bottom: $es-spacing-md;\n\n &:last-child {\n margin-bottom: 0;\n }\n\n &.collapsed {\n .group-body {\n display: none;\n }\n\n .group-collapse-toggle i {\n transform: rotate(-90deg);\n }\n }\n }\n\n // Group header\n .group-header {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n\n &.group-header-single {\n padding: $es-spacing-xs $es-spacing-md;\n background: transparent;\n border-bottom: none;\n }\n }\n\n .group-collapse-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n color: $es-text-muted;\n\n i {\n transition: transform $es-transition-fast;\n }\n }\n\n .group-name-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .group-name-input {\n flex: 1;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n background: transparent;\n border: 1px solid transparent;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover,\n &:focus {\n background: $es-white;\n border-color: $es-border-color;\n outline: none;\n }\n\n &::placeholder {\n color: $es-text-muted;\n font-weight: $es-font-weight-medium;\n }\n }\n\n .group-count-badge {\n @include count-badge($es-primary);\n }\n\n .btn-remove-group {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n // Group include section\n .group-include {\n margin-bottom: $es-spacing-md;\n }\n\n .section-row {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n // Method selector wrapper (from PHP)\n .method-selector-wrapper {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .method-info-placeholder {\n display: flex;\n align-items: center;\n min-width: 20px;\n }\n\n .include-method-select,\n .exclude-method-select {\n flex: 1;\n @include input-base;\n cursor: pointer;\n }\n\n // Group excludes section\n .group-excludes {\n margin-top: $es-spacing-md;\n\n &.has-excludes {\n padding-top: $es-spacing-md;\n border-top: 1px dashed $es-border-color;\n }\n }\n\n .except-separator {\n display: flex;\n align-items: center;\n margin-bottom: $es-spacing-sm;\n }\n\n .except-label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: $es-danger-light;\n color: $es-danger;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n border-radius: $es-radius-sm;\n\n i {\n font-size: 10px;\n }\n }\n\n .exclude-rows-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .exclude-row {\n padding: $es-spacing-sm;\n background: rgba($es-danger, 0.03);\n border: 1px solid rgba($es-danger, 0.15);\n border-radius: $es-radius-md;\n }\n\n .exclude-header-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n }\n\n .btn-remove-exclude-row {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n color: $es-danger;\n }\n }\n\n .btn-add-exclude,\n .btn-add-another-exclude {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin-top: $es-spacing-sm;\n padding: 0.375rem 0.625rem;\n color: $es-danger;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n background: transparent;\n border: 1px dashed rgba($es-danger, 0.5);\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-danger-light;\n border-color: $es-danger;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n // Group modifiers (inline version from PHP)\n // Uses negative margins to break out of .group-body padding\n .group-modifiers {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: $es-spacing-md;\n padding: $es-spacing-sm $es-spacing-md;\n margin: $es-spacing-md (-$es-spacing-md) (-$es-spacing-md);\n background: $es-slate-50;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n }\n\n .modifier-inline {\n display: flex;\n align-items: center;\n gap: 0.375rem;\n }\n\n .group-modifier-limit {\n width: 60px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n text-align: center;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n\n &:focus {\n border-color: $es-primary;\n outline: none;\n }\n }\n\n .group-modifier-sort {\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n cursor: pointer;\n\n &:focus {\n border-color: $es-primary;\n outline: none;\n }\n }\n\n .btn-sort-dir {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n color: $es-text-secondary;\n }\n }\n\n .group-preview-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n background: $es-slate-100;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n\n &.clickable {\n cursor: pointer;\n\n &:hover {\n background: $es-primary-light;\n color: $es-primary;\n }\n }\n }\n\n // OR separator between groups\n .group-separator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-sm 0;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n text-transform: uppercase;\n letter-spacing: 0.1em;\n\n &::before,\n &::after {\n content: '';\n flex: 1;\n height: 1px;\n background: $es-border-color;\n margin: 0 $es-spacing-md;\n }\n }\n\n // Group modifiers (limit, sort)\n .group-modifiers {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n padding-top: $es-spacing-md;\n margin-top: $es-spacing-md;\n border-top: 1px solid $es-border-color;\n }\n\n .modifier-group {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n }\n\n .modifier-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n white-space: nowrap;\n }\n\n .modifier-input {\n @include input-base;\n width: 80px;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n }\n\n .modifier-select {\n @include input-base;\n width: auto;\n padding: 0.25rem 1.5rem 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.25rem center;\n background-repeat: no-repeat;\n background-size: 1.25em 1.25em;\n }\n\n // Condition match count badge\n .condition-match-count {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.125rem 0.375rem;\n background: $es-slate-100;\n color: $es-text-muted;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-full;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.has-results {\n background: $es-primary-light;\n color: $es-primary;\n }\n\n i {\n font-size: 10px;\n }\n }\n}\n","/**\n * Value Picker Component\n * Search boxes, input types, range inputs\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Value picker container\n .value-picker {\n padding: $es-spacing-sm 0;\n\n &[style*=\"display: none\"],\n &[style*=\"display:none\"] {\n padding: 0;\n }\n }\n\n .include-picker,\n .exclude-picker {\n // Section-specific picker styles\n }\n\n // Entity search box\n .entity-search-box {\n position: relative;\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xs;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:focus-within {\n border-color: $es-primary;\n box-shadow: 0 0 0 2px rgba($es-primary, 0.1);\n }\n }\n\n .entity-search-icon {\n color: $es-text-muted;\n font-size: 14px;\n flex-shrink: 0;\n }\n\n // Override parent form's max-width on search input\n input.entity-search-input,\n input.entity-search-input[type=\"text\"] {\n @include input-reset;\n flex: 1;\n min-width: 0;\n width: auto !important;\n max-width: none !important;\n padding: 0.375rem;\n font-size: $es-font-size-sm;\n color: $es-text-primary;\n border: none !important;\n background: transparent !important;\n box-shadow: none !important;\n\n &::placeholder {\n color: $es-text-muted;\n }\n\n &:focus {\n border: none !important;\n box-shadow: none !important;\n outline: none;\n }\n }\n\n .search-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n color: $es-primary;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n\n // Numeric range box\n .numeric-range-box,\n .multi-range-input-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .range-min-input,\n .range-max-input {\n @include input-base;\n width: 100px;\n padding: $es-spacing-sm;\n text-align: center;\n font-size: $es-font-size-sm;\n\n &::-webkit-inner-spin-button,\n &::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n -moz-appearance: textfield;\n }\n\n .range-separator {\n color: $es-text-muted;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n }\n\n .btn-add-range {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n color: $es-white;\n background: $es-primary;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-hover;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n // Multi-range container\n .multi-range-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n // Date range box\n .date-range-box {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n }\n\n .date-from-input,\n .date-to-input {\n @include input-base;\n width: 140px;\n padding: $es-spacing-sm;\n font-size: $es-font-size-sm;\n }\n\n // Multi-select tiles\n .multi-select-tiles {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n }\n\n .tile-option {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.625rem;\n color: $es-text-secondary;\n background: $es-slate-100;\n border: 1px solid transparent;\n border-radius: $es-radius-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n cursor: pointer;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n }\n\n &.selected {\n color: $es-primary;\n background: $es-primary-light;\n border-color: $es-primary;\n }\n\n i {\n font-size: 12px;\n }\n }\n\n .tile-label {\n white-space: nowrap;\n }\n\n // Select input box\n .select-input-box {\n display: inline-block;\n }\n\n .select-value-input {\n @include input-base;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n min-width: 150px;\n }\n\n // Boolean input box\n .boolean-input-box {\n display: inline-flex;\n align-items: center;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-success-light;\n color: $es-success-dark;\n border-radius: $es-radius-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n }\n\n .boolean-label {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n\n &::before {\n content: '\\2713';\n font-weight: bold;\n }\n }\n\n // Condition match count badge\n .condition-match-count {\n @include count-badge($es-primary);\n margin-left: $es-spacing-sm;\n }\n}\n","/**\n * Modal Component\n * Preview modals, confirmation dialogs\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Modal backdrop\n.mpr-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: $es-z-modal;\n opacity: 0;\n transition: opacity $es-transition-normal;\n\n &.show {\n opacity: 1;\n }\n}\n\n// Modal container\n.mpr-modal {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(0.95);\n z-index: $es-z-modal + 1;\n width: 90%;\n max-width: 600px;\n max-height: 90vh;\n background: $es-white;\n border-radius: $es-radius-xl;\n box-shadow: $es-shadow-xl;\n opacity: 0;\n transition: all $es-transition-normal;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n\n &.show {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n\n &.modal-sm {\n max-width: 400px;\n }\n\n &.modal-lg {\n max-width: 800px;\n }\n\n &.modal-xl {\n max-width: 1000px;\n }\n\n &.modal-fullscreen {\n width: 95%;\n max-width: none;\n height: 90vh;\n max-height: none;\n }\n}\n\n// Modal header\n.mpr-modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-md;\n padding: $es-spacing-md $es-spacing-lg;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n flex-shrink: 0;\n}\n\n.mpr-modal-title {\n font-size: $es-font-size-base;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n margin: 0;\n}\n\n.mpr-modal-close {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n color: $es-text-muted;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n\n i {\n font-size: $es-font-size-lg;\n }\n}\n\n// Modal body\n.mpr-modal-body {\n flex: 1;\n overflow-y: auto;\n padding: $es-spacing-lg;\n @include custom-scrollbar;\n}\n\n// Modal footer\n.mpr-modal-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: $es-spacing-sm;\n padding: $es-spacing-md $es-spacing-lg;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n flex-shrink: 0;\n}\n\n.mpr-modal-btn {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-sm $es-spacing-md;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &.btn-secondary {\n color: $es-text-secondary;\n background: $es-slate-100;\n\n &:hover {\n background: $es-slate-200;\n }\n }\n\n &.btn-primary {\n color: $es-white;\n background: $es-primary;\n\n &:hover {\n background: $es-primary-hover;\n }\n }\n\n &.btn-danger {\n color: $es-white;\n background: $es-danger;\n\n &:hover {\n background: darken($es-danger, 10%);\n }\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n// Preview popover styles moved to _list-preview.scss\n\n.popover-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n}\n\n.popover-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n}\n\n.popover-close {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-secondary;\n }\n}\n\n.popover-body {\n max-height: 300px;\n overflow-y: auto;\n padding: $es-spacing-sm;\n @include custom-scrollbar;\n}\n\n.popover-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n}\n\n.popover-info {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n}\n\n.popover-load-more {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n}\n\n// Popover arrow\n.popover-arrow {\n position: absolute;\n width: 12px;\n height: 12px;\n background: $es-white;\n border: 1px solid $es-border-color;\n transform: rotate(45deg);\n\n &.arrow-top {\n top: -7px;\n left: 50%;\n margin-left: -6px;\n border-right: none;\n border-bottom: none;\n }\n\n &.arrow-bottom {\n bottom: -7px;\n left: 50%;\n margin-left: -6px;\n border-left: none;\n border-top: none;\n }\n}\n","/**\n * List Preview Component\n * Entity list display in modals and popovers\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// =============================================================================\n// Preview Popover (floating popover attached to badges)\n// =============================================================================\n\n.target-preview-popover {\n position: absolute;\n z-index: 10000;\n min-width: 280px;\n max-width: 400px;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n box-shadow: $es-shadow-lg;\n overflow: hidden;\n\n // Arrow pointing to badge\n &::before {\n content: '';\n position: absolute;\n top: -8px;\n left: 50%;\n transform: translateX(-50%);\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-bottom: 8px solid $es-border-color;\n }\n\n &::after {\n content: '';\n position: absolute;\n top: -6px;\n left: 50%;\n transform: translateX(-50%);\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid $es-white;\n }\n\n .preview-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n\n .preview-count {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n }\n\n .preview-close {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-200;\n color: $es-text-primary;\n }\n }\n }\n\n .preview-list {\n max-height: 300px;\n overflow-y: auto;\n @include custom-scrollbar;\n padding: $es-spacing-sm;\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n }\n\n // Filter input section\n .preview-filter {\n padding: $es-spacing-sm $es-spacing-md;\n border-bottom: 1px solid $es-border-color;\n\n .preview-filter-input {\n @include input-base;\n width: 100%;\n padding: $es-spacing-sm;\n font-size: $es-font-size-sm;\n box-sizing: border-box;\n\n &::placeholder {\n color: $es-text-muted;\n }\n }\n }\n\n .preview-footer {\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-slate-50;\n border-top: 1px solid $es-border-color;\n\n .preview-more-info {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n font-weight: $es-font-weight-medium;\n text-align: center;\n }\n }\n\n // Load more controls (select dropdown style)\n .load-more-controls {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n\n .load-more-label {\n white-space: nowrap;\n }\n\n .load-more-select {\n @include input-base;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n min-width: 70px;\n }\n\n .load-more-of {\n white-space: nowrap;\n }\n\n .remaining-count {\n font-weight: $es-font-weight-semibold;\n color: $es-text-secondary;\n }\n\n .btn-load-more {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xs;\n margin: 0;\n border: none;\n color: $es-primary;\n background: $es-primary-light !important;\n border-radius: $es-radius-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n font: inherit;\n\n i {\n font-size: 14px;\n }\n\n &:hover {\n background: rgba($es-primary, 0.2) !important;\n }\n\n &.loading {\n cursor: wait;\n\n i {\n animation: spin 0.6s linear infinite;\n }\n }\n }\n }\n}\n\n// =============================================================================\n// Preview List Container\n// =============================================================================\n\n// Preview list container\n.entity-list-preview {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n}\n\n// Preview item (list-style with bottom border divider)\n.preview-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm 0;\n background: $es-white;\n border: none;\n border-bottom: 1px solid $es-border-color;\n border-radius: 0;\n transition: background $es-transition-fast;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n background: $es-bg-hover;\n }\n}\n\n.preview-item-image {\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n object-fit: cover;\n border-radius: $es-radius-sm;\n background: $es-slate-100;\n}\n\n.preview-item-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: 36px;\n height: 36px;\n background: $es-slate-100;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n font-size: $es-font-size-base;\n}\n\n.preview-item-info {\n flex: 1;\n min-width: 0;\n}\n\n.preview-item-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n @include text-truncate;\n}\n\n.preview-item-meta {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n @include text-truncate;\n}\n\n.preview-item-badge {\n @include badge($es-slate-100, $es-text-muted);\n flex-shrink: 0;\n}\n\n.preview-item-price {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-primary;\n flex-shrink: 0;\n}\n\n// Preview grid layout\n.entity-list-preview.grid-layout {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n gap: $es-spacing-sm;\n\n .preview-item {\n flex-direction: column;\n text-align: center;\n padding: $es-spacing-md;\n }\n\n .preview-item-image {\n width: 60px;\n height: 60px;\n }\n\n .preview-item-info {\n width: 100%;\n }\n}\n\n// Compact list layout\n.entity-list-preview.compact {\n gap: 0;\n\n .preview-item {\n border-radius: 0;\n border-bottom: none;\n\n &:first-child {\n border-radius: $es-radius-md $es-radius-md 0 0;\n }\n\n &:last-child {\n border-radius: 0 0 $es-radius-md $es-radius-md;\n border-bottom: 1px solid $es-border-color;\n }\n }\n}\n\n// Preview empty state\n.preview-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-xl;\n text-align: center;\n color: $es-text-muted;\n\n i {\n font-size: 2rem;\n opacity: 0.5;\n }\n\n p {\n margin: 0;\n font-size: $es-font-size-sm;\n }\n}\n\n// Preview loading state\n.preview-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: $es-spacing-xl;\n color: $es-text-muted;\n\n .spinner {\n width: 24px;\n height: 24px;\n border: 3px solid $es-slate-200;\n border-top-color: $es-primary;\n border-radius: 50%;\n animation: spin 0.8s linear infinite;\n }\n}\n\n// Preview pagination\n.preview-pagination {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: $es-spacing-xs;\n padding: $es-spacing-md 0;\n}\n\n.preview-page-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 28px;\n height: 28px;\n padding: 0 $es-spacing-sm;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover:not(:disabled) {\n background: $es-bg-hover;\n border-color: $es-slate-300;\n }\n\n &.active {\n background: $es-primary;\n border-color: $es-primary;\n color: $es-white;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n// Preview summary\n.preview-summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-bg-header;\n border-top: 1px solid $es-border-color;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n}\n\n.preview-count {\n font-weight: $es-font-weight-medium;\n\n strong {\n color: $es-text-primary;\n }\n}\n\n// Preview filters in modal\n.preview-filters {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n}\n\n.preview-filter-chip {\n @include chip;\n}\n\n.preview-search {\n @include input-base;\n flex: 1;\n min-width: 150px;\n padding: 0.375rem $es-spacing-sm;\n font-size: $es-font-size-xs;\n}\n\n// Scrollable preview list\n.preview-list-scrollable {\n max-height: 400px;\n overflow-y: auto;\n @include custom-scrollbar;\n}\n\n// Mini preview (inline)\n.entity-mini-preview {\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n padding: 0.25rem 0.5rem;\n background: $es-slate-50;\n border-radius: $es-radius-sm;\n font-size: $es-font-size-xs;\n\n img {\n width: 16px;\n height: 16px;\n object-fit: cover;\n border-radius: 2px;\n }\n\n .mini-preview-name {\n color: $es-text-primary;\n font-weight: $es-font-weight-medium;\n @include text-truncate;\n max-width: 100px;\n }\n}\n","/**\n * Schedule Conditions Component\n * DateTime picker, weekly timeline, holidays\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Schedule conditions wrapper\n.schedule-conditions-trait {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n}\n\n// Schedule header\n.schedule-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-md;\n padding: 0.875rem $es-spacing-md;\n background: $es-bg-header;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-bg-hover;\n }\n}\n\n.schedule-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n\n i {\n color: $es-text-muted;\n }\n}\n\n// Schedule body\n.schedule-body {\n padding: $es-spacing-md;\n}\n\n// Schedule section\n.schedule-section {\n margin-bottom: $es-spacing-lg;\n\n &:last-child {\n margin-bottom: 0;\n }\n}\n\n.schedule-section-title {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-sm;\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-text-primary;\n\n i {\n color: $es-text-muted;\n }\n}\n\n.schedule-section-description {\n margin-bottom: $es-spacing-md;\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n}\n\n// DateTime range picker\n.datetime-range {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n}\n\n.datetime-field {\n flex: 1;\n min-width: 200px;\n}\n\n.datetime-label {\n display: block;\n margin-bottom: 0.25rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n}\n\n.datetime-input {\n @include input-base;\n}\n\n// Weekly schedule\n.weekly-schedule {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n}\n\n.day-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-md;\n padding: $es-spacing-sm;\n background: $es-slate-50;\n border-radius: $es-radius-md;\n\n &.disabled {\n opacity: 0.5;\n }\n}\n\n.day-toggle {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n min-width: 100px;\n}\n\n.day-checkbox {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.day-name {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n}\n\n// Timeline slider\n.timeline-slider {\n flex: 1;\n position: relative;\n height: 24px;\n background: $es-slate-200;\n border-radius: $es-radius-full;\n cursor: pointer;\n}\n\n.timeline-fill {\n position: absolute;\n top: 0;\n height: 100%;\n background: $es-primary;\n border-radius: $es-radius-full;\n transition: all $es-transition-fast;\n}\n\n.timeline-handle {\n position: absolute;\n top: 50%;\n width: 16px;\n height: 16px;\n background: $es-white;\n border: 2px solid $es-primary;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n cursor: grab;\n box-shadow: $es-shadow-sm;\n transition: box-shadow $es-transition-fast;\n\n &:hover {\n box-shadow: $es-shadow-md;\n }\n\n &:active {\n cursor: grabbing;\n }\n\n &.handle-start {\n z-index: 2;\n }\n\n &.handle-end {\n z-index: 1;\n }\n}\n\n// Time display\n.day-times {\n display: flex;\n align-items: center;\n gap: $es-spacing-xs;\n min-width: 120px;\n font-size: $es-font-size-xs;\n font-family: monospace;\n color: $es-text-secondary;\n}\n\n.time-separator {\n color: $es-text-muted;\n}\n\n// Holiday exclusions\n.holiday-section {\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-radius: $es-radius-md;\n}\n\n.holiday-toggle {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n margin-bottom: $es-spacing-md;\n}\n\n.holiday-checkbox {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.holiday-label {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-medium;\n color: $es-text-primary;\n}\n\n.holiday-countries {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-xs;\n}\n\n.holiday-country-chip {\n @include chip;\n cursor: pointer;\n\n &.selected {\n background: $es-primary-light;\n color: $es-primary;\n }\n}\n\n// Server time display\n.server-time {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm $es-spacing-md;\n background: $es-info-light;\n border-radius: $es-radius-md;\n font-size: $es-font-size-xs;\n color: $es-info;\n\n i {\n font-size: $es-font-size-sm;\n }\n\n .time-value {\n font-family: monospace;\n font-weight: $es-font-weight-semibold;\n }\n}\n\n// Schedule summary\n.schedule-summary {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-xs;\n padding: $es-spacing-md;\n background: $es-slate-50;\n border-radius: $es-radius-md;\n font-size: $es-font-size-sm;\n color: $es-text-secondary;\n\n .summary-item {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n\n i {\n color: $es-success;\n font-size: $es-font-size-sm;\n }\n\n &.inactive i {\n color: $es-text-muted;\n }\n }\n}\n\n// Collapsed state\n.schedule-conditions-trait.collapsed {\n .schedule-body {\n display: none;\n }\n\n .schedule-header {\n border-radius: $es-radius-lg;\n }\n}\n","/**\n * Tips Box Component\n * Pro tips and help information display\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Tips box container\n .target-tips-box {\n margin: $es-spacing-lg $es-spacing-md $es-spacing-md;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n overflow: hidden;\n background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);\n }\n\n // Tips header (clickable to expand/collapse)\n .tips-header {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n padding: $es-spacing-md $es-spacing-lg;\n cursor: pointer;\n user-select: none;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: rgba(0, 0, 0, 0.02);\n }\n\n // Lightbulb icon\n > i:first-child {\n font-size: 1rem;\n color: $es-warning;\n }\n\n // Title text\n > span {\n flex: 1;\n font-size: 13px;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-600;\n }\n }\n\n // Toggle chevron icon\n .tips-toggle {\n font-size: $es-font-size-xs;\n color: $es-slate-400;\n transition: transform 0.2s;\n }\n\n // Expanded state\n .target-tips-box.expanded {\n .tips-toggle {\n transform: rotate(180deg);\n }\n\n .tips-content {\n display: block;\n }\n }\n\n // Tips content (hidden by default)\n .tips-content {\n display: none;\n padding: 0 $es-spacing-lg $es-spacing-lg;\n }\n\n // Tips grid layout\n .tips-grid {\n display: grid;\n gap: $es-spacing-md;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n }\n\n // Individual tip item\n .tip-item {\n display: flex;\n gap: $es-spacing-md;\n padding: $es-spacing-md;\n background: $es-white;\n border-radius: $es-radius-md;\n border: 1px solid $es-border-color;\n }\n\n // Tip icon\n .tip-icon {\n flex-shrink: 0;\n width: 2rem;\n height: 2rem;\n display: flex;\n align-items: center;\n justify-content: center;\n background: $es-primary-light;\n border-radius: $es-radius-md;\n color: $es-primary;\n font-size: $es-font-size-sm;\n }\n\n // Tip text content\n .tip-text {\n flex: 1;\n min-width: 0;\n\n strong {\n display: block;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-700;\n margin-bottom: 0.25rem;\n }\n\n p {\n font-size: 11px;\n color: $es-text-muted;\n line-height: 1.625;\n margin: 0;\n }\n }\n\n // Tips footer\n .tips-footer {\n margin-top: $es-spacing-md;\n padding: 0.625rem $es-spacing-md;\n background: $es-white;\n border-radius: $es-radius-md;\n border: 1px dashed $es-gray-300;\n font-size: 11px;\n color: $es-text-muted;\n line-height: 1.625;\n\n i {\n color: $es-primary;\n margin-right: 0.25rem;\n }\n }\n}\n","/**\n * Condition Trait Base Styles\n * Shared styling for all condition trait components\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// Base condition trait container\n.condition-trait {\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-lg;\n margin-bottom: $es-spacing-lg;\n\n &:last-child {\n margin-bottom: 0;\n }\n}\n\n// Collapsed state\n.condition-trait.collapsed {\n .condition-trait-header {\n border-bottom-color: transparent;\n border-radius: $es-radius-lg;\n }\n\n .collapse-icon {\n transform: rotate(180deg);\n }\n}\n\n// =============================================================================\n// Trait Header\n// =============================================================================\n\n.condition-trait-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: $es-spacing-lg;\n flex-wrap: wrap;\n padding: 0.875rem $es-spacing-lg;\n background: $es-slate-50;\n border-bottom: 1px solid $es-border-color;\n border-radius: $es-radius-lg $es-radius-lg 0 0;\n cursor: pointer;\n transition: background-color $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n }\n}\n\n.trait-header-left {\n display: flex;\n align-items: center;\n gap: $es-spacing-md;\n min-width: 0;\n flex: 1;\n}\n\n.trait-icon {\n font-size: 1.125rem;\n color: $es-text-muted;\n flex-shrink: 0;\n}\n\n.trait-title-group {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n}\n\n.trait-title {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-800;\n white-space: nowrap;\n}\n\n.trait-subtitle {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.trait-header-right {\n display: flex;\n align-items: center;\n gap: $es-spacing-md;\n flex-shrink: 0;\n margin-left: auto;\n}\n\n.trait-header-actions {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n}\n\n// Collapse icon\n.collapse-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n font-size: $es-font-size-sm;\n color: $es-text-muted;\n cursor: pointer;\n transition: all 0.2s;\n border-radius: $es-radius-sm;\n background: transparent;\n\n &:hover {\n color: $es-primary;\n background: rgba($es-primary, 0.08);\n }\n}\n\n// Show all toggle\n.trait-show-all-toggle {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n font-size: $es-font-size-xs;\n color: $es-primary;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n}\n\n// Trait total count badge (global fallback)\n.trait-total-count {\n @include count-badge($es-primary);\n}\n\n// Required indicator\n.trait-required {\n color: $es-danger;\n font-size: $es-font-size-xs;\n}\n\n// Validation error\n.trait-validation-error {\n color: $es-danger;\n font-size: $es-font-size-xs;\n margin-top: 0.25rem;\n}\n\n// Trait toggle button\n.trait-toggle {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-secondary;\n background: $es-white;\n border: 1px solid $es-border-color;\n border-radius: $es-radius-md;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-50;\n border-color: $es-gray-300;\n }\n\n &.active {\n color: $es-primary;\n border-color: $es-primary;\n background: $es-primary-light;\n }\n}\n\n// =============================================================================\n// Trait Body\n// =============================================================================\n\n.condition-trait-body {\n padding: $es-spacing-lg;\n border-radius: 0 0 $es-radius-lg $es-radius-lg;\n background: $es-white;\n animation: slideDown 0.2s ease-out;\n}\n\n// Condition trait collapsed - hide body\n.condition-trait.collapsed .condition-trait-body {\n display: none;\n}\n\n// =============================================================================\n// Section Styles\n// =============================================================================\n\n.schedule-section,\n.context-section {\n margin-bottom: 1.25rem;\n padding-bottom: 1.25rem;\n border-bottom: 1px solid $es-slate-100;\n\n &:last-child {\n margin-bottom: 0;\n padding-bottom: 0;\n border-bottom: 0;\n }\n}\n\n.section-label {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-size: 13px;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-600;\n margin-bottom: $es-spacing-md;\n\n i {\n font-size: $es-font-size-sm;\n color: $es-slate-400;\n margin-right: 0.25rem;\n }\n}\n\n.section-content {\n // Container for section content\n}\n\n.section-hint {\n margin-top: 0.5rem;\n font-size: 11px;\n color: $es-slate-400;\n}\n\n// =============================================================================\n// Full-width Form Group Override\n// =============================================================================\n\n.form-group.condition-trait-fullwidth {\n display: block !important;\n\n > .control-label {\n display: none !important;\n }\n\n > .col-lg-8,\n > .col-lg-8.col-lg-offset-3 {\n width: 100% !important;\n max-width: 100% !important;\n flex: 0 0 100% !important;\n padding-left: $es-spacing-lg !important;\n padding-right: $es-spacing-lg !important;\n margin: 0 !important;\n margin-left: 0 !important;\n }\n}\n\n// Condition traits group label\n.condition-traits-group-label {\n font-size: $es-font-size-sm;\n font-weight: $es-font-weight-semibold;\n color: $es-slate-700;\n margin-bottom: $es-spacing-md;\n}\n\n.condition-traits-wrapper {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-md;\n}\n\n// =============================================================================\n// Animations\n// =============================================================================\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n","/**\n * Combination Attributes Picker Component\n * Product attribute combination selection styles\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Main container\n .combination-attributes-picker {\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n }\n\n // Mode toggle (Any/All)\n .combination-mode-toggle {\n display: inline-flex;\n gap: 0.25rem;\n padding: 0.125rem;\n background: $es-slate-100;\n border-radius: $es-radius-md;\n margin-bottom: 0.5rem;\n }\n\n .combination-mode-option {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n cursor: pointer;\n font-size: 11px;\n color: $es-text-muted;\n padding: 0.25rem 0.625rem;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n input[type=\"radio\"] {\n display: none;\n }\n\n .mode-label {\n user-select: none;\n }\n\n &:hover {\n color: $es-primary;\n background: rgba($es-primary, 0.1);\n }\n\n &:has(input[type=\"radio\"]:checked) {\n background: $es-primary;\n color: $es-white;\n font-weight: $es-font-weight-medium;\n }\n }\n\n // Groups container\n .combination-groups-container {\n display: flex;\n flex-wrap: wrap;\n gap: $es-spacing-md;\n }\n\n // Loading/Empty/Error states\n .combination-loading,\n .combination-empty,\n .combination-error {\n color: $es-text-muted;\n font-style: italic;\n padding: 0.5rem;\n }\n\n .combination-error {\n color: $es-danger;\n }\n\n // Section header\n .combinations-section {\n margin-bottom: $es-spacing-md;\n }\n\n .combinations-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: $es-spacing-sm;\n }\n\n .combinations-label {\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-text-muted;\n }\n\n .combinations-help {\n font-size: 11px;\n color: $es-slate-400;\n }\n\n // Toggle combinations button\n .btn-toggle-combinations {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-primary;\n background: transparent;\n border: 1px solid $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n }\n\n .btn-remove-combinations {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n font-size: $es-font-size-xs;\n color: $es-danger;\n background: transparent;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n // =============================================================================\n // Attribute Group\n // =============================================================================\n\n .comb-attr-group {\n flex: none;\n min-width: 120px;\n max-width: 200px;\n background: $es-white;\n border: 1px solid $es-gray-300;\n border-radius: $es-radius-sm;\n overflow: hidden;\n\n &.has-selections {\n border-color: $es-primary;\n }\n }\n\n .comb-attr-group-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.375rem 0.625rem;\n background: $es-slate-100;\n border-bottom: 1px solid $es-gray-300;\n font-weight: $es-font-weight-semibold;\n font-size: $es-font-size-xs;\n color: $es-slate-800;\n\n .comb-attr-group.has-selections & {\n background: $es-cyan-50;\n border-bottom-color: $es-cyan-200;\n }\n }\n\n .comb-attr-group-name {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .comb-attr-group-count {\n flex-shrink: 0;\n min-width: 18px;\n height: 18px;\n padding: 0 0.25rem;\n background: $es-gray-300;\n border-radius: $es-radius-full;\n font-size: 11px;\n font-weight: $es-font-weight-semibold;\n line-height: 18px;\n text-align: center;\n color: $es-text-muted;\n\n .comb-attr-group.has-selections & {\n background: $es-primary;\n color: $es-white;\n }\n }\n\n // Toolbar\n .comb-attr-toolbar {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.375rem;\n background: $es-slate-50;\n border-bottom: 1px solid $es-slate-100;\n }\n\n .comb-toolbar-btn {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 22px;\n height: 22px;\n padding: 0;\n background: $es-white;\n border: 1px solid $es-gray-300;\n border-radius: $es-radius-sm;\n color: $es-text-muted;\n cursor: pointer;\n font-size: $es-font-size-xs;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-slate-100;\n border-color: $es-slate-400;\n color: $es-slate-800;\n }\n }\n\n .comb-attr-search {\n flex: 1;\n min-width: 60px;\n padding: 0.125rem 0.375rem;\n border: 1px solid $es-gray-300;\n border-radius: $es-radius-sm;\n font-size: 11px;\n outline: none;\n\n &:focus {\n border-color: $es-primary;\n }\n\n &::placeholder {\n color: $es-slate-400;\n }\n }\n\n // Values container\n .comb-attr-values {\n display: flex;\n flex-wrap: wrap;\n gap: 0.25rem;\n padding: 0.375rem;\n max-height: 150px;\n overflow-y: auto;\n @include custom-scrollbar;\n }\n\n .comb-attr-loading,\n .comb-attr-empty,\n .comb-attr-error {\n width: 100%;\n text-align: center;\n color: $es-slate-400;\n font-size: 11px;\n padding: 0.25rem;\n }\n\n .comb-attr-error {\n color: $es-danger;\n }\n\n // Individual value\n .comb-attr-value {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.125rem 0.5rem;\n background: $es-white;\n border: 1px solid $es-slate-400;\n border-radius: 0.75rem;\n font-size: 11px;\n color: $es-slate-600;\n cursor: pointer;\n transition: all $es-transition-fast;\n white-space: nowrap;\n\n &:hover {\n background: $es-slate-100;\n border-color: $es-text-muted;\n }\n\n &.selected {\n background: $es-primary;\n border-color: $es-primary-hover;\n color: $es-white;\n\n &:hover {\n background: $es-primary-hover;\n border-color: darken($es-primary-hover, 5%);\n }\n }\n }\n\n .comb-attr-value-count {\n font-size: 9px;\n color: $es-slate-400;\n background: $es-slate-100;\n padding: 1px 0.25rem;\n border-radius: 0.5rem;\n min-width: 14px;\n text-align: center;\n\n .comb-attr-value.selected & {\n color: $es-white;\n background: rgba(255, 255, 255, 0.3);\n }\n }\n\n // =============================================================================\n // Combination Conditions (Row-based)\n // =============================================================================\n\n .combination-conditions-container {\n display: flex;\n flex-direction: column;\n gap: $es-spacing-sm;\n }\n\n .combination-condition-row {\n display: flex;\n align-items: center;\n gap: $es-spacing-sm;\n padding: $es-spacing-sm;\n background: $es-slate-50;\n border-radius: $es-radius-sm;\n }\n\n .combination-group-select,\n .combination-values-select {\n flex: 1;\n min-width: 120px;\n }\n\n .combination-equals {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n padding: 0 0.25rem;\n }\n\n .btn-add-combination-condition {\n @include button-reset;\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.375rem 0.75rem;\n font-size: $es-font-size-xs;\n font-weight: $es-font-weight-medium;\n color: $es-primary;\n background: transparent;\n border: 1px dashed $es-primary;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: $es-primary-light;\n }\n\n i {\n font-size: 10px;\n }\n }\n\n .btn-remove-combination-row {\n @include button-reset;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n color: $es-text-muted;\n border-radius: $es-radius-sm;\n transition: all $es-transition-fast;\n\n &:hover {\n background: rgba($es-danger, 0.1);\n color: $es-danger;\n }\n\n i {\n font-size: 12px;\n }\n }\n}\n","/**\n * Method Dropdown Component\n * Custom select dropdown with icons for method selection\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n.target-conditions-trait,\n.entity-selector-trait {\n\n // Method dropdown trigger button\n .method-dropdown-trigger {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n height: 36px;\n padding: 0 $es-spacing-md;\n border-radius: $es-radius-md;\n background: $es-white;\n color: $es-slate-800;\n font-size: $es-font-size-sm;\n cursor: pointer;\n transition: all $es-transition-fast;\n min-width: 180px;\n max-width: 320px;\n border: 1px solid $es-border-color;\n\n &:hover {\n background: $es-slate-50;\n border-color: $es-gray-300;\n }\n\n &:focus,\n &:active {\n outline: none;\n border-color: $es-primary;\n box-shadow: 0 0 0 3px rgba($es-primary, 0.1);\n }\n }\n\n .method-trigger-icon {\n font-size: $es-font-size-sm;\n color: $es-text-muted;\n flex-shrink: 0;\n width: 18px;\n text-align: center;\n }\n\n .method-trigger-label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: $es-font-weight-medium;\n }\n\n .method-trigger-caret {\n font-size: $es-font-size-xs;\n color: $es-slate-400;\n flex-shrink: 0;\n margin-left: auto;\n }\n\n // Locked state\n .selector-locked .method-dropdown-trigger {\n background: $es-slate-100;\n color: $es-slate-400;\n cursor: not-allowed;\n border-color: $es-border-color;\n\n &:hover {\n background: $es-slate-100;\n border-color: $es-border-color;\n }\n }\n\n // Method selector wrapper\n .method-selector-wrapper {\n position: relative;\n }\n\n // Hidden select (for form submission)\n .method-select-hidden {\n position: absolute;\n opacity: 0;\n pointer-events: none;\n width: 0;\n height: 0;\n }\n}\n\n// =============================================================================\n// Method Dropdown Menu (appended to body, outside trait wrappers)\n// =============================================================================\n\n.method-dropdown-menu {\n position: absolute;\n z-index: $es-z-dropdown + 1;\n min-width: 200px;\n max-width: 360px;\n max-height: 400px;\n overflow-y: auto;\n background: $es-white;\n border-radius: $es-radius-lg;\n padding: 0.375rem 0;\n border: 1px solid $es-border-color;\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15);\n animation: methodDropdownFadeIn 0.15s ease;\n @include custom-scrollbar;\n}\n\n@keyframes methodDropdownFadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n// Method dropdown item\n.method-dropdown-item {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n padding: 0.5rem $es-spacing-md;\n cursor: pointer;\n transition: background-color 0.1s;\n position: relative;\n\n &:hover {\n background: $es-slate-100;\n }\n\n &.selected {\n background: rgba($es-primary, 0.08);\n }\n\n .method-item-icon {\n font-size: $es-font-size-sm;\n color: $es-text-muted;\n width: 18px;\n text-align: center;\n flex-shrink: 0;\n }\n\n &.selected .method-item-icon {\n color: $es-primary;\n }\n\n .method-item-label {\n flex: 1;\n font-size: $es-font-size-sm;\n color: $es-slate-700;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &.selected .method-item-label {\n color: $es-cyan-700;\n font-weight: $es-font-weight-medium;\n }\n\n .method-item-check {\n font-size: $es-font-size-xs;\n flex-shrink: 0;\n margin-left: auto;\n color: $es-primary;\n }\n}\n\n// Method dropdown optgroup\n.method-dropdown-optgroup {\n margin-top: 0.25rem;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.method-optgroup-label {\n padding: 0.5rem $es-spacing-md;\n font-size: 11px;\n font-weight: $es-font-weight-semibold;\n color: $es-text-muted;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n background: $es-slate-50;\n border-top: 1px solid $es-slate-100;\n border-bottom: 1px solid $es-slate-100;\n\n .method-dropdown-optgroup:first-child & {\n border-top: 0;\n }\n}\n\n.method-optgroup-items {\n padding: 0.25rem 0;\n\n .method-dropdown-item {\n padding-left: $es-spacing-lg;\n }\n}\n\n// Method info placeholder\n.method-info-placeholder {\n font-size: $es-font-size-xs;\n color: $es-text-muted;\n font-style: italic;\n}\n","/**\n * Tooltip Component\n * Info tooltips and help popovers\n */\n\n@use '../variables' as *;\n@use '../mixins' as *;\n\n// =============================================================================\n// MPR Info Wrapper (hover tooltip trigger)\n// =============================================================================\n\n.mpr-info-wrapper {\n display: inline-flex;\n align-items: center;\n position: relative;\n cursor: help;\n vertical-align: middle;\n margin-left: 0.5rem;\n}\n\n// Tooltip (absolute positioned, follows element)\n.mpr-info-wrapper .mpr-tooltip {\n position: absolute;\n background: $es-white;\n color: $es-slate-800;\n padding: $es-spacing-md $es-spacing-lg;\n border-radius: $es-radius-md;\n font-size: 13px;\n line-height: 1.625;\n white-space: normal;\n z-index: 1050;\n max-width: 350px;\n min-width: 200px;\n text-align: left;\n bottom: calc(100% + 10px);\n left: 50%;\n transform: translateX(-50%);\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 1px 0px,\n rgba(64, 68, 82, 0.16) 0px 0px 0px 1px,\n rgba(64, 68, 82, 0.08) 0px 2px 5px 0px;\n\n // Arrow (border)\n &::before {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border: 9px solid transparent;\n border-top-color: rgba(64, 68, 82, 0.16);\n }\n\n // Arrow (fill)\n &::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border: 8px solid transparent;\n border-top-color: $es-white;\n }\n\n strong {\n display: block;\n margin-bottom: 0.5rem;\n font-weight: $es-font-weight-semibold;\n color: #337ab7;\n }\n\n p {\n margin: 0;\n color: $es-text-secondary;\n }\n}\n\n// =============================================================================\n// Fixed Tooltip (appended to body)\n// =============================================================================\n\n.mpr-tooltip-fixed {\n position: fixed;\n background: $es-white;\n color: $es-slate-800;\n padding: $es-spacing-md $es-spacing-lg;\n border-radius: $es-radius-md;\n font-size: 13px;\n line-height: 1.625;\n white-space: normal;\n z-index: 10500;\n max-width: 350px;\n min-width: 200px;\n text-align: left;\n box-shadow: rgba(0, 0, 0, 0.12) 0px 1px 1px 0px,\n rgba(64, 68, 82, 0.16) 0px 0px 0px 1px,\n rgba(64, 68, 82, 0.08) 0px 2px 5px 0px;\n\n strong {\n display: block;\n margin-bottom: 0.5rem;\n font-weight: $es-font-weight-semibold;\n color: #337ab7;\n }\n\n p {\n margin: 0;\n color: $es-text-secondary;\n }\n}\n\n// =============================================================================\n// MPR Icon (SVG mask icons)\n// =============================================================================\n\n.mpr-icon {\n display: inline-block;\n width: 16px;\n height: 16px;\n background-color: $es-slate-600;\n vertical-align: middle;\n cursor: pointer;\n transition: background-color 0.2s;\n mask-size: contain;\n mask-repeat: no-repeat;\n mask-position: center;\n -webkit-mask-size: contain;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-position: center;\n\n &:hover {\n background-color: #5bc0de;\n }\n\n &.link {\n background-color: #5bc0de;\n\n &:hover {\n background-color: #337ab7;\n }\n }\n}\n\n// Info icon\n.mpr-icon.icon-info {\n mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E\");\n -webkit-mask-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 2.5H5A2.5 2.5 0 0 0 2.5 5v6A2.5 2.5 0 0 0 5 13.5h6a2.5 2.5 0 0 0 2.5-2.5V5A2.5 2.5 0 0 0 11 2.5ZM5 1a4 4 0 0 0-4 4v6a4 4 0 0 0 4 4h6a4 4 0 0 0 4-4V5a4 4 0 0 0-4-4H5Z' fill='%23414552'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6.25 8A.75.75 0 0 1 7 7.25h1.25A.75.75 0 0 1 9 8v3.5a.75.75 0 0 1-1.5 0V8.75H7A.75.75 0 0 1 6.25 8Z' fill='%23414552'/%3E%3Cpath d='M6.75 5a1.25 1.25 0 1 1 2.5 0 1.25 1.25 0 0 1-2.5 0Z' fill='%23414552'/%3E%3C/svg%3E\");\n}\n\n// =============================================================================\n// Tooltip Content Styling\n// =============================================================================\n\n.tooltip-list {\n margin: 0.5rem 0;\n\n > div {\n margin: 0.25rem 0;\n padding-left: 0.5rem;\n }\n}\n\n.tooltip-example {\n font-family: monospace;\n font-size: 12px;\n background: $es-slate-100;\n padding: 0.25rem 0.5rem;\n border-radius: $es-radius-sm;\n margin: 0.25rem 0;\n}\n\n.tooltip-logic {\n font-size: 11px;\n color: $es-text-muted;\n margin-top: 0.5rem;\n padding-top: 0.5rem;\n border-top: 1px solid $es-border-color;\n}\n"]} \ No newline at end of file diff --git a/assets/js/admin/entity-selector.js b/assets/js/admin/entity-selector.js index 931ea17..996b81b 100644 --- a/assets/js/admin/entity-selector.js +++ b/assets/js/admin/entity-selector.js @@ -1719,14 +1719,6 @@ var groupType = $badge.data('type'); var groupName = $badge.data('groupName'); - console.log('[EntitySelector] Filter toggle count clicked', { - groupId: groupId, - groupType: groupType, - groupName: groupName, - hasMethod: typeof self.showFilterGroupPreviewPopover === 'function', - self: self - }); - if ($badge.hasClass('popover-open')) { self.hidePreviewPopover(); } else { @@ -1734,6 +1726,25 @@ } }); + // View mode select change + this.$dropdown.on('change', '.view-mode-select', function() { + var mode = $(this).val(); + self.viewMode = mode; + + // Remove all view mode classes and add the new one + self.$dropdown + .removeClass('view-list view-tree view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8') + .addClass('view-' + mode.replace('cols-', 'cols-')); + + // For tree view, load the category tree + if (mode === 'tree') { + self.loadCategoryTree(); + } else { + // Re-render current results with new view mode + self.renderSearchResults(false); + } + }); + // Close values row this.$dropdown.on('click', '.btn-close-values', function(e) { e.preventDefault(); @@ -2615,32 +2626,48 @@ html += ''; // Add product-specific columns (price, sale price, stock, sold) - if (item.type === 'product' && isListView) { - // Regular price - html += '
'; - html += '' + (item.regular_price_formatted || item.price_formatted || '') + ''; - html += '
'; + if (item.type === 'product') { + if (isListView) { + // List view: full columns + // Regular price + html += '
'; + html += '' + (item.regular_price_formatted || item.price_formatted || '') + ''; + html += '
'; - // Sale price (only if discounted) - if (item.has_discount) { - html += '
'; - html += '' + (item.price_formatted || '') + ''; + // Sale price (only if discounted) + if (item.has_discount) { + html += '
'; + html += '' + (item.price_formatted || '') + ''; + html += '
'; + } else { + html += '
'; + } + + // Stock column + var stockClass = item.stock_status === 'out_of_stock' ? 'stock-out' : + (item.stock_status === 'low_stock' ? 'stock-low' : 'stock-ok'); + html += '
'; + html += '' + (item.stock_qty !== undefined ? item.stock_qty : '') + ''; + html += '
'; + + // Sales column + html += '
'; + html += '' + (item.sales_qty !== undefined ? item.sales_qty : '0') + ''; html += '
'; } else { - html += '
'; + // Grid view: compact info line + var gridStockClass = item.stock_status === 'out_of_stock' ? 'stock-out' : + (item.stock_status === 'low_stock' ? 'stock-low' : ''); + html += '
'; + html += '' + (item.price_formatted || '') + ''; + if (item.stock_qty !== undefined) { + html += '' + item.stock_qty + ' qty'; + } + if (item.has_discount) { + html += '-' + (item.discount_percent || '') + '%'; + } + html += '
'; } - - // Stock column - var stockClass = item.stock_status === 'out_of_stock' ? 'stock-out' : - (item.stock_status === 'low_stock' ? 'stock-low' : 'stock-ok'); - html += '
'; - html += '' + (item.stock_qty !== undefined ? item.stock_qty : '') + ''; - html += '
'; - - // Sales column - html += '
'; - html += '' + (item.sales_qty !== undefined ? item.sales_qty : '0') + ''; - html += '
'; } html += '
'; @@ -6960,36 +6987,8 @@ /** * Entity Selector - Preview Module - * Preview popover and pattern preview modal + * Reusable preview popover component with filter and load more * @partial _preview.js - * - * EXTRACTION SOURCE: assets/js/admin/entity-selector.js - * Lines: 2906-2942 (updateHeaderTotalCount, updateShowAllToggle) - * 2943-3051 (showPreviewPopover) - * 3053-3076 (renderPreviewItems) - * 3078-3100 (filterPreviewItems) - * 3102-3183 (loadMorePreviewItems) - * 3185-3194 (hidePreviewPopover) - * 3196-3287 (showPatternPreviewModal) - * 3289-3400 (refreshGroupPreviewIfOpen) - estimated - * 7592-7700 (showReplaceConfirmation, getCurrentSingleSelection) - * 7703-7745 (getBlockMode, isBlockSingleMode) - * - * Contains: - * - showPreviewPopover() - Show tab count preview - * - hidePreviewPopover() - Close preview popover - * - renderPreviewItems() - Render item list in preview - * - filterPreviewItems() - Filter preview items by query - * - loadMorePreviewItems() - Load additional preview items - * - showPatternPreviewModal() - Pattern match preview modal - * - refreshGroupPreviewIfOpen() - Refresh preview if open - * - updateHeaderTotalCount() - Update header total badge - * - updateShowAllToggle() - Update show-all checkbox state - * - showReplaceConfirmation() - Single mode replace dialog - * - getCurrentSingleSelection() - Get current selection in single mode - * - getBlockMode() - Get block selection mode - * - isBlockSingleMode() - Check if block is single-select - * - getEntityTypeLabel() - Get human-readable entity label */ (function($) { @@ -6999,6 +6998,10 @@ window._EntitySelectorMixins.preview = { + // ========================================================================= + // HEADER & TOGGLE UPDATES + // ========================================================================= + updateHeaderTotalCount: function() { var self = this; var total = 0; @@ -7033,56 +7036,68 @@ $checkbox.prop('checked', !hasData); }, - showPreviewPopover: function($tab) { - var previewData = $tab.data('previewData'); - if (!previewData) { - return; - } - - this.hidePreviewPopover(); - - var $badge = $tab.find('.tab-badge'); - $badge.addClass('popover-open'); - this.$activeBadge = $badge; - var items = previewData.items || previewData.products || []; - this.previewLoadedCount = items.length; - this.previewBlockType = $tab.data('blockType'); - - var blockType = this.previewBlockType; - var blockConfig = this.config.blocks && this.config.blocks[blockType] ? this.config.blocks[blockType] : {}; - var entityLabelPlural = blockConfig.entity_label_plural || 'items'; + // ========================================================================= + // REUSABLE PREVIEW POPOVER COMPONENT + // ========================================================================= + /** + * Create and show a reusable preview popover + * @param {Object} options Configuration options + * @param {jQuery} options.$badge - The badge element to position against + * @param {Array} options.items - Array of items to display + * @param {number} options.totalCount - Total count of items + * @param {boolean} options.hasMore - Whether more items are available + * @param {string} options.entityLabel - Label for items (e.g., "products") + * @param {string} options.previewType - Type identifier (e.g., "condition", "filter-group") + * @param {Function} options.onLoadMore - Callback when load more is clicked + * @param {Object} options.context - Context data for load more + */ + createPreviewPopover: function(options) { + var self = this; var trans = this.config.trans || {}; - var html = '
'; + var $badge = options.$badge; + var items = options.items || []; + var totalCount = options.totalCount || 0; + var hasMore = options.hasMore || false; + var entityLabel = options.entityLabel || 'products'; + var previewType = options.previewType || 'default'; + + // Build popover HTML + var html = '
'; + + // Header with count and close button html += '
'; - html += '' + previewData.count + ' ' + entityLabelPlural + ' ' + (trans.items_matched || 'matched') + ''; + html += '' + totalCount + ' ' + entityLabel + ''; html += ''; html += '
'; + // Filter input html += '
'; html += ''; html += '
'; + // Items list if (items.length > 0) { html += '
'; html += this.renderPreviewItems(items); html += '
'; - if (previewData.hasMore) { - var remaining = previewData.count - items.length; + // Load more footer with select dropdown + if (hasMore) { + var remaining = totalCount - items.length; html += ''; } @@ -7092,13 +7107,19 @@ html += '
'; + // Create and append popover var $popover = $(html); $('body').append($popover); + // Store references + this.$previewPopover = $popover; this.$previewList = $popover.find('.preview-list'); - this.allPreviewData = previewData; + this.previewLoadedCount = items.length; + this.previewTotalCount = totalCount; + this.previewContext = options.context || {}; + this.previewOnLoadMore = options.onLoadMore || null; - var self = this; + // Event handlers $popover.find('.preview-close').on('click', function() { self.hidePreviewPopover(); }); @@ -7108,10 +7129,27 @@ self.filterPreviewItems(query); }); - $popover.find('.btn-load-more-preview').on('click', function() { - self.loadMorePreviewItems($tab, $(this)); - }); + if (options.onLoadMore) { + $popover.find('.btn-load-more').on('click', function() { + var $btn = $(this); + var $controls = $btn.closest('.load-more-controls'); + var $select = $controls.find('.load-more-select'); + if ($btn.hasClass('loading')) return; + + $btn.addClass('loading'); + $btn.find('i').removeClass('icon-plus').addClass('icon-spinner icon-spin'); + $select.prop('disabled', true); + + // Get selected load count + var loadCount = parseInt($select.val(), 10) || 20; + self.previewLoadCount = loadCount; + + options.onLoadMore.call(self, $btn); + }); + } + + // Position popover below badge var badgeOffset = $badge.offset(); var badgeHeight = $badge.outerHeight(); var badgeWidth = $badge.outerWidth(); @@ -7129,37 +7167,131 @@ zIndex: 10000 }); - // Add show class to trigger visibility + // Show with transition $popover.addClass('show'); - this.$previewPopover = $popover; + return $popover; }, - renderPreviewItems: function(products) { + /** + * Update popover after loading more items + */ + updatePreviewPopover: function(items, hasMore) { + var trans = this.config.trans || {}; + + // Update list + this.$previewList.html(this.renderPreviewItems(items)); + this.previewLoadedCount = items.length; + + // Update or remove load more controls + var $footer = this.$previewPopover.find('.preview-footer'); + if (hasMore) { + var remaining = this.previewTotalCount - items.length; + var $controls = $footer.find('.load-more-controls'); + var $btn = $controls.find('.btn-load-more'); + var $select = $controls.find('.load-more-select'); + + // Reset button state + $btn.removeClass('loading'); + $btn.find('i').removeClass('icon-spinner icon-spin').addClass('icon-plus'); + $select.prop('disabled', false); + + // Update remaining count + $controls.find('.remaining-count').text(remaining); + + // Update select options + $select.empty(); + if (remaining >= 10) $select.append(''); + if (remaining >= 20) $select.append(''); + if (remaining >= 50) $select.append(''); + if (remaining >= 100) $select.append(''); + $select.append(''); + } else { + $footer.remove(); + } + + // Re-apply filter if active + var filterQuery = this.$previewPopover.find('.preview-filter-input').val(); + if (filterQuery) { + this.filterPreviewItems(filterQuery.toLowerCase().trim()); + } + }, + + /** + * Render preview items HTML with consistent format + */ + renderPreviewItems: function(items) { + var self = this; var html = ''; - $.each(products, function(i, product) { - var itemClass = 'preview-item' + (product.isCombination ? ' is-combination' : ''); - var attrs = (product.attributes || '').toLowerCase(); - html += '
'; - if (product.image) { - html += ''; + + for (var i = 0; i < items.length; i++) { + var item = items[i]; + var itemClass = 'preview-item'; + if (item.isCombination) itemClass += ' is-combination'; + + // Build data attributes for filtering + var dataAttrs = ''; + dataAttrs += ' data-name="' + this.escapeAttr((item.name || '').toLowerCase()) + '"'; + dataAttrs += ' data-ref="' + this.escapeAttr((item.reference || '').toLowerCase()) + '"'; + if (item.attributes) { + dataAttrs += ' data-attrs="' + this.escapeAttr((item.attributes || '').toLowerCase()) + '"'; + } + + html += '
'; + + // Image or placeholder + if (item.image) { + html += ''; } else { - html += ''; + html += '
inventory_2
'; } - html += '
'; - html += '' + product.name + ''; - if (product.attributes) { - html += '' + product.attributes + ''; + + // Info section + html += '
'; + html += '
' + this.escapeHtml(item.name || 'Unnamed') + '
'; + + // Meta line (reference, manufacturer, category, attributes) + var meta = []; + if (item.reference) { + meta.push('Ref: ' + item.reference); } - if (product.reference) { - html += '' + product.reference + ''; + if (item.manufacturer) { + meta.push(item.manufacturer); } - html += '
'; - html += '
'; - }); + if (item.category) { + meta.push(item.category); + } + if (item.attributes) { + meta.push(item.attributes); + } + + if (meta.length > 0) { + html += '
' + this.escapeHtml(meta.join(' • ')) + '
'; + } + + html += '
'; // .preview-item-info + + // Price column (always show if available) + if (typeof item.price !== 'undefined' && item.price !== null) { + html += '
' + this.formatPrice(item.price) + '
'; + } else if (item.price_formatted) { + html += '
' + this.escapeHtml(item.price_formatted) + '
'; + } + + // Status badge if inactive + if (typeof item.active !== 'undefined' && !item.active) { + html += 'Inactive'; + } + + html += '
'; // .preview-item + } + return html; }, + /** + * Filter preview items by query + */ filterPreviewItems: function(query) { if (!this.$previewList) return; @@ -7176,22 +7308,94 @@ var ref = $item.data('ref') || ''; var attrs = $item.data('attrs') || ''; - if (name.indexOf(query) !== -1 || ref.indexOf(query) !== -1 || attrs.indexOf(query) !== -1) { - $item.show(); - } else { - $item.hide(); + var matches = name.indexOf(query) !== -1 || + ref.indexOf(query) !== -1 || + attrs.indexOf(query) !== -1; + + $item.toggle(matches); + }); + }, + + /** + * Format price for display + */ + formatPrice: function(price) { + if (typeof price !== 'number') { + price = parseFloat(price) || 0; + } + // Use currency format from config if available + var currencySign = (this.config && this.config.currency_sign) || '€'; + var currencyFormat = (this.config && this.config.currency_format) || 'right'; + + var formatted = price.toFixed(2); + + if (currencyFormat === 'left') { + return currencySign + ' ' + formatted; + } else { + return formatted + ' ' + currencySign; + } + }, + + /** + * Hide and clean up preview popover + */ + hidePreviewPopover: function() { + if (this.$activeBadge) { + this.$activeBadge.removeClass('popover-open loading'); + this.$activeBadge = null; + } + if (this.$previewPopover) { + this.$previewPopover.remove(); + this.$previewPopover = null; + } + this.$previewList = null; + this.previewContext = null; + this.previewOnLoadMore = null; + }, + + // ========================================================================= + // TAB PREVIEW (Block tab badge click) + // ========================================================================= + + showPreviewPopover: function($tab) { + var self = this; + var previewData = $tab.data('previewData'); + + if (!previewData) { + return; + } + + this.hidePreviewPopover(); + + var $badge = $tab.find('.tab-badge'); + $badge.addClass('popover-open'); + this.$activeBadge = $badge; + + var items = previewData.items || previewData.products || []; + var blockType = $tab.data('blockType'); + var blockConfig = this.config.blocks && this.config.blocks[blockType] ? this.config.blocks[blockType] : {}; + var entityLabelPlural = blockConfig.entity_label_plural || 'items'; + + this.previewBlockType = blockType; + + this.createPreviewPopover({ + $badge: $badge, + items: items, + totalCount: previewData.count, + hasMore: previewData.hasMore, + entityLabel: entityLabelPlural, + previewType: 'tab', + context: { $tab: $tab, blockType: blockType }, + onLoadMore: function($btn) { + self.loadMoreTabPreviewItems($tab, $btn); } }); }, - loadMorePreviewItems: function($tab, $btn) { + loadMoreTabPreviewItems: function($tab, $btn) { var self = this; var blockType = this.previewBlockType; - var $footer = $btn.closest('.preview-footer'); - var $select = $footer.find('.load-more-select'); - var loadCount = parseInt($select.val(), 10) || 20; - var $hiddenInput = this.$wrapper.find('input[name="' + this.config.name + '"]'); var savedData = {}; try { @@ -7206,8 +7410,7 @@ var data = {}; data[blockType] = { groups: groups }; - $btn.prop('disabled', true).find('i').removeClass('icon-plus').addClass('icon-spinner icon-spin'); - $select.prop('disabled', true); + var loadCount = this.previewLoadCount || 20; $.ajax({ url: this.config.ajaxUrl, @@ -7225,51 +7428,320 @@ success: function(response) { var items = response.items || response.products || []; if (response.success && items.length > 0) { - self.$previewList.html(self.renderPreviewItems(items)); - self.previewLoadedCount = items.length; - - if (response.hasMore) { - var remaining = response.count - items.length; - $footer.find('.remaining-count').text(remaining); - - var $allOption = $select.find('option:last'); - if ($allOption.val() !== '10' && $allOption.val() !== '20' && $allOption.val() !== '50' && $allOption.val() !== '100') { - $allOption.val(remaining).text(self.config.trans.all + ' (' + remaining + ')'); - } - - $btn.prop('disabled', false).find('i').removeClass('icon-spinner icon-spin').addClass('icon-plus'); - $select.prop('disabled', false); - } else { - $footer.remove(); - } - $tab.data('previewData', response); - self.allPreviewData = response; - - var filterQuery = self.$previewPopover.find('.preview-filter-input').val(); - if (filterQuery) { - self.filterPreviewItems(filterQuery.toLowerCase().trim()); - } + self.previewTotalCount = response.count; + self.updatePreviewPopover(items, response.hasMore); } }, error: function() { - $btn.prop('disabled', false).find('i').removeClass('icon-spinner icon-spin').addClass('icon-plus'); + var $controls = $btn.closest('.load-more-controls'); + var $select = $controls.find('.load-more-select'); + $btn.removeClass('loading'); + $btn.find('i').removeClass('icon-spinner icon-spin').addClass('icon-plus'); $select.prop('disabled', false); } }); }, - hidePreviewPopover: function() { - if (this.$activeBadge) { - this.$activeBadge.removeClass('popover-open'); - this.$activeBadge = null; - } - if (this.$previewPopover) { - this.$previewPopover.remove(); - this.$previewPopover = null; + // ========================================================================= + // CONDITION PREVIEW (Single condition badge click) + // ========================================================================= + + showConditionPreviewPopover: function($badge) { + var self = this; + var conditionData = $badge.data('conditionData'); + + if (!conditionData) { + return; } + + this.hidePreviewPopover(); + + $badge.addClass('popover-open loading'); + this.$activeBadge = $badge; + + var blockType = conditionData.blockType || 'products'; + var blockConfig = this.config.blocks && this.config.blocks[blockType] ? this.config.blocks[blockType] : {}; + var entityLabelPlural = blockConfig.entity_label_plural || 'products'; + + $.ajax({ + url: this.config.ajaxUrl, + type: 'POST', + dataType: 'json', + data: { + ajax: 1, + action: 'previewConditionItems', + trait: 'EntitySelector', + method: conditionData.method, + values: JSON.stringify(conditionData.values), + block_type: blockType, + limit: 10 + }, + success: function(response) { + $badge.removeClass('loading'); + + if (response.success) { + self.createPreviewPopover({ + $badge: $badge, + items: response.items || [], + totalCount: response.count, + hasMore: response.hasMore, + entityLabel: entityLabelPlural, + previewType: 'condition', + context: { conditionData: conditionData, blockType: blockType }, + onLoadMore: function($btn) { + self.loadMoreConditionItems($btn); + } + }); + } else { + $badge.removeClass('popover-open'); + self.$activeBadge = null; + } + }, + error: function() { + $badge.removeClass('loading popover-open'); + self.$activeBadge = null; + } + }); }, + loadMoreConditionItems: function($btn) { + var self = this; + var ctx = this.previewContext; + + if (!ctx || !ctx.conditionData) return; + + var loadCount = this.previewLoadCount || 20; + + $.ajax({ + url: this.config.ajaxUrl, + type: 'POST', + dataType: 'json', + data: { + ajax: 1, + action: 'previewConditionItems', + trait: 'EntitySelector', + method: ctx.conditionData.method, + values: JSON.stringify(ctx.conditionData.values), + block_type: ctx.blockType, + limit: self.previewLoadedCount + loadCount + }, + success: function(response) { + if (response.success) { + self.previewTotalCount = response.count; + self.updatePreviewPopover(response.items || [], response.hasMore); + } + }, + error: function() { + var $controls = $btn.closest('.load-more-controls'); + var $select = $controls.find('.load-more-select'); + $btn.removeClass('loading'); + $btn.find('i').removeClass('icon-spinner icon-spin').addClass('icon-plus'); + $select.prop('disabled', false); + } + }); + }, + + // ========================================================================= + // GROUP PREVIEW (Selection group badge click) + // ========================================================================= + + showGroupPreviewPopover: function($badge, $group, blockType) { + var self = this; + + if (!$group) { + $group = $badge.closest('.selection-group'); + } + + if (!blockType) { + var $block = $badge.closest('.target-block'); + blockType = $block.data('blockType') || 'products'; + } + + var groupData = $badge.data('groupData'); + + if (!groupData) { + groupData = this.serializeGroup($group, blockType); + } + + if (!groupData || !groupData.include) { + return; + } + + this.hidePreviewPopover(); + + $badge.addClass('popover-open loading'); + this.$activeBadge = $badge; + + var blockConfig = this.config.blocks && this.config.blocks[blockType] ? this.config.blocks[blockType] : {}; + var entityLabelPlural = blockConfig.entity_label_plural || 'products'; + + $.ajax({ + url: this.config.ajaxUrl, + type: 'POST', + dataType: 'json', + data: { + ajax: 1, + action: 'previewGroupItems', + trait: 'EntitySelector', + group_data: JSON.stringify(groupData), + block_type: blockType, + limit: 10 + }, + success: function(response) { + $badge.removeClass('loading'); + + if (response.success) { + self.createPreviewPopover({ + $badge: $badge, + items: response.items || [], + totalCount: response.count, + hasMore: response.hasMore, + entityLabel: entityLabelPlural, + previewType: 'group', + context: { groupData: groupData, blockType: blockType, $group: $group }, + onLoadMore: function($btn) { + self.loadMoreGroupItems($btn); + } + }); + } else { + $badge.removeClass('popover-open'); + self.$activeBadge = null; + } + }, + error: function() { + $badge.removeClass('loading popover-open'); + self.$activeBadge = null; + } + }); + }, + + loadMoreGroupItems: function($btn) { + var self = this; + var ctx = this.previewContext; + + if (!ctx || !ctx.groupData) return; + + var loadCount = this.previewLoadCount || 20; + + $.ajax({ + url: this.config.ajaxUrl, + type: 'POST', + dataType: 'json', + data: { + ajax: 1, + action: 'previewGroupItems', + trait: 'EntitySelector', + group_data: JSON.stringify(ctx.groupData), + block_type: ctx.blockType, + limit: self.previewLoadedCount + loadCount + }, + success: function(response) { + if (response.success) { + self.previewTotalCount = response.count; + self.updatePreviewPopover(response.items || [], response.hasMore); + } + }, + error: function() { + $btn.removeClass('loading'); + $btn.find('.load-more-text').show(); + $btn.find('.load-more-loading').hide(); + } + }); + }, + + // ========================================================================= + // FILTER GROUP PREVIEW (Attribute/Feature group toggle badge) + // ========================================================================= + + showFilterGroupPreviewPopover: function($badge, groupId, groupType, groupName) { + var self = this; + + this.hidePreviewPopover(); + + $badge.addClass('popover-open loading'); + this.$activeBadge = $badge; + + var entityLabelPlural = 'products'; + + $.ajax({ + url: this.config.ajaxUrl, + type: 'POST', + dataType: 'json', + data: { + ajax: 1, + action: 'previewFilterGroupProducts', + trait: 'EntitySelector', + group_id: groupId, + group_type: groupType, + limit: 10 + }, + success: function(response) { + $badge.removeClass('loading'); + + if (response.success) { + self.createPreviewPopover({ + $badge: $badge, + items: response.items || [], + totalCount: response.count || 0, + hasMore: response.hasMore || false, + entityLabel: entityLabelPlural, + previewType: 'filter-group', + context: { groupId: groupId, groupType: groupType, groupName: groupName }, + onLoadMore: function($btn) { + self.loadMoreFilterGroupItems($btn); + } + }); + } else { + $badge.removeClass('popover-open'); + self.$activeBadge = null; + } + }, + error: function() { + $badge.removeClass('loading popover-open'); + self.$activeBadge = null; + } + }); + }, + + loadMoreFilterGroupItems: function($btn) { + var self = this; + var ctx = this.previewContext; + + if (!ctx || !ctx.groupId) return; + + var loadCount = this.previewLoadCount || 20; + + $.ajax({ + url: this.config.ajaxUrl, + type: 'POST', + dataType: 'json', + data: { + ajax: 1, + action: 'previewFilterGroupProducts', + trait: 'EntitySelector', + group_id: ctx.groupId, + group_type: ctx.groupType, + limit: self.previewLoadedCount + loadCount + }, + success: function(response) { + if (response.success) { + self.previewTotalCount = response.count; + self.updatePreviewPopover(response.items || [], response.hasMore); + } + }, + error: function() { + $btn.removeClass('loading'); + $btn.find('.load-more-text').show(); + $btn.find('.load-more-loading').hide(); + } + }); + }, + + // ========================================================================= + // PATTERN PREVIEW MODAL (for regex/pattern matching) + // ========================================================================= + showPatternPreviewModal: function(pattern, entityType, caseSensitive, count) { var self = this; var trans = this.config.trans || {}; @@ -7356,382 +7828,39 @@ }); }, - refreshGroupPreviewIfOpen: function($group) { - var self = this; + // ========================================================================= + // HELPER METHODS + // ========================================================================= + refreshGroupPreviewIfOpen: function($group) { + // Check if preview is for this group and refresh if needed if (!this.$activeBadge || !this.$previewPopover) { return; } - - // Check if preview is for this group and refresh if needed }, /** - * Show preview popover for condition match count badge + * Escape HTML special characters */ - showConditionPreviewPopover: function($badge) { - var self = this; - var conditionData = $badge.data('conditionData'); - - if (!conditionData) { - return; - } - - this.hidePreviewPopover(); - - $badge.addClass('popover-open loading'); - this.$activeBadge = $badge; - - var trans = this.config.trans || {}; - var blockType = conditionData.blockType || 'products'; - var blockConfig = this.config.blocks && this.config.blocks[blockType] ? this.config.blocks[blockType] : {}; - var entityLabelPlural = blockConfig.entity_label_plural || 'items'; - - // Fetch preview items from backend - $.ajax({ - url: this.config.ajaxUrl, - type: 'POST', - dataType: 'json', - data: { - ajax: 1, - action: 'previewConditionItems', - trait: 'EntitySelector', - method: conditionData.method, - values: JSON.stringify(conditionData.values), - block_type: blockType, - limit: 10 - }, - success: function(response) { - $badge.removeClass('loading'); - - if (response.success) { - var items = response.items || []; - self.showItemsPopover($badge, items, response.count, response.hasMore, entityLabelPlural, blockType, 'condition'); - } - }, - error: function() { - $badge.removeClass('loading popover-open'); - self.$activeBadge = null; - } - }); + escapeHtml: function(str) { + if (!str) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); }, /** - * Show preview popover for group count badge + * Escape attribute value */ - showGroupPreviewPopover: function($badge, $group, blockType) { - var self = this; - - // If $group not passed, try to find it - if (!$group) { - $group = $badge.closest('.selection-group'); - } - - if (!blockType) { - var $block = $badge.closest('.target-block'); - blockType = $block.data('blockType') || 'products'; - } - - var groupData = $badge.data('groupData'); - - if (!groupData) { - // Try to serialize from DOM - groupData = this.serializeGroup($group, blockType); - } - - if (!groupData || !groupData.include) { - return; - } - - this.hidePreviewPopover(); - - $badge.addClass('popover-open loading'); - this.$activeBadge = $badge; - - var trans = this.config.trans || {}; - var blockConfig = this.config.blocks && this.config.blocks[blockType] ? this.config.blocks[blockType] : {}; - var entityLabelPlural = blockConfig.entity_label_plural || 'items'; - - // Fetch preview items from backend - $.ajax({ - url: this.config.ajaxUrl, - type: 'POST', - dataType: 'json', - data: { - ajax: 1, - action: 'previewGroupItems', - trait: 'EntitySelector', - group_data: JSON.stringify(groupData), - block_type: blockType, - limit: 10 - }, - success: function(response) { - $badge.removeClass('loading'); - - if (response.success) { - var items = response.items || []; - self.showItemsPopover($badge, items, response.count, response.hasMore, entityLabelPlural, blockType, 'group'); - } else { - $badge.removeClass('popover-open'); - self.$activeBadge = null; - } - }, - error: function() { - $badge.removeClass('loading popover-open'); - self.$activeBadge = null; - } - }); - }, - - /** - * Common popover display for both condition and group previews - */ - showItemsPopover: function($badge, items, totalCount, hasMore, entityLabel, blockType, previewType) { - var self = this; - var trans = this.config.trans || {}; - - var html = '
'; - - html += '
'; - html += '' + totalCount + ' ' + entityLabel + ''; - html += ''; - html += '
'; - - if (items.length > 0) { - html += '
'; - html += this.renderPreviewItems(items); - html += '
'; - - if (hasMore) { - var remaining = totalCount - items.length; - html += ''; - } - } else { - html += '
' + (trans.no_preview || 'No items to preview') + '
'; - } - - html += '
'; - - var $popover = $(html); - $('body').append($popover); - - $popover.find('.preview-close').on('click', function() { - self.hidePreviewPopover(); - }); - - // Position popover below badge - var badgeOffset = $badge.offset(); - var badgeHeight = $badge.outerHeight(); - var badgeWidth = $badge.outerWidth(); - var popoverWidth = $popover.outerWidth(); - - var leftPos = badgeOffset.left + (badgeWidth / 2) - (popoverWidth / 2); - var minLeft = 10; - var maxLeft = $(window).width() - popoverWidth - 10; - leftPos = Math.max(minLeft, Math.min(leftPos, maxLeft)); - - var topPos = badgeOffset.top + badgeHeight + 8; - - $popover.css({ - position: 'absolute', - top: topPos, - left: leftPos, - zIndex: 10000 - }); - - // Add show class for CSS transition - $popover.addClass('show'); - - this.$previewPopover = $popover; - }, - - /** - * Render preview items HTML - */ - renderPreviewItems: function(items) { - var html = ''; - - for (var i = 0; i < items.length; i++) { - var item = items[i]; - html += '
'; - - // Image or icon - if (item.image) { - html += ''; - } else { - html += '
inventory_2
'; - } - - // Info - html += '
'; - html += '
' + this.escapeHtml(item.name || 'Unnamed') + '
'; - - var meta = []; - if (item.reference) { - meta.push('Ref: ' + item.reference); - } - if (item.manufacturer) { - meta.push(item.manufacturer); - } - if (item.category) { - meta.push(item.category); - } - if (item.attributes) { - meta.push(item.attributes); - } - - if (meta.length > 0) { - html += '
' + this.escapeHtml(meta.join(' • ')) + '
'; - } - - html += '
'; - - // Price or status - if (typeof item.price !== 'undefined') { - html += '
' + this.formatPrice(item.price) + '
'; - } - if (typeof item.active !== 'undefined' && !item.active) { - html += 'Inactive'; - } - - html += '
'; - } - - return html; - }, - - /** - * Format price for display - */ - formatPrice: function(price) { - if (typeof price !== 'number') { - price = parseFloat(price) || 0; - } - return price.toFixed(2) + ' €'; - }, - - /** - * Show preview popover for filter group toggle (attribute/feature groups) - */ - showFilterGroupPreviewPopover: function($badge, groupId, groupType, groupName) { - var self = this; - - console.log('[EntitySelector] showFilterGroupPreviewPopover called', { - groupId: groupId, - groupType: groupType, - groupName: groupName, - ajaxUrl: this.config.ajaxUrl - }); - - this.hidePreviewPopover(); - - $badge.addClass('popover-open loading'); - this.$activeBadge = $badge; - - var trans = this.config.trans || {}; - var entityLabelPlural = 'products'; - - // Fetch products matching this attribute/feature group - $.ajax({ - url: this.config.ajaxUrl, - type: 'POST', - dataType: 'json', - data: { - ajax: 1, - action: 'previewFilterGroupProducts', - trait: 'EntitySelector', - group_id: groupId, - group_type: groupType, - limit: 10 - }, - success: function(response) { - console.log('[EntitySelector] Filter preview AJAX success', response); - $badge.removeClass('loading'); - - if (response.success) { - var items = response.items || []; - var totalCount = response.count || 0; - var hasMore = response.hasMore || false; - - self.showFilterGroupItemsPopover($badge, items, totalCount, hasMore, entityLabelPlural, groupName, groupType); - } else { - console.log('[EntitySelector] Filter preview response.success = false'); - $badge.removeClass('popover-open'); - self.$activeBadge = null; - } - }, - error: function(xhr, status, error) { - console.error('[EntitySelector] Filter preview AJAX error', {xhr: xhr, status: status, error: error}); - $badge.removeClass('loading popover-open'); - self.$activeBadge = null; - } - }); - }, - - /** - * Show popover for filter group preview items - */ - showFilterGroupItemsPopover: function($badge, items, totalCount, hasMore, entityLabel, groupName, groupType) { - var self = this; - var trans = this.config.trans || {}; - - var typeLabel = groupType === 'attribute' ? (trans.attribute || 'Attribute') : (trans.feature || 'Feature'); - var html = '
'; - - html += '
'; - html += '' + totalCount + ' ' + entityLabel + ''; - html += ''; - html += '
'; - - if (items.length > 0) { - html += '
'; - html += this.renderPreviewItems(items); - html += '
'; - - if (hasMore) { - var remaining = totalCount - items.length; - html += ''; - } - } else { - html += '
' + (trans.no_preview || 'No items to preview') + '
'; - } - - html += '
'; - - var $popover = $(html); - $('body').append($popover); - - $popover.find('.preview-close').on('click', function() { - self.hidePreviewPopover(); - }); - - // Position popover below badge - var badgeOffset = $badge.offset(); - var badgeHeight = $badge.outerHeight(); - var badgeWidth = $badge.outerWidth(); - var popoverWidth = $popover.outerWidth(); - - var leftPos = badgeOffset.left + (badgeWidth / 2) - (popoverWidth / 2); - var minLeft = 10; - var maxLeft = $(window).width() - popoverWidth - 10; - leftPos = Math.max(minLeft, Math.min(leftPos, maxLeft)); - - var topPos = badgeOffset.top + badgeHeight + 8; - - $popover.css({ - position: 'absolute', - top: topPos, - left: leftPos, - zIndex: 10000 - }); - - $popover.addClass('show'); - - this.$previewPopover = $popover; + escapeAttr: function(str) { + if (!str) return ''; + return String(str) + .replace(/&/g, '&') + .replace(/"/g, '"') + .replace(/'/g, '''); } }; diff --git a/assets/js/admin/entity-selector.min.js b/assets/js/admin/entity-selector.min.js index 38bc486..07e009a 100644 --- a/assets/js/admin/entity-selector.min.js +++ b/assets/js/admin/entity-selector.min.js @@ -1,2 +1,2 @@ -!function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.utils={escapeHtml:function(e){return null==e?"":String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},escapeAttr:function(e){return null==e?"":String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},getEntityTypeIcon:function(e){return{products:"icon-shopping-cart",categories:"icon-folder-open",manufacturers:"icon-building",suppliers:"icon-truck",attributes:"icon-list-alt",features:"icon-tags",cms:"icon-file-text",cms_categories:"icon-folder"}[e]||"icon-cube"},getEntityTypeLabel:function(e){var t=this.config.trans||{};return{products:t.product||"Product",categories:t.category||"Category",manufacturers:t.manufacturer||"Manufacturer",suppliers:t.supplier||"Supplier",attributes:t.attribute||"Attribute",features:t.feature||"Feature",cms:t.cms_page||"CMS Page",cms_categories:t.cms_category||"CMS Category"}[e]||e},validate:function(){if(1!==this.$wrapper.data("required")&&"1"!==this.$wrapper.data("required"))return!0;var t=!1;return this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return t=!0,!1}),t?(this.clearValidationError(),!0):(this.showValidationError(),!1)},showValidationError:function(){this.$wrapper.addClass("has-validation-error");var t=this.$wrapper.data("required-message")||"Please select at least one item";this.$wrapper.find(".trait-validation-error").remove();var i=e("
",{class:"trait-validation-error",html:' '+t});this.$wrapper.find(".condition-trait-header").after(i),e("html, body").animate({scrollTop:this.$wrapper.offset().top-100},300),this.$wrapper.find(".condition-trait-body").is(":visible")||(this.$wrapper.find(".condition-trait-body").slideDown(200),this.$wrapper.removeClass("collapsed"))},clearValidationError:function(){this.$wrapper.removeClass("has-validation-error"),this.$wrapper.find(".trait-validation-error").remove()},getBlockMode:function(e){var t=this.config.blocks[e];return t&&t.mode?t.mode:"multi"},isBlockSingleMode:function(e){return"single"===this.getBlockMode(e)},getCurrentSingleSelection:function(){if("single"!==(this.config.mode||"multi"))return null;var e=this.$wrapper.find(".entity-chips .entity-chip").first();if(e.length){var t=e.closest(".target-block");return{name:e.find(".chip-name").text()||e.data("id"),entityType:t.data("block-type")||"item"}}return null}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.events={bindEvents:function(){var t=this;this.$wrapper.on("click",".target-block-tab",function(i){i.preventDefault();var a=e(this).data("blockType");t.switchToBlock(a)}),this.$wrapper.on("click",".target-block-tab .tab-badge",function(i){i.stopPropagation(),i.preventDefault();var a=e(this).closest(".target-block-tab");e(this).hasClass("popover-open")?t.hidePreviewPopover():t.showPreviewPopover(a)}),this.$wrapper.on("click",".condition-match-count.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showConditionPreviewPopover(a)}),this.$wrapper.on("click",".group-count-badge.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showGroupPreviewPopover(a)}),e(document).on("click",function(i){e(i.target).closest(".target-preview-popover").length||e(i.target).closest(".tab-badge").length||e(i.target).closest(".condition-match-count").length||e(i.target).closest(".group-count-badge").length||e(i.target).closest(".group-modifiers").length||e(i.target).closest(".group-preview-badge").length||e(i.target).closest(".toggle-count.clickable").length||t.hidePreviewPopover()}),this.$wrapper.on("click",".condition-trait-header",function(i){if(!(e(i.target).closest(".target-block-tabs").length||e(i.target).closest(".trait-header-actions").length||e(i.target).closest(".prestashop-switch").length)){var a=t.$wrapper.find(".condition-trait-body");a.stop(!0,!0),a.is(":visible")?(a.slideUp(200),t.$wrapper.addClass("collapsed")):(a.slideDown(200),t.$wrapper.removeClass("collapsed"))}}),this.$wrapper.on("click",".group-header",function(i){e(i.target).closest(".btn-remove-group, .group-name-input").length||"single"!==t.$wrapper.data("mode")&&e(this).closest(".selection-group").toggleClass("collapsed")}),this.$wrapper.on("click",".trait-header-actions .btn-toggle-groups",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.attr("data-state")||"collapsed",r=t.config.trans||{};"collapsed"===s?(t.$wrapper.find(".selection-group").removeClass("collapsed"),a.attr("data-state","expanded"),a.attr("title",r.collapse_all||"Collapse all groups"),a.find("i").removeClass("icon-expand").addClass("icon-compress")):(t.$wrapper.find(".selection-group").addClass("collapsed"),a.attr("data-state","collapsed"),a.attr("title",r.expand_all||"Expand all groups"),a.find("i").removeClass("icon-compress").addClass("icon-expand"))}),this.$wrapper.on("change",".trait-show-all-toggle .show-all-checkbox",function(i){i.stopPropagation(),e(this).prop("checked")&&t.clearAllConditions()}),this.$wrapper.on("change",".target-switch-toggle",function(i){i.stopPropagation(),"1"===e(this).val()?(t.clearAllConditions(),t.$wrapper.find(".condition-trait-body").slideUp(200),t.$wrapper.addClass("collapsed")):(t.$wrapper.find(".condition-trait-body").slideDown(200),t.$wrapper.removeClass("collapsed"))}),this.$wrapper.on("click",".btn-add-group",function(i){i.preventDefault();var a=e(this).closest(".target-block"),s=a.data("blockType");t.addGroup(a,s)}),this.$wrapper.on("click",".btn-remove-group",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.removeGroup(a,s)}),this.$wrapper.on("click focus",".group-name-input",function(e){e.stopPropagation()}),this.$wrapper.on("change blur",".group-name-input",function(){var i=e(this),a=i.closest(".selection-group"),s=e.trim(i.val());a.attr("data-group-name",s),t.serializeAllBlocks()}),this.$wrapper.on("click",".btn-add-exclude",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.addFirstExcludeRow(a,s)}),this.$wrapper.on("click",".btn-add-another-exclude",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.addExcludeRow(a,s)}),this.$wrapper.on("click",".btn-remove-exclude-row",function(i){i.preventDefault();var a=e(this).closest(".exclude-row"),s=e(this).closest(".selection-group"),r=e(this).closest(".target-block");t.removeExcludeRow(a,s,r)}),this.$wrapper.on("change",".include-method-select",function(){t.hideDropdown();var i=e(this).closest(".selection-group"),a=e(this).closest(".target-block"),s=i.find(".group-include"),r=a.data("blockType"),n=(t.config.blocks[r]||{}).selection_methods||{},o=e(this).find("option:selected"),l=o.data("valueType")||"none",c=o.data("searchEntity")||"",d=o.data("options")||null,p=i.find(".include-picker"),u=t.buildValuePickerHtml("include",l,c,n);if(p.replaceWith(u),"select"===l&&d){var h=(f=i.find(".include-picker")).find(".select-value-input");h.empty(),e.each(d,function(e,i){h.append('")})}if("multi_select_tiles"===l&&d){var f=i.find(".include-picker"),v=!0===o.data("exclusive");t.populateTiles(f,d,v)}if("multi_numeric_range"===l){f=i.find(".include-picker");var m=o.data("step"),g=o.data("min");t.applyRangeInputConstraints(f,m,g)}"combination_attributes"===l&&(f=i.find(".include-picker"),t.loadCombinationAttributeGroups(f));var b=e(this).val();t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),b,r),t.updateBlockStatus(a),t.serializeAllBlocks(s)}),this.$wrapper.on("change",".exclude-method-select",function(){t.hideDropdown();var i=e(this).closest(".exclude-row"),a=(e(this).closest(".selection-group"),e(this).closest(".target-block").data("blockType")),s=(t.config.blocks[a]||{}).selection_methods||{},r=e(this).find("option:selected"),n=r.data("valueType")||"entity_search",o=r.data("searchEntity")||a,l=r.data("options")||null,c=i.find(".exclude-picker"),d=t.buildValuePickerHtml("exclude",n,o,s);if(c.replaceWith(d),"select"===n&&l){var p=(u=i.find(".exclude-picker")).find(".select-value-input");p.empty(),e.each(l,function(e,i){p.append('")})}if("multi_select_tiles"===n&&l){var u=i.find(".exclude-picker"),h=!0===r.data("exclusive");t.populateTiles(u,l,h)}if("multi_numeric_range"===n){u=i.find(".exclude-picker");var f=r.data("step"),v=r.data("min");t.applyRangeInputConstraints(u,f,v)}"combination_attributes"===n&&(u=i.find(".exclude-picker"),t.loadCombinationAttributeGroups(u));var m=e(this).val();t.updateMethodInfoPlaceholder(i.find(".exclude-header-row"),m,a),t.serializeAllBlocks(i)}),this.$wrapper.on("keydown",".pattern-input",function(t){13===t.keyCode&&(t.preventDefault(),e(this).closest(".draft-tag").find(".btn-add-pattern").click())}),this.$wrapper.on("click",".draft-tag .btn-add-pattern",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".draft-tag"),s=a.closest(".value-picker"),r=a.closest(".group-include, .exclude-row"),n=a.find(".pattern-input"),o=e.trim(n.val());if(o){var l="1"===a.attr("data-case-sensitive");t.addPatternTag(s,o,l),n.val("").focus(),a.find(".pattern-match-count").removeClass("count-found count-zero").hide(),a.find(".pattern-match-count .count-value").text(""),t.serializeAllBlocks(r)}}),this.$wrapper.on("input",".pattern-input",function(){var i=e(this),a=i.closest(".draft-tag");if(a.length){var s=e.trim(i.val());i.data("countTimeout")&&clearTimeout(i.data("countTimeout"));var r=a.find(".pattern-match-count");if(s){var n=setTimeout(function(){var e="1"===a.attr("data-case-sensitive");t.updateDraftTagCount(a,s,e)},300);i.data("countTimeout",n)}else{r.removeClass("count-found count-zero").hide(),r.find(".count-value").text("");var o=a.closest(".selection-group");o.length&&t.updateGroupTotalCount(o)}}}),this.$wrapper.on("click",".pattern-tag .btn-remove-pattern",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".group-include, .exclude-row");e(this).closest(".pattern-tag").remove(),t.serializeAllBlocks(a)}),this.$wrapper.on("click",".pattern-tag .btn-toggle-case",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".pattern-tag"),s=e(this),r=t.config.trans||{},n=a.hasClass("draft-tag"),o=!(1===a.data("caseSensitive")||"1"===a.data("caseSensitive")||"1"===a.attr("data-case-sensitive"));a.data("caseSensitive",o?1:0),a.attr("data-case-sensitive",o?"1":"0"),a.toggleClass("case-sensitive",o),s.find(".case-icon").text(o?"Aa":"aa");var l=o?r.case_sensitive||"Case sensitive - click to toggle":r.case_insensitive||"Case insensitive - click to toggle";if(s.attr("title",l),n){var c=e.trim(a.find(".pattern-input").val());c&&t.updateDraftTagCount(a,c,o)}else{var d=a.closest(".group-include, .exclude-row");t.serializeAllBlocks(d)}}),this.$wrapper.on("click",".pattern-match-count",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.data("count"),r=a.data("pattern"),n=a.data("entityType"),o=a.data("caseSensitive");!s||s<=0||!r||t.showPatternPreviewModal(r,n,o,s)}),this.$wrapper.on("click",".pattern-tag .pattern-tag-text",function(t){t.preventDefault();var i=e(this).closest(".pattern-tag");if(!i.hasClass("editing")){var a=i.data("pattern"),s=e('').val(a),r=e(''),n=e(''),o=e('').append(r,n);i.addClass("editing").find(".pattern-tag-text").hide(),i.find(".btn-remove-pattern").hide(),i.prepend(o).prepend(s),s.focus().select(),s.on("keydown",function(e){13===e.keyCode?(e.preventDefault(),r.click()):27===e.keyCode&&(e.preventDefault(),n.click())})}}),this.$wrapper.on("click",".pattern-tag .btn-pattern-save",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".pattern-tag"),s=a.find(".pattern-tag-edit"),r=a.data("pattern"),n=e.trim(s.val());n&&n!==r&&(a.data("pattern",n),a.find(".pattern-tag-text").text(n)),s.remove(),a.find(".pattern-edit-actions").remove(),a.removeClass("editing").find(".pattern-tag-text, .btn-remove-pattern").show();var o=a.closest(".group-include, .exclude-row");t.serializeAllBlocks(o)}),this.$wrapper.on("click",".pattern-tag .btn-pattern-cancel",function(t){t.preventDefault(),t.stopPropagation();var i=e(this).closest(".pattern-tag");i.find(".pattern-tag-edit").remove(),i.find(".pattern-edit-actions").remove(),i.removeClass("editing").find(".pattern-tag-text, .btn-remove-pattern").show()}),this.$wrapper.on("mouseenter",".mpr-info-wrapper[data-details]",function(){var t=e(this);if(!t.data("tooltip-active")){var i=t.attr("data-details"),a=t.attr("data-tooltip-class")||"",s=e("
",{class:"mpr-tooltip mpr-tooltip-fixed "+a,html:i});e("body").append(s),t.data("tooltip-active",!0);var r=t.offset(),n=t.outerWidth(),o=s.outerWidth(),l=s.outerHeight(),c=r.left+n/2-o/2,d=r.top-l-10;c<10&&(c=10),c+o>e(window).width()-10&&(c=e(window).width()-o-10),s.css({position:"fixed",left:c+"px",top:d-e(window).scrollTop()+"px"}),t.data("tooltip-el",s)}}),this.$wrapper.on("mouseleave",".mpr-info-wrapper[data-details]",function(){var t=e(this),i=t.data("tooltip-el");i&&i.remove(),t.data("tooltip-active",!1),t.data("tooltip-el",null)}),this.$wrapper.on("change",".range-min-input, .range-max-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("change",".date-from-input, .date-to-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("change",".select-value-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("click",".btn-add-range",function(i){i.preventDefault();var a=e(this).closest(".value-picker"),s=e(this).closest(".group-include, .exclude-row"),r=a.find(".multi-range-container"),n=r.find(".multi-range-chips"),o=r.find(".range-min-input"),l=r.find(".range-max-input"),c=o.val().trim(),d=l.val().trim();if(""!==c||""!==d){var p=parseFloat(o.attr("step"))||.01,u=o.attr("min"),h=void 0!==u&&""!==u;u=h?parseFloat(u):null;var f=""!==c?parseFloat(c):null,v=""!==d?parseFloat(d):null;if(h){if(null!==f&&fv)t.showRangeInputError(o,t.config.trans.min_greater_than_max||"Min cannot be greater than max");else{var m,g=p<1?String(p).split(".")[1].length:0;null!==f&&(f=p>=1?Math.round(f):parseFloat(f.toFixed(g)),c=String(f)),null!==v&&(v=p>=1?Math.round(v):parseFloat(v.toFixed(g)),d=String(v)),m=""!==c&&""!==d?c+" - "+d:""!==c?"≥ "+c:"≤ "+d;var b=e("",{class:"range-chip","data-min":c,"data-max":d});b.append(e("",{class:"range-chip-text",text:m})),b.append(e("",i+='",i+='
',i+='",i+='",i+='",i+="
",i+='
',i+='',i+='',i+='',i+="
",i+='",i+='",i+="
",i+="
",i+='
',i+='
',i+='",i+='",i+='
',i+=''+(t.price||"Price")+":",i+='',i+='-',i+='',i+="
",i+='",i+="
",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+="
",i+='
',i+='',i+=''+(t.product||"Product")+"",i+=''+(t.price||"Price")+"",i+=''+(t.sale||"Sale")+"",i+=''+(t.stock||"Stock")+"",i+=''+(t.sold||"Sold")+"",i+="
",i+='',i+='",i+="
",this.$dropdown=e(i),e("body").append(this.$dropdown)},hideDropdown:function(){this.$dropdown&&this.$dropdown.removeClass("show"),this.activeGroup=null},positionDropdown:function(t){if(this.$dropdown){var i=t.closest(".value-picker"),a=t.closest(".entity-search-box"),s=a.offset(),r=a.outerHeight(),n=i.offset(),o=i.outerWidth(),l=s.top+r+4,c=n.left,d=Math.max(o,400),p=e(window).width();c+d>p-10&&(d=p-c-10);var u=e(window).height()-(l-e(window).scrollTop())-20;u=Math.max(u,400),this.$dropdown.css({position:"absolute",top:l,left:c,width:d,maxHeight:u,zIndex:1e4})}}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.search={categoryTreeCache:null,performSearch:function(t){var i=this;if(this.activeGroup){this.isLoading=!0;var a=this.activeGroup.searchEntity,s=t&&this.loadMoreCount?this.loadMoreCount:20,r={ajax:1,action:"searchTargetEntities",trait:"EntitySelector",entity_type:a,q:this.searchQuery,limit:s,offset:t?this.searchOffset:0,sort_by:this.currentSort?this.currentSort.field:"name",sort_dir:this.currentSort?this.currentSort.dir:"ASC"};this.refineQuery&&(r.refine=this.refineQuery,this.refineNegate&&(r.refine_negate=1)),"products"===a&&this.filters&&(this.filters.inStock&&(r.filter_in_stock=1),this.filters.discounted&&(r.filter_discounted=1),null!==this.filters.priceMin&&""!==this.filters.priceMin&&(r.filter_price_min=this.filters.priceMin),null!==this.filters.priceMax&&""!==this.filters.priceMax&&(r.filter_price_max=this.filters.priceMax),this.filters.attributes&&this.filters.attributes.length>0&&(r.filter_attributes=JSON.stringify(this.filters.attributes)),this.filters.features&&this.filters.features.length>0&&(r.filter_features=JSON.stringify(this.filters.features))),"products"!==a&&this.filters&&(null!==this.filters.productCountMin&&""!==this.filters.productCountMin&&(r.filter_product_count_min=this.filters.productCountMin),null!==this.filters.productCountMax&&""!==this.filters.productCountMax&&(r.filter_product_count_max=this.filters.productCountMax),"categories"===a&&(this.filters.depth&&(r.filter_depth=this.filters.depth),this.filters.hasProducts&&(r.filter_has_products=1),this.filters.hasDescription&&(r.filter_has_description=1),this.filters.hasImage&&(r.filter_has_image=1),null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.activeOnly&&(r.filter_active=1)),"manufacturers"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.dateAddFrom&&(r.filter_date_add_from=this.filters.dateAddFrom),this.filters.dateAddTo&&(r.filter_date_add_to=this.filters.dateAddTo),this.filters.lastProductFrom&&(r.filter_last_product_from=this.filters.lastProductFrom),this.filters.lastProductTo&&(r.filter_last_product_to=this.filters.lastProductTo),this.filters.activeOnly&&(r.filter_active=1)),"suppliers"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.dateAddFrom&&(r.filter_date_add_from=this.filters.dateAddFrom),this.filters.dateAddTo&&(r.filter_date_add_to=this.filters.dateAddTo),this.filters.lastProductFrom&&(r.filter_last_product_from=this.filters.lastProductFrom),this.filters.lastProductTo&&(r.filter_last_product_to=this.filters.lastProductTo),this.filters.activeOnly&&(r.filter_active=1)),"attributes"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.attributeGroup&&(r.filter_attribute_group=this.filters.attributeGroup),this.filters.isColor&&(r.filter_is_color=1)),"features"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.featureGroup&&(r.filter_feature_group=this.filters.featureGroup),this.filters.isCustom&&(r.filter_is_custom=1)),"cms"===a&&(this.filters.activeOnly&&(r.filter_active=1),this.filters.indexable&&(r.filter_indexable=1)),"cms_categories"===a&&this.filters.activeOnly&&(r.filter_active=1)),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:r,success:function(e){i.isLoading=!1,e.success&&(i.searchQuery&&i.searchQuery.length>=2&&e.total>0&&i.addToSearchHistory(a,i.searchQuery),i.searchResults=t?i.searchResults.concat(e.results||[]):e.results||[],i.searchTotal=e.total||0,i.searchOffset=t?i.searchOffset+(e.results||[]).length:(e.results||[]).length,i.renderSearchResults(t),i.$dropdown.addClass("show"))},error:function(){i.isLoading=!1}})}},renderSearchResults:function(t){var i=this,a=this.config.trans||{},s=this.$dropdown.find(".dropdown-results"),r=[],n=[];if(this.activeGroup){var o=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]'),l=this.activeGroup.searchEntity,c=this.activeGroup.excludeIndex;"include"===this.activeGroup.section?o.find(".include-picker").find(".entity-chip").each(function(){r.push(String(e(this).data("id")))}):(o.find('.exclude-row[data-exclude-index="'+c+'"]').find(".exclude-picker").find(".entity-chip").each(function(){r.push(String(e(this).data("id")))}),o.find(".exclude-row").each(function(){var t=e(this);if(parseInt(t.data("excludeIndex"),10)!==c){var a=t.find(".exclude-picker");(a.attr("data-search-entity")||i.activeGroup.blockType)===l&&a.find(".entity-chip").each(function(){n.push(String(e(this).data("id")))})}}))}var d=this.activeGroup&&"products"===this.activeGroup.searchEntity,p="list"===this.viewMode;this.$dropdown.find(".results-header").toggle(d&&p);var u=this.searchResults.filter(function(e){return-1===n.indexOf(String(e.id))}),h=this.searchResults.length-u.length,f=u.length+" / "+this.searchTotal+" results";h>0&&(f+=" ("+h+" hidden)"),this.$dropdown.find(".results-count").text(f);var v="";0!==u.length||t?u.forEach(function(e){var t="dropdown-item"+(-1!==r.indexOf(String(e.id))?" selected":"");if("product"===e.type&&(t+=" result-item-product"),v+='
';else{var a="icon-cube",s=i.activeGroup?i.activeGroup.searchEntity:null;"categories"===s?a="icon-folder":"manufacturers"===s?a="icon-building":"suppliers"===s?a="icon-truck":"attributes"===s?a="icon-paint-brush":"features"===s?a="icon-list-ul":"cms"===s?a="icon-file-text-o":"cms_categories"===s&&(a="icon-folder-o"),v+='
'}if(v+='
',v+='
'+i.escapeHtml(e.name)+"
",e.subtitle){var n=e.subtitle.split("\n");v+='
',n.forEach(function(e,t){v+='
'+i.escapeHtml(e)+"
"}),v+="
"}if(v+="
","product"===e.type&&p){v+='
',v+=''+(e.regular_price_formatted||e.price_formatted||"")+"",v+="
",e.has_discount?(v+='
',v+=''+(e.price_formatted||"")+"",v+="
"):v+='
';var o="out_of_stock"===e.stock_status?"stock-out":"low_stock"===e.stock_status?"stock-low":"stock-ok";v+='
',v+=''+(void 0!==e.stock_qty?e.stock_qty:"")+"",v+="
",v+='
',v+=''+(void 0!==e.sales_qty?e.sales_qty:"0")+"",v+="
"}v+=""}):v='
'+(a.no_results||"No results found")+"
",t?s.append(v):s.html(v);var m=this.searchResults.length'+(a.all||"All")+" ("+b+")")}this.$dropdown.find(".dropdown-actions").show(),this.$dropdown.find(".btn-show-history").removeClass("active");var x=this.activeGroup?this.activeGroup.searchEntity:null,_=x&&this.getSearchHistory(x).length>0;this.$dropdown.find(".btn-show-history").prop("disabled",!_)},loadCategoryTree:function(){var t=this,i=this.$dropdown.find(".dropdown-results"),a=this.activeGroup?this.activeGroup.searchEntity:"categories";this.$dropdown.addClass("show"),i.html('
Loading category tree...
');var s=a+"TreeCache";this[s]?this.renderCategoryTree(this[s],a):e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getCategoryTree",trait:"EntitySelector",entity_type:a},success:function(e){e.success&&e.categories?(t[s]=e.categories,t.renderCategoryTree(e.categories,a)):i.html('
Failed to load category tree
')},error:function(e,t,a){i.html('
Error loading category tree
')}})},renderCategoryTree:function(t,i){var a=this,s=this.config.trans||{},r=this.$dropdown.find(".dropdown-results"),n="cms_categories"===i,o=n?"CMS categories":"categories",l=[];if(this.activeGroup){var c=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]');"include"===this.activeGroup.section?c.find(".include-picker").find(".entity-chip").each(function(){l.push(parseInt(e(this).data("id"),10))}):c.find('.exclude-row[data-exclude-index="'+this.activeGroup.excludeIndex+'"]').find(".exclude-picker").find(".entity-chip").each(function(){l.push(parseInt(e(this).data("id"),10))})}var d='
';d+='
';var p=t.length>0?t[0].level:1;t.forEach(function(e){var t=-1!==l.indexOf(e.id),i=20*(e.level-p),r=e.has_children;d+='
',d+=r?'':'';var o="single"===a.config.mode;r&&!o?(d+='"):o||(d+=''),d+='',d+='',d+='
',d+=''+a.escapeHtml(e.name)+"",d+=''+a.escapeHtml(e.subtitle)+"",d+="
",d+="
"}),d+="
",d+="
",r.html(d);var u=r.find(".tree-item.selected").length;this.$dropdown.find(".results-count").text(t.length+" "+o+(u>0?" ("+u+" selected)":""));var h=r.find(".tree-item");this.updateSelectChildrenButtons(h),this.$dropdown.find(".load-more-controls").hide()},filterCategoryTree:function(t){var i=this,a=this.$dropdown.find(".category-tree");if(a.length){var s=a.find(".tree-item");if(!(t=t.toLowerCase().trim()))return s.show().removeClass("collapsed"),void a.find(".tree-toggle i").removeClass("icon-caret-right").addClass("icon-caret-down");var r=[],n=[];s.each(function(){var a=e(this);if(-1!==(a.data("name")||"").toLowerCase().indexOf(t)){r.push(a.data("id"));for(var o=i.findTreeAncestors(a,s),l=0;l0?" ("+l+" selected)":""))}},findTreeDescendants:function(t,i){var a=parseInt(t.data("nleft"),10),s=parseInt(t.data("nright"),10),r=parseInt(t.data("id"),10),n=[];if(a>0&&s>0&&s>a)i.each(function(){var t=e(this),i=parseInt(t.data("nleft"),10),r=parseInt(t.data("nright"),10);i>a&&r0;){var c=o.shift();l[c]||(l[c]=!0,i.each(function(){var t=e(this),i=parseInt(t.data("parent-id"),10),a=parseInt(t.data("id"),10);i!==c||l[a]||(n.push(t),o.push(a))}))}return n},findTreeAncestors:function(t,i){var a=parseInt(t.data("nleft"),10),s=parseInt(t.data("nright"),10),r=[];if(a>0&&s>0)i.each(function(){var t=e(this),i=parseInt(t.data("nleft"),10),n=parseInt(t.data("nright"),10);is&&r.push(t)});else for(var n=parseInt(t.data("parent-id"),10),o={};n>0&&!o[n];)o[n]=!0,i.each(function(){var t=e(this);if(parseInt(t.data("id"),10)===n)return r.push(t),n=parseInt(t.data("parent-id"),10),!1});return r},updateSelectChildrenButtons:function(t){var i=this,a=this.config.trans||{};t.filter(".has-children").each(function(){var s=e(this),r=s.find(".btn-select-children");if(r.length){for(var n=i.findTreeDescendants(s,t),o=s.hasClass("selected"),l=0;l0?(r.find("i").removeClass("icon-plus-square").addClass("icon-minus-square"),r.attr("title",a.deselect_with_children||"Deselect with all children")):(r.find("i").removeClass("icon-minus-square").addClass("icon-plus-square"),r.attr("title",a.select_with_children||"Select with all children"))}})},loadSearchHistory:function(){try{var e=localStorage.getItem(this.searchHistoryKey);this.searchHistory=e?JSON.parse(e):{}}catch(e){this.searchHistory={}}},saveSearchHistory:function(){try{localStorage.setItem(this.searchHistoryKey,JSON.stringify(this.searchHistory))}catch(e){}},addToSearchHistory:function(e,t){if(t&&!(t.length<2)){this.searchHistory[e]||(this.searchHistory[e]=[]);var i=this.searchHistory[e],a=i.indexOf(t);-1!==a&&i.splice(a,1),i.unshift(t),i.length>this.searchHistoryMax&&(i=i.slice(0,this.searchHistoryMax)),this.searchHistory[e]=i,this.saveSearchHistory()}},removeFromSearchHistory:function(e,t){if(this.searchHistory[e]){var i=this.searchHistory[e].indexOf(t);-1!==i&&(this.searchHistory[e].splice(i,1),this.saveSearchHistory())}},getSearchHistory:function(e){return this.searchHistory[e]||[]},showSearchHistory:function(e){var t=this.getSearchHistory(e),i=this.config.trans||{},a=this.$dropdown.find(".dropdown-results");if(this.$dropdown.find(".results-count").text(i.recent_searches||"Recent searches"),this.$dropdown.find(".dropdown-actions").hide(),this.$dropdown.find(".filter-panel").removeClass("show"),this.$dropdown.find(".btn-toggle-filters").removeClass("active"),this.$dropdown.find(".results-header").hide(),t.length){for(var s='
',r=0;r',s+='',s+=''+this.escapeHtml(n)+"",s+='",s+="
"}s+="",a.html(s),this.$dropdown.addClass("show")}else this.performSearch()},refreshSearch:function(){"tree"!==this.viewMode?(this.searchOffset=0,this.loadMoreCount=20,this.$dropdown&&(this.$dropdown.find(".load-more-select").val("20"),this.$dropdown.find('.load-more-select option[data-all="true"]').remove()),this.performSearch(!1)):this.filterCategoryTree(this.searchQuery||"")},clearFilters:function(){if(this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown){var e=this.config.trans||{};this.$dropdown.find(".refine-input").val("").attr("placeholder",e.refine_short||"Refine..."),this.$dropdown.find(".btn-clear-refine").hide(),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min").val(""),this.$dropdown.find(".filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip").removeClass("active"),this.$dropdown.find(".filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-group-toggle").removeClass("active has-selection"),this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-turnover-min, .filter-turnover-max").val(""),this.$dropdown.find(".filter-date-add-from, .filter-date-add-to").val(""),this.$dropdown.find(".filter-last-product-from, .filter-last-product-to").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-has-description").prop("checked",!1),this.$dropdown.find(".filter-has-image").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0),this.$dropdown.find(".filter-attribute-group-select, .filter-feature-group-select").val("")}this.refreshSearch()},resetFiltersWithoutSearch:function(){if(this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown){var e=this.config.trans||{};this.$dropdown.find(".refine-input").val("").attr("placeholder",e.refine_short||"Refine..."),this.$dropdown.find(".btn-clear-refine").hide(),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min").val(""),this.$dropdown.find(".filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip").removeClass("active"),this.$dropdown.find(".filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-group-toggle").removeClass("active has-selection"),this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-turnover-min, .filter-turnover-max").val(""),this.$dropdown.find(".filter-date-add-from, .filter-date-add-to").val(""),this.$dropdown.find(".filter-last-product-from, .filter-last-product-to").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-has-description").prop("checked",!1),this.$dropdown.find(".filter-has-image").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0),this.$dropdown.find(".filter-attribute-group-select, .filter-feature-group-select").val("")}},updateFilterPanelForEntity:function(e){if(this.$dropdown){var t=this.$dropdown.find(".filter-panel");t.find(".filter-row").hide();var i=this.$dropdown.find(".view-mode-select option.tree-view-option");"categories"===e||"cms_categories"===e?(i.prop("disabled",!1).prop("hidden",!1),"tree"!==this.viewMode?(this.viewMode="tree",this.$dropdown.find(".view-mode-select").val("tree"),this.$dropdown.removeClass("view-list view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8").addClass("view-tree"),this.loadCategoryTree()):this.loadCategoryTree()):(i.prop("disabled",!0).prop("hidden",!0),"tree"===this.viewMode&&(this.viewMode="list",this.$dropdown.find(".view-mode-select").val("list"),this.$dropdown.removeClass("view-tree").addClass("view-list"))),"products"===e?(t.find(".filter-row-quick").show(),this.filterableData&&(this.filterableData.attributes&&this.filterableData.attributes.length>0&&this.$dropdown.find(".filter-row-attributes").show(),this.filterableData.features&&this.filterableData.features.length>0&&this.$dropdown.find(".filter-row-features").show())):"categories"===e?t.find(".filter-row-entity-categories").show():"manufacturers"===e?t.find(".filter-row-entity-manufacturers").show():"suppliers"===e?t.find(".filter-row-entity-suppliers").show():"attributes"===e?(t.find(".filter-row-entity-attributes").show(),this.loadAttributeGroups()):"features"===e?t.find(".filter-row-entity-features").show():"cms"===e?t.find(".filter-row-entity-cms").show():"cms_categories"===e&&t.find(".filter-row-entity-cms-categories").show()}},loadAttributeGroups:function(){var t=this,i=this.$dropdown.find(".filter-attribute-group-select");i.find("option").length>1||e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getAttributeGroups",trait:"EntitySelector"},success:function(a){a.success&&a.groups&&e.each(a.groups,function(e,a){i.append('")})}})},loadFeatureGroups:function(){var t=this,i=this.$dropdown.find(".filter-feature-group-select");i.find("option").length>1||e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getFeatureGroups",trait:"EntitySelector"},success:function(a){a.success&&a.groups&&e.each(a.groups,function(e,a){i.append('")})}})}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.filters={clearFilters:function(){this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown&&(this.config.trans,this.$dropdown.find(".refine-input").val(""),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min, .filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip, .filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0)),this.refreshSearch()},resetFiltersWithoutSearch:function(){this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null}},updateFilterPanelForEntity:function(e){if(this.$dropdown){var t=this.$dropdown.find(".filter-panel");t.find(".filter-row").hide(),t.find('.filter-row[data-entity="'+e+'"]').show(),t.find(".filter-row-entity-"+e.replace("_","-")).show();var i=this.$dropdown.find(".tree-view-option");"categories"===e||"cms_categories"===e?i.prop("disabled",!1).show():i.prop("disabled",!0).hide()}},loadFilterableData:function(){var t=this;this.filterableData?this.renderFilterDropdowns():e.ajax({url:this.config.ajaxUrl,type:"POST",data:{ajax:1,action:"getTargetFilterableAttributes",trait:"EntitySelector"},dataType:"json",success:function(e){e.success&&e.data&&(t.filterableData=e.data,t.renderFilterDropdowns())}})},renderFilterDropdowns:function(){if(this.$dropdown&&this.filterableData){var e=this,t=this.$dropdown.find(".filter-attributes-container");t.empty(),this.filterableData.attributes&&this.filterableData.attributes.length>0&&(this.filterableData.attributes.forEach(function(i){var a='",t.append(a)}),this.$dropdown.find(".filter-row-attributes").show());var i=this.$dropdown.find(".filter-features-container");i.empty(),this.filterableData.features&&this.filterableData.features.length>0&&(this.filterableData.features.forEach(function(t){var a='",i.append(a)}),this.$dropdown.find(".filter-row-features").show())}},showFilterGroupValues:function(e,t){if(this.filterableData){var i=this,a=("attribute"===t?this.filterableData.attributes:this.filterableData.features).find(function(t){return t.id==e});if(a){this.$dropdown.find(".filter-row-values").hide();var s="attribute"===t?".filter-row-attr-values":".filter-row-feat-values",r=this.$dropdown.find(s),n=r.find(".filter-values-container");n.empty();var o=''+a.name+":";a.values.forEach(function(a){var s=("attribute"===t?-1!==i.filters.attributes.indexOf(a.id):-1!==i.filters.features.indexOf(a.id))?" active":"",r="attribute"===t?"filter-attr-chip":"filter-feat-chip",n=a.color?' style="--chip-color: '+a.color+'"':"",l=a.color?" has-color":"";o+='"}),n.html(o),r.find(".btn-close-values").remove(),r.append(''),r.show();var l=r[0];l&&l.scrollIntoView({behavior:"smooth",block:"nearest"})}}},hideFilterGroupValues:function(){this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-group-toggle").removeClass("active")},updateFilterToggleStates:function(){if(this.$dropdown&&this.filterableData){var e=this;this.filterableData.attributes&&this.filterableData.attributes.forEach(function(t){var i=e.$dropdown.find('.filter-group-toggle[data-group-id="'+t.id+'"][data-type="attribute"]'),a=t.values.some(function(t){return-1!==e.filters.attributes.indexOf(t.id)});i.toggleClass("has-selection",a)}),this.filterableData.features&&this.filterableData.features.forEach(function(t){var i=e.$dropdown.find('.filter-group-toggle[data-group-id="'+t.id+'"][data-type="feature"]'),a=t.values.some(function(t){return-1!==e.filters.features.indexOf(t.id)});i.toggleClass("has-selection",a)})}}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.chips={addSelection:function(e,t,i,a){this.addSelectionNoUpdate(e,t,i,a);var s=e.find(".entity-chips");this.updateChipsVisibility(s)},addSelectionNoUpdate:function(e,t,i,a){var s=e.find(".entity-chips"),r=e.closest(".target-block");if("single"===(this.config.mode||"multi")?(this.$wrapper.find(".entity-chips .entity-chip").remove(),this.$dropdown&&this.$dropdown.find(".dropdown-item.selected, .tree-item.selected").removeClass("selected"),this.$wrapper.find(".target-block-tab .tab-badge").remove(),this.$wrapper.find(".target-block-tab").removeClass("has-data")):"single"===(r.data("mode")||"multi")&&(s.find(".entity-chip").remove(),this.$dropdown&&this.$dropdown.find(".dropdown-item.selected, .tree-item.selected").removeClass("selected")),!s.find('.entity-chip[data-id="'+t+'"]').length){var n='';a&&a.image&&(n+=''),n+=''+this.escapeHtml(i)+"",n+='',n+="",s.append(n)}},removeSelection:function(e,t){var i=e.find(".entity-chips");e.find('.entity-chip[data-id="'+t+'"]').remove(),this.updateChipsVisibility(i)},updateChipsVisibility:function(t){var i=this,a=t.find(".entity-chip"),s=a.length,r=t.find(".chips-show-more-toggle"),n=t.hasClass("chips-expanded"),o=this.config.trans||{};if(r.remove(),s<=this.maxVisibleChips)return a.removeClass("chip-hidden"),void t.removeClass("chips-expanded chips-collapsed");var l=s-this.maxVisibleChips;if(n){a.removeClass("chip-hidden");var c=o.show_less||"Show less";t.append(' '+c+"")}else{a.each(function(t){t>=i.maxVisibleChips?e(this).addClass("chip-hidden"):e(this).removeClass("chip-hidden")});var d=(o.show_more||"Show {count} more").replace("{count}",l);t.addClass("chips-collapsed").removeClass("chips-expanded"),t.append(' '+d+"")}},loadExistingSelections:function(){var t=this,i={};this.$wrapper.find(".selection-group").each(function(){var a=e(this),s=a.closest(".target-block").data("blockType"),r=a.find(".include-picker");t.collectPickerEntities(r,s,i),t.enhanceMethodSelect(a.find(".include-method-select")),a.find(".exclude-row").each(function(){var a=e(this);t.collectPickerEntities(a.find(".exclude-picker"),s,i),t.enhanceMethodSelect(a.find(".exclude-method-select"))}),a.find(".group-excludes.has-excludes").length>0&&t.updateMethodSelectorLock(a,!0)}),Object.keys(i).forEach(function(a){var s=i[a];if(0!==s.ids.length){var r=s.ids.filter(function(e,t,i){return i.indexOf(e)===t});e.ajax({url:t.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getTargetEntitiesByIds",trait:"EntitySelector",entity_type:a,ids:JSON.stringify(r)},success:function(e){if(e.success&&e.entities){var i={};e.entities.forEach(function(e){i[e.id]=e}),s.pickers.forEach(function(e){var a=e.$picker,s=a.find(".entity-chips"),r=a.find(".include-values-data, .exclude-values-data"),n=[];e.ids.forEach(function(e){var a=s.find('.entity-chip-loading[data-id="'+e+'"]');if(i[e]){var r=i[e];n.push(r.id);var o='';r.image&&(o+=''),o+=''+t.escapeHtml(r.name)+"",o+='',o+="",a.replaceWith(o)}else a.remove()}),t.updateChipsVisibility(s),n.length!==e.ids.length&&(r.val(JSON.stringify(n)),t.serializeAllBlocks()),t.updateBlockStatus(a.closest(".target-block"))})}}})}})},collectPickerEntities:function(t,i,a){if(t.length){var s=this,r=t.find(".include-values-data, .exclude-values-data");if(r.length){var n=t.attr("data-value-type"),o=r.val()||"[]",l=[];try{l=JSON.parse(o)}catch(e){return}if("multi_numeric_range"!==n)if("multi_select_tiles"!==n){if("combination_attributes"===n)return"object"!=typeof l||null===l||0===Object.keys(l).length||r.val(JSON.stringify(l)),void s.loadCombinationAttributeGroups(t);if(l.length)if("pattern"!==n){var c=t.attr("data-search-entity")||i,d=t.find(".entity-chips"),p=this.getEntityTypeIcon(c);l.forEach(function(e){var t='';t+='',t+='Loading...',t+="",d.append(t)}),a[c]||(a[c]={ids:[],pickers:[]}),a[c].ids=a[c].ids.concat(l),a[c].pickers.push({$picker:t,ids:l})}else l.forEach(function(e){"string"==typeof e&&e?s.addPatternTag(t,e,!1):e&&e.pattern&&s.addPatternTag(t,e.pattern,!0===e.caseSensitive)})}else{if(!Array.isArray(l)||0===l.length)return;l.forEach(function(e){t.find('.tile-option[data-value="'+e+'"]').addClass("selected")})}else{if(!Array.isArray(l)||0===l.length)return;var u=t.find(".multi-range-chips");l.forEach(function(t){if(t&&(null!==t.min||null!==t.max)){var i;i=null!==t.min&&null!==t.max?t.min+" - "+t.max:null!==t.min?"≥ "+t.min:"≤ "+t.max;var a=e("",{class:"range-chip","data-min":null!==t.min?t.min:"","data-max":null!==t.max?t.max:""});a.append(e("",{class:"range-chip-text",text:i})),a.append(e("",o+=''+this.escapeHtml(t)+"",o+='',o+="",s.append(o)},getPatternTags:function(t){var i=[];return t.find(".pattern-tag:not(.draft-tag)").each(function(){var t=e(this).data("pattern"),a=1===e(this).data("caseSensitive")||"1"===e(this).data("caseSensitive");t&&i.push({pattern:t,caseSensitive:a})}),i},updateDraftTagCount:function(t,i,a){var s=this,r=t.find(".pattern-match-count"),n=r.find(".count-value"),o=t.closest(".target-block").data("blockType")||"products";n.html(''),r.show(),r.data("pattern",i),r.data("caseSensitive",a),r.data("entityType",o),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countPatternMatches",trait:"EntitySelector",pattern:i,field:"name",entity_type:o,case_sensitive:a?1:0},success:function(e){if(e.success){var i=parseInt(e.count,10)||0;n.text(i),r.show(),r.removeClass("count-zero count-found"),r.addClass(0===i?"count-zero":"count-found"),r.data("count",i);var a=t.closest(".selection-group");a.length&&s.updateGroupTotalCount(a)}else n.text("?"),r.show()},error:function(){n.text("?"),r.show()}})},updateConditionCountWithPendingPattern:function(t,i){this.config.trans;var a=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count").first();if(a.length){var s=t.hasClass("exclude-row"),r=(s?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(r){var n=s?t.find(".exclude-picker"):t.find(".include-picker");if("pattern"===(n.data("valueType")||"none")){var o=this.getPatternTags(n);if(i&&o.push({pattern:i,caseSensitive:!1}),0!==o.length){var l=t.closest(".target-block").data("blockType")||"products";a.find(".preview-count").html(''),a.removeClass("clickable no-matches").show(),a.data("conditionData",{method:r,values:o,blockType:l,isExclude:s}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:r,values:JSON.stringify(o),block_type:l},success:function(e){if(e&&e.success){var t=e.count||0;a.removeClass("no-matches clickable"),0===t?(a.find(".preview-count").text(t),a.addClass("no-matches").show()):(a.find(".preview-count").text(t),a.addClass("clickable").show())}else a.hide().removeClass("clickable")},error:function(){a.hide().removeClass("clickable")}})}else a.hide()}}else a.hide()}},fetchPatternMatchCount:function(t,i,a){var s=t.closest(".exclude-row"),r=-1!==((s.length?s.find(".exclude-method-select"):t.closest(".selection-group").find(".include-method-select")).val()||"").indexOf("reference")?"reference":"name",n=t.closest(".target-block").data("blockType")||"products";a.find(".preview-count").html(''),a.removeClass("clickable no-matches").show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countPatternMatches",trait:"EntitySelector",pattern:i,field:r,entity_type:n,case_sensitive:0},success:function(e){if(e&&e.success){var t=e.count||0;a.find(".preview-count").text(t),a.removeClass("no-matches clickable").show(),0===t?a.addClass("no-matches"):a.addClass("clickable")}else a.hide()},error:function(){a.hide()}})},getPickerValues:function(t,i){switch(i){case"entity_search":var a=[];return t.find(".entity-chip").each(function(){var t=e(this).data("id");t&&a.push(t)}),a;case"pattern":var s=this.getPatternTags(t),r=t.find(".draft-tag .pattern-input"),n=e.trim(r.val());if(n){var o="1"===r.closest(".draft-tag").attr("data-case-sensitive");s.push({pattern:n,caseSensitive:o})}return s;case"numeric_range":return{min:t.find(".range-min-input").val()||null,max:t.find(".range-max-input").val()||null};case"date_range":return{from:t.find(".date-from-input").val()||null,to:t.find(".date-to-input").val()||null};case"select":return[t.find(".select-value-input").val()];case"boolean":return[!0];default:return[]}},updateConditionCount:function(t){this.config.trans;var i=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count").first();if(i.length){var a=t.hasClass("exclude-row"),s=(a?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(s){var r=a?t.find(".exclude-picker"):t.find(".include-picker"),n=r.data("valueType")||"none",o=this.getPickerValues(r,n),l=!o||Array.isArray(o)&&0===o.length||"object"==typeof o&&!Array.isArray(o)&&("combination_attributes"===n&&void 0!==o.attributes&&0===Object.keys(o.attributes).length||"combination_attributes"!==n&&0===Object.keys(o).length);if("none"!==n&&"boolean"!==n&&l)i.hide();else{var c=t.closest(".target-block").data("blockType")||"products";i.find(".preview-count").html(''),i.removeClass("clickable no-matches").show(),i.data("conditionData",{method:s,values:o,blockType:c,isExclude:a}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:s,values:JSON.stringify(o),block_type:c},success:function(e){if(e&&e.success){var t=e.count||0;i.removeClass("no-matches clickable"),0===t?(i.find(".preview-count").text(t),i.addClass("no-matches").show()):(i.find(".preview-count").text(t),i.addClass("clickable").show())}else i.hide().removeClass("clickable")},error:function(){i.hide().removeClass("clickable")}})}}else i.hide()}},updateGroupCounts:function(t){var i=this,a=t.find(".group-include");a.length&&this.updateConditionCount(a),t.find(".exclude-row").each(function(){i.updateConditionCount(e(this))}),this.updateGroupTotalCount(t)},updateGroupTotalCount:function(t){var i=t.closest(".target-block").data("blockType")||"products",a=t.find(".group-header .group-count-badge"),s=t.find(".group-modifier-limit"),r=this.serializeGroup(t,i);if(!r.include||!r.include.method)return a.hide(),void s.attr("placeholder","–");a.html('').show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countGroupItems",trait:"EntitySelector",group_data:JSON.stringify(r),block_type:i},success:function(e){if(e&&e.success){var n=e.final_count||0,o=e.exclude_count||0,l=' '+n;o>0&&(l+=' (-'+o+")"),a.html(l),a.addClass("clickable").show(),a.data("groupData",r),a.data("blockType",i),a.data("finalCount",n),s.attr("placeholder",n);var c=t.find(".group-preview-badge .preview-count");if(c.length){var d=parseInt(s.val(),10),p=d>0&&dn&&(n=t)});var o=n+1,l=this.buildMethodOptions(r,!1),c=(this.buildMethodOptions(r,!0),'
');c+='
',c+='',c+='',c+='',c+='',c+="",c+='",c+="
",c+='
',c+='
',c+='
',c+='
',c+='",c+=' 0',c+='',c+="
",c+='",c+="
",c+="
",c+='
',c+='",c+="
",c+='
',c+='',c+=''+(s.limit||"Limit")+"",c+='',c+="",c+='',c+=''+(s.sort||"Sort")+"",c+='",c+='",c+="",c+='',c+=' ',c+="",c+="
",c+="
",c+="
",a.append(c);var d=a.find('.selection-group[data-group-index="'+o+'"]');this.enhanceMethodSelect(d.find(".include-method-select")),d.find(".include-method-select").val("all").trigger("change"),this.updateBlockStatus(t),this.serializeAllBlocks()},removeGroup:function(e,t){e.remove();var i=t.find(".groups-container");if(0===i.find(".selection-group").length){var a='
';a+=''+this.getEmptyStateText(t)+"",a+="
",i.html(a)}this.updateBlockStatus(t),this.serializeAllBlocks(),this.updateTabBadges()},clearAllConditions:function(){var t=this;this.$wrapper.find(".target-block").each(function(){var i=e(this),a=i.find(".groups-container");a.find(".selection-group").remove();var s='
';s+=''+t.getEmptyStateText(i)+"",s+="
",a.html(s),t.updateBlockStatus(i)}),this.serializeAllBlocks(),this.updateTabBadges(),this.updateHeaderTotalCount()},switchToBlock:function(e){this.$wrapper.find(".target-block-tab").removeClass("active"),this.$wrapper.find('.target-block-tab[data-block-type="'+e+'"]').addClass("active"),this.$wrapper.find(".target-block").removeClass("active").hide(),this.$wrapper.find('.target-block[data-block-type="'+e+'"]').addClass("active").show(),this.hideDropdown()},updateTabBadges:function(){var t=this;this.$wrapper.find(".target-block-tab").each(function(){var i=e(this),a=i.data("blockType"),s=t.$wrapper.find('.target-block[data-block-type="'+a+'"]').find(".selection-group").length,r=i.find(".tab-badge");s>0?(r.length?r.addClass("loading").html(''):i.append(''),i.addClass("has-data"),t.fetchProductCount(a,i)):(r.remove(),i.removeClass("has-data"))}),this.updateTargetSwitchState()},updateTargetSwitchState:function(){var t=this.$wrapper.find(".prestashop-switch");if(t.length){var i=!1;this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return i=!0,!1}),i?t.find('input[value="0"]').prop("checked",!0):t.find('input[value="1"]').prop("checked",!0)}},fetchProductCount:function(t,i){var a=this,s={},r=this.$wrapper.find('input[name="'+this.config.name+'"]'),n={};try{n=JSON.parse(r.val()||"{}")}catch(e){n={}}var o=n[t]&&n[t].groups?n[t].groups:[];if(0===o.length)return i.find(".tab-badge").remove(),i.removeClass("has-data"),void i.removeData("previewData");var l=i.find(".tab-badge");l.length?l.addClass("loading").html(''):(l=e(''),i.append(l)),i.addClass("has-data"),s[t]={groups:o},e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewEntitySelector",trait:"EntitySelector",conditions:JSON.stringify(s),block_type:t,limit:10},success:function(e){e.success?(i.find(".tab-badge").removeClass("loading").html(' '+e.count),i.data("previewData",e),a.updateHeaderTotalCount()):i.find(".tab-badge").remove()},error:function(){i.find(".tab-badge").remove(),a.updateHeaderTotalCount()}})},updateHeaderTotalCount:function(){var t=0;this.$wrapper.find(".target-block-tab .tab-badge").each(function(){var i=e(this);if(!i.hasClass("loading")){var a=parseInt(i.text(),10);isNaN(a)||(t+=a)}});var i=this.$wrapper.find(".trait-total-count");t>0?i.text(t).show():i.hide(),this.updateShowAllToggle()},updateShowAllToggle:function(){var e=this.$wrapper.find(".trait-show-all-toggle");if(e.length){var t=e.find(".show-all-checkbox"),i=this.$wrapper.find(".target-block-tab.has-data").length>0;t.prop("checked",!i)}},updateBlockStatus:function(e){var t=e.find(".block-status"),i=e.data("blockType"),a=this.config.blocks[i]||{},s=this.config.trans||{},r=this.getBlockGroups(e);0===r.length?!1!==this.config.emptyMeansAll?t.text((s.all||"All")+" "+(a.entity_label_plural||"items")):t.text(s.nothing_selected||"Nothing selected"):t.text(r.length+" "+(1===r.length?s.group||"group":s.groups||"groups"))},getEmptyStateText:function(e){var t=e.data("blockType"),i=e.data("mode")||"multi",a=this.config.blocks[t]||{},s=this.config.trans||{},r=!1!==this.config.emptyMeansAll;return"single"===i?s.no_item_selected||"No item selected":r?(s.all||"All")+" "+(a.entity_label_plural||"items")+" "+(s.included||"included"):s.nothing_selected||"Nothing selected"},serializeGroup:function(t,i){var a=this,s=t.find(".include-method-select").val()||"all",r=t.find(".include-picker"),n=this.getPickerValues(r),o=[];t.find(".group-excludes.has-excludes").length&&t.find(".exclude-row").each(function(){var t=e(this),i=t.find(".exclude-method-select").val()||null,s=t.find(".exclude-picker"),r=a.getPickerValues(s);i&&r&&(!Array.isArray(r)||r.length>0)&&o.push({method:i,values:r})});var l={include:{method:s,values:n}};o.length>0&&(l.excludes=o);var c=this.getGroupModifiers(t);return(c.limit||c.sort_by)&&(l.modifiers=c),l},serializeAllBlocks:function(t){var i=this,a={};this.$wrapper.find(".target-block").each(function(){var t=e(this),s=t.data("blockType"),r=i.getBlockGroups(t);r.length>0&&(a[s]={groups:r}),i.updateBlockStatus(t)}),this.$wrapper.find('input[name="'+this.config.name+'"]').val(JSON.stringify(a)),this.updateTabBadges(),this.countUpdateTimeout&&clearTimeout(this.countUpdateTimeout),this.countUpdateTimeout=setTimeout(function(){if(t&&t.length){i.updateConditionCount(t);var e=t.closest(".selection-group");e.length&&i.updateGroupTotalCount(e)}else i.updateAllConditionCounts()},500)},getBlockGroups:function(t){var i=this,a=[];return t.find(".selection-group").each(function(){var t=e(this),s=t.find(".include-method-select").val()||"all",r=t.find(".include-picker"),n=i.getPickerValues(r);if(!i.isConditionValid(s,n,r))return!0;var o=[];t.find(".group-excludes.has-excludes").length&&t.find(".exclude-row").each(function(){var t=e(this),a=t.find(".exclude-method-select").val()||null,s=t.find(".exclude-picker"),r=i.getPickerValues(s);a&&i.isConditionValid(a,r,s)&&o.push({method:a,values:r})});var l={include:{method:s,values:n}},c=e.trim(t.attr("data-group-name")||"");c&&(l.name=c),o.length>0&&(l.excludes=o);var d=i.getGroupModifiers(t);(d.limit||d.sort_by)&&(l.modifiers=d),a.push(l)}),a},getGroupModifiers:function(e){var t=e.find(".group-modifier-limit").val(),i=e.find(".group-modifier-sort").val()||"sales",a=e.find(".group-modifiers .btn-sort-dir").data("dir")||"DESC";return{limit:t?parseInt(t,10):null,sort_by:i||null,sort_dir:a||"DESC"}},getPickerValues:function(t){var i=t.attr("data-value-type")||"entity_search",a=[];switch(i){case"entity_search":t.find(".entity-chip").each(function(){var t=e(this).data("id");a.push(isNaN(t)?t:Number(t))});break;case"pattern":a=this.getPatternTags(t);var s=t.find(".draft-tag .pattern-input"),r=e.trim(s.val());if(r){var n="1"===s.closest(".draft-tag").attr("data-case-sensitive");a.push({pattern:r,caseSensitive:n})}break;case"numeric_range":var o=t.find(".range-min-input").val(),l=t.find(".range-max-input").val();""===o&&""===l||(a={min:""!==o?parseFloat(o):null,max:""!==l?parseFloat(l):null});break;case"date_range":var c=t.find(".date-from-input").val(),d=t.find(".date-to-input").val();(c||d)&&(a={from:c||null,to:d||null});break;case"select":var p=t.find(".select-value-input").val();p&&(a=[p]);break;case"boolean":a=[!0];break;case"multi_numeric_range":var u=[];t.find(".range-chip").each(function(){var t=e(this),i=t.data("min"),a=t.data("max");u.push({min:""!==i&&void 0!==i?parseFloat(i):null,max:""!==a&&void 0!==a?parseFloat(a):null})}),u.length>0&&(a=u);break;case"multi_select_tiles":t.find(".tile-option.selected").each(function(){a.push(e(this).data("value"))});break;case"combination_attributes":var h={};if(t.find(".comb-attr-value.selected").each(function(){var t=e(this).data("groupId").toString(),i=e(this).data("valueId");h[t]||(h[t]=[]),h[t].push(i)}),Object.keys(h).length>0){var f,v=t.find(".combination-attributes-picker").data("combinationMode")||this.config.combinationMode||"products";f="toggle"===v?t.find(".comb-mode-radio:checked").val()||"products":v,a={mode:f,attributes:h}}}return a},isConditionValid:function(e,t,i){if("all"===e)return!0;var a=i.attr("data-value-type")||"entity_search";return"boolean"===a||(Array.isArray(t)?t.length>0:"object"==typeof t&&null!==t&&("combination_attributes"===a&&void 0!==t.attributes?Object.keys(t.attributes).length>0:Object.keys(t).some(function(e){return null!==t[e]&&""!==t[e]})))},updateAllConditionCounts:function(){var t=this;this.$wrapper.find(".target-block.active .selection-group").each(function(){t.updateGroupCounts(e(this))})},updateGroupCounts:function(t){var i=this,a=t.find(".group-include");a.length&&this.updateConditionCount(a),t.find(".exclude-row").each(function(){i.updateConditionCount(e(this))}),this.updateGroupTotalCount(t)},updateConditionCount:function(t){this.config.trans;var i=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row .condition-match-count").first();if(i.length){var a=t.hasClass("exclude-row"),s=(a?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(s){var r=a?t.find(".exclude-picker"):t.find(".include-picker"),n=r.data("valueType")||"none",o=this.getPickerValues(r,n),l=!o||Array.isArray(o)&&0===o.length||"object"==typeof o&&!Array.isArray(o)&&("combination_attributes"===n&&void 0!==o.attributes&&0===Object.keys(o.attributes).length||"combination_attributes"!==n&&0===Object.keys(o).length);if("none"!==n&&"boolean"!==n&&l)i.hide();else{var c=t.closest(".target-block").data("blockType")||"products";i.find(".preview-count").html(''),i.removeClass("clickable no-matches").show(),i.data("conditionData",{method:s,values:o,blockType:c,isExclude:a}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:s,values:JSON.stringify(o),block_type:c},success:function(e){if(e&&e.success){var t=e.count||0;i.removeClass("no-matches clickable"),0===t?(i.find(".preview-count").text(t),i.addClass("no-matches").show()):(i.find(".preview-count").text(t),i.addClass("clickable").show())}else i.hide().removeClass("clickable")},error:function(){i.hide().removeClass("clickable")}})}}else i.hide()}},updateGroupTotalCount:function(t){var i=t.closest(".target-block").data("blockType")||"products",a=t.find(".group-header .group-count-badge"),s=t.find(".group-modifier-limit"),r=this.serializeGroup(t,i);if(!r.include||!r.include.method)return a.hide(),void s.attr("placeholder","–");a.html('').show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countGroupItems",trait:"EntitySelector",group_data:JSON.stringify(r),block_type:i},success:function(e){if(e&&e.success){var n=e.final_count||0,o=e.exclude_count||0,l=' '+n;o>0&&(l+=' (-'+o+")"),a.html(l),a.addClass("clickable").show(),a.data("groupData",r),a.data("blockType",i),a.data("finalCount",n),s.attr("placeholder",n);var c=t.find(".group-preview-badge .preview-count");if(c.length){var d=parseInt(s.val(),10),p=d>0&&d';s+=' '+(a.except||"EXCEPT")+"",s+="",s+='
',s+=this.buildExcludeRowHtml(t,0),s+="
",s+='",i.addClass("has-excludes").html(s),this.updateMethodSelectorLock(e,!0),this.serializeAllBlocks()},addExcludeRow:function(t,i){var a=t.find(".exclude-rows-container"),s=-1;a.find(".exclude-row").each(function(){var t=parseInt(e(this).data("excludeIndex"),10);t>s&&(s=t)});var r=s+1,n=this.buildExcludeRowHtml(i,r);a.append(n);var o=a.find('.exclude-row[data-exclude-index="'+r+'"]');this.enhanceMethodSelect(o.find(".exclude-method-select")),this.serializeAllBlocks()},buildExcludeRowHtml:function(t,i){var a=t.data("blockType"),s=(this.config.blocks[a]||{}).selection_methods||{},r=this.config.trans||{},n=this.buildMethodOptions(s,!0),o=a,l="entity_search";e.each(s,function(e,t){return"all"===e||(o=t.search_entity||a,l=t.value_type||"entity_search",!1)});var c='
';return c+='
',c+='
',c+='",c+=' 0',c+='',c+="
",c+='",c+="
",(c+=this.buildValuePickerHtml("exclude",l,o,s))+"
"},removeExcludeRow:function(e,t,i){var a=t.find(".exclude-rows-container"),s=this.config.trans||{};e.remove(),0===a.find(".exclude-row").length&&(t.find(".group-excludes").removeClass("has-excludes").html('"),this.updateMethodSelectorLock(t,!1)),this.serializeAllBlocks()},buildMethodOptions:function(t,i){var a=this,s=this.config.trans||{},r="",n={select_by:s.select_by||"Select by...",filter_by:s.filter_by||"Filter by..."},o={},l={};return e.each(t,function(e,t){if(i&&"all"===e)return!0;var a=t.group||"";a?(o[a]||(o[a]={}),o[a][e]=t):l[e]=t}),e.each(l,function(e,t){r+=a.buildMethodOption(e,t)}),e.each(o,function(t,i){var s=n[t]||t.replace(/_/g," ");r+='',e.each(i,function(e,t){r+=a.buildMethodOption(e,t)}),r+=""}),r},buildMethodOption:function(e,t){var i='"},buildValuePickerHtml:function(e,t,i,a){var s=this.config.trans||{},r=e+"-picker",n=e+"-chips",o=e+"-values-data",l="";if("none"===t)return l='";switch(l='
',t){case"entity_search":var c=s.no_items_selected||"No items selected - use search below";l+='
',l+='",l+='';break;case"pattern":var d=""+this.escapeHtml(s.pattern_help_title||"Pattern Syntax")+"";d+='
',d+='
* '+this.escapeHtml(s.pattern_help_wildcard||"any text (wildcard)")+"
",d+='
{number} '+this.escapeHtml(s.pattern_help_number||"any number (e.g. 100, 250)")+"
",d+='
{letter} '+this.escapeHtml(s.pattern_help_letter||"single letter (A-Z)")+"
",d+="
",d+='
',d+=""+this.escapeHtml(s.pattern_help_examples||"Examples:")+"",d+='
*cotton* '+this.escapeHtml(s.pattern_example_1||'contains "cotton"')+"
",d+='
iPhone {number} Pro* '+this.escapeHtml(s.pattern_example_2||'matches "iPhone 15 Pro Max"')+"
",d+='
Size {letter} '+this.escapeHtml(s.pattern_example_3||'matches "Size M", "Size L"')+"
",d+="
";var p=s.no_patterns||"No patterns - press Enter to add";l+='
',l+='
',l+='
',l+='',l+='',l+=' ',l+='',l+="
",l+='',l+='',l+="",l+="
",l+='';break;case"numeric_range":l+='
',l+='',l+='-',l+='',l+="
",l+='';break;case"multi_numeric_range":l+='
',l+='
',l+='
',l+='',l+='-',l+='',l+='',l+="
",l+="
",l+='';break;case"multi_select_tiles":l+='
',l+="
",l+='';break;case"date_range":l+='
',l+='',l+='-',l+='',l+="
",l+='';break;case"select":l+='
',l+='',l+="
",l+='';break;case"boolean":l+='
',l+=''+this.escapeHtml(s.yes||"Yes")+"",l+="
",l+='';break;case"combination_attributes":this.escapeHtml(s.combination_help_title||"Combination Targeting"),this.escapeHtml(s.combination_help_desc||"Select attributes to target specific product combinations."),this.escapeHtml(s.combination_help_logic||"Logic:"),this.escapeHtml(s.combination_help_within||"Within group: OR (Red OR Blue)"),this.escapeHtml(s.combination_help_between||"Between groups: AND (Color AND Size)");var u=this.config.combinationMode||"products",h="toggle"===u,f=h?"products":u;l+='
',h&&(l+='
',l+='",l+='",l+="
"),l+='
',l+=' '+this.escapeHtml(s.loading||"Loading...")+"",l+="
",l+="
",l+='';break;default:l+=''}return l+"
"},getSortOptionsArray:function(e){var t=this.config.trans||{};switch(e){case"products":return[{value:"sales",label:t.sort_bestsellers||"Best sellers"},{value:"date_add",label:t.sort_newest||"Newest"},{value:"price",label:t.sort_price||"Price"},{value:"name",label:t.sort_name||"Name"},{value:"position",label:t.sort_position||"Position"},{value:"quantity",label:t.sort_stock||"Stock quantity"},{value:"random",label:t.sort_random||"Random"}];case"categories":return[{value:"name",label:t.sort_name||"Name"},{value:"position",label:t.sort_position||"Position"},{value:"product_count",label:t.sort_products||"Products count"},{value:"date_add",label:t.sort_newest||"Newest"}];default:return[{value:"name",label:t.sort_name||"Name"},{value:"date_add",label:t.sort_newest||"Newest"}]}},getSortIconClass:function(e,t){var i="ASC"===t;switch(e){case"name":return i?"icon-sort-alpha-asc":"icon-sort-alpha-desc";case"price":case"quantity":case"product_count":case"date_add":case"newest_products":case"position":return i?"icon-sort-numeric-asc":"icon-sort-numeric-desc";case"sales":case"total_sales":default:return i?"icon-sort-amount-asc":"icon-sort-amount-desc";case"random":return"icon-random"}},cycleSortOption:function(e,t){for(var i,a,s,r=this.getSortOptionsArray(t),n=e.data("sort")||"sales",o=e.data("dir")||"DESC",l=-1,c=0;c0)return t=!0,!1}),t?(this.clearValidationError(),!0):(this.showValidationError(),!1)},showValidationError:function(){this.$wrapper.addClass("has-validation-error");var t=this.$wrapper.data("required-message")||"Please select at least one item";this.$wrapper.find(".trait-validation-error").remove();var i=e("
",{class:"trait-validation-error",html:' '+t});this.$wrapper.find(".condition-trait-header").after(i),e("html, body").animate({scrollTop:this.$wrapper.offset().top-100},300),this.$wrapper.find(".condition-trait-body").is(":visible")||(this.$wrapper.find(".condition-trait-body").slideDown(200),this.$wrapper.removeClass("collapsed"))},clearValidationError:function(){this.$wrapper.removeClass("has-validation-error"),this.$wrapper.find(".trait-validation-error").remove()}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.methods={initMethodDropdowns:function(){var t=this;this.$wrapper.find(".include-method-select").each(function(){t.enhanceMethodSelect(e(this))}),this.$wrapper.find(".exclude-method-select").each(function(){t.enhanceMethodSelect(e(this))}),this.initMethodInfoPlaceholders()},initMethodInfoPlaceholders:function(){var t=this;this.$wrapper.find(".selection-group").each(function(){var i=e(this),a=i.closest(".target-block").data("blockType")||"products",s=i.find(".include-method-select").val()||"all";t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),s,a),i.find(".exclude-row").each(function(){var i=e(this),s=i.find(".exclude-method-select").val();s&&t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),s,a)})})},enhanceMethodSelect:function(t){var i=this;if(t.length&&!t.data("methodDropdownInit")){t.data("methodDropdownInit",!0),t.addClass("method-select-hidden");var a=t.find("option:selected"),s=a.data("icon")||"icon-caret-down",r=a.text(),n='
';n+='',n+=''+this.escapeHtml(r)+"",n+='';var o=e(n+="
");t.after(o),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),t.closest(".method-selector-wrapper").hasClass("selector-locked")||i.showMethodDropdownMenu(t,o)}),t.on("change.methodDropdown",function(){i.updateMethodTrigger(t,o)})}},updateMethodTrigger:function(e,t){var i=e.find("option:selected"),a=i.data("icon")||"icon-caret-down",s=i.text();t.find(".method-trigger-icon").attr("class",a+" method-trigger-icon"),t.find(".method-trigger-label").text(s)},showMethodDropdownMenu:function(t,i){var a=this;this.closeMethodDropdownMenu();var s=this.buildMethodDropdownMenuHtml(t),r=e(s),n=i.offset(),o=i.outerWidth(),l=i.outerHeight();r.css({position:"absolute",top:n.top+l+2,left:n.left,minWidth:o,zIndex:10001}),e("body").append(r),this.$methodDropdownMenu=r,this.$methodDropdownSelect=t,this.$methodDropdownTrigger=i,r.on("click",".method-dropdown-item",function(i){i.preventDefault(),i.stopPropagation();var s=e(this).data("value");t.val(s).trigger("change"),a.closeMethodDropdownMenu()}),e(document).on("click.methodDropdown",function(t){e(t.target).closest(".method-dropdown-menu, .method-dropdown-trigger").length||a.closeMethodDropdownMenu()}),e(document).on("keydown.methodDropdown",function(e){27===e.keyCode&&a.closeMethodDropdownMenu()})},buildMethodDropdownMenuHtml:function(t){var i=this,a='
';return t.children("option").each(function(){var t=e(this),s=t.data("icon")||"icon-asterisk",r=t.text(),n=t.val(),o=t.is(":selected");a+='
',a+='',a+=''+i.escapeHtml(r)+"",o&&(a+=''),a+="
"}),t.children("optgroup").each(function(){var t=e(this),s=t.attr("label")||"";a+='
',a+='
'+i.escapeHtml(s)+"
",a+='
',t.children("option").each(function(){var t=e(this),s=t.data("icon")||"icon-cog",r=t.text(),n=t.val(),o=t.is(":selected");a+='
',a+='',a+=''+i.escapeHtml(r)+"",o&&(a+=''),a+="
"}),a+="
",a+="
"}),a+="
"},closeMethodDropdownMenu:function(){this.$methodDropdownMenu&&(this.$methodDropdownMenu.remove(),this.$methodDropdownMenu=null),this.$methodDropdownSelect=null,this.$methodDropdownTrigger=null,e(document).off("click.methodDropdown keydown.methodDropdown")},populateTiles:function(t,i,a){var s=t.find(".multi-select-tiles");s.empty(),a?s.attr("data-exclusive","true"):s.removeAttr("data-exclusive"),e.each(i,function(t,i){var a="object"==typeof i?i.label:i,r="object"==typeof i&&i.icon?i.icon:null,n="object"==typeof i&&i.color?i.color:null,o="tile-option";n&&(o+=" tile-color-"+n);var l=e("',l+="
",l+='
',l+='',l+="
",s.length>0){if(l+='
',l+=this.renderPreviewItems(s),l+="
",i.hasMore){var c=i.count-s.length;l+='"}}else l+='
'+(o.no_preview||"No items to preview")+"
";var d=e(l+="");e("body").append(d),this.$previewList=d.find(".preview-list"),this.allPreviewData=i;var p=this;d.find(".preview-close").on("click",function(){p.hidePreviewPopover()}),d.find(".preview-filter-input").on("input",function(){var t=e(this).val().toLowerCase().trim();p.filterPreviewItems(t)}),d.find(".btn-load-more-preview").on("click",function(){p.loadMorePreviewItems(t,e(this))});var u=a.offset(),h=a.outerHeight(),f=a.outerWidth(),v=d.outerWidth(),m=u.left+f/2-v/2,g=e(window).width()-v-10;m=Math.max(10,Math.min(m,g)),d.css({position:"absolute",top:u.top+h+8,left:m,zIndex:1e4}),d.addClass("show"),this.$previewPopover=d}},renderPreviewItems:function(t){var i="";return e.each(t,function(e,t){var a="preview-item"+(t.isCombination?" is-combination":""),s=(t.attributes||"").toLowerCase();i+='
',t.image?i+='':i+='',i+='
',i+=''+t.name+"",t.attributes&&(i+=''+t.attributes+""),t.reference&&(i+=''+t.reference+""),i+="
",i+="
"}),i},filterPreviewItems:function(t){if(this.$previewList){var i=this.$previewList.find(".preview-item");t?i.each(function(){var i=e(this),a=i.data("name")||"",s=i.data("ref")||"",r=i.data("attrs")||"";-1!==a.indexOf(t)||-1!==s.indexOf(t)||-1!==r.indexOf(t)?i.show():i.hide()}):i.show()}},loadMorePreviewItems:function(t,i){var a=this,s=this.previewBlockType,r=i.closest(".preview-footer"),n=r.find(".load-more-select"),o=parseInt(n.val(),10)||20,l=this.$wrapper.find('input[name="'+this.config.name+'"]'),c={};try{c=JSON.parse(l.val()||"{}")}catch(e){return}var d=c[s]&&c[s].groups?c[s].groups:[];if(0!==d.length){var p={};p[s]={groups:d},i.prop("disabled",!0).find("i").removeClass("icon-plus").addClass("icon-spinner icon-spin"),n.prop("disabled",!0),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewTargetConditions",trait:"TargetConditions",conditions:JSON.stringify(p),block_type:s,limit:a.previewLoadedCount+o,offset:0},success:function(e){var s=e.items||e.products||[];if(e.success&&s.length>0){if(a.$previewList.html(a.renderPreviewItems(s)),a.previewLoadedCount=s.length,e.hasMore){var o=e.count-s.length;r.find(".remaining-count").text(o);var l=n.find("option:last");"10"!==l.val()&&"20"!==l.val()&&"50"!==l.val()&&"100"!==l.val()&&l.val(o).text(a.config.trans.all+" ("+o+")"),i.prop("disabled",!1).find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),n.prop("disabled",!1)}else r.remove();t.data("previewData",e),a.allPreviewData=e;var c=a.$previewPopover.find(".preview-filter-input").val();c&&a.filterPreviewItems(c.toLowerCase().trim())}},error:function(){i.prop("disabled",!1).find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),n.prop("disabled",!1)}})}},hidePreviewPopover:function(){this.$activeBadge&&(this.$activeBadge.removeClass("popover-open"),this.$activeBadge=null),this.$previewPopover&&(this.$previewPopover.remove(),this.$previewPopover=null)},showPatternPreviewModal:function(t,i,a,s){var r=this,n=this.config.trans||{},o=this.config.blocks&&this.config.blocks[i]?this.config.blocks[i]:{},l=o.entity_label_plural||"items",c=o.entity_label||"item",d='
';d+='
',d+='
',d+='',d+=' '+(n.preview||"Preview")+": "+this.escapeHtml(t)+"",d+="",d+=''+s+" "+(1===s?c:l)+"",d+='',d+="
",d+='
',d+='
'+(n.loading||"Loading...")+"
",d+="
",d+="
";var p=e(d+="
");e("body").append(p),p.find(".pattern-preview-close").on("click",function(){p.remove()}),p.on("click",function(t){e(t.target).hasClass("pattern-preview-modal-overlay")&&p.remove()}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewPatternMatches",trait:"TargetConditions",pattern:t,entity_type:i,case_sensitive:a?1:0,limit:50},success:function(e){if(e.success&&e.items){var t=e.items,i='
';if(0===t.length)i+='
'+(n.no_matches||"No matches found")+"
";else{for(var a=0;a',o.image&&(i+=''),i+=''+r.escapeHtml(o.name)+"",o.id&&(i+='#'+o.id+""),i+="
"}s>t.length&&(i+='
... '+(n.and||"and")+" "+(s-t.length)+" "+(n.more||"more")+"
")}i+="",p.find(".pattern-preview-content").html(i)}else p.find(".pattern-preview-content").html('
'+(n.error_loading||"Error loading preview")+"
")},error:function(){p.find(".pattern-preview-content").html('
'+(n.error_loading||"Error loading preview")+"
")}})},refreshGroupPreviewIfOpen:function(e){this.$activeBadge&&this.$previewPopover},showConditionPreviewPopover:function(t){var i=this,a=t.data("conditionData");if(a){this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t,this.config.trans;var s=a.blockType||"products",r=(this.config.blocks&&this.config.blocks[s]?this.config.blocks[s]:{}).entity_label_plural||"items";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewConditionItems",trait:"EntitySelector",method:a.method,values:JSON.stringify(a.values),block_type:s,limit:10},success:function(e){if(t.removeClass("loading"),e.success){var a=e.items||[];i.showItemsPopover(t,a,e.count,e.hasMore,r,s,"condition")}},error:function(){t.removeClass("loading popover-open"),i.$activeBadge=null}})}},showGroupPreviewPopover:function(t,i,a){var s=this;if(i||(i=t.closest(".selection-group")),!a){var r=t.closest(".target-block");a=r.data("blockType")||"products"}var n=t.data("groupData");if(n||(n=this.serializeGroup(i,a)),n&&n.include){this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t,this.config.trans;var o=(this.config.blocks&&this.config.blocks[a]?this.config.blocks[a]:{}).entity_label_plural||"items";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewGroupItems",trait:"EntitySelector",group_data:JSON.stringify(n),block_type:a,limit:10},success:function(e){if(t.removeClass("loading"),e.success){var i=e.items||[];s.showItemsPopover(t,i,e.count,e.hasMore,o,a,"group")}else t.removeClass("popover-open"),s.$activeBadge=null},error:function(){t.removeClass("loading popover-open"),s.$activeBadge=null}})}},showItemsPopover:function(t,i,a,s,r,n,o){var l=this,c=this.config.trans||{},d='
';d+='
',d+=''+a+" "+r+"",d+='',d+="
",i.length>0?(d+='
',d+=this.renderPreviewItems(i),d+="
",s&&(d+='")):d+='
'+(c.no_preview||"No items to preview")+"
";var p=e(d+="
");e("body").append(p),p.find(".preview-close").on("click",function(){l.hidePreviewPopover()});var u=t.offset(),h=t.outerHeight(),f=t.outerWidth(),v=p.outerWidth(),m=u.left+f/2-v/2,g=e(window).width()-v-10;m=Math.max(10,Math.min(m,g));var b=u.top+h+8;p.css({position:"absolute",top:b,left:m,zIndex:1e4}),p.addClass("show"),this.$previewPopover=p},renderPreviewItems:function(e){for(var t="",i=0;i',a.image?t+='':t+='
inventory_2
',t+='
',t+='
'+this.escapeHtml(a.name||"Unnamed")+"
";var s=[];a.reference&&s.push("Ref: "+a.reference),a.manufacturer&&s.push(a.manufacturer),a.category&&s.push(a.category),a.attributes&&s.push(a.attributes),s.length>0&&(t+='
'+this.escapeHtml(s.join(" • "))+"
"),t+="
",void 0!==a.price&&(t+='
'+this.formatPrice(a.price)+"
"),void 0===a.active||a.active||(t+='Inactive'),t+=""}return t},formatPrice:function(e){return"number"!=typeof e&&(e=parseFloat(e)||0),e.toFixed(2)+" €"},showFilterGroupPreviewPopover:function(t,i,a,s){var r=this;this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t,this.config.trans,e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewFilterGroupProducts",trait:"EntitySelector",group_id:i,group_type:a,limit:10},success:function(e){if(t.removeClass("loading"),e.success){var i=e.items||[],n=e.count||0,o=e.hasMore||!1;r.showFilterGroupItemsPopover(t,i,n,o,"products",s,a)}else t.removeClass("popover-open"),r.$activeBadge=null},error:function(e,i,a){t.removeClass("loading popover-open"),r.$activeBadge=null}})},showFilterGroupItemsPopover:function(t,i,a,s,r,n,o){var l=this,c=this.config.trans||{},d=("attribute"===o?c.attribute:c.feature,'
');d+='
',d+=''+a+" "+r+"",d+='',d+="
",i.length>0?(d+='
',d+=this.renderPreviewItems(i),d+="
",s&&(d+='")):d+='
'+(c.no_preview||"No items to preview")+"
";var p=e(d+="
");e("body").append(p),p.find(".preview-close").on("click",function(){l.hidePreviewPopover()});var u=t.offset(),h=t.outerHeight(),f=t.outerWidth(),v=p.outerWidth(),m=u.left+f/2-v/2,g=e(window).width()-v-10;m=Math.max(10,Math.min(m,g));var b=u.top+h+8;p.css({position:"absolute",top:b,left:m,zIndex:1e4}),p.addClass("show"),this.$previewPopover=p}}}(jQuery),function(e){"use strict";var t={instances:[],create:function(t){var i=function(){var t={config:{},$wrapper:null,$dropdown:null,activeGroup:null,searchTimeout:null,searchResults:[],searchTotal:0,searchOffset:0,searchQuery:"",isLoading:!1,loadMoreCount:20,viewMode:"list",currentSort:{field:"name",dir:"ASC"},refineQuery:"",refineNegate:!1,filters:{inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[]},filterableData:null,searchHistory:{},searchHistoryMax:10,searchHistoryKey:"targetConditionsSearchHistory",maxVisibleChips:20,$methodDropdownMenu:null,$methodDropdownSelect:null,$methodDropdownTrigger:null,$previewPopover:null,$activeBadge:null,$previewList:null,previewLoadedCount:0,previewBlockType:null,allPreviewData:null,countUpdateTimeout:null,init:function(t){if(this.config=e.extend({id:"target-conditions",name:"target_conditions",namePrefix:"target_",mode:"multi",blocks:{},ajaxUrl:"",trans:{}},t),this.$wrapper=e('[data-entity-selector-id="'+this.config.id+'"]'),this.$wrapper.length){"single"===this.config.mode&&(this.$wrapper.find(".btn-add-group").hide(),this.$wrapper.find(".group-excludes").hide(),this.$wrapper.find(".group-modifiers").hide());var i=this.$wrapper.closest(".form-group");i.addClass("condition-trait-fullwidth"),i.find(".col-lg-offset-3").removeClass("col-lg-offset-3"),this.createDropdown(),this.bindEvents(),this.loadExistingSelections(),this.loadSearchHistory(),this.initMethodDropdowns(),this.observeNewSelects();var a=this;setTimeout(function(){a.updateTabBadges(),a.updateAllConditionCounts()},100)}},observeNewSelects:function(){var t=this;"undefined"!=typeof MutationObserver&&new MutationObserver(function(i){i.forEach(function(i){i.addedNodes.length&&e(i.addedNodes).find(".include-method-select, .exclude-method-select").each(function(){t.enhanceMethodSelect(e(this))})})}).observe(this.$wrapper[0],{childList:!0,subtree:!0})},loadExistingSelections:function(){}},i=window._EntitySelectorMixins||{};return i.utils&&e.extend(t,i.utils),i.events&&e.extend(t,i.events),i.dropdown&&e.extend(t,i.dropdown),i.search&&e.extend(t,i.search),i.filters&&e.extend(t,i.filters),i.chips&&e.extend(t,i.chips),i.groups&&e.extend(t,i.groups),i.methods&&e.extend(t,i.methods),i.preview&&e.extend(t,i.preview),t}();return i.init(t),this.instances.push(i),i},init:function(e){return this.create(e)},validateAll:function(){for(var e=!0,t=0;t0&&!t.validateAll())return i.preventDefault(),!1})})}(jQuery); +!function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.utils={escapeHtml:function(e){return null==e?"":String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},escapeAttr:function(e){return null==e?"":String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},getEntityTypeIcon:function(e){return{products:"icon-shopping-cart",categories:"icon-folder-open",manufacturers:"icon-building",suppliers:"icon-truck",attributes:"icon-list-alt",features:"icon-tags",cms:"icon-file-text",cms_categories:"icon-folder"}[e]||"icon-cube"},getEntityTypeLabel:function(e){var t=this.config.trans||{};return{products:t.product||"Product",categories:t.category||"Category",manufacturers:t.manufacturer||"Manufacturer",suppliers:t.supplier||"Supplier",attributes:t.attribute||"Attribute",features:t.feature||"Feature",cms:t.cms_page||"CMS Page",cms_categories:t.cms_category||"CMS Category"}[e]||e},validate:function(){if(1!==this.$wrapper.data("required")&&"1"!==this.$wrapper.data("required"))return!0;var t=!1;return this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return t=!0,!1}),t?(this.clearValidationError(),!0):(this.showValidationError(),!1)},showValidationError:function(){this.$wrapper.addClass("has-validation-error");var t=this.$wrapper.data("required-message")||"Please select at least one item";this.$wrapper.find(".trait-validation-error").remove();var i=e("
",{class:"trait-validation-error",html:' '+t});this.$wrapper.find(".condition-trait-header").after(i),e("html, body").animate({scrollTop:this.$wrapper.offset().top-100},300),this.$wrapper.find(".condition-trait-body").is(":visible")||(this.$wrapper.find(".condition-trait-body").slideDown(200),this.$wrapper.removeClass("collapsed"))},clearValidationError:function(){this.$wrapper.removeClass("has-validation-error"),this.$wrapper.find(".trait-validation-error").remove()},getBlockMode:function(e){var t=this.config.blocks[e];return t&&t.mode?t.mode:"multi"},isBlockSingleMode:function(e){return"single"===this.getBlockMode(e)},getCurrentSingleSelection:function(){if("single"!==(this.config.mode||"multi"))return null;var e=this.$wrapper.find(".entity-chips .entity-chip").first();if(e.length){var t=e.closest(".target-block");return{name:e.find(".chip-name").text()||e.data("id"),entityType:t.data("block-type")||"item"}}return null}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.events={bindEvents:function(){var t=this;this.$wrapper.on("click",".target-block-tab",function(i){i.preventDefault();var a=e(this).data("blockType");t.switchToBlock(a)}),this.$wrapper.on("click",".target-block-tab .tab-badge",function(i){i.stopPropagation(),i.preventDefault();var a=e(this).closest(".target-block-tab");e(this).hasClass("popover-open")?t.hidePreviewPopover():t.showPreviewPopover(a)}),this.$wrapper.on("click",".condition-match-count.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showConditionPreviewPopover(a)}),this.$wrapper.on("click",".group-count-badge.clickable",function(i){i.stopPropagation(),i.preventDefault();var a=e(this);a.hasClass("popover-open")?t.hidePreviewPopover():t.showGroupPreviewPopover(a)}),e(document).on("click",function(i){e(i.target).closest(".target-preview-popover").length||e(i.target).closest(".tab-badge").length||e(i.target).closest(".condition-match-count").length||e(i.target).closest(".group-count-badge").length||e(i.target).closest(".group-modifiers").length||e(i.target).closest(".group-preview-badge").length||e(i.target).closest(".toggle-count.clickable").length||t.hidePreviewPopover()}),this.$wrapper.on("click",".condition-trait-header",function(i){if(!(e(i.target).closest(".target-block-tabs").length||e(i.target).closest(".trait-header-actions").length||e(i.target).closest(".prestashop-switch").length)){var a=t.$wrapper.find(".condition-trait-body");a.stop(!0,!0),a.is(":visible")?(a.slideUp(200),t.$wrapper.addClass("collapsed")):(a.slideDown(200),t.$wrapper.removeClass("collapsed"))}}),this.$wrapper.on("click",".group-header",function(i){e(i.target).closest(".btn-remove-group, .group-name-input").length||"single"!==t.$wrapper.data("mode")&&e(this).closest(".selection-group").toggleClass("collapsed")}),this.$wrapper.on("click",".trait-header-actions .btn-toggle-groups",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.attr("data-state")||"collapsed",r=t.config.trans||{};"collapsed"===s?(t.$wrapper.find(".selection-group").removeClass("collapsed"),a.attr("data-state","expanded"),a.attr("title",r.collapse_all||"Collapse all groups"),a.find("i").removeClass("icon-expand").addClass("icon-compress")):(t.$wrapper.find(".selection-group").addClass("collapsed"),a.attr("data-state","collapsed"),a.attr("title",r.expand_all||"Expand all groups"),a.find("i").removeClass("icon-compress").addClass("icon-expand"))}),this.$wrapper.on("change",".trait-show-all-toggle .show-all-checkbox",function(i){i.stopPropagation(),e(this).prop("checked")&&t.clearAllConditions()}),this.$wrapper.on("change",".target-switch-toggle",function(i){i.stopPropagation(),"1"===e(this).val()?(t.clearAllConditions(),t.$wrapper.find(".condition-trait-body").slideUp(200),t.$wrapper.addClass("collapsed")):(t.$wrapper.find(".condition-trait-body").slideDown(200),t.$wrapper.removeClass("collapsed"))}),this.$wrapper.on("click",".btn-add-group",function(i){i.preventDefault();var a=e(this).closest(".target-block"),s=a.data("blockType");t.addGroup(a,s)}),this.$wrapper.on("click",".btn-remove-group",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.removeGroup(a,s)}),this.$wrapper.on("click focus",".group-name-input",function(e){e.stopPropagation()}),this.$wrapper.on("change blur",".group-name-input",function(){var i=e(this),a=i.closest(".selection-group"),s=e.trim(i.val());a.attr("data-group-name",s),t.serializeAllBlocks()}),this.$wrapper.on("click",".btn-add-exclude",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.addFirstExcludeRow(a,s)}),this.$wrapper.on("click",".btn-add-another-exclude",function(i){i.preventDefault();var a=e(this).closest(".selection-group"),s=e(this).closest(".target-block");t.addExcludeRow(a,s)}),this.$wrapper.on("click",".btn-remove-exclude-row",function(i){i.preventDefault();var a=e(this).closest(".exclude-row"),s=e(this).closest(".selection-group"),r=e(this).closest(".target-block");t.removeExcludeRow(a,s,r)}),this.$wrapper.on("change",".include-method-select",function(){t.hideDropdown();var i=e(this).closest(".selection-group"),a=e(this).closest(".target-block"),s=i.find(".group-include"),r=a.data("blockType"),n=(t.config.blocks[r]||{}).selection_methods||{},o=e(this).find("option:selected"),l=o.data("valueType")||"none",c=o.data("searchEntity")||"",d=o.data("options")||null,p=i.find(".include-picker"),u=t.buildValuePickerHtml("include",l,c,n);if(p.replaceWith(u),"select"===l&&d){var h=(f=i.find(".include-picker")).find(".select-value-input");h.empty(),e.each(d,function(e,i){h.append('")})}if("multi_select_tiles"===l&&d){var f=i.find(".include-picker"),v=!0===o.data("exclusive");t.populateTiles(f,d,v)}if("multi_numeric_range"===l){f=i.find(".include-picker");var m=o.data("step"),g=o.data("min");t.applyRangeInputConstraints(f,m,g)}"combination_attributes"===l&&(f=i.find(".include-picker"),t.loadCombinationAttributeGroups(f));var b=e(this).val();t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),b,r),t.updateBlockStatus(a),t.serializeAllBlocks(s)}),this.$wrapper.on("change",".exclude-method-select",function(){t.hideDropdown();var i=e(this).closest(".exclude-row"),a=(e(this).closest(".selection-group"),e(this).closest(".target-block").data("blockType")),s=(t.config.blocks[a]||{}).selection_methods||{},r=e(this).find("option:selected"),n=r.data("valueType")||"entity_search",o=r.data("searchEntity")||a,l=r.data("options")||null,c=i.find(".exclude-picker"),d=t.buildValuePickerHtml("exclude",n,o,s);if(c.replaceWith(d),"select"===n&&l){var p=(u=i.find(".exclude-picker")).find(".select-value-input");p.empty(),e.each(l,function(e,i){p.append('")})}if("multi_select_tiles"===n&&l){var u=i.find(".exclude-picker"),h=!0===r.data("exclusive");t.populateTiles(u,l,h)}if("multi_numeric_range"===n){u=i.find(".exclude-picker");var f=r.data("step"),v=r.data("min");t.applyRangeInputConstraints(u,f,v)}"combination_attributes"===n&&(u=i.find(".exclude-picker"),t.loadCombinationAttributeGroups(u));var m=e(this).val();t.updateMethodInfoPlaceholder(i.find(".exclude-header-row"),m,a),t.serializeAllBlocks(i)}),this.$wrapper.on("keydown",".pattern-input",function(t){13===t.keyCode&&(t.preventDefault(),e(this).closest(".draft-tag").find(".btn-add-pattern").click())}),this.$wrapper.on("click",".draft-tag .btn-add-pattern",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".draft-tag"),s=a.closest(".value-picker"),r=a.closest(".group-include, .exclude-row"),n=a.find(".pattern-input"),o=e.trim(n.val());if(o){var l="1"===a.attr("data-case-sensitive");t.addPatternTag(s,o,l),n.val("").focus(),a.find(".pattern-match-count").removeClass("count-found count-zero").hide(),a.find(".pattern-match-count .count-value").text(""),t.serializeAllBlocks(r)}}),this.$wrapper.on("input",".pattern-input",function(){var i=e(this),a=i.closest(".draft-tag");if(a.length){var s=e.trim(i.val());i.data("countTimeout")&&clearTimeout(i.data("countTimeout"));var r=a.find(".pattern-match-count");if(s){var n=setTimeout(function(){var e="1"===a.attr("data-case-sensitive");t.updateDraftTagCount(a,s,e)},300);i.data("countTimeout",n)}else{r.removeClass("count-found count-zero").hide(),r.find(".count-value").text("");var o=a.closest(".selection-group");o.length&&t.updateGroupTotalCount(o)}}}),this.$wrapper.on("click",".pattern-tag .btn-remove-pattern",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".group-include, .exclude-row");e(this).closest(".pattern-tag").remove(),t.serializeAllBlocks(a)}),this.$wrapper.on("click",".pattern-tag .btn-toggle-case",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".pattern-tag"),s=e(this),r=t.config.trans||{},n=a.hasClass("draft-tag"),o=!(1===a.data("caseSensitive")||"1"===a.data("caseSensitive")||"1"===a.attr("data-case-sensitive"));a.data("caseSensitive",o?1:0),a.attr("data-case-sensitive",o?"1":"0"),a.toggleClass("case-sensitive",o),s.find(".case-icon").text(o?"Aa":"aa");var l=o?r.case_sensitive||"Case sensitive - click to toggle":r.case_insensitive||"Case insensitive - click to toggle";if(s.attr("title",l),n){var c=e.trim(a.find(".pattern-input").val());c&&t.updateDraftTagCount(a,c,o)}else{var d=a.closest(".group-include, .exclude-row");t.serializeAllBlocks(d)}}),this.$wrapper.on("click",".pattern-match-count",function(i){i.preventDefault(),i.stopPropagation();var a=e(this),s=a.data("count"),r=a.data("pattern"),n=a.data("entityType"),o=a.data("caseSensitive");!s||s<=0||!r||t.showPatternPreviewModal(r,n,o,s)}),this.$wrapper.on("click",".pattern-tag .pattern-tag-text",function(t){t.preventDefault();var i=e(this).closest(".pattern-tag");if(!i.hasClass("editing")){var a=i.data("pattern"),s=e('').val(a),r=e(''),n=e(''),o=e('').append(r,n);i.addClass("editing").find(".pattern-tag-text").hide(),i.find(".btn-remove-pattern").hide(),i.prepend(o).prepend(s),s.focus().select(),s.on("keydown",function(e){13===e.keyCode?(e.preventDefault(),r.click()):27===e.keyCode&&(e.preventDefault(),n.click())})}}),this.$wrapper.on("click",".pattern-tag .btn-pattern-save",function(i){i.preventDefault(),i.stopPropagation();var a=e(this).closest(".pattern-tag"),s=a.find(".pattern-tag-edit"),r=a.data("pattern"),n=e.trim(s.val());n&&n!==r&&(a.data("pattern",n),a.find(".pattern-tag-text").text(n)),s.remove(),a.find(".pattern-edit-actions").remove(),a.removeClass("editing").find(".pattern-tag-text, .btn-remove-pattern").show();var o=a.closest(".group-include, .exclude-row");t.serializeAllBlocks(o)}),this.$wrapper.on("click",".pattern-tag .btn-pattern-cancel",function(t){t.preventDefault(),t.stopPropagation();var i=e(this).closest(".pattern-tag");i.find(".pattern-tag-edit").remove(),i.find(".pattern-edit-actions").remove(),i.removeClass("editing").find(".pattern-tag-text, .btn-remove-pattern").show()}),this.$wrapper.on("mouseenter",".mpr-info-wrapper[data-details]",function(){var t=e(this);if(!t.data("tooltip-active")){var i=t.attr("data-details"),a=t.attr("data-tooltip-class")||"",s=e("
",{class:"mpr-tooltip mpr-tooltip-fixed "+a,html:i});e("body").append(s),t.data("tooltip-active",!0);var r=t.offset(),n=t.outerWidth(),o=s.outerWidth(),l=s.outerHeight(),c=r.left+n/2-o/2,d=r.top-l-10;c<10&&(c=10),c+o>e(window).width()-10&&(c=e(window).width()-o-10),s.css({position:"fixed",left:c+"px",top:d-e(window).scrollTop()+"px"}),t.data("tooltip-el",s)}}),this.$wrapper.on("mouseleave",".mpr-info-wrapper[data-details]",function(){var t=e(this),i=t.data("tooltip-el");i&&i.remove(),t.data("tooltip-active",!1),t.data("tooltip-el",null)}),this.$wrapper.on("change",".range-min-input, .range-max-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("change",".date-from-input, .date-to-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("change",".select-value-input",function(){var i=e(this).closest(".group-include, .exclude-row");t.serializeAllBlocks(i)}),this.$wrapper.on("click",".btn-add-range",function(i){i.preventDefault();var a=e(this).closest(".value-picker"),s=e(this).closest(".group-include, .exclude-row"),r=a.find(".multi-range-container"),n=r.find(".multi-range-chips"),o=r.find(".range-min-input"),l=r.find(".range-max-input"),c=o.val().trim(),d=l.val().trim();if(""!==c||""!==d){var p=parseFloat(o.attr("step"))||.01,u=o.attr("min"),h=void 0!==u&&""!==u;u=h?parseFloat(u):null;var f=""!==c?parseFloat(c):null,v=""!==d?parseFloat(d):null;if(h){if(null!==f&&fv)t.showRangeInputError(o,t.config.trans.min_greater_than_max||"Min cannot be greater than max");else{var m,g=p<1?String(p).split(".")[1].length:0;null!==f&&(f=p>=1?Math.round(f):parseFloat(f.toFixed(g)),c=String(f)),null!==v&&(v=p>=1?Math.round(v):parseFloat(v.toFixed(g)),d=String(v)),m=""!==c&&""!==d?c+" - "+d:""!==c?"≥ "+c:"≤ "+d;var b=e("",{class:"range-chip","data-min":c,"data-max":d});b.append(e("",{class:"range-chip-text",text:m})),b.append(e("",i+='",i+='
',i+='",i+='",i+='",i+="
",i+='
',i+='',i+='',i+='',i+="
",i+='",i+='",i+="
",i+="
",i+='
',i+='
',i+='",i+='",i+='
',i+=''+(t.price||"Price")+":",i+='',i+='-',i+='',i+="
",i+='",i+="
",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+='",i+="
",i+='
',i+='',i+=''+(t.product||"Product")+"",i+=''+(t.price||"Price")+"",i+=''+(t.sale||"Sale")+"",i+=''+(t.stock||"Stock")+"",i+=''+(t.sold||"Sold")+"",i+="
",i+='',i+='",i+="",this.$dropdown=e(i),e("body").append(this.$dropdown)},hideDropdown:function(){this.$dropdown&&this.$dropdown.removeClass("show"),this.activeGroup=null},positionDropdown:function(t){if(this.$dropdown){var i=t.closest(".value-picker"),a=t.closest(".entity-search-box"),s=a.offset(),r=a.outerHeight(),n=i.offset(),o=i.outerWidth(),l=s.top+r+4,c=n.left,d=Math.max(o,400),p=e(window).width();c+d>p-10&&(d=p-c-10);var u=e(window).height()-(l-e(window).scrollTop())-20;u=Math.max(u,400),this.$dropdown.css({position:"absolute",top:l,left:c,width:d,maxHeight:u,zIndex:1e4})}}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.search={categoryTreeCache:null,performSearch:function(t){var i=this;if(this.activeGroup){this.isLoading=!0;var a=this.activeGroup.searchEntity,s=t&&this.loadMoreCount?this.loadMoreCount:20,r={ajax:1,action:"searchTargetEntities",trait:"EntitySelector",entity_type:a,q:this.searchQuery,limit:s,offset:t?this.searchOffset:0,sort_by:this.currentSort?this.currentSort.field:"name",sort_dir:this.currentSort?this.currentSort.dir:"ASC"};this.refineQuery&&(r.refine=this.refineQuery,this.refineNegate&&(r.refine_negate=1)),"products"===a&&this.filters&&(this.filters.inStock&&(r.filter_in_stock=1),this.filters.discounted&&(r.filter_discounted=1),null!==this.filters.priceMin&&""!==this.filters.priceMin&&(r.filter_price_min=this.filters.priceMin),null!==this.filters.priceMax&&""!==this.filters.priceMax&&(r.filter_price_max=this.filters.priceMax),this.filters.attributes&&this.filters.attributes.length>0&&(r.filter_attributes=JSON.stringify(this.filters.attributes)),this.filters.features&&this.filters.features.length>0&&(r.filter_features=JSON.stringify(this.filters.features))),"products"!==a&&this.filters&&(null!==this.filters.productCountMin&&""!==this.filters.productCountMin&&(r.filter_product_count_min=this.filters.productCountMin),null!==this.filters.productCountMax&&""!==this.filters.productCountMax&&(r.filter_product_count_max=this.filters.productCountMax),"categories"===a&&(this.filters.depth&&(r.filter_depth=this.filters.depth),this.filters.hasProducts&&(r.filter_has_products=1),this.filters.hasDescription&&(r.filter_has_description=1),this.filters.hasImage&&(r.filter_has_image=1),null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.activeOnly&&(r.filter_active=1)),"manufacturers"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.dateAddFrom&&(r.filter_date_add_from=this.filters.dateAddFrom),this.filters.dateAddTo&&(r.filter_date_add_to=this.filters.dateAddTo),this.filters.lastProductFrom&&(r.filter_last_product_from=this.filters.lastProductFrom),this.filters.lastProductTo&&(r.filter_last_product_to=this.filters.lastProductTo),this.filters.activeOnly&&(r.filter_active=1)),"suppliers"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.dateAddFrom&&(r.filter_date_add_from=this.filters.dateAddFrom),this.filters.dateAddTo&&(r.filter_date_add_to=this.filters.dateAddTo),this.filters.lastProductFrom&&(r.filter_last_product_from=this.filters.lastProductFrom),this.filters.lastProductTo&&(r.filter_last_product_to=this.filters.lastProductTo),this.filters.activeOnly&&(r.filter_active=1)),"attributes"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.attributeGroup&&(r.filter_attribute_group=this.filters.attributeGroup),this.filters.isColor&&(r.filter_is_color=1)),"features"===a&&(null!==this.filters.salesMin&&""!==this.filters.salesMin&&(r.filter_sales_min=this.filters.salesMin),null!==this.filters.salesMax&&""!==this.filters.salesMax&&(r.filter_sales_max=this.filters.salesMax),null!==this.filters.turnoverMin&&""!==this.filters.turnoverMin&&(r.filter_turnover_min=this.filters.turnoverMin),null!==this.filters.turnoverMax&&""!==this.filters.turnoverMax&&(r.filter_turnover_max=this.filters.turnoverMax),this.filters.featureGroup&&(r.filter_feature_group=this.filters.featureGroup),this.filters.isCustom&&(r.filter_is_custom=1)),"cms"===a&&(this.filters.activeOnly&&(r.filter_active=1),this.filters.indexable&&(r.filter_indexable=1)),"cms_categories"===a&&this.filters.activeOnly&&(r.filter_active=1)),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:r,success:function(e){i.isLoading=!1,e.success&&(i.searchQuery&&i.searchQuery.length>=2&&e.total>0&&i.addToSearchHistory(a,i.searchQuery),i.searchResults=t?i.searchResults.concat(e.results||[]):e.results||[],i.searchTotal=e.total||0,i.searchOffset=t?i.searchOffset+(e.results||[]).length:(e.results||[]).length,i.renderSearchResults(t),i.$dropdown.addClass("show"))},error:function(){i.isLoading=!1}})}},renderSearchResults:function(t){var i=this,a=this.config.trans||{},s=this.$dropdown.find(".dropdown-results"),r=[],n=[];if(this.activeGroup){var o=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]'),l=this.activeGroup.searchEntity,c=this.activeGroup.excludeIndex;"include"===this.activeGroup.section?o.find(".include-picker").find(".entity-chip").each(function(){r.push(String(e(this).data("id")))}):(o.find('.exclude-row[data-exclude-index="'+c+'"]').find(".exclude-picker").find(".entity-chip").each(function(){r.push(String(e(this).data("id")))}),o.find(".exclude-row").each(function(){var t=e(this);if(parseInt(t.data("excludeIndex"),10)!==c){var a=t.find(".exclude-picker");(a.attr("data-search-entity")||i.activeGroup.blockType)===l&&a.find(".entity-chip").each(function(){n.push(String(e(this).data("id")))})}}))}var d=this.activeGroup&&"products"===this.activeGroup.searchEntity,p="list"===this.viewMode;this.$dropdown.find(".results-header").toggle(d&&p);var u=this.searchResults.filter(function(e){return-1===n.indexOf(String(e.id))}),h=this.searchResults.length-u.length,f=u.length+" / "+this.searchTotal+" results";h>0&&(f+=" ("+h+" hidden)"),this.$dropdown.find(".results-count").text(f);var v="";0!==u.length||t?u.forEach(function(e){var t="dropdown-item"+(-1!==r.indexOf(String(e.id))?" selected":"");if("product"===e.type&&(t+=" result-item-product"),v+='
';else{var a="icon-cube",s=i.activeGroup?i.activeGroup.searchEntity:null;"categories"===s?a="icon-folder":"manufacturers"===s?a="icon-building":"suppliers"===s?a="icon-truck":"attributes"===s?a="icon-paint-brush":"features"===s?a="icon-list-ul":"cms"===s?a="icon-file-text-o":"cms_categories"===s&&(a="icon-folder-o"),v+='
'}if(v+='
',v+='
'+i.escapeHtml(e.name)+"
",e.subtitle){var n=e.subtitle.split("\n");v+='
',n.forEach(function(e,t){v+='
'+i.escapeHtml(e)+"
"}),v+="
"}if(v+="
","product"===e.type)if(p){v+='
',v+=''+(e.regular_price_formatted||e.price_formatted||"")+"",v+="
",e.has_discount?(v+='
',v+=''+(e.price_formatted||"")+"",v+="
"):v+='
';var o="out_of_stock"===e.stock_status?"stock-out":"low_stock"===e.stock_status?"stock-low":"stock-ok";v+='
',v+=''+(void 0!==e.stock_qty?e.stock_qty:"")+"",v+="
",v+='
',v+=''+(void 0!==e.sales_qty?e.sales_qty:"0")+"",v+="
"}else{var l="out_of_stock"===e.stock_status?"stock-out":"low_stock"===e.stock_status?"stock-low":"";v+='
',v+=''+(e.price_formatted||"")+"",void 0!==e.stock_qty&&(v+=''+e.stock_qty+" qty"),e.has_discount&&(v+='-'+(e.discount_percent||"")+"%"),v+="
"}v+=""}):v='
'+(a.no_results||"No results found")+"
",t?s.append(v):s.html(v);var m=this.searchResults.length'+(a.all||"All")+" ("+b+")")}this.$dropdown.find(".dropdown-actions").show(),this.$dropdown.find(".btn-show-history").removeClass("active");var x=this.activeGroup?this.activeGroup.searchEntity:null,_=x&&this.getSearchHistory(x).length>0;this.$dropdown.find(".btn-show-history").prop("disabled",!_)},loadCategoryTree:function(){var t=this,i=this.$dropdown.find(".dropdown-results"),a=this.activeGroup?this.activeGroup.searchEntity:"categories";this.$dropdown.addClass("show"),i.html('
Loading category tree...
');var s=a+"TreeCache";this[s]?this.renderCategoryTree(this[s],a):e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getCategoryTree",trait:"EntitySelector",entity_type:a},success:function(e){e.success&&e.categories?(t[s]=e.categories,t.renderCategoryTree(e.categories,a)):i.html('
Failed to load category tree
')},error:function(e,t,a){i.html('
Error loading category tree
')}})},renderCategoryTree:function(t,i){var a=this,s=this.config.trans||{},r=this.$dropdown.find(".dropdown-results"),n="cms_categories"===i,o=n?"CMS categories":"categories",l=[];if(this.activeGroup){var c=this.$wrapper.find('.target-block[data-block-type="'+this.activeGroup.blockType+'"]').find('.selection-group[data-group-index="'+this.activeGroup.groupIndex+'"]');"include"===this.activeGroup.section?c.find(".include-picker").find(".entity-chip").each(function(){l.push(parseInt(e(this).data("id"),10))}):c.find('.exclude-row[data-exclude-index="'+this.activeGroup.excludeIndex+'"]').find(".exclude-picker").find(".entity-chip").each(function(){l.push(parseInt(e(this).data("id"),10))})}var d='
';d+='
';var p=t.length>0?t[0].level:1;t.forEach(function(e){var t=-1!==l.indexOf(e.id),i=20*(e.level-p),r=e.has_children;d+='
',d+=r?'':'';var o="single"===a.config.mode;r&&!o?(d+='"):o||(d+=''),d+='',d+='',d+='
',d+=''+a.escapeHtml(e.name)+"",d+=''+a.escapeHtml(e.subtitle)+"",d+="
",d+="
"}),d+="
",d+="
",r.html(d);var u=r.find(".tree-item.selected").length;this.$dropdown.find(".results-count").text(t.length+" "+o+(u>0?" ("+u+" selected)":""));var h=r.find(".tree-item");this.updateSelectChildrenButtons(h),this.$dropdown.find(".load-more-controls").hide()},filterCategoryTree:function(t){var i=this,a=this.$dropdown.find(".category-tree");if(a.length){var s=a.find(".tree-item");if(!(t=t.toLowerCase().trim()))return s.show().removeClass("collapsed"),void a.find(".tree-toggle i").removeClass("icon-caret-right").addClass("icon-caret-down");var r=[],n=[];s.each(function(){var a=e(this);if(-1!==(a.data("name")||"").toLowerCase().indexOf(t)){r.push(a.data("id"));for(var o=i.findTreeAncestors(a,s),l=0;l0?" ("+l+" selected)":""))}},findTreeDescendants:function(t,i){var a=parseInt(t.data("nleft"),10),s=parseInt(t.data("nright"),10),r=parseInt(t.data("id"),10),n=[];if(a>0&&s>0&&s>a)i.each(function(){var t=e(this),i=parseInt(t.data("nleft"),10),r=parseInt(t.data("nright"),10);i>a&&r0;){var c=o.shift();l[c]||(l[c]=!0,i.each(function(){var t=e(this),i=parseInt(t.data("parent-id"),10),a=parseInt(t.data("id"),10);i!==c||l[a]||(n.push(t),o.push(a))}))}return n},findTreeAncestors:function(t,i){var a=parseInt(t.data("nleft"),10),s=parseInt(t.data("nright"),10),r=[];if(a>0&&s>0)i.each(function(){var t=e(this),i=parseInt(t.data("nleft"),10),n=parseInt(t.data("nright"),10);is&&r.push(t)});else for(var n=parseInt(t.data("parent-id"),10),o={};n>0&&!o[n];)o[n]=!0,i.each(function(){var t=e(this);if(parseInt(t.data("id"),10)===n)return r.push(t),n=parseInt(t.data("parent-id"),10),!1});return r},updateSelectChildrenButtons:function(t){var i=this,a=this.config.trans||{};t.filter(".has-children").each(function(){var s=e(this),r=s.find(".btn-select-children");if(r.length){for(var n=i.findTreeDescendants(s,t),o=s.hasClass("selected"),l=0;l0?(r.find("i").removeClass("icon-plus-square").addClass("icon-minus-square"),r.attr("title",a.deselect_with_children||"Deselect with all children")):(r.find("i").removeClass("icon-minus-square").addClass("icon-plus-square"),r.attr("title",a.select_with_children||"Select with all children"))}})},loadSearchHistory:function(){try{var e=localStorage.getItem(this.searchHistoryKey);this.searchHistory=e?JSON.parse(e):{}}catch(e){this.searchHistory={}}},saveSearchHistory:function(){try{localStorage.setItem(this.searchHistoryKey,JSON.stringify(this.searchHistory))}catch(e){}},addToSearchHistory:function(e,t){if(t&&!(t.length<2)){this.searchHistory[e]||(this.searchHistory[e]=[]);var i=this.searchHistory[e],a=i.indexOf(t);-1!==a&&i.splice(a,1),i.unshift(t),i.length>this.searchHistoryMax&&(i=i.slice(0,this.searchHistoryMax)),this.searchHistory[e]=i,this.saveSearchHistory()}},removeFromSearchHistory:function(e,t){if(this.searchHistory[e]){var i=this.searchHistory[e].indexOf(t);-1!==i&&(this.searchHistory[e].splice(i,1),this.saveSearchHistory())}},getSearchHistory:function(e){return this.searchHistory[e]||[]},showSearchHistory:function(e){var t=this.getSearchHistory(e),i=this.config.trans||{},a=this.$dropdown.find(".dropdown-results");if(this.$dropdown.find(".results-count").text(i.recent_searches||"Recent searches"),this.$dropdown.find(".dropdown-actions").hide(),this.$dropdown.find(".filter-panel").removeClass("show"),this.$dropdown.find(".btn-toggle-filters").removeClass("active"),this.$dropdown.find(".results-header").hide(),t.length){for(var s='
',r=0;r',s+='',s+=''+this.escapeHtml(n)+"",s+='",s+="
"}s+="",a.html(s),this.$dropdown.addClass("show")}else this.performSearch()},refreshSearch:function(){"tree"!==this.viewMode?(this.searchOffset=0,this.loadMoreCount=20,this.$dropdown&&(this.$dropdown.find(".load-more-select").val("20"),this.$dropdown.find('.load-more-select option[data-all="true"]').remove()),this.performSearch(!1)):this.filterCategoryTree(this.searchQuery||"")},clearFilters:function(){if(this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown){var e=this.config.trans||{};this.$dropdown.find(".refine-input").val("").attr("placeholder",e.refine_short||"Refine..."),this.$dropdown.find(".btn-clear-refine").hide(),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min").val(""),this.$dropdown.find(".filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip").removeClass("active"),this.$dropdown.find(".filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-group-toggle").removeClass("active has-selection"),this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-turnover-min, .filter-turnover-max").val(""),this.$dropdown.find(".filter-date-add-from, .filter-date-add-to").val(""),this.$dropdown.find(".filter-last-product-from, .filter-last-product-to").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-has-description").prop("checked",!1),this.$dropdown.find(".filter-has-image").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0),this.$dropdown.find(".filter-attribute-group-select, .filter-feature-group-select").val("")}this.refreshSearch()},resetFiltersWithoutSearch:function(){if(this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown){var e=this.config.trans||{};this.$dropdown.find(".refine-input").val("").attr("placeholder",e.refine_short||"Refine..."),this.$dropdown.find(".btn-clear-refine").hide(),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min").val(""),this.$dropdown.find(".filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip").removeClass("active"),this.$dropdown.find(".filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-group-toggle").removeClass("active has-selection"),this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-turnover-min, .filter-turnover-max").val(""),this.$dropdown.find(".filter-date-add-from, .filter-date-add-to").val(""),this.$dropdown.find(".filter-last-product-from, .filter-last-product-to").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-has-description").prop("checked",!1),this.$dropdown.find(".filter-has-image").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0),this.$dropdown.find(".filter-attribute-group-select, .filter-feature-group-select").val("")}},updateFilterPanelForEntity:function(e){if(this.$dropdown){var t=this.$dropdown.find(".filter-panel");t.find(".filter-row").hide();var i=this.$dropdown.find(".view-mode-select option.tree-view-option");"categories"===e||"cms_categories"===e?(i.prop("disabled",!1).prop("hidden",!1),"tree"!==this.viewMode?(this.viewMode="tree",this.$dropdown.find(".view-mode-select").val("tree"),this.$dropdown.removeClass("view-list view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8").addClass("view-tree"),this.loadCategoryTree()):this.loadCategoryTree()):(i.prop("disabled",!0).prop("hidden",!0),"tree"===this.viewMode&&(this.viewMode="list",this.$dropdown.find(".view-mode-select").val("list"),this.$dropdown.removeClass("view-tree").addClass("view-list"))),"products"===e?(t.find(".filter-row-quick").show(),this.filterableData&&(this.filterableData.attributes&&this.filterableData.attributes.length>0&&this.$dropdown.find(".filter-row-attributes").show(),this.filterableData.features&&this.filterableData.features.length>0&&this.$dropdown.find(".filter-row-features").show())):"categories"===e?t.find(".filter-row-entity-categories").show():"manufacturers"===e?t.find(".filter-row-entity-manufacturers").show():"suppliers"===e?t.find(".filter-row-entity-suppliers").show():"attributes"===e?(t.find(".filter-row-entity-attributes").show(),this.loadAttributeGroups()):"features"===e?t.find(".filter-row-entity-features").show():"cms"===e?t.find(".filter-row-entity-cms").show():"cms_categories"===e&&t.find(".filter-row-entity-cms-categories").show()}},loadAttributeGroups:function(){var t=this,i=this.$dropdown.find(".filter-attribute-group-select");i.find("option").length>1||e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getAttributeGroups",trait:"EntitySelector"},success:function(a){a.success&&a.groups&&e.each(a.groups,function(e,a){i.append('")})}})},loadFeatureGroups:function(){var t=this,i=this.$dropdown.find(".filter-feature-group-select");i.find("option").length>1||e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getFeatureGroups",trait:"EntitySelector"},success:function(a){a.success&&a.groups&&e.each(a.groups,function(e,a){i.append('")})}})}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.filters={clearFilters:function(){this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null},this.$dropdown&&(this.config.trans,this.$dropdown.find(".refine-input").val(""),this.$dropdown.find(".btn-refine-negate").removeClass("active"),this.$dropdown.find(".filter-in-stock").prop("checked",!1),this.$dropdown.find(".filter-discounted").prop("checked",!1),this.$dropdown.find(".filter-price-min, .filter-price-max").val(""),this.$dropdown.find(".filter-attr-chip, .filter-feat-chip").removeClass("active"),this.$dropdown.find(".filter-product-count-min, .filter-product-count-max").val(""),this.$dropdown.find(".filter-sales-min, .filter-sales-max").val(""),this.$dropdown.find(".filter-depth-select").val(""),this.$dropdown.find(".filter-has-products").prop("checked",!1),this.$dropdown.find(".filter-active-only").prop("checked",!0)),this.refreshSearch()},resetFiltersWithoutSearch:function(){this.refineQuery="",this.refineNegate=!1,this.filters={inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[],productCountMin:null,productCountMax:null,salesMin:null,salesMax:null,turnoverMin:null,turnoverMax:null,depth:null,hasProducts:!1,hasDescription:!1,hasImage:!1,activeOnly:!0,attributeGroup:null,featureGroup:null,dateAddFrom:null,dateAddTo:null,lastProductFrom:null,lastProductTo:null}},updateFilterPanelForEntity:function(e){if(this.$dropdown){var t=this.$dropdown.find(".filter-panel");t.find(".filter-row").hide(),t.find('.filter-row[data-entity="'+e+'"]').show(),t.find(".filter-row-entity-"+e.replace("_","-")).show();var i=this.$dropdown.find(".tree-view-option");"categories"===e||"cms_categories"===e?i.prop("disabled",!1).show():i.prop("disabled",!0).hide()}},loadFilterableData:function(){var t=this;this.filterableData?this.renderFilterDropdowns():e.ajax({url:this.config.ajaxUrl,type:"POST",data:{ajax:1,action:"getTargetFilterableAttributes",trait:"EntitySelector"},dataType:"json",success:function(e){e.success&&e.data&&(t.filterableData=e.data,t.renderFilterDropdowns())}})},renderFilterDropdowns:function(){if(this.$dropdown&&this.filterableData){var e=this,t=this.$dropdown.find(".filter-attributes-container");t.empty(),this.filterableData.attributes&&this.filterableData.attributes.length>0&&(this.filterableData.attributes.forEach(function(i){var a='",t.append(a)}),this.$dropdown.find(".filter-row-attributes").show());var i=this.$dropdown.find(".filter-features-container");i.empty(),this.filterableData.features&&this.filterableData.features.length>0&&(this.filterableData.features.forEach(function(t){var a='",i.append(a)}),this.$dropdown.find(".filter-row-features").show())}},showFilterGroupValues:function(e,t){if(this.filterableData){var i=this,a=("attribute"===t?this.filterableData.attributes:this.filterableData.features).find(function(t){return t.id==e});if(a){this.$dropdown.find(".filter-row-values").hide();var s="attribute"===t?".filter-row-attr-values":".filter-row-feat-values",r=this.$dropdown.find(s),n=r.find(".filter-values-container");n.empty();var o=''+a.name+":";a.values.forEach(function(a){var s=("attribute"===t?-1!==i.filters.attributes.indexOf(a.id):-1!==i.filters.features.indexOf(a.id))?" active":"",r="attribute"===t?"filter-attr-chip":"filter-feat-chip",n=a.color?' style="--chip-color: '+a.color+'"':"",l=a.color?" has-color":"";o+='"}),n.html(o),r.find(".btn-close-values").remove(),r.append(''),r.show();var l=r[0];l&&l.scrollIntoView({behavior:"smooth",block:"nearest"})}}},hideFilterGroupValues:function(){this.$dropdown.find(".filter-row-values").hide(),this.$dropdown.find(".filter-group-toggle").removeClass("active")},updateFilterToggleStates:function(){if(this.$dropdown&&this.filterableData){var e=this;this.filterableData.attributes&&this.filterableData.attributes.forEach(function(t){var i=e.$dropdown.find('.filter-group-toggle[data-group-id="'+t.id+'"][data-type="attribute"]'),a=t.values.some(function(t){return-1!==e.filters.attributes.indexOf(t.id)});i.toggleClass("has-selection",a)}),this.filterableData.features&&this.filterableData.features.forEach(function(t){var i=e.$dropdown.find('.filter-group-toggle[data-group-id="'+t.id+'"][data-type="feature"]'),a=t.values.some(function(t){return-1!==e.filters.features.indexOf(t.id)});i.toggleClass("has-selection",a)})}}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.chips={addSelection:function(e,t,i,a){this.addSelectionNoUpdate(e,t,i,a);var s=e.find(".entity-chips");this.updateChipsVisibility(s)},addSelectionNoUpdate:function(e,t,i,a){var s=e.find(".entity-chips"),r=e.closest(".target-block");if("single"===(this.config.mode||"multi")?(this.$wrapper.find(".entity-chips .entity-chip").remove(),this.$dropdown&&this.$dropdown.find(".dropdown-item.selected, .tree-item.selected").removeClass("selected"),this.$wrapper.find(".target-block-tab .tab-badge").remove(),this.$wrapper.find(".target-block-tab").removeClass("has-data")):"single"===(r.data("mode")||"multi")&&(s.find(".entity-chip").remove(),this.$dropdown&&this.$dropdown.find(".dropdown-item.selected, .tree-item.selected").removeClass("selected")),!s.find('.entity-chip[data-id="'+t+'"]').length){var n='';a&&a.image&&(n+=''),n+=''+this.escapeHtml(i)+"",n+='',n+="",s.append(n)}},removeSelection:function(e,t){var i=e.find(".entity-chips");e.find('.entity-chip[data-id="'+t+'"]').remove(),this.updateChipsVisibility(i)},updateChipsVisibility:function(t){var i=this,a=t.find(".entity-chip"),s=a.length,r=t.find(".chips-show-more-toggle"),n=t.hasClass("chips-expanded"),o=this.config.trans||{};if(r.remove(),s<=this.maxVisibleChips)return a.removeClass("chip-hidden"),void t.removeClass("chips-expanded chips-collapsed");var l=s-this.maxVisibleChips;if(n){a.removeClass("chip-hidden");var c=o.show_less||"Show less";t.append(' '+c+"")}else{a.each(function(t){t>=i.maxVisibleChips?e(this).addClass("chip-hidden"):e(this).removeClass("chip-hidden")});var d=(o.show_more||"Show {count} more").replace("{count}",l);t.addClass("chips-collapsed").removeClass("chips-expanded"),t.append(' '+d+"")}},loadExistingSelections:function(){var t=this,i={};this.$wrapper.find(".selection-group").each(function(){var a=e(this),s=a.closest(".target-block").data("blockType"),r=a.find(".include-picker");t.collectPickerEntities(r,s,i),t.enhanceMethodSelect(a.find(".include-method-select")),a.find(".exclude-row").each(function(){var a=e(this);t.collectPickerEntities(a.find(".exclude-picker"),s,i),t.enhanceMethodSelect(a.find(".exclude-method-select"))}),a.find(".group-excludes.has-excludes").length>0&&t.updateMethodSelectorLock(a,!0)}),Object.keys(i).forEach(function(a){var s=i[a];if(0!==s.ids.length){var r=s.ids.filter(function(e,t,i){return i.indexOf(e)===t});e.ajax({url:t.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"getTargetEntitiesByIds",trait:"EntitySelector",entity_type:a,ids:JSON.stringify(r)},success:function(e){if(e.success&&e.entities){var i={};e.entities.forEach(function(e){i[e.id]=e}),s.pickers.forEach(function(e){var a=e.$picker,s=a.find(".entity-chips"),r=a.find(".include-values-data, .exclude-values-data"),n=[];e.ids.forEach(function(e){var a=s.find('.entity-chip-loading[data-id="'+e+'"]');if(i[e]){var r=i[e];n.push(r.id);var o='';r.image&&(o+=''),o+=''+t.escapeHtml(r.name)+"",o+='',o+="",a.replaceWith(o)}else a.remove()}),t.updateChipsVisibility(s),n.length!==e.ids.length&&(r.val(JSON.stringify(n)),t.serializeAllBlocks()),t.updateBlockStatus(a.closest(".target-block"))})}}})}})},collectPickerEntities:function(t,i,a){if(t.length){var s=this,r=t.find(".include-values-data, .exclude-values-data");if(r.length){var n=t.attr("data-value-type"),o=r.val()||"[]",l=[];try{l=JSON.parse(o)}catch(e){return}if("multi_numeric_range"!==n)if("multi_select_tiles"!==n){if("combination_attributes"===n)return"object"!=typeof l||null===l||0===Object.keys(l).length||r.val(JSON.stringify(l)),void s.loadCombinationAttributeGroups(t);if(l.length)if("pattern"!==n){var c=t.attr("data-search-entity")||i,d=t.find(".entity-chips"),p=this.getEntityTypeIcon(c);l.forEach(function(e){var t='';t+='',t+='Loading...',t+="",d.append(t)}),a[c]||(a[c]={ids:[],pickers:[]}),a[c].ids=a[c].ids.concat(l),a[c].pickers.push({$picker:t,ids:l})}else l.forEach(function(e){"string"==typeof e&&e?s.addPatternTag(t,e,!1):e&&e.pattern&&s.addPatternTag(t,e.pattern,!0===e.caseSensitive)})}else{if(!Array.isArray(l)||0===l.length)return;l.forEach(function(e){t.find('.tile-option[data-value="'+e+'"]').addClass("selected")})}else{if(!Array.isArray(l)||0===l.length)return;var u=t.find(".multi-range-chips");l.forEach(function(t){if(t&&(null!==t.min||null!==t.max)){var i;i=null!==t.min&&null!==t.max?t.min+" - "+t.max:null!==t.min?"≥ "+t.min:"≤ "+t.max;var a=e("",{class:"range-chip","data-min":null!==t.min?t.min:"","data-max":null!==t.max?t.max:""});a.append(e("",{class:"range-chip-text",text:i})),a.append(e("",o+=''+this.escapeHtml(t)+"",o+='',o+="",s.append(o)},getPatternTags:function(t){var i=[];return t.find(".pattern-tag:not(.draft-tag)").each(function(){var t=e(this).data("pattern"),a=1===e(this).data("caseSensitive")||"1"===e(this).data("caseSensitive");t&&i.push({pattern:t,caseSensitive:a})}),i},updateDraftTagCount:function(t,i,a){var s=this,r=t.find(".pattern-match-count"),n=r.find(".count-value"),o=t.closest(".target-block").data("blockType")||"products";n.html(''),r.show(),r.data("pattern",i),r.data("caseSensitive",a),r.data("entityType",o),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countPatternMatches",trait:"EntitySelector",pattern:i,field:"name",entity_type:o,case_sensitive:a?1:0},success:function(e){if(e.success){var i=parseInt(e.count,10)||0;n.text(i),r.show(),r.removeClass("count-zero count-found"),r.addClass(0===i?"count-zero":"count-found"),r.data("count",i);var a=t.closest(".selection-group");a.length&&s.updateGroupTotalCount(a)}else n.text("?"),r.show()},error:function(){n.text("?"),r.show()}})},updateConditionCountWithPendingPattern:function(t,i){this.config.trans;var a=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count").first();if(a.length){var s=t.hasClass("exclude-row"),r=(s?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(r){var n=s?t.find(".exclude-picker"):t.find(".include-picker");if("pattern"===(n.data("valueType")||"none")){var o=this.getPatternTags(n);if(i&&o.push({pattern:i,caseSensitive:!1}),0!==o.length){var l=t.closest(".target-block").data("blockType")||"products";a.find(".preview-count").html(''),a.removeClass("clickable no-matches").show(),a.data("conditionData",{method:r,values:o,blockType:l,isExclude:s}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:r,values:JSON.stringify(o),block_type:l},success:function(e){if(e&&e.success){var t=e.count||0;a.removeClass("no-matches clickable"),0===t?(a.find(".preview-count").text(t),a.addClass("no-matches").show()):(a.find(".preview-count").text(t),a.addClass("clickable").show())}else a.hide().removeClass("clickable")},error:function(){a.hide().removeClass("clickable")}})}else a.hide()}}else a.hide()}},fetchPatternMatchCount:function(t,i,a){var s=t.closest(".exclude-row"),r=-1!==((s.length?s.find(".exclude-method-select"):t.closest(".selection-group").find(".include-method-select")).val()||"").indexOf("reference")?"reference":"name",n=t.closest(".target-block").data("blockType")||"products";a.find(".preview-count").html(''),a.removeClass("clickable no-matches").show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countPatternMatches",trait:"EntitySelector",pattern:i,field:r,entity_type:n,case_sensitive:0},success:function(e){if(e&&e.success){var t=e.count||0;a.find(".preview-count").text(t),a.removeClass("no-matches clickable").show(),0===t?a.addClass("no-matches"):a.addClass("clickable")}else a.hide()},error:function(){a.hide()}})},getPickerValues:function(t,i){switch(i){case"entity_search":var a=[];return t.find(".entity-chip").each(function(){var t=e(this).data("id");t&&a.push(t)}),a;case"pattern":var s=this.getPatternTags(t),r=t.find(".draft-tag .pattern-input"),n=e.trim(r.val());if(n){var o="1"===r.closest(".draft-tag").attr("data-case-sensitive");s.push({pattern:n,caseSensitive:o})}return s;case"numeric_range":return{min:t.find(".range-min-input").val()||null,max:t.find(".range-max-input").val()||null};case"date_range":return{from:t.find(".date-from-input").val()||null,to:t.find(".date-to-input").val()||null};case"select":return[t.find(".select-value-input").val()];case"boolean":return[!0];default:return[]}},updateConditionCount:function(t){this.config.trans;var i=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count").first();if(i.length){var a=t.hasClass("exclude-row"),s=(a?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(s){var r=a?t.find(".exclude-picker"):t.find(".include-picker"),n=r.data("valueType")||"none",o=this.getPickerValues(r,n),l=!o||Array.isArray(o)&&0===o.length||"object"==typeof o&&!Array.isArray(o)&&("combination_attributes"===n&&void 0!==o.attributes&&0===Object.keys(o.attributes).length||"combination_attributes"!==n&&0===Object.keys(o).length);if("none"!==n&&"boolean"!==n&&l)i.hide();else{var c=t.closest(".target-block").data("blockType")||"products";i.find(".preview-count").html(''),i.removeClass("clickable no-matches").show(),i.data("conditionData",{method:s,values:o,blockType:c,isExclude:a}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:s,values:JSON.stringify(o),block_type:c},success:function(e){if(e&&e.success){var t=e.count||0;i.removeClass("no-matches clickable"),0===t?(i.find(".preview-count").text(t),i.addClass("no-matches").show()):(i.find(".preview-count").text(t),i.addClass("clickable").show())}else i.hide().removeClass("clickable")},error:function(){i.hide().removeClass("clickable")}})}}else i.hide()}},updateGroupCounts:function(t){var i=this,a=t.find(".group-include");a.length&&this.updateConditionCount(a),t.find(".exclude-row").each(function(){i.updateConditionCount(e(this))}),this.updateGroupTotalCount(t)},updateGroupTotalCount:function(t){var i=t.closest(".target-block").data("blockType")||"products",a=t.find(".group-header .group-count-badge"),s=t.find(".group-modifier-limit"),r=this.serializeGroup(t,i);if(!r.include||!r.include.method)return a.hide(),void s.attr("placeholder","–");a.html('').show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countGroupItems",trait:"EntitySelector",group_data:JSON.stringify(r),block_type:i},success:function(e){if(e&&e.success){var n=e.final_count||0,o=e.exclude_count||0,l=' '+n;o>0&&(l+=' (-'+o+")"),a.html(l),a.addClass("clickable").show(),a.data("groupData",r),a.data("blockType",i),a.data("finalCount",n),s.attr("placeholder",n);var c=t.find(".group-preview-badge .preview-count");if(c.length){var d=parseInt(s.val(),10),p=d>0&&dn&&(n=t)});var o=n+1,l=this.buildMethodOptions(r,!1),c=(this.buildMethodOptions(r,!0),'
');c+='
',c+='',c+='',c+='',c+='',c+="",c+='",c+="
",c+='
',c+='
',c+='
',c+='
',c+='",c+=' 0',c+='',c+="
",c+='",c+="
",c+="
",c+='
',c+='",c+="
",c+='
',c+='',c+=''+(s.limit||"Limit")+"",c+='',c+="",c+='',c+=''+(s.sort||"Sort")+"",c+='",c+='",c+="",c+='',c+=' ',c+="",c+="
",c+="
",c+="
",a.append(c);var d=a.find('.selection-group[data-group-index="'+o+'"]');this.enhanceMethodSelect(d.find(".include-method-select")),d.find(".include-method-select").val("all").trigger("change"),this.updateBlockStatus(t),this.serializeAllBlocks()},removeGroup:function(e,t){e.remove();var i=t.find(".groups-container");if(0===i.find(".selection-group").length){var a='
';a+=''+this.getEmptyStateText(t)+"",a+="
",i.html(a)}this.updateBlockStatus(t),this.serializeAllBlocks(),this.updateTabBadges()},clearAllConditions:function(){var t=this;this.$wrapper.find(".target-block").each(function(){var i=e(this),a=i.find(".groups-container");a.find(".selection-group").remove();var s='
';s+=''+t.getEmptyStateText(i)+"",s+="
",a.html(s),t.updateBlockStatus(i)}),this.serializeAllBlocks(),this.updateTabBadges(),this.updateHeaderTotalCount()},switchToBlock:function(e){this.$wrapper.find(".target-block-tab").removeClass("active"),this.$wrapper.find('.target-block-tab[data-block-type="'+e+'"]').addClass("active"),this.$wrapper.find(".target-block").removeClass("active").hide(),this.$wrapper.find('.target-block[data-block-type="'+e+'"]').addClass("active").show(),this.hideDropdown()},updateTabBadges:function(){var t=this;this.$wrapper.find(".target-block-tab").each(function(){var i=e(this),a=i.data("blockType"),s=t.$wrapper.find('.target-block[data-block-type="'+a+'"]').find(".selection-group").length,r=i.find(".tab-badge");s>0?(r.length?r.addClass("loading").html(''):i.append(''),i.addClass("has-data"),t.fetchProductCount(a,i)):(r.remove(),i.removeClass("has-data"))}),this.updateTargetSwitchState()},updateTargetSwitchState:function(){var t=this.$wrapper.find(".prestashop-switch");if(t.length){var i=!1;this.$wrapper.find(".target-block").each(function(){if(e(this).find(".selection-group").length>0)return i=!0,!1}),i?t.find('input[value="0"]').prop("checked",!0):t.find('input[value="1"]').prop("checked",!0)}},fetchProductCount:function(t,i){var a=this,s={},r=this.$wrapper.find('input[name="'+this.config.name+'"]'),n={};try{n=JSON.parse(r.val()||"{}")}catch(e){n={}}var o=n[t]&&n[t].groups?n[t].groups:[];if(0===o.length)return i.find(".tab-badge").remove(),i.removeClass("has-data"),void i.removeData("previewData");var l=i.find(".tab-badge");l.length?l.addClass("loading").html(''):(l=e(''),i.append(l)),i.addClass("has-data"),s[t]={groups:o},e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewEntitySelector",trait:"EntitySelector",conditions:JSON.stringify(s),block_type:t,limit:10},success:function(e){e.success?(i.find(".tab-badge").removeClass("loading").html(' '+e.count),i.data("previewData",e),a.updateHeaderTotalCount()):i.find(".tab-badge").remove()},error:function(){i.find(".tab-badge").remove(),a.updateHeaderTotalCount()}})},updateHeaderTotalCount:function(){var t=0;this.$wrapper.find(".target-block-tab .tab-badge").each(function(){var i=e(this);if(!i.hasClass("loading")){var a=parseInt(i.text(),10);isNaN(a)||(t+=a)}});var i=this.$wrapper.find(".trait-total-count");t>0?i.text(t).show():i.hide(),this.updateShowAllToggle()},updateShowAllToggle:function(){var e=this.$wrapper.find(".trait-show-all-toggle");if(e.length){var t=e.find(".show-all-checkbox"),i=this.$wrapper.find(".target-block-tab.has-data").length>0;t.prop("checked",!i)}},updateBlockStatus:function(e){var t=e.find(".block-status"),i=e.data("blockType"),a=this.config.blocks[i]||{},s=this.config.trans||{},r=this.getBlockGroups(e);0===r.length?!1!==this.config.emptyMeansAll?t.text((s.all||"All")+" "+(a.entity_label_plural||"items")):t.text(s.nothing_selected||"Nothing selected"):t.text(r.length+" "+(1===r.length?s.group||"group":s.groups||"groups"))},getEmptyStateText:function(e){var t=e.data("blockType"),i=e.data("mode")||"multi",a=this.config.blocks[t]||{},s=this.config.trans||{},r=!1!==this.config.emptyMeansAll;return"single"===i?s.no_item_selected||"No item selected":r?(s.all||"All")+" "+(a.entity_label_plural||"items")+" "+(s.included||"included"):s.nothing_selected||"Nothing selected"},serializeGroup:function(t,i){var a=this,s=t.find(".include-method-select").val()||"all",r=t.find(".include-picker"),n=this.getPickerValues(r),o=[];t.find(".group-excludes.has-excludes").length&&t.find(".exclude-row").each(function(){var t=e(this),i=t.find(".exclude-method-select").val()||null,s=t.find(".exclude-picker"),r=a.getPickerValues(s);i&&r&&(!Array.isArray(r)||r.length>0)&&o.push({method:i,values:r})});var l={include:{method:s,values:n}};o.length>0&&(l.excludes=o);var c=this.getGroupModifiers(t);return(c.limit||c.sort_by)&&(l.modifiers=c),l},serializeAllBlocks:function(t){var i=this,a={};this.$wrapper.find(".target-block").each(function(){var t=e(this),s=t.data("blockType"),r=i.getBlockGroups(t);r.length>0&&(a[s]={groups:r}),i.updateBlockStatus(t)}),this.$wrapper.find('input[name="'+this.config.name+'"]').val(JSON.stringify(a)),this.updateTabBadges(),this.countUpdateTimeout&&clearTimeout(this.countUpdateTimeout),this.countUpdateTimeout=setTimeout(function(){if(t&&t.length){i.updateConditionCount(t);var e=t.closest(".selection-group");e.length&&i.updateGroupTotalCount(e)}else i.updateAllConditionCounts()},500)},getBlockGroups:function(t){var i=this,a=[];return t.find(".selection-group").each(function(){var t=e(this),s=t.find(".include-method-select").val()||"all",r=t.find(".include-picker"),n=i.getPickerValues(r);if(!i.isConditionValid(s,n,r))return!0;var o=[];t.find(".group-excludes.has-excludes").length&&t.find(".exclude-row").each(function(){var t=e(this),a=t.find(".exclude-method-select").val()||null,s=t.find(".exclude-picker"),r=i.getPickerValues(s);a&&i.isConditionValid(a,r,s)&&o.push({method:a,values:r})});var l={include:{method:s,values:n}},c=e.trim(t.attr("data-group-name")||"");c&&(l.name=c),o.length>0&&(l.excludes=o);var d=i.getGroupModifiers(t);(d.limit||d.sort_by)&&(l.modifiers=d),a.push(l)}),a},getGroupModifiers:function(e){var t=e.find(".group-modifier-limit").val(),i=e.find(".group-modifier-sort").val()||"sales",a=e.find(".group-modifiers .btn-sort-dir").data("dir")||"DESC";return{limit:t?parseInt(t,10):null,sort_by:i||null,sort_dir:a||"DESC"}},getPickerValues:function(t){var i=t.attr("data-value-type")||"entity_search",a=[];switch(i){case"entity_search":t.find(".entity-chip").each(function(){var t=e(this).data("id");a.push(isNaN(t)?t:Number(t))});break;case"pattern":a=this.getPatternTags(t);var s=t.find(".draft-tag .pattern-input"),r=e.trim(s.val());if(r){var n="1"===s.closest(".draft-tag").attr("data-case-sensitive");a.push({pattern:r,caseSensitive:n})}break;case"numeric_range":var o=t.find(".range-min-input").val(),l=t.find(".range-max-input").val();""===o&&""===l||(a={min:""!==o?parseFloat(o):null,max:""!==l?parseFloat(l):null});break;case"date_range":var c=t.find(".date-from-input").val(),d=t.find(".date-to-input").val();(c||d)&&(a={from:c||null,to:d||null});break;case"select":var p=t.find(".select-value-input").val();p&&(a=[p]);break;case"boolean":a=[!0];break;case"multi_numeric_range":var u=[];t.find(".range-chip").each(function(){var t=e(this),i=t.data("min"),a=t.data("max");u.push({min:""!==i&&void 0!==i?parseFloat(i):null,max:""!==a&&void 0!==a?parseFloat(a):null})}),u.length>0&&(a=u);break;case"multi_select_tiles":t.find(".tile-option.selected").each(function(){a.push(e(this).data("value"))});break;case"combination_attributes":var h={};if(t.find(".comb-attr-value.selected").each(function(){var t=e(this).data("groupId").toString(),i=e(this).data("valueId");h[t]||(h[t]=[]),h[t].push(i)}),Object.keys(h).length>0){var f,v=t.find(".combination-attributes-picker").data("combinationMode")||this.config.combinationMode||"products";f="toggle"===v?t.find(".comb-mode-radio:checked").val()||"products":v,a={mode:f,attributes:h}}}return a},isConditionValid:function(e,t,i){if("all"===e)return!0;var a=i.attr("data-value-type")||"entity_search";return"boolean"===a||(Array.isArray(t)?t.length>0:"object"==typeof t&&null!==t&&("combination_attributes"===a&&void 0!==t.attributes?Object.keys(t.attributes).length>0:Object.keys(t).some(function(e){return null!==t[e]&&""!==t[e]})))},updateAllConditionCounts:function(){var t=this;this.$wrapper.find(".target-block.active .selection-group").each(function(){t.updateGroupCounts(e(this))})},updateGroupCounts:function(t){var i=this,a=t.find(".group-include");a.length&&this.updateConditionCount(a),t.find(".exclude-row").each(function(){i.updateConditionCount(e(this))}),this.updateGroupTotalCount(t)},updateConditionCount:function(t){this.config.trans;var i=t.find(".method-selector-wrapper > .condition-match-count, > .exclude-header-row .condition-match-count").first();if(i.length){var a=t.hasClass("exclude-row"),s=(a?t.find(".exclude-method-select"):t.find(".include-method-select")).val();if(s){var r=a?t.find(".exclude-picker"):t.find(".include-picker"),n=r.data("valueType")||"none",o=this.getPickerValues(r,n),l=!o||Array.isArray(o)&&0===o.length||"object"==typeof o&&!Array.isArray(o)&&("combination_attributes"===n&&void 0!==o.attributes&&0===Object.keys(o.attributes).length||"combination_attributes"!==n&&0===Object.keys(o).length);if("none"!==n&&"boolean"!==n&&l)i.hide();else{var c=t.closest(".target-block").data("blockType")||"products";i.find(".preview-count").html(''),i.removeClass("clickable no-matches").show(),i.data("conditionData",{method:s,values:o,blockType:c,isExclude:a}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countConditionMatches",trait:"EntitySelector",method:s,values:JSON.stringify(o),block_type:c},success:function(e){if(e&&e.success){var t=e.count||0;i.removeClass("no-matches clickable"),0===t?(i.find(".preview-count").text(t),i.addClass("no-matches").show()):(i.find(".preview-count").text(t),i.addClass("clickable").show())}else i.hide().removeClass("clickable")},error:function(){i.hide().removeClass("clickable")}})}}else i.hide()}},updateGroupTotalCount:function(t){var i=t.closest(".target-block").data("blockType")||"products",a=t.find(".group-header .group-count-badge"),s=t.find(".group-modifier-limit"),r=this.serializeGroup(t,i);if(!r.include||!r.include.method)return a.hide(),void s.attr("placeholder","–");a.html('').show(),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"countGroupItems",trait:"EntitySelector",group_data:JSON.stringify(r),block_type:i},success:function(e){if(e&&e.success){var n=e.final_count||0,o=e.exclude_count||0,l=' '+n;o>0&&(l+=' (-'+o+")"),a.html(l),a.addClass("clickable").show(),a.data("groupData",r),a.data("blockType",i),a.data("finalCount",n),s.attr("placeholder",n);var c=t.find(".group-preview-badge .preview-count");if(c.length){var d=parseInt(s.val(),10),p=d>0&&d';s+=' '+(a.except||"EXCEPT")+"",s+="",s+='
',s+=this.buildExcludeRowHtml(t,0),s+="
",s+='",i.addClass("has-excludes").html(s),this.updateMethodSelectorLock(e,!0),this.serializeAllBlocks()},addExcludeRow:function(t,i){var a=t.find(".exclude-rows-container"),s=-1;a.find(".exclude-row").each(function(){var t=parseInt(e(this).data("excludeIndex"),10);t>s&&(s=t)});var r=s+1,n=this.buildExcludeRowHtml(i,r);a.append(n);var o=a.find('.exclude-row[data-exclude-index="'+r+'"]');this.enhanceMethodSelect(o.find(".exclude-method-select")),this.serializeAllBlocks()},buildExcludeRowHtml:function(t,i){var a=t.data("blockType"),s=(this.config.blocks[a]||{}).selection_methods||{},r=this.config.trans||{},n=this.buildMethodOptions(s,!0),o=a,l="entity_search";e.each(s,function(e,t){return"all"===e||(o=t.search_entity||a,l=t.value_type||"entity_search",!1)});var c='
';return c+='
',c+='
',c+='",c+=' 0',c+='',c+="
",c+='",c+="
",(c+=this.buildValuePickerHtml("exclude",l,o,s))+"
"},removeExcludeRow:function(e,t,i){var a=t.find(".exclude-rows-container"),s=this.config.trans||{};e.remove(),0===a.find(".exclude-row").length&&(t.find(".group-excludes").removeClass("has-excludes").html('"),this.updateMethodSelectorLock(t,!1)),this.serializeAllBlocks()},buildMethodOptions:function(t,i){var a=this,s=this.config.trans||{},r="",n={select_by:s.select_by||"Select by...",filter_by:s.filter_by||"Filter by..."},o={},l={};return e.each(t,function(e,t){if(i&&"all"===e)return!0;var a=t.group||"";a?(o[a]||(o[a]={}),o[a][e]=t):l[e]=t}),e.each(l,function(e,t){r+=a.buildMethodOption(e,t)}),e.each(o,function(t,i){var s=n[t]||t.replace(/_/g," ");r+='',e.each(i,function(e,t){r+=a.buildMethodOption(e,t)}),r+=""}),r},buildMethodOption:function(e,t){var i='"},buildValuePickerHtml:function(e,t,i,a){var s=this.config.trans||{},r=e+"-picker",n=e+"-chips",o=e+"-values-data",l="";if("none"===t)return l='";switch(l='
',t){case"entity_search":var c=s.no_items_selected||"No items selected - use search below";l+='
',l+='",l+='';break;case"pattern":var d=""+this.escapeHtml(s.pattern_help_title||"Pattern Syntax")+"";d+='
',d+='
* '+this.escapeHtml(s.pattern_help_wildcard||"any text (wildcard)")+"
",d+='
{number} '+this.escapeHtml(s.pattern_help_number||"any number (e.g. 100, 250)")+"
",d+='
{letter} '+this.escapeHtml(s.pattern_help_letter||"single letter (A-Z)")+"
",d+="
",d+='
',d+=""+this.escapeHtml(s.pattern_help_examples||"Examples:")+"",d+='
*cotton* '+this.escapeHtml(s.pattern_example_1||'contains "cotton"')+"
",d+='
iPhone {number} Pro* '+this.escapeHtml(s.pattern_example_2||'matches "iPhone 15 Pro Max"')+"
",d+='
Size {letter} '+this.escapeHtml(s.pattern_example_3||'matches "Size M", "Size L"')+"
",d+="
";var p=s.no_patterns||"No patterns - press Enter to add";l+='
',l+='
',l+='
',l+='',l+='',l+=' ',l+='',l+="
",l+='',l+='',l+="",l+="
",l+='';break;case"numeric_range":l+='
',l+='',l+='-',l+='',l+="
",l+='';break;case"multi_numeric_range":l+='
',l+='
',l+='
',l+='',l+='-',l+='',l+='',l+="
",l+="
",l+='';break;case"multi_select_tiles":l+='
',l+="
",l+='';break;case"date_range":l+='
',l+='',l+='-',l+='',l+="
",l+='';break;case"select":l+='
',l+='',l+="
",l+='';break;case"boolean":l+='
',l+=''+this.escapeHtml(s.yes||"Yes")+"",l+="
",l+='';break;case"combination_attributes":this.escapeHtml(s.combination_help_title||"Combination Targeting"),this.escapeHtml(s.combination_help_desc||"Select attributes to target specific product combinations."),this.escapeHtml(s.combination_help_logic||"Logic:"),this.escapeHtml(s.combination_help_within||"Within group: OR (Red OR Blue)"),this.escapeHtml(s.combination_help_between||"Between groups: AND (Color AND Size)");var u=this.config.combinationMode||"products",h="toggle"===u,f=h?"products":u;l+='
',h&&(l+='
',l+='",l+='",l+="
"),l+='
',l+=' '+this.escapeHtml(s.loading||"Loading...")+"",l+="
",l+="
",l+='';break;default:l+=''}return l+"
"},getSortOptionsArray:function(e){var t=this.config.trans||{};switch(e){case"products":return[{value:"sales",label:t.sort_bestsellers||"Best sellers"},{value:"date_add",label:t.sort_newest||"Newest"},{value:"price",label:t.sort_price||"Price"},{value:"name",label:t.sort_name||"Name"},{value:"position",label:t.sort_position||"Position"},{value:"quantity",label:t.sort_stock||"Stock quantity"},{value:"random",label:t.sort_random||"Random"}];case"categories":return[{value:"name",label:t.sort_name||"Name"},{value:"position",label:t.sort_position||"Position"},{value:"product_count",label:t.sort_products||"Products count"},{value:"date_add",label:t.sort_newest||"Newest"}];default:return[{value:"name",label:t.sort_name||"Name"},{value:"date_add",label:t.sort_newest||"Newest"}]}},getSortIconClass:function(e,t){var i="ASC"===t;switch(e){case"name":return i?"icon-sort-alpha-asc":"icon-sort-alpha-desc";case"price":case"quantity":case"product_count":case"date_add":case"newest_products":case"position":return i?"icon-sort-numeric-asc":"icon-sort-numeric-desc";case"sales":case"total_sales":default:return i?"icon-sort-amount-asc":"icon-sort-amount-desc";case"random":return"icon-random"}},cycleSortOption:function(e,t){for(var i,a,s,r=this.getSortOptionsArray(t),n=e.data("sort")||"sales",o=e.data("dir")||"DESC",l=-1,c=0;c0)return t=!0,!1}),t?(this.clearValidationError(),!0):(this.showValidationError(),!1)},showValidationError:function(){this.$wrapper.addClass("has-validation-error");var t=this.$wrapper.data("required-message")||"Please select at least one item";this.$wrapper.find(".trait-validation-error").remove();var i=e("
",{class:"trait-validation-error",html:' '+t});this.$wrapper.find(".condition-trait-header").after(i),e("html, body").animate({scrollTop:this.$wrapper.offset().top-100},300),this.$wrapper.find(".condition-trait-body").is(":visible")||(this.$wrapper.find(".condition-trait-body").slideDown(200),this.$wrapper.removeClass("collapsed"))},clearValidationError:function(){this.$wrapper.removeClass("has-validation-error"),this.$wrapper.find(".trait-validation-error").remove()}}}(jQuery),function(e){"use strict";window._EntitySelectorMixins=window._EntitySelectorMixins||{},window._EntitySelectorMixins.methods={initMethodDropdowns:function(){var t=this;this.$wrapper.find(".include-method-select").each(function(){t.enhanceMethodSelect(e(this))}),this.$wrapper.find(".exclude-method-select").each(function(){t.enhanceMethodSelect(e(this))}),this.initMethodInfoPlaceholders()},initMethodInfoPlaceholders:function(){var t=this;this.$wrapper.find(".selection-group").each(function(){var i=e(this),a=i.closest(".target-block").data("blockType")||"products",s=i.find(".include-method-select").val()||"all";t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),s,a),i.find(".exclude-row").each(function(){var i=e(this),s=i.find(".exclude-method-select").val();s&&t.updateMethodInfoPlaceholder(i.find(".method-selector-wrapper"),s,a)})})},enhanceMethodSelect:function(t){var i=this;if(t.length&&!t.data("methodDropdownInit")){t.data("methodDropdownInit",!0),t.addClass("method-select-hidden");var a=t.find("option:selected"),s=a.data("icon")||"icon-caret-down",r=a.text(),n='
';n+='',n+=''+this.escapeHtml(r)+"",n+='';var o=e(n+="
");t.after(o),o.on("click",function(e){e.preventDefault(),e.stopPropagation(),t.closest(".method-selector-wrapper").hasClass("selector-locked")||i.showMethodDropdownMenu(t,o)}),t.on("change.methodDropdown",function(){i.updateMethodTrigger(t,o)})}},updateMethodTrigger:function(e,t){var i=e.find("option:selected"),a=i.data("icon")||"icon-caret-down",s=i.text();t.find(".method-trigger-icon").attr("class",a+" method-trigger-icon"),t.find(".method-trigger-label").text(s)},showMethodDropdownMenu:function(t,i){var a=this;this.closeMethodDropdownMenu();var s=this.buildMethodDropdownMenuHtml(t),r=e(s),n=i.offset(),o=i.outerWidth(),l=i.outerHeight();r.css({position:"absolute",top:n.top+l+2,left:n.left,minWidth:o,zIndex:10001}),e("body").append(r),this.$methodDropdownMenu=r,this.$methodDropdownSelect=t,this.$methodDropdownTrigger=i,r.on("click",".method-dropdown-item",function(i){i.preventDefault(),i.stopPropagation();var s=e(this).data("value");t.val(s).trigger("change"),a.closeMethodDropdownMenu()}),e(document).on("click.methodDropdown",function(t){e(t.target).closest(".method-dropdown-menu, .method-dropdown-trigger").length||a.closeMethodDropdownMenu()}),e(document).on("keydown.methodDropdown",function(e){27===e.keyCode&&a.closeMethodDropdownMenu()})},buildMethodDropdownMenuHtml:function(t){var i=this,a='
';return t.children("option").each(function(){var t=e(this),s=t.data("icon")||"icon-asterisk",r=t.text(),n=t.val(),o=t.is(":selected");a+='
',a+='',a+=''+i.escapeHtml(r)+"",o&&(a+=''),a+="
"}),t.children("optgroup").each(function(){var t=e(this),s=t.attr("label")||"";a+='
',a+='
'+i.escapeHtml(s)+"
",a+='
',t.children("option").each(function(){var t=e(this),s=t.data("icon")||"icon-cog",r=t.text(),n=t.val(),o=t.is(":selected");a+='
',a+='',a+=''+i.escapeHtml(r)+"",o&&(a+=''),a+="
"}),a+="
",a+="
"}),a+="
"},closeMethodDropdownMenu:function(){this.$methodDropdownMenu&&(this.$methodDropdownMenu.remove(),this.$methodDropdownMenu=null),this.$methodDropdownSelect=null,this.$methodDropdownTrigger=null,e(document).off("click.methodDropdown keydown.methodDropdown")},populateTiles:function(t,i,a){var s=t.find(".multi-select-tiles");s.empty(),a?s.attr("data-exclusive","true"):s.removeAttr("data-exclusive"),e.each(i,function(t,i){var a="object"==typeof i?i.label:i,r="object"==typeof i&&i.icon?i.icon:null,n="object"==typeof i&&i.color?i.color:null,o="tile-option";n&&(o+=" tile-color-"+n);var l=e("',c+="
",c+='
',c+='',c+="
",r.length>0){if(c+='
',c+=this.renderPreviewItems(r),c+="
",o){var d=n-r.length;c+='"}}else c+='
'+(a.no_preview||"No items to preview")+"
";var p=e(c+="");e("body").append(p),this.$previewPopover=p,this.$previewList=p.find(".preview-list"),this.previewLoadedCount=r.length,this.previewTotalCount=n,this.previewContext=t.context||{},this.previewOnLoadMore=t.onLoadMore||null,p.find(".preview-close").on("click",function(){i.hidePreviewPopover()}),p.find(".preview-filter-input").on("input",function(){var t=e(this).val().toLowerCase().trim();i.filterPreviewItems(t)}),t.onLoadMore&&p.find(".btn-load-more").on("click",function(){var a=e(this),s=a.closest(".load-more-controls").find(".load-more-select");if(!a.hasClass("loading")){a.addClass("loading"),a.find("i").removeClass("icon-plus").addClass("icon-spinner icon-spin"),s.prop("disabled",!0);var r=parseInt(s.val(),10)||20;i.previewLoadCount=r,t.onLoadMore.call(i,a)}});var u=s.offset(),h=s.outerHeight(),f=s.outerWidth(),v=p.outerWidth(),m=u.left+f/2-v/2,g=e(window).width()-v-10;return m=Math.max(10,Math.min(m,g)),p.css({position:"absolute",top:u.top+h+8,left:m,zIndex:1e4}),p.addClass("show"),p},updatePreviewPopover:function(e,t){var i=this.config.trans||{};this.$previewList.html(this.renderPreviewItems(e)),this.previewLoadedCount=e.length;var a=this.$previewPopover.find(".preview-footer");if(t){var s=this.previewTotalCount-e.length,r=a.find(".load-more-controls"),n=r.find(".btn-load-more"),o=r.find(".load-more-select");n.removeClass("loading"),n.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),o.prop("disabled",!1),r.find(".remaining-count").text(s),o.empty(),s>=10&&o.append(''),s>=20&&o.append(''),s>=50&&o.append(''),s>=100&&o.append(''),o.append('")}else a.remove();var l=this.$previewPopover.find(".preview-filter-input").val();l&&this.filterPreviewItems(l.toLowerCase().trim())},renderPreviewItems:function(e){for(var t="",i=0;i",a.image?t+='':t+='
inventory_2
',t+='
',t+='
'+this.escapeHtml(a.name||"Unnamed")+"
";var n=[];a.reference&&n.push("Ref: "+a.reference),a.manufacturer&&n.push(a.manufacturer),a.category&&n.push(a.category),a.attributes&&n.push(a.attributes),n.length>0&&(t+='
'+this.escapeHtml(n.join(" • "))+"
"),t+="
",void 0!==a.price&&null!==a.price?t+='
'+this.formatPrice(a.price)+"
":a.price_formatted&&(t+='
'+this.escapeHtml(a.price_formatted)+"
"),void 0===a.active||a.active||(t+='Inactive'),t+=""}return t},filterPreviewItems:function(t){if(this.$previewList){var i=this.$previewList.find(".preview-item");t?i.each(function(){var i=e(this),a=i.data("name")||"",s=i.data("ref")||"",r=i.data("attrs")||"",n=-1!==a.indexOf(t)||-1!==s.indexOf(t)||-1!==r.indexOf(t);i.toggle(n)}):i.show()}},formatPrice:function(e){"number"!=typeof e&&(e=parseFloat(e)||0);var t=this.config&&this.config.currency_sign||"€",i=this.config&&this.config.currency_format||"right",a=e.toFixed(2);return"left"===i?t+" "+a:a+" "+t},hidePreviewPopover:function(){this.$activeBadge&&(this.$activeBadge.removeClass("popover-open loading"),this.$activeBadge=null),this.$previewPopover&&(this.$previewPopover.remove(),this.$previewPopover=null),this.$previewList=null,this.previewContext=null,this.previewOnLoadMore=null},showPreviewPopover:function(e){var t=this,i=e.data("previewData");if(i){this.hidePreviewPopover();var a=e.find(".tab-badge");a.addClass("popover-open"),this.$activeBadge=a;var s=i.items||i.products||[],r=e.data("blockType"),n=(this.config.blocks&&this.config.blocks[r]?this.config.blocks[r]:{}).entity_label_plural||"items";this.previewBlockType=r,this.createPreviewPopover({$badge:a,items:s,totalCount:i.count,hasMore:i.hasMore,entityLabel:n,previewType:"tab",context:{$tab:e,blockType:r},onLoadMore:function(i){t.loadMoreTabPreviewItems(e,i)}})}},loadMoreTabPreviewItems:function(t,i){var a=this,s=this.previewBlockType,r=this.$wrapper.find('input[name="'+this.config.name+'"]'),n={};try{n=JSON.parse(r.val()||"{}")}catch(e){return}var o=n[s]&&n[s].groups?n[s].groups:[];if(0!==o.length){var l={};l[s]={groups:o};var c=this.previewLoadCount||20;e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewTargetConditions",trait:"TargetConditions",conditions:JSON.stringify(l),block_type:s,limit:a.previewLoadedCount+c,offset:0},success:function(e){var i=e.items||e.products||[];e.success&&i.length>0&&(t.data("previewData",e),a.previewTotalCount=e.count,a.updatePreviewPopover(i,e.hasMore))},error:function(){var e=i.closest(".load-more-controls").find(".load-more-select");i.removeClass("loading"),i.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),e.prop("disabled",!1)}})}},showConditionPreviewPopover:function(t){var i=this,a=t.data("conditionData");if(a){this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t;var s=a.blockType||"products",r=(this.config.blocks&&this.config.blocks[s]?this.config.blocks[s]:{}).entity_label_plural||"products";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewConditionItems",trait:"EntitySelector",method:a.method,values:JSON.stringify(a.values),block_type:s,limit:10},success:function(e){t.removeClass("loading"),e.success?i.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count,hasMore:e.hasMore,entityLabel:r,previewType:"condition",context:{conditionData:a,blockType:s},onLoadMore:function(e){i.loadMoreConditionItems(e)}}):(t.removeClass("popover-open"),i.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),i.$activeBadge=null}})}},loadMoreConditionItems:function(t){var i=this,a=this.previewContext;if(a&&a.conditionData){var s=this.previewLoadCount||20;e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewConditionItems",trait:"EntitySelector",method:a.conditionData.method,values:JSON.stringify(a.conditionData.values),block_type:a.blockType,limit:i.previewLoadedCount+s},success:function(e){e.success&&(i.previewTotalCount=e.count,i.updatePreviewPopover(e.items||[],e.hasMore))},error:function(){var e=t.closest(".load-more-controls").find(".load-more-select");t.removeClass("loading"),t.find("i").removeClass("icon-spinner icon-spin").addClass("icon-plus"),e.prop("disabled",!1)}})}},showGroupPreviewPopover:function(t,i,a){var s=this;if(i||(i=t.closest(".selection-group")),!a){var r=t.closest(".target-block");a=r.data("blockType")||"products"}var n=t.data("groupData");if(n||(n=this.serializeGroup(i,a)),n&&n.include){this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t;var o=(this.config.blocks&&this.config.blocks[a]?this.config.blocks[a]:{}).entity_label_plural||"products";e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewGroupItems",trait:"EntitySelector",group_data:JSON.stringify(n),block_type:a,limit:10},success:function(e){t.removeClass("loading"),e.success?s.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count,hasMore:e.hasMore,entityLabel:o,previewType:"group",context:{groupData:n,blockType:a,$group:i},onLoadMore:function(e){s.loadMoreGroupItems(e)}}):(t.removeClass("popover-open"),s.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),s.$activeBadge=null}})}},loadMoreGroupItems:function(t){var i=this,a=this.previewContext;if(a&&a.groupData){var s=this.previewLoadCount||20;e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewGroupItems",trait:"EntitySelector",group_data:JSON.stringify(a.groupData),block_type:a.blockType,limit:i.previewLoadedCount+s},success:function(e){e.success&&(i.previewTotalCount=e.count,i.updatePreviewPopover(e.items||[],e.hasMore))},error:function(){t.removeClass("loading"),t.find(".load-more-text").show(),t.find(".load-more-loading").hide()}})}},showFilterGroupPreviewPopover:function(t,i,a,s){var r=this;this.hidePreviewPopover(),t.addClass("popover-open loading"),this.$activeBadge=t,e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewFilterGroupProducts",trait:"EntitySelector",group_id:i,group_type:a,limit:10},success:function(e){t.removeClass("loading"),e.success?r.createPreviewPopover({$badge:t,items:e.items||[],totalCount:e.count||0,hasMore:e.hasMore||!1,entityLabel:"products",previewType:"filter-group",context:{groupId:i,groupType:a,groupName:s},onLoadMore:function(e){r.loadMoreFilterGroupItems(e)}}):(t.removeClass("popover-open"),r.$activeBadge=null)},error:function(){t.removeClass("loading popover-open"),r.$activeBadge=null}})},loadMoreFilterGroupItems:function(t){var i=this,a=this.previewContext;if(a&&a.groupId){var s=this.previewLoadCount||20;e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewFilterGroupProducts",trait:"EntitySelector",group_id:a.groupId,group_type:a.groupType,limit:i.previewLoadedCount+s},success:function(e){e.success&&(i.previewTotalCount=e.count,i.updatePreviewPopover(e.items||[],e.hasMore))},error:function(){t.removeClass("loading"),t.find(".load-more-text").show(),t.find(".load-more-loading").hide()}})}},showPatternPreviewModal:function(t,i,a,s){var r=this,n=this.config.trans||{},o=this.config.blocks&&this.config.blocks[i]?this.config.blocks[i]:{},l=o.entity_label_plural||"items",c=o.entity_label||"item",d='
';d+='
',d+='
',d+='',d+=' '+(n.preview||"Preview")+": "+this.escapeHtml(t)+"",d+="",d+=''+s+" "+(1===s?c:l)+"",d+='',d+="
",d+='
',d+='
'+(n.loading||"Loading...")+"
",d+="
",d+="
";var p=e(d+="
");e("body").append(p),p.find(".pattern-preview-close").on("click",function(){p.remove()}),p.on("click",function(t){e(t.target).hasClass("pattern-preview-modal-overlay")&&p.remove()}),e.ajax({url:this.config.ajaxUrl,type:"POST",dataType:"json",data:{ajax:1,action:"previewPatternMatches",trait:"TargetConditions",pattern:t,entity_type:i,case_sensitive:a?1:0,limit:50},success:function(e){if(e.success&&e.items){var t=e.items,i='
';if(0===t.length)i+='
'+(n.no_matches||"No matches found")+"
";else{for(var a=0;a',o.image&&(i+=''),i+=''+r.escapeHtml(o.name)+"",o.id&&(i+='#'+o.id+""),i+="
"}s>t.length&&(i+='
... '+(n.and||"and")+" "+(s-t.length)+" "+(n.more||"more")+"
")}i+="",p.find(".pattern-preview-content").html(i)}else p.find(".pattern-preview-content").html('
'+(n.error_loading||"Error loading preview")+"
")},error:function(){p.find(".pattern-preview-content").html('
'+(n.error_loading||"Error loading preview")+"
")}})},refreshGroupPreviewIfOpen:function(e){this.$activeBadge&&this.$previewPopover},escapeHtml:function(e){return e?String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'"):""},escapeAttr:function(e){return e?String(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'"):""}}}(jQuery),function(e){"use strict";var t={instances:[],create:function(t){var i=function(){var t={config:{},$wrapper:null,$dropdown:null,activeGroup:null,searchTimeout:null,searchResults:[],searchTotal:0,searchOffset:0,searchQuery:"",isLoading:!1,loadMoreCount:20,viewMode:"list",currentSort:{field:"name",dir:"ASC"},refineQuery:"",refineNegate:!1,filters:{inStock:!1,discounted:!1,priceMin:null,priceMax:null,attributes:[],features:[]},filterableData:null,searchHistory:{},searchHistoryMax:10,searchHistoryKey:"targetConditionsSearchHistory",maxVisibleChips:20,$methodDropdownMenu:null,$methodDropdownSelect:null,$methodDropdownTrigger:null,$previewPopover:null,$activeBadge:null,$previewList:null,previewLoadedCount:0,previewBlockType:null,allPreviewData:null,countUpdateTimeout:null,init:function(t){if(this.config=e.extend({id:"target-conditions",name:"target_conditions",namePrefix:"target_",mode:"multi",blocks:{},ajaxUrl:"",trans:{}},t),this.$wrapper=e('[data-entity-selector-id="'+this.config.id+'"]'),this.$wrapper.length){"single"===this.config.mode&&(this.$wrapper.find(".btn-add-group").hide(),this.$wrapper.find(".group-excludes").hide(),this.$wrapper.find(".group-modifiers").hide());var i=this.$wrapper.closest(".form-group");i.addClass("condition-trait-fullwidth"),i.find(".col-lg-offset-3").removeClass("col-lg-offset-3"),this.createDropdown(),this.bindEvents(),this.loadExistingSelections(),this.loadSearchHistory(),this.initMethodDropdowns(),this.observeNewSelects();var a=this;setTimeout(function(){a.updateTabBadges(),a.updateAllConditionCounts()},100)}},observeNewSelects:function(){var t=this;"undefined"!=typeof MutationObserver&&new MutationObserver(function(i){i.forEach(function(i){i.addedNodes.length&&e(i.addedNodes).find(".include-method-select, .exclude-method-select").each(function(){t.enhanceMethodSelect(e(this))})})}).observe(this.$wrapper[0],{childList:!0,subtree:!0})},loadExistingSelections:function(){}},i=window._EntitySelectorMixins||{};return i.utils&&e.extend(t,i.utils),i.events&&e.extend(t,i.events),i.dropdown&&e.extend(t,i.dropdown),i.search&&e.extend(t,i.search),i.filters&&e.extend(t,i.filters),i.chips&&e.extend(t,i.chips),i.groups&&e.extend(t,i.groups),i.methods&&e.extend(t,i.methods),i.preview&&e.extend(t,i.preview),t}();return i.init(t),this.instances.push(i),i},init:function(e){return this.create(e)},validateAll:function(){for(var e=!0,t=0;t0&&!t.validateAll())return i.preventDefault(),!1})})}(jQuery); //# sourceMappingURL=entity-selector.min.js.map diff --git a/assets/js/admin/entity-selector.min.js.map b/assets/js/admin/entity-selector.min.js.map index dddb435..f875632 100644 --- a/assets/js/admin/entity-selector.min.js.map +++ b/assets/js/admin/entity-selector.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["_utils.js","_events.js","_dropdown.js","_search.js","_filters.js","_chips.js","_groups.js","_methods.js","_preview.js","_core.js"],"names":["$","window","_EntitySelectorMixins","utils","escapeHtml","str","String","replace","escapeAttr","getEntityTypeIcon","entityType","products","categories","manufacturers","suppliers","attributes","features","cms","cms_categories","getEntityTypeLabel","trans","this","config","product","category","manufacturer","supplier","attribute","feature","cms_page","cms_category","validate","$wrapper","data","hasData","find","each","length","clearValidationError","showValidationError","addClass","message","remove","$error","class","html","after","animate","scrollTop","offset","top","is","slideDown","removeClass","getBlockMode","blockType","blockDef","blocks","mode","isBlockSingleMode","getCurrentSingleSelection","$chip","first","$block","closest","name","text","jQuery","events","bindEvents","self","on","e","preventDefault","switchToBlock","stopPropagation","$tab","hasClass","hidePreviewPopover","showPreviewPopover","$badge","showConditionPreviewPopover","showGroupPreviewPopover","document","target","$body","stop","slideUp","toggleClass","$btn","currentState","attr","collapse_all","expand_all","prop","clearAllConditions","val","addGroup","$group","removeGroup","$input","trim","serializeAllBlocks","addFirstExcludeRow","addExcludeRow","$excludeRow","removeExcludeRow","hideDropdown","$row","methods","selection_methods","$option","valueType","searchEntity","methodOptions","$oldPicker","newPickerHtml","buildValuePickerHtml","replaceWith","$select","$newPicker","empty","key","label","append","isExclusive","populateTiles","step","min","applyRangeInputConstraints","loadCombinationAttributeGroups","selectedMethod","updateMethodInfoPlaceholder","updateBlockStatus","keyCode","click","$draftTag","$picker","pattern","caseSensitive","addPatternTag","focus","hide","clearTimeout","$matchCount","timeout","setTimeout","updateDraftTagCount","updateGroupTotalCount","$tag","isDraftTag","newCaseSensitive","caseTitle","case_sensitive","case_insensitive","count","showPatternPreviewModal","currentPattern","$editInput","$saveBtn","$cancelBtn","$editActions","prepend","select","ev","newPattern","show","content","tooltipClass","$tooltip","triggerWidth","outerWidth","tooltipWidth","tooltipHeight","outerHeight","left","width","css","position","$container","$chipsContainer","$minInput","$maxInput","minVal","maxVal","parseFloat","minAllowed","hasMinConstraint","minNum","maxNum","showRangeInputError","min_value_error","min_greater_than_max","chipText","decimals","split","Math","round","toFixed","type","$tile","$value","updateCombinationData","query","toLowerCase","indexOf","$modifiers","$content","slideToggle","$limitInput","limit","parseInt","finalCount","$previewBadge","displayCount","updateModifierButtonState","refreshGroupPreviewIfOpen","newDir","$icon","groupIndex","section","excludeIndex","activeGroup","searchResults","searchOffset","searchQuery","viewMode","resetFiltersWithoutSearch","$dropdown","updateFilterPanelForEntity","loadFilterableData","positionDropdown","performSearch","searchTimeout","filterCategoryTree","$item","removeFromSearchHistory","fadeOut","id","isSelected","removeSelection","currentSelection","newEntityType","showReplaceConfirmation","addSelection","$chips","updateChipsVisibility","addSelectionNoUpdate","isLoading","loadCount","loadMoreCount","currentSort","field","refreshSearch","dir","value","loadCategoryTree","$allItems","isCollapsed","descendants","findTreeDescendants","i","toggle","updateCount","selectedCount","totalCount","categoryLabel","updateSelectChildrenButtons","allSelected","j","$child","select_with_children","k","$descendant","deselect_with_children","minLevel","Infinity","level","hasChildren","refineQuery","refineTimeout","refineNegate","placeholder","refine_exclude","refine_short","$panel","showSearchHistory","filters","inStock","discounted","priceMin","priceMax","productCountMin","productCountMax","salesMin","salesMax","turnoverMin","turnoverMax","dateAddFrom","dateAddTo","lastProductFrom","lastProductTo","depth","hasProducts","hasDescription","hasImage","activeOnly","attributeGroup","featureGroup","isColor","isCustom","indexable","groupId","isActive","hideFilterGroupValues","showFilterGroupValues","groupType","groupName","showFilterGroupPreviewPopover","filterArray","index","push","splice","updateFilterToggleStates","clearFilters","ctrlKey","metaKey","trigger","dropdown","createDropdown","select_all","all","clear_selection","clear","sort_name","sort_id","sort_position","sort_popularity","sort_selected","view_list","view_tree","cols","exclude_matches","toggle_filters","recent_searches","in_stock","price","max","clear_filters","product_count","total_sales","turnover","active_only","all_levels","root","has_products","has_description","has_image","date_added","from","to","last_product","attribute_group","all_groups","color_only","feature_group","custom_only","sale","stock","sold","load","of","remaining","cancel","done","$searchBox","searchBoxOffset","searchBoxHeight","pickerOffset","pickerWidth","dropdownTop","dropdownLeft","dropdownWidth","viewportWidth","maxHeight","height","zIndex","search","categoryTreeCache","appendMode","requestData","ajax","action","trait","entity_type","q","sort_by","sort_dir","refine","refine_negate","filter_in_stock","filter_discounted","filter_price_min","filter_price_max","filter_attributes","JSON","stringify","filter_features","filter_product_count_min","filter_product_count_max","filter_depth","filter_has_products","filter_has_description","filter_has_image","filter_sales_min","filter_sales_max","filter_turnover_min","filter_turnover_max","filter_active","filter_date_add_from","filter_date_add_to","filter_last_product_from","filter_last_product_to","filter_attribute_group","filter_is_color","filter_feature_group","filter_is_custom","filter_indexable","url","ajaxUrl","dataType","success","response","total","addToSearchHistory","concat","results","searchTotal","renderSearchResults","error","selectedIds","hiddenIds","currentSearchEntity","currentExcludeIndex","isProductSearch","isListView","visibleResults","filter","item","hiddenCount","countText","forEach","itemClass","image","subtitle","iconClass","subtitleLines","line","idx","regular_price_formatted","price_formatted","has_discount","stockClass","stock_status","undefined","stock_qty","sales_qty","no_results","hasMore","$loadMoreControls","$allOption","hasHistory","getSearchHistory","cacheKey","renderCategoryTree","xhr","status","isCmsCategory","cat","indent","has_children","parent_id","nleft","nright","isSingleMode","$items","matchingIds","ancestorIds","ancestors","findTreeAncestors","visibleCount","$parent","parentId","childNleft","childNright","idsToCheck","processed","checkId","shift","itemParentId","itemId","$ancestor","ancNleft","ancNright","loadSearchHistory","stored","localStorage","getItem","searchHistoryKey","searchHistory","parse","saveSearchHistory","setItem","history","existingIndex","unshift","searchHistoryMax","slice","$treeOption","filterableData","loadAttributeGroups","groups","group","loadFeatureGroups","renderFilterDropdowns","$attrContainer","$featContainer","g","valuesRowClass","$filterRowValues","$valuesContainer","values","activeClass","chipClass","colorStyle","color","colorClass","rowValues","scrollIntoView","behavior","block","$toggle","hasActiveInGroup","some","chips","$allChips","isExpanded","maxVisibleChips","collapseText","show_less","moreText","show_more","loadExistingSelections","entitiesToLoad","$includePicker","collectPickerEntities","enhanceMethodSelect","updateMethodSelectorLock","Object","keys","ids","uniqueIds","arr","entities","entityMap","entity","pickers","pickerData","$dataInput","validIds","$loadingChip","rawValue","entityIcon","Array","isArray","range","loadPickerValues","isCaseSensitive","remove_pattern","getPatternTags","patterns","$countValue","updateConditionCountWithPendingPattern","pendingPattern","$countEl","isExclude","method","block_type","fetchPatternMatchCount","getPickerValues","patternValues","$draftPatternInput","draftPatternVal","draftCaseSens","updateConditionCount","hasNoValues","updateGroupCounts","$include","groupData","serializeGroup","include","group_data","final_count","excludeCount","exclude_count","badgeHtml","updateAllConditionCounts","maxIndex","buildMethodOptions","click_to_name","remove_group","no_items_selected","search_placeholder","add_exceptions","limit_tooltip","sort","sort_bestsellers","sort_newest","sort_price","sort_stock","sort_random","sort_direction","preview_results","$newGroup","emptyHtml","getEmptyStateText","updateTabBadges","updateHeaderTotalCount","groupCount","fetchProductCount","updateTargetSwitchState","$switch","$hiddenInput","savedData","removeData","conditions","isNaN","$totalBadge","updateShowAllToggle","$checkbox","$status","getBlockGroups","emptyMeansAll","entity_label_plural","nothing_selected","blockMode","no_item_selected","included","includeMethod","includeValues","excludes","excludeMethod","$excludePicker","excludeValues","modifiers","getGroupModifiers","$changedRow","countUpdateTimeout","isConditionValid","sortBy","sortDir","Number","$draftInput","draftPattern","draftCaseSensitive","selectVal","ranges","combAttrs","toString","valueId","combMode","configMode","combinationMode","$excludesDiv","except","buildExcludeRowHtml","add_another_exception","$newRow","excludeMethodOptions","firstSearchEntity","firstValueType","methodKey","methodDef","search_entity","value_type","remove_this_exception","excludeAll","groupLabels","select_by","filter_by","grouped","ungrouped","buildMethodOption","groupKey","groupMethods","groupLabel","icon","options","exclusive","pickerClass","chipsClass","dataClass","noItemsText","tooltipContent","pattern_help_title","pattern_help_wildcard","pattern_help_number","pattern_help_letter","pattern_help_examples","pattern_example_1","pattern_example_2","pattern_example_3","noPatternText","no_patterns","enter_pattern","click_to_preview","add_pattern","add_range","yes","combination_help_title","combination_help_desc","combination_help_logic","combination_help_within","combination_help_between","showModeToggle","defaultMode","Date","now","comb_mode_products","comb_mode_combinations","loading","getSortOptionsArray","sort_products","getSortIconClass","isAsc","cycleSortOption","newSort","newLabel","sortOptions","currentDir","currentIndex","initMethodDropdowns","initMethodInfoPlaceholders","$selectedOption","selectedIcon","selectedLabel","triggerHtml","$trigger","showMethodDropdownMenu","updateMethodTrigger","closeMethodDropdownMenu","menuHtml","buildMethodDropdownMenuHtml","$menu","triggerOffset","triggerHeight","minWidth","$methodDropdownMenu","$methodDropdownSelect","$methodDropdownTrigger","children","$el","$optgroup","off","removeAttr","optData","tileClass","$inputs","$groupDiv","$groupHeader","$toolbar","title","filter_results","loadCombinationAttributeValues","no_attribute_groups","error_loading","id_attribute_group","productCount","$valueBtn","restoreCombinationSelections","no_values","dataStr","valueIds","updateCombinationGroupCounts","$headerRow","$placeholder","methodHelp","helpContent","getBuiltInMethodHelp","$infoWrapper","help_all_title","help_all_desc","help_specific_title","help_specific_desc","help_category_title","help_category_desc","help_manufacturer_title","help_manufacturer_desc","help_supplier_title","help_supplier_desc","help_tag_title","help_tag_desc","help_attribute_title","help_attribute_desc","help_feature_title","help_feature_desc","help_combination_title","help_combination_desc","help_combination_logic","help_combination_within","help_combination_between","help_carrier_title","help_carrier_desc","help_condition_title","help_condition_desc","help_visibility_title","help_visibility_desc","help_active_title","help_active_desc","help_stock_title","help_stock_desc","help_boolean_title","help_boolean_desc","help_pattern_title","help_pattern_desc","help_pattern_wildcard","help_pattern_number","help_pattern_letter","help_range_title","help_range_desc","help_range_tip","help_date_title","help_date_desc","buildSortOptions","summary","sortLabel","$arrow","join","insertBefore","locked","wrap","parent","lockHtml","remove_excludes_first","before","siblings","preview","previewData","$activeBadge","items","previewLoadedCount","previewBlockType","entityLabelPlural","items_matched","renderPreviewItems","no_preview","$popover","$previewList","allPreviewData","filterPreviewItems","loadMorePreviewItems","badgeOffset","badgeHeight","badgeWidth","popoverWidth","leftPos","maxLeft","$previewPopover","isCombination","attrs","reference","ref","$footer","filterQuery","blockConfig","entityLabelSingular","entity_label","$modal","listHtml","no_matches","and","more","conditionData","showItemsPopover","entityLabel","previewType","topPos","meta","formatPrice","active","group_id","group_type","showFilterGroupItemsPopover","TargetConditions","instances","create","instance","init","extend","namePrefix","$formGroup","observeNewSelects","MutationObserver","mutations","mutation","addedNodes","observe","childList","subtree","mixins","createTargetConditionsInstance","validateAll","allValid","ready","configData"],"mappings":"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","file":"entity-selector.min.js","sourcesContent":["/**\n * Entity Selector - Utilities Module\n * Helper functions: escape, validation, icons, search history\n * @partial _utils.js (must be loaded first)\n *\n * EXTRACTION SOURCE: assets/js/admin/entity-selector.js\n * Lines: 7552-7570 (escapeHtml, escapeAttr)\n * 7577-7590 (getEntityTypeLabel)\n * 6289-6350 (validate, showValidationError, clearValidationError)\n * 7115-7137 (showRangeInputError)\n * 7728-7745 (getBlockMode, isBlockSingleMode)\n * 7707-7723 (getCurrentSingleSelection)\n * 5411-5467 (search history methods)\n */\n\n(function($) {\n 'use strict';\n\n // Create mixin namespace\n window._EntitySelectorMixins = window._EntitySelectorMixins || {};\n\n // Utility functions mixin\n window._EntitySelectorMixins.utils = {\n\n escapeHtml: function(str) {\n if (str === null || str === undefined) return '';\n return String(str)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n },\n\n escapeAttr: function(str) {\n if (str === null || str === undefined) return '';\n return String(str)\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n },\n\n getEntityTypeIcon: function(entityType) {\n var icons = {\n 'products': 'icon-shopping-cart',\n 'categories': 'icon-folder-open',\n 'manufacturers': 'icon-building',\n 'suppliers': 'icon-truck',\n 'attributes': 'icon-list-alt',\n 'features': 'icon-tags',\n 'cms': 'icon-file-text',\n 'cms_categories': 'icon-folder'\n };\n return icons[entityType] || 'icon-cube';\n },\n\n getEntityTypeLabel: function(entityType) {\n var trans = this.config.trans || {};\n var labels = {\n 'products': trans.product || 'Product',\n 'categories': trans.category || 'Category',\n 'manufacturers': trans.manufacturer || 'Manufacturer',\n 'suppliers': trans.supplier || 'Supplier',\n 'attributes': trans.attribute || 'Attribute',\n 'features': trans.feature || 'Feature',\n 'cms': trans.cms_page || 'CMS Page',\n 'cms_categories': trans.cms_category || 'CMS Category'\n };\n return labels[entityType] || entityType;\n },\n\n validate: function() {\n var isRequired = this.$wrapper.data('required') === 1 || this.$wrapper.data('required') === '1';\n if (!isRequired) return true;\n\n var hasData = false;\n this.$wrapper.find('.target-block').each(function() {\n if ($(this).find('.selection-group').length > 0) {\n hasData = true;\n return false;\n }\n });\n\n if (!hasData) {\n this.showValidationError();\n return false;\n }\n\n this.clearValidationError();\n return true;\n },\n\n showValidationError: function() {\n this.$wrapper.addClass('has-validation-error');\n var message = this.$wrapper.data('required-message') || 'Please select at least one item';\n this.$wrapper.find('.trait-validation-error').remove();\n var $error = $('
', {\n class: 'trait-validation-error',\n html: ' ' + message\n });\n this.$wrapper.find('.condition-trait-header').after($error);\n $('html, body').animate({ scrollTop: this.$wrapper.offset().top - 100 }, 300);\n if (!this.$wrapper.find('.condition-trait-body').is(':visible')) {\n this.$wrapper.find('.condition-trait-body').slideDown(200);\n this.$wrapper.removeClass('collapsed');\n }\n },\n\n clearValidationError: function() {\n this.$wrapper.removeClass('has-validation-error');\n this.$wrapper.find('.trait-validation-error').remove();\n },\n\n getBlockMode: function(blockType) {\n var blockDef = this.config.blocks[blockType];\n return (blockDef && blockDef.mode) ? blockDef.mode : 'multi';\n },\n\n isBlockSingleMode: function(blockType) {\n return this.getBlockMode(blockType) === 'single';\n },\n\n getCurrentSingleSelection: function() {\n if ((this.config.mode || 'multi') !== 'single') return null;\n var $chip = this.$wrapper.find('.entity-chips .entity-chip').first();\n if ($chip.length) {\n var $block = $chip.closest('.target-block');\n return {\n name: $chip.find('.chip-name').text() || $chip.data('id'),\n entityType: $block.data('block-type') || 'item'\n };\n }\n return null;\n }\n };\n\n})(jQuery);\n","/**\n * Entity Selector - Events Module\n * All event binding and handlers\n * @partial _events.js\n *\n * Contains event handlers for:\n * - Tab switching\n * - Block/group collapse toggle\n * - Dropdown open/close\n * - Search input handling\n * - Item selection/deselection\n * - Group add/remove\n * - Exclude row add/remove\n * - Method select changes\n * - Filter panel toggles\n * - Keyboard shortcuts (Ctrl+A, Ctrl+D, Esc, Enter)\n * - Load more pagination\n * - Sort controls\n * - View mode switching\n * - Tree view events\n * - Preview badge clicks\n * - Pattern tag interactions\n * - Combination picker events\n * - Group modifier events\n */\n\n(function($) {\n 'use strict';\n\n window._EntitySelectorMixins = window._EntitySelectorMixins || {};\n\n window._EntitySelectorMixins.events = {\n\n bindEvents: function() {\n var self = this;\n\n // Tab switching\n this.$wrapper.on('click', '.target-block-tab', function(e) {\n e.preventDefault();\n var blockType = $(this).data('blockType');\n self.switchToBlock(blockType);\n });\n\n // Tab badge click for preview popover (toggle)\n this.$wrapper.on('click', '.target-block-tab .tab-badge', function(e) {\n e.stopPropagation();\n e.preventDefault();\n console.log('[EntitySelector] Tab badge clicked', {\n hasLoading: $(this).hasClass('loading'),\n hasPopoverOpen: $(this).hasClass('popover-open'),\n previewData: $(this).closest('.target-block-tab').data('previewData')\n });\n\n var $tab = $(this).closest('.target-block-tab');\n var $badge = $(this);\n\n if ($badge.hasClass('popover-open')) {\n self.hidePreviewPopover();\n } else {\n self.showPreviewPopover($tab);\n }\n });\n\n // Condition count badge click for preview popover\n this.$wrapper.on('click', '.condition-match-count.clickable', function(e) {\n e.stopPropagation();\n e.preventDefault();\n console.log('[EntitySelector] Condition match count clicked', this);\n\n var $badge = $(this);\n\n if ($badge.hasClass('popover-open')) {\n self.hidePreviewPopover();\n } else {\n self.showConditionPreviewPopover($badge);\n }\n });\n\n // Group count badge click for preview popover\n this.$wrapper.on('click', '.group-count-badge.clickable', function(e) {\n e.stopPropagation();\n e.preventDefault();\n console.log('[EntitySelector] Group count badge clicked', this);\n\n var $badge = $(this);\n\n if ($badge.hasClass('popover-open')) {\n self.hidePreviewPopover();\n } else {\n self.showGroupPreviewPopover($badge);\n }\n });\n\n // Close popover when clicking outside\n $(document).on('click', function(e) {\n if (!$(e.target).closest('.target-preview-popover').length &&\n !$(e.target).closest('.tab-badge').length &&\n !$(e.target).closest('.condition-match-count').length &&\n !$(e.target).closest('.group-count-badge').length &&\n !$(e.target).closest('.group-modifiers').length &&\n !$(e.target).closest('.group-preview-badge').length &&\n !$(e.target).closest('.toggle-count.clickable').length) {\n self.hidePreviewPopover();\n }\n });\n\n // Block-level collapse toggle (click on header)\n this.$wrapper.on('click', '.condition-trait-header', function(e) {\n if ($(e.target).closest('.target-block-tabs').length ||\n $(e.target).closest('.trait-header-actions').length ||\n $(e.target).closest('.prestashop-switch').length) {\n return;\n }\n var $body = self.$wrapper.find('.condition-trait-body');\n $body.stop(true, true);\n if ($body.is(':visible')) {\n $body.slideUp(200);\n self.$wrapper.addClass('collapsed');\n } else {\n $body.slideDown(200);\n self.$wrapper.removeClass('collapsed');\n }\n });\n\n // Group-level collapse toggle (click on group header or toggle icon)\n this.$wrapper.on('click', '.group-header', function(e) {\n if ($(e.target).closest('.btn-remove-group, .group-name-input').length) {\n return;\n }\n if (self.$wrapper.data('mode') === 'single') {\n return;\n }\n var $group = $(this).closest('.selection-group');\n $group.toggleClass('collapsed');\n });\n\n // Toggle all groups (single button that switches between expand/collapse)\n this.$wrapper.on('click', '.trait-header-actions .btn-toggle-groups', function(e) {\n e.preventDefault();\n e.stopPropagation();\n var $btn = $(this);\n var currentState = $btn.attr('data-state') || 'collapsed';\n var trans = self.config.trans || {};\n\n if (currentState === 'collapsed') {\n self.$wrapper.find('.selection-group').removeClass('collapsed');\n $btn.attr('data-state', 'expanded');\n $btn.attr('title', trans.collapse_all || 'Collapse all groups');\n $btn.find('i').removeClass('icon-expand').addClass('icon-compress');\n } else {\n self.$wrapper.find('.selection-group').addClass('collapsed');\n $btn.attr('data-state', 'collapsed');\n $btn.attr('title', trans.expand_all || 'Expand all groups');\n $btn.find('i').removeClass('icon-compress').addClass('icon-expand');\n }\n });\n\n // Show all toggle change (legacy checkbox)\n this.$wrapper.on('change', '.trait-show-all-toggle .show-all-checkbox', function(e) {\n e.stopPropagation();\n var isChecked = $(this).prop('checked');\n if (isChecked) {\n self.clearAllConditions();\n }\n });\n\n // Target switch change (PrestaShop native switch)\n this.$wrapper.on('change', '.target-switch-toggle', function(e) {\n e.stopPropagation();\n var value = $(this).val();\n if (value === '1') {\n self.clearAllConditions();\n self.$wrapper.find('.condition-trait-body').slideUp(200);\n self.$wrapper.addClass('collapsed');\n } else {\n self.$wrapper.find('.condition-trait-body').slideDown(200);\n self.$wrapper.removeClass('collapsed');\n }\n });\n\n // Add group\n this.$wrapper.on('click', '.btn-add-group', function(e) {\n e.preventDefault();\n var $block = $(this).closest('.target-block');\n var blockType = $block.data('blockType');\n self.addGroup($block, blockType);\n });\n\n // Remove group\n this.$wrapper.on('click', '.btn-remove-group', function(e) {\n e.preventDefault();\n var $group = $(this).closest('.selection-group');\n var $block = $(this).closest('.target-block');\n self.removeGroup($group, $block);\n });\n\n // Group name input - stop propagation to prevent collapse\n this.$wrapper.on('click focus', '.group-name-input', function(e) {\n e.stopPropagation();\n });\n\n // Group name change\n this.$wrapper.on('change blur', '.group-name-input', function() {\n var $input = $(this);\n var $group = $input.closest('.selection-group');\n var name = $.trim($input.val());\n $group.attr('data-group-name', name);\n self.serializeAllBlocks();\n });\n\n // Add exceptions (first exclude row)\n this.$wrapper.on('click', '.btn-add-exclude', function(e) {\n e.preventDefault();\n var $group = $(this).closest('.selection-group');\n var $block = $(this).closest('.target-block');\n self.addFirstExcludeRow($group, $block);\n });\n\n // Add another exclude row\n this.$wrapper.on('click', '.btn-add-another-exclude', function(e) {\n e.preventDefault();\n var $group = $(this).closest('.selection-group');\n var $block = $(this).closest('.target-block');\n self.addExcludeRow($group, $block);\n });\n\n // Remove individual exclude row\n this.$wrapper.on('click', '.btn-remove-exclude-row', function(e) {\n e.preventDefault();\n var $excludeRow = $(this).closest('.exclude-row');\n var $group = $(this).closest('.selection-group');\n var $block = $(this).closest('.target-block');\n self.removeExcludeRow($excludeRow, $group, $block);\n });\n\n // Include method change\n this.$wrapper.on('change', '.include-method-select', function() {\n self.hideDropdown();\n\n var $group = $(this).closest('.selection-group');\n var $block = $(this).closest('.target-block');\n var $row = $group.find('.group-include');\n var blockType = $block.data('blockType');\n var blockDef = self.config.blocks[blockType] || {};\n var methods = blockDef.selection_methods || {};\n\n var $option = $(this).find('option:selected');\n var valueType = $option.data('valueType') || 'none';\n var searchEntity = $option.data('searchEntity') || '';\n var methodOptions = $option.data('options') || null;\n\n var $oldPicker = $group.find('.include-picker');\n var newPickerHtml = self.buildValuePickerHtml('include', valueType, searchEntity, methods);\n $oldPicker.replaceWith(newPickerHtml);\n\n if (valueType === 'select' && methodOptions) {\n var $newPicker = $group.find('.include-picker');\n var $select = $newPicker.find('.select-value-input');\n $select.empty();\n $.each(methodOptions, function(key, label) {\n $select.append('');\n });\n }\n\n if (valueType === 'multi_select_tiles' && methodOptions) {\n var $newPicker = $group.find('.include-picker');\n var isExclusive = $option.data('exclusive') === true;\n self.populateTiles($newPicker, methodOptions, isExclusive);\n }\n\n if (valueType === 'multi_numeric_range') {\n var $newPicker = $group.find('.include-picker');\n var step = $option.data('step');\n var min = $option.data('min');\n self.applyRangeInputConstraints($newPicker, step, min);\n }\n\n if (valueType === 'combination_attributes') {\n var $newPicker = $group.find('.include-picker');\n self.loadCombinationAttributeGroups($newPicker);\n }\n\n var selectedMethod = $(this).val();\n self.updateMethodInfoPlaceholder($group.find('.method-selector-wrapper'), selectedMethod, blockType);\n\n self.updateBlockStatus($block);\n self.serializeAllBlocks($row);\n });\n\n // Exclude method change (within an exclude row)\n this.$wrapper.on('change', '.exclude-method-select', function() {\n self.hideDropdown();\n\n var $excludeRow = $(this).closest('.exclude-row');\n var $group = $(this).closest('.selection-group');\n var $block = $(this).closest('.target-block');\n var blockType = $block.data('blockType');\n var blockDef = self.config.blocks[blockType] || {};\n var methods = blockDef.selection_methods || {};\n\n var $option = $(this).find('option:selected');\n var valueType = $option.data('valueType') || 'entity_search';\n var searchEntity = $option.data('searchEntity') || blockType;\n var methodOptions = $option.data('options') || null;\n\n var $oldPicker = $excludeRow.find('.exclude-picker');\n var newPickerHtml = self.buildValuePickerHtml('exclude', valueType, searchEntity, methods);\n $oldPicker.replaceWith(newPickerHtml);\n\n if (valueType === 'select' && methodOptions) {\n var $newPicker = $excludeRow.find('.exclude-picker');\n var $select = $newPicker.find('.select-value-input');\n $select.empty();\n $.each(methodOptions, function(key, label) {\n $select.append('');\n });\n }\n\n if (valueType === 'multi_select_tiles' && methodOptions) {\n var $newPicker = $excludeRow.find('.exclude-picker');\n var isExclusive = $option.data('exclusive') === true;\n self.populateTiles($newPicker, methodOptions, isExclusive);\n }\n\n if (valueType === 'multi_numeric_range') {\n var $newPicker = $excludeRow.find('.exclude-picker');\n var step = $option.data('step');\n var min = $option.data('min');\n self.applyRangeInputConstraints($newPicker, step, min);\n }\n\n if (valueType === 'combination_attributes') {\n var $newPicker = $excludeRow.find('.exclude-picker');\n self.loadCombinationAttributeGroups($newPicker);\n }\n\n var selectedMethod = $(this).val();\n self.updateMethodInfoPlaceholder($excludeRow.find('.exclude-header-row'), selectedMethod, blockType);\n\n self.serializeAllBlocks($excludeRow);\n });\n\n // Handle pattern input Enter key - adds pattern as tag\n this.$wrapper.on('keydown', '.pattern-input', function(e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n var $btn = $(this).closest('.draft-tag').find('.btn-add-pattern');\n $btn.click();\n }\n });\n\n // Handle add pattern button click (in draft tag)\n this.$wrapper.on('click', '.draft-tag .btn-add-pattern', function(e) {\n e.preventDefault();\n e.stopPropagation();\n var $draftTag = $(this).closest('.draft-tag');\n var $picker = $draftTag.closest('.value-picker');\n var $row = $draftTag.closest('.group-include, .exclude-row');\n var $input = $draftTag.find('.pattern-input');\n var pattern = $.trim($input.val());\n\n if (pattern) {\n var caseSensitive = $draftTag.attr('data-case-sensitive') === '1';\n self.addPatternTag($picker, pattern, caseSensitive);\n\n $input.val('').focus();\n $draftTag.find('.pattern-match-count').removeClass('count-found count-zero').hide();\n $draftTag.find('.pattern-match-count .count-value').text('');\n\n self.serializeAllBlocks($row);\n }\n });\n\n // Handle pattern input live typing - update match count in draft tag\n this.$wrapper.on('input', '.pattern-input', function() {\n var $input = $(this);\n var $draftTag = $input.closest('.draft-tag');\n if (!$draftTag.length) return;\n\n var pattern = $.trim($input.val());\n\n if ($input.data('countTimeout')) {\n clearTimeout($input.data('countTimeout'));\n }\n\n var $matchCount = $draftTag.find('.pattern-match-count');\n\n if (!pattern) {\n $matchCount.removeClass('count-found count-zero').hide();\n $matchCount.find('.count-value').text('');\n var $group = $draftTag.closest('.selection-group');\n if ($group.length) {\n self.updateGroupTotalCount($group);\n }\n return;\n }\n\n var timeout = setTimeout(function() {\n var caseSensitive = $draftTag.attr('data-case-sensitive') === '1';\n self.updateDraftTagCount($draftTag, pattern, caseSensitive);\n }, 300);\n $input.data('countTimeout', timeout);\n });\n\n // Handle pattern tag remove\n this.$wrapper.on('click', '.pattern-tag .btn-remove-pattern', function(e) {\n e.preventDefault();\n e.stopPropagation();\n var $row = $(this).closest('.group-include, .exclude-row');\n $(this).closest('.pattern-tag').remove();\n self.serializeAllBlocks($row);\n });\n\n // Handle pattern tag case-sensitivity toggle\n this.$wrapper.on('click', '.pattern-tag .btn-toggle-case', function(e) {\n e.preventDefault();\n e.stopPropagation();\n var $tag = $(this).closest('.pattern-tag');\n var $btn = $(this);\n var trans = self.config.trans || {};\n var isDraftTag = $tag.hasClass('draft-tag');\n\n var isCaseSensitive = $tag.data('caseSensitive') === 1 || $tag.data('caseSensitive') === '1' || $tag.attr('data-case-sensitive') === '1';\n var newCaseSensitive = !isCaseSensitive;\n\n $tag.data('caseSensitive', newCaseSensitive ? 1 : 0);\n $tag.attr('data-case-sensitive', newCaseSensitive ? '1' : '0');\n $tag.toggleClass('case-sensitive', newCaseSensitive);\n\n $btn.find('.case-icon').text(newCaseSensitive ? 'Aa' : 'aa');\n var caseTitle = newCaseSensitive\n ? (trans.case_sensitive || 'Case sensitive - click to toggle')\n : (trans.case_insensitive || 'Case insensitive - click to toggle');\n $btn.attr('title', caseTitle);\n\n if (isDraftTag) {\n var pattern = $.trim($tag.find('.pattern-input').val());\n if (pattern) {\n self.updateDraftTagCount($tag, pattern, newCaseSensitive);\n }\n } else {\n var $row = $tag.closest('.group-include, .exclude-row');\n self.serializeAllBlocks($row);\n }\n });\n\n // Handle pattern match count click - show preview modal\n this.$wrapper.on('click', '.pattern-match-count', function(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var $matchCount = $(this);\n var count = $matchCount.data('count');\n var pattern = $matchCount.data('pattern');\n var entityType = $matchCount.data('entityType');\n var caseSensitive = $matchCount.data('caseSensitive');\n\n if (!count || count <= 0 || !pattern) {\n return;\n }\n\n self.showPatternPreviewModal(pattern, entityType, caseSensitive, count);\n });\n\n // Handle pattern tag edit (click on tag text)\n this.$wrapper.on('click', '.pattern-tag .pattern-tag-text', function(e) {\n e.preventDefault();\n var $tag = $(this).closest('.pattern-tag');\n if ($tag.hasClass('editing')) return;\n\n var currentPattern = $tag.data('pattern');\n\n var $editInput = $('').val(currentPattern);\n var $saveBtn = $('');\n var $cancelBtn = $('');\n var $editActions = $('').append($saveBtn, $cancelBtn);\n\n $tag.addClass('editing').find('.pattern-tag-text').hide();\n $tag.find('.btn-remove-pattern').hide();\n $tag.prepend($editActions).prepend($editInput);\n $editInput.focus().select();\n\n $editInput.on('keydown', function(ev) {\n if (ev.keyCode === 13) {\n ev.preventDefault();\n $saveBtn.click();\n } else if (ev.keyCode === 27) {\n ev.preventDefault();\n $cancelBtn.click();\n }\n });\n });\n\n // Pattern edit - Save button\n this.$wrapper.on('click', '.pattern-tag .btn-pattern-save', function(e) {\n e.preventDefault();\n e.stopPropagation();\n var $tag = $(this).closest('.pattern-tag');\n var $editInput = $tag.find('.pattern-tag-edit');\n var currentPattern = $tag.data('pattern');\n var newPattern = $.trim($editInput.val());\n\n if (newPattern && newPattern !== currentPattern) {\n $tag.data('pattern', newPattern);\n $tag.find('.pattern-tag-text').text(newPattern);\n }\n $editInput.remove();\n $tag.find('.pattern-edit-actions').remove();\n $tag.removeClass('editing').find('.pattern-tag-text, .btn-remove-pattern').show();\n var $row = $tag.closest('.group-include, .exclude-row');\n self.serializeAllBlocks($row);\n });\n\n // Pattern edit - Cancel button\n this.$wrapper.on('click', '.pattern-tag .btn-pattern-cancel', function(e) {\n e.preventDefault();\n e.stopPropagation();\n var $tag = $(this).closest('.pattern-tag');\n $tag.find('.pattern-tag-edit').remove();\n $tag.find('.pattern-edit-actions').remove();\n $tag.removeClass('editing').find('.pattern-tag-text, .btn-remove-pattern').show();\n });\n\n // Handle mpr-info-wrapper tooltip with fixed positioning\n this.$wrapper.on('mouseenter', '.mpr-info-wrapper[data-details]', function() {\n var $wrapper = $(this);\n if ($wrapper.data('tooltip-active')) return;\n\n var content = $wrapper.attr('data-details');\n var tooltipClass = $wrapper.attr('data-tooltip-class') || '';\n var $tooltip = $('
', { class: 'mpr-tooltip mpr-tooltip-fixed ' + tooltipClass, html: content });\n\n $('body').append($tooltip);\n $wrapper.data('tooltip-active', true);\n\n var offset = $wrapper.offset();\n var triggerWidth = $wrapper.outerWidth();\n var tooltipWidth = $tooltip.outerWidth();\n var tooltipHeight = $tooltip.outerHeight();\n\n var left = offset.left + (triggerWidth / 2) - (tooltipWidth / 2);\n var top = offset.top - tooltipHeight - 10;\n\n if (left < 10) left = 10;\n if (left + tooltipWidth > $(window).width() - 10) {\n left = $(window).width() - tooltipWidth - 10;\n }\n\n $tooltip.css({\n position: 'fixed',\n left: left + 'px',\n top: (top - $(window).scrollTop()) + 'px'\n });\n\n $wrapper.data('tooltip-el', $tooltip);\n });\n\n this.$wrapper.on('mouseleave', '.mpr-info-wrapper[data-details]', function() {\n var $wrapper = $(this);\n var $tooltip = $wrapper.data('tooltip-el');\n if ($tooltip) {\n $tooltip.remove();\n }\n $wrapper.data('tooltip-active', false);\n $wrapper.data('tooltip-el', null);\n });\n\n // Handle numeric range input changes\n this.$wrapper.on('change', '.range-min-input, .range-max-input', function() {\n var $row = $(this).closest('.group-include, .exclude-row');\n self.serializeAllBlocks($row);\n });\n\n // Handle date range input changes\n this.$wrapper.on('change', '.date-from-input, .date-to-input', function() {\n var $row = $(this).closest('.group-include, .exclude-row');\n self.serializeAllBlocks($row);\n });\n\n // Handle select value changes\n this.$wrapper.on('change', '.select-value-input', function() {\n var $row = $(this).closest('.group-include, .exclude-row');\n self.serializeAllBlocks($row);\n });\n\n // Handle multi-range add button click\n this.$wrapper.on('click', '.btn-add-range', function(e) {\n e.preventDefault();\n var $picker = $(this).closest('.value-picker');\n var $row = $(this).closest('.group-include, .exclude-row');\n var $container = $picker.find('.multi-range-container');\n var $chipsContainer = $container.find('.multi-range-chips');\n var $minInput = $container.find('.range-min-input');\n var $maxInput = $container.find('.range-max-input');\n\n var minVal = $minInput.val().trim();\n var maxVal = $maxInput.val().trim();\n\n if (minVal === '' && maxVal === '') {\n return;\n }\n\n var step = parseFloat($minInput.attr('step')) || 0.01;\n var minAllowed = $minInput.attr('min');\n var hasMinConstraint = typeof minAllowed !== 'undefined' && minAllowed !== '';\n minAllowed = hasMinConstraint ? parseFloat(minAllowed) : null;\n\n var minNum = minVal !== '' ? parseFloat(minVal) : null;\n var maxNum = maxVal !== '' ? parseFloat(maxVal) : null;\n\n if (hasMinConstraint) {\n if (minNum !== null && minNum < minAllowed) {\n self.showRangeInputError($minInput, self.config.trans.min_value_error || 'Minimum value is ' + minAllowed);\n return;\n }\n if (maxNum !== null && maxNum < minAllowed) {\n self.showRangeInputError($maxInput, self.config.trans.min_value_error || 'Minimum value is ' + minAllowed);\n return;\n }\n }\n\n if (minNum !== null && maxNum !== null && minNum > maxNum) {\n self.showRangeInputError($minInput, self.config.trans.min_greater_than_max || 'Min cannot be greater than max');\n return;\n }\n\n var decimals = step < 1 ? String(step).split('.')[1].length : 0;\n if (minNum !== null) {\n if (step >= 1) {\n minNum = Math.round(minNum);\n } else {\n minNum = parseFloat(minNum.toFixed(decimals));\n }\n minVal = String(minNum);\n }\n if (maxNum !== null) {\n if (step >= 1) {\n maxNum = Math.round(maxNum);\n } else {\n maxNum = parseFloat(maxNum.toFixed(decimals));\n }\n maxVal = String(maxNum);\n }\n\n var chipText = '';\n if (minVal !== '' && maxVal !== '') {\n chipText = minVal + ' - ' + maxVal;\n } else if (minVal !== '') {\n chipText = '≥ ' + minVal;\n } else {\n chipText = '≤ ' + maxVal;\n }\n\n var $chip = $('', {\n class: 'range-chip',\n 'data-min': minVal,\n 'data-max': maxVal\n });\n $chip.append($('', { class: 'range-chip-text', text: chipText }));\n $chip.append($('';\n html += '';\n\n // Sort controls\n html += '
';\n html += '';\n html += '';\n\n // View mode selector\n html += '';\n html += '
'; // End sort-controls\n\n // Refine search\n html += '
';\n html += '';\n html += '';\n html += '';\n html += '
';\n\n // Filter toggle button\n html += '';\n\n // History button\n html += '';\n\n html += '
'; // End dropdown-actions\n html += '
'; // End dropdown-header\n\n // Filter panel\n html += '
';\n\n // Quick filters row (for products)\n html += '
';\n html += '';\n html += '';\n\n // Price range\n html += '
';\n html += '' + (trans.price || 'Price') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n\n html += '';\n html += '
';\n\n // Attribute/Feature filter toggles for products\n html += '
';\n html += ' ' + (trans.attributes || 'Attributes') + ':';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n\n html += '
';\n html += ' ' + (trans.features || 'Features') + ':';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n\n // Entity-specific filters: Categories\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.product_count || 'Products') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.total_sales || 'Sales') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.turnover || 'Revenue') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '';\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.depth || 'Depth') + ':';\n html += '';\n html += '
';\n html += '';\n html += '';\n html += '';\n html += '';\n html += '
';\n html += '
';\n\n // Entity-specific filters: Manufacturers\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.product_count || 'Products') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.total_sales || 'Sales') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.turnover || 'Revenue') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '';\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.date_added || 'Added') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.last_product || 'Last product') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '';\n html += '
';\n html += '
';\n\n // Entity-specific filters: Suppliers\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.product_count || 'Products') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.total_sales || 'Sales') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.turnover || 'Revenue') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '';\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.date_added || 'Added') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.last_product || 'Last product') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '';\n html += '
';\n html += '
';\n\n // Entity-specific filters: Attributes\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.product_count || 'Products') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.total_sales || 'Sales') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.turnover || 'Revenue') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.attribute_group || 'Group') + ':';\n html += '';\n html += '
';\n html += '';\n html += '';\n html += '
';\n html += '
';\n\n // Entity-specific filters: Features\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.product_count || 'Products') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.total_sales || 'Sales') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += ' ' + (trans.turnover || 'Revenue') + ':';\n html += '';\n html += '-';\n html += '';\n html += '
';\n html += '
';\n html += '
';\n html += '
';\n html += ' ' + (trans.feature_group || 'Group') + ':';\n html += '';\n html += '
';\n html += '';\n html += '';\n html += '
';\n html += '
';\n\n // Entity-specific filters: CMS Pages\n html += '
';\n html += '';\n html += '';\n html += '';\n html += '
';\n\n // Entity-specific filters: CMS Categories\n html += '
';\n html += '';\n html += '';\n html += '
';\n\n html += '
'; // End filter-panel\n\n // Results header for list view (product columns)\n html += '
';\n html += '';\n html += '' + (trans.product || 'Product') + '';\n html += '' + (trans.price || 'Price') + '';\n html += '' + (trans.sale || 'Sale') + '';\n html += '' + (trans.stock || 'Stock') + '';\n html += '' + (trans.sold || 'Sold') + '';\n html += '
';\n\n // Results\n html += '
';\n\n // Footer\n html += '
';\n html += '
';\n html += '' + (trans.load || 'Load') + '';\n html += '';\n html += '' + (trans.of || 'of') + ' 0 ' + (trans.remaining || 'remaining') + '';\n html += '';\n html += '
';\n html += '';\n html += '
';\n\n html += '';\n\n this.$dropdown = $(html);\n $('body').append(this.$dropdown);\n },\n\n hideDropdown: function() {\n if (this.$dropdown) {\n this.$dropdown.removeClass('show');\n }\n this.activeGroup = null;\n },\n\n positionDropdown: function($input) {\n if (!this.$dropdown) return;\n\n var $picker = $input.closest('.value-picker');\n var $searchBox = $input.closest('.entity-search-box');\n\n // Get absolute positions (dropdown is appended to body)\n var searchBoxOffset = $searchBox.offset();\n var searchBoxHeight = $searchBox.outerHeight();\n var pickerOffset = $picker.offset();\n var pickerWidth = $picker.outerWidth();\n\n // Calculate position relative to document\n var dropdownTop = searchBoxOffset.top + searchBoxHeight + 4;\n var dropdownLeft = pickerOffset.left;\n var dropdownWidth = Math.max(pickerWidth, 400);\n\n // Ensure dropdown doesn't overflow the viewport horizontally\n var viewportWidth = $(window).width();\n if (dropdownLeft + dropdownWidth > viewportWidth - 10) {\n dropdownWidth = viewportWidth - dropdownLeft - 10;\n }\n\n // Ensure dropdown doesn't overflow viewport vertically\n var viewportHeight = $(window).height();\n var scrollTop = $(window).scrollTop();\n var maxHeight = viewportHeight - (dropdownTop - scrollTop) - 20;\n maxHeight = Math.max(maxHeight, 400);\n\n this.$dropdown.css({\n position: 'absolute',\n top: dropdownTop,\n left: dropdownLeft,\n width: dropdownWidth,\n maxHeight: maxHeight,\n zIndex: 10000\n });\n }\n };\n\n})(jQuery);\n","/**\n * Entity Selector - Search Module\n * AJAX search, results rendering, category tree, filters, search history\n * @partial _search.js\n */\n\n(function($) {\n 'use strict';\n\n window._EntitySelectorMixins = window._EntitySelectorMixins || {};\n\n window._EntitySelectorMixins.search = {\n\n // Category tree cache\n categoryTreeCache: null,\n\n /**\n * Perform AJAX search for entities\n */\n performSearch: function(appendMode) {\n var self = this;\n\n if (!this.activeGroup) return;\n\n this.isLoading = true;\n\n var searchEntity = this.activeGroup.searchEntity;\n\n // Build request data with sort and filter params\n var limit = appendMode && this.loadMoreCount ? this.loadMoreCount : 20;\n var requestData = {\n ajax: 1,\n action: 'searchTargetEntities',\n trait: 'EntitySelector',\n entity_type: searchEntity,\n q: this.searchQuery,\n limit: limit,\n offset: appendMode ? this.searchOffset : 0,\n sort_by: this.currentSort ? this.currentSort.field : 'name',\n sort_dir: this.currentSort ? this.currentSort.dir : 'ASC'\n };\n\n // Add refine query if present\n if (this.refineQuery) {\n requestData.refine = this.refineQuery;\n if (this.refineNegate) {\n requestData.refine_negate = 1;\n }\n }\n\n // Add product-specific filters\n if (searchEntity === 'products' && this.filters) {\n if (this.filters.inStock) {\n requestData.filter_in_stock = 1;\n }\n if (this.filters.discounted) {\n requestData.filter_discounted = 1;\n }\n if (this.filters.priceMin !== null && this.filters.priceMin !== '') {\n requestData.filter_price_min = this.filters.priceMin;\n }\n if (this.filters.priceMax !== null && this.filters.priceMax !== '') {\n requestData.filter_price_max = this.filters.priceMax;\n }\n if (this.filters.attributes && this.filters.attributes.length > 0) {\n requestData.filter_attributes = JSON.stringify(this.filters.attributes);\n }\n if (this.filters.features && this.filters.features.length > 0) {\n requestData.filter_features = JSON.stringify(this.filters.features);\n }\n }\n\n // Add entity-specific filters for non-product entities\n if (searchEntity !== 'products' && this.filters) {\n // Product count range (categories, manufacturers, suppliers, attributes, features)\n if (this.filters.productCountMin !== null && this.filters.productCountMin !== '') {\n requestData.filter_product_count_min = this.filters.productCountMin;\n }\n if (this.filters.productCountMax !== null && this.filters.productCountMax !== '') {\n requestData.filter_product_count_max = this.filters.productCountMax;\n }\n\n // Category-specific\n if (searchEntity === 'categories') {\n if (this.filters.depth) {\n requestData.filter_depth = this.filters.depth;\n }\n if (this.filters.hasProducts) {\n requestData.filter_has_products = 1;\n }\n if (this.filters.hasDescription) {\n requestData.filter_has_description = 1;\n }\n if (this.filters.hasImage) {\n requestData.filter_has_image = 1;\n }\n if (this.filters.salesMin !== null && this.filters.salesMin !== '') {\n requestData.filter_sales_min = this.filters.salesMin;\n }\n if (this.filters.salesMax !== null && this.filters.salesMax !== '') {\n requestData.filter_sales_max = this.filters.salesMax;\n }\n if (this.filters.turnoverMin !== null && this.filters.turnoverMin !== '') {\n requestData.filter_turnover_min = this.filters.turnoverMin;\n }\n if (this.filters.turnoverMax !== null && this.filters.turnoverMax !== '') {\n requestData.filter_turnover_max = this.filters.turnoverMax;\n }\n if (this.filters.activeOnly) {\n requestData.filter_active = 1;\n }\n }\n\n // Manufacturer-specific\n if (searchEntity === 'manufacturers') {\n if (this.filters.salesMin !== null && this.filters.salesMin !== '') {\n requestData.filter_sales_min = this.filters.salesMin;\n }\n if (this.filters.salesMax !== null && this.filters.salesMax !== '') {\n requestData.filter_sales_max = this.filters.salesMax;\n }\n if (this.filters.turnoverMin !== null && this.filters.turnoverMin !== '') {\n requestData.filter_turnover_min = this.filters.turnoverMin;\n }\n if (this.filters.turnoverMax !== null && this.filters.turnoverMax !== '') {\n requestData.filter_turnover_max = this.filters.turnoverMax;\n }\n if (this.filters.dateAddFrom) {\n requestData.filter_date_add_from = this.filters.dateAddFrom;\n }\n if (this.filters.dateAddTo) {\n requestData.filter_date_add_to = this.filters.dateAddTo;\n }\n if (this.filters.lastProductFrom) {\n requestData.filter_last_product_from = this.filters.lastProductFrom;\n }\n if (this.filters.lastProductTo) {\n requestData.filter_last_product_to = this.filters.lastProductTo;\n }\n if (this.filters.activeOnly) {\n requestData.filter_active = 1;\n }\n }\n\n // Supplier-specific\n if (searchEntity === 'suppliers') {\n if (this.filters.salesMin !== null && this.filters.salesMin !== '') {\n requestData.filter_sales_min = this.filters.salesMin;\n }\n if (this.filters.salesMax !== null && this.filters.salesMax !== '') {\n requestData.filter_sales_max = this.filters.salesMax;\n }\n if (this.filters.turnoverMin !== null && this.filters.turnoverMin !== '') {\n requestData.filter_turnover_min = this.filters.turnoverMin;\n }\n if (this.filters.turnoverMax !== null && this.filters.turnoverMax !== '') {\n requestData.filter_turnover_max = this.filters.turnoverMax;\n }\n if (this.filters.dateAddFrom) {\n requestData.filter_date_add_from = this.filters.dateAddFrom;\n }\n if (this.filters.dateAddTo) {\n requestData.filter_date_add_to = this.filters.dateAddTo;\n }\n if (this.filters.lastProductFrom) {\n requestData.filter_last_product_from = this.filters.lastProductFrom;\n }\n if (this.filters.lastProductTo) {\n requestData.filter_last_product_to = this.filters.lastProductTo;\n }\n if (this.filters.activeOnly) {\n requestData.filter_active = 1;\n }\n }\n\n // Attribute-specific\n if (searchEntity === 'attributes') {\n if (this.filters.salesMin !== null && this.filters.salesMin !== '') {\n requestData.filter_sales_min = this.filters.salesMin;\n }\n if (this.filters.salesMax !== null && this.filters.salesMax !== '') {\n requestData.filter_sales_max = this.filters.salesMax;\n }\n if (this.filters.turnoverMin !== null && this.filters.turnoverMin !== '') {\n requestData.filter_turnover_min = this.filters.turnoverMin;\n }\n if (this.filters.turnoverMax !== null && this.filters.turnoverMax !== '') {\n requestData.filter_turnover_max = this.filters.turnoverMax;\n }\n if (this.filters.attributeGroup) {\n requestData.filter_attribute_group = this.filters.attributeGroup;\n }\n if (this.filters.isColor) {\n requestData.filter_is_color = 1;\n }\n }\n\n // Feature-specific\n if (searchEntity === 'features') {\n if (this.filters.salesMin !== null && this.filters.salesMin !== '') {\n requestData.filter_sales_min = this.filters.salesMin;\n }\n if (this.filters.salesMax !== null && this.filters.salesMax !== '') {\n requestData.filter_sales_max = this.filters.salesMax;\n }\n if (this.filters.turnoverMin !== null && this.filters.turnoverMin !== '') {\n requestData.filter_turnover_min = this.filters.turnoverMin;\n }\n if (this.filters.turnoverMax !== null && this.filters.turnoverMax !== '') {\n requestData.filter_turnover_max = this.filters.turnoverMax;\n }\n if (this.filters.featureGroup) {\n requestData.filter_feature_group = this.filters.featureGroup;\n }\n if (this.filters.isCustom) {\n requestData.filter_is_custom = 1;\n }\n }\n\n // CMS-specific\n if (searchEntity === 'cms') {\n if (this.filters.activeOnly) {\n requestData.filter_active = 1;\n }\n if (this.filters.indexable) {\n requestData.filter_indexable = 1;\n }\n }\n\n // CMS Categories-specific\n if (searchEntity === 'cms_categories') {\n if (this.filters.activeOnly) {\n requestData.filter_active = 1;\n }\n }\n }\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: requestData,\n success: function(response) {\n self.isLoading = false;\n\n if (!response.success) return;\n\n // Save to search history if query is not empty and has results\n if (self.searchQuery && self.searchQuery.length >= 2 && response.total > 0) {\n self.addToSearchHistory(searchEntity, self.searchQuery);\n }\n\n if (appendMode) {\n self.searchResults = self.searchResults.concat(response.results || []);\n } else {\n self.searchResults = response.results || [];\n }\n self.searchTotal = response.total || 0;\n self.searchOffset = appendMode ? self.searchOffset + (response.results || []).length : (response.results || []).length;\n\n self.renderSearchResults(appendMode);\n self.$dropdown.addClass('show');\n },\n error: function() {\n self.isLoading = false;\n }\n });\n },\n\n /**\n * Render search results in the dropdown\n */\n renderSearchResults: function(appendMode) {\n var self = this;\n var trans = this.config.trans || {};\n var $container = this.$dropdown.find('.dropdown-results');\n\n // Get selected IDs from current picker (to mark as selected)\n // and hidden IDs from sibling exclude pickers with same entity type (to hide completely)\n var selectedIds = [];\n var hiddenIds = [];\n if (this.activeGroup) {\n var $block = this.$wrapper.find('.target-block[data-block-type=\"' + this.activeGroup.blockType + '\"]');\n var $group = $block.find('.selection-group[data-group-index=\"' + this.activeGroup.groupIndex + '\"]');\n var currentSearchEntity = this.activeGroup.searchEntity;\n var currentExcludeIndex = this.activeGroup.excludeIndex;\n\n if (this.activeGroup.section === 'include') {\n // For include section, just get current picker's selections\n var $picker = $group.find('.include-picker');\n $picker.find('.entity-chip').each(function() {\n selectedIds.push(String($(this).data('id')));\n });\n } else {\n // For exclude section, get current picker's selections AND\n // collect IDs from sibling exclude rows with same entity type to hide\n var $currentExcludeRow = $group.find('.exclude-row[data-exclude-index=\"' + currentExcludeIndex + '\"]');\n var $currentPicker = $currentExcludeRow.find('.exclude-picker');\n\n // Get selected IDs from current exclude row\n $currentPicker.find('.entity-chip').each(function() {\n selectedIds.push(String($(this).data('id')));\n });\n\n // Get hidden IDs from OTHER exclude rows with the same entity type\n $group.find('.exclude-row').each(function() {\n var $row = $(this);\n var rowIndex = parseInt($row.data('excludeIndex'), 10);\n\n // Skip current exclude row\n if (rowIndex === currentExcludeIndex) return;\n\n var $picker = $row.find('.exclude-picker');\n var rowEntityType = $picker.attr('data-search-entity') || self.activeGroup.blockType;\n\n // Only collect if same entity type\n if (rowEntityType === currentSearchEntity) {\n $picker.find('.entity-chip').each(function() {\n hiddenIds.push(String($(this).data('id')));\n });\n }\n });\n }\n }\n\n // Check if this is a product search\n var isProductSearch = this.activeGroup && this.activeGroup.searchEntity === 'products';\n var isListView = this.viewMode === 'list';\n\n // Show/hide results header for products in list view\n this.$dropdown.find('.results-header').toggle(isProductSearch && isListView);\n\n // Build HTML - filter out items that are hidden (selected in sibling exclude rows)\n var visibleResults = this.searchResults.filter(function(item) {\n return hiddenIds.indexOf(String(item.id)) === -1;\n });\n\n // Update count (show visible count and total, noting hidden items if any)\n var hiddenCount = this.searchResults.length - visibleResults.length;\n var countText = visibleResults.length + ' / ' + this.searchTotal + ' results';\n if (hiddenCount > 0) {\n countText += ' (' + hiddenCount + ' hidden)';\n }\n this.$dropdown.find('.results-count').text(countText);\n\n var html = '';\n if (visibleResults.length === 0 && !appendMode) {\n html = '
' + (trans.no_results || 'No results found') + '
';\n } else {\n visibleResults.forEach(function(item) {\n var isSelected = selectedIds.indexOf(String(item.id)) !== -1;\n var itemClass = 'dropdown-item' + (isSelected ? ' selected' : '');\n if (item.type === 'product') itemClass += ' result-item-product';\n\n html += '
';\n } else {\n // Entity-specific icons\n var iconClass = 'icon-cube'; // default\n var searchEntity = self.activeGroup ? self.activeGroup.searchEntity : null;\n if (searchEntity === 'categories') iconClass = 'icon-folder';\n else if (searchEntity === 'manufacturers') iconClass = 'icon-building';\n else if (searchEntity === 'suppliers') iconClass = 'icon-truck';\n else if (searchEntity === 'attributes') iconClass = 'icon-paint-brush';\n else if (searchEntity === 'features') iconClass = 'icon-list-ul';\n else if (searchEntity === 'cms') iconClass = 'icon-file-text-o';\n else if (searchEntity === 'cms_categories') iconClass = 'icon-folder-o';\n html += '
';\n }\n\n html += '
';\n html += '
' + self.escapeHtml(item.name) + '
';\n if (item.subtitle) {\n // Split multi-line subtitles into separate divs for styling\n var subtitleLines = item.subtitle.split('\\n');\n html += '
';\n subtitleLines.forEach(function(line, idx) {\n var lineClass = idx === 0 ? 'subtitle-line subtitle-line-primary' : 'subtitle-line subtitle-line-secondary';\n html += '
' + self.escapeHtml(line) + '
';\n });\n html += '
';\n }\n html += '
';\n\n // Add product-specific columns (price, sale price, stock, sold)\n if (item.type === 'product' && isListView) {\n // Regular price\n html += '
';\n html += '' + (item.regular_price_formatted || item.price_formatted || '') + '';\n html += '
';\n\n // Sale price (only if discounted)\n if (item.has_discount) {\n html += '
';\n html += '' + (item.price_formatted || '') + '';\n html += '
';\n } else {\n html += '
';\n }\n\n // Stock column\n var stockClass = item.stock_status === 'out_of_stock' ? 'stock-out' :\n (item.stock_status === 'low_stock' ? 'stock-low' : 'stock-ok');\n html += '
';\n html += '' + (item.stock_qty !== undefined ? item.stock_qty : '') + '';\n html += '
';\n\n // Sales column\n html += '
';\n html += '' + (item.sales_qty !== undefined ? item.sales_qty : '0') + '';\n html += '
';\n }\n\n html += '';\n });\n }\n\n if (appendMode) {\n $container.append(html);\n } else {\n $container.html(html);\n }\n\n // Show/hide load more controls and update remaining count\n var hasMore = this.searchResults.length < this.searchTotal;\n var $loadMoreControls = this.$dropdown.find('.load-more-controls');\n $loadMoreControls.toggle(hasMore);\n\n if (hasMore) {\n var remaining = this.searchTotal - this.searchResults.length;\n $loadMoreControls.find('.remaining-count').text(remaining);\n\n // Update \"All\" option in dropdown\n var $select = $loadMoreControls.find('.load-more-select');\n var $allOption = $select.find('option[data-all=\"true\"]');\n if ($allOption.length) {\n $allOption.val(remaining).text((trans.all || 'All') + ' (' + remaining + ')');\n } else {\n $select.find('option:last').after('');\n }\n }\n\n // Ensure dropdown-actions are visible and history button is deactivated\n this.$dropdown.find('.dropdown-actions').show();\n this.$dropdown.find('.btn-show-history').removeClass('active');\n\n // Disable history button if no search history for current entity type\n var entityType = this.activeGroup ? this.activeGroup.searchEntity : null;\n var hasHistory = entityType && this.getSearchHistory(entityType).length > 0;\n this.$dropdown.find('.btn-show-history').prop('disabled', !hasHistory);\n },\n\n /**\n * Load and display category tree view\n */\n loadCategoryTree: function() {\n var self = this;\n var $container = this.$dropdown.find('.dropdown-results');\n var entityType = this.activeGroup ? this.activeGroup.searchEntity : 'categories';\n\n // Show the dropdown\n this.$dropdown.addClass('show');\n\n // Show loading state\n $container.html('
Loading category tree...
');\n\n // Use separate cache for each entity type\n var cacheKey = entityType + 'TreeCache';\n if (this[cacheKey]) {\n this.renderCategoryTree(this[cacheKey], entityType);\n return;\n }\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'getCategoryTree',\n trait: 'EntitySelector',\n entity_type: entityType\n },\n success: function(response) {\n if (response.success && response.categories) {\n self[cacheKey] = response.categories;\n self.renderCategoryTree(response.categories, entityType);\n } else {\n $container.html('
Failed to load category tree
');\n }\n },\n error: function(xhr, status, error) {\n $container.html('
Error loading category tree
');\n }\n });\n },\n\n /**\n * Render category tree structure\n */\n renderCategoryTree: function(categories, entityType) {\n var self = this;\n var trans = this.config.trans || {};\n var $container = this.$dropdown.find('.dropdown-results');\n var isCmsCategory = entityType === 'cms_categories';\n var categoryLabel = isCmsCategory ? 'CMS categories' : 'categories';\n\n // Get selected IDs from current picker\n var selectedIds = [];\n if (this.activeGroup) {\n var $block = this.$wrapper.find('.target-block[data-block-type=\"' + this.activeGroup.blockType + '\"]');\n var $group = $block.find('.selection-group[data-group-index=\"' + this.activeGroup.groupIndex + '\"]');\n\n if (this.activeGroup.section === 'include') {\n var $picker = $group.find('.include-picker');\n $picker.find('.entity-chip').each(function() {\n selectedIds.push(parseInt($(this).data('id'), 10));\n });\n } else {\n var $currentExcludeRow = $group.find('.exclude-row[data-exclude-index=\"' + this.activeGroup.excludeIndex + '\"]');\n var $currentPicker = $currentExcludeRow.find('.exclude-picker');\n $currentPicker.find('.entity-chip').each(function() {\n selectedIds.push(parseInt($(this).data('id'), 10));\n });\n }\n }\n\n // Build tree HTML\n var html = '
';\n\n html += '
';\n\n // Find minimum level (usually 1 or 2)\n var minLevel = categories.length > 0 ? categories[0].level : 1;\n\n categories.forEach(function(cat) {\n var isSelected = selectedIds.indexOf(cat.id) !== -1;\n var indent = (cat.level - minLevel) * 20;\n var hasChildren = cat.has_children;\n\n html += '
';\n\n // Expand/collapse toggle for parents\n if (hasChildren) {\n html += '';\n } else {\n html += '';\n }\n\n // Select children button for parents (on the left, near toggle)\n // Hide in single mode - selecting multiple items doesn't make sense there\n var isSingleMode = self.config.mode === 'single';\n if (hasChildren && !isSingleMode) {\n html += '';\n } else if (!isSingleMode) {\n html += '';\n }\n\n // Checkbox\n html += '';\n\n // Category icon (file icon for CMS categories)\n var iconClass = isCmsCategory ? 'icon-file-text-o' : ('icon-folder' + (hasChildren ? '' : '-o'));\n html += '';\n\n // Name and subtitle\n html += '
';\n html += '' + self.escapeHtml(cat.name) + '';\n html += '' + self.escapeHtml(cat.subtitle) + '';\n html += '
';\n\n html += '
';\n });\n\n html += '
'; // tree-container\n html += '
'; // category-tree\n\n $container.html(html);\n\n // Update results count with appropriate label\n var selectedCount = $container.find('.tree-item.selected').length;\n this.$dropdown.find('.results-count').text(categories.length + ' ' + categoryLabel + (selectedCount > 0 ? ' (' + selectedCount + ' selected)' : ''));\n\n // Update select-children button states based on initial selection\n var $allItems = $container.find('.tree-item');\n this.updateSelectChildrenButtons($allItems);\n\n // Hide load more controls in tree view\n this.$dropdown.find('.load-more-controls').hide();\n },\n\n /**\n * Filter category tree by search query (client-side filtering)\n */\n filterCategoryTree: function(query) {\n var self = this;\n var $container = this.$dropdown.find('.category-tree');\n if (!$container.length) {\n return;\n }\n\n var $items = $container.find('.tree-item');\n query = query.toLowerCase().trim();\n\n if (!query) {\n // Show all items when query is empty\n $items.show().removeClass('collapsed');\n $container.find('.tree-toggle i').removeClass('icon-caret-right').addClass('icon-caret-down');\n return;\n }\n\n // First pass: find matching items and their ancestors\n var matchingIds = [];\n var ancestorIds = [];\n\n $items.each(function() {\n var $item = $(this);\n var name = ($item.data('name') || '').toLowerCase();\n if (name.indexOf(query) !== -1) {\n matchingIds.push($item.data('id'));\n // Also mark all ancestors using helper (works for both nleft/nright and parent_id)\n var ancestors = self.findTreeAncestors($item, $items);\n for (var i = 0; i < ancestors.length; i++) {\n ancestorIds.push($(ancestors[i]).data('id'));\n }\n }\n });\n\n // Second pass: show/hide items\n $items.each(function() {\n var $item = $(this);\n var id = $item.data('id');\n if (matchingIds.indexOf(id) !== -1 || ancestorIds.indexOf(id) !== -1) {\n $item.show().removeClass('collapsed');\n $item.find('.tree-toggle i').removeClass('icon-caret-right').addClass('icon-caret-down');\n } else {\n $item.hide();\n }\n });\n\n // Update count with appropriate label\n var visibleCount = $items.filter(':visible').length;\n var selectedCount = $items.filter('.selected').length;\n var entityType = $container.data('entity-type') || 'categories';\n var categoryLabel = entityType === 'cms_categories' ? 'CMS categories' : 'categories';\n this.$dropdown.find('.results-count').text(visibleCount + ' ' + categoryLabel + (selectedCount > 0 ? ' (' + selectedCount + ' selected)' : ''));\n },\n\n /**\n * Find all descendant tree items of a parent.\n * Works with nleft/nright (product categories) or parent_id (CMS categories).\n */\n findTreeDescendants: function($parent, $allItems) {\n var nleft = parseInt($parent.data('nleft'), 10);\n var nright = parseInt($parent.data('nright'), 10);\n var parentId = parseInt($parent.data('id'), 10);\n var descendants = [];\n\n // If nleft/nright are valid (product categories), use nested set\n if (nleft > 0 && nright > 0 && nright > nleft) {\n $allItems.each(function() {\n var $item = $(this);\n var childNleft = parseInt($item.data('nleft'), 10);\n var childNright = parseInt($item.data('nright'), 10);\n if (childNleft > nleft && childNright < nright) {\n descendants.push($item);\n }\n });\n } else {\n // CMS categories: use parent_id recursively\n var idsToCheck = [parentId];\n var processed = {};\n\n while (idsToCheck.length > 0) {\n var checkId = idsToCheck.shift();\n if (processed[checkId]) continue;\n processed[checkId] = true;\n\n $allItems.each(function() {\n var $item = $(this);\n var itemParentId = parseInt($item.data('parent-id'), 10);\n var itemId = parseInt($item.data('id'), 10);\n if (itemParentId === checkId && !processed[itemId]) {\n descendants.push($item);\n idsToCheck.push(itemId);\n }\n });\n }\n }\n\n return descendants;\n },\n\n /**\n * Find all ancestor tree items of an item.\n * Works with nleft/nright (product categories) or parent_id (CMS categories).\n */\n findTreeAncestors: function($item, $allItems) {\n var nleft = parseInt($item.data('nleft'), 10);\n var nright = parseInt($item.data('nright'), 10);\n var ancestors = [];\n\n // If nleft/nright are valid (product categories), use nested set\n if (nleft > 0 && nright > 0) {\n $allItems.each(function() {\n var $ancestor = $(this);\n var ancNleft = parseInt($ancestor.data('nleft'), 10);\n var ancNright = parseInt($ancestor.data('nright'), 10);\n if (ancNleft < nleft && ancNright > nright) {\n ancestors.push($ancestor);\n }\n });\n } else {\n // CMS categories: use parent_id chain\n var parentId = parseInt($item.data('parent-id'), 10);\n var processed = {};\n\n while (parentId > 0 && !processed[parentId]) {\n processed[parentId] = true;\n $allItems.each(function() {\n var $ancestor = $(this);\n var ancestorId = parseInt($ancestor.data('id'), 10);\n if (ancestorId === parentId) {\n ancestors.push($ancestor);\n parentId = parseInt($ancestor.data('parent-id'), 10);\n return false; // break inner loop\n }\n });\n }\n }\n\n return ancestors;\n },\n\n /**\n * Update all select-children buttons to reflect current selection state.\n * Shows minus icon if item and all children are selected, plus icon otherwise.\n */\n updateSelectChildrenButtons: function($allItems) {\n var self = this;\n var trans = this.config.trans || {};\n\n $allItems.filter('.has-children').each(function() {\n var $item = $(this);\n var $btn = $item.find('.btn-select-children');\n if (!$btn.length) return;\n\n var descendants = self.findTreeDescendants($item, $allItems);\n\n // Check if parent and ALL descendants are selected\n var allSelected = $item.hasClass('selected');\n for (var i = 0; i < descendants.length && allSelected; i++) {\n if (!$(descendants[i]).hasClass('selected')) {\n allSelected = false;\n }\n }\n\n // Update button icon and title\n if (allSelected && descendants.length > 0) {\n $btn.find('i').removeClass('icon-plus-square').addClass('icon-minus-square');\n $btn.attr('title', trans.deselect_with_children || 'Deselect with all children');\n } else {\n $btn.find('i').removeClass('icon-minus-square').addClass('icon-plus-square');\n $btn.attr('title', trans.select_with_children || 'Select with all children');\n }\n });\n },\n\n // =========================================================================\n // Search History\n // =========================================================================\n\n loadSearchHistory: function() {\n try {\n var stored = localStorage.getItem(this.searchHistoryKey);\n this.searchHistory = stored ? JSON.parse(stored) : {};\n } catch (e) {\n this.searchHistory = {};\n }\n },\n\n saveSearchHistory: function() {\n try {\n localStorage.setItem(this.searchHistoryKey, JSON.stringify(this.searchHistory));\n } catch (e) {\n // localStorage might be full or unavailable\n }\n },\n\n addToSearchHistory: function(entityType, query) {\n if (!query || query.length < 2) return;\n\n if (!this.searchHistory[entityType]) {\n this.searchHistory[entityType] = [];\n }\n\n var history = this.searchHistory[entityType];\n\n // Remove if already exists (will re-add at top)\n var existingIndex = history.indexOf(query);\n if (existingIndex !== -1) {\n history.splice(existingIndex, 1);\n }\n\n // Add at beginning\n history.unshift(query);\n\n // Trim to max\n if (history.length > this.searchHistoryMax) {\n history = history.slice(0, this.searchHistoryMax);\n }\n\n this.searchHistory[entityType] = history;\n this.saveSearchHistory();\n },\n\n removeFromSearchHistory: function(entityType, query) {\n if (!this.searchHistory[entityType]) return;\n\n var index = this.searchHistory[entityType].indexOf(query);\n if (index !== -1) {\n this.searchHistory[entityType].splice(index, 1);\n this.saveSearchHistory();\n }\n },\n\n getSearchHistory: function(entityType) {\n return this.searchHistory[entityType] || [];\n },\n\n showSearchHistory: function(entityType) {\n var history = this.getSearchHistory(entityType);\n var trans = this.config.trans || {};\n var $container = this.$dropdown.find('.dropdown-results');\n\n // Update header\n this.$dropdown.find('.results-count').text(trans.recent_searches || 'Recent searches');\n\n // Hide filters, actions, and results header for history view\n this.$dropdown.find('.dropdown-actions').hide();\n this.$dropdown.find('.filter-panel').removeClass('show');\n this.$dropdown.find('.btn-toggle-filters').removeClass('active');\n this.$dropdown.find('.results-header').hide();\n\n if (!history.length) {\n // No history - just do a regular search\n this.performSearch();\n return;\n }\n\n // Build history items\n var html = '
';\n for (var i = 0; i < history.length; i++) {\n var query = history[i];\n html += '
';\n html += '';\n html += '' + this.escapeHtml(query) + '';\n html += '';\n html += '
';\n }\n html += '
';\n\n $container.html(html);\n this.$dropdown.addClass('show');\n },\n\n // =========================================================================\n // Filter Methods\n // =========================================================================\n\n refreshSearch: function() {\n // In tree view mode, re-filter the tree instead of doing a flat AJAX search\n if (this.viewMode === 'tree') {\n this.filterCategoryTree(this.searchQuery || '');\n return;\n }\n\n this.searchOffset = 0;\n this.loadMoreCount = 20;\n // Reset load more select to default\n if (this.$dropdown) {\n this.$dropdown.find('.load-more-select').val('20');\n // Remove the dynamic \"All\" option\n this.$dropdown.find('.load-more-select option[data-all=\"true\"]').remove();\n }\n this.performSearch(false);\n },\n\n clearFilters: function() {\n this.refineQuery = '';\n this.refineNegate = false;\n this.filters = {\n inStock: false,\n discounted: false,\n priceMin: null,\n priceMax: null,\n attributes: [],\n features: [],\n // Entity-specific filters\n productCountMin: null,\n productCountMax: null,\n salesMin: null,\n salesMax: null,\n turnoverMin: null,\n turnoverMax: null,\n depth: null,\n hasProducts: false,\n hasDescription: false,\n hasImage: false,\n activeOnly: true,\n attributeGroup: null,\n featureGroup: null,\n dateAddFrom: null,\n dateAddTo: null,\n lastProductFrom: null,\n lastProductTo: null\n };\n\n if (this.$dropdown) {\n var trans = this.config.trans || {};\n this.$dropdown.find('.refine-input').val('').attr('placeholder', trans.refine_short || 'Refine...');\n this.$dropdown.find('.btn-clear-refine').hide();\n this.$dropdown.find('.btn-refine-negate').removeClass('active');\n this.$dropdown.find('.filter-in-stock').prop('checked', false);\n this.$dropdown.find('.filter-discounted').prop('checked', false);\n this.$dropdown.find('.filter-price-min').val('');\n this.$dropdown.find('.filter-price-max').val('');\n this.$dropdown.find('.filter-attr-chip').removeClass('active');\n this.$dropdown.find('.filter-feat-chip').removeClass('active');\n this.$dropdown.find('.filter-group-toggle').removeClass('active has-selection');\n this.$dropdown.find('.filter-row-values').hide();\n\n // Clear entity-specific filter inputs\n this.$dropdown.find('.filter-product-count-min, .filter-product-count-max').val('');\n this.$dropdown.find('.filter-sales-min, .filter-sales-max').val('');\n this.$dropdown.find('.filter-turnover-min, .filter-turnover-max').val('');\n this.$dropdown.find('.filter-date-add-from, .filter-date-add-to').val('');\n this.$dropdown.find('.filter-last-product-from, .filter-last-product-to').val('');\n this.$dropdown.find('.filter-depth-select').val('');\n this.$dropdown.find('.filter-has-products').prop('checked', false);\n this.$dropdown.find('.filter-has-description').prop('checked', false);\n this.$dropdown.find('.filter-has-image').prop('checked', false);\n this.$dropdown.find('.filter-active-only').prop('checked', true);\n this.$dropdown.find('.filter-attribute-group-select, .filter-feature-group-select').val('');\n }\n\n this.refreshSearch();\n },\n\n // Reset filters without triggering a search (used when switching entity types)\n resetFiltersWithoutSearch: function() {\n this.refineQuery = '';\n this.refineNegate = false;\n this.filters = {\n inStock: false,\n discounted: false,\n priceMin: null,\n priceMax: null,\n attributes: [],\n features: [],\n productCountMin: null,\n productCountMax: null,\n salesMin: null,\n salesMax: null,\n turnoverMin: null,\n turnoverMax: null,\n depth: null,\n hasProducts: false,\n hasDescription: false,\n hasImage: false,\n activeOnly: true,\n attributeGroup: null,\n featureGroup: null,\n dateAddFrom: null,\n dateAddTo: null,\n lastProductFrom: null,\n lastProductTo: null\n };\n\n if (this.$dropdown) {\n var trans = this.config.trans || {};\n this.$dropdown.find('.refine-input').val('').attr('placeholder', trans.refine_short || 'Refine...');\n this.$dropdown.find('.btn-clear-refine').hide();\n this.$dropdown.find('.btn-refine-negate').removeClass('active');\n this.$dropdown.find('.filter-in-stock').prop('checked', false);\n this.$dropdown.find('.filter-discounted').prop('checked', false);\n this.$dropdown.find('.filter-price-min').val('');\n this.$dropdown.find('.filter-price-max').val('');\n this.$dropdown.find('.filter-attr-chip').removeClass('active');\n this.$dropdown.find('.filter-feat-chip').removeClass('active');\n this.$dropdown.find('.filter-group-toggle').removeClass('active has-selection');\n this.$dropdown.find('.filter-row-values').hide();\n this.$dropdown.find('.filter-product-count-min, .filter-product-count-max').val('');\n this.$dropdown.find('.filter-sales-min, .filter-sales-max').val('');\n this.$dropdown.find('.filter-turnover-min, .filter-turnover-max').val('');\n this.$dropdown.find('.filter-date-add-from, .filter-date-add-to').val('');\n this.$dropdown.find('.filter-last-product-from, .filter-last-product-to').val('');\n this.$dropdown.find('.filter-depth-select').val('');\n this.$dropdown.find('.filter-has-products').prop('checked', false);\n this.$dropdown.find('.filter-has-description').prop('checked', false);\n this.$dropdown.find('.filter-has-image').prop('checked', false);\n this.$dropdown.find('.filter-active-only').prop('checked', true);\n this.$dropdown.find('.filter-attribute-group-select, .filter-feature-group-select').val('');\n }\n // Note: Does NOT call refreshSearch() - caller handles search/load\n },\n\n updateFilterPanelForEntity: function(entityType) {\n if (!this.$dropdown) {\n return;\n }\n\n var $panel = this.$dropdown.find('.filter-panel');\n\n // Hide all filter rows first\n $panel.find('.filter-row').hide();\n\n // Show/hide tree view option based on entity type\n var $treeOption = this.$dropdown.find('.view-mode-select option.tree-view-option');\n if (entityType === 'categories' || entityType === 'cms_categories') {\n $treeOption.prop('disabled', false).prop('hidden', false);\n // Auto-switch to tree view for categories\n if (this.viewMode !== 'tree') {\n this.viewMode = 'tree';\n this.$dropdown.find('.view-mode-select').val('tree');\n this.$dropdown.removeClass('view-list view-cols-2 view-cols-3 view-cols-4 view-cols-5 view-cols-6 view-cols-7 view-cols-8').addClass('view-tree');\n this.loadCategoryTree();\n } else {\n this.loadCategoryTree();\n }\n } else {\n $treeOption.prop('disabled', true).prop('hidden', true);\n // If currently in tree mode, switch back to list\n if (this.viewMode === 'tree') {\n this.viewMode = 'list';\n this.$dropdown.find('.view-mode-select').val('list');\n this.$dropdown.removeClass('view-tree').addClass('view-list');\n }\n }\n\n // Show entity-specific filter row (prepare visibility, but don't auto-expand panel)\n if (entityType === 'products') {\n // Prepare the correct rows to be visible when panel is shown\n $panel.find('.filter-row-quick').show();\n // Show attribute/feature rows if we have cached data\n if (this.filterableData) {\n if (this.filterableData.attributes && this.filterableData.attributes.length > 0) {\n this.$dropdown.find('.filter-row-attributes').show();\n }\n if (this.filterableData.features && this.filterableData.features.length > 0) {\n this.$dropdown.find('.filter-row-features').show();\n }\n }\n } else if (entityType === 'categories') {\n $panel.find('.filter-row-entity-categories').show();\n } else if (entityType === 'manufacturers') {\n $panel.find('.filter-row-entity-manufacturers').show();\n } else if (entityType === 'suppliers') {\n $panel.find('.filter-row-entity-suppliers').show();\n } else if (entityType === 'attributes') {\n $panel.find('.filter-row-entity-attributes').show();\n this.loadAttributeGroups();\n } else if (entityType === 'features') {\n $panel.find('.filter-row-entity-features').show();\n } else if (entityType === 'cms') {\n $panel.find('.filter-row-entity-cms').show();\n } else if (entityType === 'cms_categories') {\n $panel.find('.filter-row-entity-cms-categories').show();\n }\n },\n\n loadAttributeGroups: function() {\n var self = this;\n var $select = this.$dropdown.find('.filter-attribute-group-select');\n\n // Already loaded?\n if ($select.find('option').length > 1) return;\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'getAttributeGroups',\n trait: 'EntitySelector'\n },\n success: function(response) {\n if (response.success && response.groups) {\n $.each(response.groups, function(i, group) {\n $select.append('');\n });\n }\n }\n });\n },\n\n loadFeatureGroups: function() {\n var self = this;\n var $select = this.$dropdown.find('.filter-feature-group-select');\n\n // Already loaded?\n if ($select.find('option').length > 1) return;\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'getFeatureGroups',\n trait: 'EntitySelector'\n },\n success: function(response) {\n if (response.success && response.groups) {\n $.each(response.groups, function(i, group) {\n $select.append('');\n });\n }\n }\n });\n }\n };\n\n})(jQuery);\n","/**\n * Entity Selector - Filters Module\n * Filter panel, filter state management\n * @partial _filters.js\n *\n * EXTRACTION SOURCE: assets/js/admin/entity-selector.js\n * Lines: 6605-6758 (filter methods)\n *\n * Contains:\n * - clearFilters() - Reset all filters\n * - resetFiltersWithoutSearch() - Reset without triggering search\n * - updateFilterPanelForEntity() - Show/hide filters based on entity type\n * - loadFilterableData() - Load attributes/features for filter panel\n * - renderFilterDropdowns() - Render attribute/feature group toggles\n * - showFilterGroupValues() - Show values for a filter group\n * - hideFilterGroupValues() - Hide filter values row\n * - updateFilterToggleStates() - Update toggle states based on selections\n */\n\n(function($) {\n 'use strict';\n\n window._EntitySelectorMixins = window._EntitySelectorMixins || {};\n\n window._EntitySelectorMixins.filters = {\n\n clearFilters: function() {\n this.refineQuery = '';\n this.refineNegate = false;\n this.filters = {\n inStock: false,\n discounted: false,\n priceMin: null,\n priceMax: null,\n attributes: [],\n features: [],\n productCountMin: null,\n productCountMax: null,\n salesMin: null,\n salesMax: null,\n turnoverMin: null,\n turnoverMax: null,\n depth: null,\n hasProducts: false,\n hasDescription: false,\n hasImage: false,\n activeOnly: true,\n attributeGroup: null,\n featureGroup: null,\n dateAddFrom: null,\n dateAddTo: null,\n lastProductFrom: null,\n lastProductTo: null\n };\n\n if (this.$dropdown) {\n var trans = this.config.trans || {};\n this.$dropdown.find('.refine-input').val('');\n this.$dropdown.find('.btn-refine-negate').removeClass('active');\n this.$dropdown.find('.filter-in-stock').prop('checked', false);\n this.$dropdown.find('.filter-discounted').prop('checked', false);\n this.$dropdown.find('.filter-price-min, .filter-price-max').val('');\n this.$dropdown.find('.filter-attr-chip, .filter-feat-chip').removeClass('active');\n this.$dropdown.find('.filter-product-count-min, .filter-product-count-max').val('');\n this.$dropdown.find('.filter-sales-min, .filter-sales-max').val('');\n this.$dropdown.find('.filter-depth-select').val('');\n this.$dropdown.find('.filter-has-products').prop('checked', false);\n this.$dropdown.find('.filter-active-only').prop('checked', true);\n }\n\n this.refreshSearch();\n },\n\n resetFiltersWithoutSearch: function() {\n // Same as clearFilters but doesn't trigger search\n // Used when switching entity types\n this.refineQuery = '';\n this.refineNegate = false;\n this.filters = {\n inStock: false,\n discounted: false,\n priceMin: null,\n priceMax: null,\n attributes: [],\n features: [],\n productCountMin: null,\n productCountMax: null,\n salesMin: null,\n salesMax: null,\n turnoverMin: null,\n turnoverMax: null,\n depth: null,\n hasProducts: false,\n hasDescription: false,\n hasImage: false,\n activeOnly: true,\n attributeGroup: null,\n featureGroup: null,\n dateAddFrom: null,\n dateAddTo: null,\n lastProductFrom: null,\n lastProductTo: null\n };\n },\n\n updateFilterPanelForEntity: function(entityType) {\n if (!this.$dropdown) return;\n\n var $panel = this.$dropdown.find('.filter-panel');\n\n // Hide all entity-specific filter rows\n $panel.find('.filter-row').hide();\n\n // Show filters for current entity type\n $panel.find('.filter-row[data-entity=\"' + entityType + '\"]').show();\n $panel.find('.filter-row-entity-' + entityType.replace('_', '-')).show();\n\n // Enable/disable tree view option\n var $treeOption = this.$dropdown.find('.tree-view-option');\n if (entityType === 'categories' || entityType === 'cms_categories') {\n $treeOption.prop('disabled', false).show();\n } else {\n $treeOption.prop('disabled', true).hide();\n }\n },\n\n loadFilterableData: function() {\n var self = this;\n\n if (this.filterableData) {\n this.renderFilterDropdowns();\n return;\n }\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n data: {\n ajax: 1,\n action: 'getTargetFilterableAttributes',\n trait: 'EntitySelector'\n },\n dataType: 'json',\n success: function(response) {\n if (response.success && response.data) {\n self.filterableData = response.data;\n self.renderFilterDropdowns();\n }\n }\n });\n },\n\n renderFilterDropdowns: function() {\n if (!this.$dropdown || !this.filterableData) return;\n\n var self = this;\n\n // Render attribute group toggle buttons\n var $attrContainer = this.$dropdown.find('.filter-attributes-container');\n $attrContainer.empty();\n\n if (this.filterableData.attributes && this.filterableData.attributes.length > 0) {\n this.filterableData.attributes.forEach(function(group) {\n var html = '';\n $attrContainer.append(html);\n });\n this.$dropdown.find('.filter-row-attributes').show();\n }\n\n // Render feature group toggle buttons\n var $featContainer = this.$dropdown.find('.filter-features-container');\n $featContainer.empty();\n\n if (this.filterableData.features && this.filterableData.features.length > 0) {\n this.filterableData.features.forEach(function(group) {\n var html = '';\n $featContainer.append(html);\n });\n this.$dropdown.find('.filter-row-features').show();\n }\n },\n\n showFilterGroupValues: function(groupId, type) {\n if (!this.filterableData) return;\n\n var self = this;\n var groups = type === 'attribute' ? this.filterableData.attributes : this.filterableData.features;\n var group = groups.find(function(g) { return g.id == groupId; });\n\n if (!group) return;\n\n // Hide all values rows first, then show the correct one\n this.$dropdown.find('.filter-row-values').hide();\n\n // Target the correct values row based on type\n var valuesRowClass = type === 'attribute' ? '.filter-row-attr-values' : '.filter-row-feat-values';\n var $filterRowValues = this.$dropdown.find(valuesRowClass);\n var $valuesContainer = $filterRowValues.find('.filter-values-container');\n $valuesContainer.empty();\n\n // Add group label\n var html = '' + group.name + ':';\n\n // Add chips\n group.values.forEach(function(val) {\n var isActive = type === 'attribute'\n ? self.filters.attributes.indexOf(val.id) !== -1\n : self.filters.features.indexOf(val.id) !== -1;\n var activeClass = isActive ? ' active' : '';\n var chipClass = type === 'attribute' ? 'filter-attr-chip' : 'filter-feat-chip';\n var colorStyle = val.color ? ' style=\"--chip-color: ' + val.color + '\"' : '';\n var colorClass = val.color ? ' has-color' : '';\n\n html += '';\n });\n\n $valuesContainer.html(html);\n\n // Add close button as sibling (outside filter-values-container, inside filter-row-values)\n $filterRowValues.find('.btn-close-values').remove();\n $filterRowValues.append('');\n $filterRowValues.show();\n\n // Scroll into view if needed\n var rowValues = $filterRowValues[0];\n if (rowValues) {\n rowValues.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n },\n\n hideFilterGroupValues: function() {\n this.$dropdown.find('.filter-row-values').hide();\n this.$dropdown.find('.filter-group-toggle').removeClass('active');\n },\n\n updateFilterToggleStates: function() {\n if (!this.$dropdown || !this.filterableData) return;\n\n var self = this;\n\n // Update attribute group toggles\n if (this.filterableData.attributes) {\n this.filterableData.attributes.forEach(function(group) {\n var $toggle = self.$dropdown.find('.filter-group-toggle[data-group-id=\"' + group.id + '\"][data-type=\"attribute\"]');\n var hasActiveInGroup = group.values.some(function(val) {\n return self.filters.attributes.indexOf(val.id) !== -1;\n });\n $toggle.toggleClass('has-selection', hasActiveInGroup);\n });\n }\n\n // Update feature group toggles\n if (this.filterableData.features) {\n this.filterableData.features.forEach(function(group) {\n var $toggle = self.$dropdown.find('.filter-group-toggle[data-group-id=\"' + group.id + '\"][data-type=\"feature\"]');\n var hasActiveInGroup = group.values.some(function(val) {\n return self.filters.features.indexOf(val.id) !== -1;\n });\n $toggle.toggleClass('has-selection', hasActiveInGroup);\n });\n }\n }\n };\n\n})(jQuery);\n","/**\n * Entity Selector - Chips Module\n * Entity chip rendering, selection management, and pattern tag handling\n * @partial _chips.js\n *\n * EXTRACTION SOURCE: assets/js/admin/entity-selector.js\n *\n * Contains:\n * - addSelection() / addSelectionNoUpdate() - Add entity chip to picker\n * - removeSelection() - Remove chip and update state\n * - updateChipsVisibility() - Show/hide based on count\n * - loadExistingSelections() - Load saved values on init\n * - collectPickerEntities() / loadPickerValues() - Entity loading helpers\n * - Pattern tag methods: addPatternTag, getPatternTags, updateDraftTagCount\n * - Single mode: getCurrentSingleSelection, showReplaceConfirmation\n * - Count updates: updateConditionCount, updateGroupCounts, updateGroupTotalCount\n */\n\n(function($) {\n 'use strict';\n\n window._EntitySelectorMixins = window._EntitySelectorMixins || {};\n\n window._EntitySelectorMixins.chips = {\n\n // =========================================================================\n // Selection Methods (Entity Chips)\n // =========================================================================\n\n addSelection: function($picker, id, name, data) {\n this.addSelectionNoUpdate($picker, id, name, data);\n var $chips = $picker.find('.entity-chips');\n this.updateChipsVisibility($chips);\n },\n\n addSelectionNoUpdate: function($picker, id, name, data) {\n var $chips = $picker.find('.entity-chips');\n var $block = $picker.closest('.target-block');\n\n // Check for global single mode (only ONE item across ALL entity types)\n var globalMode = this.config.mode || 'multi';\n\n if (globalMode === 'single') {\n // Clear ALL selections in ALL blocks (across all entity types)\n this.$wrapper.find('.entity-chips .entity-chip').remove();\n // Clear all selected states in dropdown\n if (this.$dropdown) {\n this.$dropdown.find('.dropdown-item.selected, .tree-item.selected').removeClass('selected');\n }\n // Clear tab badges (since we're clearing other blocks)\n this.$wrapper.find('.target-block-tab .tab-badge').remove();\n this.$wrapper.find('.target-block-tab').removeClass('has-data');\n } else {\n // Check if this block is in per-block single mode\n var blockMode = $block.data('mode') || 'multi';\n\n // In per-block single mode, clear chips in THIS block only\n if (blockMode === 'single') {\n $chips.find('.entity-chip').remove();\n // Also deselect all items in dropdown\n if (this.$dropdown) {\n this.$dropdown.find('.dropdown-item.selected, .tree-item.selected').removeClass('selected');\n }\n }\n }\n\n if ($chips.find('.entity-chip[data-id=\"' + id + '\"]').length) {\n return;\n }\n\n var html = '';\n\n if (data && data.image) {\n html += '\"\"';\n }\n\n html += '' + this.escapeHtml(name) + '';\n html += '';\n html += '';\n\n $chips.append(html);\n },\n\n removeSelection: function($picker, id) {\n var $chips = $picker.find('.entity-chips');\n $picker.find('.entity-chip[data-id=\"' + id + '\"]').remove();\n this.updateChipsVisibility($chips);\n },\n\n updateChipsVisibility: function($chips) {\n var self = this;\n var $allChips = $chips.find('.entity-chip');\n var totalCount = $allChips.length;\n var $toggle = $chips.find('.chips-show-more-toggle');\n var isExpanded = $chips.hasClass('chips-expanded');\n var trans = this.config.trans || {};\n\n // Remove existing toggle if present\n $toggle.remove();\n\n if (totalCount <= this.maxVisibleChips) {\n // All chips visible, no toggle needed\n $allChips.removeClass('chip-hidden');\n $chips.removeClass('chips-expanded chips-collapsed');\n return;\n }\n\n // We have more than maxVisibleChips\n var hiddenCount = totalCount - this.maxVisibleChips;\n\n if (isExpanded) {\n // Show all chips\n $allChips.removeClass('chip-hidden');\n\n // Add collapse toggle\n var collapseText = trans.show_less || 'Show less';\n $chips.append('' +\n ' ' + collapseText + '');\n } else {\n // Hide chips beyond maxVisibleChips\n $allChips.each(function(index) {\n if (index >= self.maxVisibleChips) {\n $(this).addClass('chip-hidden');\n } else {\n $(this).removeClass('chip-hidden');\n }\n });\n\n // Add expand toggle\n var moreText = (trans.show_more || 'Show {count} more').replace('{count}', hiddenCount);\n $chips.addClass('chips-collapsed').removeClass('chips-expanded');\n $chips.append('' +\n ' ' + moreText + '');\n }\n },\n\n // =========================================================================\n // Loading/Initialization\n // =========================================================================\n\n loadExistingSelections: function() {\n var self = this;\n\n // Collect all entity IDs to load, grouped by entity type\n var entitiesToLoad = {}; // { entity_type: { ids: [], pickers: [] } }\n\n this.$wrapper.find('.selection-group').each(function() {\n var $group = $(this);\n var $block = $group.closest('.target-block');\n var blockType = $block.data('blockType');\n\n // Load include values\n var $includePicker = $group.find('.include-picker');\n self.collectPickerEntities($includePicker, blockType, entitiesToLoad);\n\n // Enhance the include method select if not already enhanced\n self.enhanceMethodSelect($group.find('.include-method-select'));\n\n // Load exclude values from each exclude row\n $group.find('.exclude-row').each(function() {\n var $excludeRow = $(this);\n self.collectPickerEntities($excludeRow.find('.exclude-picker'), blockType, entitiesToLoad);\n\n // Enhance the exclude method select if not already enhanced\n self.enhanceMethodSelect($excludeRow.find('.exclude-method-select'));\n });\n\n // Lock method selector if excludes exist\n var hasExcludes = $group.find('.group-excludes.has-excludes').length > 0;\n if (hasExcludes) {\n self.updateMethodSelectorLock($group, true);\n }\n });\n\n // Now load all entities in bulk for each entity type\n Object.keys(entitiesToLoad).forEach(function(entityType) {\n var data = entitiesToLoad[entityType];\n if (data.ids.length === 0) return;\n\n // Deduplicate IDs\n var uniqueIds = data.ids.filter(function(id, index, arr) {\n return arr.indexOf(id) === index;\n });\n\n $.ajax({\n url: self.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'getTargetEntitiesByIds',\n trait: 'EntitySelector',\n entity_type: entityType,\n ids: JSON.stringify(uniqueIds)\n },\n success: function(response) {\n if (response.success && response.entities) {\n // Build a map of id -> entity for quick lookup\n var entityMap = {};\n response.entities.forEach(function(entity) {\n entityMap[entity.id] = entity;\n });\n\n // Update each picker that requested this entity type\n data.pickers.forEach(function(pickerData) {\n var $picker = pickerData.$picker;\n var $chips = $picker.find('.entity-chips');\n var $dataInput = $picker.find('.include-values-data, .exclude-values-data');\n var validIds = [];\n\n // Replace loading chips with real data\n pickerData.ids.forEach(function(id) {\n var $loadingChip = $chips.find('.entity-chip-loading[data-id=\"' + id + '\"]');\n if (entityMap[id]) {\n var entity = entityMap[id];\n validIds.push(entity.id);\n\n // Create real chip\n var html = '';\n if (entity.image) {\n html += '\"\"';\n }\n html += '' + self.escapeHtml(entity.name) + '';\n html += '';\n html += '';\n\n $loadingChip.replaceWith(html);\n } else {\n // Entity not found, remove loading chip\n $loadingChip.remove();\n }\n });\n\n // Update chips visibility\n self.updateChipsVisibility($chips);\n\n // If some entities were not found, update the hidden input\n if (validIds.length !== pickerData.ids.length) {\n $dataInput.val(JSON.stringify(validIds));\n self.serializeAllBlocks();\n }\n\n self.updateBlockStatus($picker.closest('.target-block'));\n });\n }\n }\n });\n });\n },\n\n /**\n * Collect entity IDs from a picker for bulk loading\n * Also shows loading placeholders for entity_search types\n */\n collectPickerEntities: function($picker, blockType, entitiesToLoad) {\n if (!$picker.length) {\n return;\n }\n\n var self = this;\n var $dataInput = $picker.find('.include-values-data, .exclude-values-data');\n if (!$dataInput.length) {\n return;\n }\n\n var valueType = $picker.attr('data-value-type');\n var rawValue = $dataInput.val() || '[]';\n\n var values = [];\n try {\n values = JSON.parse(rawValue);\n } catch (e) {\n return;\n }\n\n // Handle non-entity types synchronously\n if (valueType === 'multi_numeric_range') {\n if (!Array.isArray(values) || values.length === 0) return;\n\n var $chipsContainer = $picker.find('.multi-range-chips');\n values.forEach(function(range) {\n if (!range || (range.min === null && range.max === null)) return;\n\n var chipText = '';\n if (range.min !== null && range.max !== null) {\n chipText = range.min + ' - ' + range.max;\n } else if (range.min !== null) {\n chipText = '≥ ' + range.min;\n } else {\n chipText = '≤ ' + range.max;\n }\n\n var $chip = $('', {\n class: 'range-chip',\n 'data-min': range.min !== null ? range.min : '',\n 'data-max': range.max !== null ? range.max : ''\n });\n $chip.append($('', { class: 'range-chip-text', text: chipText }));\n $chip.append($('';\n html += '' + this.escapeHtml(pattern) + '';\n html += '';\n html += '';\n $chipsContainer.append(html);\n },\n\n /**\n * Get all pattern tags from a wrapper\n * Returns array of objects: { pattern: string, caseSensitive: boolean }\n */\n getPatternTags: function($wrapper) {\n var patterns = [];\n // Exclude draft-tag which is the input field, not a saved pattern\n $wrapper.find('.pattern-tag:not(.draft-tag)').each(function() {\n var pattern = $(this).data('pattern');\n var caseSensitive = $(this).data('caseSensitive') === 1 || $(this).data('caseSensitive') === '1';\n if (pattern) {\n patterns.push({\n pattern: pattern,\n caseSensitive: caseSensitive\n });\n }\n });\n return patterns;\n },\n\n /**\n * Update the match count displayed in the draft tag while typing\n * Shows live preview with current case sensitivity setting\n */\n updateDraftTagCount: function($draftTag, pattern, caseSensitive) {\n var self = this;\n var $matchCount = $draftTag.find('.pattern-match-count');\n var $countValue = $matchCount.find('.count-value');\n\n // Get entity type from block\n var $block = $draftTag.closest('.target-block');\n var entityType = $block.data('blockType') || 'products';\n\n // Show loading - keep eye icon, update count value\n $countValue.html('');\n $matchCount.show();\n\n // Store pattern for click handler\n $matchCount.data('pattern', pattern);\n $matchCount.data('caseSensitive', caseSensitive);\n $matchCount.data('entityType', entityType);\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countPatternMatches',\n trait: 'EntitySelector',\n pattern: pattern,\n field: 'name',\n entity_type: entityType,\n case_sensitive: caseSensitive ? 1 : 0\n },\n success: function(response) {\n if (response.success) {\n var count = parseInt(response.count, 10) || 0;\n $countValue.text(count);\n $matchCount.show();\n // Add visual feedback based on count\n $matchCount.removeClass('count-zero count-found');\n $matchCount.addClass(count === 0 ? 'count-zero' : 'count-found');\n // Store count for preview\n $matchCount.data('count', count);\n // Update group total count to reflect draft pattern in calculation\n var $group = $draftTag.closest('.selection-group');\n if ($group.length) {\n self.updateGroupTotalCount($group);\n }\n } else {\n $countValue.text('?');\n $matchCount.show();\n }\n },\n error: function() {\n $countValue.text('?');\n $matchCount.show();\n }\n });\n },\n\n /**\n * Update condition count with a pending pattern (typed but not yet added as tag)\n * This shows a live preview of what the count would be if the user pressed Enter\n */\n updateConditionCountWithPendingPattern: function($row, pendingPattern) {\n var self = this;\n var trans = this.config.trans || {};\n\n // Find the count element - in method-selector-wrapper for include, in exclude-header-row for exclude\n var $countEl = $row.find('.method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count').first();\n if (!$countEl.length) return;\n\n var isExclude = $row.hasClass('exclude-row');\n var $methodSelect = isExclude\n ? $row.find('.exclude-method-select')\n : $row.find('.include-method-select');\n\n var method = $methodSelect.val();\n if (!method) {\n $countEl.hide();\n return;\n }\n\n var $picker = isExclude\n ? $row.find('.exclude-picker')\n : $row.find('.include-picker');\n\n var valueType = $picker.data('valueType') || 'none';\n\n // Only process for pattern value types\n if (valueType !== 'pattern') {\n return;\n }\n\n // Get existing pattern tags\n var values = this.getPatternTags($picker);\n\n // Add the pending pattern as a temporary tag (case-insensitive by default)\n if (pendingPattern) {\n values.push({ pattern: pendingPattern, caseSensitive: false });\n }\n\n if (values.length === 0) {\n $countEl.hide();\n return;\n }\n\n var $block = $row.closest('.target-block');\n var blockType = $block.data('blockType') || 'products';\n\n // Show loading\n $countEl.find('.preview-count').html('');\n $countEl.removeClass('clickable no-matches').show();\n\n // Store condition data on badge for popover\n $countEl.data('conditionData', {\n method: method,\n values: values,\n blockType: blockType,\n isExclude: isExclude\n });\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countConditionMatches',\n trait: 'EntitySelector',\n method: method,\n values: JSON.stringify(values),\n block_type: blockType\n },\n success: function(response) {\n if (response && response.success) {\n var count = response.count || 0;\n $countEl.removeClass('no-matches clickable');\n if (count === 0) {\n $countEl.find('.preview-count').text(count);\n $countEl.addClass('no-matches').show();\n } else {\n $countEl.find('.preview-count').text(count);\n $countEl.addClass('clickable').show();\n }\n } else {\n $countEl.hide().removeClass('clickable');\n }\n },\n error: function() {\n $countEl.hide().removeClass('clickable');\n }\n });\n },\n\n /**\n * Fetch pattern match count via AJAX\n */\n fetchPatternMatchCount: function($picker, pattern, $countEl) {\n // Determine field type from method select\n // Check if we're in an exclude row first, then fall back to include\n var $excludeRow = $picker.closest('.exclude-row');\n var $methodSelect;\n if ($excludeRow.length) {\n $methodSelect = $excludeRow.find('.exclude-method-select');\n } else {\n var $group = $picker.closest('.selection-group');\n $methodSelect = $group.find('.include-method-select');\n }\n var method = $methodSelect.val() || '';\n var field = method.indexOf('reference') !== -1 ? 'reference' : 'name';\n\n // Get entity type from block\n var $block = $picker.closest('.target-block');\n var entityType = $block.data('blockType') || 'products';\n\n // Show loading state\n $countEl.find('.preview-count').html('');\n $countEl.removeClass('clickable no-matches').show();\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countPatternMatches',\n trait: 'EntitySelector',\n pattern: pattern,\n field: field,\n entity_type: entityType,\n case_sensitive: 0\n },\n success: function(response) {\n if (response && response.success) {\n var count = response.count || 0;\n $countEl.find('.preview-count').text(count);\n $countEl.removeClass('no-matches clickable').show();\n if (count === 0) {\n $countEl.addClass('no-matches');\n } else {\n $countEl.addClass('clickable');\n }\n } else {\n $countEl.hide();\n }\n },\n error: function() {\n $countEl.hide();\n }\n });\n },\n\n // =========================================================================\n // Picker Value Extraction\n // =========================================================================\n\n /**\n * Get values from a picker based on its type\n */\n getPickerValues: function($picker, valueType) {\n switch (valueType) {\n case 'entity_search':\n var ids = [];\n $picker.find('.entity-chip').each(function() {\n var id = $(this).data('id');\n if (id) ids.push(id);\n });\n return ids;\n\n case 'pattern':\n var patternValues = this.getPatternTags($picker);\n // Also include draft pattern if it has content (not yet added as tag)\n var $draftPatternInput = $picker.find('.draft-tag .pattern-input');\n var draftPatternVal = $.trim($draftPatternInput.val());\n if (draftPatternVal) {\n var draftCaseSens = $draftPatternInput.closest('.draft-tag').attr('data-case-sensitive') === '1';\n patternValues.push({\n pattern: draftPatternVal,\n caseSensitive: draftCaseSens\n });\n }\n return patternValues;\n\n case 'numeric_range':\n var min = $picker.find('.range-min-input').val();\n var max = $picker.find('.range-max-input').val();\n return { min: min || null, max: max || null };\n\n case 'date_range':\n var from = $picker.find('.date-from-input').val();\n var to = $picker.find('.date-to-input').val();\n return { from: from || null, to: to || null };\n\n case 'select':\n return [$picker.find('.select-value-input').val()];\n\n case 'boolean':\n return [true];\n\n default:\n return [];\n }\n },\n\n // =========================================================================\n // Count/Status Updates\n // =========================================================================\n\n /**\n * Fetch and update condition match count for a row (include or exclude)\n */\n updateConditionCount: function($row) {\n var self = this;\n var trans = this.config.trans || {};\n\n // Find the count element - in method-selector-wrapper for include, in exclude-header-row for exclude\n var $countEl = $row.find('.method-selector-wrapper > .condition-match-count, > .exclude-header-row > .condition-match-count').first();\n if (!$countEl.length) return;\n\n // Determine if this is an include or exclude row\n var isExclude = $row.hasClass('exclude-row');\n var $methodSelect = isExclude\n ? $row.find('.exclude-method-select')\n : $row.find('.include-method-select');\n\n var method = $methodSelect.val();\n if (!method) {\n $countEl.hide();\n return;\n }\n\n // Get the picker and extract values\n var $picker = isExclude\n ? $row.find('.exclude-picker')\n : $row.find('.include-picker');\n\n var valueType = $picker.data('valueType') || 'none';\n var values = this.getPickerValues($picker, valueType);\n\n // Don't count if no values (except for boolean/all methods)\n var hasNoValues = !values ||\n (Array.isArray(values) && values.length === 0) ||\n (typeof values === 'object' && !Array.isArray(values) && (\n // For combination_attributes, check if attributes object is empty\n (valueType === 'combination_attributes' && values.attributes !== undefined && Object.keys(values.attributes).length === 0) ||\n // For other objects, check if completely empty\n (valueType !== 'combination_attributes' && Object.keys(values).length === 0)\n ));\n if (valueType !== 'none' && valueType !== 'boolean' && hasNoValues) {\n $countEl.hide();\n return;\n }\n\n // Get block type\n var $block = $row.closest('.target-block');\n var blockType = $block.data('blockType') || 'products';\n\n // Show loading\n $countEl.find('.preview-count').html('');\n $countEl.removeClass('clickable no-matches').show();\n\n // Store condition data on badge for popover\n $countEl.data('conditionData', {\n method: method,\n values: values,\n blockType: blockType,\n isExclude: isExclude\n });\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countConditionMatches',\n trait: 'EntitySelector',\n method: method,\n values: JSON.stringify(values),\n block_type: blockType\n },\n success: function(response) {\n if (response && response.success) {\n var count = response.count || 0;\n $countEl.removeClass('no-matches clickable');\n if (count === 0) {\n $countEl.find('.preview-count').text(count);\n $countEl.addClass('no-matches').show();\n } else {\n // Show count, make clickable for preview popover\n $countEl.find('.preview-count').text(count);\n $countEl.addClass('clickable').show();\n }\n } else {\n $countEl.hide().removeClass('clickable');\n }\n },\n error: function() {\n $countEl.hide().removeClass('clickable');\n }\n });\n },\n\n /**\n * Update all condition counts in a group\n */\n updateGroupCounts: function($group) {\n var self = this;\n\n // Update include count\n var $include = $group.find('.group-include');\n if ($include.length) {\n this.updateConditionCount($include);\n }\n\n // Update each exclude row count\n $group.find('.exclude-row').each(function() {\n self.updateConditionCount($(this));\n });\n\n // Update group total count (include - excludes)\n this.updateGroupTotalCount($group);\n },\n\n /**\n * Update the group total count badge (include - excludes)\n * Also updates the limit input placeholder\n */\n updateGroupTotalCount: function($group) {\n var self = this;\n var $block = $group.closest('.target-block');\n var blockType = $block.data('blockType') || 'products';\n var $badge = $group.find('.group-header .group-count-badge');\n var $limitInput = $group.find('.group-modifier-limit');\n\n // Build group data for AJAX\n var groupData = this.serializeGroup($group, blockType);\n\n // Check if include has valid data\n if (!groupData.include || !groupData.include.method) {\n $badge.hide();\n $limitInput.attr('placeholder', '–');\n return;\n }\n\n // Show loading\n $badge.html('').show();\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countGroupItems',\n trait: 'EntitySelector',\n group_data: JSON.stringify(groupData),\n block_type: blockType\n },\n success: function(response) {\n if (response && response.success) {\n var finalCount = response.final_count || 0;\n var excludeCount = response.exclude_count || 0;\n\n // Update badge with eye icon and count\n var badgeHtml = ' ' + finalCount;\n if (excludeCount > 0) {\n badgeHtml += ' (-' + excludeCount + ')';\n }\n $badge.html(badgeHtml);\n $badge.addClass('clickable').show();\n\n // Store group data on badge for preview popover\n $badge.data('groupData', groupData);\n $badge.data('blockType', blockType);\n $badge.data('finalCount', finalCount);\n\n // Update limit placeholder with the count\n $limitInput.attr('placeholder', finalCount);\n\n // Also update the group-preview-badge count (apply limit if set)\n var $previewBadge = $group.find('.group-preview-badge .preview-count');\n if ($previewBadge.length) {\n var limit = parseInt($limitInput.val(), 10);\n var displayCount = (limit > 0 && limit < finalCount) ? limit : finalCount;\n $previewBadge.text(displayCount);\n }\n } else {\n $badge.hide().removeClass('clickable');\n $limitInput.attr('placeholder', '–');\n }\n },\n error: function() {\n $badge.hide();\n $limitInput.attr('placeholder', '–');\n }\n });\n },\n\n /**\n * Update all condition counts for all visible groups\n */\n updateAllConditionCounts: function() {\n var self = this;\n this.$wrapper.find('.target-block.active .selection-group').each(function() {\n self.updateGroupCounts($(this));\n });\n }\n };\n\n})(jQuery);\n","/**\n * Entity Selector - Groups Module\n * Selection group management, serialization, block/tab management\n * @partial _groups.js\n *\n * Contains:\n * - Group management: addGroup, removeGroup, clearAllConditions\n * - Block/Tab: switchToBlock, updateTabBadges, updateBlockStatus\n * - Serialization: serializeGroup, serializeAllBlocks, getBlockGroups\n * - Counts: fetchProductCount, updateHeaderTotalCount, updateAllConditionCounts\n * - Excludes: addFirstExcludeRow, addExcludeRow, removeExcludeRow\n * - Validation: validate, showValidationError, clearValidationError\n */\n\n(function($) {\n 'use strict';\n\n window._EntitySelectorMixins = window._EntitySelectorMixins || {};\n\n window._EntitySelectorMixins.groups = {\n\n addGroup: function($block, blockType) {\n var $container = $block.find('.groups-container');\n var trans = this.config.trans || {};\n var blockDef = this.config.blocks[blockType] || {};\n var methods = blockDef.selection_methods || {};\n\n // Remove empty state\n $container.find('.groups-empty-state').remove();\n\n // Get next group index\n var maxIndex = -1;\n $container.find('.selection-group').each(function() {\n var idx = parseInt($(this).data('groupIndex'), 10);\n if (idx > maxIndex) maxIndex = idx;\n });\n var groupIndex = maxIndex + 1;\n\n // Build method options with optgroups\n var methodOptions = this.buildMethodOptions(methods, false);\n\n // Build exclude method options (no \"all\") with optgroups\n var excludeMethodOptions = this.buildMethodOptions(methods, true);\n\n var defaultGroupName = (trans.group || 'Group') + ' ' + (groupIndex + 1);\n var html = '
';\n\n // Group header\n html += '
';\n html += '';\n html += '';\n html += '';\n html += '';\n html += '';\n html += '';\n html += '
';\n\n // Group body (collapsible content)\n html += '
';\n\n // Include section\n html += '
';\n html += '
';\n html += '
';\n html += '';\n html += ' 0';\n html += '';\n html += '
';\n var noItemsText = trans.no_items_selected || 'No items selected - use search below';\n html += '
';\n html += '
';\n html += '
';\n html += '';\n html += '';\n html += '';\n html += '
';\n html += '';\n html += '
';\n html += '
';\n html += '
';\n\n // Excludes section (collapsed by default)\n html += '
';\n html += '';\n html += '
';\n\n // Group-level modifiers (limit & sort)\n html += '
';\n html += '';\n html += '' + (trans.limit || 'Limit') + '';\n html += '';\n html += '';\n html += '';\n html += '' + (trans.sort || 'Sort') + '';\n html += '';\n html += '';\n html += '';\n html += '';\n html += ' ';\n html += '';\n html += '
';\n\n html += '
'; // Close group-body\n\n html += '
'; // Close selection-group\n\n $container.append(html);\n\n // Find the new group and set method to \"all\" by default\n var $newGroup = $container.find('.selection-group[data-group-index=\"' + groupIndex + '\"]');\n\n // Enhance the method select with styled dropdown\n this.enhanceMethodSelect($newGroup.find('.include-method-select'));\n\n $newGroup.find('.include-method-select').val('all').trigger('change');\n\n this.updateBlockStatus($block);\n this.serializeAllBlocks();\n },\n\n removeGroup: function($group, $block) {\n $group.remove();\n\n var $container = $block.find('.groups-container');\n var remainingGroups = $container.find('.selection-group').length;\n\n if (remainingGroups === 0) {\n var emptyText = this.getEmptyStateText($block);\n var emptyHtml = '
';\n emptyHtml += '' + emptyText + '';\n emptyHtml += '
';\n $container.html(emptyHtml);\n }\n\n this.updateBlockStatus($block);\n this.serializeAllBlocks();\n\n // Update tab badges and header total count\n this.updateTabBadges();\n },\n\n clearAllConditions: function() {\n var self = this;\n\n // Remove all groups from all blocks\n this.$wrapper.find('.target-block').each(function() {\n var $block = $(this);\n var $container = $block.find('.groups-container');\n\n // Remove all groups\n $container.find('.selection-group').remove();\n\n // Show empty state\n var emptyText = self.getEmptyStateText($block);\n var emptyHtml = '
';\n emptyHtml += '' + emptyText + '';\n emptyHtml += '
';\n $container.html(emptyHtml);\n\n self.updateBlockStatus($block);\n });\n\n // Update serialized data\n this.serializeAllBlocks();\n\n // Update tab badges and header count\n this.updateTabBadges();\n\n // Also update header total count immediately (since all cleared)\n this.updateHeaderTotalCount();\n },\n\n switchToBlock: function(blockType) {\n // Update tabs\n this.$wrapper.find('.target-block-tab').removeClass('active');\n this.$wrapper.find('.target-block-tab[data-block-type=\"' + blockType + '\"]').addClass('active');\n\n // Update blocks\n this.$wrapper.find('.target-block').removeClass('active').hide();\n this.$wrapper.find('.target-block[data-block-type=\"' + blockType + '\"]').addClass('active').show();\n\n // Close dropdown if open\n this.hideDropdown();\n },\n\n updateTabBadges: function() {\n var self = this;\n\n this.$wrapper.find('.target-block-tab').each(function() {\n var $tab = $(this);\n var blockType = $tab.data('blockType');\n var $block = self.$wrapper.find('.target-block[data-block-type=\"' + blockType + '\"]');\n var groupCount = $block.find('.selection-group').length;\n\n // Update or add badge\n var $badge = $tab.find('.tab-badge');\n if (groupCount > 0) {\n // Show loading state first\n if ($badge.length) {\n $badge.addClass('loading').html('');\n } else {\n $tab.append('');\n }\n $tab.addClass('has-data');\n\n // Fetch real product count\n self.fetchProductCount(blockType, $tab);\n } else {\n $badge.remove();\n $tab.removeClass('has-data');\n }\n });\n\n // Update target switch state based on whether any data exists\n this.updateTargetSwitchState();\n },\n\n updateTargetSwitchState: function() {\n var $switch = this.$wrapper.find('.prestashop-switch');\n if (!$switch.length) {\n return;\n }\n\n // Check if any block has data\n var hasData = false;\n this.$wrapper.find('.target-block').each(function() {\n if ($(this).find('.selection-group').length > 0) {\n hasData = true;\n return false; // break\n }\n });\n\n // Update switch: value=\"1\" is \"Everyone/All/None\", value=\"0\" is \"Specific/Selected\"\n if (hasData) {\n $switch.find('input[value=\"0\"]').prop('checked', true);\n } else {\n $switch.find('input[value=\"1\"]').prop('checked', true);\n }\n },\n\n fetchProductCount: function(blockType, $tab) {\n var self = this;\n var data = {};\n\n // Read from hidden input (contains full saved data or freshly serialized data)\n var $hiddenInput = this.$wrapper.find('input[name=\"' + this.config.name + '\"]');\n var savedData = {};\n try {\n savedData = JSON.parse($hiddenInput.val() || '{}');\n } catch (e) {\n savedData = {};\n }\n\n // Get groups for the requested block type\n var groups = (savedData[blockType] && savedData[blockType].groups) ? savedData[blockType].groups : [];\n\n if (groups.length === 0) {\n $tab.find('.tab-badge').remove();\n $tab.removeClass('has-data');\n $tab.removeData('previewData');\n return;\n }\n\n // Show loading state\n var $badge = $tab.find('.tab-badge');\n if (!$badge.length) {\n $badge = $('');\n $tab.append($badge);\n } else {\n $badge.addClass('loading').html('');\n }\n $tab.addClass('has-data');\n\n data[blockType] = { groups: groups };\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'previewEntitySelector',\n trait: 'EntitySelector',\n conditions: JSON.stringify(data),\n block_type: blockType,\n limit: 10\n },\n success: function(response) {\n if (response.success) {\n var $badge = $tab.find('.tab-badge');\n $badge.removeClass('loading').html(' ' + response.count);\n\n // Store preview data for popover\n $tab.data('previewData', response);\n\n // Update header total count\n self.updateHeaderTotalCount();\n } else {\n $tab.find('.tab-badge').remove();\n }\n },\n error: function() {\n $tab.find('.tab-badge').remove();\n self.updateHeaderTotalCount();\n }\n });\n },\n\n updateHeaderTotalCount: function() {\n var self = this;\n var total = 0;\n\n // Sum up all tab badge counts\n this.$wrapper.find('.target-block-tab .tab-badge').each(function() {\n var $badge = $(this);\n if (!$badge.hasClass('loading')) {\n var count = parseInt($badge.text(), 10);\n if (!isNaN(count)) {\n total += count;\n }\n }\n });\n\n var $totalBadge = this.$wrapper.find('.trait-total-count');\n if (total > 0) {\n $totalBadge.text(total).show();\n } else {\n $totalBadge.hide();\n }\n\n // Update show-all toggle state\n this.updateShowAllToggle();\n },\n\n updateShowAllToggle: function() {\n var $toggle = this.$wrapper.find('.trait-show-all-toggle');\n if (!$toggle.length) return;\n\n var $checkbox = $toggle.find('.show-all-checkbox');\n var hasData = this.$wrapper.find('.target-block-tab.has-data').length > 0;\n\n // If there's data, uncheck (not showing to all), otherwise check\n $checkbox.prop('checked', !hasData);\n },\n\n updateBlockStatus: function($block) {\n var $status = $block.find('.block-status');\n var blockType = $block.data('blockType');\n var blockDef = this.config.blocks[blockType] || {};\n var trans = this.config.trans || {};\n\n var groups = this.getBlockGroups($block);\n\n if (groups.length === 0) {\n var emptyMeansAll = this.config.emptyMeansAll !== false;\n if (emptyMeansAll) {\n $status.text((trans.all || 'All') + ' ' + (blockDef.entity_label_plural || 'items'));\n } else {\n $status.text(trans.nothing_selected || 'Nothing selected');\n }\n } else {\n $status.text(groups.length + ' ' + (groups.length === 1 ? (trans.group || 'group') : (trans.groups || 'groups')));\n }\n },\n\n getEmptyStateText: function($block) {\n var blockType = $block.data('blockType');\n var blockMode = $block.data('mode') || 'multi';\n var blockDef = this.config.blocks[blockType] || {};\n var trans = this.config.trans || {};\n var emptyMeansAll = this.config.emptyMeansAll !== false;\n\n if (blockMode === 'single') {\n return trans.no_item_selected || 'No item selected';\n }\n\n if (emptyMeansAll) {\n return (trans.all || 'All') + ' ' + (blockDef.entity_label_plural || 'items') + ' ' + (trans.included || 'included');\n }\n\n return trans.nothing_selected || 'Nothing selected';\n },\n\n serializeGroup: function($group, blockType) {\n var self = this;\n\n // Include\n var includeMethod = $group.find('.include-method-select').val() || 'all';\n var $includePicker = $group.find('.include-picker');\n var includeValues = this.getPickerValues($includePicker);\n\n // Excludes (multiple rows)\n var excludes = [];\n var $excludesSection = $group.find('.group-excludes.has-excludes');\n if ($excludesSection.length) {\n $group.find('.exclude-row').each(function() {\n var $row = $(this);\n var excludeMethod = $row.find('.exclude-method-select').val() || null;\n var $excludePicker = $row.find('.exclude-picker');\n var excludeValues = self.getPickerValues($excludePicker);\n\n if (excludeMethod && excludeValues && (Array.isArray(excludeValues) ? excludeValues.length > 0 : true)) {\n excludes.push({\n method: excludeMethod,\n values: excludeValues\n });\n }\n });\n }\n\n var groupData = {\n include: {\n method: includeMethod,\n values: includeValues\n }\n };\n\n if (excludes.length > 0) {\n groupData.excludes = excludes;\n }\n\n // Add modifiers if present\n var modifiers = this.getGroupModifiers($group);\n if (modifiers.limit || modifiers.sort_by) {\n groupData.modifiers = modifiers;\n }\n\n return groupData;\n },\n\n serializeAllBlocks: function($changedRow) {\n var self = this;\n var data = {};\n\n this.$wrapper.find('.target-block').each(function() {\n var $block = $(this);\n var blockType = $block.data('blockType');\n var groups = self.getBlockGroups($block);\n\n // Groups now contain their own modifiers, no block-level modifiers\n if (groups.length > 0) {\n data[blockType] = { groups: groups };\n }\n\n self.updateBlockStatus($block);\n });\n\n // Update hidden input first\n var $input = this.$wrapper.find('input[name=\"' + this.config.name + '\"]');\n $input.val(JSON.stringify(data));\n\n // Then update tab badges (reads from hidden input)\n this.updateTabBadges();\n\n // Debounced update of condition count - only for changed row if specified\n if (this.countUpdateTimeout) {\n clearTimeout(this.countUpdateTimeout);\n }\n this.countUpdateTimeout = setTimeout(function() {\n if ($changedRow && $changedRow.length) {\n // Update the specific row that changed\n self.updateConditionCount($changedRow);\n // Also update the group total count (include - excludes)\n var $group = $changedRow.closest('.selection-group');\n if ($group.length) {\n self.updateGroupTotalCount($group);\n }\n } else {\n // Fallback: update all counts (initial load, structure changes)\n self.updateAllConditionCounts();\n }\n }, 500);\n },\n\n getBlockGroups: function($block) {\n var self = this;\n var groups = [];\n\n $block.find('.selection-group').each(function() {\n var $group = $(this);\n\n // Include\n var includeMethod = $group.find('.include-method-select').val() || 'all';\n var $includePicker = $group.find('.include-picker');\n var includeValues = self.getPickerValues($includePicker);\n\n // Skip groups with invalid include conditions (e.g., \"specific products\" with none selected)\n if (!self.isConditionValid(includeMethod, includeValues, $includePicker)) {\n return true; // continue to next group\n }\n\n // Excludes (multiple rows) - only include valid ones\n var excludes = [];\n var $excludesSection = $group.find('.group-excludes.has-excludes');\n if ($excludesSection.length) {\n $group.find('.exclude-row').each(function() {\n var $row = $(this);\n var excludeMethod = $row.find('.exclude-method-select').val() || null;\n var $excludePicker = $row.find('.exclude-picker');\n var excludeValues = self.getPickerValues($excludePicker);\n\n // Only include valid exclude conditions\n if (excludeMethod && self.isConditionValid(excludeMethod, excludeValues, $excludePicker)) {\n excludes.push({\n method: excludeMethod,\n values: excludeValues\n });\n }\n });\n }\n\n var groupData = {\n include: {\n method: includeMethod,\n values: includeValues\n }\n };\n\n // Group name (optional, for organizational purposes)\n var groupName = $.trim($group.attr('data-group-name') || '');\n if (groupName) {\n groupData.name = groupName;\n }\n\n if (excludes.length > 0) {\n groupData.excludes = excludes;\n }\n\n // Group-level modifiers\n var modifiers = self.getGroupModifiers($group);\n if (modifiers.limit || modifiers.sort_by) {\n groupData.modifiers = modifiers;\n }\n\n groups.push(groupData);\n });\n\n return groups;\n },\n\n getGroupModifiers: function($group) {\n var limit = $group.find('.group-modifier-limit').val();\n var sortBy = $group.find('.group-modifier-sort').val() || 'sales';\n var $sortDirBtn = $group.find('.group-modifiers .btn-sort-dir');\n var sortDir = $sortDirBtn.data('dir') || 'DESC';\n\n return {\n limit: limit ? parseInt(limit, 10) : null,\n sort_by: sortBy || null,\n sort_dir: sortDir || 'DESC'\n };\n },\n\n getPickerValues: function($picker) {\n var valueType = $picker.attr('data-value-type') || 'entity_search';\n var values = [];\n\n switch (valueType) {\n case 'entity_search':\n $picker.find('.entity-chip').each(function() {\n var id = $(this).data('id');\n values.push(isNaN(id) ? id : Number(id));\n });\n break;\n\n case 'pattern':\n values = this.getPatternTags($picker);\n // Also include draft pattern if it has content (not yet added as tag)\n var $draftInput = $picker.find('.draft-tag .pattern-input');\n var draftPattern = $.trim($draftInput.val());\n if (draftPattern) {\n var draftCaseSensitive = $draftInput.closest('.draft-tag').attr('data-case-sensitive') === '1';\n values.push({\n pattern: draftPattern,\n caseSensitive: draftCaseSensitive\n });\n }\n break;\n\n case 'numeric_range':\n var min = $picker.find('.range-min-input').val();\n var max = $picker.find('.range-max-input').val();\n if (min !== '' || max !== '') {\n values = {\n min: min !== '' ? parseFloat(min) : null,\n max: max !== '' ? parseFloat(max) : null\n };\n }\n break;\n\n case 'date_range':\n var from = $picker.find('.date-from-input').val();\n var to = $picker.find('.date-to-input').val();\n if (from || to) {\n values = {\n from: from || null,\n to: to || null\n };\n }\n break;\n\n case 'select':\n var selectVal = $picker.find('.select-value-input').val();\n if (selectVal) {\n values = [selectVal];\n }\n break;\n\n case 'boolean':\n values = [true];\n break;\n\n case 'multi_numeric_range':\n var ranges = [];\n $picker.find('.range-chip').each(function() {\n var $chip = $(this);\n var minVal = $chip.data('min');\n var maxVal = $chip.data('max');\n ranges.push({\n min: minVal !== '' && minVal !== undefined ? parseFloat(minVal) : null,\n max: maxVal !== '' && maxVal !== undefined ? parseFloat(maxVal) : null\n });\n });\n if (ranges.length > 0) {\n values = ranges;\n }\n break;\n\n case 'multi_select_tiles':\n $picker.find('.tile-option.selected').each(function() {\n values.push($(this).data('value'));\n });\n break;\n\n case 'combination_attributes':\n // Returns object: { mode: 'products'|'combinations', attributes: { groupId: [valueId1, valueId2], ... } }\n var combAttrs = {};\n $picker.find('.comb-attr-value.selected').each(function() {\n var groupId = $(this).data('groupId').toString();\n var valueId = $(this).data('valueId');\n if (!combAttrs[groupId]) {\n combAttrs[groupId] = [];\n }\n combAttrs[groupId].push(valueId);\n });\n if (Object.keys(combAttrs).length > 0) {\n // Get mode: from radio if toggle exists, otherwise from config\n var $combPicker = $picker.find('.combination-attributes-picker');\n var configMode = $combPicker.data('combinationMode') || this.config.combinationMode || 'products';\n var combMode;\n if (configMode === 'toggle') {\n combMode = $picker.find('.comb-mode-radio:checked').val() || 'products';\n } else {\n combMode = configMode;\n }\n values = {\n mode: combMode,\n attributes: combAttrs\n };\n }\n break;\n }\n\n return values;\n },\n\n isConditionValid: function(method, values, $picker) {\n // 'all' method never needs values\n if (method === 'all') {\n return true;\n }\n\n // Boolean methods are always valid (the value is implicit true)\n var valueType = $picker.attr('data-value-type') || 'entity_search';\n if (valueType === 'boolean') {\n return true;\n }\n\n // For other methods, check if values are meaningful\n if (Array.isArray(values)) {\n return values.length > 0;\n }\n\n // For object values (ranges, combination_attributes), check if meaningful\n if (typeof values === 'object' && values !== null) {\n // Special handling for combination_attributes: { mode, attributes }\n if (valueType === 'combination_attributes' && values.attributes !== undefined) {\n return Object.keys(values.attributes).length > 0;\n }\n // For ranges and other objects, check if at least one bound is set\n return Object.keys(values).some(function(key) {\n return values[key] !== null && values[key] !== '';\n });\n }\n\n return false;\n },\n\n updateAllConditionCounts: function() {\n var self = this;\n this.$wrapper.find('.target-block.active .selection-group').each(function() {\n self.updateGroupCounts($(this));\n });\n },\n\n updateGroupCounts: function($group) {\n var self = this;\n\n // Update include count\n var $include = $group.find('.group-include');\n if ($include.length) {\n this.updateConditionCount($include);\n }\n\n // Update each exclude row count\n $group.find('.exclude-row').each(function() {\n self.updateConditionCount($(this));\n });\n\n // Update group total count (include - excludes)\n this.updateGroupTotalCount($group);\n },\n\n updateConditionCount: function($row) {\n var self = this;\n var trans = this.config.trans || {};\n\n // Find the count element - in method-selector-wrapper for include, in exclude-header-row for exclude\n var $countEl = $row.find('.method-selector-wrapper > .condition-match-count, > .exclude-header-row .condition-match-count').first();\n if (!$countEl.length) return;\n\n // Determine if this is an include or exclude row\n var isExclude = $row.hasClass('exclude-row');\n var $methodSelect = isExclude\n ? $row.find('.exclude-method-select')\n : $row.find('.include-method-select');\n\n var method = $methodSelect.val();\n if (!method) {\n $countEl.hide();\n return;\n }\n\n // Get the picker and extract values\n var $picker = isExclude\n ? $row.find('.exclude-picker')\n : $row.find('.include-picker');\n\n var valueType = $picker.data('valueType') || 'none';\n var values = this.getPickerValues($picker, valueType);\n\n // Don't count if no values (except for boolean/all methods)\n var hasNoValues = !values ||\n (Array.isArray(values) && values.length === 0) ||\n (typeof values === 'object' && !Array.isArray(values) && (\n // For combination_attributes, check if attributes object is empty\n (valueType === 'combination_attributes' && values.attributes !== undefined && Object.keys(values.attributes).length === 0) ||\n // For other objects, check if completely empty\n (valueType !== 'combination_attributes' && Object.keys(values).length === 0)\n ));\n if (valueType !== 'none' && valueType !== 'boolean' && hasNoValues) {\n $countEl.hide();\n return;\n }\n\n // Get block type\n var $block = $row.closest('.target-block');\n var blockType = $block.data('blockType') || 'products';\n\n // Show loading\n $countEl.find('.preview-count').html('');\n $countEl.removeClass('clickable no-matches').show();\n\n // Store condition data on badge for popover\n $countEl.data('conditionData', {\n method: method,\n values: values,\n blockType: blockType,\n isExclude: isExclude\n });\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countConditionMatches',\n trait: 'EntitySelector',\n method: method,\n values: JSON.stringify(values),\n block_type: blockType\n },\n success: function(response) {\n if (response && response.success) {\n var count = response.count || 0;\n $countEl.removeClass('no-matches clickable');\n if (count === 0) {\n $countEl.find('.preview-count').text(count);\n $countEl.addClass('no-matches').show();\n } else {\n // Show count, make clickable for preview popover\n $countEl.find('.preview-count').text(count);\n $countEl.addClass('clickable').show();\n }\n } else {\n $countEl.hide().removeClass('clickable');\n }\n },\n error: function() {\n $countEl.hide().removeClass('clickable');\n }\n });\n },\n\n updateGroupTotalCount: function($group) {\n var self = this;\n var $block = $group.closest('.target-block');\n var blockType = $block.data('blockType') || 'products';\n var $badge = $group.find('.group-header .group-count-badge');\n var $limitInput = $group.find('.group-modifier-limit');\n\n // Build group data for AJAX\n var groupData = this.serializeGroup($group, blockType);\n\n // Check if include has valid data\n if (!groupData.include || !groupData.include.method) {\n $badge.hide();\n $limitInput.attr('placeholder', '–');\n return;\n }\n\n // Show loading\n $badge.html('').show();\n\n $.ajax({\n url: this.config.ajaxUrl,\n type: 'POST',\n dataType: 'json',\n data: {\n ajax: 1,\n action: 'countGroupItems',\n trait: 'EntitySelector',\n group_data: JSON.stringify(groupData),\n block_type: blockType\n },\n success: function(response) {\n if (response && response.success) {\n var finalCount = response.final_count || 0;\n var excludeCount = response.exclude_count || 0;\n\n // Update badge with eye icon and count\n var badgeHtml = ' ' + finalCount;\n if (excludeCount > 0) {\n badgeHtml += ' (-' + excludeCount + ')';\n }\n $badge.html(badgeHtml);\n $badge.addClass('clickable').show();\n\n // Store group data on badge for preview popover\n $badge.data('groupData', groupData);\n $badge.data('blockType', blockType);\n $badge.data('finalCount', finalCount);\n\n // Update limit placeholder with the count\n $limitInput.attr('placeholder', finalCount);\n\n // Also update the group-preview-badge count (apply limit if set)\n var $previewBadge = $group.find('.group-preview-badge .preview-count');\n if ($previewBadge.length) {\n var limit = parseInt($limitInput.val(), 10);\n var displayCount = (limit > 0 && limit < finalCount) ? limit : finalCount;\n $previewBadge.text(displayCount);\n }\n } else {\n $badge.hide().removeClass('clickable');\n $limitInput.attr('placeholder', '–');\n }\n },\n error: function() {\n $badge.hide();\n $limitInput.attr('placeholder', '–');\n }\n });\n },\n\n // Exclude row management\n addFirstExcludeRow: function($group, $block) {\n var $excludesDiv = $group.find('.group-excludes');\n var trans = this.config.trans || {};\n\n // Build the full excludes structure with first row\n var html = '
';\n html += ' ' + (trans.except || 'EXCEPT') + '';\n html += '
';\n\n html += '
';\n html += this.buildExcludeRowHtml($block, 0);\n html += '
';\n\n html += '';\n\n $excludesDiv.addClass('has-excludes').html(html);\n this.updateMethodSelectorLock($group, true);\n this.serializeAllBlocks();\n },\n\n addExcludeRow: function($group, $block) {\n var $container = $group.find('.exclude-rows-container');\n\n // Get next exclude index\n var maxIndex = -1;\n $container.find('.exclude-row').each(function() {\n var idx = parseInt($(this).data('excludeIndex'), 10);\n if (idx > maxIndex) maxIndex = idx;\n });\n var excludeIndex = maxIndex + 1;\n\n var html = this.buildExcludeRowHtml($block, excludeIndex);\n $container.append(html);\n\n // Enhance the exclude method select with styled dropdown\n var $newRow = $container.find('.exclude-row[data-exclude-index=\"' + excludeIndex + '\"]');\n this.enhanceMethodSelect($newRow.find('.exclude-method-select'));\n\n this.serializeAllBlocks();\n },\n\n buildExcludeRowHtml: function($block, excludeIndex) {\n var blockType = $block.data('blockType');\n var blockDef = this.config.blocks[blockType] || {};\n var methods = blockDef.selection_methods || {};\n var trans = this.config.trans || {};\n\n // Build exclude method options with optgroups (no \"all\")\n var excludeMethodOptions = this.buildMethodOptions(methods, true);\n\n // Find first non-all method for default search entity\n var firstSearchEntity = blockType;\n var firstValueType = 'entity_search';\n $.each(methods, function(methodKey, methodDef) {\n if (methodKey === 'all') return true;\n firstSearchEntity = methodDef.search_entity || blockType;\n firstValueType = methodDef.value_type || 'entity_search';\n return false; // break\n });\n\n var html = '
';\n\n // Header row with method select wrapped in method-selector-wrapper (same as include)\n html += '
';\n html += '
';\n html += '';\n html += ' 0';\n html += '';\n html += '
';\n html += '';\n html += '
';\n\n // Value picker based on first method's value type\n html += this.buildValuePickerHtml('exclude', firstValueType, firstSearchEntity, methods);\n\n html += '
';\n\n return html;\n },\n\n removeExcludeRow: function($excludeRow, $group, $block) {\n var $container = $group.find('.exclude-rows-container');\n var trans = this.config.trans || {};\n\n $excludeRow.remove();\n\n // Check if there are remaining exclude rows\n var remainingRows = $container.find('.exclude-row').length;\n\n if (remainingRows === 0) {\n // Remove entire excludes section and show \"Add exceptions\" button\n var $excludesDiv = $group.find('.group-excludes');\n $excludesDiv.removeClass('has-excludes').html(\n ''\n );\n // Unlock the method selector since no excludes exist\n this.updateMethodSelectorLock($group, false);\n }\n\n this.serializeAllBlocks();\n },\n\n // Method options building\n buildMethodOptions: function(methods, excludeAll) {\n var self = this;\n var trans = this.config.trans || {};\n var html = '';\n\n // Group labels\n var groupLabels = {\n 'select_by': trans.select_by || 'Select by...',\n 'filter_by': trans.filter_by || 'Filter by...'\n };\n\n // Separate methods by group\n var grouped = {};\n var ungrouped = {};\n\n $.each(methods, function(methodKey, methodDef) {\n if (excludeAll && methodKey === 'all') return true; // skip\n\n var group = methodDef.group || '';\n if (group) {\n if (!grouped[group]) {\n grouped[group] = {};\n }\n grouped[group][methodKey] = methodDef;\n } else {\n ungrouped[methodKey] = methodDef;\n }\n });\n\n // Render ungrouped options first\n $.each(ungrouped, function(methodKey, methodDef) {\n html += self.buildMethodOption(methodKey, methodDef);\n });\n\n // Render grouped options with optgroups\n $.each(grouped, function(groupKey, groupMethods) {\n var groupLabel = groupLabels[groupKey] || groupKey.replace(/_/g, ' ');\n html += '';\n $.each(groupMethods, function(methodKey, methodDef) {\n html += self.buildMethodOption(methodKey, methodDef);\n });\n html += '';\n });\n\n return html;\n },\n\n buildMethodOption: function(methodKey, methodDef) {\n var html = '