/**
 * NECOX K1 — Search Results
 *
 * Frontend CSS for the advert search results page (Ilan Arama). Shared
 * styles + 4 preset-based variants. K2 cascade compatible via var().
 *
 * @file       search-results.css
 * @component  K1
 * @since      v4.1.0
 */

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   SAYFA WRAPPER (v3.83.0 Faz 1.5 + v3.84.0 Faz 2.6/2.7/2.8)
   archive-advert.php'de <div class="necox-page-search-results"> ile sarilir.
   single-advert ile birebir paralel: 1400px default + margin auto + padding 0 24px.
   K2 ayarlari: sr_max_width (genislik), sr_bg/transparent/gradient/glass (arka plan),
   sr_border_color (kenarlik), sr_shadow (golge). fonts.php K-04 efekt onceligi
   (Glass > Transparent > Gradient > Solid) ile --necox-sr-bg variable'i tek nokta uretir.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-page-search-results {
    max-width: var(--necox-sr-max-width, 1400px);
    margin: 24px auto;
    padding-left: 24px;
    padding-right: 24px;
    padding-top: var(--necox-sr-padding-y, 24px);
    padding-bottom: var(--necox-sr-padding-y, 24px);
    background: var(--necox-sr-bg, transparent);
    backdrop-filter: var(--necox-sr-glass-blur, none);
    -webkit-backdrop-filter: var(--necox-sr-glass-blur, none);
    border: 1px solid var(--necox-sr-border-color, transparent);
    box-shadow: var(--necox-sr-shadow, none);
    border-radius: var(--necox-sr-radius, 0);
}

@media (max-width: 768px) {
    .necox-page-search-results {
        /* v7.16.85 — SADECE UST mesafe. (Sol/sag margin EKLEME: kutu width:100% [main.css] +
           yatay margin -> viewport tasar, sag kenar scrollbar altina girer. Sol/sag bosluk
           zaten padding'den geliyor.) Ust margin = header altindan kutu/border'a nefes. */
        margin: 16px auto 16px;
        padding-top: 14px;
        padding-left: 16px;
        padding-right: 16px;
    }
    /* v7.16.85 — .necox-content padding-top: mobilde header 'sticky' (normal akista yer kaplar)
       oldugu icin main.css'teki padding-top:86px (header-h+admin-bar) FAZLA = cift sayim
       (~80px gereksiz). (Desktop'ta header 'fixed' = akistan cikar, padding GEREKLI -> DOKUNMA.)
       4px = wrapper margin-top:16 ile birlikte cizgi/kutu header'dan ~20px asagida, OVERLAP YOK.
       Scope: arama sayfasi + mobil -> global floating-header sayfalari etkilenmez. */
    body.page-template-page-ilan-arama .necox-content {
        padding-top: 4px !important;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   FAZ 5a YENI K2 ALANLARI (v3.87.0)
   Bos sonuc ekrani + sayfalama + daha fazla yukle butonu K2 destekleri.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* Bos sonuc ekrani */
.necox-empty-state {
    background: var(--necox-sr-empty-bg, transparent);
    color: var(--necox-sr-empty-text, var(--necox-muted, #6b7280));
    padding: var(--necox-sr-empty-padding, 60px) 20px;
    text-align: center;
    border-radius: var(--necox-sr-result-header-radius, 0);
    /* v8.3.316 (#63): kart grid'inin ICINDE render edildiginde tek kolona sikismasin —
       tam satira yayil (grid degilse etkisiz, zararsiz). */
    grid-column: 1 / -1;
}

.necox-empty-state p {
    margin: 0;
    color: inherit;
    font-size: 15px;
}

/* v7.3.0: Sayfalama butonlari icin search-results override KALDIRILDI. Eski override
   sr_pag_bg/color/active_bg variablelarini kullaniyordu ama preset-k2-values.php'de
   bu key'ler HIC tanimli degildi (4 preset'in hicbirinde) -> fallback olarak --necox-white
   ve hardcoded #ffffff devreye giriyordu. Kullanici karari: beyaz YOK, tum renkler preset.
   filter.css'teki tek-kaynak kural artik sr_filter_btn_bg/color cascade'i kullaniyor. */

/* Daha Fazla Yukle butonu cift class override (ana selector .necox-btn--outline) */
.necox-search__pagination .necox-search__load-more,
.necox-btn.necox-search__load-more {
    background: var(--necox-sr-loadmore-bg, transparent);
    color: var(--necox-sr-loadmore-color, var(--necox-primary, #2A3254));
}

/* v7.2.9: hover'da bg<->color invert. Onceki filter:brightness(0.95) yetmiyordu;
   .necox-btn--outline'in hover'i bg=primary+color=#fff yaziyordu, koyu zeminde okunsa
   bile preset palet uyumsuzlugu. Simdi: hover bg=sr_loadmore_color (preset accent),
   color=sr_loadmore_bg (preset acik). 4 preset icin otomatik uyumlu. */
.necox-search__pagination .necox-search__load-more:hover,
.necox-btn.necox-search__load-more:hover {
    background: var(--necox-sr-loadmore-color, var(--necox-primary, #2A3254));
    color: var(--necox-sr-loadmore-bg, #ffffff);
    border-color: var(--necox-sr-loadmore-color, var(--necox-primary, #2A3254));
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   FAZ 6 HARITA — Preset 3 (v3.89.0)
   Leaflet pin (custom divIcon), popup, empty state stilleri.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* Pin container (Leaflet divIcon className) */
.necox-search__map-pin-wrap {
    background: transparent !important;
    border: none !important;
}

/* Pin - fiyat etiketi */
.necox-search__map-pin {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--necox-primary, #2A3254);
    color: #ffffff;
    font-size: 12px;
    font-weight: 700;
    padding: 6px 10px;
    border-radius: 14px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.18);
    white-space: nowrap;
    border: 2px solid #ffffff;
    cursor: pointer;
    transition: transform 0.15s, background-color 0.15s;
}

/* v7.11.3 — Pin hover preset cascade'e bagli (primary_hover) */
.necox-search__map-pin:hover {
    background: var(--necox-primary-hover, #3A4470);
    color: var(--necox-primary-fg, #fff);
    transform: scale(1.08);
}

/* Pin - sade nokta (fiyat yoksa) */
.necox-search__map-pin--dot {
    width: 16px;
    height: 16px;
    padding: 0;
    border-radius: 50%;
}

/* Pin popup */
.necox-search__map-popup {
    display: flex;
    flex-direction: column;
    min-width: 220px;
}

.necox-search__map-popup img {
    width: 100%;
    height: 120px;
    object-fit: cover;
    border-radius: 6px 6px 0 0;
}

.necox-search__map-popup-body {
    padding: 10px 12px;
}

.necox-search__map-popup-title {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: var(--necox-heading, #1a1a2e);
    text-decoration: none;
    line-height: 1.3;
    margin-bottom: 4px;
}

.necox-search__map-popup-title:hover {
    color: var(--necox-primary, #2A3254);
}

.necox-search__map-popup-price {
    font-size: 16px;
    font-weight: 700;
    color: var(--necox-primary, #2A3254);
}

/* Leaflet popup container override - genel temaya uy */
.leaflet-popup-content-wrapper {
    border-radius: 8px !important;
    padding: 0 !important;
    overflow: hidden;
}

.leaflet-popup-content {
    margin: 0 !important;
}

/* Pin yok / hata durumu */
.necox-search__map-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    min-height: 300px;
    color: var(--necox-muted, #6b7280);
    text-align: center;
    padding: 40px 20px;
    gap: 12px;
}

.necox-search__map-empty p {
    margin: 0;
    font-size: 14px;
    color: inherit;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   AJAX FILTRE LOADING STATE (v3.85.0 Faz 3)
   doFilter sirasinda container'a is-loading class eklenir + spinner gosterilir.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

.necox-search__main.is-loading,
.necox-search__cards.is-loading {
    opacity: 0.6;
    pointer-events: none;
    transition: opacity 0.2s;
}

.necox-filter-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 60px 20px;
    color: var(--necox-muted, #6b7280);
    font-size: 14px;
    text-align: center;
}

.necox-filter-loading__spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 2px solid var(--necox-border, #e5e7eb);
    border-top-color: var(--necox-primary, #2A3254);
    border-radius: 50%;
    animation: necox-filter-spin 0.7s linear infinite;
}

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

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   FAZ 4 UI STATE (v3.86.0)
   List view + chip aktif item + load-more loading + preview panel scale-in
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* List view modu (grid yerine yatay liste) */
.necox-search__cards.is-list-view {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.necox-search__cards.is-list-view .necox-ad-card {
    width: 100%;
    max-width: 100%;
}

/* Preset 2 / 3 list-item aktif state */


/* Daha Fazla Yukle butonu loading state */
.necox-search__load-more.is-loading {
    opacity: 0.65;
    cursor: wait;
    position: relative;
    pointer-events: none;
}

.necox-search__load-more.is-loading::after {
    content: '';
    position: absolute;
    right: 12px;
    top: 50%;
    width: 14px;
    height: 14px;
    margin-top: -7px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: necox-filter-spin 0.7s linear infinite;
}

/* Preview panel content fade-in */
.necox-search__preview-content {
    animation: necox-preview-fade-in 0.18s ease-out;
}

@keyframes necox-preview-fade-in {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   ORTAK STILLER
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* ── Sonuc Basligi ── */
/* v3.87.0 Faz 5a: Bg/padding/radius destegi - kutu seklinde gosterim icin */
.necox-search__result-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 8px;
    background: var(--necox-sr-result-header-bg, transparent);
    padding: var(--necox-sr-result-header-padding, 0);
    border-radius: var(--necox-sr-result-header-radius, 0);
}

.necox-search__result-count {
    font-size: var(--necox-sr-result-size, 14px);
    font-weight: 500;
    color: var(--necox-sr-result-color, var(--necox-heading));
}

.necox-search__result-count strong {
    color: var(--necox-sr-result-strong, var(--necox-primary, #2A3254));
}

/* ── Gorunum Toggle ── */
.necox-search__view-toggle {
    display: flex;
    gap: 4px;
}

/* v7.7.5 — Preset 2 zaten zorla liste gorunumu; grid/liste toggle gereksiz.
   v7.7.10 — Preset 3 de zengin liste + harita hibrit, grid secenegi anlamsiz.
   v7.7.13 — helper'a preset parametresi gectim (necox_search_result_header
   yeni 3. arguman), toggle PHP tarafinda kosullu render edilir. CSS'te
   yedek olarak class .necox-search__view-toggle--hidden gizler. */
.necox-search--preset-2 .necox-search__view-toggle,
.necox-search--preset-3 .necox-search__view-toggle,
.necox-search__view-toggle--hidden {
    display: none !important;
}

/* v7.16.62 — MOBILDE liste/grid toggle YOK + her zaman GRID.
   Tespit #94 (mobilde liste/grid ikonu olmamali) + #95 (tum mobil kartlar grid).
   Mobilde gorunum tek tip olmali; ikon gizlenir, kullanici daha once 'liste'
   sectiyse bile (is-list-view) mobilde GRID'e donulur. */
@media (max-width: 767px) {
    .necox-search__view-toggle {
        display: none !important;
    }
    /* Liste gorunumu mobilde grid'e zorla (cards grid kurali zaten gap+columns saglar) */
    .necox-search__cards.is-list-view {
        display: grid;
        flex-direction: initial;
    }
    .necox-search__cards.is-list-view .necox-ad-card {
        max-width: none;
    }
}

.necox-search__view-btn {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--necox-border, var(--necox-border));
    border-radius: 6px;
    background: none;
    color: var(--necox-muted, var(--necox-muted));
    cursor: pointer;
    transition: all 0.15s;
}

.necox-search__view-btn.is-active,
.necox-search__view-btn:hover {
    background: var(--necox-primary, var(--necox-primary));
    color: #ffffff;
    border-color: var(--necox-primary, var(--necox-primary));
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.17.55 — UST BAR SIRALAMA (Preset 1, desktop)
   Siralama filtre DEGIL -> sidebar'dan sticky topbar'a tasindi. Sol: siralama
   kontrolu (klasik dropdown + "Akilli Eslesme" buton), sag: sayi + view toggle.
   Tum renkler preset CSS degiskenlerinden (4 preset uyumlu). Mobilde gizli
   (sidebar/drawer'daki siralama korunur).
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-search__sortbar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-right: auto; /* sola yapis; sayi+toggle sagda kalir */
    flex: 0 1 auto;
    min-width: 0;
    /* v7.17.64 — FOUC: select2 init olana kadar GORUNMEZ (yer tutar, sicrama gizli).
       JS initSortbar 'is-ready' ekleyince yumusak belirir. */
    opacity: 0;
    transition: opacity .2s ease;
}
.necox-search__sortbar.is-ready { opacity: 1; }
.necox-search__sort-select-wrap {
    display: flex;
    align-items: center;
    gap: 6px;
}
.necox-search__sort-caption {
    font-size: 12px;
    font-weight: 600;
    color: var(--necox-muted, #94a3b8);
    white-space: nowrap;
    letter-spacing: .2px;
}
/* Klasik siralama select'i: kompakt, kart/border preset uyumlu. select2 init edilince
   .select2-container devralir; bu kurallar native + select2 oncesi FOUC'u onler. */
.necox-search__sort-select {
    height: 34px;
    width: auto;            /* icerige gore (font/dil degisse de dinamik) */
    padding: 0 30px 0 12px;
    font-size: 13px;
    color: var(--necox-text, #e5e7eb);
    background: var(--necox-input-bg, var(--necox-card-bg, rgba(255,255,255,.04)));
    border: 1px solid var(--necox-border, rgba(255,255,255,.12));
    border-radius: 6px;
    cursor: pointer;
}
/* v7.17.64 — FOUC FIX (kullanici: butonlar sayfa yenilenince asagida gorunup oturunca
   yerini aliyor). KOK NEDEN: select2 init gecikmesinde (LiteSpeed JS-delay) ham native
   <select> select2'den FARKLI boyutta -> sortbar yuksekligi/yeri sicriyor. Cozum (harita
   Sort v90 deseni): init ONCESI (henuz select2-hidden-accessible degil) native select'i
   select2'nin SON boyutuna SABITLE -> ayni boyut, sicrama yok. */
.necox-search__sort-select:not(.select2-hidden-accessible) {
    height: 32px !important;
    box-sizing: border-box;
    -webkit-appearance: none;
    appearance: none;
}
/* select2-hidden (init sonrasi gizli native): layout'tan tamamen cikar -> flex item
   olarak hayalet yer kaplamasin. */
.necox-search__sort-select.select2-hidden-accessible {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden;
    clip: rect(0 0 0 0);
}
/* select2 sarmal hizasi. v7.17.65 — yukseklik 34px (smart/view ile esit, filter.css'in
   --necox-sr-filter-height'ini sortbar'da EZ), genislik 190px (en uzun secenek sigar).
   Sortbar select2'si selectionCssClass=necox-search-filter-sel + dropdownCssClass=
   necox-search-filter-dd aliyor -> sortbar scope + !important ile hizalama. */
/* ⭐ DINAMIK GENISLIK (kullanici: font/dil degisse de en uzun secenek sigsin, sabit px
   YOK). select2 container width:auto + selection icerigi nowrap -> secili metin ne kadar
   uzunsa kutu o kadar; dropdown width:max-content -> en uzun secenek otomatik sigar.
   Tek taban: kucuk min-width (kisa secenekte kutu cuce kalmasin). */
.necox-search__sortbar .select2-container {
    width: auto !important;
    min-width: 120px;
    max-width: 320px;
}
.necox-search__sortbar .select2-container--default .select2-selection--single,
.necox-search__sortbar .select2-selection.necox-search-filter-sel {
    height: 34px !important;
    line-height: 32px !important;
    background: var(--necox-input-bg, var(--necox-card-bg, rgba(255,255,255,.04)));
    border: 1px solid var(--necox-border, rgba(255,255,255,.12));
    border-radius: 6px;
    display: flex;
    align-items: center;
}
.necox-search__sortbar .select2-selection--single .select2-selection__rendered {
    line-height: 32px !important;
    font-size: 13px;
    color: var(--necox-text, #e5e7eb);
    padding-left: 12px;
    padding-right: 26px;       /* ok ile yazi cakismasin */
    white-space: nowrap;        /* secili metin kesilmeden kutuyu uzatir */
    max-width: none !important; /* select2'nin daraltmasini ez */
}
.necox-search__sortbar .select2-selection--single .select2-selection__arrow {
    height: 32px !important;
    top: 0 !important;
}
/* v8.3.294 — DROPDOWN GENISLIGI = SELECT KUTUSU (kullanici karari, ISTISNASIZ tum
   select'ler + 3 preset).

   ESKI (hatali): width:max-content !important + min-width:100% !important
     -> panel en uzun SECENEGIN uzunluguna gore genislik aliyordu (dinamik).
     Kapali kutu ile hizasiz kaliyordu (mobil olcum: kutu 247px, panel 200px =
     47px dar, sag kenarlar hizasiz) -> "dropdown bu select'e ait degil" hissi.
     AYRICA: select2 paneli acarken inline "width:246.712px" (= kutu genisligi)
     YAZAR; bu !important kural onu HEMEN eziyordu -> panel once dogru genislikte
     cizilip sonra buzuluyordu = kullanicinin gordugu "acilirken buyuyup kuculme"
     titremesi (tarayici davranisi DEGIL, bu kuraldi).

   YENI: width'e HIC dokunma -> select2'nin kendi inline width'i (kutudan olculur)
   gecerli olur => panel DAIMA kutuyla birebir, icerik uzunlugundan BAGIMSIZ,
   titreme YOK. Tasma guvenligi icin sadece max-width sinirlanir.
   ⚠️ Buraya width/min-width YAZMA (auto/100%/max-content hepsi inline'i ezip
   paneli cokertir; auto=49px, 100%=2px olctuk). */
.necox-search-filter-dd.select2-dropdown,
.select2-container--open .select2-dropdown.necox-search-filter-dd {
    max-width: 100vw;
    box-sizing: border-box;
}
/* Panel artik kutu genisliginde SABIT -> uzun secenek kirpilmak yerine ALT SATIRA
   sarar (kirpma listede bilgi kaybi: "Otomobil Yedek Parca..." iki farkli secenegi
   ayirt edilemez kilar). Sarma dokunma hedefini de buyutur. */
.necox-search-filter-dd .select2-results__option {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* "Akilli Eslesme" butonu — vurgulu, animasyonlu (ileride AI Destekli). */
.necox-search__smart-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 13px;
    font-size: 13px;
    font-weight: 600;
    color: var(--necox-primary, #38bdf8);
    background: color-mix(in srgb, var(--necox-primary, #38bdf8) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--necox-primary, #38bdf8) 45%, transparent);
    border-radius: 7px;
    cursor: pointer;
    white-space: nowrap;
    position: relative;
    overflow: hidden;
    transition: background .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease;
}
.necox-search__smart-btn:hover {
    background: color-mix(in srgb, var(--necox-primary, #38bdf8) 20%, transparent);
    border-color: var(--necox-primary, #38bdf8);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--necox-primary, #38bdf8) 14%, transparent);
}
/* Aktif (Akilli Eslesme secili): dolu primary + hafif glow. */
.necox-search__smart-btn.is-active {
    color: var(--necox-primary-fg, #fff);
    background: var(--necox-primary, #38bdf8);
    border-color: var(--necox-primary, #38bdf8);
    box-shadow: 0 0 14px color-mix(in srgb, var(--necox-primary, #38bdf8) 50%, transparent);
}
/* Yildiz ikonu: hover/aktifte hafif don + parla. */
.necox-search__smart-spark {
    display: inline-flex;
    transition: transform .35s cubic-bezier(.34,1.56,.64,1);
}
.necox-search__smart-btn:hover .necox-search__smart-spark { transform: rotate(72deg) scale(1.12); }
.necox-search__smart-btn.is-active .necox-search__smart-spark {
    animation: necox-smart-spark-pulse 2.4s ease-in-out infinite;
}
@keyframes necox-smart-spark-pulse {
    0%, 100% { transform: scale(1);    opacity: 1;   }
    50%      { transform: scale(1.18); opacity: .82; }
}
@media (prefers-reduced-motion: reduce) {
    .necox-search__smart-spark,
    .necox-search__smart-btn.is-active .necox-search__smart-spark { animation: none; transition: none; }
}

/* ── v7.17.73 — KATEGORI-OZEL SIRALAMA TOGGLE BUTONLARI (Emlak m²/Bina Yaşı, Vasıta
   KM/Yapım Yılı). Tek-tik toggle: sabit etiket + yon oku. Smart-btn ile ayni preset-renk
   degisken sistemi (--necox-primary / --necox-text / --necox-border / color-mix) -> 4
   preset (Ocean Deep, Super Light vb.) ile OTOMATIK uyumlu, SABIT RENK YOK. Smart'tan
   daha sade (ikincil siralama): pasifte notr border, aktifte dolu primary. */
.necox-search__cat-sort-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 32px;
    padding: 0 12px;
    font-size: 13px;
    font-weight: 600;
    color: var(--necox-text, #e5e7eb);
    background: var(--necox-input-bg, var(--necox-card-bg, rgba(255,255,255,.04)));
    border: 1px solid var(--necox-border, rgba(255,255,255,.12));
    border-radius: 7px;
    cursor: pointer;
    white-space: nowrap;
    transition: background .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease;
}
.necox-search__cat-sort-btn:hover {
    color: var(--necox-primary, #38bdf8);
    border-color: color-mix(in srgb, var(--necox-primary, #38bdf8) 55%, var(--necox-border, rgba(255,255,255,.12)));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--necox-primary, #38bdf8) 12%, transparent);
}
/* Aktif (bu kritere gore siralaniyor): dolu primary + glow (smart-btn aktif deseni). */
.necox-search__cat-sort-btn.is-active {
    color: var(--necox-primary-fg, #fff);
    background: var(--necox-primary, #38bdf8);
    border-color: var(--necox-primary, #38bdf8);
    box-shadow: 0 0 12px color-mix(in srgb, var(--necox-primary, #38bdf8) 45%, transparent);
}
/* Yon oku: pasifte soluk (default yon ipucu), aktifte tam belirgin. */
.necox-search__cat-sort-arrow {
    display: inline-flex;
    font-size: 12px;
    line-height: 1;
    opacity: .55;
    transition: opacity .18s ease, transform .18s ease;
}
.necox-search__cat-sort-btn:hover .necox-search__cat-sort-arrow { opacity: .85; }
.necox-search__cat-sort-btn.is-active .necox-search__cat-sort-arrow { opacity: 1; }

/* Preset 1+2 sidebar'daki siralama grubu: DESKTOP'ta gizle (ust bara tasindi);
   mobilde (drawer/sidebar) GORUNUR kalir -> mobil ust bar dar. Preset 3
   sidebar'inda kurali UYGULAMA (onda ust bar siralamasi yok).
   v7.17.67 — Preset 2 de ust bar siralamasina gecti (--preset-2 eklendi). */
@media (min-width: 992px) {
    .necox-search--preset-1 .necox-filter-group--sort,
    .necox-search--preset-2 .necox-filter-group--sort { display: none; }
}
/* Mobil/tablet: ust bar siralamasi gizli (sidebar/drawer'daki gorunur). */
@media (max-width: 991px) {
    .necox-search__sortbar { display: none !important; }
}

/* ── Akilli Eslesme: "once filtre" ipucu (toast) ── */
.necox-smart-hint {
    margin: 0 0 12px;
    padding: 10px 14px;
    font-size: 13px;
    line-height: 1.4;
    color: var(--necox-primary-fg, #fff);
    background: var(--necox-primary, #38bdf8);
    border-radius: 8px;
    box-shadow: 0 6px 20px color-mix(in srgb, var(--necox-primary, #38bdf8) 35%, transparent);
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity .3s ease, transform .3s ease;
}
.necox-smart-hint.is-visible { opacity: 1; transform: translateY(0); }
.necox-smart-pulse { animation: necox-smart-pulse-kf 1.1s ease-in-out 2; }

/* Filtre bos -> sidebar'a DIKKAT CEK: sidebar cerceve glow + gruplar sirayla flash. */
.necox-search__sidebar.necox-smart-attn {
    position: relative;
    border-radius: 12px;
    animation: necox-smart-attn-kf 1.3s ease-in-out 2;
}
@keyframes necox-smart-attn-kf {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--necox-primary, #38bdf8) 0%, transparent); }
    50%      { box-shadow: 0 0 0 3px color-mix(in srgb, var(--necox-primary, #38bdf8) 55%, transparent), 0 0 26px color-mix(in srgb, var(--necox-primary, #38bdf8) 30%, transparent); }
}
.necox-filter-group.necox-smart-flash,
.necox-filter-actions.necox-smart-flash {
    border-radius: 8px;
    animation: necox-smart-flash-kf .9s ease-out;
}
@keyframes necox-smart-flash-kf {
    0%   { background: color-mix(in srgb, var(--necox-primary, #38bdf8) 0%, transparent); }
    35%  { background: color-mix(in srgb, var(--necox-primary, #38bdf8) 16%, transparent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--necox-primary, #38bdf8) 40%, transparent); }
    100% { background: color-mix(in srgb, var(--necox-primary, #38bdf8) 0%, transparent); box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
    .necox-search__sidebar.necox-smart-attn,
    .necox-filter-group.necox-smart-flash,
    .necox-filter-actions.necox-smart-flash { animation: none; }
}
@keyframes necox-smart-pulse-kf {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--necox-primary, #38bdf8) 55%, transparent); }
    50%      { box-shadow: 0 0 0 6px color-mix(in srgb, var(--necox-primary, #38bdf8) 0%, transparent); }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.17.56 — Akilli Eslesme ZENGIN tarama overlay'i ("AI gerçekten arıyor" hissi)
   Arka plan: gerçek ilan görselleri cross-fade. Uçuşan fiyat/₺ chip'leri.
   Orta: hızla değişen başlık + canlı sayaç. Alt: akan analiz satirlari.
   Tum renkler preset CSS degiskenlerinden. Desktop'a yakisir buyuklukte.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-smart-scan-host { position: relative; }
.necox-smart-scan {
    position: absolute;
    inset: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: var(--necox-bg, #0b1220);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    opacity: 0;
    transition: opacity .35s ease;
    border-radius: var(--necox-sr-result-header-radius, 10px);
}
.necox-smart-scan.is-visible { opacity: 1; }

/* Asama 1: TUM efektler KUTU icinde. bg + float kutuya gore inset:0; kutu
   overflow:hidden -> hicbir sey kutu disina tasmaz. content z-index ile ustte. */
/* Arka plan: hizla degisen gercek ilan gorselleri (cross-fade + zoom) */
.necox-smart-scan__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    border-radius: inherit;
}
.necox-smart-scan__bgimg {
    position: absolute;
    inset: -6%;
    background-size: cover;
    background-position: center;
    filter: blur(1px) saturate(1.12);
    opacity: .55;
}
/* Ic karartma: gorsel NET gorunur ama merkez yazi okunur kalsin diye sadece
   ALT-ORTA'ya yumusak gradient (gorselin geneli acik, yazi arkasi hafif koyu). */
.necox-smart-scan__bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(90% 70% at 50% 52%, color-mix(in srgb, var(--necox-card-bg, #111827) 30%, transparent) 0%, transparent 70%),
        linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--necox-card-bg, #111827) 35%, transparent) 100%);
}
.necox-smart-scan__bgimg.is-pulse { animation: necox-scan-bgpulse .26s ease-out; }
@keyframes necox-scan-bgpulse {
    0%   { opacity: .05; transform: scale(1.10); }
    40%  { opacity: .28; }
    100% { opacity: .18; transform: scale(1.0); }
}

/* Ucusan fiyat / ₺ / sayi chip'leri (kutu icinde) */
.necox-smart-scan__float {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
    border-radius: inherit;
}
.necox-smart-scan__chip {
    position: absolute;
    transform: translateY(10px) scale(.85);
    padding: 4px 11px;
    font-weight: 700;
    color: var(--necox-primary-fg, #fff);
    background: color-mix(in srgb, var(--necox-primary, #38bdf8) 88%, #000);
    border-radius: 999px;
    box-shadow: 0 6px 18px color-mix(in srgb, var(--necox-primary, #38bdf8) 45%, transparent);
    white-space: nowrap;
    opacity: 0;
    transition: opacity .35s ease, transform .55s cubic-bezier(.22,1,.36,1);
}
.necox-smart-scan__chip.is-in {
    opacity: .96;
    transform: translateY(calc(-14px + var(--necox-chip-dx, 0px))) scale(1);
}

/* Merkez kutu — TUM efektleri kapsar, disari tasmaz (asama 1). */
.necox-smart-scan__box {
    position: relative;
    z-index: 2;
    overflow: hidden;
    width: min(760px, 94%);
    min-height: 460px;
    padding: 44px 54px 46px;
    text-align: center;
    background: var(--necox-card-bg, #111827);
    border: 1px solid color-mix(in srgb, var(--necox-primary, #38bdf8) 35%, var(--necox-border, rgba(255,255,255,.1)));
    border-radius: 20px;
    box-shadow: 0 30px 80px rgba(0,0,0,.5), 0 0 0 1px color-mix(in srgb, var(--necox-primary, #38bdf8) 15%, transparent), 0 0 60px color-mix(in srgb, var(--necox-primary, #38bdf8) 18%, transparent);
}
/* Icerik (yazi/sayac/satirlar) bg+float ustunde */
.necox-smart-scan__content {
    position: relative;
    z-index: 3;
}
.necox-smart-scan__spark {
    display: inline-flex;
    color: var(--necox-primary, #38bdf8);
    filter: drop-shadow(0 0 10px color-mix(in srgb, var(--necox-primary, #38bdf8) 60%, transparent));
    animation: necox-smart-spark-pulse 1.4s ease-in-out infinite;
}
.necox-smart-scan__title {
    margin-top: 8px;
    font-size: 20px;
    font-weight: 800;
    color: var(--necox-heading, #f1f5f9);
    letter-spacing: .3px;
}
/* Hizla degisen gercek ilan basligi */
.necox-smart-scan__ticker {
    margin-top: 10px;
    height: 22px;
    font-size: 14px;
    font-weight: 600;
    color: var(--necox-primary, #38bdf8);
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    opacity: 0;
    transform: translateY(6px);
    transition: opacity .18s ease, transform .18s ease;
}
.necox-smart-scan__ticker.is-in { opacity: 1; transform: translateY(0); }
/* Canli sayac */
.necox-smart-scan__count {
    margin-top: 4px;
    font-size: 12px;
    color: var(--necox-muted, #94a3b8);
}
.necox-smart-scan__count span {
    font-weight: 800;
    font-size: 15px;
    color: var(--necox-heading, #f1f5f9);
    font-variant-numeric: tabular-nums;
}
.necox-smart-scan__lines {
    margin: 22px auto 22px;
    min-height: 120px;
    max-width: 420px;
    text-align: left;
}
.necox-smart-scan__line {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: 13px;
    color: var(--necox-muted, #94a3b8);
    padding: 4px 0;
    opacity: 0;
    transform: translateX(-8px);
    transition: opacity .3s ease, transform .3s ease;
}
.necox-smart-scan__line.is-in { opacity: 1; transform: translateX(0); }
.necox-smart-scan__line::before {
    content: "";
    width: 7px; height: 7px;
    border-radius: 50%;
    background: var(--necox-primary, #38bdf8);
    box-shadow: 0 0 10px var(--necox-primary, #38bdf8);
    flex: 0 0 auto;
    animation: necox-smart-spark-pulse 1.2s ease-in-out infinite;
}
.necox-smart-scan__bar {
    height: 5px;
    border-radius: 5px;
    background: color-mix(in srgb, var(--necox-primary, #38bdf8) 18%, transparent);
    overflow: hidden;
}
.necox-smart-scan__bar span {
    display: block;
    height: 100%;
    width: 38%;
    border-radius: 5px;
    background: linear-gradient(90deg, transparent, var(--necox-primary, #38bdf8), transparent);
    animation: necox-smart-bar .7s ease-in-out infinite;
}
@keyframes necox-smart-bar {
    0%   { transform: translateX(-130%); }
    100% { transform: translateX(360%); }
}
/* Final "X ilan bulundu" ekrani — sade, okunur (AJAX bitince). */
.necox-smart-scan__box.is-final {
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color .3s ease, box-shadow .3s ease;
    border-color: color-mix(in srgb, #22c55e 50%, var(--necox-border, rgba(255,255,255,.1)));
    box-shadow: 0 30px 80px rgba(0,0,0,.5), 0 0 0 1px color-mix(in srgb, #22c55e 22%, transparent), 0 0 60px color-mix(in srgb, #22c55e 18%, transparent);
}
.necox-smart-scan__spark--done {
    color: #22c55e;
    filter: drop-shadow(0 0 12px color-mix(in srgb, #22c55e 60%, transparent));
    animation: necox-smart-done-pop .4s cubic-bezier(.34,1.56,.64,1);
}
@keyframes necox-smart-done-pop {
    0%   { transform: scale(.3); opacity: 0; }
    100% { transform: scale(1);  opacity: 1; }
}
.necox-smart-scan__final {
    margin-top: 12px;
    font-size: 18px;
    line-height: 1.5;
    font-weight: 600;
    color: var(--necox-heading, #f1f5f9);
    animation: necox-smart-final-in .4s ease both;
}
.necox-smart-scan__final strong {
    color: var(--necox-primary, #38bdf8);
    font-weight: 800;
    font-size: 22px;
    font-variant-numeric: tabular-nums;
}
@keyframes necox-smart-final-in {
    0%   { opacity: 0; transform: translateY(8px); }
    100% { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
    .necox-smart-scan__spark,
    .necox-smart-scan__bar span,
    .necox-smart-scan__bgimg.is-pulse,
    .necox-smart-scan__line::before,
    .necox-smart-scan__spark--done,
    .necox-smart-scan__final { animation: none; }
    .necox-smart-scan__line, .necox-smart-scan__chip, .necox-smart-scan__ticker { transition: opacity .2s ease; transform: none; }
}

/* ── Kartlar Grid ── */
/* v3.84.0 Faz 2.1: Inline style="grid-template-columns:repeat(var(--necox-sr-columns,N),1fr)"
   helpers.php tarafindan basilir. Burada sadece gap. */
.necox-search__cards {
    display: grid;
    gap: var(--necox-sr-gap, 16px);
}

/* ── Yatay Filtre Bar ── */
.necox-search__hbar {
    margin-bottom: 16px;
}

.necox-search__hbar-form {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

.necox-search__hbar-field {
    flex: 1;
    min-width: 140px;
}

.necox-search__hbar-field--price {
    display: flex;
    gap: 4px;
    align-items: center;
}

.necox-search__hbar-select,
.necox-search__hbar-input {
    width: 100%;
    /* v7.16.69 — Yukseklik panelden ayarlanir (fallback 38px = eski deger) */
    height: var(--necox-sr-filter-height, 38px);
    padding: 0 10px;
    border: 1px solid var(--necox-sr-filter-border, var(--necox-border, #e5e7eb));
    border-radius: var(--necox-sr-filter-radius, 6px);
    background: var(--necox-sr-filter-bg, var(--necox-white));
    color: var(--necox-sr-filter-color, var(--necox-text, #374151));
    /* v7.16.69 — Ortak tipografi (Konum/Kategori/hizli arama, panelden) */
    font-size: var(--necox-sr-filter-size, 13px);
    font-family: var(--necox-sr-filter-font, inherit);
    font-weight: var(--necox-sr-filter-weight, 400);
}

.necox-search__hbar-sep {
    color: var(--necox-muted, var(--necox-muted));
    font-size: 12px;
    flex-shrink: 0;
}

.necox-search__hbar-submit {
    flex-shrink: 0;
    height: 38px;
    /* v7.7.14 — Yatay filtre Ara butonu preset primary rengiyle DOLU.
       --necox-btn-bg cascade'i bazi preset'lerde transparent (glass/buton transparent
       toggle), o durumda Ara butonu kayboluyor — yukari cik fix'i ile ayni
       pattern: --necox-primary'ye direkt baglan, primary-hover'a duser. */
    background: var(--necox-primary, #2A3254) !important;
    color: var(--necox-primary-fg, var(--necox-btn-text, #fff)) !important;
    border-color: var(--necox-primary, #2A3254) !important;
}
.necox-search__hbar-submit:hover {
    background: var(--necox-primary-hover, var(--necox-primary, #2A3254)) !important;
    border-color: var(--necox-primary-hover, var(--necox-primary, #2A3254)) !important;
}

/* ════════════════════════════════════════════════════════════════
   v7.16.72 — PRESET 3 KONUM MINI-WIZARD (Il -> Ilce -> Ilan Tipi)
   Onayli mockup (MOCKUPS/haritada-arama/mockup-DESKTOP+MOBIL.html) preset
   token'lara cevrildi. Hardcoded hex YOK -> 4 preset otomatik uyar.
   ASAMA 1 = Satir 1 (konum wizard) + Satir 2 iskelet (kategori/fiyat/kelime
   korundu, cascade wizard ASAMA 2'de).
   ════════════════════════════════════════════════════════════════ */

/* v7.16.82 — TAM AJAX LOADING (sayfa yenilemeden filtre -> zniplama yok).
   Filtre/liste AJAX ile degisirken: filtre bari dim + cift-tik engel; liste
   yari-saydam + shimmer; layout boyutu KORUNUR (CLS=0, alan kuculmez). */
.necox-wiz-loading {
    opacity: .55;
    pointer-events: none;
    transition: opacity .15s;
}
.necox-wiz-list-loading {
    position: relative;
    min-height: 200px; /* liste alani kuculmesin (CLS=0) */
    opacity: .5;
}
.necox-wiz-list-loading::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
        transparent 0%,
        color-mix(in srgb, var(--necox-primary, #2A3254) 6%, transparent) 50%,
        transparent 100%);
    background-size: 200% 100%;
    animation: necoxWizShimmer 1.2s ease-in-out infinite;
    pointer-events: none;
}
@keyframes necoxWizShimmer {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* v7.16.74 — KOMPAKT TEK SATIR (kullanici: filtre cok kalin, haritaya yer kalmiyor).
   Il/Ilce/Tip + kategori zinciri + Fiyat + Ara/Temizle HEPSI tek yatay satirda.
   row1/row2 wrapper'lari display:contents ile seffaf -> cocuklari form'un dogrudan
   flex cocuklari olur (HTML bozulmadan tek satir). */
.necox-sr-wiz {
    background: var(--necox-card-bg, var(--necox-white));
    border: 1px solid var(--necox-border, #e5e7eb);
    border-radius: 12px;
    padding: 9px 12px;
}
.necox-sr-wiz .necox-search__hbar-form {
    display: flex;
    /* v7.16.94 — TEK SATIR (kullanici: hicbir filtre ogesi alt satira inmesin). wrap->nowrap.
       Konum/Tip/Fiyat/Ara flex-shrink:0 (sabit); SADECE kategori zinciri esner+kayar (asagi).
       Mobil (<=767) bu kurali EZER: flex-direction:column (dikey, kullanici karari korunur). */
    flex-wrap: nowrap;
    align-items: center;
    gap: 8px;
}
/* row1/row2 seffaf -> cocuklar tek flex satira */
.necox-sr-wiz-row1,
.necox-sr-wiz-row2 { display: contents; }

/* v7.16.94 — Sonuc sayisi (filtre bari EN SOL, eski tam-genislik serit yerine). Kompakt. */
.necox-sr-wiz-count {
    flex: 0 0 auto;
    align-self: center; /* form align-items:center ile dikey ortala (kutu yuksekligine gore) */
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    font-size: var(--necox-sr-filter-size, 13px);
    color: var(--necox-muted, #8a93b2);
    padding-right: 4px;
    line-height: 1;
}
.necox-sr-wiz-count strong {
    color: var(--necox-primary, #2A3254);
    font-weight: 700;
    margin-right: .28em; /* v7.16.95 — "2ilan" yapisik gorunuyordu (HTML boslugu render'da
                            yutuluyor) -> garantili 1-karakter bosluk: "2 ilan". */
}

/* ── Konum/Tip select alanlari (kompakt) ── */
.necox-sr-wiz-field {
    position: relative;
    flex: 0 0 auto;
    min-width: 140px;
}
/* Yuzen alan etiketi (Il / Ilce / Ilan Tipi).
   v7.16.84 — GORUNUM BIRLIGI: kategori zinciri basligi (.necox-sr-wiz-steplab) ile
   BIREBIR ayni (top/left/max-width/ellipsis). z-index select2 acik kutusunun (z:100050)
   USTUNDE -> input tiklaninca buyuyup basligin ustunu KAPATMASIN (kullanici tespiti). */
.necox-sr-wiz-lab {
    position: absolute;
    top: -8px;
    left: 9px;
    z-index: 100051;
    max-width: calc(100% - 6px);
    padding: 0 5px;
    background: var(--necox-card-bg, var(--necox-white));
    color: var(--necox-muted, #8a93b2);
    /* v7.16.88 — admin sr_filter_label_size doluysa onu; bos ise metin boyutuna oransal
       (~0.72x, 13px->~9.4 = eski 9.5 ile esdeger). Baslik fontu: label_font > ana filtre fontu. */
    font-size: var(--necox-sr-filter-label-size, max(9px, calc(var(--necox-sr-filter-size, 13px) * 0.72)));
    font-family: var(--necox-sr-filter-label-font, var(--necox-sr-filter-font, inherit));
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
}
.necox-sr-wiz-field .select2-container,
.necox-sr-wiz-field .necox-sr-wiz-select { width: 100% !important; }

/* v7.16.77 — KATI SIRALI: kilitli (ust seviye secilmemis) alan soluk + pasif */
.necox-sr-wiz-locked {
    opacity: .45;
    pointer-events: none;
    filter: grayscale(.3);
}
.necox-sr-wiz-locked .necox-sr-wiz-lab { color: var(--necox-muted, #8a93b2); }
/* Kategori zinciri kilitliyken "once ilan tipi secin" ipucu */
.necox-sr-wiz-lockmsg {
    display: inline-flex;
    align-items: center;
    height: 32px;
    padding: 0 12px;
    color: var(--necox-muted, #8a93b2);
    /* v7.16.88 — ipucu metni de ana filtre boyutu/fontu (fallback 12.5px) */
    font-size: var(--necox-sr-filter-size, 12.5px);
    font-family: var(--necox-sr-filter-font, inherit);
    font-style: italic;
    white-space: nowrap;
}
/* Kompakt select yuksekligi */
.necox-sr-wiz .necox-search__hbar-select,
.necox-sr-wiz .select2-container .select2-selection--single {
    height: 34px !important;
}

/* Ilce alani: il secilene kadar gizli (genislik animasyonu) */
.necox-sr-wiz-field--ilce {
    max-width: 0;
    min-width: 0;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
    transition: max-width .4s cubic-bezier(.4,0,.2,1), opacity .35s, min-width .4s;
}
.necox-sr-wiz-field--ilce.show {
    max-width: 210px;
    min-width: 140px;
    opacity: 1;
    pointer-events: auto;
    overflow: visible;
}

/* ════════════════════════════════════════════════════════════════
   v7.16.74 — SATIR 2: KATEGORI+CF YATAY BREADCRUMB ZINCIRI
   Vasita › Otomobil › Toyota › Corolla › ... (tek serit, CF altta DEGIL).
   Her basamak = secili chip + KARDESLER dropdown. Buton radius'lari Ara
   butonu ile AYNI (--necox-sr-filter-radius, kullanici karari: pill DEGIL).
   v7.16.74: row2 grid KALDIRILDI -> display:contents (tek satir, yukarida).
   ════════════════════════════════════════════════════════════════ */

/* Yatay zincir — esner (flex:1). v7.16.94: TEK SATIR (form nowrap) icin zincir de nowrap;
   cok uzarsa (Vasita>Otomobil>marka>...) SADECE zincir kendi icinde yatay KAYAR (overflow-x),
   diger ogeler (Konum/Tip/Fiyat/Ara) sabit kalir, alta INMEZ. Dropdown'lar position:fixed
   (.necox-sr-wiz-dd, JS positionDd) -> overflow:auto KIRPMAZ (v74 dersi gecersiz: o zaman
   dropdown absolute'tu). Mobil (<=767) bu kurali ezer: flex-direction:column (dikey). */
.necox-sr-wiz-chain {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    overflow-x: auto;
    /* v7.16.95 — overflow-x:auto, overflow-y'yi de auto'ya cevirir (CSS kurali) -> top:-8px
       yuzen baslik (.necox-sr-wiz-steplab) USTTEN KIRPILIYORDU (kullanici: "baslik ustten
       gozukmuyor"). COZUM: zincire ust padding ver (baslik chain'in ICINE girsin, kirpilmaz)
       + negatif margin-top ile hizalamayi KORU (Konum/Tip kutulariyla ayni dikey eksen). */
    padding-top: 9px;
    margin-top: -9px;
    gap: 4px 5px;
    min-width: 0;
    scrollbar-width: thin;
    scrollbar-color: var(--necox-primary, #2A3254) transparent;
}
.necox-sr-wiz-chain::-webkit-scrollbar { height: 5px; }
.necox-sr-wiz-chain::-webkit-scrollbar-thumb { background: var(--necox-primary, #2A3254); border-radius: 5px; }
.necox-sr-wiz-chain::-webkit-scrollbar-track { background: transparent; }
/* Zincir basamaklari kaymada KUCULMESIN (tam genislik korur, scroll olur) */
.necox-sr-wiz-chain > * { flex-shrink: 0; }
.necox-sr-wiz-chain-ico {
    display: inline-flex;
    align-items: center;
    color: var(--necox-primary, #2A3254);
    flex-shrink: 0;
    margin-right: 2px;
}
.necox-sr-wiz-arrow {
    flex-shrink: 0;
    color: var(--necox-muted, #8a93b2);
    opacity: .5;
    font-size: 14px;
}

/* Her basamagin USTUNDE yuzen baslik (Kategori/Marka/Seri... — Il/Ilce gibi).
   v7.16.89 — padding-top:9px KALDIRILDI: chain'i Konum/Tip field'larindan 9px asagi
   itiyordu (hizalama bozuk, kullanici tespiti). Baslik (.necox-sr-wiz-steplab) zaten
   position:absolute top:-8px (yer kaplamaz, Konum'daki .necox-sr-wiz-lab gibi) -> ust
   bosluga gerek yok; toggle/chip 34px olunca baslik kutunun ustunde yuzer. */
.necox-sr-wiz-steplab {
    position: absolute;
    top: -8px;
    left: 9px;
    z-index: 100051; /* v7.16.84 — .necox-sr-wiz-lab ile birlik: acik dropdown ustunde kal */
    max-width: calc(100% - 6px); /* uzun baslik (Marka Kategorisi/Motor Turu) tasmasin */
    padding: 0 5px;
    background: var(--necox-card-bg, var(--necox-white));
    color: var(--necox-muted, #8a93b2);
    /* v7.16.88 — .necox-sr-wiz-lab ile birlik (admin label_size/label_font + oransal fallback) */
    font-size: var(--necox-sr-filter-label-size, max(9px, calc(var(--necox-sr-filter-size, 13px) * 0.72)));
    font-family: var(--necox-sr-filter-label-font, var(--necox-sr-filter-font, inherit));
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    pointer-events: none;
}

/* ── Secili basamak = KOMPAKT/INCE chip (govde tikla=degistir, ×=kaldir) ── */
.necox-sr-wiz-step {
    position: relative;
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    border-radius: var(--necox-sr-filter-radius, 6px); /* Ara butonu ile AYNI */
    background: color-mix(in srgb, var(--necox-primary, #2A3254) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--necox-primary, #2A3254) 32%, transparent);
    animation: necoxWizChipIn .28s cubic-bezier(.2,.9,.3,1.2);
}
.necox-sr-wiz-step-lab {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 34px; /* v7.16.89 — Konum/Tip/aktif basamak ile AYNI yukseklik (hizala) */
    padding: 0 5px 0 10px;
    border: 0;
    background: transparent;
    color: var(--necox-text, #374151);
    font-family: var(--necox-sr-filter-font, inherit);
    font-size: var(--necox-sr-filter-size, 13px); /* v7.16.88 — admin metin boyutu */
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
    border-radius: var(--necox-sr-filter-radius, 6px);
}
.necox-sr-wiz-step-lab svg { opacity: .55; width: 8px; height: 5px; }
.necox-sr-wiz-step-lab:hover { color: var(--necox-primary, #2A3254); }
.necox-sr-wiz-x {
    display: grid;
    place-items: center;
    width: 18px;
    height: 34px; /* v7.16.89 — chip ile ayni yukseklik (hizala) */
    padding-right: 6px;
    border: 0;
    background: transparent;
    color: var(--necox-muted, #8a93b2);
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
    transition: color .15s;
}
.necox-sr-wiz-x:hover { color: var(--necox-danger, #ef4444); }

/* ── Aktif basamak = acilir secim (henuz secim yok) ── */
.necox-sr-wiz-pick {
    position: relative;
    flex-shrink: 0;
}
.necox-sr-wiz-pick-toggle {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 34px; /* v7.16.89 — Konum/Tip select2 kutusu (34px) + Ara ile AYNI yukseklik (hizala) */
    padding: 0 11px;
    border: 1px solid var(--necox-primary, #2A3254);
    border-radius: var(--necox-sr-filter-radius, 6px); /* Ara butonu ile AYNI */
    background: var(--necox-input-bg, var(--necox-white));
    color: var(--necox-text, #374151);
    font-family: var(--necox-sr-filter-font, inherit);
    font-size: var(--necox-sr-filter-size, 13px); /* v7.16.88 — admin metin boyutu */
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--necox-primary, #2A3254) 12%, transparent);
}
.necox-sr-wiz-pick-toggle svg { color: var(--necox-muted, #8a93b2); }

/* ── Dropdown paneli (chip + aktif ortak) — preset renkli, aranabilir ── */
.necox-sr-wiz-dd {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 100060;
    min-width: 220px;
    max-width: 320px;
    background: var(--necox-input-bg, var(--necox-white));
    border: 1px solid var(--necox-primary, #2A3254);
    border-radius: var(--necox-sr-filter-radius, 8px);
    box-shadow: 0 16px 40px rgba(0, 0, 0, .28);
    opacity: 0;
    transform: translateY(-6px);
    pointer-events: none;
    transition: opacity .16s, transform .16s;
}
.necox-sr-wiz-step.is-open .necox-sr-wiz-dd,
.necox-sr-wiz-pick.is-open .necox-sr-wiz-dd {
    opacity: 1;
    transform: none;
    pointer-events: auto;
}
.necox-sr-wiz-dd-search {
    padding: 9px 10px;
    border-bottom: 1px solid var(--necox-border, #e5e7eb);
}
.necox-sr-wiz-dd-input {
    width: 100%;
    height: 34px;
    padding: 0 10px;
    border: 1px solid var(--necox-border, #e5e7eb);
    border-radius: 6px;
    background: var(--necox-input-bg, var(--necox-white));
    color: var(--necox-text, #374151);
    /* v7.16.88 — dropdown arama kutusu: dd-size > ana metin boyutu (fallback 13px) */
    font-size: var(--necox-sr-filter-dd-size, var(--necox-sr-filter-size, 13px));
    font-family: var(--necox-sr-filter-font, inherit);
    outline: none;
}
.necox-sr-wiz-dd-input:focus { border-color: var(--necox-primary, #2A3254); }
.necox-sr-wiz-dd-list {
    max-height: var(--necox-sr-filter-dd-maxh, 260px);
    overflow-y: auto;
    padding: 5px;
    scrollbar-width: thin;
    scrollbar-color: var(--necox-primary, #2A3254) transparent;
}
.necox-sr-wiz-dd-list::-webkit-scrollbar { width: 7px; }
.necox-sr-wiz-dd-list::-webkit-scrollbar-thumb { background: var(--necox-primary, #2A3254); border-radius: 8px; }
.necox-sr-wiz-dd-link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 11px;
    border-radius: 6px;
    color: var(--necox-text, #374151);
    /* v7.16.88 — dropdown ogesi: dd-size > ana metin boyutu (fallback 13.5px) */
    font-size: var(--necox-sr-filter-dd-size, var(--necox-sr-filter-size, 13.5px));
    font-family: var(--necox-sr-filter-font, inherit);
    text-decoration: none;
    cursor: pointer;
}
.necox-sr-wiz-dd-link:hover {
    background: var(--necox-primary, #2A3254);
    color: var(--necox-primary-fg, #fff);
}
.necox-sr-wiz-dd-link.is-sel {
    background: color-mix(in srgb, var(--necox-primary, #2A3254) 16%, transparent);
    font-weight: 700;
}
.necox-sr-wiz-dd-count {
    flex-shrink: 0;
    /* v7.16.88 — sayac: baslik (label) boyutu ile oransal kucuk (fallback 11.5px) */
    font-size: var(--necox-sr-filter-label-size, max(9px, calc(var(--necox-sr-filter-size, 13px) * 0.88)));
    opacity: .65;
}
@keyframes necoxWizChipIn {
    from { opacity: 0; transform: translateX(-10px) scale(.94); }
    to   { opacity: 1; transform: none; }
}

/* ── Fiyat mini-grup (Min/Max) — tek satirda kompakt ── */
.necox-sr-wiz-secondary {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 6px;
}
.necox-sr-wiz-secondary .necox-search__hbar-field--price { min-width: 0; gap: 3px; }
.necox-sr-wiz-secondary .necox-search__hbar-input {
    height: 34px;
    width: 78px;
    /* v7.17.90 — Min/Max SAG BORDER TASMASI FIX: flex item min-width:auto idi →
       dar panelde (Preset 3 sidebar/mobil) 2 input + ayrac + gap field genisligini
       asiyordu (Max input sag border'dan ~40px tasiyordu). min-width:0 → flex-shrink
       calisir, input field'a sigar. (klasik flexbox sag-tasma deseni). */
    min-width: 0;
    /* v7.16.88 — Min/Max: input-size > ana metin boyutu (fallback 12.5px) + ortak font */
    font-size: var(--necox-sr-filter-input-size, var(--necox-sr-filter-size, 12.5px));
    font-family: var(--necox-sr-filter-font, inherit);
}
#necox-sr-wiz-cf-hidden { display: none; }

/* ── Aksiyon MINIMAL: Ara (ikon+kisa) + Temizle (sadece ikon) ── */
.necox-sr-wiz-actions {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto; /* sona it */
    padding-left: 8px;
    border-left: 1px solid var(--necox-border, #e5e7eb);
}
.necox-sr-wiz-search {
    display: inline-flex !important;
    align-items: center;
    gap: 5px;
    height: 34px !important;
    padding: 0 14px !important;
    /* v7.16.88 — Ara butonu da ana filtre boyutu/fontu (fallback 13px) */
    font-size: var(--necox-sr-filter-size, 13px);
    font-family: var(--necox-sr-filter-font, inherit);
    font-weight: 700;
}
.necox-sr-wiz-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--necox-border, #e5e7eb);
    border-radius: var(--necox-sr-filter-radius, 6px);
    background: transparent;
    color: var(--necox-muted, #8a93b2);
    text-decoration: none;
    cursor: pointer;
    transition: all .18s;
}
.necox-sr-wiz-clear:hover {
    border-color: var(--necox-danger, #ef4444);
    color: var(--necox-danger, #ef4444);
    background: color-mix(in srgb, var(--necox-danger, #ef4444) 8%, transparent);
}

/* ════════════════════════════════════════════════════════════════
   MOBIL (<=767px) — HER BASAMAK TAM-GENISLIK AYRI SATIR (kullanici karari).
   Il / Ilce / Ilan Tipi / her kategori chip / her CF chip / aktif dropdown /
   Fiyat = ALT-ALTA tam genislik (mockup-MOBIL). Desktop'un yan-yana yapisi DEGIL.
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
    .necox-sr-wiz { padding: 12px; border-radius: 14px; }
    /* Form DIKEY: her child (field/chain/secondary/actions) tam genislik alt-alta.
       row yonunde flex:1 1 100% bile baska item'larla daraliyordu (chain 104px) -> column. */
    .necox-sr-wiz .necox-search__hbar-form {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
    }

    /* Il/Ilce/Tip tam genislik */
    .necox-sr-wiz-field { min-width: 0; width: 100%; flex: 0 0 auto; }
    .necox-sr-wiz-field--ilce {
        max-width: none;
        min-width: 0;
        max-height: 0;
        transition: max-height .4s cubic-bezier(.4,0,.2,1), opacity .3s;
    }
    .necox-sr-wiz-field--ilce.show { max-height: 80px; min-width: 0; }

    /* Kategori/CF zinciri = DIKEY (her basamak tam genislik alt-alta) */
    .necox-sr-wiz-chain {
        width: 100%;
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
        padding-top: 0;
        /* v8.3.295 — KATEGORI KUTUSUNDAN TASAN KOYU CUBUK FIX (kullanici: "kategorilerde
           acilan dropdownlar select alanindan gorece daha uzun" + ekran: kutunun sag
           ustunden koyu cubuk tasiyor).
           KOK: masaustu kuralinda `overflow-x:auto` var (uzun zincir TEK SATIRDA yatay
           kaysin diye). CSS kurali: overflow-x:auto -> overflow-y'yi de OTOMATIK auto
           yapar. Mobilde zincir DIKEY (flex-direction:column) oldugundan icerik dikey
           tasar -> overflow-y:auto devreye girer -> DIKEY SCROLLBAR cizilir. Cubugun
           rengi = ::-webkit-scrollbar-thumb (var(--necox-primary) #2A3254 koyu lacivert,
           ekrandaki cubukla birebir). Mobil blok flex-direction'i eziyordu ama overflow'u
           EZMEYI ATLAMIS.
           FIX: mobilde yatay kaydirmaya GEREK YOK (her basamak zaten tam genislik, alt
           alta) -> overflow'u kapat, scrollbar cizilmez. Masaustu yatay-kayma AYNEN kalir. */
        overflow: visible;
    }
    .necox-sr-wiz-chain-ico { display: none; } /* dikeyde ikon gereksiz */
    .necox-sr-wiz-arrow { display: none; }      /* dikeyde ok gereksiz */
    /* Her chip + aktif basamak TAM GENISLIK (inline-flex -> flex, ekrana yayil) */
    .necox-sr-wiz-step,
    .necox-sr-wiz-pick {
        display: flex;
        width: 100%;
        margin-top: 4px; /* ust baslik icin bosluk */
    }
    .necox-sr-wiz-step { justify-content: space-between; } /* govde sol, × sag */
    .necox-sr-wiz-step-lab { flex: 1; height: 46px; justify-content: flex-start; }
    .necox-sr-wiz-x { height: 46px; }
    .necox-sr-wiz-pick-toggle { width: 100%; height: 46px; justify-content: space-between; }

    /* Dropdown mobilde tam genislik (host'a degil ekrana gore) */
    .necox-sr-wiz-dd { left: 8px; right: 8px; min-width: 0; max-width: none; width: auto; }

    /* Fiyat tam genislik */
    .necox-sr-wiz-secondary { width: 100%; }
    .necox-sr-wiz-secondary .necox-search__hbar-field--price { flex: 1; min-width: 0; }
    /* v7.17.90 — min-width:0 ile flex-shrink garanti (Max input sag tasmasi fix) */
    .necox-sr-wiz-secondary .necox-search__hbar-input { flex: 1; width: auto; min-width: 0; height: 44px; }

    /* Ara/Temizle tam genislik satir (Ara genis, Temizle yaninda) */
    .necox-sr-wiz-actions {
        width: 100%;
        margin-left: 0;
        padding-left: 0;
        border-left: 0;
    }
    .necox-sr-wiz-search { flex: 1; height: 48px !important; padding: 0 22px !important; }
    .necox-sr-wiz-clear { width: 48px; height: 48px; flex-shrink: 0; }
}

/* ── Liste Ogeleri (Preset 2, 3) ── */
/* v3.88.0 Faz 5b: K2 variable destekli list-item (Preset 2 ve 3 ortak) */









/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.5.4 — PRESET 2 ZENGİN LİSTE-ITEM (ad-card paritesi)
   ribbons, ad type badge, condition, ad no, kategori, tarih,
   görüntülenme, action butonları. Sadece Preset 2 scope'lu.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* Thumb wrapper — overlay'ler icin position:relative
   v7.5.5: height kalktirildi, align-self:stretch ile kart yuksekligine kadar buyur.
   v7.5.6: 120 -> 140px (kullanici "biraz genislet").
   v7.6.4: K2 sr_list_thumb_size'a baglandi. min-height oran sabit (4:3 ~0.78). */

/* Info kolonu */

/* v7.5.6: necox_render_ribbons('card') uretiyor:
   .necox-ad-card__ribbons (wrapper, position-class ile pozisyon) — Preset 2'de
   thumb-wrap icine basildigi icin ad-card'in kendi absolute pozisyonu ile dogru
   yere oturur. Tek mudahale: liste-item dar alan icin font-size + padding kompaktlasir. */

/* Baslik — multi-line allow + ellipsis 2 satir
   v7.6.4: font-size K2 sr_list_title_size'a baglandi. */

/* Fiyat — kendi satirinda
   v7.6.4: font-size K2 sr_list_price_size'a baglandi. */

/* Meta satiri — kategori/konum/tarih/views/adno
   v7.6.4: font-size K2 sr_list_meta_size'a baglandi. */

/* v7.7.9 — Meta ogeleri SVG ikon stillemesi (cat/loc/date/views + adno).
   Onizleme panelindeki .necox-search__preview-meta-row paterniyle gorsel paritesi. */

/* Action butonlari satiri */
/* v7.13.3 — Preset 1 action-pill paritesi + ekstra hareket.
   Cam efekt + blur + box-shadow (Preset 1 paritesi), hover'da lift + glow,
   aktif state'te puls, SVG hover'da scale (mikro animasyon). */
@keyframes necox-list-action-pulse {
    0%, 100% { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12), 0 0 0 0 color-mix(in srgb, var(--necox-primary, #2A3254) 40%, transparent); }
    50%      { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12), 0 0 0 6px color-mix(in srgb, var(--necox-primary, #2A3254) 0%, transparent); }
}

/* v7.7.1 — Action butonu "secili" state (favori/raporla/karsilastir).
   Preset bazli kullanici tercihli renkler:
     - editorial_light / super_light: preset'in KOYU rengi (primary)
     - ocean_deep: preset'in ACIK rengi (primary lighter)
     - midnight_blue: SARI #FFCC04 (kullanici tercihi)
   Compare butonu (.necox-cmp-btn.is-active) compare.css'te kendi rengini
   tasiyor (preset --necox-primary'ye baglanir); buradaki kural list-action
   ve preview-action butonlarinin favori/raporla state'i icin. Compare zaten
   bu cascade'e dahil — !important sirasi compare.css ile uyumlu. */
.necox-search__preview-action.is-active {
    background: var(--necox-primary, #111) !important;
    color: var(--necox-primary-fg, #fff) !important;
    border-color: var(--necox-primary, #111) !important;
    transform: scale(1.05);
    animation: necox-list-action-pulse 1.8s ease-in-out infinite;
}

/* Preset bazli override — body class'i uzerinden cascade */
.necox-preset-ocean-deep .necox-search__preview-action.is-active,
.necox-preset-ocean-deep .necox-cmp-btn.is-active {
    background: #48cae4 !important;
    border-color: #48cae4 !important;
    color: #001525 !important;
}
.necox-preset-super-light .necox-search__preview-action.is-active,
.necox-preset-super-light .necox-cmp-btn.is-active {
    background: #b37555 !important;
    border-color: #b37555 !important;
    color: #ffffff !important;
}
.necox-preset-editorial-light .necox-search__preview-action.is-active,
.necox-preset-editorial-light .necox-cmp-btn.is-active {
    background: #2A3254 !important;
    border-color: #2A3254 !important;
    color: #ffffff !important;
}
.necox-preset-midnight-blue .necox-search__preview-action.is-active,
.necox-preset-midnight-blue .necox-cmp-btn.is-active {
    background: var(--necox-primary) !important;
    border-color: var(--necox-primary) !important;
    color: #0a0e1a !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.5.4 — ÖNİZLEME PANELİ ZENGİN FORMAT
   v7.5.5 — Media wrap overflow:hidden (ribbon tasma fix) + body esit padding
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-search__preview-media {
    position: relative;
    overflow: hidden;
}
.necox-search__preview-body {
    padding: var(--necox-sr-preview-padding, 20px);
}
/* v7.17.68 — KONUM BIRLIGI (kullanici karari): badge'ler KARTTAKI ile birebir ayni
   koesede dursun + admin konumu degisince OTOMATIK takip etsin. Eski yaklasim
   (wrapper SABIT konum left:10 / right:10 + ic badge static) konumu DONDURUYOR,
   admin ad-type'i sag-ust / promo'yu sol-ust yapsa onizleme yine sol/sag kaliyordu
   = TERS/sabit. COZUM: wrapper'lari TUM medyaya yay (inset:0, konumsuz konteyner),
   IC badge/ribbon KENDI pozisyon class'ini (--top-left/--top-right/--bottom-* +
   --horizontal/--vertical) KORUSUN -> absolute'u medya kutusuna gore uygulanir,
   kartla AYNI kose + admin degisince otomatik. */
.necox-search__preview-ribbons,
.necox-search__preview-type-badge {
    position: absolute;
    inset: 0;
    pointer-events: none; /* wrapper tiklamayi yutmasin; badge zaten dekoratif */
    z-index: 2;
}
/* Ic wrapper/badge: kart-icindeki gibi medya kutusuna gore konumlanir (kendi
   --top-left/--top-right class'i gecerli). Profil/kart ile birebir paritede. */
.necox-search__preview-ribbons .necox-ad-card__ribbons,
.necox-search__preview-type-badge .necox-ad-card__badge {
    pointer-events: auto;
}
.necox-search__preview-condition {
    position: absolute;
    bottom: 10px;
    left: 10px;
    background: rgba(0,0,0,0.7);
    color: #fff;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
}
/* v7.17.70 — MOCKUP YERLESIMI (kullanici referansi). Eski 2-sutun gri grid
   (.preview-meta-grid) KALDIRILDI (views yalniz kaliyordu). Yeni akis: eyebrow
   kategori (ust) -> baslik -> aciklama -> fiyat -> konum (kendi satiri) -> alt
   meta tek satir (tarih . views . ilan-no pill). preview-body dikey, sol-hizali. */
.necox-search__preview-meta-row {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--necox-text, #374151);
    font-size: 12px;
}
.necox-search__preview-meta-row svg {
    color: var(--necox-muted, #6b7280);
    flex-shrink: 0;
}
.necox-search__preview-meta-row span {
    color: var(--necox-text, #374151);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Eyebrow: kategori en ustte, kucuk harf-arali soluk etiket (mockup OTOMOBIL). */
.necox-search__preview-eyebrow {
    margin-bottom: 6px;
}
.necox-search__preview-eyebrow span {
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--necox-muted, #6b7280);
}
/* Konum: kendi satiri, ust/alt nefes. */
.necox-search__preview-meta-loc {
    margin: 8px 0;
}
/* v7.17.71 — Alt meta: tarih SOLA YASLI . goruntuleme TAM ORTADA . ilan-no SAGA
   YASLI (kullanici net). 3'lu grid 1fr auto 1fr: sol sutun sola, orta sutun
   merkeze (gercek orta, space-between DEGIL), sag sutun saga hizalanir. */
.necox-search__preview-meta-foot {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}
.necox-search__preview-meta-foot .necox-search__preview-meta-date  { justify-self: start; }
.necox-search__preview-meta-foot .necox-search__preview-meta-views { justify-self: center; }
.necox-search__preview-meta-foot .necox-search__preview-meta-adno  { justify-self: end; }
.necox-search__preview-meta-foot .necox-search__preview-meta-row {
    font-size: 11.5px;
    color: var(--necox-muted, #6b7280);
}
.necox-search__preview-meta-foot .necox-search__preview-meta-row span {
    color: var(--necox-muted, #6b7280);
    font-weight: 500;
}
/* Ilan no: soluk pill/rozet (mockup'taki gri kapsul). */
.necox-search__preview-meta-adno span {
    background: var(--necox-bg-soft, #f3f4f6);
    color: var(--necox-muted, #6b7280);
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.02em;
}
/* v7.17.71b — CTA TEK SATIR (kullanici net: Ilana Git alt satira INMESIN, action'larla
   AYNI satirda en sagda). Action butonlari SOLDA esit-genislik, Ilana Git SAGDA saga
   yasli. Buton: ikon SOLDA + yazi YANINDA kucuk punto. */
.necox-search__preview-cta-row {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}
/* Action grubu kalan alani alir (Ilana Git sabit), icinde 4 buton esit boler. */
.necox-search__preview-actions {
    display: flex;
    gap: 6px;
    margin-bottom: 0;
    flex: 1 1 auto;
    min-width: 0;
}
.necox-search__preview-action {
    /* ESIT GENISLIK: 4 buton grubu esit boler (flex:1, hepsi ayni genislik). */
    flex: 1 1 0;
    min-width: 0; /* esit bolme + ic ellipsis icin */
    height: 32px;
    padding: 0 3px;
    border: 1px solid var(--necox-border, #e5e7eb);
    background: var(--necox-white, #fff);
    border-radius: 6px;
    cursor: pointer;
    color: var(--necox-text, #374151);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    transition: all 0.15s;
}
.necox-search__preview-action svg {
    width: 12px;
    height: 12px;
    flex-shrink: 0; /* ikon kuculmez; yazi sigar */
}
/* v7.17.71c — Yazi COK KUCUK punto (kullanici net), esit-genislik kutuya sigar
   -> 4 buton + Ilana Git TEK satira oturur, Ilana Git alta INMEZ. */
.necox-search__preview-action {
    gap: 3px;
}
.necox-search__preview-action span {
    font-size: 9px;
    font-weight: 500;
    line-height: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* Ilana Git: TEK satir icinde SAGDA, sabit genislik (kullanici "cok buyuk" demisti
   -> makul 130px), action grubu kalan alani alir. */
.necox-search__preview-cta-row .necox-search__preview-link {
    flex: 0 0 auto;
    width: 116px;
    text-align: center;
}
.necox-search__preview-action:hover {
    border-color: var(--necox-primary, #2A3254);
    color: var(--necox-primary, #2A3254);
}

/* ── Onizleme Paneli (Preset 2) ── */
/* v3.84.0 Faz 2.9: K2 sr_preview_bg/border/radius */
/* v3.88.0 Faz 5b: K2 sr_preview_title_color + price_color + padding eklendi */
.necox-search__preview {
    border: 1px solid var(--necox-sr-preview-border, var(--necox-border, var(--necox-border)));
    border-radius: var(--necox-sr-preview-radius, 10px);
    background: var(--necox-sr-preview-bg, var(--necox-white));
    overflow: hidden;
}

.necox-search__preview-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 300px;
    color: var(--necox-muted, var(--necox-muted));
    gap: 8px;
    text-align: center;
    padding: 20px;
    font-size: 13px;
}

.necox-search__preview-img {
    width: 100%;
    aspect-ratio: 16/10;
    object-fit: cover;
}

/* v7.5.5: padding kaldirildi — preview-media tam genislikte, preview-body kendi paddingiyle.
   Eski tek-katmanli yapida 20px her seyi sariyordu, media kenardan icerideydi. */
.necox-search__preview-content { padding: 0; }

/* v7.17.70 — MOCKUP: baslik kalin/buyuk, TEK SATIR ellipsis (mockup'ta "...") */
.necox-search__preview-title {
    font-size: 17px;
    font-weight: 700;
    color: var(--necox-sr-preview-title, var(--necox-heading, #1a1a2e));
    margin: 0 0 6px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* v7.17.70 — MOCKUP: fiyat aciklamadan SONRA (DOM sirasi degisti), ust nefes. */
.necox-search__preview-price {
    font-size: 19px;
    font-weight: 700;
    color: var(--necox-sr-preview-price, var(--necox-primary, var(--necox-primary)));
    margin: 4px 0 0;
}

.necox-search__preview-excerpt {
    font-size: 12.5px;
    color: var(--necox-muted, #6b7280);
    line-height: 1.45;
    margin: 0 0 4px;
    /* v7.17.68 — KOMPAKT: aciklama 2 satira clamp -> dikey yer kazanir. */
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.necox-search__preview-loc {
    font-size: 12px;
    color: var(--necox-muted, var(--necox-muted));
    margin-bottom: 12px;
}

/* ── Harita Paneli (Preset 3) ── */
.necox-search__map {
    width: 100%;
    height: 100%;
    min-height: var(--necox-sr-map-height, 500px);
    border-radius: 10px;
    overflow: hidden;
}

/* ── Sayfalama ── */
.necox-search__pagination {
    margin-top: 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.necox-search__load-more {
    min-width: 200px;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   PRESET 1 — Klasik 2 Kolon
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

.necox-search--preset-1 {
    display: grid;
    grid-template-columns: var(--necox-sr-sidebar-width, 260px) 1fr;
    gap: var(--necox-sr-gap, 24px);
    padding: 24px 0;
    align-items: start;
}

/* v5.15.0 — Preset 1 sticky: her iki taraf bagimsiz sticky.
   Desktop'ta JS hover-bazli swap ile aktif olmayan panel sticky kalir.
   v7.17.48 — SIDEBAR SCROLL FIX (kullanici: "Daha Fazla Ozellik butonundan sonra acilan
   CF'lerde filtre belirli seviyeden sonra asagi inmiyor, en alta/butonlara ULASILAMIYOR").
   KOK NEDEN (canli olcum): sidebar 'max-height:calc(100vh-100px)' + 'overflow-y:auto' ile
   ic-scroll'a hapsediliyordu. Gate ACILINCA icerik 630px->5777px'e cikiyor ama konteyner
   630px'de kalip ic-scroll'a dusuyordu; sticky+ic-scroll kombinasyonu sayfayi uzatmadigi
   icin (sayfa scrollHeight=1170, scrollTo(800)->sadece 8.8px) fare tekerlegi/scroll cubugu
   ile alt CF'lere ulasilamiyordu. Gate'e kadar icerik kisa oldugu icin sorun gizliydi.
   COZUM (sadece sidebar): max-height + ic-scroll KALDIRILDI -> sidebar dogal yuksekligini
   alir, sticky korunur (top:80px), icerik uzunsa SAYFA scroll'uyla dogal kayar -> en alttaki
   CF + Filtrele/Temizle butonlarina HER ZAMAN ulasilir. MAIN panel (sonuc listesi) ic-scroll'da
   kalir (kendi sonsuz-scroll/pagination mantigi var). Sadece desktop (>1024 CSS scope); mobil
   drawer (#necox-mfp-drawer) ayri sistem, ETKILENMEZ. */
.necox-search--preset-1 .necox-search__sidebar {
    position: sticky;
    top: 80px;
    align-self: start;
    /* max-height + overflow-y KALDIRILDI: dogal akis + sayfa scroll'u (sticky korunur). */
}
.necox-search--preset-1 .necox-search__main {
    position: sticky;
    top: 80px;
    align-self: start;
    max-height: calc(100vh - 100px);
    overflow-y: auto;
    /* Scrollbar sade gostersin */
    scrollbar-width: thin;
    /* v8.3.316 (#92/#85 KOK FIX — kullanici repro): hover-swap (search-sticky-hover.js)
       sidebar'a girince main'e overflow-y:hidden basar → scrollbar KALKAR → main ici
       ~scrollbar-genisligi kadar GENISLER → kartlar 1sn "kuculup buyuyor" (sol↔sag
       gecislerinde). Preset 2'de bu YOKTU cunku orada scrollbar-gutter:stable var
       (kullanicinin referansi). AYNI desen: gutter her durumda rezerve → overflow
       auto↔hidden gecisi GENISLIK DEGISTIRMEZ (overflow:hidden da scroll container'dir,
       stable gutter'i korur). Mobil ≤767 overflow-y:visible'a dondugu icin etkilenmez. */
    scrollbar-gutter: stable;
}
.necox-search--preset-1 .necox-search__sidebar::-webkit-scrollbar,
.necox-search--preset-1 .necox-search__main::-webkit-scrollbar {
    width: 6px;
}
.necox-search--preset-1 .necox-search__sidebar::-webkit-scrollbar-thumb,
.necox-search--preset-1 .necox-search__main::-webkit-scrollbar-thumb {
    background: var(--necox-border);
    border-radius: 3px;
}
/* Hover-bazli: aktif panel scroll edilir, digeri sabit kalir.
   JS .necox-search--hover-left / --hover-right class'i sayfaya ekler.
   v7.17.48 — Sidebar artik ic-scroll KULLANMIYOR (dogal akis + sayfa scroll'u) ->
   hover-swap'in sidebar'i kilitlemesi ANLAMSIZ + scroll engeli yaratabilir; sidebar
   kurali kaldirildi. Main panel (ic-scroll'lu) hover-swap'te kalir. */
.necox-search--hover-left.necox-search--preset-1 .necox-search__main {
    overflow-y: hidden;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   PRESET 2 — 3 Kolon Panel
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

.necox-search--preset-2 {
    display: grid;
    /* v7.5.4: 500px -> 460px (kullanici karari "bir tik dusurelim"). Onizleme
       zengin format ile daha kompakt gosterim (meta grid 2 kolon yine sigar). */
    grid-template-columns: calc(var(--necox-sr-sidebar-width, 260px) - 60px) 1fr 460px;
    gap: var(--necox-sr-gap, 20px);
    padding: 24px 0;
    align-items: start;
}

.necox-search__sidebar--compact .necox-filter-sidebar {
    font-size: 12px;
}

/* v7.5.0 — Preset 2: tum 3 panel sticky + scroll-chain.
   Her panel kendi icinde scroll eder; sinira (en ust / en alt) gelince
   overscroll-behavior: auto sayesinde wheel/touch sayfa scroll'una gecer.
   Paneller sticky kaldigi icin sayfa kayarken yerinde gozukmeye devam eder.
   Hover-bazli swap (overflow:hidden ile aktif olmayan paneli kilitleme)
   Preset 2'de KALDIRILDI — scroll-chain ile celisiyor (kilitlenen panel
   sinira gelmis sayilmaz, zincir kopuyordu). Preset 1'de korunuyor.
   v5.15.0'da konulan eski mantik artik Preset 1 ozelinde. */
/* v7.4.13 — MOCK ILE BIREBIR. 10 deneme sonrasi anlasildi: tarayicinin
   dogal wheel/scroll motoru en akici olan; preventDefault + custom scroll
   mantigi her seferinde titreme/zorlama uretti. Mock'taki cozum:
   - position: sticky + max-height (klasik)
   - overscroll-behavior YOK (default auto, dogal chain)
   - JS passive:true, preventDefault YOK, sinirda sadece scrollBy sigorta */
.necox-search--preset-2 .necox-search__sidebar,
.necox-search--preset-2 .necox-search__main {
    position: sticky;
    /* v7.17.24 — TOP BAR eklendi: paneller topbar'in ALTINDAN baslamali (eski top:80px
       topbar'in arkasina giriyordu). topbar sticky top:calc(--necox-header-h - 1px) + topbar
       yuksekligi(~38px) + bosluk -> paneller header+topbar altina. --necox-header-h JS canli. */
    top: calc(var(--necox-header-h, 70px) + 44px);
    align-self: start;
    max-height: calc(100vh - var(--necox-header-h, 70px) - 64px);
    overflow-y: auto;
    scrollbar-width: thin;
    /* v7.16.13 — kartin sol bosluk = sag bosluk (scroll bar HARIC, bar'in baslangicina kadar).
       scrollbar-gutter:stable bar'a kendi yerini verir; sol/sag esit kucuk pay ile
       kartin iki yanindaki GERCEK bos alan esitlenir (scroll bar payi sayilmaz). */
    scrollbar-gutter: stable;
    padding-left: 6px;
    padding-right: 17px;   /* v7.16.13 — kart scroll bar'dan uzak (kullanici tercihi, sol 6 / sag 17) */
}
.necox-search--preset-2 .necox-search__preview {
    position: sticky;
    /* v7.17.68 — HER ZAMAN GORUNUR (kullanici: panel hep ust/altta kalip gozukmuyor):
       top'u sidebar/main ile AYNI hizaya cek (header+44, eski +64 panel'i asagi
       itip alt butonlari viewport disina tasiyordu) + max-height bu hizaya gore
       genislet (100vh - header - 56) -> panel daha cok dikey alan kullanir, kompakt
       icerikle birlikte ic scroll'a gerek kalmaz, tum onizleme tek bakista gorunur.
       Cok uzun icerikte overflow-y:auto ic scroll sigortasi yine kalir (alt buton hep erisilebilir). */
    top: calc(var(--necox-header-h, 70px) + 44px);
    align-self: start;
    max-height: calc(100vh - var(--necox-header-h, 70px) - 56px);
    overflow-y: auto;
}
.necox-search--preset-2 .necox-search__sidebar::-webkit-scrollbar,
.necox-search--preset-2 .necox-search__main::-webkit-scrollbar,
.necox-search--preset-2 .necox-search__preview::-webkit-scrollbar {
    width: 6px;
}
.necox-search--preset-2 .necox-search__sidebar::-webkit-scrollbar-thumb,
.necox-search--preset-2 .necox-search__main::-webkit-scrollbar-thumb,
.necox-search--preset-2 .necox-search__preview::-webkit-scrollbar-thumb {
    background: var(--necox-border);
    border-radius: 3px;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   PRESET 3 — Harita + Liste Split
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

.necox-search--preset-3 {
    display: grid;
    /* v7.11.1 — orta panel (liste) daha kompakt, sag harita daha genis (40%/60%) */
    grid-template-columns: 2fr 3fr;
    gap: 20px;
    /* v7.16.84 — ust ilan karti + harita filtre barina cok yapisikti, 3px nefes. */
    margin-top: 3px;
    padding-bottom: 24px;
    align-items: start;
}
/* v7.16.7 (CLS) — DOM sirasi artik harita ONCE, liste SONRA (preset-3.php).
   Masaustu (>1024) grid'de liste SOL/1.kolon (2fr), harita SAG/2.kolon (3fr) kalsin diye
   order ile DOM tersini geri cevir. Mobil (<=1024) blogunda ikisi de order:0 (DOM dogal).
   NOT: min-width:1025 ile sinirli + spesifiklik mobil order:0 ile cakismaz. */
@media (min-width: 1025px) {
    .necox-search--preset-3 .necox-search__main { order: 1; }
    .necox-search--preset-3 .necox-search__map-panel { order: 2; }
}
/* v7.16.0/1 — Desktop'ta hover-resize ve kompakt kart KAPALI (kullanici karari).
   Desktop sabit zengin kart korunur, tam ekran btn zaten mevcut. */

/* v7.16.1 tablet (769-1024) hover-resize yan-yana blogu KALDIRILDI (P3 harita-binme fix).
   KOK: v7.17.86'nin <=1024 `display:block !important` kok fix'i bu blogun grid'ini oldurdu
   (yorum "mobilde" diyordu ama media <=1024 = tablet de kapsandi). Grid'siz kalan
   `position:sticky !important + height:calc(100vh-100px) !important` kurallari <=1024
   blogundaki dogru degerleri (relative + 350px) eziyordu -> sticky dev harita viewport'a
   yapisiyor, sayfa scroll'unda liste kartlari (DOM'da sonra, z-index'siz) haritanin
   USTUNE cizilerek akiyordu (Playwright kanit: tablet 820px overlap=4, harita merkezinde
   elementFromPoint=necox-ad-card; desktop >1024 temiz overlap=0). Blok kalkinca tablet,
   mobil ile ayni dogru dikey akisa doner: harita ustte 350px relative, liste altta.
   is-map-focus/is-list-focus JS'i (search-page-map-v10.js:1062) null-guard'li -> no-op.
   NOT: Bu blok `sr_preset3_hover_resize`/`necox-search--hover-resize` sinifinin TEK CSS
   tuketicisiydi -> ayar olu; preset-3.php class emisyonu da ayni pakette kaldirildi. */

/* v7.16.0 — Map UI elements (search-here btn, counter) */
/* v7.16.84 — .necox-search__map-search-here ("Bu alanda ara") KALDIRILDI
   (islevsiz olu kod: necoxFilterApply tanimsizdi). HTML + JS de kaldirildi. */

.necox-search__map-counter {
    position: absolute;
    bottom: 14px;
    left: 14px;
    z-index: 500;
    /* v7.16.7 — bg "color-mix(--necox-bg, transparent)" idi, ama --necox-bg
       preset'lerde gradient string (color-mix gradient'le calismaz, sonuc
       rgba(0,0,0,0) cikiyordu). Harita uzerinde counter seffaf duruyordu,
       text okunmuyordu. --necox-glass-bg solid renkli (preset cascade'i),
       toolbar butonlariyla ayni zemin paritesi. */
    background: var(--necox-glass-bg, rgba(17, 24, 39, 0.92));
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid color-mix(in srgb, var(--necox-text, #fff) 8%, transparent);
    color: var(--necox-text, #fff);
    padding: 7px 13px;
    border-radius: 16px;
    font-size: 12px;
    pointer-events: none;
}
.necox-search__map-counter strong { color: var(--necox-primary, #00d4ff); font-weight: 800; }

.necox-search__main--scroll {
    max-height: 600px;
    overflow-y: auto;
    /* v7.16.13 — preset 3 liste: scroll bar yer rezerve + kart sag scroll bar'dan uzak.
       scroll bar payi haric; sol 6 / sag 18 (kullanici tercihi). */
    scrollbar-gutter: stable;
    scrollbar-width: thin;
    padding-left: 6px;
    padding-right: 24px;
}

.necox-search__map-panel {
    position: sticky;
    top: 80px;
    /* v7.8.0 — toolbar/locate/legend absolute pozisyon icin relative + radius */
    border-radius: 8px;
    overflow: hidden;
}
.necox-search__map {
    position: relative;
    /* v7.14.1 — sr_map_height K2 cascade'i (eskiden hardcoded 500px K2'yi eziyordu, FD). */
    min-height: var(--necox-sr-map-height, 500px);
    border-radius: 8px;
    overflow: hidden;
    /* v7.16.3 — Leaflet marker/pane z-index'leri (134/200/400/600) root stacking
       context'e kaciyor, search-drawer (z:99999) acikken drawer ICERIGI uzerine
       cikiyor (drawer arka plani altta ama marker'lar drawer text/link ustunde).
       isolation:isolate ile yeni stacking context olusturulur, Leaflet z'leri
       kapsayicida hapsedilir. */
    isolation: isolate;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.8.0 — HARITA MUCEVHER PAKETI (Preset 3)
   Toolbar (yogunluk/fiyat-isi + sort) + Locate buton + Legend
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* Toolbar — harita ust sol */
.necox-search__map-toolbar {
    position: absolute;
    top: 12px;
    left: 12px;
    right: 12px;
    z-index: 500;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center; /* v7.11.1 — dikey hizalama: sort dropdown butonlarla ayni satirda */
    pointer-events: none;
}
.necox-search__map-toolbar > * { pointer-events: auto; }

/* v7.11.4 — Toolbar buton preset cascade: glass_bg + text + border */
.necox-search__map-toolbar-btn {
    background: var(--necox-glass-bg, rgba(17, 24, 39, 0.92));
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid var(--necox-border, rgba(255,255,255,0.15));
    color: var(--necox-text, #2A3254);
    padding: 0 12px;
    height: 36px; /* v7.11.1 — Sort dropdown ile esit yukseklik (38px -> 36px kompakt) */
    border-radius: 8px;
    cursor: pointer;
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1;
    transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.2s, box-shadow 0.2s;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
    white-space: nowrap;
}
/* v7.8.1 — hidden attribute saygisi (display:flex override fix) */
.necox-search__map-toolbar-btn[hidden] {
    display: none !important;
}
/* v7.11.4 — Hover: primary border + primary text + primary-soft zemin */
.necox-search__map-toolbar-btn:hover {
    background: var(--necox-primary-soft, var(--necox-glass-bg));
    border-color: var(--necox-primary, #2A3254);
    color: var(--necox-primary, #2A3254);
    transform: translateY(-1px);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--necox-primary, #2A3254) 30%, transparent);
}
.necox-search__map-toolbar-btn--active {
    background: var(--necox-primary, #2A3254) !important;
    color: var(--necox-primary-fg, #fff) !important;
    border-color: var(--necox-primary, #2A3254) !important;
}

/* PERF (Adim 7): draw/heat lazy yuklenirken butonda bekleme geri bildirimi */
.necox-search__map-toolbar-btn--loading {
    opacity: 0.6;
    cursor: wait;
    pointer-events: none;
}

/* Sort dropdown — v7.11.4 preset cascade (toolbar btn ile ayni) */
.necox-search__map-sort {
    background: var(--necox-glass-bg, rgba(17, 24, 39, 0.92));
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid var(--necox-border, rgba(255,255,255,0.15));
    color: var(--necox-text, #2A3254);
    padding: 0 28px 0 12px; /* sag tarafta select ok'u icin yer */
    /* v7.16.69 — Filtre alanlari ile ortak boyut/tipografi (fallback = eski deger) */
    height: var(--necox-sr-filter-height, 36px);
    border-radius: 8px;
    cursor: pointer;
    font-size: var(--necox-sr-filter-size, 12.5px);
    font-family: var(--necox-sr-filter-font, inherit);
    font-weight: var(--necox-sr-filter-weight, 400);
    margin-left: auto;
    outline: none;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
    appearance: none;
    -webkit-appearance: none;
    /* v7.11.4 — Ok rengi cascade icin currentColor uyumlu (text rengiyle ayni) */
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'><path d='M1 1l4 4 4-4' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 10px center;
}
.necox-search__map-sort:focus { border-color: var(--necox-primary, #2A3254); }
.necox-search__map-sort option { color: var(--necox-text, #2A3254); background: var(--necox-card-bg, #ffffff); }
.necox-search__map-sort option[disabled] { color: var(--necox-muted, rgba(0,0,0,0.4)); }

/* v8.3.294 — SELECT2 DEVRALDIGI NATIVE <select> HAYALET-TASMA FIX (kullanici: "harita
   ustundeki Sirala kutusu bozuk, arkasindan kesik dev yazi tasiyor").

   KOK (olcum kanitli): Bu 3 sinif (.necox-search__map-sort / .necox-search__hbar-select /
   .necox-sr-wiz-select) NATIVE <select>'in KENDISINDE ve her birine gorunum kurallari
   (height/padding/border/background/appearance) yazilmis. select2 devralinca o select'i
   gizler (.select2-hidden-accessible -> 1x1px kutu) AMA bu kurallar select'e uygulanmaya
   DEVAM ediyor ve gizleme kutusu overflow'u KESMIYOR -> <option> metinleri 1px'lik kutudan
   TASIP sayfaya dokuluyor. Sort'ta canli olcum: kutu w=1 h=1, ama textContent =
   "Sirala: YeniSirala: Fiyat ↓Sir..." -> ekranda haritanin ustune binen kesik dev "Sirala:"
   yazisi. (Gorunur kutu = select2 container; bu native select ARTIK sadece veri tasiyicisi.)

   FIX (kok, yama degil): select2 devraldiginda native select'i GERCEKTEN gorunmez kil —
   gorunum kurallarini sifirla + tasmayi kes. TEK kural 3 sinifi da kapsar.
   ⚠️ display:none YASAK: search-page-map-v10.js bu native select'i okur/yazar ('change'
   handler + nearby option'u enable eder) ve select2 onu senkron tutar; erisilebilirlik
   icin de DOM'da kalmali. Sadece GORSEL olarak notrlestiriyoruz.
   NOT: Gorunur kutularin stili select2 container kurallarindan gelir (v7.16.84/87 sort
   toolbar + .necox-sr-wiz select2) -> GORUNUM DEGISMEZ. */
.necox-search__map-sort.select2-hidden-accessible,
.necox-search__hbar-select.select2-hidden-accessible,
.necox-sr-wiz-select.select2-hidden-accessible {
    padding: 0 !important;
    height: 0 !important;
    min-height: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: none !important;
    background-image: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    overflow: hidden !important;   /* option metinleri 1px kutudan TASMASIN */
    font-size: 0 !important;       /* ek guvence: tasan metin cizilmesin */
    line-height: 0 !important;
    color: transparent !important;
}

/* v7.16.84 — SORT select2 GORUNUM BIRLIGI: native .necox-search__map-sort toolbar-btn'lerle
   esitti (glass-bg/36px/radius8/shadow). select2'ye gecince kapali kutu .necox-search-filter-sel
   stilini (input-bg/radius6/shadow yok) aliyordu -> diger toolbar butonlarindan kopuyordu.
   Bu scope SADECE harita toolbar'indaki select2'yi (Sort) hedefler; Konum/Tip wizard
   select2'sini (.necox-sr-wiz / hbar) ETKILEMEZ. */
/* v7.16.87 — SORT select2 SAGA YASLA + FOUC FIX (kullanici: sayfa yenilenince sort ~40px
   sagda durup yerine geliyor). Native .necox-search__map-sort'ta margin-left:auto VAR (saga
   yaslar) ama select2'ye gecince GORUNEN eleman select2 CONTAINER olur (native 1px'e duser);
   container margin-left:0 -> sort SOLA toplaniyor + init aninda native(sagda)->container(solda)
   kaymasi = FOUC. Cozum: container'a da margin-left:auto -> hem kalici saga yaslanma hem FOUC. */
.necox-search__map-toolbar .select2-container {
    margin-left: auto;
}
.necox-search__map-toolbar .select2-container--default .necox-search-filter-sel.select2-selection--single {
    background: var(--necox-glass-bg, rgba(17, 24, 39, 0.92));
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    border: 1px solid var(--necox-border, rgba(255,255,255,0.15));
    border-radius: 8px;
    height: 36px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.necox-search__map-toolbar .select2-container--default .necox-search-filter-sel.select2-selection--single .select2-selection__rendered {
    color: var(--necox-text, #2A3254);
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1;
}
.necox-search__map-toolbar .select2-container--default .necox-search-filter-sel.select2-selection--single .select2-selection__arrow b {
    border-color: var(--necox-text, #2A3254) transparent transparent transparent;
}

/* Locate buton (sag alt yuvarlak) */
.necox-search__map-locate {
    position: absolute;
    /* v7.16.8.2: Konumum butonu Leaflet zoom kontrolu (bottomright) ile cakisiyordu;
       zoom'un hemen USTUNE (1px bosluk) + YATAY TAM HIZALI alindi. bottom:91px
       (zoom'dan 1px ustte), right:6px (locate 42px / zoom 33px ortalanir -> +/-
       ikonlari ile ayni dikey eksen). */
    bottom: 91px;
    right: 6px;
    z-index: 500;
    width: 42px;
    height: 42px;
    background: var(--necox-primary, #2A3254);
    color: var(--necox-primary-fg, #fff);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4);
    transition: background 0.2s, transform 0.2s;
    border: none;
    padding: 0;
}
.necox-search__map-locate:hover {
    background: var(--necox-primary-hover, var(--necox-primary, #2A3254));
    transform: scale(1.1);
}
.necox-search__map-locate.is-loading { opacity: 0.6; pointer-events: none; }

/* v7.16.8.2: Konum merkezi avatar (locate "Konumum" -> 5km halka ortasi) */
.necox-locate-avatar-wrap { background: transparent; border: none; }
.necox-locate-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--necox-primary, #2A3254);
    box-shadow: 0 2px 10px rgba(0,0,0,0.45);
    background: #fff;
    display: block;
}
/* Avatar yoksa (misafir/404) konum pini fallback */
.necox-locate-pin {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    filter: drop-shadow(0 2px 6px rgba(0,0,0,0.4));
}

/* v7.16.8.2: Locate butonu tooltip'i — buton-OZEL (genel necox-tooltips-on body
   class'ina bagimli DEGIL, her zaman gorunur). "Konumum" butonunun ne yaptigini
   cogu kullanici bilmiyordu. Hover'da ust-sol'da acilir (sag-alt kosede oldugu
   icin ust-sol; ekran disina tasmaz). */
.necox-search__map-locate::after {
    content: attr(data-tt);
    position: absolute;
    bottom: 50%;
    right: calc(100% + 10px);
    transform: translateY(50%);
    background: var(--necox-tt-bg, rgba(28,28,30,0.95));
    color: var(--necox-tt-color, #fff);
    padding: 6px 11px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.3;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.18s ease, visibility 0.18s ease;
    z-index: 1000;
}
.necox-search__map-locate:hover::after {
    opacity: 1;
    visibility: visible;
}

/* Legend (sag alt, fiyat-isi acikken) */
.necox-search__map-legend {
    position: absolute;
    bottom: 12px;
    left: 12px;
    z-index: 500;
    background: rgba(17, 24, 39, 0.92);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    padding: 8px 14px;
    border-radius: 8px;
    border: 1px solid var(--necox-border, rgba(255,255,255,0.15));
    font-size: 11px;
    color: var(--necox-text, #fff);
    display: flex;
    align-items: center;
    gap: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.necox-search__map-legend[hidden] { display: none !important; }
.necox-search__map-legend-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 4px;
    vertical-align: middle;
}
.necox-search__map-legend-dot--cheap { background: var(--necox-success); }
.necox-search__map-legend-dot--mid   { background: var(--necox-warning); }
.necox-search__map-legend-dot--pricy { background: var(--necox-danger); }

/* Pin renkleri (fiyat-isi modunda) */
.necox-search__map-pin--cheap { background: var(--necox-success) !important; color: #fff !important; }
.necox-search__map-pin--mid   { background: var(--necox-warning) !important; color: #fff !important; }
.necox-search__map-pin--pricy { background: var(--necox-danger) !important; color: #fff !important; }
.necox-search__map-pin--free  { background: #9ca3af !important; color: #fff !important; }

/* Floating card (popup icerigi — zengin) */
.leaflet-popup-content-wrapper {
    background: var(--necox-bg, #fff);
    color: var(--necox-text, #1a1a2e);
    border-radius: 12px;
    padding: 0;
    overflow: hidden;
    border: 1px solid var(--necox-primary, #2A3254);
    box-shadow: 0 10px 40px rgba(0,0,0,0.3);
}
.leaflet-popup-content { margin: 0; width: 280px !important; }
.leaflet-popup-tip { background: var(--necox-bg, #fff); }


/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   Harita Popup — Tasarim 5 (masaustu >= 769px)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-map-fc5 {
    width: 280px;
    background: var(--necox-card-bg, #fff);
    /* v7.16.93 — dis bubble wrapper (8px !important) ile esit -> kose beyazligi yok (fc2 ile birlik) */
    border-radius: 8px;
    overflow: hidden;
    border: 1px solid var(--necox-border, #EAEAEA);
    display: flex;
    align-items: stretch;
}
.necox-map-fc5__thumb {
    flex: 0 0 104px;
    width: 104px;
    align-self: stretch;
    overflow: hidden;
    background: var(--necox-border, #EAEAEA);
    position: relative;
}
.necox-map-fc5__thumb img {
    width: 100%; height: 100%;
    object-fit: cover; display: block;
}
.necox-map-fc5__badge {
    position: absolute; top: 7px; left: 7px;
    background: var(--necox-secondary, #FFCC04);
    color: var(--necox-primary, #2A3254);
    font-size: 10px; font-weight: 800;
    padding: 2px 8px; border-radius: 20px;
    letter-spacing: .02em;
}
/* Ocean Deep + Midnight Blue: badge preset primary rengiyle */
.necox-preset-ocean-deep .necox-map-fc5__badge {
    background: var(--necox-primary, #00b4d8);
    color: var(--necox-primary-fg, #001525);
}
.necox-preset-midnight-blue .necox-map-fc5__badge {
    background: var(--necox-primary, #f0b429);
    color: var(--necox-primary-fg, #0a0e1a);
}
.necox-preset-super-light .necox-map-fc5__badge {
    background: var(--necox-primary, #c8896b);
    color: var(--necox-primary-fg, #fff);
}
.necox-map-fc5__body {
    flex: 1; min-width: 0;
    padding: 9px 11px 10px;
    display: flex; flex-direction: column; justify-content: center; gap: 7px;
}
.necox-map-fc5__info { min-width: 0; }
.necox-map-fc5__actions {
    display: flex; align-items: center; gap: 7px;
}
.necox-map-fc5__title {
    font-size: 11px; font-weight: 700; line-height: 1.3;
    color: var(--necox-heading, #2A3254);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; text-overflow: ellipsis;
    margin-bottom: 2px;
}
.necox-map-fc5__price {
    font-size: 14px; font-weight: 800;
    color: var(--necox-primary, #2A3254);
    letter-spacing: -.3px;
}
.leaflet-container a.necox-map-fc5__btn {
    flex: 1;
    background: var(--necox-primary, #2A3254);
    color: var(--necox-primary-fg, #fff);
    border: none; padding: 7px 10px; border-radius: 8px;
    font-size: 11px; font-weight: 700; cursor: pointer;
    white-space: nowrap; font-family: inherit;
    text-decoration: none; display: inline-flex; align-items: center; justify-content: center;
    transition: background .18s;
}
.leaflet-container a.necox-map-fc5__btn:hover { background: var(--necox-primary-hover, #3A4470); color: var(--necox-primary-fg, #fff); }
.necox-map-fc5__fav {
    flex-shrink: 0; background: transparent;
    border: 1.5px solid var(--necox-primary, #2A3254);
    width: 30px; height: 30px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; color: var(--necox-primary, #2A3254);
    transition: background .18s, color .18s;
}
.necox-map-fc5__fav:hover {
    background: var(--necox-primary, #2A3254);
    color: var(--necox-primary-fg, #fff);
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   Harita Popup — Tasarim 2 (mobil <= 768px)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-map-fc2 {
    /* v7.16.93 — KOK NEDEN FIX (kullanici: kapat dugmesi altinda/saginda BEYAZ BOSLUK,
       "bazen" oluyor). fc2 width:240px idi AMA .leaflet-popup-content width:280px (minWidth
       240/maxWidth 280 -> Leaflet bazen 280 ayarliyor) -> kart 240, kapsayici 280 -> sagda
       40px wrapper bg (beyaz) gorunuyordu + Leaflet kapat dugmesi (content kosesinde) kartin
       DISINDA kaliyordu. Cozum: fc2 width:100% -> kapsayici ne olursa (240/280) TAM doldurur,
       bosluk yok, kapat dugmesi kart sag-ust kosesine oturur. */
    width: 100%;
    box-sizing: border-box;
    background: var(--necox-card-bg, #fff);
    /* v7.16.93 — RADIUS ESITLENDI (kullanici: ic kart 14px > dis bubble 8px -> her kosede
       hafif beyazlik). Dis .leaflet-popup-content-wrapper border-radius:8px !important
       (search-results.css:183) ile AYNI -> kose beyazligi biter. */
    border-radius: 8px;
    overflow: hidden;
    display: flex;
    border: 1px solid var(--necox-border, #EAEAEA);
}
.necox-map-fc2__thumb {
    flex: 0 0 88px; height: 88px;
    overflow: hidden; background: var(--necox-border, #EAEAEA);
}
.necox-map-fc2__thumb img { width:100%; height:100%; object-fit:contain; display:block; }
.necox-map-fc2__body {
    flex: 1; padding: 10px 11px;
    display: flex; flex-direction: column; justify-content: space-between; min-width: 0;
}
.necox-map-fc2__title {
    font-size: 12px; font-weight: 700;
    color: var(--necox-heading, #2A3254);
    line-height: 1.3; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis; margin-bottom: 2px;
}
.necox-map-fc2__price {
    font-size: 14px; font-weight: 800;
    color: var(--necox-primary, #2A3254); letter-spacing: -.3px;
}
.necox-map-fc2__footer {
    display: flex; align-items: center;
    justify-content: space-between; margin-top: 7px; gap: 6px;
}
.leaflet-container a.necox-map-fc2__link {
    font-size: 11px; font-weight: 700;
    color: var(--necox-primary-fg, #fff);
    background: var(--necox-primary, #2A3254);
    text-decoration: none; padding: 5px 10px; border-radius: 7px;
    display: inline-flex; align-items: center; gap: 3px;
    transition: background .18s;
}
.leaflet-container a.necox-map-fc2__link::after { content: '→'; }
.leaflet-container a.necox-map-fc2__link:hover { background: var(--necox-primary-hover, #3A4470); color: var(--necox-primary-fg, #fff); }
.necox-map-fc2__fav {
    background: transparent;
    border: 1.5px solid var(--necox-primary, #2A3254);
    width: 28px; height: 28px; border-radius: 7px;
    cursor: pointer; color: var(--necox-primary, #2A3254);
    display: flex; align-items: center; justify-content: center;
    transition: background .18s, color .18s; flex-shrink: 0;
}
.necox-map-fc2__fav:hover {
    background: var(--necox-primary, #2A3254);
    color: var(--necox-primary-fg, #fff);
}
/* Cluster customization — v7.11.3 outer halka + ic dolgu preset cascade */
.marker-cluster-small,
.marker-cluster-medium,
.marker-cluster-large {
    background: color-mix(in srgb, var(--necox-primary, #2A3254) 35%, transparent) !important;
}
.marker-cluster-small div {
    background: var(--necox-primary, #2A3254) !important;
    color: var(--necox-primary-fg, #fff) !important;
    font-weight: 700;
}
.marker-cluster-medium div {
    background: var(--necox-primary-hover, #3A4470) !important;
    color: var(--necox-primary-fg, #fff) !important;
    font-weight: 700;
}
.marker-cluster-large div {
    background: var(--necox-danger) !important;
    color: #fff !important;
    font-weight: 700;
}
/* v7.11.3 — Cluster hover'da primary'ye dogru parlama */
.marker-cluster:hover div {
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--necox-primary, #2A3254) 30%, transparent);
}

/* Pulse animasyon (konumum halkasi) */
.necox-pulse {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(240,180,41,0.4) 0%, rgba(240,180,41,0) 70%);
    animation: necox-pulse 2s infinite ease-out;
    pointer-events: none;
}
@keyframes necox-pulse {
    0%   { transform: scale(0.5); opacity: 1; }
    100% { transform: scale(2);   opacity: 0; }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.8.1 — POLYGON CIZ + ANIMASYON CILASI (Faz 3)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* Polygon mode aktif iken harita uzerinde "crosshair" cursor */
.necox-search__map--drawing,
.necox-search__map--drawing .leaflet-container {
    cursor: crosshair !important;
}

/* Leaflet.draw varsayilan toolbar gizli (kendi toolbar'imizdan kontrol ediyoruz) */
.leaflet-draw-toolbar,
.leaflet-draw-section { display: none !important; }

/* Polygon stillemesi */
.leaflet-interactive[stroke="#f0b429"] {
    filter: drop-shadow(0 2px 6px rgba(240,180,41,0.4));
}

/* "Temizle" butonu (--clear modifier) — kirmizi tonlu */
.necox-search__map-toolbar-btn--clear:not([hidden]) {
    background: rgba(239, 68, 68, 0.92) !important;
    color: #fff !important;
    border-color: rgba(239, 68, 68, 0.92) !important;
}
.necox-search__map-toolbar-btn--clear:hover {
    background: rgba(220, 38, 38, 0.95) !important;
    border-color: rgba(220, 38, 38, 0.95) !important;
}

/* ── Pin drop animasyonu (yukaridan inerek belirir) ── */
.necox-search__map-pin-wrap {
    animation: necox-pin-drop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) backwards;
}
/* Stagger: ilk 20 pin icin sirayla gelir */
.necox-search__map-pin-wrap:nth-child(1)  { animation-delay: 0.00s; }
.necox-search__map-pin-wrap:nth-child(2)  { animation-delay: 0.03s; }
.necox-search__map-pin-wrap:nth-child(3)  { animation-delay: 0.06s; }
.necox-search__map-pin-wrap:nth-child(4)  { animation-delay: 0.09s; }
.necox-search__map-pin-wrap:nth-child(5)  { animation-delay: 0.12s; }
.necox-search__map-pin-wrap:nth-child(6)  { animation-delay: 0.15s; }
.necox-search__map-pin-wrap:nth-child(7)  { animation-delay: 0.18s; }
.necox-search__map-pin-wrap:nth-child(8)  { animation-delay: 0.21s; }
.necox-search__map-pin-wrap:nth-child(9)  { animation-delay: 0.24s; }
.necox-search__map-pin-wrap:nth-child(10) { animation-delay: 0.27s; }
.necox-search__map-pin-wrap:nth-child(n+11) { animation-delay: 0.30s; }

@keyframes necox-pin-drop {
    from {
        transform: translateY(-30px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* Pin hover — glow + lift */
.necox-search__map-pin {
    transition: transform 0.2s ease-out, box-shadow 0.2s ease-out, filter 0.2s ease-out;
}
/* v7.11.3 — Glow preset primary'sinin yari saydam hali */
.necox-search__map-pin:hover {
    transform: translateY(-3px) scale(1.08);
    box-shadow: 0 6px 16px color-mix(in srgb, var(--necox-primary, #2A3254) 50%, transparent),
                0 0 0 4px color-mix(in srgb, var(--necox-primary, #2A3254) 15%, transparent);
    z-index: 1000;
}

/* Heatmap fade (heat layer'in canvas'ina opacity transition) */
.leaflet-heatmap-layer {
    transition: opacity 0.3s ease-in-out;
}

/* Floating card fade-in (v7.16.8.2 Sivas fix 5): Eskiden animasyon transform:
   translateY kullaniyordu. AMA Leaflet popup'in KONUMUNU da transform:translate3d
   ile ayarlar -> animasyonun transform'u Leaflet'inkini EZER -> popup yanlis yerde
   (translateY) baslayip Leaflet'in gercek konumuna "kayar" (spiderfy'da pin merkezden
   uzak oldugu icin cok belirgin: "sol'dan kendi yerine kayma" BUG). COZUM: animasyonu
   transform'dan arindir, sadece OPACITY ile fade-in yap. Leaflet'in konum transform'una
   dokunma -> popup ILK seferde dogru yerde acilir, kayma YOK. .leaflet-popup-content-wrapper
   uzerine translateY uygulanir (popup konumunu degil, ic icerigi animeler). */
.leaflet-popup {
    animation: necox-popup-fade 0.25s ease-out;
}
@keyframes necox-popup-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
.leaflet-popup-content-wrapper {
    animation: necox-popup-rise 0.25s ease-out;
}
@keyframes necox-popup-rise {
    from { transform: translateY(15px); }
    to   { transform: translateY(0); }
}

/* Cluster bubble — hover'da hafif buyur */
.marker-cluster {
    transition: transform 0.2s ease-out;
}
.marker-cluster:hover {
    transform: scale(1.1);
}

/* v7.9.2 — Pin popup aktifken pin'i pulse (canli "konusuyor" his) */
.necox-search__map-pin--talking {
    animation: necox-pin-talking 1.6s ease-out infinite;
}
@keyframes necox-pin-talking {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(240, 180, 41, 0.5),
                    0 3px 10px rgba(0,0,0,0.4);
    }
    50% {
        box-shadow: 0 0 0 12px rgba(240, 180, 41, 0),
                    0 3px 10px rgba(0,0,0,0.4);
    }
}

/* v7.9.3 — Liste item hover sonrasi pin highlight (talking'den daha hafif) */
.necox-search__map-pin--hover {
    transform: scale(1.2);
    box-shadow: 0 0 0 6px rgba(240, 180, 41, 0.25),
                0 6px 16px rgba(240, 180, 41, 0.4) !important;
    z-index: 1000;
    animation: necox-pin-hover-glow 1.2s ease-in-out infinite alternate;
}
@keyframes necox-pin-hover-glow {
    from { box-shadow: 0 0 0 6px rgba(240, 180, 41, 0.2),
                       0 6px 16px rgba(240, 180, 41, 0.3); }
    to   { box-shadow: 0 0 0 10px rgba(240, 180, 41, 0.1),
                       0 8px 20px rgba(240, 180, 41, 0.5); }
}

/* Mobilde polygon butonu gizle (touch input karmasik) */
@media (max-width: 768px) {
    .necox-search__map-toolbar-btn--draw,
    .necox-search__map-toolbar-btn--clear {
        display: none !important;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.9.0 — TAM EKRAN HARITA MODU
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* v8.3.296 — TAM EKRAN MOBILDE ZOOM SCALER'IN ALTI EKRAN DISINDA KALIYORDU
   (kullanici: "mobil haritada tam ekran yapinca scaler'in asagi kismi sayfada
   gozukmuyor" — ekran: "+" yarim, "-" hic yok).
   KOK: 100vh MOBIL TARAYICIDA YANILTICIDIR — adres cubugu + alt gezinme cubugunu
   HESABA KATMAZ (cubuklar GIZLIYKEN ki tam yuksekligi verir). Cubuklar gorunurken
   harita gercek gorunur alandan UZUN olur, alti ekranin altina tasar; zoom kontrolu
   (bottom ile haritanin dibine yaslidir) onunla birlikte asagi kayip KESILIR.
   FIX: 100dvh (dynamic viewport height) = mobil cubuklarini hesaba katan gercek
   gorunur yukseklik. 100vh fallback olarak ONCE yazilir (dvh desteklemeyen eski
   tarayici eski davranisi alir; Chrome 108+/Safari 15.4+/FF 101+ = 2022+ destekli). */
.necox-search__map-panel--fullscreen {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    height: 100vh !important;   /* fallback (eski tarayici) */
    height: 100dvh !important;  /* mobil: adres/gezinme cubugu dahil gercek yukseklik */
    z-index: 9999 !important;
    border-radius: 0 !important;
    animation: necox-map-fs-in 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
.necox-search__map-panel--fullscreen .necox-search__map {
    height: 100vh !important;   /* fallback */
    height: 100dvh !important;
    width: 100vw !important;
    border-radius: 0 !important;
}
.necox-search__map-panel--fullscreen .necox-search__map-toolbar {
    /* v7.12.4 — kullanici geri donusu: 20 -> 40px. Hem /ilan-ara/ Preset 3
       hem Hero widget icin ayni kural - admin bar + estetik bosluk icin. */
    top: 40px;
    left: 20px;
    right: 20px;
}
.necox-search__map-panel--fullscreen .necox-search__map-locate {
    /* v7.16.8.5: Tam ekranda locate, Leaflet zoom kontrolu (bottomright) ile
       cakisiyordu -> zoom'un USTUNE alindi (bottom:93px). Ikisi de sagdan 20px
       iceride (scrollbar/kenar payi). locate right:20px. Zoom dikey eksen
       hizalamasi icin zoom margin-right asagida override edilir. */
    bottom: 93px;
    right: 20px;
    width: 52px;
    height: 52px;
}
/* Tam ekranda Leaflet zoom kontrolunu locate ile dikey eksende ortala + iceri al:
   locate(52px) merkezi sagdan 20+26=46px. zoom(33px) merkezi 46px icin
   margin-right = 46 - 33/2 = ~29.5px.
   .leaflet-right ekli: Leaflet'in kendi .leaflet-right .leaflet-control margin'ini
   (spec 0,2,0) yenmek icin spec 0,3,0. */
.necox-search__map-panel--fullscreen .leaflet-right .leaflet-control-zoom {
    margin-right: 30px;
}
.necox-search__map-panel--fullscreen .necox-search__map-legend {
    bottom: 20px;
    left: 20px;
}
/* v8.3.296 — Tam ekranda zoom scaler HARITANIN EN DIBINE yaslidir (Leaflet default
   bottom:0 + kucuk margin) -> mobilde cihazin alt gezinme/gesture cubugunun altina
   denk gelip KESILIYOR. Alt pay + safe-area ver (dvh fix'iyle birlikte calisir:
   dvh gorunur alani dogru olcer, bu margin de cubuktan uzak tutar).
   ⚠️ Bu blok legend/locate kurallarindan SONRA gelmeli (ayni spesifiklik -> sonraki
   kazanir; oncesine konursa yukaridaki bottom:20px/93px onu EZER).
   locate zaten zoom'un USTUNDE (bottom:93px) -> ayni safe-area kadar yukari alinir,
   aralarindaki dikey iliski KORUNUR. Masaustu etkilenmez. */
@media (max-width: 767px) {
    .necox-search__map-panel--fullscreen .leaflet-bottom .leaflet-control-zoom {
        margin-bottom: calc(18px + env(safe-area-inset-bottom, 0px));
    }
    .necox-search__map-panel--fullscreen .necox-search__map-locate {
        bottom: calc(111px + env(safe-area-inset-bottom, 0px)); /* 93 + 18 */
    }
    .necox-search__map-panel--fullscreen .necox-search__map-legend {
        bottom: calc(20px + env(safe-area-inset-bottom, 0px));
    }
}

@keyframes necox-map-fs-in {
    from {
        clip-path: inset(20% 20% 20% 20% round 12px);
        opacity: 0.7;
    }
    to {
        clip-path: inset(0% 0% 0% 0% round 0px);
        opacity: 1;
    }
}

/* Body class: fullscreen aktifken sayfa scroll'unu kilitle */
body.necox-map-fullscreen-active {
    overflow: hidden;
}

/* Tam ekran modunda fullscreen butonu kirmizi (cikis) */
.necox-search__map-panel--fullscreen .necox-search__map-toolbar-btn--fullscreen {
    background: rgba(239, 68, 68, 0.92);
    color: #fff;
    border-color: rgba(239, 68, 68, 0.92);
}

/* Klavye kisayolu ipucu (fullscreen modunda alt orta) */
.necox-search__map-panel--fullscreen::after {
    content: 'WASD: hareket  ·  +/−: zoom  ·  H: yoğunluk  ·  F: fiyat ısısı  ·  G: konumum  ·  D: alan çiz  ·  ESC: çıkış';
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(17, 24, 39, 0.92);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: rgba(255,255,255,0.7);
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 11px;
    z-index: 500;
    pointer-events: none;
    border: 1px solid rgba(255,255,255,0.1);
    white-space: nowrap;
    animation: necox-fs-hint-fade 4s ease-out 1s forwards;
}
@keyframes necox-fs-hint-fade {
    0%, 60% { opacity: 1; }
    100%    { opacity: 0.4; }
}
.necox-search__map-panel--fullscreen:hover::after {
    opacity: 0.8;
}

/* Mobilde fullscreen butonu olsun ama klavye ipucu gizli */
@media (max-width: 768px) {
    .necox-search__map-panel--fullscreen::after {
        display: none;
    }
}

/* CANLI AKTIVITE BUBBLE CSS — v7.16.8.25'te header.css'e tasindi.
   Sebep: search-results.css sadece /ilan-ara/'da yukleniyor; bubble tum
   sitede gorunur olmali. header.css her sayfada yukleniyor. */


/* Mobil: toolbar kompakt profesyonel hava — butun elemanlar esit gorsel agirlik. */
@media (max-width: 768px) {
    .necox-search__map-toolbar {
        gap: 5px;
    }
    /* v7.16.5 — Tipografi + padding inceltildi (12->10.5, 6/10 -> 4/8),
       yukseklik 36->28, SVG ikonlar 14->12. Profesyonel-kibar gorsel. */
    .necox-search__map-toolbar-btn {
        font-size: 10.5px;
        padding: 4px 8px;
        height: 28px;
        gap: 4px;
        letter-spacing: 0.1px;
    }
    .necox-search__map-toolbar-btn svg {
        width: 12px;
        height: 12px;
    }
    /* v7.16.90 — Mobil toolbar TEK SATIR (kullanici tasarimi):
       - Tam Ekran = SADECE IKON + EN SAGA yasla (margin-left:auto, order ile sona).
       - Sirala = Tam Ekran'in eski yerine (order ile Tam Ekran'dan ONCE).
       - Yogunluk/Fiyat Isisi/Alan Ciz = metin KUCULTULDU (gizlenmedi), dar padding.
       Boylece hepsi + Sort tek satira sigar. */
    .necox-search__map-toolbar { flex-wrap: nowrap; }
    .necox-search__map-toolbar-btn {
        font-size: 9px;
        padding: 4px 6px;
        gap: 3px;
        min-width: 0;
    }
    .necox-search__map-toolbar-btn span {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    /* Tam Ekran: sadece ikon + en saga */
    .necox-search__map-toolbar-btn--fullscreen {
        order: 10;
        margin-left: auto;
        width: 30px;
        padding: 4px;
        justify-content: center;
        flex-shrink: 0;
    }
    .necox-search__map-toolbar-btn--fullscreen span { display: none; }
    /* Sirala (select2 container): Tam Ekran'dan once (eski yerine) */
    .necox-search__map-toolbar .select2-container { order: 9; }
    /* Native <select> (select2-hidden): flex item olarak yer kaplayip alt satira sariyordu
       (w:1px hayalet) -> order ver + akistan cikar (mutlak, 0 alan). select2 onu zaten
       gorsel gizliyor; burada layout'tan da cikariyoruz. */
    .necox-search__map-toolbar .necox-search__map-sort.select2-hidden-accessible {
        position: absolute !important;
        width: 1px !important;
        height: 1px !important;
        overflow: hidden;
        clip: rect(0 0 0 0);
        order: 9;
    }
    /* Sirala SELECT — diger butonlarla esit yukseklik/font, dar padding. */
    /* v7.16.69 — mobilde de panel tipo/boyut ayari gecerli (fallback = eski mobil deger) */
    .necox-search__map-sort {
        margin-left: 0;
        width: auto;
        min-width: 0;
        font-size: var(--necox-sr-filter-size, 10.5px);
        padding: 0 20px 0 8px;
        height: var(--necox-sr-filter-height, 28px);
        background-position: right 6px center;
    }
    /* v7.16.90 — FOUC FIX (kullanici: Sort sayfa yenilenince ~2sn BUYUK gorunup kuculuyor):
       select2 init gecikmesinde (LiteSpeed JS-delay) native <select> 50px gorunup sonra
       28px select2'ye donusuyordu = ziplama. Init ONCESI (henuz select2-hidden degil)
       native select'i select2'nin son boyutuna SABITLE -> ayni boyut, ziplamaz. */
    .necox-search__map-sort:not(.select2-hidden-accessible) {
        height: 28px !important;
        max-width: 120px;
        box-sizing: border-box;
        border-radius: 8px;
    }
    /* v7.16.90 — KOK NEDEN (Sort alt satira sarip saga yasli, kullanici gorseli): v87'de
       eklenen ".necox-search__map-toolbar .select2-container { margin-left:auto }" TUM
       boyutlarda Sort'u saga itiyordu -> mobilde dar toolbar'da alt satira + saga yasli.
       Mobilde margin-left:0 (butonlarla bitisik) + select2 kutusu/yukseklik butonlarla
       esit + dar genislik -> butonlarla TEK SATIRA sigar (kullanici karari: butonlari
       kucult tek satir). */
    .necox-search__map-toolbar .select2-container {
        margin-left: 0 !important;
        max-width: 120px;
    }
    .necox-search__map-toolbar .select2-container--default .necox-search-filter-sel.select2-selection--single {
        height: 28px;
        font-size: 10.5px;
    }
    .necox-search__map-toolbar .select2-container--default .necox-search-filter-sel.select2-selection--single .select2-selection__rendered {
        font-size: 10.5px;
        padding-left: 8px;
        padding-right: 18px;
    }
}

/* v5.15.0 — Preset 3: ust yatay filtre bar her zaman sticky (klasik) */
.necox-search__hbar {
    position: sticky;
    /* v7.16.84 — top:70px HARDCODED idi -> gercek header yuksekligiyle eslesmeyince
       bar header'a tam yapismiyordu. --necox-header-h JS (main.js/header.js) header
       offsetHeight'ini canli yazar. -1px overlap sub-pixel acigini yutar (mimari kural). */
    top: calc(var(--necox-header-h, 70px) - 1px);
    z-index: 50;
    background: var(--necox-white, #fff);
    /* Bar arka planı page bg'den belli olsun ki scroll'da uste yapışınca yamali gozukmesin */
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   RESPONSIVE
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

@media (max-width: 1024px) {
    /* v6.5.6 (T1) — Tablette Preset 1 sidebar gizlenir (FAB drawer sistemi devreye girer).
       Eski 220px sikisik sidebar kullanilamiyordu (Select2/cascade sigmiyordu).
       Tek kolon grid + FAB ile filtre erisimi tutarli olur (mobil ile ayni UX). */
    .necox-search--preset-1 {
        grid-template-columns: 1fr;
    }
    .necox-search--preset-1 .necox-search__sidebar {
        display: none;
    }

    /* v6.5.6 (T2) — Preset 2 sidebar zaten gizli, grid'i tek kolona indir.
       Sag preview paneli ayri kuralla mobilde de gizlenir (satir 881). */
    .necox-search--preset-2 {
        grid-template-columns: 1fr 280px;
    }
    .necox-search--preset-2 .necox-search__sidebar {
        display: none;
    }
    .necox-page-search-results .necox-search--preset-3,
    .necox-search--preset-3 {
        /* v7.12.6 — !important: preset-3.php inline style "grid-template-columns: 40fr 60fr;"
           yaziyor (admin K2 sr_preset3_list_width/_layout_preset'ten), bu mobile'da CSS rule'unu
           yener. Bu eski bir bug, hem /ilan-ara/ hem widget'i etkiliyor. Mobile'da tek-kolon
           zorunlu — inline'i kirar.
           v7.17.86 — KOK NEDEN FIX (kullanici: mobilde kart VE harita sag border'dan tasiyor,
           "cok buyuk"). `grid-template-columns:1fr !important` TEK BASINA YETMIYORDU: grid
           container yine `display:grid` kalip 446.95px sabit sutun uretiyor, icindeki harita+
           liste+kartlar viewport'u (390px) asiyordu (Playwright CDP: search=342 ama main/map/
           kart=447px). KOK COZUM: mobilde grid'i TAMAMEN iptal et (`display:block`) -> tek-kolon
           dogal akis, harita+kart parent'a (342px) oturur. Playwright kaniti: kartTasan 8->0,
           mapTasan true->false, mapW 447->342. + .necox-page-search-results ile specificity
           artirildi (inline 40fr 60fr'yi kesin yener). */
        display: block !important;
        grid-template-columns: 1fr !important;
    }
    /* v7.16.7 (CLS) — Siralama artik DOM ile cozuldu (preset-3.php: harita ONCE, liste SONRA).
       Mobilde DOM dogal sirasi zaten harita-ust/liste-alt oldugu icin 'order'a GEREK YOK.
       Eski order:1/2 kurallari kaldirildi: order GEC gelen CSS ile uygulaninca liste ~300px
       asagi kayip CLS 0.358 uretiyordu (Playwright kaniti, 502->802). DOM sirasi ilk paint'te
       kesin oldugu icin shift sifir. order:0 ile her ihtimale karsi notr birakilir. */
    .necox-search--preset-3 .necox-search__map-panel { order: 0; }
    .necox-search--preset-3 .necox-search__main      { order: 0; }
    .necox-search__map-panel {
        /* v7.16.4 — sticky kapali (mobile/tablet tek-kolon scroll), ama
           toolbar/locate/legend absolute pozisyonlu child'lar icin anchor
           olusturmali. position:static iken absolute child viewport'a
           yapisip header altinda gozukuyordu (tespit Playwright).
           v7.16.6 — top:80px sticky default'undan miras kaldi, mobile'da
           panel'i 80px asagi kaydirip altindaki main (ilan listesi) ile
           cakistiriyordu. Sonuc: legend + locate + ilan-sayisi gibi panel
           dibindeki overlay'ler alttaki kart fotosu uzerinde gozukuyordu.
           top:0 ile cakisma cozulur, panel grid hucresinde dogru oturur. */
        position: relative;
        top: 0;
        height: 350px;
    }
    .necox-search__map { min-height: 350px; }
    .necox-search__main--scroll { max-height: none; }

    /* v5.15.0 — Tablet: hover-bazli swap kapali, klasik sticky devam.
       Her panel kendi sticky'sini korur (her iki taraf bagimsiz scroll).
       v7.5.0: Preset 2 hover-swap'i tamamen kalktigi icin sadece Preset 1
       override'lari kaldi. */
    .necox-search--hover-left,
    .necox-search--hover-right { /* hover class'lari etkisiz */ }
    .necox-search--hover-left.necox-search--preset-1 .necox-search__main,
    .necox-search--hover-right.necox-search--preset-1 .necox-search__sidebar {
        overflow-y: auto; /* hover-bazli kisitlamayi iptal et */
    }
}

@media (max-width: 767px) {
    /* v6.5.6 — Preset 1 grid + sidebar zaten ≤1024px blogunda gizlendi.
       Mobil burada sadece full-grid 1fr + map yukseklik + sticky kapatma. */
    /* v7.12.6 — Preset 3 mobile tek-kolon (yedek defansif, ≤1024 zaten yapiyor)
       v7.17.86 — display:block ile grid tamamen iptal (bkz ≤1024 blogu kok neden). */
    .necox-page-search-results .necox-search--preset-3,
    .necox-search--preset-3 {
        display: block !important;
        grid-template-columns: 1fr !important;
    }

    /* v7.12.8 — Pagination mobile sigmiyor + "Daha Fazla Yukle" yarisi gozukmuyor.
       Numara butonlari (1,2,3,..,7) 356px sigamiyordu, parent 302px - load-more 200px da
       parent disinda kaliyordu (margin/center hesabi yanlis). FIX: flex-wrap + center align,
       load-more full-width butonu kendi satirinda. */
    .necox-pagination__list {
        flex-wrap: wrap;
        justify-content: center;
    }
    .necox-search__load-more {
        width: 100%;
        max-width: none;
        padding: 12px 24px;
        min-height: 44px;
        font-size: 14px;
    }

    /* v7.12.8 — Preset 2/3 liste item mobile = Preset 1 grid kart gorunumu.
       Desktop'ta yatay (sol resim + sag icerik) kaliyor. Mobile'da DUSEY (ust resim full + alt icerik).
       Tek degisiklik: flex-direction column + thumb full-width + aspect-ratio 4/3 (Preset 1 .necox-ad-card
       resim ile birebir paralel). HTML degismez, sadece CSS. Tum action butonlari, favori/raporla
       efektleri, hover davranislari aynen calismaya devam eder. */

    .necox-search--preset-2 .necox-search__preview {
        display: none;
    }
    /* v7.14.4 — Mobile'da preview gizli AMA grid hala 1fr 280px'i miras aliyor (≤1024 kurali).
       Grid template'i tek kolon olarak override et, yoksa liste 255px'e sikisir, kart kucuk
       gozukur (Playwright audit'inde tespit edildi: searchGridTemplate "255.175px 280px").
       v7.17.86 — KOK NEDEN FIX (kullanici: Preset 2 mobilde kartlar sag border'dan tasiyor,
       "cok buyuk"). `grid-template-columns:1fr !important` TEK BASINA YETMIYORDU: grid container
       yine `display:grid` kalip 446.95px sabit sutun uretiyor -> kartlar viewport'u (390px) asiyor
       (Playwright: Preset 2 mobil 8 kart tasan, maxR 464 > 390). Preset 3 ile AYNI sorun/cozum.
       KOK COZUM: mobilde grid'i TAMAMEN iptal et (`display:block`) -> tek-kolon dogal akis. */
    .necox-page-search-results .necox-search--preset-2,
    .necox-search--preset-2 {
        display: block !important;
        grid-template-columns: 1fr !important;
    }
    /* v7.14.5 — Mobile'da Preset 2/3 ad-card list-view thumb full-width.
       sr_list_thumb_size K2 alani desktop'ta 160-280px arasi mantikli (yatay yapi),
       mobile'da flex-direction:column oldugu icin thumb ustte ve kucuk gozukur.
       Mobile'da thumb sayfa genisligini doldurmali (Preset 1 grid kart paritesi). */
    .necox-search--preset-2 .necox-ad-card--list .necox-ad-card__media,
    .necox-search--preset-3 .necox-ad-card--list .necox-ad-card__media {
        width: 100% !important;
    }
    /* v7.16.63 — Tespit: mobilde Preset 2/3 ilan karti genisligi = Preset 1 (342px paritesi).
       Preset 2/3 main konteyneri kendi yan padding'ini birakir -> kartlar Preset 1'den dar
       kaliyordu (301/319 vs 342). Main padding'i sifirla + kart full-width -> ayni genislik. */
    .necox-search--preset-2 .necox-search__main,
    .necox-search--preset-3 .necox-search__main {
        padding-left: 0;
        padding-right: 0;
        /* KOK NEDEN: __main overflow-y:auto + scrollbar-gutter:stable -> tarayici
           scrollbar icin 11px ayiriyordu, kartlar 342->331 daraliyordu. Mobilde
           panel-ici scroll GEREKSIZ (sayfa zaten dogal dikey scroll). Scrollbar
           payini kaldir -> kart Preset 1 ile tam 342px hizali. */
        overflow: visible;
        scrollbar-gutter: auto;
    }
    /* .necox-search__list ic sarmalayicisi flex/grid item olarak shrink ediyor ->
       11px dar kaliyordu (342 yerine 331). flex hesabini iptal + tam genislik zorla. */
    .necox-search--preset-2 .necox-search__list,
    .necox-search--preset-3 .necox-search__list {
        padding-left: 0;
        padding-right: 0;
        margin-left: 0;
        margin-right: 0;
        width: 100%;
        max-width: 100%;
        flex: 1 1 100%;
        box-sizing: border-box;
        align-self: stretch;
        /* v7.16.63 — Kart arasi gap = Preset 1 (16px). __list gap'i K2 degiskeni
           --necox-sr-list-item-gap (DB'de 8px) ile satir ~2517'de set ediliyor;
           mobilde o degiskeni Preset 1 grid gap'i (16px) ile esitle. !important
           cunku ayni-ozgullukteki sonraki kural (2517) aksi halde ezerdi. */
        gap: var(--necox-sr-gap, 16px) !important;
    }
    .necox-search--preset-2 .necox-sr-card--m,
    .necox-search--preset-3 .necox-sr-card--m {
        width: 100%;
        max-width: 100%;
        margin-bottom: 0; /* gap __list'ten gelir, cift bosluk olmasin */
    }
    .necox-search__hbar-form {
        flex-direction: column;
        align-items: stretch;
    }
    .necox-search__hbar-field { min-width: 100%; }
    /* v7.16.68 — Mobil Preset 3 filtre: keyword alani diger input'larla ayni 38px AMA
       gorsel olarak biraz dar duruyordu -> kullanici istegi +4px (42px) nefes alsin.
       (Sadece keyword; konum/kategori/fiyat 38px kalir.) */
    .necox-search__hbar-form input[name="keyword"] {
        height: 42px;
    }
    /* v7.16.68 — Mobil Ara butonu cok dar (47px, sol-kucuk) idi -> SAGA yasli + YARIM
       genislik (kullanici istegi). KOK NEDEN: global ".necox-btn { margin-right:auto }"
       (price-drops.css:171 notu) butonu SOLA yasliyordu; benim margin-left:auto ile
       birlesince ORTALANIYORDU. FIX: margin-right:0 (global'i ez) + margin-left:auto
       (column flex'te butonu SAGA iter) + align-self:flex-end. */
    .necox-search__hbar-submit {
        align-self: flex-end !important;
        margin-left: auto !important;
        margin-right: 0 !important;
        width: 50%;
        min-width: 140px;
        height: 42px;
    }
    .necox-search__cards {
        grid-template-columns: 1fr !important;
    }
    /* v7.16.63 — Tespit: mobilde harita yuksekligi = en yuksek Preset 1 ilan karti (405px).
       Harita Preset 1 ilan kartiyla ayni yukseklikte dursun (kart paritesi). */
    .necox-search__map-panel { height: 405px; }
    .necox-search__map { min-height: 405px; height: 405px; }

    /* v5.15.0 — Mobil: tum sticky kapali (tek-kolon scroll dogal akiş) */
    .necox-search--preset-1 .necox-search__main,
    .necox-search--preset-2 .necox-search__main,
    .necox-search--preset-2 .necox-search__preview,
    .necox-search__hbar {
        position: static;
        max-height: none;
        overflow-y: visible;
        top: auto;
    }

    /* v6.3.0 — Eski .necox-search__mobile-filter-btn kaldirildi.
       Mobil filtre paneli artik bagimsiz #necox-mfp-fab + #necox-mfp-drawer
       sistemine devredildi (CSS bu dosyanin en altinda). */
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
/* v6.3.0 — MOBIL FILTRE PANELI (Drawer + FAB Buton, ZIP 1) */
/* v6.4.0 — Gorsel zenginlestirme (gradient, cam, resim, golge,*/
/* overlay blur), drawer header/body, FAB hover/tipografi.     */
/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* CSS variable defaults — admin K2'den override edilir */
:root {
    /* ZIP 1 — temel davranis + kabuk + FAB temel */
    --necox-mfp-width: 85%;
    --necox-mfp-height: 80%;
    --necox-mfp-anim-duration: 300ms;
    --necox-mfp-overlay-color: #000000;
    --necox-mfp-overlay-opacity: 0.50;
    --necox-mfp-panel-bg: #ffffff;
    --necox-mfp-panel-border-color: transparent;
    --necox-mfp-panel-border-width: 0;
    --necox-mfp-panel-radius: 0;
    --necox-mfp-panel-padding: 16px;
    /* v6.5.9 - FAB CSS variables (--necox-mfp-fab-size, -bg, -color) KALDIRILDI. */

    /* ZIP 2 — drawer kabuk gelismis */
    --necox-mfp-panel-bg-alpha: 1;            /* 0..1 — solid BG'ye alpha (cam KAPALI iken) */
    --necox-mfp-glass-blur: blur(0);          /* cam acikken backdrop-filter degeri */
    --necox-mfp-glass-bg: transparent;        /* cam acikken yarim saydam katman */
    --necox-mfp-panel-gradient: none;         /* gradient acikken linear-gradient(...) */
    --necox-mfp-panel-bg-image: none;         /* arka plan resmi acikken url(...) */
    --necox-mfp-panel-bg-size: cover;
    --necox-mfp-panel-bg-repeat: no-repeat;
    --necox-mfp-panel-bg-position: center center;
    --necox-mfp-panel-shadow: 0 0 24px 0 rgba(0,0,0,0.15);
    --necox-mfp-overlay-blur: blur(0);

    /* ZIP 2 — drawer header */
    --necox-mfp-header-bg: transparent;
    --necox-mfp-header-title-color: inherit;
    --necox-mfp-header-close-color: inherit;
    --necox-mfp-header-padding: 12px;
    --necox-mfp-header-border-color: rgba(0,0,0,0.08);
    --necox-mfp-header-font-family: inherit;
    --necox-mfp-header-font-size: 16px;
    --necox-mfp-header-font-weight: 600;

    /* ZIP 2 — drawer body */
    --necox-mfp-body-bg: transparent;
    --necox-mfp-body-padding: 16px;
    --necox-mfp-body-label-font-family: inherit;
    --necox-mfp-body-label-font-size: 13px;
    --necox-mfp-body-label-font-weight: 500;
    --necox-mfp-body-label-color: inherit;

    /* v6.5.9 - FAB gelismis CSS variables (--necox-mfp-fab-hover-*, -border-*,
       -font-*, -letter-spacing) KALDIRILDI. ZIP 4B'de yerine --necox-mft-* gelecek. */

    /* ZIP 3 — drawer footer + buton + sayac + easing */
    --necox-mfp-anim-easing: ease-out;
    --necox-mfp-footer-bg: rgba(255, 255, 255, 0.96);
    --necox-mfp-footer-padding: 12px;
    --necox-mfp-footer-border-color: rgba(0, 0, 0, 0.08);
    --necox-mfp-footer-border-width: 1px;
    --necox-mfp-apply-bg: var(--necox-primary, #2271b1);
    --necox-mfp-apply-color: #ffffff;
    --necox-mfp-apply-radius: 6px;
    --necox-mfp-apply-padding-y: 12px;
    --necox-mfp-reset-bg: transparent;
    --necox-mfp-reset-color: inherit;
    --necox-mfp-reset-border-color: rgba(0, 0, 0, 0.15);
    --necox-mfp-counter-font-size: 14px;
    --necox-mfp-counter-color: inherit;
}

/* v6.5.6 — Sadece masaustu (≥1025px): drawer + trigger sistemi tamamen gizli */
/* v6.5.9 — .necox-mfp-fab cikarildi (FAB tamamen silindi) */
/* v6.6.0 — .necox-mft-wrap + overlay masaustunde gizli (mobil @media display:block ile acilir). */
/* v7.17.23 — KRITIK: .necox-mfp-drawer bu gruptan AYRILDI! display:none->visibility:hidden
   degisikligi gruba uygulaninca .necox-mft-wrap (Filtreleri Goster butonu) da visibility:hidden
   olup mobilde GORUNMEZ kaldi (kullanici: "Filtreleri Goster butonu gorunmuyor"). wrap+overlay
   ESKI display:none davranisinda kalir (mobil @media display:block override eder). */
.necox-mft-wrap,
.necox-mfp-overlay {
    display: none;
}
/* v7.17.23 — SADECE drawer: display:none -> visibility:hidden (ilk-tik fix). display:none ->
   is-open(transform) gecisinde ilk tikta transition tetiklenmiyordu ("ilk tik olu, 2. tik acar").
   Artik drawer DAIMA DOM'da; kapaliyken visibility:hidden+pointer-events:none, is-open'da gorunur. */
.necox-mfp-drawer {
    visibility: hidden;
    pointer-events: none;
}

/* v6.5.6 — Mobile + Tablet (≤1024px): drawer sistemi aktif.
   Eski breakpoint ≤767px idi; tablette sidebar 220px sikisik kaliyordu (T1) ve
   Preset 2'de tamamen kayboluyordu (T2). Tablette de FAB drawer ile filtre
   erisilir hale getirildi (mobil ile ayni UX). */
@media (max-width: 1024px) {

    /* v6.5.9 — FAB CSS BLOKLARI TAMAMEN KALDIRILDI. v6.6.0 ile yerini .necox-mft aldi. */

    /* ─── v6.6.0 — Mobil/Tablet Trigger Buton (.necox-mft) ─── */
    /* Wrapper (breadcrumb altinda, sayfa marginleri ile hizali) */
    .necox-mft-wrap {
        display: block;  /* masaustu display:none'i override eder */
        margin: 12px 0 16px 0;
        /* v7.17.5 — padding:0 16px butonu kart kenarindan 16px ICERIDE birakiyordu
           (buton 310px, kart 342px). Wrapper ZATEN kartla ayni genislikte (342px,
           parent grid kenarinda) -> padding'i KALDIR ki buton kart genisligine yayilsin
           (kullanici: Filtreleri Goster genisligi = ilan karti). */
        padding: 0;
    }

    /* Buton — preset uyumlu CSS variable cascade fallback:
       admin verirse mfp_trigger_*, vermezse sr_filter_btn_* (preset),
       o da yoksa --necox-primary, son care #2271b1 */
    .necox-mft {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        padding: 12px 18px;
        border: 0;
        cursor: pointer;
        line-height: 1;
        font-family: inherit;
        font-size: 14px;
        font-weight: 500;
        /* v7.14.10 — MFT cascade direkt primary'e bagli (sr-filter-btn-bg orphan'lardan kacar).
           Filtre form submit butonundan ayri kimlikte — preset karakteristik vurgu rengi. */
        background: var(--necox-mft-bg, var(--necox-primary, #2271b1));
        color: var(--necox-mft-color, var(--necox-primary-fg, #ffffff));
        border-radius: var(--necox-mft-radius, 8px);
        transition: transform 0.15s ease, opacity 0.15s ease, background 0.18s ease, color 0.18s ease;
    }
    .necox-mft:active {
        transform: scale(0.98);
    }
    .necox-mft:hover {
        opacity: 0.92;
    }

    /* Tam genislik */
    .necox-mft-wrap--full-width {
        /* v7.17.5 — padding 0 16px butonu kart kenarindan 16px iceride birakiyordu;
           --full-width class'i daha spesifik oldugu icin genel .necox-mft-wrap{padding:0}'i
           EZIYORDU = asil suclu. Sifirla -> buton kart genisligine yayilir (kullanici:
           Filtreleri Goster genisligi = ilan karti, kenarlari hizali). */
        padding: 0;
    }
    .necox-mft--full-width {
        width: 100%;
    }

    /* Ikon ve metin */
    .necox-mft__icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }
    .necox-mft__icon svg {
        width: 18px;
        height: 18px;
    }
    .necox-mft__text {
        white-space: nowrap;
    }

    /* ─── v6.6.1 — Inline Mode (Adifier mantigi - akordeon) ─── */
    /* Mode = inline iken trigger butonun altinda sidebar form akordeon olarak
       acilir/kapanir. DOM tasima YOK, drawer hic acilmaz. JS sadece sidebar
       wrapper'a .is-open class swap yapar; CSS max-height transition ile slide. */

    /* Inline mode aktifken: sidebar mobilde gozuksun (mevcut display:none override).
       Body'ye .necox-mft-inline-mode class JS tarafindan eklenir (sayfa yuklenince
       trigger data-mode="inline" ise). */
    body.necox-mft-inline-mode .necox-search--preset-1 .necox-search__sidebar,
    body.necox-mft-inline-mode .necox-search--preset-2 .necox-search__sidebar {
        display: block;
    }

    /* Inline akordeon — kapali state (default) */
    body.necox-mft-inline-mode .necox-filter-sidebar {
        max-height: 0;
        overflow: hidden;
        opacity: 0;
        padding-top: 0;
        padding-bottom: 0;
        margin-top: 0;
        margin-bottom: 0;
        transition: max-height 0.32s ease-out, opacity 0.22s ease-out, padding 0.22s ease-out, margin 0.22s ease-out;
    }

    /* Inline akordeon — acik state */
    body.necox-mft-inline-mode .necox-filter-sidebar.is-open {
        max-height: 9999px;
        opacity: 1;
        padding-top: 8px;
        padding-bottom: 8px;
    }

    /* Inline mode: sidebar wrapper margin'lari sayfa kenarlarina yapismayalim */
    body.necox-mft-inline-mode .necox-search--preset-1 .necox-search__sidebar,
    body.necox-mft-inline-mode .necox-search--preset-2 .necox-search__sidebar {
        margin: 0 16px 16px 16px;
    }

    /* Inline mode trigger butonu acikken kucuk gorsel ipucu (icon dondurme istege bagli) */
    .necox-mft--mode-inline[aria-expanded="true"] .necox-mft__icon svg {
        transform: rotate(180deg);
        transition: transform 0.22s ease-out;
    }
    .necox-mft--mode-inline .necox-mft__icon svg {
        transition: transform 0.22s ease-out;
    }

    /* ━━━ v7.15.1 INLINE MODE LAYOUT FIX ━━━
       Sorun: search wrapper + sidebar/results paralel sticky kaliyor.
       Inline mode'da sidebar accordion acilinca ilanlar yan tarafta kalip
       cakisma yapiyor (kullanici raporlanan bug).
       Cozum: Inline mode aktifken sticky devre disi + block layout zorla.
       Sidebar accordion acilinca ilanlar dogal sekilde asagi itilir. */
    body.necox-mft-inline-mode .necox-search,
    body.necox-mft-inline-mode .necox-search__sidebar,
    body.necox-mft-inline-mode .necox-search__main,
    body.necox-mft-inline-mode .necox-search__results,
    body.necox-mft-inline-mode .necox-search__wrap {
        position: static !important;
        top: auto !important;
    }
    /* Inline mode'da search wrapper artik flex/grid degil block — sidebar ust, ilanlar alt */
    body.necox-mft-inline-mode .necox-search--preset-1,
    body.necox-mft-inline-mode .necox-search--preset-2 {
        display: block !important;
        grid-template-columns: none !important;
    }
    body.necox-mft-inline-mode .necox-search--preset-1 .necox-search__sidebar,
    body.necox-mft-inline-mode .necox-search--preset-2 .necox-search__sidebar {
        width: 100% !important;
        max-width: 100% !important;
        flex: none !important;
    }
    body.necox-mft-inline-mode .necox-search--preset-1 .necox-search__main,
    body.necox-mft-inline-mode .necox-search--preset-2 .necox-search__main {
        width: 100% !important;
        max-width: 100% !important;
        flex: none !important;
        margin-top: 0;
    }

    /* ─── Overlay (drawer arkasi) ─── */
    .necox-mfp-overlay {
        position: fixed;
        inset: 0;
        z-index: 9998;
        background: var(--necox-mfp-overlay-color);
        opacity: 0;
        visibility: hidden;
        transition: opacity var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing), visibility var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing);
        display: block;
        /* v6.4.0 — Backdrop blur (admin'den ayarlanabilir, default blur(0)) */
        backdrop-filter: var(--necox-mfp-overlay-blur);
        -webkit-backdrop-filter: var(--necox-mfp-overlay-blur);
    }
    .necox-mfp-overlay.is-open {
        opacity: var(--necox-mfp-overlay-opacity);
        visibility: visible;
    }

    /* v6.5.0 — Overlay animasyonu drawer'dan ayri tetiklensin (mfp_overlay_anim_separate).
       Acilirken: overlay once goruner (delay yok), drawer ~50ms sonra slide eder.
       Kapanirken: drawer once kayar, overlay ~80ms sonra fade eder. Kademeli efekt. */
    body.necox-mfp-overlay-separate .necox-mfp-drawer {
        transition-delay: 50ms;  /* acilirken drawer biraz geri */
    }
    body.necox-mfp-overlay-separate .necox-mfp-overlay {
        transition-delay: 0ms;
    }
    /* Kapanirken (is-open YOK iken) tersine cevir: overlay geri, drawer once */
    body.necox-mfp-overlay-separate .necox-mfp-drawer:not(.is-open) {
        transition-delay: 0ms;
    }
    body.necox-mfp-overlay-separate .necox-mfp-overlay:not(.is-open) {
        transition-delay: 80ms;
    }

    /* ─── Drawer Panel (kabuk) ─── */
    .necox-mfp-drawer {
        position: fixed;
        z-index: 9999;
        background: var(--necox-mfp-panel-bg);
        border-color: var(--necox-mfp-panel-border-color);
        border-style: solid;
        border-width: 0;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
        display: flex;
        flex-direction: column;
        visibility: hidden;
        /* v7.14.7 — WP admin bar varsa drawer onun altinda baslar ki kapat butonu
           ve baslik admin bar'in altina sigmasin. Admin bar mobile'da 46px, desktop'ta 32px.
           body.admin-bar selector ile kosullu (WP otomatik ekler login durumunda). */
    }
    body.admin-bar .necox-mfp-drawer {
        top: 46px;
        height: calc(100% - 46px);
    }
    body.admin-bar .necox-mfp-overlay {
        top: 46px;
        height: calc(100% - 46px);
    }
    @media screen and (min-width: 783px) {
        body.admin-bar .necox-mfp-drawer {
            top: 32px;
            height: calc(100% - 32px);
        }
        body.admin-bar .necox-mfp-overlay {
            top: 32px;
            height: calc(100% - 32px);
        }
    }

    /* v6.4.0 — Drawer BG efekt onceligi: cam > resim > gradient > solid+alpha
       CSS K-43 patterni: state-class'lar sira ile soldan saga override eder.
       En genel solid BG en altta, en spesifik (cam) en ustte. */

    /* 1. Solid + alpha (cam KAPALI, resim/gradient yokken) */
    .necox-mfp-drawer {
        background-color: var(--necox-mfp-panel-bg);
    }

    /* 2. Gradient (cam KAPALI, resim YOK iken) — gradient solid BG'yi gizler */
    .necox-mfp-drawer {
        background-image: var(--necox-mfp-panel-gradient);
    }

    /* 3. Arka plan resmi (cam KAPALI iken) — gradient ustune binebilir
       (kullanici hem gradient hem resim acarsa: resim ustte sari ozellikleri ile) */
    .necox-mfp-drawer--has-bg-image {
        background-image: var(--necox-mfp-panel-bg-image), var(--necox-mfp-panel-gradient);
        background-size: var(--necox-mfp-panel-bg-size);
        background-repeat: var(--necox-mfp-panel-bg-repeat);
        background-position: var(--necox-mfp-panel-bg-position);
    }

    /* 4. Cam efekti (en yuksek oncelik — solid/gradient/resim'in ustune yarim
       saydam katman + backdrop-filter blur uygular) */
    .necox-mfp-drawer--glass {
        background-color: var(--necox-mfp-glass-bg);
        background-image: none;          /* gradient/resim cam aciksa gizlenir */
        backdrop-filter: var(--necox-mfp-glass-blur);
        -webkit-backdrop-filter: var(--necox-mfp-glass-blur);
    }

    /* v6.4.0 — Solid BG icin alpha uygulamak icin trick:
       Modern tarayicilarda color-mix kullanilabilir, ama eski tarayicilara
       fallback icin once display'in opacity yontemi kullaniyoruz: panel BG
       solid renkken --necox-mfp-panel-bg-alpha 0..1 arasi olabilir. Cam /
       gradient / resim acilirsa bu kural gormezden gelinir. */
    .necox-mfp-drawer:not(.necox-mfp-drawer--glass):not(.necox-mfp-drawer--has-bg-image) {
        background-color: color-mix(in srgb, var(--necox-mfp-panel-bg) calc(var(--necox-mfp-panel-bg-alpha) * 100%), transparent);
    }

    /* v6.4.0 — Drawer Golge (toggle ile aktif olur) */
    .necox-mfp-drawer--shadow {
        box-shadow: var(--necox-mfp-panel-shadow);
    }

    /* Yon: Soldan acilan drawer */
    .necox-mfp-drawer--left {
        top: 0;
        left: 0;
        bottom: 0;
        width: var(--necox-mfp-width);
        max-width: 100vw;
        border-right-width: var(--necox-mfp-panel-border-width);
        border-top-right-radius: var(--necox-mfp-panel-radius);
        border-bottom-right-radius: var(--necox-mfp-panel-radius);
    }

    /* Yon: Sagdan acilan drawer */
    .necox-mfp-drawer--right {
        top: 0;
        right: 0;
        bottom: 0;
        width: var(--necox-mfp-width);
        max-width: 100vw;
        border-left-width: var(--necox-mfp-panel-border-width);
        border-top-left-radius: var(--necox-mfp-panel-radius);
        border-bottom-left-radius: var(--necox-mfp-panel-radius);
    }

    /* Yon: Alttan acilan drawer (bottom sheet) */
    .necox-mfp-drawer--bottom {
        left: 0;
        right: 0;
        bottom: 0;
        height: var(--necox-mfp-height);
        max-height: 100vh;
        border-top-width: var(--necox-mfp-panel-border-width);
        border-top-left-radius: var(--necox-mfp-panel-radius);
        border-top-right-radius: var(--necox-mfp-panel-radius);
    }

    /* ─── Animasyon: Slide ─── */
    .necox-mfp-drawer--anim-slide {
        transition: transform var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing), visibility var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing);
    }
    .necox-mfp-drawer--anim-slide.necox-mfp-drawer--left   { transform: translateX(-100%); }
    .necox-mfp-drawer--anim-slide.necox-mfp-drawer--right  { transform: translateX(100%); }
    .necox-mfp-drawer--anim-slide.necox-mfp-drawer--bottom { transform: translateY(100%); }
    .necox-mfp-drawer--anim-slide.is-open {
        transform: translate(0, 0);
        visibility: visible;
        pointer-events: auto; /* v7.17.23 — base'teki pointer-events:none'i geri ac */
    }

    /* ─── Animasyon: Fade ─── */
    .necox-mfp-drawer--anim-fade {
        opacity: 0;
        transition: opacity var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing), visibility var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing);
    }
    .necox-mfp-drawer--anim-fade.is-open {
        opacity: 1;
        visibility: visible;
        pointer-events: auto; /* v7.17.23 — base'teki pointer-events:none'i geri ac */
    }

    /* ─── Drawer Header ─── */
    .necox-mfp-drawer__header {
        flex: 0 0 auto;
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: var(--necox-mfp-header-padding) var(--necox-mfp-panel-padding);
        background: var(--necox-mfp-header-bg);
        /* v6.4.0 — Border-bottom toggle ile aktif (default kapali) */
        border-bottom: 0 solid var(--necox-mfp-header-border-color);
    }
    /* v6.4.0 — Header alt sinir cizgisi (toggle aktifken 1px) */
    .necox-mfp-drawer__header--bordered {
        border-bottom-width: 1px;
    }
    .necox-mfp-drawer__title {
        margin: 0;
        font-family: var(--necox-mfp-header-font-family);
        font-size: var(--necox-mfp-header-font-size);
        font-weight: var(--necox-mfp-header-font-weight);
        color: var(--necox-mfp-header-title-color);
        line-height: 1.3;
    }
    /* v7.14.8 — Kapat butonu preset cascade'e tam bagli.
       Normal: 2px border primary + X icon primary, bg transparent (preset karakteristik).
       Hover:  border + bg primary-hover + X icon primary-fg (beyaz) — dolu inverse.
       Tum presetlerde ayni mantik. */
    .necox-mfp-drawer__close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        padding: 0;
        background: transparent;
        border: 2px solid var(--necox-primary, #2A3254);
        cursor: pointer;
        color: var(--necox-primary, #2A3254);
        border-radius: 50%;
        transition: background 0.18s ease, transform 0.18s ease, border-color 0.18s ease, color 0.18s ease;
    }
    .necox-mfp-drawer__close svg {
        width: 18px;
        height: 18px;
        stroke-width: 2.5;
        stroke: currentColor;
        transition: transform 0.18s ease;
    }
    .necox-mfp-drawer__close:hover {
        background: var(--necox-primary-hover, var(--necox-primary, #2A3254));
        border-color: var(--necox-primary-hover, var(--necox-primary, #2A3254));
        color: var(--necox-primary-fg, #fff);
    }
    .necox-mfp-drawer__close:hover svg {
        transform: rotate(90deg);
    }
    .necox-mfp-drawer__close:active {
        transform: scale(0.92);
    }
    .necox-mfp-drawer__close:focus-visible {
        outline: 2px solid var(--necox-primary-hover, var(--necox-primary, #2A3254));
        outline-offset: 2px;
    }

    /* ─── Drawer Body (sidebar buraya tasinacak) ─── */
    .necox-mfp-drawer__body {
        flex: 1 1 auto;
        padding: var(--necox-mfp-body-padding);
        background: var(--necox-mfp-body-bg);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
    /* Sidebar drawer ici icine tasindiginda fixed pozisyondan kurtar
       (filter.css mobile bloku eski full-screen davranisini kaldirdik) */
    .necox-mfp-drawer__body .necox-filter-sidebar {
        position: static;
        inset: auto;
        z-index: auto;
        border-radius: 0;
        transform: none;
        overflow-y: visible;
        max-height: none;
    }

    /* v6.4.0 — Drawer body icindeki form etiketleri (necox_filter_render_sidebar
       cikti pattern: <label class="necox-filter-group__label">). Drawer'in kendi
       tipografisi uygulanir. Sidebar'in kendi sr_filter_label_color'ini override
       eder cunku drawer ortami farkli (mobil kullanici beklentisi). */
    .necox-mfp-drawer__body .necox-filter-group__label {
        font-family: var(--necox-mfp-body-label-font-family);
        font-size: var(--necox-mfp-body-label-font-size);
        font-weight: var(--necox-mfp-body-label-font-weight);
        color: var(--necox-mfp-body-label-color);
    }

    /* ─── v6.5.0 — Drawer Footer (sticky alt bar) ─── */
    .necox-mfp-drawer__footer {
        flex: 0 0 auto;
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 12px;
        padding: var(--necox-mfp-footer-padding) var(--necox-mfp-panel-padding);
        background: var(--necox-mfp-footer-bg);
        /* Footer ust sinir cizgisi (toggle aktifken kalinlik gelir) */
        border-top: 0 solid var(--necox-mfp-footer-border-color);
        /* Sticky footer — drawer altina yapisik kalir */
        position: sticky;
        bottom: 0;
        z-index: 1;
    }
    .necox-mfp-drawer__footer--bordered {
        border-top-width: var(--necox-mfp-footer-border-width);
    }

    /* Footer aktifken body alt padding ekler (sticky footer iceriginin uzerine binmesin) */
    .necox-mfp-drawer--has-footer .necox-mfp-drawer__body {
        padding-bottom: calc(var(--necox-mfp-body-padding) + 16px);
    }

    /* Sayac */
    .necox-mfp-drawer__counter {
        display: inline-flex;
        align-items: baseline;
        gap: 4px;
        font-size: var(--necox-mfp-counter-font-size);
        color: var(--necox-mfp-counter-color);
        line-height: 1.2;
    }
    .necox-mfp-drawer__counter-num {
        font-weight: 700;
    }
    .necox-mfp-drawer__counter-label {
        opacity: 0.85;
    }

    /* Aksiyon butonlari konteyneri */
    .necox-mfp-drawer__actions {
        display: inline-flex;
        align-items: center;
        gap: 8px;
        flex: 0 0 auto;
        margin-left: auto;
    }

    /* Buton tabani (Uygula + Sifirla ortak) */
    .necox-mfp-drawer__btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: var(--necox-mfp-apply-padding-y) 18px;
        border-radius: var(--necox-mfp-apply-radius);
        border: 1px solid transparent;
        font-family: inherit;
        font-size: 14px;
        font-weight: 600;
        line-height: 1.2;
        cursor: pointer;
        transition: background var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing),
                    color var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing),
                    border-color var(--necox-mfp-anim-duration) var(--necox-mfp-anim-easing),
                    transform 0.1s ease;
    }
    .necox-mfp-drawer__btn:active {
        transform: scale(0.97);
    }

    /* Uygula buton (primary) */
    .necox-mfp-drawer__btn--apply {
        background: var(--necox-mfp-apply-bg);
        color: var(--necox-mfp-apply-color);
    }

    /* Sifirla buton (secondary outline) */
    .necox-mfp-drawer__btn--reset {
        background: var(--necox-mfp-reset-bg);
        color: var(--necox-mfp-reset-color);
        border-color: var(--necox-mfp-reset-border-color);
    }

    /* v7.17.30 — KULLANICI KARARI: Drawer footer butonlari (Filtrele/Uygula + Temizle/Sifirla)
       yuksekligi = "Filtreleri Goster" (.necox-mft) butonu ile AYNI. Sahada OLCULDU (Playwright):
       .necox-mft mobilde 42px — yuksekligi font-size(14px) DEGIL, 18px'lik huni ikonu belirler
       (padding-y 12px*2 + ikon 18px = 42px, border:0, box-sizing:border-box). Drawer butonlarinda
       ikon yok; box-sizing:border-box + height:42px + dikey padding:0 ile ayn'lanir (flex zaten
       metni dikey ortalar; --necox-mfp-apply-padding-y height'i bozmaz). Yatay padding (18px) korunur. */
    .necox-mfp-drawer__btn {
        box-sizing: border-box;
        height: 42px;
        padding-top: 0;
        padding-bottom: 0;
    }

    /* v6.5.1 — Body scroll lock yontemi DEGISTI:
       Eski: body { overflow: hidden } - Android Chrome touch event drawer
       ic scroll'unu da kilitliyordu, scroll bouncing sorunu yarattyordu.
       Yeni: JS tarafinda body.style.position = 'fixed' + savedScrollY kayit.
       Bu CSS kurali artik gereksiz ama .necox-mfp-open class'i icin yedek
       guvence olarak overflow:hidden kalsin (JS calismazsa fallback). */
    body.necox-mfp-open {
        overflow: hidden;
    }
}

/* ─────────────────────────────────────────────────────────────────────────
   v7.14.0 — Preset 2 ve 3: liste render (--dt wrapper).
   v7.17.86 — CIFT RENDER KALDIRILDI: eskiden her ilan --dt + --m (mobil grid icin) 2 kez
   basiliyordu; Preset 2+3 grid kullanmayacagi icin --m gereksizdi (kopya, 2x DOM/gorsel).
   --m render'i preset-2/3.php + filter-ajax.php'den silindi. Artik TEK --dt kart var ->
   eski @media gizleme/gosterme kurallari (--dt'yi mobilde gizleyip --m gosteren) KALDIRILDI;
   --dt her cihazda gorunur kalmali. */
.necox-search--preset-2 .necox-sr-card--dt,
.necox-search--preset-3 .necox-sr-card--dt {
    display: block;
}

/* ─────────────────────────────────────────────────────────────────────────
   v7.14.2 — Ilan Arama K2 alanlarini ad-card cascade'i ile F yap.
   Mimari: K2 boş ise ad-card'tan miras alir, K2 dolu ise SADECE Ilan Arama
   sayfasinda override eder. Diger sayfalar (Anasayfa widget'i, Benzer, Sonsuz,
   Indirimli, Son Gezilen) HİÇ etkilenmez — scope `.necox-search--preset-*`
   sadece Ilan Arama'da tetiklenir.
   ───────────────────────────────────────────────────────────────────────── */

/* PAGINATION — sr_pagination_bg/color/active_bg/radius (4 alan).
   K1 cascade: K2 (sr-pag-*) > K1 (pg-*) > tema. */
.necox-search .necox-pagination__link {
    background: var(--necox-sr-pag-bg, var(--necox-pg-bg, var(--necox-white)));
    color: var(--necox-sr-pag-color, var(--necox-pg-text, var(--necox-muted)));
    border-radius: var(--necox-sr-pag-radius, var(--necox-pg-radius, 5px));
}
.necox-search .necox-pagination__item.is-active .necox-pagination__link {
    background: var(--necox-sr-pag-active-bg, var(--necox-pg-active-bg, var(--necox-primary)));
    color: var(--necox-pg-active-text, var(--necox-white));
    border-color: var(--necox-sr-pag-active-bg, var(--necox-pg-active-bg, var(--necox-primary)));
}

/* LIST-ITEM (6 alan): sr_list_item_bg/hover_bg/active_bg/padding/radius/gap.
   Preset 2/3 ad-card'a uygulanir. K2 bossa ad-card kendi cascade'ini kullanir. */
.necox-search--preset-2 .necox-ad-card,
.necox-search--preset-3 .necox-ad-card {
    background: var(--necox-sr-list-item-bg, var(--necox-card-bg, var(--necox-white)));
    padding: var(--necox-sr-list-item-padding, 0);
    border-radius: var(--necox-sr-list-item-radius, var(--necox-card-radius, 8px));
}
.necox-search--preset-2 .necox-ad-card:hover,
.necox-search--preset-3 .necox-ad-card:hover {
    background: var(--necox-sr-list-item-hover-bg, var(--necox-card-hover-bg, inherit));
}
.necox-search--preset-2 .necox-ad-card.is-active,
.necox-search--preset-3 .necox-ad-card.is-active {
    background: var(--necox-sr-list-item-active-bg, var(--necox-primary-light, rgba(42, 50, 84, 0.06)));
}
/* Gap alani — ad-card'lar arasinda */
.necox-search--preset-2 .necox-search__list,
.necox-search--preset-3 .necox-search__list {
    display: flex;
    flex-direction: column;
    gap: var(--necox-sr-list-item-gap, 12px);
}

/* TIPOGRAFI (4 alan): sr_list_title/price/meta_size/thumb_size. */
.necox-search--preset-2 .necox-ad-card__title,
.necox-search--preset-3 .necox-ad-card__title {
    font-size: var(--necox-sr-list-title-size, var(--necox-card-title-size, 15px));
}
.necox-search--preset-2 .necox-ad-card__price .necox-price,
.necox-search--preset-3 .necox-ad-card__price .necox-price {
    font-size: var(--necox-sr-list-price-size, var(--necox-card-price-size, 18px));
}
.necox-search--preset-2 .necox-ad-card__meta,
.necox-search--preset-3 .necox-ad-card__meta {
    font-size: var(--necox-sr-list-meta-size, var(--necox-card-meta-size, 12px));
}
/* Thumbnail boyutu sadece 'list' view'da etkili (Preset 2/3 desktop/tablet). */
.necox-search--preset-2 .necox-ad-card--list .necox-ad-card__media,
.necox-search--preset-3 .necox-ad-card--list .necox-ad-card__media {
    width: var(--necox-sr-list-thumb-size, 280px);
    /* v8.3.328 — KOK FIX: media bir FLEX OGESI; ad-card.css sabit flex-basis'leri
       (L974 `flex:0 0 220px` + max-1024 L1097 `flex:0 0 180px`) width'i eziyordu ->
       K2 degeri hicbir cihazda GERCEKTE uygulanmiyordu (desktop hep 220, tablet hep 180
       olculdu; PW kanit: var 280 basiliyorken computed 180). flex-basis de ayni degiskene
       baglandi; bu kural daha ozgul (0,3,0 > 0,2,0) -> her genislikte ad-card sabitlerini
       yener. ad-card.css sabitleri DIGER liste yuzeyleri icin fallback olarak DURUYOR. */
    flex-basis: var(--necox-sr-list-thumb-size, 280px);
    flex-shrink: 0;
}

/* ============================================================
   v7.17.4 — Preset 1: GRID 3 sutun (degismez), LISTE gorunumu K2 ile 1 veya 2 sutun.
   K2 'sr_preset1_list_columns' -> container'da data-list-columns="1|2" olarak basilir.
   Grid moduna (3 sutun) DOKUNMA. Mobil (<768px) zaten yukarida is-list-view'i grid'e
   cevirip kendi sutununu veriyor -> burasi sadece desktop (>=992px).
   ============================================================ */
@media (min-width: 992px) {
    /* 2 SUTUN (K2 secimi) — liste'yi 2 sutunlu grid yap.
       Container'da inline style var: grid-template-columns:repeat(var(--necox-sr-columns,3),1fr)
       -> inline harici CSS'i ezer, bu yuzden !important ZORUNLU. */
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] {
        display: grid;
        flex-direction: initial;
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 16px;
    }
    /* SIGDIRMA — sadece 2 sutunda gerekli (hucre dar ~494px). flex item'in kuculmesine
       izin ver (min-width:0) + bosluksuz uzun icerigi kir + media kucult. */
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] .necox-ad-card {
        width: 100%;
        max-width: 100%;
        overflow: hidden;
    }
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] .necox-ad-card__body {
        min-width: 0;
        overflow: hidden;
    }
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] .necox-ad-card__title,
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] .necox-ad-card__excerpt,
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] .necox-ad-card__eyebrow-row {
        min-width: 0;
        overflow-wrap: anywhere;
        word-break: break-word;
    }
    /* 2 sutunda media biraz kuculsun ki body'ye nefes alani kalsin (220 -> 180). */
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns="2"] .necox-ad-card__media {
        width: 180px !important;
        flex-shrink: 0;
    }
    /* 1 SUTUN (K2 secimi veya varsayilan fallback): klasik tek liste.
       is-list-view'in temel kurali (satir ~255 .necox-search__cards.is-list-view)
       zaten flex-column veriyor; data-list-columns="1" bunu ezmeden birakir.
       (Ek kurala gerek yok; 2-sutun bloku data-list-columns="2"'ye scope'lu oldugu
       icin 1-sutunda devreye girmez -> dogal flex-column tek liste kalir.) */
}

/* ============================================================
   v7.17.7 — CIHAZ BAZLI SUTUN (TABLET + MOBIL). Anasayfa cihaz-bazli mantik.
   KURAL: Mobil (<768) grid+liste her zaman 1 sutun (istisnasiz). Tablet (768-991)
   grid 1|2|3 + liste 1|2 ayri (data-grid-columns-tablet / data-list-columns-tablet).
   Desktop (>=992) yukaridaki bloklar yonetir (sr_columns + data-list-columns).
   ============================================================ */

/* ---- TABLET (768-991px) ---- */
@media (min-width: 768px) and (max-width: 991px) {
    /* GRID gorunumu (is-list-view DEGIL): tablet grid sutun sayisi. Container inline
       grid-template-columns var -> !important. */
    .necox-search--preset-1 .necox-search__cards[data-grid-columns-tablet="1"]:not(.is-list-view) {
        grid-template-columns: repeat(1, 1fr) !important;
    }
    .necox-search--preset-1 .necox-search__cards[data-grid-columns-tablet="2"]:not(.is-list-view) {
        grid-template-columns: repeat(2, 1fr) !important;
    }
    .necox-search--preset-1 .necox-search__cards[data-grid-columns-tablet="3"]:not(.is-list-view) {
        grid-template-columns: repeat(3, 1fr) !important;
    }

    /* LISTE gorunumu (is-list-view): tablet liste sutun sayisi. */
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] {
        display: grid;
        flex-direction: initial;
        grid-template-columns: repeat(2, 1fr) !important;
        gap: 16px;
    }
    /* 2-sutun tablet liste SIGDIRMA (desktop ile ayni: dar hucrede tasma onle). */
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] .necox-ad-card {
        width: 100%;
        max-width: 100%;
        overflow: hidden;
    }
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] .necox-ad-card__body {
        min-width: 0;
        overflow: hidden;
    }
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] .necox-ad-card__title,
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] .necox-ad-card__excerpt,
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] .necox-ad-card__eyebrow-row {
        min-width: 0;
        overflow-wrap: anywhere;
        word-break: break-word;
    }
    .necox-search--preset-1 .necox-search__cards.is-list-view[data-list-columns-tablet="2"] .necox-ad-card__media {
        width: 160px !important;
        flex-shrink: 0;
    }
    /* tablet liste 1 sutun: flex-column dogal kalir (ek kural yok). */
}

/* ---- MOBIL (<768px): grid + liste HER ZAMAN 1 sutun (istisnasiz) ---- */
@media (max-width: 767px) {
    .necox-search--preset-1 .necox-search__cards,
    .necox-search--preset-1 .necox-search__cards.is-list-view {
        grid-template-columns: repeat(1, 1fr) !important;
    }
}

/* ============================================================
   v7.17.7 — SCROLLBAR GUTTER: liste gorunumunde sag kenar (ve sidebar ic icerik)
   scrollbar'in ALTINA girmesin. scrollbar-gutter:stable scrollbar icin KALICI yer
   ayirir -> icerik scrollbar'in soluna sigar, scrollbar acilip kapaninca icerik kaymaz.
   Kullanici: tablet+desktop liste sag kenari + sol sidebar scroll'u icin.
   ============================================================ */
/* (1) SAYFA scroll'u — sadece ilan-arama sayfasinda (global etki yok). */
body.page-template-page-ilan-arama {
    scrollbar-gutter: stable;
}
/* (2) SOL SIDEBAR kendi scroll'u (overflow-y:auto) — icindeki filtre kutulari
   scrollbar altina girmesin. */
.necox-search--preset-1 .necox-search__sidebar {
    scrollbar-gutter: stable;
}
/* (4) v7.17.7d — HOVER UST KIRPILMASI FIX (kullanici: Arama kutusu / ilan kartlarinin
   ust sinirindan itibaren hover'da UST cizgi gorunmuyor; 1-3px asagi cek). KÖK NEDEN
   (Playwright): hover vurgusu border(0.8px) DEGIL -> kartin DISINA cizilen 2.4px OUTLINE
   (rgb 160,216,240). sidebar+main overflow:auto, icerik tepeden basliyor -> outline'in
   ust tarafi overflow kutusunda KIRPILIYOR. 2px yetmedi (outline 2.4px > 2px) -> 3px
   (outline'i tam kapsar). COZUM: sidebar+main ustten 3px padding -> outline icin nefes
   alani, kirpma yok. (Tum boyutlar; sidebar mobilde drawer.)
   v7.17.25 — AYNI SORUN PRESET 2'de de var (kullanici gorseli: topbar altinda kart ust
   kenari kirpik/yapisik). Preset 2 panelleri de overflow-y:auto (sticky) -> ust 3px nefes. */
.necox-search--preset-1 .necox-search__sidebar,
.necox-search--preset-1 .necox-search__main,
.necox-search--preset-2 .necox-search__sidebar,
.necox-search--preset-2 .necox-search__main {
    padding-top: 3px;
}

/* (3) v7.17.7b — MAIN SCROLLBAR'I SAG BOSLUGA TASI (kullanici: scrollbar kart
   bitiminde degil, sagdaki boslukta olsun). .necox-search__main kendi overflow-y:auto
   ile scroll ediyor -> scrollbar main sag kenarinda (=kart bitimi). parent padding-right
   24px scrollbar'in SAGINDA bos kaliyor. ÇÖZÜM: main'i o 24px'lik bosluga TASI
   (margin-right:-24 -> main saga genisler, scrollbar sayfa kenarina) + padding-right:24
   (icerik/kartlar yerinde kalir). v7.17.7c — TABLET de eklendi (768+): tablette sidebar
   drawer'a gectigi icin main tam genislik ama scroll yine main'de -> ayni fix gecerli.
   Mobil (<768) main scroll etmez / tam genislik -> dahil degil. */
@media (min-width: 768px) {
    .necox-page-search-results .necox-search--preset-1 .necox-search__main {
        margin-right: calc(-1 * var(--necox-sr-page-pad, 24px));
        padding-right: var(--necox-sr-page-pad, 24px);
    }
}

/* ============================================================
   v7.17.4 — Preset 1 DESKTOP UST BAR BIRLESTIRME.
   Breadcrumb (sol) + result-header [sonuc sayisi + grid/liste toggle] (sag)
   tek satirda. Eskiden iki ayri yatay bar dikey yer harciyordu.
   Mobilde (<992px) alt alta dizilir (eski davranisa yakin).
   ============================================================ */
.necox-search__topbar {
    /* v7.17.4c — BOSLUK TUTARLILIGI: barlar arasi boslugu (bar -> Arama/ilanlar) SOL
       dikey bosluk (parent padding 24px ~ 25px) ve UST bosluk (parent padding 24px) ile
       ESITLE. Boylece sol/ust/barlar-arasi hepsi ~24px = her yon tutarli (kullanici
       referans: soldaki dikey lacivert bosluk kadar). Onceden 12px'di (dar). */
    margin-bottom: 24px;
    /* v7.17.5 — STICKY: asagi scroll'da bar header'in TAM ALTINA yapissin (kullanici
       istegi; Preset 3 filtre bari deseni v84 #101). header #necox-header fixed/z:100,
       yuksekligi --necox-header-h (JS canli yazar). -1px overlap (header ile arasinda
       cizgi kalmasin). z-index header(100) altinda ama icerik/select2 ustunde (90).
       Admin bar (login-only, 32px) varsa WP body'ye offset ekler; --necox-header-h
       sadece header oldugu icin admin-bar'da +32px gerekebilir -> wp-admin-bar body
       class'i ile ek offset (asagida). */
    position: -webkit-sticky;
    position: sticky;
    top: calc(var(--necox-header-h, 70px) - 1px);
    z-index: 90;
}
/* Admin bar acikken (login-li) header top:32px'ten basliyor -> topbar da +32px insin
   ki header'in tam altinda kalsin (ziyaretcide admin-bar yok, bu kural devreye girmez). */
.admin-bar .necox-search__topbar {
    top: calc(var(--necox-header-h, 70px) - 1px + 32px);
}
@media (max-width: 782px) {
    /* v7.17.5 — Mobilde header zaten admin-bar offset'ini --necox-header-h hesabina
       katiyor (Playwright: header_bottom=40, +46px ek offset 45px FAZLA bosluk birakti).
       Mobilde admin-bar ek offset'i SIFIRLA -> topbar header'in tam altina (desktop
       admin-bar +32px kurali ise gecerli kalir). */
    .admin-bar .necox-search__topbar {
        top: calc(var(--necox-header-h, 70px) - 1px);
    }
}
/* v7.17.4b — preset-1 ust padding'i sifir: barlar-arasi boslugu SADECE topbar
   margin-bottom yonetsin (cift bosluk olmasin). UST dis bosluk parent padding-top
   24px'ten gelir, DEGISTIRILMEDI (kullanici: ust guzeldi). Preset 1'e scope'lu.
   v7.17.24 — Preset 2'ye de TOP BAR eklendi -> ayni kural: ust padding sifir, kart
   ust boslugu topbar margin-bottom:24px ile Preset 1 ile ESIT (kullanici istegi). */
.necox-page-search-results .necox-search--preset-1,
.necox-page-search-results .necox-search--preset-2 {
    padding-top: 0;
}
/* v7.17.5 — TEK UZUN BAR: TUM BOYUTLARDA (desktop+tablet+mobil). Onceden sadece
   >=992px'di; tablet/mobilde breadcrumb ve sayi alt alta + arka plansiz duruyordu.
   Kullanici: ayni duzenlemeyi tablet+mobile de uygula. Flex kurallari artik media
   kosulsuz -> her boyutta breadcrumb sol + sayi/toggle sag tek mavi bar. */
.necox-search__topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: nowrap;
    /* Mavi arka plani TUM topbar'a yay (result-header'in K2 bg/radius'u). */
    background: var(--necox-sr-result-header-bg, transparent);
    padding: 7px 16px;
    border-radius: var(--necox-sr-result-header-radius, 8px);
}
/* breadcrumb solda; kendi dikey padding'i (10px 0) bar'i sismana yapiyordu -> sifirla. */
.necox-search__topbar .necox-breadcrumb {
    margin: 0;
    padding-top: 0;
    padding-bottom: 0;
    flex: 0 1 auto;
    min-width: 0;
}
/* result-header sagda; ic kutu (bg/padding/radius/min-height) sifirla -> tek bar butun. */
.necox-search__topbar .necox-search__result-header {
    margin: 0;
    flex: 0 0 auto;
    flex-wrap: nowrap;
    background: transparent;
    padding: 0;
    border-radius: 0;
    min-height: 0;
}
/* Tablet+mobil (<992): bar biraz daha kompakt + breadcrumb tasarsa ellipsis (taşmasın).
   Mobilde toggle zaten display:none (liste/grid mobilde grid'e doner) -> sagda sadece
   sayi kalir, sorun degil. */
@media (max-width: 991px) {
    .necox-search__topbar {
        gap: 8px;
        /* v7.17.5 — Mobil top bar yuksekligi = "Filtreleri Goster" butonu (42px) olsun
           (kullanici). Icerik ~22px + dikey padding 10px x2 = 42px. min-height ile garanti. */
        padding: 10px 12px;
        min-height: 42px;
        box-sizing: border-box;
    }
    /* breadcrumb uzunsa tek satirda kessin (mobil dar ekranda sayiyi alt satira itmesin). */
    .necox-search__topbar .necox-breadcrumb {
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }
    .necox-search__topbar .necox-search__result-count {
        white-space: nowrap;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   v7.17.20 — "DAHA FAZLA OZELLIK" butonu (Breadcrumb Kategori Derinligi gate, Preset 1/2)
   Kategori basina admin'in belirledigi ilk N CF acik gelir; kalan CF'ler
   .necox-cf-hidden-group icinde gizli, bu buton acar.
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.necox-cf-more-wrap {
    margin: 10px 0 4px;
    text-align: center;
}
.necox-cf-more-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    width: 100%;
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .2px;
    color: var(--necox-btn-text, #fff);
    background: var(--necox-main, #00a591);
    border: 1px solid var(--necox-btn-border, var(--necox-main, #00a591));
    border-radius: var(--necox-input-radius, 8px);
    cursor: pointer;
    transition: background .18s ease, transform .12s ease, box-shadow .18s ease;
    box-shadow: 0 1px 3px rgba(0,0,0,.12);
}
.necox-cf-more-btn:hover {
    background: var(--necox-main-hover, var(--necox-main, #008c77));
    box-shadow: 0 3px 10px rgba(0,0,0,.18);
}
.necox-cf-more-btn:active { transform: translateY(1px); }
.necox-cf-more-btn__icon {
    font-size: 16px;
    line-height: 1;
    font-weight: 700;
}
.necox-cf-more-desc {
    margin: 6px 2px 0;
    font-size: 11.5px;
    line-height: 1.4;
    color: var(--necox-text-muted, rgba(125,135,150,.85));
    text-align: center;
}
.necox-cf-hidden-group[hidden] { display: none; }
