.zf-shop-wrapper{
  --zf-green-900:#0F1A14; --zf-green-800:#1A2B20; --zf-green-700:#243D2C; --zf-green-600:#2E5038;
  --zf-gold-700:#78612C; --zf-gold-600:#8C7238; --zf-gold-500:#C9A962; --zf-gold-400:#D4B878; --zf-gold-300:#DEC998;
  --zf-cream-0:#FFFEF9; --zf-cream-100:#FAF6F0; --zf-cream-200:#F5F0E8; --zf-cream-300:#EDE8E0; --zf-cream-400:#E0DBD3;
  /* Kart yuzeyi: #FBF8F3 sistemdeki EN AZ sicak yuzeydi (b* 2.74) — sayfa
     zemininden (b* 3.95) bile daha notrdu, bu yuzden beyaz kutu gibi okunuyordu.
     Yeni deger yeni bir token DEGIL: zaten var olan --zf-cream-100 (#FAF6F0),
     sahibin onayladigi dijital acik yuzey ivory'si. L* 97.7 -> 97.0, yani kart
     hala sayfadan acik; ayirim asil olarak 1px #DED6C8 kenarliktan geliyor. */
  --zf-bg:#F7F2EB; --zf-card:var(--zf-cream-100); --zf-stage:#F2ECE2;
  --zf-text:#1A2B20; --zf-muted:#415447; --zf-border:#E0DBD3;
  --font-serif:'Cormorant Garamond',Georgia,serif;
  --font-ui:'Cinzel',Georgia,serif;
  --font-num:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --r:4px;
  --ease:cubic-bezier(0.16,1,0.3,1);
  --t-fast:180ms; --t-med:320ms;
}
.zf-shop-wrapper,.zf-shop-wrapper *,.zf-shop-wrapper *::before,.zf-shop-wrapper *::after{box-sizing:border-box;margin:0;padding:0}
.zf-shop-wrapper{background:var(--zf-bg);color:var(--zf-text);font-family:var(--font-serif);font-size:17px;font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}

.zf-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* ============ HERO ============ */
.zf-hero-wrapper{background:var(--zf-green-900);padding:44px 24px;position:relative}
.zf-hero{max-width:1100px;margin:0 auto;text-align:center}
.zf-eyebrow{font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--zf-gold-300);margin-bottom:14px}
.zf-hero-title{font-family:var(--font-serif);font-weight:600;font-size:clamp(30px,calc(2.6vw + 10px),46px);color:var(--zf-cream-0);line-height:1.12;margin:0 0 10px;text-wrap:balance}
.zf-hero-sub{font-family:var(--font-serif);font-size:clamp(17px,calc(.7vw + 13px),21px);font-weight:400;color:var(--zf-cream-300);line-height:1.45;margin:0 auto;max-width:44ch}

/* ============ ANA BÖLÜM ============ */
.zf-shop-main{background:var(--zf-bg);padding:32px 24px 72px}
.zf-container{max-width:1300px;margin:0 auto}
.zf-section-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* ============ FİLTRE ============ */
.zf-filter-section{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:14px;padding-bottom:16px;border-bottom:1px solid var(--zf-border)}
.zf-filter-left{display:flex;flex-direction:column;align-items:flex-start;gap:7px;flex:1;min-width:240px}
.zf-sort-wrapper{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.zf-sort-label{font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--zf-muted);letter-spacing:.18em;text-transform:uppercase}
.zf-select{font-family:var(--font-ui);font-size:13px;font-weight:500;letter-spacing:.04em;color:var(--zf-text);padding:13px 42px 13px 16px;border:1px solid #CFC7BB;border-radius:var(--r);background-color:var(--zf-cream-200);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%231A2B20' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 13px center;cursor:pointer;appearance:none;-webkit-appearance:none;min-width:210px;transition:border-color var(--t-fast)}
.zf-select:hover,.zf-select:focus{border-color:var(--zf-gold-700)}
/* Kontroller sunucuda KAPALI basilir, magaza JS'i kurulunca acilir.
   JS yoksa aktif gorunup hicbir sey yapmayan kontrol kalmaz. */
.zf-select:disabled,.zf-discovery-toggle:disabled{opacity:.5;cursor:not-allowed}
.zf-select:disabled{border-color:#CFC7BB;background-color:var(--zf-cream-300)}
.zf-select:disabled:hover{border-color:#CFC7BB}

.zf-shop-wrapper a:focus-visible,.zf-shop-wrapper button:focus-visible,.zf-shop-wrapper select:focus-visible{outline:3px solid var(--zf-gold-700)!important;outline-offset:2px!important;border-radius:2px}
.zf-shop-wrapper .zf-btn-cart:focus-visible{outline:3px solid var(--zf-gold-400)!important;outline-offset:2px!important;box-shadow:0 0 0 5px rgba(120,97,44,.55)}

/* ============ GÜVEN ŞERİDİ (tek satır, doğrulanmış bilgi) ============ */
/* RAF NOTU: kargo/kampanya sartlari + Kesif tek bant. Sol sutun sartlar,
   sag sutun Kesif. Onceki uc ayri blok (assure, assure-rules, discovery)
   masaustunde 136px tutuyordu; ayni icerik tek bantta toplandi. */
.zf-shelf-note{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:12px 40px;margin:0 0 20px;padding:12px 0 0}
.zf-shelf-note-text{flex:1 1 460px;min-width:0}
.zf-assure{margin:0;padding:0;font-size:14px;line-height:1.55;color:var(--zf-muted)}
/* -6px ust uste binme kaldirildi: iki sart cumlesi ayri ama bitisik okunur. */
.zf-assure+.zf-assure-rules{padding-top:0;margin-top:3px}

/* ============ KEŞİF SATIRI ============ */
.zf-discovery{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;margin:0;padding:0;font-size:14px;line-height:1.55;color:var(--zf-green-800)}
/* text-transform:uppercase KALDIRILDI. Etiket artik bir olcu birimi
   tasiyor ve marka kurali birimi '50 mL' olarak sabitler; uppercase
   bunu '50 ML'ye cevirip kurali bozuyordu. Boy secici (.zf-size) zaten
   uppercase degil, yani birim yazimi mağaza genelinde tutarli kalir.
   Cinzel + harf araligi + altin alt cizgi kontrol kimligini korur. */
.zf-discovery-toggle{flex:0 0 auto;min-height:44px;padding:8px 0;border:0;border-bottom:1px solid var(--zf-gold-700);background:transparent;color:var(--zf-gold-700);font-family:var(--font-ui);font-size:13px;font-weight:600;letter-spacing:.06em;cursor:pointer}
.zf-discovery-toggle[aria-pressed="true"]{color:var(--zf-green-800);border-bottom-color:var(--zf-green-800)}

/* ============ GRID ============ */
.zf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(282px,1fr));gap:22px}
.zf-card[hidden],.zf-empty[hidden]{display:none!important}
.zf-empty{grid-column:1/-1;text-align:center;padding:56px 16px;font-style:italic;font-weight:500;color:var(--zf-muted)}

/* ============ ÜRÜN KARTI ============ */
.zf-shop-wrapper.zf-shop-wrapper .zf-card{position:relative;display:flex;flex-direction:column;min-width:0;background:var(--zf-card);border:1px solid #DED6C8;border-radius:var(--r);overflow:hidden;transition:box-shadow var(--t-med) var(--ease),border-color var(--t-fast) var(--ease)}
.zf-card:hover{box-shadow:0 10px 24px rgba(15,26,20,.08);border-color:#CDBFA9}

.zf-card-media{position:relative;height:230px;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:16px;background:linear-gradient(180deg,#F6F1E8 0%,var(--zf-stage) 100%)}
.zf-card-media img{max-width:78%;max-height:100%;object-fit:contain;transition:transform 600ms var(--ease)}
.zf-card-media img[hidden]{display:none}
.zf-card:hover .zf-card-media img{transform:scale(1.02)}

.zf-card-media-link{position:absolute;inset:0;z-index:2}
.zf-card-badge{position:absolute;top:12px;left:12px;z-index:3;font-family:var(--font-ui);font-size:11px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;padding:5px 9px;border-radius:2px}
.zf-card-badge[hidden]{display:none}
.zf-card-badge.sale{color:#5E4A18;border:1px solid rgba(120,97,44,.45);background:rgba(255,254,249,.92)}
.zf-card-badge.sold{color:#3B4A40;border:1px solid rgba(59,74,64,.35);background:rgba(255,254,249,.92)}

.zf-card-info{padding:18px 20px 20px;display:flex;flex:1;flex-direction:column;min-width:0}
.zf-card-origin{margin:0 0 7px;font-family:var(--font-ui);font-size:11px;font-weight:600;letter-spacing:.11em;line-height:1.45;text-transform:uppercase;color:var(--zf-gold-700)}
.zf-shop-wrapper.zf-shop-wrapper .zf-card-title{font-family:var(--font-serif);font-size:26px;font-weight:600;color:var(--zf-green-800);line-height:1.14;letter-spacing:0;margin:0 0 8px;display:block}
/* Tema, a,a:visited icin #c5a059 yaziyor. Tek sinifli secici berabere kaliyor ve
   ziyaret edilmis urunlerin basligi/boy hapi altin basiliyordu (krem uzerinde 2,32:1).
   Ozgulluk .zf-shop-wrapper.zf-shop-wrapper ile kirilir; :visited acikca yazilir. */
.zf-shop-wrapper.zf-shop-wrapper .zf-card-title a,
.zf-shop-wrapper.zf-shop-wrapper .zf-card-title a:visited{color:inherit;text-decoration:none}
.zf-card-title a::after{content:"";position:absolute;inset:0;z-index:1}
.zf-card-variant{margin:0 0 7px;font-size:14px;line-height:1.4;color:var(--zf-muted)}
.zf-card-variant[hidden]{display:none}

/* ---- BOY SEÇİMİ ---- */
.zf-sizes{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:6px;margin:0 0 13px}
/* Sunucu <a>, JS acikken <button> basar; ikisi de AYNI kurali kullanir.
   appearance:none yalnizca tarayicinin kendi buton govdesini sifirlar,
   gorsel dil degismez (renk, kenar, olcu, hap bicimi ayni). */
.zf-shop-wrapper.zf-shop-wrapper .zf-size,
.zf-shop-wrapper.zf-shop-wrapper .zf-size:visited{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:7px 12px;border:1px solid #8E857A;border-radius:var(--r);background:var(--zf-cream-100);color:var(--zf-green-800);font-family:var(--font-num);font-size:13px;font-weight:600;line-height:1;letter-spacing:.01em;text-decoration:none;cursor:pointer;appearance:none;-webkit-appearance:none;transition:border-color var(--t-fast),background var(--t-fast),color var(--t-fast)}
.zf-shop-wrapper.zf-shop-wrapper .zf-size:hover{border-color:var(--zf-gold-700);color:var(--zf-gold-700)}
.zf-shop-wrapper.zf-shop-wrapper .zf-size[aria-current="true"],
.zf-shop-wrapper.zf-shop-wrapper .zf-size[aria-pressed="true"]{background:var(--zf-green-800);border-color:var(--zf-green-800);color:var(--zf-cream-0)}
.zf-shop-wrapper.zf-shop-wrapper .zf-size[data-stock="0"]{color:#5E6D64;background:transparent;border-color:#8E857A;border-style:dashed}
.zf-shop-wrapper.zf-shop-wrapper .zf-size[data-stock="0"][aria-current="true"],
.zf-shop-wrapper.zf-shop-wrapper .zf-size[data-stock="0"][aria-pressed="true"]{background:#5A6B60;border-color:#5A6B60;color:var(--zf-cream-0);border-style:solid}
/* WooCommerce ajax eklemeden sonra kendi "Sepetim" baglantisini butonun yanina
   birakiyor. Kartta zaten .zf-after "Sepete git" var; ikinci, stilsiz link gorunmez. */
.zf-shop-wrapper.zf-shop-wrapper a.added_to_cart{display:none}
.zf-size-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* ---- BOY PANELİ ---- */
.zf-panel{display:flex;flex-direction:column;flex:1;min-width:0}
.zf-panel[hidden]{display:none}
.zf-note{margin:0 0 13px;padding:11px 0 0;border-top:1px solid rgba(120,97,44,.26);font-size:15px;line-height:1.45}
.zf-note-tag{display:block;margin:0 0 4px;font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#66501F}
.zf-note-body{display:block;color:#33463A;font-weight:500}
.zf-note-fee{display:block;margin-top:5px;color:var(--zf-muted);font-weight:400;font-size:14px}
/* ---- ÜCRET GEOMETRİ YUVASI (20 Eylül 2026) ----------------------------
   Aynı ailenin bir boyunda "+166 ₺" şartı varken diğerinde yoktu; boy
   değişiminde .zf-note-fee satırı belirip kayboluyor ve kart zıplıyordu.
   Yuva YALNIZ geometridir: metin, pseudo içerik, rol ve odak TAŞIMAZ.
   Ölçüler .zf-note-fee'nin gerçek işgalinden türetilir (1lh + 5px üst
   boşluk). Ücret kuralı, tutarı ve sözleri DEĞİŞMEZ; olmayan yerde ücret
   GÖSTERİLMEZ. ------------------------------------------------------- */
/* FINAL 3A ÖLÇÜM (21 Eylül 2026): ücret işareti "· ikinci üründe kalkar"
   ekiyle 480px ÜSTÜNDE tek satırdan İKİ satıra çıktı (ölçülen 41px @14px/1.45).
   Rezerv 1 satırda kalınca ücretli/ücretsiz boy arasında 21px zıplama oluşuyordu.
   Kural DEĞİŞMEDİ, yalnız rezerv .zf-note-fee'nin YENİ gerçek işgaline
   yeniden türetildi — mekanizmanın kendi sözleşmesi budur. */
.zf-fee-slot{display:block;margin:0;font-size:14px;line-height:1.45;min-height:46px;min-height:calc(1lh * 2 + 5px)}

.zf-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:4px}
/* ---- FİYAT + BİRİM KİLİDİ (20 Eylül 2026) ----------------------------
   Tutarın tipografisi ve görsel baskınlığı DEĞİŞMEZ (.zf-price-now aynı).
   Birim, tutarın ALTINDA ikinci bir blok gibi durmaktan çıkıp yer varken
   tutarın TABAN ÇİZGİSİNE oturur. Yer yoksa TAM birim jetonu ikinci
   satıra iner: satır içi bölünme yok (white-space:nowrap), kırpma yok.
   nowrap YALNIZ birim jetonundadır; kilidin tamamına verilmez. ------- */
.zf-card-footer-left{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px;row-gap:2px;min-width:0;flex:1;line-height:1.2;overflow:hidden}
.zf-price{display:inline-flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.zf-price-now{font-family:var(--font-num);font-size:23px;font-weight:650;color:var(--zf-green-800);font-variant-numeric:tabular-nums;letter-spacing:-.015em;line-height:1.1}
.zf-shop-wrapper .zf-price-was{display:inline!important;font-family:var(--font-num);font-size:14px;color:var(--zf-muted);text-decoration:line-through;font-weight:400;font-variant-numeric:tabular-nums}
.zf-price-unit{position:relative;font-family:var(--font-num);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--zf-muted);line-height:1.2;white-space:nowrap}
/* Ayraç yalnız tipografik nefes; bilgi taşımaz. Akıştan ÇIKARILMIŞTIR:
   birimin hemen soluna, tutarla arasındaki boşluğa asılır.
   Tek satıra sığıldığında tutar ile birimi ayırır. Birim ikinci satıra
   indiğinde satır başına düşen yetim bir işaret bırakmaz: kilidin sol
   kenarının dışında kalır ve kırpılır (satır sonu zaten ayraçtır).
   Genişlik harcamadığı için tek satır olasılığını da artırır. */
.zf-price-unit::before{content:"·";position:absolute;right:100%;margin-right:2px;color:#818A84;font-weight:400;pointer-events:none}

/* ---- NORMALIZE BIRIM FIYAT (20 Eylul 2026) ----------------------------
   Satis fiyatinin tipografisi ve baskinligi DEGISMEZ. Normalize oran
   IKINCIL bir satirdir: flex:0 0 100% ile kilidin kendi satirina iner,
   tutarin yanina girip onunla yarismaz. nowrap yalnizca bu jetondadir. */
.zf-unit-rate{font-family:var(--font-num);font-size:12px;font-weight:400;font-variant-numeric:tabular-nums;line-height:1.3;color:var(--zf-muted);white-space:nowrap;flex:0 0 100%}

.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:44px;font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--zf-cream-0);background:var(--zf-green-900);border:1px solid var(--zf-green-900);padding:11px 15px;border-radius:var(--r);text-decoration:none;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background var(--t-fast) var(--ease)}
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart:hover{background:var(--zf-green-700);border-color:var(--zf-green-700)}
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-busy,
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-loading,
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.loading{opacity:.72;cursor:wait;pointer-events:none}
/* v30 yaprak yükleyicisi birebir geri geldi. .loading WooCommerce'in kendi sınıfıdır:
   tıklamayla aynı karede gelir, bizim zamanlayıcımızı beklemez. */
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-busy::after,
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-loading::after,
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.loading::after{content:"";display:inline-block;width:18px;height:18px;margin-left:6px;vertical-align:middle;border:0;position:static;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 44'><clipPath id='zlm'><path d='M22 8C30.5 15 31 26 22 33.5C13 26 13.5 15 22 8Z'/></clipPath><path d='M22 8C30.5 15 31 26 22 33.5C13 26 13.5 15 22 8Z' fill='%235F6B39'/><path d='M22 8C30.5 15 31 26 22 33.5C13 26 13.5 15 22 8Z' fill='none' stroke='%23C9A962' stroke-width='1.6'/><g clip-path='url(%23zlm)' stroke='%232E3A1C' fill='none'><path d='M22 11.5L22 32' stroke-width='1.1' opacity='0.5'/><path d='M22 17.5C24.6 17 26.2 16.2 27.4 14.6M22 17.5C19.4 17 17.8 16.2 16.6 14.6M22 23.5C25 22.9 27 21.8 28.4 19.9M22 23.5C19 22.9 17 21.8 15.6 19.9' stroke-width='0.85' opacity='0.42'/></g><path d='M22 33.5L22 37.5' stroke='%23C9A962' stroke-width='1.6'/></svg>") center / contain no-repeat;animation:zfLeafPulse 1.15s ease-in-out infinite}
@keyframes zfLeafPulse{0%,100%{opacity:.4;transform:scale(.9)}50%{opacity:1;transform:scale(1)}}
.zf-btn-cart.is-added{background:var(--zf-green-600);border-color:var(--zf-green-600)}
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-error{background:transparent;color:#7A261F;border-color:rgba(122,38,31,.5)}
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-notify{background:transparent;color:var(--zf-green-800);border:1px solid #BDB2A2}
.zf-shop-wrapper.zf-shop-wrapper .zf-btn-notify:hover{background:var(--zf-cream-200);border-color:var(--zf-green-800)}

/* ---- Stok bildirimi (tükenen boylarda, panel içinde) ---- */
.zf-notify{position:relative;z-index:2;margin:10px 0 0}
.zf-notify[hidden]{display:none}
.zf-notify-label{display:block;margin:0 0 5px;font-family:var(--font-ui);font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--zf-muted)}
.zf-notify-input{width:100%;min-height:44px;padding:11px 12px;border:1px solid #8E857A;border-radius:var(--r);background:var(--zf-cream-0);color:var(--zf-text);font-family:var(--font-num);font-size:14px;appearance:none}
.zf-notify-input:focus{border-color:var(--zf-gold-700);outline:none}
.zf-notify-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.zf-notify-consent{display:flex;align-items:center;gap:9px;min-height:44px;margin:2px 0 6px;font-size:14px;line-height:1.35;color:var(--zf-muted);cursor:pointer}
.zf-notify-consent input{flex:0 0 auto;width:18px;height:18px;margin:0;accent-color:var(--zf-green-800)}
.zf-shop-wrapper.zf-shop-wrapper .zf-notify-submit{width:100%;min-height:44px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--zf-green-900);border-radius:var(--r);background:var(--zf-green-900);color:var(--zf-cream-0);font-family:var(--font-ui);font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;padding:11px 15px;cursor:pointer;appearance:none;transition:background var(--t-fast) var(--ease)}
.zf-shop-wrapper.zf-shop-wrapper .zf-notify-submit:hover{background:var(--zf-green-700);border-color:var(--zf-green-700)}
.zf-shop-wrapper.zf-shop-wrapper .zf-notify-submit[disabled]{opacity:.72;cursor:wait}
.zf-notify-msg{margin:8px 0 0;font-size:14px;line-height:1.4;color:var(--zf-muted)}
.zf-notify-msg:empty{display:none}
.zf-notify-msg.is-ok{color:var(--zf-green-700)}
.zf-notify-msg.is-err{color:#7A261F}
/* Başarıdan sonra yalnız sakin mesaj kalır; alanlar geri çekilir. */
.zf-notify.is-done .zf-notify-label,
.zf-notify.is-done .zf-notify-input,
.zf-notify.is-done .zf-notify-consent,
.zf-notify.is-done .zf-notify-submit{display:none}

/* ---- Sepete eklendikten sonraki yol ---- */
.zf-after{position:relative;z-index:2;margin:10px 0 0;font-size:15px;line-height:1.4}
.zf-after[hidden]{display:none}
.zf-after a{color:var(--zf-gold-700);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.zf-after a:hover{color:var(--zf-green-800)}

/* ============ PAZARYERİ (grid sonrası, ikincil) ============ */
.zf-mp{margin:44px 0 0;padding-top:20px;border-top:1px solid var(--zf-border);display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 14px;font-size:15px;color:var(--zf-muted)}
.zf-mp a{color:var(--zf-gold-700);text-decoration:underline;text-underline-offset:3px}
.zf-mp a:hover{color:var(--zf-green-800)}

/* ============ RESPONSIVE ============ */
@media (max-width:900px){.zf-hero-wrapper{padding:46px 22px 38px}}

@media (max-width:768px){
  .zf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .zf-card-media{height:196px;padding:12px}
  .zf-card-info{padding:14px 13px 15px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-card-title{font-size:21px;line-height:1.18}
  .zf-price-now{font-size:20px}
  .zf-card-footer{flex-direction:column;align-items:stretch;gap:9px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart{width:100%;padding:13px 12px}
  /* Raf notu tablette alt alta yigilir; Kesif satiri solda hizali kalir. */
  .zf-shelf-note{gap:10px 0}
  .zf-shelf-note-text{flex:1 1 100%}
  .zf-discovery{flex:1 1 100%;justify-content:space-between}
  .zf-filter-section{flex-direction:column;align-items:stretch}
  .zf-filter-left,.zf-sort-wrapper{width:100%;align-items:stretch}
  .zf-select{width:100%;min-width:0}
}

@media (max-width:480px){
  .zf-hero-wrapper{padding:24px 18px}
  .zf-hero-title{font-size:27px}
  .zf-hero-sub{font-size:16px}
  .zf-shop-main{padding:26px 16px 56px}
  .zf-filter-section{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:end;gap:8px;margin-bottom:12px}
  .zf-filter-left,.zf-sort-wrapper{min-width:0}
  .zf-select{padding:12px 30px 12px 11px;background-position:right 9px center;font-size:12px}
  .zf-assure{font-size:14px;gap:5px 10px;margin-bottom:16px}
  .zf-discovery{font-size:14px;margin-bottom:16px}
  .zf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
  /* 152 -> 144: gorsel "max-width:78%" ile GENISLIKTEN sinirli (390px'de 119.7px),
     kalan ic yukseklik 126px oldugu icin optik olcek DEGISMEZ. */
  .zf-card-media{height:144px;padding:9px}
  .zf-card-info{padding:11px 11px 12px}
  /* Uzun yer adlari (KOPRUBASI · MANISA) daha dengeli sarilsin; kisaltma yok,
     break-word yalnizca tek kelime satira sigmazsa devreye girer. */
  /* 390px'te 10px/.08em ile "KENDİ TARLALARIMIZDAN" tek satıra sığmıyordu:
     blok 3 satıra çıkıp (ilk satırda yalnız "KENDİ") 39px tutuyor ve 44px'lik
     ürün adıyla neredeyse eşit ağırlığa ulaşıyordu. Yalnız <=480px: harf aralığı
     .08 -> .05em, punto 10 -> 9.5px, kalınlık 600 -> 500. Metin, rengi, büyük
     harf düzeni ve masaüstü değerleri aynı; blok 2 satıra ve 24.7px'e iner. */
  .zf-card-origin{font-size:9.5px;font-weight:500;letter-spacing:.05em;line-height:1.3;margin-bottom:4px;text-wrap:balance;overflow-wrap:break-word}
  .zf-shop-wrapper.zf-shop-wrapper .zf-card-title{font-size:19px;line-height:1.16}
  .zf-card-variant{font-size:12.5px;margin-bottom:6px}
  .zf-sizes{gap:5px;margin-bottom:9px}
  /* Dokunma hedefi 36 -> 44px. Gorsel dil ayni; yalnizca min-height buyur. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-size{min-height:44px;padding:6px 10px;font-size:12px}
  .zf-note{font-size:13.5px;line-height:1.4;padding-top:8px;margin-bottom:9px}
  .zf-note-tag{font-size:11px;margin-bottom:3px}
  .zf-note-fee{font-size:13px;margin-top:4px}
  /* 420-480px'te ücret cümlesi İKİ satıra sarar; rezerv iki satır + 4px.
     (FINAL 3A ölçümü: 420px'te 36px = 1,98 satır — bu aralıkta değişmedi.) */
  .zf-fee-slot{font-size:13px;line-height:1.4;min-height:40px;min-height:calc(1lh * 2 + 4px)}
  .zf-card-footer{gap:8px;padding-top:2px}
  .zf-price-now{font-size:19px}
  .zf-price-unit{font-size:13px;line-height:1.2}
  .zf-unit-rate{font-size:11.5px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart{font-size:11px;padding:12px 8px;letter-spacing:.07em}
  .zf-after{font-size:14px}
  .zf-mp{font-size:14px;margin-top:32px}

  /* ---------------- MOBIL ILK EKRAN (18 Eylul 2026) ----------------
     390px'te ilk urun karti y=660'ta basliyordu: musteri hero + kontrol +
     sart metnini gecmeden hicbir urun/fiyat/CTA gormuyordu.
     Hicbir bilgi KALDIRILMADI. Kargo/ek bedel sarti, kampanya kurali,
     kesif satiri, filtre ve siralama aynen yerinde. Yalnizca dikey bosluk
     ve IKINCIL metnin puntosu sikistirildi. Dokunma hedefleri korunuyor:
     select 49px, boy secici 44px, kesif dugmesi 44px, Sepete Ekle 44px.
     Yalnizca <=480px; masaustu ve tablet degerleri DEGISMEZ. ------------ */

  /* Hero: 180 -> 177px. Baslik punto ve satir sayisi AYNI kalir.
     Ust dolgu 24 -> 46px BUYUTULDU, kucultulmedi: temanin header'i
     (header.zafir-header, z-index 9999999, kutu 128..193) hero'nun ustune
     biniyor ve yer adi satirini yutuyordu. 24px'te satir 171'de basliyor,
     yani 193'e kadar header'in altinda kaliyordu; iki satirken yalnizca
     ikinci satir ("...MANISA") goruluyordu. Tek satira indirilince tamamen
     kaybolacakti. 46px ile satir 193'te basliyor ve ilk kez BUTUNUYLE
     goruluyor. Kazanc alt dolgudan (24 -> 16) ve satir sayisindan gelir. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-hero-wrapper{padding:46px 18px 16px}
  /* Yer adi satiri 12px/.22em ile 354px'lik alana sigmayip iki satira
     tasiyordu (38px). 10.5px/.14em ile tek satira iner (17px). Metin,
     renk, buyuk harf duzeni ve masaustu degerleri aynen korunur. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-eyebrow{font-size:10.5px;letter-spacing:.14em;margin-bottom:7px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-hero-title{margin-bottom:8px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-shop-main{padding:18px 16px 56px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-filter-section{margin-bottom:10px;padding-bottom:10px}
  .zf-shop-wrapper.zf-shop-wrapper .zf-filter-left,
  .zf-shop-wrapper.zf-shop-wrapper .zf-sort-wrapper{gap:5px}
  /* Sart metni: 14/1.5 -> 13/1.42. Kampanya kurali 4 satirdan 3 satira
     iner; cumlelerin hicbiri kirpilmaz. 13px, karttaki kanit satiriyla
     (13.5px) ayni olcek ailesinde kalir. Ozgulluk ikiye katlandi cunku
     Elementor'un p kurali (0,1,1) tekil .zf-assure'u yeniyor. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-assure{font-size:13px;line-height:1.42;padding-top:9px;margin-bottom:0}
  /* Iki sart cumlesi -6px ile ust uste biniyor ve tek blok gibi okunuyordu;
     +4px ile ayri ama bitisik kalirlar. Sikisiklik artmaz, azalir. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-assure+.zf-assure-rules{margin-top:4px;padding-top:0}
  .zf-shop-wrapper.zf-shop-wrapper .zf-discovery{padding-top:8px;margin-bottom:12px;font-size:14px;line-height:1.5}
  /* Mobil yiginin olculeri KORUNUR: raf notu sarmallari display:contents ile
     duzenden tamamen cikar, cocuklar yine .zf-container'in dogrudan cocugu
     gibi akar. Boylece <=480px geometrisi bir onceki turdaki degerlerde kalir. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-shelf-note,
  .zf-shop-wrapper.zf-shop-wrapper .zf-shelf-note-text{display:contents}

  /* ---------------- MOBIL SART METNI RAFIN ALTINA (18 Eylul 2026) ----------
     390px'te ilk urun karti y=541'de basliyordu; bunun 87px'i gridin USTUNDEKI
     iki sart cumlesiydi. Musteri rafa varmadan once dort satir kosul metni
     okuyordu. Hicbir metin GIZLENMEDI, KISALTILMADI ve KOPYALANMADI; yalnizca
     <=480px'te gorsel sirasi degisti: sartlar gridin ALTINA iner.

     Yontem: yukaridaki display:contents sayesinde iki <p class="zf-assure">
     ve .zf-discovery zaten .zf-container'in dogrudan cocugu gibi akiyor.
     Container'i yalnizca bu breakpoint'te dikey flex yapmak, order'i
     kullanilabilir kiliyor. Varsayilan order:0 olan ogeler (filtre, kesif,
     status, grid) DOM sirasinda kalir; yalnizca sart cumleleri ve pazaryeri
     satiri tasinir. DOM, HTML, PHP ve JS DEGISMEZ.

     Erisilebilirlik notu: ekran okuyucu sirasi DOM sirasidir, yani sartlar
     rafin ONCESINDE okunur. Tasinan iki oge odaklanabilir cocuk icermeyen
     statik <p>'dir; klavye sirasi hic degismez.

     481px ve uzeri ETKILENMEZ: bu kurallar yalnizca bu media block'un
     icindedir ve orada .zf-container duz blok olarak kalir. ------------- */
  .zf-shop-wrapper.zf-shop-wrapper .zf-container{display:flex;flex-direction:column}
  .zf-shop-wrapper.zf-shop-wrapper .zf-assure{order:1}
  .zf-shop-wrapper.zf-shop-wrapper .zf-mp{order:2}
}

/* ============ HAREKET / KARŞITLIK ============ */
/* ---- ÜCRET REZERVİ, DAR TELEFON (FINAL 3A, 21 Eylül 2026) -------------
   Ölçüm: ücret cümlesi 420-480px'te 2 satır (36px), 360-410px'te 3 satır
   (55px). Tek bir rezerv iki aralıkta da doğru olamaz; bu yüzden yalnız
   sarmanın gerçekten değiştiği 410px'te ikinci bir eşik açılır.
   Kurul viewport'ları (390 ve 360) bu aralıktadır ve rezerv orada BİREBİR
   oturur. Metin, kural, tutar ve tetikleyen durum DEĞİŞMEZ; eklenen tek
   şey boş geometri rezervidir (metin, pseudo içerik, rol, odak YOK). */
@media (max-width:410px){
  .zf-shop-wrapper.zf-shop-wrapper .zf-fee-slot{min-height:59px;min-height:calc(1lh * 3 + 4px)}
}

@media (prefers-reduced-motion:reduce){
  .zf-shop-wrapper *,.zf-shop-wrapper *::before,.zf-shop-wrapper *::after{transition:none!important;animation:none!important}
  .zf-card:hover .zf-card-media img{transform:none}
  /* v30 ile aynı: animasyon kapalıyken yaprak sabit ve görünür kalır. */
  .zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-busy::after,
  .zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.is-loading::after,
  .zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart.loading::after{opacity:.9;transform:none}
}
@media (forced-colors:active){
  .zf-card{border:1px solid CanvasText!important}
  .zf-card-title,.zf-price-now,.zf-note-tag{color:CanvasText!important}
  .zf-size[aria-current="true"],.zf-size[aria-pressed="true"]{background:Highlight!important;color:HighlightText!important}
  .zf-shop-wrapper.zf-shop-wrapper .zf-btn-cart{color:ButtonText!important;background:ButtonFace!important;border:1px solid ButtonText!important}
}