.djf-filter-panel{--djf-filter-accent:#344054;--djf-filter-button:#344054;--djf-filter-gap:10px;border:1px solid #e2e6eb;padding:16px;border-radius:8px;display:flex;flex-direction:column;gap:var(--djf-filter-gap)}.djf-filter-panel details{border-bottom:1px solid #e2e6eb;padding-bottom:12px}.djf-filter-panel summary{font-weight:600;cursor:pointer;margin-bottom:12px}.djf-price-inputs{display:flex;gap:12px}.djf-price-inputs label{flex:1;min-width:0}.djf-price-inputs input{width:100%;padding:7px;border:1px solid #ddd;border-radius:4px}.djf-range-tracks{position:relative;height:36px;margin:14px 5px 0}.djf-range-tracks input[type=range]{position:absolute;left:0;top:0;width:100%;height:24px;accent-color:var(--djf-filter-accent);background:transparent;pointer-events:none}.djf-range-tracks input[type=range]::-webkit-slider-thumb{pointer-events:auto;width:var(--djf-handle-size,16px);height:var(--djf-handle-size,16px)}.djf-range-tracks input[type=range]::-moz-range-thumb{pointer-events:auto;width:var(--djf-handle-size,16px);height:var(--djf-handle-size,16px)}.djf-filter-tree-node{padding-left:calc(var(--depth)*13px);margin:7px 0}.djf-tree-toggle{border:0;background:none;padding:0 6px;cursor:pointer}.djf-filter-tree-node label,.djf-tag-option{cursor:pointer}.djf-filter-panel input[type=checkbox]{accent-color:var(--djf-filter-accent)}.djf-tag-search{width:100%;margin-bottom:10px;padding:8px}.djf-tag-option{display:block;margin:8px 0}.djf-tag-option[hidden]{display:none!important}.djf-filter-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.djf-filter-actions button,.djf-tag-more{cursor:pointer;padding:9px 14px;border:1px solid #ddd;border-radius:4px}.djf-filter-apply{background:var(--djf-filter-button);color:white}.djf-filter-panel.is-loading{opacity:.65;pointer-events:none}.djf-sort{display:inline-flex;align-items:center;gap:10px}.djf-sort select{padding:9px 30px 9px 12px;border:1px solid #ddd;border-radius:4px;background:white}

/* v4.0.15: dynamic tag visibility, hierarchy and small apply spinner */
.djf-tag-option.djf-tag-limited{display:none!important}
.djf-tag-list.djf-show-all .djf-tag-option.djf-tag-limited,.djf-tag-list.djf-searching .djf-tag-option.djf-tag-limited{display:block!important}
.djf-filter-tree-node>.djf-category-parent{font-weight:700}
.djf-filter-tree-node>.djf-category-leaf{font-weight:400}
.djf-filter-apply{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.djf-apply-spinner{display:none;width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:djf-apply-spin .65s linear infinite}
.djf-filter-panel.is-loading .djf-filter-apply:not([hidden]) .djf-apply-spinner{display:inline-block}
@keyframes djf-apply-spin{to{transform:rotate(360deg)}}
.djf-filter-panel .djf-tree-toggle[aria-expanded="false"]{transform:rotate(-90deg)}

/* v4.0.16: selected status is visible only for checked category/tag inputs. */
.djf-filter-selected-label{display:none;margin-inline-start:6px;font-size:12px;font-weight:600;color:var(--djf-filter-accent);vertical-align:baseline}
.djf-category-label input:checked ~ .djf-filter-selected-label,.djf-tag-option input:checked ~ .djf-filter-selected-label{display:inline}

/* v4.0.19: all top-level categories share typography and alignment, even without children. */
.djf-filter-tree-node[style*="--depth:0"]>.djf-category-root{font-weight:700}
.djf-filter-tree-node>.djf-category-root{font-weight:700}
.djf-filter-tree-node{position:relative}
.djf-filter-tree-node>.djf-tree-toggle{position:absolute;inset-inline-start:0;top:0;width:20px;line-height:inherit;text-align:center}
.djf-filter-tree-node>.djf-category-label{display:inline-block;margin-inline-start:20px}

/* v4.0.19: +/- category expansion, depth-aware indentation, consistent text alignment. */
.djf-filter-panel .djf-tree-toggle{display:inline-flex;align-items:center;justify-content:center;transform:none!important;font-size:16px;font-weight:600;line-height:1;min-height:20px;color:inherit}
.djf-filter-panel .djf-tree-toggle-symbol::before{content:"−"}
.djf-filter-panel .djf-tree-toggle[aria-expanded="false"] .djf-tree-toggle-symbol::before{content:"+"}
.djf-filter-panel .djf-filter-tree-node{padding-inline-start:calc(var(--depth)*18px)}
.djf-filter-panel .djf-filter-tree-node>.djf-tree-toggle{inset-inline-start:calc(var(--depth)*18px)}
.djf-filter-panel .djf-filter-tree-node>.djf-category-label{margin-inline-start:20px}

/* v4.0.24: contained native dropdown and accessible decorative chevron */
.djf-sort{max-width:100%;min-width:0;box-sizing:border-box}
.djf-sort-select-wrap{display:inline-flex;position:relative;max-width:100%;min-width:0;flex:0 1 auto;align-items:center}
.djf-sort .djf-sort-select-wrap select{appearance:none;-webkit-appearance:none;-moz-appearance:none;box-sizing:border-box;max-width:100%;min-width:0;padding-inline-end:34px;background-image:none}
.djf-sort .djf-sort-arrow{position:absolute;right:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;pointer-events:none;color:currentColor;flex-shrink:0}
@media(max-width:767px){.djf-sort{width:100%;justify-content:flex-end}.djf-sort .djf-sort-select-wrap{max-width:100%;min-width:0}.djf-sort .djf-sort-select-wrap select{max-width:100%;width:100%;min-width:0}.djf-sort .djf-sort-label{flex:0 0 auto}}

/* v4.0.24: mobile viewport-safe sorting menu and lightweight request indicator */
.djf-sort{position:relative}
.djf-sort-mobile-trigger{display:none}
.djf-sort-spinner{display:none;position:absolute;right:40px;top:50%;width:13px;height:13px;margin-top:-6.5px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;pointer-events:none;animation:djf-apply-spin .65s linear infinite}
.djf-sort.is-loading .djf-sort-spinner{display:block}
.djf-sort-mobile-menu{position:fixed;z-index:2147483000;overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;background:#fff;color:#222;border:1px solid #cbd2da;border-radius:6px;box-shadow:0 8px 22px rgba(0,0,0,.16);padding:4px 0}
.djf-sort-mobile-option{display:block;width:100%;text-align:left;background:transparent;color:inherit;border:0;padding:10px 12px;cursor:pointer;font:inherit;white-space:normal;overflow-wrap:anywhere}
.djf-sort-mobile-option[aria-selected="true"],.djf-sort-mobile-option:focus-visible{background:#e9eef5;outline:none}
@media(max-width:767px){
.djf-sort .djf-sort-select-wrap>select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;clip-path:inset(50%);overflow:hidden}
.djf-sort .djf-sort-select-wrap>.djf-sort-arrow{display:none}
.djf-sort .djf-sort-mobile-trigger{display:flex;align-items:center;justify-content:space-between;gap:6px;box-sizing:border-box;min-width:0;max-width:100%;width:100%;padding:9px 12px;border:1px solid #ddd;border-radius:4px;background:white;color:inherit;font:inherit;cursor:pointer;text-align:left}
.djf-sort .djf-sort-mobile-trigger svg{height:16px;width:16px;flex-shrink:0}
.djf-sort .djf-sort-mobile-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.djf-sort .djf-sort-select-wrap{width:min(100%,var(--djf-sort-mobile-width,220px));max-width:100%}
.djf-sort.is-loading .djf-sort-spinner{right:28px}
}

/* v4.0.24: opt-in fixed action bar inside a height-limited filter widget.
   Only the options scroll; buttons stay visible without viewport overlays. */
.djf-filter-panel.djf-filter-sticky-actions{
  --djf-filter-max-height:70vh;max-height:min(var(--djf-filter-max-height),calc(100dvh - 16px));
  display:flex;flex-direction:column;min-height:0;overflow:hidden;box-sizing:border-box;
}
.djf-filter-sticky-actions>.djf-filter-scroll-content{min-height:0;flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-inline-end:4px}
.djf-filter-sticky-actions>.djf-filter-actions{flex:0 0 auto;padding-block:12px 2px;background:inherit;border-top:1px solid #e2e6eb;z-index:1}
.djf-filter-sticky-actions>.djf-filter-status{flex:0 0 auto}
.djf-filter-panel:not(.djf-filter-sticky-actions)>.djf-filter-scroll-content{display:contents}
@supports not (height:100dvh){.djf-filter-panel.djf-filter-sticky-actions{max-height:min(var(--djf-filter-max-height),calc(100vh - 16px))}}
