.es-pay{margin:0;padding:0;background:transparent;border:0;box-shadow:none;color:#1F2937}
.es-pay__top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 0 14px;padding:0 2px}
.es-pay__top h2{margin:0;font-size:1.05rem;font-weight:900;color:#1F2937;letter-spacing:-.02em}
.es-pay__lead{margin:2px 0 0;font-size:12px;color:#6B7280;line-height:1.4;font-weight:650}
.es-pay-feed{display:flex;flex-direction:column;gap:14px;max-height:none;overflow:visible;padding:0 0 8px}
.es-pay-card{background:rgba(255,255,255,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:1.35rem;overflow:hidden;border:1px solid rgba(229,231,235,.95);box-shadow:0 1px 2px rgba(15,23,42,.04),0 8px 22px rgba(15,23,42,.05)}
.es-pay-card__head{display:flex;align-items:center;gap:10px;padding:12px 14px 8px}
.es-pay-card__who{display:flex;align-items:center;gap:10px;min-width:0;flex:1;text-decoration:none;color:inherit}
.es-pay-card__av{width:40px;height:40px;border-radius:50%;object-fit:cover;background:#E5E7EB;flex:0 0 auto;display:grid;place-items:center;font-weight:850;font-size:14px;color:#1F2937}
.es-pay-card__av--ini{border:1px solid #E5E7EB}
.es-pay-card__meta-col{display:flex;flex-direction:column;gap:1px;min-width:0}
.es-pay-card__meta-col strong{font-size:14px;font-weight:850;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.es-pay-card__meta-col small{font-size:11px;font-weight:650;color:#6B7280}
/* [EK GOREV 53 IS 8] Adin yaninda kompakt Takip et pili -- karoda degil,
   yalniz __head gorunurken ACIK goruntude (v3 grid ayrica gizler asagida). */
.es-pay-card__takip{flex:0 0 auto;border:1px solid #D97706;background:#fff;color:#D97706;font-weight:800;font-size:11px;padding:6px 10px;border-radius:999px;cursor:pointer;margin-left:4px}
.es-pay-card__takip[data-es-rel-action="unfollow"],.es-pay-card__takip[data-es-rel-action="unfollow_anon"]{border-color:#E5E7EB;background:#F9FAFB;color:#6B7280}
.es-pay-card__tur{flex:0 0 auto;font-size:10px;font-weight:800;color:#92400E;background:#FFF7ED;padding:4px 8px;border-radius:999px;white-space:nowrap}
.es-pay-card__koken{flex:0 0 auto;font-size:10px;font-weight:800;color:#334155;background:#F1F5F9;padding:4px 8px;border-radius:999px;white-space:nowrap;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.es-pay-card__media{margin:0;aspect-ratio:1/1;background:#F3F4F6;overflow:hidden;position:relative}
.es-pay-card__media img,.es-pay-card__media video{width:100%;height:100%;object-fit:cover;display:block}
.es-pay-card__media--vid video:not([poster]){background:linear-gradient(135deg,#1F2937,#374151)}
.es-pay-card__vid-sure{position:absolute;right:8px;bottom:8px;background:rgba(15,23,42,.72);color:#fff;font-size:11px;font-weight:800;padding:2px 7px;border-radius:999px;pointer-events:none;line-height:1.5}
.es-pay-card__body{padding:12px 14px 14px}
.es-pay-card__body h3{margin:0 0 6px;font-size:15px;font-weight:850;color:#1F2937;line-height:1.3}
.es-pay-card__body p{margin:0 0 8px;font-size:14px;line-height:1.45;color:#374151}
.es-pay-sent{height:1px;margin:4px 0 0}
.es-pay-sent[data-state="loading"]{height:28px;border-radius:999px;background:linear-gradient(90deg,#F3F4F6,#E5E7EB,#F3F4F6);background-size:200% 100%;animation:es-pay-pulse 1.1s linear infinite}
@keyframes es-pay-pulse{to{background-position:-200% 0}}
.es-pay-more{display:none}
.es-pay-compose{margin:0 0 14px;border-radius:1.25rem;border:1px solid #E5E7EB;background:rgba(255,255,255,.88);overflow:hidden}
.es-pay-compose>summary{list-style:none;cursor:pointer;padding:14px 16px;font-weight:850;font-size:14px;color:#1F2937;display:flex;align-items:center;justify-content:space-between;gap:8px}
.es-pay-compose>summary::-webkit-details-marker{display:none}
.es-pay-compose>summary span{font-size:12px;font-weight:650;color:#6B7280}
.es-pay-compose[open]>summary{border-bottom:1px solid #F3F4F6}
/* GOREV 152 IS 3 + GOREV 153 IS 0 duzeltmesi, 30.08 -- M277/M290:
   Cekmece zaten Yayinlaya basinca acik geliyor, Paylas basligina bir
   daha basmak ikinci dokunustu (patron gerek yok dedi). Sarmalayici
   (details etiketi) SILINMEDI cunku es-paylas-form capasi hala ona
   guveniyor, icine METIN BASILMIYOR (summary bos). [DUZELTME, Eftal
   M290 -- height:0+overflow:hidden GIZLEMEYDI, patronun kuraliyla
   catisiyordu] Simdi yalniz dolgu/kenarlik sifirlaniyor -- icerik zaten
   bos oldugu icin dogal yukseklik kendiliginden sifira yakin kaliyor,
   ayrica bir yukseklik/overflow zorlamasi YOK. */
.es-pay-compose--tek>summary{padding:0;margin:0;border:0}
.es-pay-form{padding:14px 16px 16px}
.es-pay-form h3{display:none}
.es-pay-form .es-pay-row{display:flex;flex-direction:column;gap:6px;margin:0 0 12px;font-size:13px;font-weight:700}
.es-pay-form input,.es-pay-form textarea,.es-pay-form select{padding:12px;border:1px solid #E5E7EB;border-radius:12px;font-weight:400;font-size:15px}
.es-pay-form input[type=file]{padding:14px;border:2px dashed #FDBA74;background:#FFFBEB}
.es-pay-form button[type=submit]{background:#1F2937;color:#fff;border:0;padding:12px 18px;border-radius:12px;font-weight:800;cursor:pointer;width:100%}
.es-mh__akis .es-pay{border:0;box-shadow:none;padding:0;background:transparent}
.es-mh__akis>.es-mh__sec-h,.es-mh__akis>.es-mh__hint{display:none!important}
.es-pay-ok{background:#dcfce7;color:#166534;padding:10px 12px;border-radius:8px;margin:0 0 12px}
.es-pay-err{background:#fee2e2;color:#991b1b;padding:10px 12px;border-radius:8px;margin:0 0 12px}
/* [GOREV 96 IS 2③] Basarili gonderimin onizlemesi — yuklenen dosya gorunur.
   Renk UYDURULMADI: hemen ustundeki .es-pay-ok seridiyle ayni zemin, metin
   de paletin --es-ok'u (0004-9004-es-tema.php). Yeni bir yesil tonu
   sisteme sokulmadi. */
.es-pay-onizleme{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:8px;border-radius:10px;background:#dcfce7;color:var(--es-ok,#166534)}
.es-pay-onizleme span{font-size:12px;font-weight:800}
.es-pay-onizleme__medya{width:96px;height:96px;object-fit:cover;border-radius:8px;display:block}
.es-pay-mah-uyari{margin:0 0 6px;padding:9px 12px;border-radius:8px;background:#fef3c7;color:#92400e;font-size:12px;font-weight:800;line-height:1.4}
select[name="mahalle_id"]:required:invalid{border-color:#dc2626!important;box-shadow:0 0 0 2px rgba(220,38,38,.18)}
.es-pay-rule{font-size:12px;color:#6B7280;background:#F9FAFB;border:1px solid #E5E7EB;padding:10px;border-radius:8px;margin:0 0 14px;line-height:1.4}
.es-sp-pay-mod{margin:0 0 24px;padding:16px;background:#fff7ed;border:2px solid #f26522;border-radius:14px}
.es-sp-pay-mod h2{margin:0 0 8px;font-size:18px;color:#9a3412}
.es-sp-pay-badge{display:inline-block;background:#f26522;color:#fff;font-size:12px;font-weight:800;padding:3px 8px;border-radius:999px;margin-left:6px;vertical-align:middle}
.es-sp-pay-item{padding:12px 0;border-bottom:1px solid #fed7aa}
.es-sp-pay-item img{max-width:120px;border-radius:8px;display:block;margin:8px 0}
.es-sp-pay-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.es-sp-pay-actions button{border:0;padding:10px 14px;border-radius:8px;font-weight:700;cursor:pointer}
.es-sp-pay-actions .ok{background:#15803d;color:#fff}
.es-sp-pay-actions .no{background:#b91c1c;color:#fff}
.es-pay-oy{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.es-pay-oy button{border:1px solid #E5E7EB;background:#F9FAFB;border-radius:999px;padding:8px 12px;font-weight:700;cursor:pointer;font-size:12px;color:#1F2937}
/* [EK GOREV 53 IS 7, M86] Esnaf kartinin acilinca gosterdigi Ara/Yol
   tarifi/Magazayi kesfet -- YENI stil yazilmadi, es-pay-oy sinifinin
   ayni pil gorunumu <a> etiketine de uygulandi (paylasimda button,
   esnafta navigasyon linki -- eylem farkli, gorunum ayni, M81). */
.es-pay-oy a{border:1px solid #E5E7EB;background:#F9FAFB;border-radius:999px;padding:8px 12px;font-weight:700;font-size:12px;color:#1F2937;text-decoration:none;display:inline-flex;align-items:center}
.es-pay-oy button.es-pay-oy--bad{border-color:#FECACA;background:#FEF2F2;color:#991B1B}
.es-pay-oy button.is-done{opacity:.7;cursor:default}
.es-pay-oy--sikayet{margin-left:auto;border:1px solid #FDE68A!important;background:#FFFBEB!important;color:#92400E!important;border-radius:999px!important;width:34px;height:34px;padding:0!important;display:inline-flex!important;align-items:center;justify-content:center;cursor:pointer}
/* [GOREV 263 Is 2, patron 01.09: "Sikayet ete bastigim zaman gene butonun
   altinda kaliyor"] 259 ile AYNI SINIF SORUN, farkli bilesen: sayfa
   dibine yapisan sheet (align-items:flex-end) ile alt cubuk
   (.es-mobil-nav, 1170-3679) ust uste biniyor. Cozum yine DOLGU, z-index
   yarisi YOK: kapsayiciya --es-mobil-nav-yukseklik + safe-area dolgusu.
   Sabit piksel yazilmadi; 1000-3390 .es-mh-sheet ve 0070-4399 atlas
   cekmecesi ile BIREBIR ayni hazir kalip (D6/M78). */
.es-ilan-sikayet-sheet{position:fixed;inset:0;z-index:1000030;display:flex;align-items:flex-end;justify-content:center;background:rgba(15,23,42,.5);padding-bottom:calc(var(--es-mobil-nav-yukseklik,68px) + env(safe-area-inset-bottom,0px) + 6px);box-sizing:border-box}
.es-ilan-sikayet-sheet[hidden]{display:none}
.es-ilan-sikayet-sheet__panel{width:min(480px,100%);max-height:82vh;overflow:auto;background:#fff;border-radius:1.25rem 1.25rem 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom,0px))}
/* [GOREV 263 Is 2] Yukaridaki kuralin renk/yerlesimine DOKUNULMADI (ayri
   satir, tema-hex olcumu bozulmasin). Kapsayiciya dolgu verilince 82vh
   kisa ekranlarda kalan alandan buyuk kalabilir; flex-end oldugu icin
   panel bu kez USTTEN tasip basligi goturur -- 259 ile ayni emniyet. */
.es-ilan-sikayet-sheet__panel{max-height:min(82vh,calc(100vh - var(--es-mobil-nav-yukseklik,68px) - env(safe-area-inset-bottom,0px) - 24px))}
.es-ilan-sikayet-sheet__grab{width:40px;height:4px;border-radius:4px;background:#E5E7EB;margin:0 auto 12px}
.es-ilan-sikayet-sheet__panel h3{margin:0 0 12px;font-size:16px;font-weight:900;color:#1F2937}
.es-ilan-sikayet__reasons{display:flex;flex-direction:column;gap:8px;margin:0 0 12px}
.es-ilan-sikayet__reason{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid #E5E7EB;border-radius:12px;font-weight:700;font-size:14px;color:#1F2937;cursor:pointer}
.es-ilan-sikayet__reason input{width:18px;height:18px}
.es-ilan-sikayet__reason--acil{border-color:#FCA5A5;background:#FEF2F2;color:#991B1B}
.es-ilan-sikayet__not-lab{display:block;font-size:12px;font-weight:700;color:#64748b;margin:0 0 12px}
.es-ilan-sikayet__not-lab textarea{width:100%;box-sizing:border-box;margin-top:6px;padding:10px;border:1px solid #cbd5e1;border-radius:10px;font-family:inherit}
.es-ilan-sikayet-sheet__panel button[type="submit"]{width:100%;min-height:48px;border:0;border-radius:12px;background:#0f172a;color:#fff;font-weight:800;cursor:pointer;margin-top:4px}
.es-ilan-sikayet__vazgec{width:100%;min-height:44px;border:1px solid #E5E7EB;background:#fff;border-radius:12px;color:#1F2937;font-weight:700;cursor:pointer;margin-top:8px}
.es-pay-card__more{flex:0 0 auto;border:0;background:transparent;color:#6B7280;width:32px;height:32px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.es-pay-card__more:hover,.es-pay-card__more:focus{background:#F3F4F6;color:#1F2937;outline:0}
.es-pay-card__more svg{width:18px!important;height:18px!important;flex:0 0 auto!important;display:block!important}
.es-pay-more__nav{display:flex;flex-direction:column;gap:8px}
.es-pay-more__row{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;box-sizing:border-box;text-align:left;padding:12px 14px;border:1px solid #E5E7EB;border-radius:12px;background:#F8FAFC;font-size:14px;font-weight:800;color:#1F2937;cursor:pointer;font-family:inherit}
.es-pay-more__row small{font-size:11px;font-weight:650;color:#6B7280}
.es-pay-more__row--danger{color:#991B1B;border-color:#FCA5A5;background:#FEF2F2}
.es-pay-more__row--danger small{color:#B91C1C}
.es-pay-more__row--cancel{align-items:center;text-align:center;background:#fff;margin-top:2px}
.es-pay-mah-kaldir{margin:10px 0 0}
.es-pay-mah-btn{appearance:none;border:1px solid #E5E7EB;background:#fff;border-radius:9px;padding:8px 12px;font-weight:700;cursor:pointer;font-size:12px;color:#1F2937}
.es-pay-hedef{gap:8px!important}
.es-pay-kod{font-size:11px!important;color:#64748b!important;margin:6px 0 0!important}
/* [74. tur, C4-4] 3-sutun 1:1 izgara — Instagram Kesfet referansi. Kapsayici
   sinifi bu dosyanin KENDI cagiran govdesinde eklendi (D6, bayrak kapaliyken
   .es-pay-feed--v3 hic basilmiyor, eski dikey akis aynen kalir). */
.es-pay-feed--v3{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
/* [GÖREV 220, 31.08 -- M338] Patron: Kesfette videolar cok kucuk,
   anlasilmiyor; kart/izgara buyusun, sayi (12) ayni kalsin. Canlida
   375 piksel genislikte olculdu: kart 99x99px, 3 sutun. Sayi DEGISMEDI
   (D6: bu grid yalniz CSS ile dizilir, PHP tarafi zaten 12 donduruyor)
   -- yalniz dar ekranda 2 sutuna dusuluyor (yaklasik yuzde 80 buyume).
   Genis ekran (769px ve uzeri) DEGISMEDI, 3 sutun aynen kaliyor --
   media query bunun disinda hicbir kural degistirmiyor.
   [!] Ikinci, ayri kayip da olculmustu: ekran 375 piksel, .es-mh 330
   piksel (45 piksel kayip). .es-mh sinifinin kendi yatay dolgusu KESIN
   biliniyor (10px, bu dosyanin DISINDA, D6: deger buradan okunmadan
   kopyalanmadi, 1000-3390 dosyasindaki mahalle standardi) -- kod
   tabaninin kendi deseniyle (1000-3390 dosyasindaki es-mh--meydan
   es-medya kurali negatif yan margin kullaniyor, D6: ayni teknik,
   width 100vw KULLANILMADI -- masaustunde yatay kaydirma actigi bilgisi
   kod tabaninda zaten yazili) yalniz izgaranin kendi kapsayicisi
   negatif margin ile genisletiliyor, .es-mh sinifinin kendi dolgusu
   KALKMIYOR (diger bolumleri hizalamaya devam ediyor). body.es-mh-page
   ile sinirlandi -- bu bilesenin baska bir sayfada farkli dolguyla
   kullanilip kullanilmadigi OLCULMEDI.
   [!] KALAN FARK (Astra temasinin ast-container sinifinin kendi yatay
   dolgusu, 45 pikselin geri kalani) kod tabaninda BULUNAMADI --
   customizer/tema degeri, bu dosyada yazili degil. Kesin piksel degeri
   verilmeden ona dokunmak tahmin olurdu; dokunulmadi, canli olcum
   Eftalde (N19). */
@media(max-width:768px){
	body.es-mh-page .es-pay-feed--v3{grid-template-columns:repeat(2,1fr);margin-left:-10px;margin-right:-10px}
}
.es-pay-feed--v3 .es-pay-card{position:relative;aspect-ratio:1/1;border-radius:2px;border:0;box-shadow:none;background:#111827;backdrop-filter:none;-webkit-backdrop-filter:none}
/* Gorseli/videosu olmayan (yalniz metin) paylasim karede bos kalmasin —
   K37/K49 bos satir basilmaz, sahte kare doldurulmaz. */
.es-pay-feed--v3 .es-pay-card:not(.es-pay-card--media){display:none}
.es-pay-feed--v3 .es-pay-card__head,.es-pay-feed--v3 .es-pay-card__body{display:none}
.es-pay-feed--v3 .es-pay-card__media{position:absolute;inset:0;margin:0;aspect-ratio:auto;height:100%}
/* [GOREV 258, patron 01.09] .es-pay-card__koken-ov KURALLARI KALDIRILDI
   (GOREV 51 IS 2 icinde eklenmislerdi). Patron: "Kesfet sayfasinin ustundeyken
   gozukmesin, tikladiginda gozuksun sadece." O kopya YALNIZ v3 kapali
   izgarada gosteriliyordu; orada artik istenmiyor, baska hicbir gorunumde
   gorunmuyordu -- span kendisi de yukarida es_pay_kart icinde
   kaldirildi. Koken bilgisi KAYBOLMADI: kart tiklaninca .is-open ile
   .es-pay-card__head{display:flex} geri geliyor (asagida) ve baslikteki
   ASIL rozet .es-pay-card__koken orada okunuyor. */
.es-pay-feed--v3 .es-pay-card__tur{position:absolute;top:6px;right:6px;z-index:2;font-size:9px;padding:3px 7px;background:rgba(255,255,255,.85)}
/* Is V CANLI BULGU duzeltmesi, 32. oturum sonrasi -- patron: mahalle
   kesfetindeki videolardan bahsetmisti. Onceden burada kart yalniz IZGARA
   ICINDE buyuyordu (tam ekran degildi). Karar geregi (DURUM.md, KARE
   VITRIN + TAM EKRAN GEZGIN maddesi), es-meydan-lb gibi YENI bir lightbox
   YAZILMADI (D6) -- var olan is-open mekanizmasi CSS ile tam ekrana
   cevrildi, cila (0270-4359) kendi chrome+swipe ozelligini buna da
   (polishPayFeed) baglar. */
.es-pay-feed--v3 .es-pay-card.is-open{position:fixed;inset:0;z-index:999985;grid-column:auto;aspect-ratio:auto;border-radius:0;border:0;box-shadow:none;display:flex;flex-direction:column;justify-content:center;gap:10px;background:rgba(15,23,42,.94);padding:20px;box-sizing:border-box;overflow-y:auto}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__head{display:flex;order:2;color:#F8FAFC}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__head .es-pay-card__meta-col strong{color:#F8FAFC}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__head .es-pay-card__meta-col small{color:#CBD5E1}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__body{display:block;order:3;color:#F1F5F9}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__body h3{color:#F8FAFC}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__body p{color:#E2E8F0}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__media{position:relative;inset:auto;order:1;aspect-ratio:auto;height:auto;flex:0 0 auto;max-height:60vh;border-radius:1.15rem;overflow:hidden}
.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__media img,.es-pay-feed--v3 .es-pay-card.is-open .es-pay-card__media video{width:100%;height:100%;max-height:60vh;object-fit:contain;background:#000}
.es-pay-feed--v3 .es-pay-ilce-band,.es-pay-feed--v3>p.es-pay__lead{grid-column:1/-1}
/* [EK GOREV 52 IS 2, M82 ③ + M72 ①] Rotasyon uyeleri (esnaf/hikaye/ilan)
   tek ortak sarmalayicidan (es_mh_v3_akis_serit_html, 1000-3390) geciyor
   -- D6: uye fonksiyonlari (es_mahalle_vitrin_serit_esnaf/ilan/hikaye)
   DEGISTIRILMEDI. [GOREV 187 Is 1/2/3, 30.08 -- M307, patron ozeti:
   esnafin magaza kartinin buyuklugu gonderi kartiyla ayni olacak, oran
   ceyrekte sabit kalacak (esnaf sayisi buyuse bile), hikayeler de ayni
   kurala tabi] ESKIDEN her uye grid-column:1/-1 ile satirin TAMAMINI
   kaplayan, kendi ic mini serit/ray duzenini tasiyan bir kutuydu -- kart
   boyu gonderi kartindan KUCUKTU. Artik yalniz davet (ilce bandi, ilk
   seritte kosulsuz basilan tek istisna, asagida --davet) tam satiri
   kaplar; esnaf/hikaye/ilan uyeleri (--kare) display:contents ile kendi
   sarmalayicilarini ERITIR -- ic kartlar (.es-pay-card / .es-khh__bubble)
   DOGRUDAN #es-pay-feed izgarasinin cocugu olur, boylece gonderi
   kartinin AYNI CSS kurallarini (yukarida satir ~1004-1005) miras alir,
   yeni bir boyut kurali YAZILMADI (D6). Gorunen sayi nth-child(n+3) ile
   ikiye sabitleniyor -- tetikleyici her 6 gonderide bir calistigi icin
   (asagida akis dongusu, i mod 6) oran daima 2 bolu 8 yani ceyrekte
   kalir; esnaf/hikaye kaydi 300-500e ciksa da BUYUMEZ, cunku sinir
   veriden degil bu CSS sabitinden geliyor. */
.es-pay-feed--v3 .es-mh-akis-serit--davet{grid-column:1/-1}
/* [GOREV 261 Is 2, patron 01.09: "Izgara bozulmasin. On iki gonderide bir,
   bir sira... ekrani toplasin, bosluk kalmasin"] --kare ARTIK display:
   contents DEGIL, TAM SATIR. Onceki hal ic kartlari dogrudan izgaraya
   dokuyordu; kartlar izgara hucrelerine tek tek dustugu icin serit
   izgarayi kaydiriyor, satir sonunda BOSLUK birakiyordu.
   [!] SUTUN SAYISI YAZILMADI (PHP tarafina da, buraya da): izgara genis ekranda
   3, mahalle sayfasinda dar ekranda 2 sutun (asagida/yukarida iki ayri
   kural) -- sunucu ekran genisligini bilemez, sabit "3" yazilsa 2 sutunlu
   gorunumde serit 1,5 satir olurdu. Bunun yerine KURAL yazildi:
   grid-column:1/-1 satiri kaplar, grid-auto-flow:column + grid-auto-
   columns:1fr ic kartlari kac tane olursa olsun o satira ESIT boler.
   Boylece 1, 2 ya da 3 kart gelse de satir TAM dolar, iki sutun sayisinda
   da bosluk kalmaz. Ic .es-mh-kapi__serit display:contents ile erimeye
   DEVAM ediyor (asagida) -- kartlar dogrudan bu satirin hucreleri olur,
   gonderi kartinin AYNI CSS kurallarini miras almaya devam eder (D6). */
/* [GOREV 263, patron 01.09 canli: "Kesfette gene bosluk olusmus...
   biz uc tane esnafa sigdiracagiz diye yukarida bosluk yaptik...
   tarayicida uc tane siginiyor ama telefon iki tane sigiyor... boyutlari
   da degismis"] 261 Is 2 icindeki grid-auto-columns COZUMU GERI ALINDI.
   OLCULDU: serit KENDI grid kabi olunca 3 kart, MOBILDE 2 sutunluk satirin
   genisligine bolunuyordu -- kartlar daraliyor, aspect-ratio 1/1 yuzunden
   kisaliyor, satir yuksekligi gonderi kartindan FARKLI kaliyor ve ustte
   bosluk aciliyordu. Patronun tarifi birebir bu.
   YENI KURAL: serit yine display:contents (kartlar DOGRUDAN izgara
   hucrelerine duser, gonderi kartiyla BIREBIR ayni boyut), tam satiri
   ise KART SAYISI saglar -- masaustunde 3, mobilde 2 (asagida). Sutun
   sayisi yine PHP tarafina yazilmadi; CSS, izgaranin sutununu degistiren AYNI
   medya sorgusunda serit tavanini da degistiriyor, ikisi hep uyumlu. */
.es-pay-feed--v3 .es-mh-akis-serit--kare{display:contents}
.es-pay-feed--v3 .es-mh-akis-serit--kare>.es-mh-kapi__serit-bas{display:none}
.es-pay-feed--v3 .es-mh-akis-serit--kare>.es-mh-kapi__serit{display:contents}
/* [GOREV 194 Is 1, 30.08 -- M324-EK] n+3 -> n+4: patron izgarada ucun
   katini istiyor (3/6/9), 2 tek sayiyla izgarayi bozuyordu. Bu secici
   yalniz .es-pay-card siniflari cocuklari (ILAN kartlari) kapsiyor --
   esnaf karti (<a>, .es-pay-card tasimiyor) zaten CSSten degil
   PHPdeki array_sliceten (Is 2) sinirlaniyor, olculup rapora yazildi. */
.es-pay-feed--v3 .es-mh-akis-serit--kare>.es-mh-kapi__serit>.es-pay-card:nth-child(n+4){display:none}
/* [GOREV 263] MOBILDE TAVAN 2. Izgara ayni medya sorgusunda 2 sutuna
   dusuyor (yukarida) -- serit 3 kart tasirsa satir tasar/bozulur.
   Ikisi TEK yerde, ayni kosulda tutuluyor ki bir daha ayrisamasinlar. */
@media(max-width:768px){
	body.es-mh-page .es-pay-feed--v3 .es-mh-akis-serit--kare>.es-mh-kapi__serit>.es-pay-card:nth-child(n+3){display:none}
	body.es-mh-page .es-pay-feed--v3 .es-mh-akis-serit--kare .es-khh__bubble:nth-child(n+3){display:none}
}
/* [GOREV 261 Is 5, 01.09] Hikaye uyesi ROTASYONDAN CIKTI (patron:
   "hikayeyi cikartalim, zaten yukarida standart") -- asagidaki dort kural
   bugun ekranda calismiyor. SILINMEDILER (D6): saglayici fonksiyon
   es_mahalle_vitrin_serit_hikaye() de silinmedi, yalniz cagrisi kalkti;
   uye geri gelirse gorunumu bu kurallara bagli. Yeni yerlesim (--kare
   artik tam satir) hikaye kartlarinda da aynen calisir -- .es-khh
   display:contents ile eriyip .es-khh__bubble kutulari satirin hucreleri olur. */
/* Hikaye uyesi (.es-khh, --izgara bayragiyla zaten birim kare -- bkz.
   0780-3675 EK GOREV 53 Is 2b) ayni eritme + ikiye sabitleme burada da
   uygulanir; yeni bir hikaye motoru YAZILMADI (D6), sadece sarmalayicilar
   eritildi. */
.es-pay-feed--v3 .es-mh-akis-serit--kare .es-khh{display:contents}
.es-pay-feed--v3 .es-mh-akis-serit--kare .es-khh__head{display:none}
.es-pay-feed--v3 .es-mh-akis-serit--kare .es-khh__rail{display:contents}
/* [GOREV 194 Is 1, 30.08 -- M324-EK] n+3 -> n+4, ayni gerekce (hikaye). */
.es-pay-feed--v3 .es-mh-akis-serit--kare .es-khh__bubble:nth-child(n+4){display:none}
/* [74. tur, K54] Detay acildiginda aksiyonlar salt ikon — metin etiketi
   ekran okuyucu icin markup icinde kalir, gorsel olarak gizlenir. */
.es-pay-feed--v3 .es-pay-oy__lab{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.es-pay-feed--v3 .es-pay-oy button{display:inline-flex;align-items:center;gap:5px;padding:9px 12px;border-radius:999px}
.es-pay-feed--v3 .es-pay-oy__ico{flex:0 0 auto}
/* [GÖREV 98, 28.08 — M55/M193] Üç ekranlı paylaşım sihirbazı. */
.es-pay-wiz{display:flex;flex-direction:column;gap:14px}
.es-pay-wiz__screen{display:flex;flex-direction:column;gap:14px}
.es-pay-wiz__screen[hidden]{display:none}
.es-pay-wiz__pick{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* [GÖREV 148, 30.08 — patron ÜÇÜNCÜ kez, "sadece ikon"] Kutu artık TEK
   öğe (ikon) taşıyor — `flex-direction:column`+`gap` (metin satırlarını
   dikeyde ayırmak içindi) kalktı, kalın dolgu (26px) ikona yakışan
   ölçüye indi.
   [GOREV 155 IS 2, 30.08 -- M297] Sari kesikli cerceve BU TURDA kalkti
   (yukaridaki eski karar patron tarafindan degistirildi, 30.08: "bu
   sari kesik kesik cerceve zorunlu mu... yukaridaki QR kutusu gibi
   olsa olmuyor mu"). Yeni renk UYDURULMADI -- ayni cekmecenin (Yayinla
   sihirbazi) kendi QR kutusuyla (1170-3679, .es-mobil-paylas button.
   es-mobil-paylas__btn) AYNI kenarlik/zemin/kose yaricapi buraya
   tasindi. Tiklama alani/label/input yapisi DEGISMEDI (D6) -- yalniz
   border/background/border-radius. `.es-pay-form input[type=file]`
   kutusu (satir ~915) BU TURUN KAPSAMI DISINDA, dokunulmadi. Renkler
   literal hex DEGIL -- sitenin tek paleti (0004-9004-es-tema.php,
   GOREV 93) zaten --es-line/--es-paper tanimliyor, o degiskenler
   kullanildi (yeni renk yazilmadi; yalniz :active satirindaki -- 1170-
   3679 dosyasinin kendi rgba() literalinden BIREBIR kopyalanan -- ton
   icin tema-hex sinavi isaretli kalir). */
.es-pay-wiz__btn{display:flex;align-items:center;justify-content:center;padding:14px 10px;border:1px solid var(--es-line,#e2e8f0);border-radius:13px;background:var(--es-paper,#f8fafc);cursor:pointer;text-align:center}
.es-pay-wiz__btn:active{background:#fff3ec;border-color:rgba(242,101,34,.4)}
/* [GÖREV 138] `hidden` yerine — iOS'ta bazen dosya seçiciyi öldürüyordu.
   Ekran-okuyucu deseni (es-pay-oy__lab ile AYNI kalıp, D6/D24): kutu
   GERÇEKTEN render ediliyor, görsel olarak yok. */
.es-pay-wiz__file-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.es-pay-wiz__ico{font-size:32px;line-height:1}
.es-pay-wiz__skip{align-self:center;border:0;background:transparent;color:#6B7280;font-weight:650;font-size:12px;text-decoration:underline;cursor:pointer;padding:4px}
.es-pay-wiz__prev,.es-pay-wiz__prevmini{display:flex;justify-content:center;background:#F3F4F6;border-radius:14px;overflow:hidden}
.es-pay-wiz__prev{min-height:220px;align-items:center}
.es-pay-wiz__prev img,.es-pay-wiz__prev video{max-width:100%;max-height:60vh;display:block}
.es-pay-wiz__prevmini{width:64px;height:64px;flex:0 0 auto;border-radius:10px}
.es-pay-wiz__prevmini:empty{display:none}
.es-pay-wiz__prevmini img,.es-pay-wiz__prevmini video{width:100%;height:100%;object-fit:cover;display:block}
.es-pay-wiz__nav{display:flex;gap:10px;align-items:center}
.es-pay-wiz__nav button[type=submit]{flex:1}
.es-pay-wiz__back{border:1px solid #E5E7EB;background:#fff;color:#1F2937;font-weight:700;font-size:13px;padding:12px 14px;border-radius:12px;cursor:pointer}
.es-pay-wiz__ileri{flex:1;border:0;background:#1F2937;color:#fff;font-weight:800;padding:12px 14px;border-radius:12px;cursor:pointer}
.es-pay-wiz textarea[data-pay-aciklama]{resize:none;overflow:hidden;min-height:44px}
.es-pay-row-lab{display:block;font-size:13px;font-weight:800;color:#1F2937;margin:0 0 6px}
.es-pay-etiket{margin:0 0 12px}
.es-pay-etiket-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px}
.es-pay-etiket-chips:empty{display:none}
.es-pay-etiket-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 8px 6px 12px;border-radius:999px;background:#EEF2FF;color:#3730A3;font-size:12px;font-weight:700}
.es-pay-etiket-chip button{border:0;background:transparent;color:inherit;font-size:14px;line-height:1;cursor:pointer;padding:2px}
.es-pay-etiket-input{width:100%;box-sizing:border-box}
.es-pay-etiket-oneri{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 0}
.es-pay-etiket-oneri-el{border:1px solid #E5E7EB;background:#F9FAFB;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700;color:#1F2937;cursor:pointer}
/* [GÖREV 100 İŞ 2, 28.08 — M204] Kademe 4: "Nereye gönderilecek?" */
.es-pay-wiz__hedef{display:flex;flex-direction:column;gap:10px}
.es-pay-wiz__hedefbtn{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:2px solid #E5E7EB;border-radius:14px;background:#fff;text-decoration:none;color:#1F2937;font-weight:800;font-size:14px;cursor:pointer;text-align:left;font-family:inherit;appearance:none}
.es-pay-wiz__hedefbtn small{font-weight:600;color:#6B7280;font-size:12px}
.es-pay-wiz__hedefbtn.is-on{border-color:#1F2937;background:#F3F4F6}
.es-pay-wiz__hedefpanel{margin-top:2px}
