/** Shopify CDN: Minification failed

Line 620:2 Unexpected "}"

**/
/* Queen Elisir · Horizon üstü stil düzeltmeleri.
   Ölçüler referans/olcumler.json'dan: SMN (üst çubuk, miras satırı), Buly (ürün kartı, bant),
   Petrossian (hero, footer), Brightland (hikaye, editoryal, set). */
/* MARKA FONTLARI (16 Eyl akşam, Burak seçimi: kurgu D) — başlıklar Gambarino, gövde Gambetta.
   İkisi de Fontshare (Indian Type Foundry), ticari kullanıma açık, dosyalar temada barındırılıyor.
   Gambarino tek ağırlıkta çizilmiş (400): başlıklarda sahte kalın oluşmasın diye ağırlık 400'e sabitlendi.
   ₺ işareti için ayrı yüz (qe-lira, yalnız U+20BA): seçilen fontta ₺ yoksa sayfa bozulmasın.
   Önceki çift (Fraunces + Jost) dosyaları silinmedi, geri dönüş tek satır. */
/* Header menü fontu — 19 Eyl, Burak: "headerdaki yazanların fontunu çok beğenmedim,
   sanki biraz daha ince ve uzun olmalı harfler."
   Jost geometrik ve GENİŞ bir font (Futura soyu); inceltilebilir ama uzatılamaz.
   "Uzun harf" dar bir kesim ister, o da yeni font demek. On seçenek gösterildi,
   Burak Archivo Narrow'u seçti ve ağırlığı 500 istedi (önerdiğim 400 değil):
   dar ama sert değil, sakin duruyor.
   latin-ext ŞART — menüde ğ, ş, ı var; taşımayan font "Maazza" gibi kırık çıkarır. */
/* Fira Sans Condensed dosyaları assets'te duruyor (qe-firacond-300-*.woff2).
   Geri dönmek istenirse @font-face'i ve aşağıdaki üç değişkeni geri al. */
/* BÖLÜM BAŞLIKLARI İTALİK — 19 Eyl
   Burak: "bu tarz başlıkları daha italik bi şekilde falan yazalım, böyle biraz
   amatör duruyor. bannerlar, bu tarz başlıklar."
   Gambarino'da İTALİK YOK — Fontshare'de tek stil. `font-style:italic` yazsaydık
   tarayıcı sahte eğik üretirdi (harfleri yamultarak), o da amatörün daniskası olurdu;
   aynı sebeple Gambarino'ya sahte KALIN kilidi de konmuştu (bkz. 16 Eyl).
   Gerçek italiği olan bir serif gerekti: EB Garamond Italic — SIL OFL, Türkçe tam,
   SMN'nin menüsündeki Garamond'un muadili, yani markanın referans çizgisinde. */
@font-face{font-family:'Gambarino';font-style:normal;font-weight:400;font-display:swap;src:url('qe-gambarino.woff2') format('woff2')}

/* GÖVDE FONTU: JOST (18 Eyl, Burak onayı).
   Neden: Brightland, Nicaea ve Oli Vogue'un üçünde de gövde SANS, serif yalnız başlıkta.
   Bizde her şey Gambetta serif olduğu için sayfa ağır okunuyordu. Başlıklar Gambarino
   kaldı, marka sesi orada duruyor.
   latin-ext ŞART: yoksa ğ ş İ ı ç kırılır (bu tuzağa daha önce düşülmüştü). */
@font-face{font-family:'Jost';font-style:normal;font-weight:300;font-display:swap;src:url('qe-jost-300-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:normal;font-weight:300;font-display:swap;src:url('qe-jost-300-latin-ext.woff2') format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Jost';font-style:normal;font-weight:400;font-display:swap;src:url('qe-jost-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:normal;font-weight:400;font-display:swap;src:url('qe-jost-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Jost';font-style:normal;font-weight:500;font-display:swap;src:url('qe-jost-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:normal;font-weight:500;font-display:swap;src:url('qe-jost-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Jost';font-style:normal;font-weight:600;font-display:swap;src:url('qe-jost-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:normal;font-weight:600;font-display:swap;src:url('qe-jost-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Jost';font-style:italic;font-weight:400;font-display:swap;src:url('qe-jost-italic-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:italic;font-weight:400;font-display:swap;src:url('qe-jost-italic-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Jost';font-style:italic;font-weight:500;font-display:swap;src:url('qe-jost-italic-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Jost';font-style:italic;font-weight:500;font-display:swap;src:url('qe-jost-italic-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}
/* ₺ (U+20BA) — 19 Eyl, LİSANS TEMİZLİĞİ
   Eski `qe-lira.woff2` tek glif taşıyan 22 KB'lık bir dosyaydı ve KAYNAĞI
   BİLİNMİYORDU. Tek karakterlik bir font tanımı gereği bir ALT KÜMEdir; hangi
   fonttan kesildiyse onun lisansı geçerli olur ve bazı ücretsiz lisanslar
   (örn. Fontshare/ITF FFL md.02) alt küme çıkarmayı yazılı izne bağlıyor.
   Kaynağı bulunamadığı için dosya DEĞİŞTİRİLDİ, sorulmadı.

   Yerine Google'ın Jost diliminden alındı: `?family=Jost&text=₺` çağrısı yalnız
   bu glifi içeren woff2 üretiyor. Jost SIL OFL, yani alt küme çıkarmak zaten
   serbest, üstelik dilimi Google üretiyor. İki kazanç daha: ₺ artık yanındaki
   rakamlarla AYNI fontta (eskiden farklıydı) ve dosya 22 KB yerine 1,6 KB.

   Neden ayrı dosya gerekiyor: Google'ın Jost alt kümelerinde U+20BA BİLEREK yok
   (latin-ext aralığı U+20A0-20AB ve U+20AD-20CF, yani 20BA atlanmış). Ölçtüm:
   Jost, Gambarino ve Gambetta'nın üçünde de ₺ yok. */
@font-face{font-family:'QE-Lira';font-style:normal;font-weight:400;font-display:swap;src:url('qe-lira-400.woff2') format('woff2');unicode-range:U+20BA}
@font-face{font-family:'QE-Lira';font-style:normal;font-weight:500;font-display:swap;src:url('qe-lira-500.woff2') format('woff2');unicode-range:U+20BA}
@font-face{font-family:'QE-Lira';font-style:normal;font-weight:600;font-display:swap;src:url('qe-lira-600.woff2') format('woff2');unicode-range:U+20BA}
:root, body, .shopify-section, .section, [class*='color-']{
  --font-heading--family:'Gambarino', 'QE-Lira', Georgia, 'Times New Roman', serif !important;
  --font-subheading--family:'Gambarino', 'QE-Lira', Georgia, serif !important;
  --font-accent--family:'Gambarino', 'QE-Lira', Georgia, serif !important;
    /* GÖVDE FONTU: JOST — 18 Eyl, Burak'ın BUGÜNKÜ kararı.
     16 Eyl'de kurgu D (Gambarino başlık + Gambetta gövde) seçilmişti. 18 Eyl'de Burak
     Brightland'le karşılaştırma isteyince soruldu: "gövde sans olsun mu, serif mi kalsın"
     — seçenekler ve sonuçları yazılıydı — ve "gövde sans olsun" dedi. Yani bu sessiz bir
     geri alma DEĞİL, yeni ve bilgili bir karar; 16 Eyl'in yerine geçiyor.
     Başlıklar Gambarino serif kalıyor, marka sesi orada.
     Dayanak: Brightland (CircularXX), Nicaea, Oli Vogue — üçünde de gövde sans.
     latin-ext şart, yoksa ğ ş İ ı ç kırılır.
     NOT (18 Eyl): yan oturum bu satırı bir kez Gambetta'ya geri aldı çünkü ölçümünü
     değişiklikten SONRA alıp "eskiden de Jost'muş, sessizce değişmiş" sandı. Değişiklik
     bugünündü ve onaylıydı. Bir daha geri alınacaksa önce Burak'a sorulacak. */
  --font-body--family:'Jost', 'QE-Lira', -apple-system, 'Helvetica Neue', Arial, sans-serif !important;
  --font-paragraph--family:'Jost', 'QE-Lira', -apple-system, 'Helvetica Neue', Arial, sans-serif !important;
}

:root{ --qe-ink:#2B2222; --qe-mute:#6E6560; --qe-line:#E6E1DA; --qe-gold:#9A7A33; --qe-zumrut:#16301F; --qe-bordo:#3F1722; --qe-pudra:#F1E3E0; --qe-krem:#F5F3EC; }

/* ÜST ÇUBUK — SMN */
/* Menü yazısı (17 Eyl, d7+77 ortak kararı): 14px/.12em/uppercase idi.
   Uppercase lang="tr" yüzünden zaten kalkmıştı (OLİVE çıkıyordu). Kalan sorun harf aralığıydı:
   Gambetta serif bir gövde fontu, .12em onu seyreltip menüyü zayıflatıyordu. 15px Burak'ın
   mobil taban puntosuyla da uyumlu. */
.header .menu-list__link, .header .menu-list__item > a, .header nav a{
  font-size:16px !important; letter-spacing:.08em !important; text-transform:none !important; }

/* MENÜ ÇEKMECESİ (mobil) — hiyerarşi düzeltmesi.
   Sorun: "Koleksiyon" ve altındaki dört koleksiyon aynı hizada, aynı puntoda, aynı büyük harfte
   çıkıyordu; hangisinin hangisinin içinde olduğu okunmuyordu. Ayrıca 15px büyük harf serif
   bir gövde fontunda duvar gibi duruyordu.
   Referans SMN (referans/olcumler.json > smn-header): menü maddeleri text-transform:none,
   üst madde 20px aralıksız, alt maddeler 18px / 1.44px (.08em). Hiyerarşiyi punto kuruyor,
   büyük harf değil. Aynı kurguyu 390px çekmeceye ölçekledim: 19 / 17px.
   Dokunma hedefleri 44px'in altına inmiyor (min-height ile sabitlendi). */
/* Mobil çekmece de header menüsüdür: masaüstünü Archivo Narrow'a çevirince
   burası Jost'ta kalmıştı, yani AYNI menü iki fontta konuşuyordu. Çekmece
   ayrı sınıf ailesi kullanıyor (menu-drawer__*), masaüstü seçicisi buraya
   uğramıyor. Punto çekmecenin kendi ölçeğinde kalıyor (19/17), yalnız aile
   ve ağırlık ortak değişkenden geliyor. */
.menu-drawer__menu-item{ text-transform:none !important;
  font-family:var(--qe-menu-font) !important; font-weight:var(--qe-menu-agirlik) !important; }
.menu-drawer__menu-item--mainlist{
  font-size:19px !important; letter-spacing:normal !important;
  min-height:46px; display:flex; align-items:center; }
/* ══════════════════════════════════════════════════════════════════════════
   MOBİL ÇEKMECE MENÜSÜ — 21 Eyl · Burak: "güzelleştirelim, görsel kullan,
   sağa sola taşma olmasın, sade ve premium dursun, her ögenin konumunu düşün."

   ÖNCEKİ HÂLİ (ekran görüntüsünden): grup başlığı kalın, alt bağlantılar
   .08em harf aralıklı soluk gri, satır araları çok açık, hiç görsel yok,
   sayfa aşağı doğru uzayıp gidiyordu.

   KURULAN DÜZEN:
     grup başlığı  Jost 500 · 15px · .14em · büyük harf · soluk mürekkep
                   (bölüm etiketi dili: sitede ÜST SATIRLAR da böyle)
     alt bağlantı  56px kare + Jost 400 16px mürekkep, tek satır ritmi 68px
     ayraç         yalnız GRUPLAR arasında ince çizgi; satır aralarında yok
   Harf aralığı alt bağlantılardan kaldırıldı: 17px .08em ile "Kendi setinizi
   oluşturun" dar ekranda ikinci satıra taşıyordu. Şimdi 16px normal aralık.
   ══════════════════════════════════════════════════════════════════════════ */
.menu-drawer__menu-item--mainlist{
  font-size:15px !important; font-weight:500 !important;
  letter-spacing:.14em !important; text-transform:uppercase !important;
  color:var(--qe-mute,#6E6560) !important;
  min-height:0 !important; padding:0 0 10px !important;
}
.menu-drawer__menu-item--child{
  font-size:16px !important; letter-spacing:0 !important;
  color:var(--qe-ink,#2B2222) !important;
  padding-inline-start:0 !important; padding-block:6px !important;
  min-height:68px; display:flex; align-items:center; gap:14px;
}
/* Küçük kare: köşe ölçeğinden, sabit, esnemiyor. */
.qe-cekmece__kare{
  flex:none; width:56px; height:56px; overflow:hidden;
  border-radius:var(--qe-kap-kose,0px); background:var(--qe-krem,#F5F3EC);
}
.qe-cekmece__kare img{ width:100%; height:100%; object-fit:cover; display:block; }
/* Yazı taşmasın: uzun başlık kareyi ezmeden ikinci satıra insin. */
/* Satır SOLDAN başlar. Tema çekmece bağlantısını `justify-content:space-between`
   ile diziyor; kare eklenince yazı sağ kenara fırlıyordu (ölçüldü: kare solda,
   etiket 317'ye yapışık). Kare + yazı tek grup, sola yaslı. */
.qe-cekmece__satir{ justify-content:flex-start !important; text-align:left !important; }
.qe-cekmece__satir .menu-drawer__menu-item-text{
  min-width:0; overflow-wrap:anywhere; line-height:1.3; text-align:left;
}
/* ALT BAŞLIĞI OLMAYAN üst bağlantı (ör. "Setini Oluştur") grup etiketi DEĞİL,
   tıklanacak bir satır. Yukarıdaki büyük harf/soluk kuralı ona uygulanmıyor:
   uygulanırsa sayfaya giden tek bağlantı başlık gibi görünüp kayboluyor. */
/* 22 Eyl · Burak: "setini oluştur başlığının fontu ufak punto niye böyle?"
   Bu satır 400 ağırlıktaydı; hem üstündeki grup başlıkları (20/600) hem de aynı
   listedeki KARDEŞ satırlar ("Hediye setleri", "Tarifler" — 16/500) ondan kalındı,
   yani menüdeki en zayıf yazı oydu ve sönük duruyordu.
   Kardeş satırlarla aynı ölçüye alındı: 16/500. Grup başlığı ölçüsüne ÇIKARILMADI,
   çünkü bu bir başlık değil, tıklanan bir satır; başlık ölçüsü verilirse altında
   ögesi varmış gibi okunur. */
.menu-drawer__menu-item--mainlist:not(:has(+ .menu-drawer__menu--childlist)){
  font-size:16px !important; font-weight:500 !important;
  /* 22 Eyl · Burak: "setini oluştur neden farklı fontta, tarifler hikayemiz falan
     ile aynı olsun." Font, punto, ağırlık ve renk zaten aynıydı; fark HARF
     ARALIĞINDAYDI. Ölçüm: kardeş satırlar 1.28px, bu satır normal (0). Aradaki
     0.08em göze "başka bir yazı tipi" olarak okunuyor.
     1.28px, 16px punto üzerinden .08em. em yazıldı ki punto değişirse bozulmasın. */
  letter-spacing:.08em !important; text-transform:none !important;
  color:var(--qe-ink,#2B2222) !important;
  min-height:56px !important; padding:0 !important;
  display:flex; align-items:center;
}
/* Gruplar arası ayraç: liste sonunda ince çizgi, sonuncuda yok. */
.menu-drawer__menu--childlist{ margin:0 0 22px !important; padding:0 !important; }
.menu-drawer__list-item--flat:not(:last-child) .menu-drawer__menu--childlist,
.menu-drawer__list-item:not(:last-child) > .menu-drawer__menu--childlist{
  border-bottom:1px solid var(--qe-line,#E6E1DA); padding-bottom:16px !important;
}
/* Çekmecenin kendi yan dolgusu: kare ile kenar arası eşit. */
.menu-drawer__navigation{ padding-inline:20px !important; }
.menu-drawer__navigation, .menu-drawer__menu{ min-width:0; }
.header{ border-bottom:1px solid var(--qe-line); }

/* ÜRÜN KARTI — Buly kalıbı: altın başlık, küçük fiyat, çerçevesiz, ortalı.
   17 Eyl gece: BAŞLIKTAKİ BÜYÜK HARF KALDIRILDI. Sebep: sayfa dili tr olduğu için
   text-transform Türkçe kuralını uyguluyor ve yabancı ürün adları bozuluyordu
   (ANGELİCA, GRANDE NOİR). lang="en" ile sarmak da çözmüyor, çünkü aynı dizgede
   Türkçe kelime var: "Grande Noir 1 Litre" → lang=en ile "LITRE" çıkıyor, tr ile "NOİR".
   Ad yazıldığı gibi kalınca hata sınıfı tamamen kapanıyor; Brightland'in kartları da
   böyle, cümle düzeninde. */
.product-card .product-card__content{ text-align:center; }
.product-card .text-block p, .product-card .text-block h2, .product-card .text-block h3{ font-family:var(--font-heading--family); font-size:22px !important; letter-spacing:.02em; text-transform:none; color:var(--qe-gold); line-height:1.25; margin-top:26px; }
.product-card .price{ font-size:12px !important; letter-spacing:.14em; text-transform:uppercase; color:var(--qe-ink); }
.product-card .price s, .product-card .price .compare-at-price{ display:none; }
.product-card .product-badges, .product-card .badge, .product-card .badges{ display:none !important; }

/* BUTONLAR — Buly hap / Petrossian metin */
/* ESKİ KURAL (17 Eyl kaldırıldı): font-size:11px · letter-spacing:.16em · uppercase.
   Burak: "bizimkisi çok amatör duruyor... premium ve sade olmasını istiyorum".
   Amatör duran sadelik değil bu üçüydü: 11px okunacak kadar büyük değil, .16em kelimeyi
   dağıtıyor, ve buton nereye gittiğini söylemiyor. Yeni dil aşağıdaki BUTON DİLİ bloğunda. */

/* FOOTER — Petrossian: koyu zemin, üstte taşan arma, ince altın çizgi */
.footer, .shopify-section-group-footer-group{ position:relative; }
.qe-footer-arma{ position:absolute; top:-60px; left:50%; transform:translateX(-50%); width:118px; height:118px; border-radius:50%; background:#fff; display:grid; place-items:center; box-shadow:0 0 0 6px #FEFCFC; z-index:2; }
.qe-footer-arma img{ width:60px; height:auto; }
.footer h2, .footer h3, .footer .menu__heading, .footer .h6{ font-size:10px !important; letter-spacing:.22em; text-transform:uppercase; font-weight:400; color:#D9BE7A; }
.footer .menu-list a, .footer a{ font-size:15px; }
.footer .footer-utilities{ font-size:12px; }

/* GENEL */
body{ -webkit-font-smoothing:antialiased; }
h1,h2,h3,h4{ font-weight:400; }
/* 22 Eyl · Burak: "bu aradaki beyazlık neden var, o olmasın." Ölçüldü: footer'ın
   `margin-top:70px`i sayfanın zeminini (#FEFCFC) gösteriyordu; üstteki bölüm açık gri
   olunca arada beyaz bir şerit olarak okunuyordu. Boşluk kaldırıldı, footer üstündeki
   bölüme dayanıyor. Amblem zaten üste taşan bir madalyon (top:-60px), boşluğa değil
   sınıra oturuyor; onun konumu değişmedi. */
.shopify-section-group-footer-group:first-of-type{position:relative;margin-top:0;border-top:0}
/* 22 Eyl, Burak: "logo tam sigsin, arkaplan rengini biraz uzat". Amblem madalyonu
   top:-60px ile bordo bandin 60px YUKARISINDA duruyordu; halkasinin ust kenari
   5150'de, basin kartlarinin alti 5168'de, yani madalyon kartlarin uzerine binmisti.
   Cozum: bordoyu 40px yukari uzatan bir bant (kartlarin altiyla arada 8px kaliyor,
   ustune binmiyor) + madalyonu -34px'e cekmek. Altin cizgi bandin ustune tasindi.
   Footer yuksekligi degismedi, mobil footer uzamadi. */
.shopify-section-group-footer-group:first-of-type::after{content:"";position:absolute;left:0;right:0;top:-40px;height:41px;box-sizing:border-box;background:#3F1722;border-top:2px solid #9A7A33;z-index:0;pointer-events:none}
/* 22 Eyl, Burak: "logo ortada olacak tam kesisimde". Madalyon bandin ICINDE kaliyordu
   (merkez cizginin 65px altinda). Altin cizgi bandin UST kenarinda, yani footer ustune
   gore -40px; disk merkezini oraya getirmek icin top = -(40 + 59) = -99px.
   HALKA YOK. Once koymustum (diskin ust yarisi krem zeminde kaybolmasin diye), Burak
   kaldirtti: "logonun etrafinda cizgi olmasin, beyaz tarafinda". Sonuc kasitli: ust
   yari kreme karisiyor, alt yari bordoda beyaz yarim daire olarak okunuyor, amblem
   ikisinin ortasinda duruyor. Buraya halka/govde-golgesi EKLEME, istenmedi. */
.shopify-section-group-footer-group:first-of-type::before{content:"";position:absolute;top:-99px;left:50%;transform:translateX(-50%);width:118px;height:118px;box-sizing:border-box;border-radius:50%;border:0;background:#fff url("qe-amblem.svg") center/56px auto no-repeat;box-shadow:none;z-index:2}
/* Mobilde bant 24px, madalyon 104px (yaricap 52). Disk merkezi yine altin cizgide:
   top = -(24 + 52) = -76px. Kart alti ile cizgi arasi 64px oldugu icin diskin
   ustunde 12px acik kaliyor. */
@media (max-width: 749px){
  .shopify-section-group-footer-group:first-of-type::after{top:-24px;height:25px}
  .shopify-section-group-footer-group:first-of-type::before{top:-76px;width:104px;height:104px;background-size:50px auto}
}

.footer,.footer *{color:#F1E8DF}
.product-card .card-gallery, .product-card .card-gallery slideshow-component, .product-card .product-media-container{ width:100%; }
.product-card .text-block{ text-align:center; width:100%; }
.product-card .price{ display:block; text-align:center; }
.product-card .text-block, .product-card .text-block p, .product-card .text-block *{ text-align:center !important; }
.product-card [class*="price"]{ justify-content:center !important; text-align:center !important; width:100%; }
.product-card s, .product-card del, .product-card [class*="compare"], .product-card .price--on-sale s{ display:none !important; }

/* KART — "SEPETE EKLE" FOTOĞRAFIN ÜSTÜNDEN ALINDI (17 Eyl, Burak: "product boxtaki
   sepete ekle butonları tasarım olarak güzel olmamış").

   NEYDİ: buton galerinin içinde mutlak konumluydu ve şişenin ETİKETİNİN üstüne biniyordu.
   Masaüstünde yalnız hover'da geliyordu ama mobilde dokunma hedefi olsun diye HEP AÇIKTI,
   yani ürün fotoğrafı kalıcı olarak kapalıydı. Premium bir üründe olmaz.

   NASIL TAŞINDI: galeri `position:static` yapıldı, böylece mutlak konumlu buton artık
   KARTA göre hizalanıyor; karta altta yer açıldı ve buton fiyatın altına oturdu.
   Rozet zaten karta göre konumlanıyordu (arada duran .shopify-block static), etkilenmiyor.

   GÖRÜNÜM: sessiz, çerçeveli, kart genişliğinde; yeni buton dilinde (2px köşe, 15px,
   cümle düzeni). Fotoğrafla yarışmıyor, tıklanacak yer olduğu belli. */
product-card, .product-card{ position:relative; padding-bottom:58px; }
.product-card .card-gallery{ position:static; }

.product-card .quick-add,
.product-card quick-add-component{
  position:absolute !important; inset:auto 0 0 0 !important;
  width:auto !important; height:auto !important; display:block !important;
}
.product-card .quick-add__product-form-component,
.product-card .shopify-product-form{ height:auto !important; display:block !important; }

.product-card .quick-add__button{
  position:static !important; inset:auto !important; transform:none !important;
  width:100% !important; max-inline-size:none !important;
  height:44px; min-height:44px; padding:0 16px !important;
  border-radius:var(--qe-dugme-kose, 2px) !important;
  background:transparent !important; color:var(--qe-ink, #2B2222) !important;
  border:1px solid var(--qe-line, #E6E1DA) !important;
  font-family:var(--font-body--family); font-size:15px !important; font-weight:500;
  letter-spacing:.01em !important; text-transform:none !important; white-space:nowrap;
  display:flex !important; justify-content:space-between !important; align-items:center; gap:12px;
  opacity:1 !important;
}
.product-card .quick-add__button .add-to-cart-icon{ display:none; }
.product-card .quick-add__button::after{ content:"\2192"; font-size:15px; line-height:1; }
.product-card .quick-add__button:hover{
  background:var(--qe-ink, #2B2222) !important; color:#fff !important;
  border-color:var(--qe-ink, #2B2222) !important;
}
.product-card .qe-kart-alt{ text-align:center; }
[id*="product_recommendations"] .product-card .qe-kart-alt{ text-align:left; }

/* ===================== ÜRÜN SAYFASI — Brightland kalıbı ===================== */
.product-information .product-details h1{ font-family:var(--font-heading--family); font-size:34px; line-height:1.15; letter-spacing:-.005em; text-transform:none; margin:0; font-weight:400; }
.product-information .product-details .price{ font-size:19px; letter-spacing:.01em; }
.qe-bilgi{ display:flex; flex-direction:column; gap:14px; font-size:16px; line-height:1.6; color:var(--qe-ink); }
.qe-bilgi p{ margin:0; }
.qe-bilgi__giris{ font-style:italic; font-weight:500; }
.qe-bilgi__metin{ display:flex; flex-direction:column; gap:10px; }
.qe-bilgi__kullanim{ color:var(--qe-mute); }
.qe-kardes__etiket{ font-size:15px; margin:0 0 12px; color:var(--qe-mute); }
.qe-kardes__etiket span{ color:var(--qe-ink); }
/* Karo = kare görsel + altında boy yazısı (16 Eyl: hangi boya bastığın belli olsun). */
.qe-kardes__liste{ display:flex; flex-wrap:wrap; gap:12px; }
.qe-kardes__oge{ display:flex; flex-direction:column; align-items:center; gap:6px; text-decoration:none; }
.qe-kardes__kare{ display:block; width:76px; height:76px; border:1px solid transparent; border-radius:8px; overflow:hidden; background:#F2F0EC; transition:border-color .2s; }
.qe-kardes__oge:hover .qe-kardes__kare{ border-color:var(--qe-line); }
.qe-kardes__oge.is-secili .qe-kardes__kare{ border-color:var(--qe-ink); }
.qe-kardes__kare img{ width:100%; height:100%; object-fit:cover; display:block; }
.qe-kardes__boy{ font-size:13px; line-height:1; color:var(--qe-mute); white-space:nowrap; }
.qe-kardes__oge.is-secili .qe-kardes__boy{ color:var(--qe-ink); }
.qe-akordiyon{ border-top:1px solid var(--qe-line); }
.qe-akordiyon details{ border-bottom:1px solid var(--qe-line); }
.qe-akordiyon summary{ list-style:none; cursor:pointer; padding:16px 0; display:flex; justify-content:space-between; align-items:center; font-size:13px; letter-spacing:.14em; text-transform:uppercase; color:var(--qe-ink); }
.qe-akordiyon summary::-webkit-details-marker{ display:none; }
.qe-akordiyon summary::after{ content:"+"; font-size:18px; line-height:1; }
.qe-akordiyon details[open] summary::after{ content:"−"; }
.qe-akordiyon details > div{ padding:0 0 18px; font-size:15px; line-height:1.65; color:var(--qe-ink); max-width:56ch; }
.qe-akordiyon details > div a{ text-decoration:underline; text-underline-offset:3px; }
.qe-armagan-link{ text-align:center; font-size:15px; }
.qe-armagan-link a{ text-decoration:underline; text-underline-offset:3px; }

/* Benzer ürünler — Brightland kartı: gri zemin, yuvarlatılmış, ad solda fiyat altında */
[id*="product_recommendations"] .product-card .card-gallery{ background:#F2F2F2; border-radius:18px; overflow:hidden; }
[id*="product_recommendations"] .product-card__content{ display:grid !important; grid-template-columns:1fr auto; column-gap:10px; align-items:start; }
[id*="product_recommendations"] .product-card__content > *:first-child{ grid-column:1 / -1; }
[id*="product_recommendations"] .product-card__content .text-block,
[id*="product_recommendations"] .product-card__content > product-price{ margin:0 !important; padding:6px 0 0 !important; }
[id*="product_recommendations"] .product-card .text-block p, [id*="product_recommendations"] .product-card .price{ margin:0 !important; line-height:21px !important; }
[id*="product_recommendations"] .product-card .text-block,
[id*="product_recommendations"] .product-card .text-block p,
[id*="product_recommendations"] .product-card .text-block *{ text-align:left !important; }
[id*="product_recommendations"] .product-card .text-block p{ font-family:var(--font-body--family); font-size:18px !important; line-height:21px; letter-spacing:0; text-transform:none; color:#1B1B1B; margin-top:12px; padding:0 5px; }
[id*="product_recommendations"] .product-card [class*="price"]{ justify-content:flex-end !important; text-align:right !important; width:auto; }
[id*="product_recommendations"] .product-card .price{ font-size:18px !important; letter-spacing:0; text-transform:none; padding-right:5px; }
[id*="product_recommendations"] .text-block h3{ font-family:var(--font-body--family); font-size:18px; letter-spacing:0; text-transform:none; }

/* Ürün sayfası: "Buy it now" yok (Brightland'de tek sepete ekle), üstü çizili fiyat yok */
.product-information .accelerated-checkout-block{ display:none !important; }
.product-information .compare-at-price, .sticky-add-to-cart .compare-at-price{ display:none !important; }

/* Judge.me v3: renkler hem :root'a hem widget ve modal seçicilerine (uygulama kendi değerlerini widget üstünde tanımlıyor) */
:root, .jdgm-widget, .jdgm-review-widget, .jdgm-preview-badge, .jm-review-widget, .jdgm-write-review-modal, .jm-write-review-modal, [class*="jdgm-modal"]{
  --jm-widget-primary-color:#1B1B1B; --jm-review-widget-button-color:#1B1B1B;
  --jm-review-widget-star-and-histogram-color:#9A7A33; --jm-review-widget-text-color:#1B1B1B;
  --jm-review-widget-lighter-text-color:#6E6560; --jm-widget-border-radius:18px; --jm-widget-border-radius-simplified:10px;
  --jm-transparency-badge-color:#9A7A33; --jdgm-star-color:#9A7A33; --jdgm-primary-color:#1B1B1B; --jdgm-paginate-color:#1B1B1B; --jdgm-border-radius:18px;
}
/* Uygulama değişkenleri iç elemanlarda yeniden tanımlıyor; !important ile her seviyede eziliyor */
.jdgm-widget, .jdgm-widget *, .jm-review-widget, .jm-review-widget *, [class*="jm-write-review"], [class*="jm-write-review"] *{
  --jm-widget-primary-color:#1B1B1B !important; --jm-review-widget-button-color:#1B1B1B !important; --jm-review-widget-button-text-color:#fff !important;
  --jm-review-widget-star-and-histogram-color:#9A7A33 !important; --jm-review-widget-text-color:#1B1B1B !important;
  --jm-review-widget-lighter-text-color:#6E6560 !important; --jm-widget-border-radius:60px !important; --jm-widget-border-radius-simplified:10px !important;
  --jm-transparency-badge-color:#9A7A33 !important;
  font-family:var(--font-body--family) !important;
}
.jm-button{ min-height:50px; padding-inline:28px; font-size:17px !important; border-radius:60px !important; }
.qe-urun__yildiz .jdgm-prev-badge{ display:flex; align-items:center; gap:8px; font-size:16px; }
.qe-urun__yildiz .jdgm-star{ color:#9A7A33 !important; font-size:15px; }
.qe-urun__yildiz .jdgm-prev-badge__text{ text-decoration:underline; text-underline-offset:2px; color:#0A0200; }

/* Fiyatlar arayüz verisidir: başlık fontu değil gövde fontu kullanılır (şu an Gambetta).
   Font adı burada yazılmaz; değişken üzerinden gelir, font kurgusu değişince kendiliğinden uyar. */
.product-card .price, .product-card [class*="price"], .qe-benzer__fiyat, .qe-birlikte__fiyat{ font-family:var(--font-body--family) !important; }

/* ===================== MOBİL KATMAN (16 Eyl denetimi) =====================
   Kural: dokunma hedefi en az 44px, gövde yazısı 13px'in altına inmez.
   Görsel boyut değişmiyor; yalnız tıklanabilir alan ve mobil punto büyüyor. */
@media (max-width: 749px){
  /* — dokunma hedefleri — */
  .header__icon, .header__icon--menu, .header summary, .header__actions a, .header__actions button{
    min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:center;
  }
  .qe-urun__ok{ width:44px !important; height:44px !important; margin-top:-22px !important; right:10px !important; }
  .qe-urun__ok svg{ width:30px !important; height:30px !important; }
  .qe-birlikte__ekle{ width:44px !important; height:44px !important; margin-right:4px !important; display:inline-flex !important; align-items:center; justify-content:center; }
  .qe-birlikte__ekle svg{ width:22px !important; height:22px !important; }
  .menu-drawer__menu-item{ min-height:44px; padding-block:10px; }
  .footer a, .shopify-section-group-footer-group a, .policy-list-trigger{ min-height:44px; display:inline-flex; align-items:center; }
  .qe-hero__yazi a, .qe-satir .alt-bag{ min-height:44px; display:inline-flex; align-items:center; }
  .product-card .quick-add__button{ height:44px !important; min-height:44px !important; }
  /* 17 Eyl: kutu 132'ydi, içine üç adet 44 sığmıyordu ve ortadaki sayı alanı 29'a eziliyordu.
     44x3 + yanlarda 12'şer boşluk = 156. */
  .quantity-selector{ width:156px !important; height:52px !important; }
  .quantity-selector button{ width:44px !important; height:44px !important; }
  /* !important şart: Horizon'un kendi quantity-selector kuralı sayı alanını 36px'e indiriyordu. */
  .quantity-selector input{ height:44px !important; width:44px !important; min-width:44px !important; }
  .qe-akordiyon__bag a, .qe-anlar__bag{ min-height:44px; display:inline-flex; align-items:center; }
  .qe-urun__satin .add-to-cart-button{ height:52px; min-height:52px; }
  .facets-toggle__button, .facets__summary, .search__reset-button, .email-signup__button{
    min-height:44px !important; min-width:44px; display:inline-flex; align-items:center; justify-content:center;
  }
  .facets-toggle__button{ padding-inline:14px !important; }
  .footer .menu-list a, .footer .menu-list__link, .footer ul a{ display:inline-flex; align-items:center; min-height:44px; }
  .qe-satir a, .qe-kapsul a, .qe-bant__buton, .qe-editoryal a, .section-resource-list__header a, .size-style.link{
    min-height:44px; display:inline-flex; align-items:center;
  }
  /* — punto tabanı — */
  .product-card .price, .price, .price-item__group{ font-size:13px !important; }
  .qe-kart-rozet, .qe-urun__rozet, .qe-tarif__rozet{ font-size:12px !important; }
  .qe-kapsul__ust, .qe-hero__yazi a, .qe-krem__oduller span, .policy-list-trigger, .size-style.link{ font-size:12.5px !important; }
  .qe-bant__buton, .email-signup__heading, .facets-toggle__button, .footer-utilities__text{ font-size:13px !important; }
  .qe-satir a, .qe-kapsul__ust{ font-size:12px; }
}

/* ===================== KÖŞE ÖLÇEĞİ (17 Eyl, Burak: "her yerde aynı tür kullanılsın") =====================
   Denetim: sitede beş ayrı buton yarıçapı (4, 8, 60, 100, 999) ve dört ayrı kutu yarıçapı
   (4, 8, 10, 18) vardı. Tek ölçek:
     BUTON ve HAP  → 999px (tam yuvarlak)
     KUTU, KART, GÖRSEL → 10px
   Not: header, duyuru çubuğu ve pop-up yan oturumun bölgesi, buraya dahil edilmedi.
   BİLİNÇLİ İSTİSNA: filtre onay kutuları 16x16 ve 5px köşeli kalıyor. 10px verilince
   16 piksellik kare daireye dönüşüyor ve onay kutusu olduğu anlaşılmıyor; bu bir kutu
   değil, kontrol göstergesi. Tutarsızlık sanıp düzeltmeyin. */
.qe-tarif__rozet, .qe-tarif__cta span,
.qe-kart-rozet, .qe-urun__odul-hap, .jm-button, [class*="jdgm"] button,
/* 17 Eyl ikinci tur: denetimde 100px (hap görünüyor ama ölçek dışı), 34px ve 4px kalmıştı.
   Tek satırlık form alanları da hapa çekildi — yanlarındaki buton hap, kutu köşeliyken
   ikisi yan yana uyumsuz duruyordu (footer bülten alanı, arama kutusu). */
.email-signup__button, .email-signup__input, .search-input, .predictive-search__close-modal-button,
.predictive-search__search-button, .cart-items__empty-button, .skip-to-content-link,
.theme-drawer__close-button, .predictive-search-form__header-inner{ border-radius:999px !important; }

.qe-kol__gorsel, .qe-set__panel, .qe-set figure, .qe-basin__kart, .qe-kardes__kare,
.qe-tarif__kart, .qe-benzer__gorsel, .qe-birlikte, .qe-birlikte__satir, .qe-urun__kare,
.qe-urun__kucuk, .qe-anlar__an img, .qe-kolgiris__gorsel, .qe-kolkapanis__gorsel,
.jdgm-write-review-modal__product-image{ border-radius:var(--qe-kap-kose, 0px) !important; }

/* ===================== MOBİL DOKUNMA HEDEFLERİ (17 Eyl gece) =====================
   Yan oturumun hakemliğinde çıkan kusurlar. Burak'ın kuralı: mobil masaüstünden önemli.
   Ölçüt: dokunulabilir her şey en az 44x44, gövde yazısı en az 15px.
   Ölçülen ihlaller: akordiyon başlığı 35, varyant karosu 42, adet düğmesi 29 GENİŞ,
   "Sepete ekle" (benzer ürünler) 34, Instagram bağlantısı 19, editoryal/set hapları 42,
   footer menü başlığı 34, kapsül paragrafı 13px. */
@media (max-width: 760px){
  /* akordiyon başlıkları */
  .qe-akordiyon summary, .qe-sss__madde summary{ min-height:44px; display:flex; align-items:center; }
  /* boy/varyant seçici karoları */
  .qe-kardes__oge{ min-height:44px; }
  /* adet düğmeleri: yüksekliği vardı, genişliği yoktu */
  /* NOT: kutunun genişliği/yüksekliği yukarıdaki !important bloğunda (156x52), butonla
     aynı yükseklikte dursun diye. Bölüm içi stil bu dosyadan sonra yüklenir ama
     !important'ı geçemez, o yüzden ölçü tek yerde: yukarısı. */
  .qe-urun__satin .quantity-selector button{ width:44px; height:44px; }
  .qe-urun__satin .quantity-selector input{ min-width:44px; height:44px; }
  /* çapraz satış ve benzer ürünlerdeki sepete ekle */
  .qe-benzer__ekle, .product-card .quick-add__button{ min-height:44px; }
  /* metin bağlantıları: satır içi kalsın ama parmakla vurulabilsin */
  .qe-basin__kaynak, .qe-basin__kaynak a{ display:inline-flex; align-items:center; min-height:44px; }
  .qe-edit__hap, .qe-set__hap, .qe-bant__buton{ min-height:44px; }
  /* footer akordiyon başlıkları — DİKKAT: bu başlıklar .footer İÇİNDE DEĞİL,
     ayrı bir accordion-custom bileşeninde duruyor. İlk yazdığım .footer .menu__heading
     seçicisi hiç eşleşmemişti (hakem yakaladı). Doğru seçici bölüm grubundan iniyor. */
  .shopify-section-group-footer-group summary.menu__heading,
  .shopify-section-group-footer-group .menu__heading,
  .footer summary{ min-height:44px; display:flex; align-items:center; }
  /* kurumsal sayfalardaki liste bağlantıları (e-posta adresleri) 20px kalıyordu */
  main[data-template^="page"] li a{ display:inline-flex; align-items:center; min-height:44px; }
  /* sepet sayfasındaki satır içi bağlantılar (ör. "oturum açın") 20px kalıyordu */
  main[data-template^="cart"] p a{ display:inline-flex; align-items:center; min-height:44px; }
  /* gövde yazısı tabanı: kapsül paragrafı 13px kalmıştı */
  .qe-kapsul p, .qe-kapsul__metin{ font-size:15px !important; line-height:1.55; }
}

/* ===================== KOLEKSİYON VE ARAMA SAYFASI =====================
   Koleksiyon sayfasının giriş ve kapanış alanları artık kendi bölümlerinde:
   sections/qe-kol-giris.liquid ve qe-kol-kapanis.liquid (Petrossian kurgusu, Burak onayı 16 Eyl).
   Burada kalanlar: arama başlığı, ürünlerin üstündeki çubuk ve ızgara sütunları.
   Çubuk Petrossian (solda filtre, ortada ürün sayısı, sağda sırala, altında ince çizgi).
   Izgara masaüstünde 4 sütuna sabit (Horizon'un kart boyutu ayarı 3 ya da 5 sütun veriyor), mobilde 2. */
@media (min-width:990px){
  .product-grid, .product-grid--collection, results-list .product-grid{ grid-template-columns:repeat(4,minmax(0,1fr)) !important; }
}
@media (max-width:989px){
  .product-grid, results-list .product-grid{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
}
main[data-template^="search"] .search-header h1{
  font-size:38px !important; line-height:1.1; letter-spacing:-.01em; text-transform:none;
}
.facets__form{
  display:grid !important; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px;
  padding-bottom:14px; border-bottom:1px solid var(--qe-line);
}
.facets__filters-wrapper{ grid-column:1; justify-self:start; }
.products-count-wrapper{ grid-column:2; justify-self:center; }
.products-count-wrapper span{ font-size:15px; color:var(--qe-mute); }
.sorting-filter{ grid-column:3; justify-self:end; }
.column-options-wrapper{ display:none !important; }
.facets-remove, .facets-horizontal-remove{ grid-column:1 / -1; grid-row:2; }
.facets__summary, .facets__disclosure summary{ font-size:15px; letter-spacing:0; text-transform:none; }

@media (max-width:749px){
  main[data-template^="search"] .search-header h1{ font-size:28px !important; }
  .facets__form{ grid-template-columns:auto 1fr auto; gap:10px; }
  .products-count-wrapper span{ font-size:13px; }
}

/* Gambarino yalnız 400 ağırlıkta çizilmiş; tarayıcı 600/700 isteyince sahte kalın üretiyor
   ve display serifte bu çirkin duruyor. Başlık rollerinde ağırlık 400'e sabitlendi. */
h1, h2, h3, h4, h5, h6,
.product-card .text-block p, .product-card .text-block h2, .product-card .text-block h3,
.product-information .product-details h1{ font-weight:400 !important; }

/* BÜYÜK VE SIKI SUNUM (16 Eyl akşam, Burak onayı). Harf aynı (Gambarino), değişen punto ve
   harf aralığı. Mantık: harf büyüdükçe aradaki boşluk optik olarak da büyür, aralık kısılmazsa
   yazı dağılır. İkisi birlikte, kalınlaştırmadan dolgunluk veriyor.
   Dosyanın SONUNDA duruyor ki ortadaki kart kurallarını ezsin; o bölge yan oturumun. */
.product-card .text-block p,
.product-card .text-block h2,
.product-card .text-block h3{ font-size:26px !important; letter-spacing:.035em !important; }
.product-information .product-details h1{ font-size:40px !important; letter-spacing:-.01em !important; }
/* ⚠️ BURADA ESKİ ÖLÇEKTEN KALMA BİR 48px KURALI VARDI, 19 Eyl'de SİLİNDİ.
   Seçicisi yeni başlık ölçeğininkiyle BİREBİR AYNIYDI (.shopify-section h2:not(...)),
   yani aynı ağırlıkta iki kural ve aralarındaki tek fark dosya sırasıydı. Zararsız
   görünüyordu çünkü yeni kural sonra geliyor ve yeniyor — ama biri araya satır ekleyip
   sırayı bozsa bütün site sessizce 48'e dönerdi ve sebebi bulunmazdı.
   Punto artık `--qe-h2` değişkeninden geliyor (BAŞLIK ÖLÇEĞİ bloğu, dosyanın sonunda).
   Kuralın tek korunmaya değer parçası harf aralığıydı, o buraya alındı: */
.shopify-section h2:not(.qe-popup__baslik), main h2{ letter-spacing:-.01em; }

@media (max-width:749px){
  .product-card .text-block p,
  .product-card .text-block h2,
  .product-card .text-block h3{ font-size:21px !important; letter-spacing:.04em !important; }
  .product-information .product-details h1{ font-size:31px !important; }
  .shopify-section h2:not(.qe-popup__baslik){ font-size:33px !important; }
}

/* ===== DUYURU ÇUBUĞU VE HEADER (17 Eyl, Brightland ölçüleri) =====
   Brightland'de ölçülen: duyuru 31px, sabit değil, kaydırınca gidiyor.
   Header 55px masaüstü / 49px mobil, sticky top:0, altında 1px çizgi.
   Bizde duyuru 32px, header 56/50px. Ölçümler HEADER-OLCUM.md dosyasında. */
.qe-duyuru{
  background:var(--qe-duyuru-zemin,#16301F); color:var(--qe-duyuru-renk,#F4F3EE);
  text-align:left; padding:9px 0; position:relative; z-index:9;
}
/* BÜYÜK HARF KULLANILMIYOR: sayfa dili tr olduğu için text-transform:uppercase
   İngilizce kelimelerin i'sini İ yapıyor ("Olive" -> "OLİVE"). Brightland'in çubuğu da
   ölçümde düz yazıydı (text-transform: none). */
/* 17 Eyl: yazı 13/12,5px idi. Ölçüt (GECE.md bölüm 1) 14px diyor ve bu bir etiket değil,
   gönderim kapsamını söyleyen tam cümle. Pop-up'ta 77'ye aynı gerekçeyle 14px dedirtmişken
   kendi çubuğumu 12,5'te bırakmışım. 14px'e çekildi, çubuk 31 -> 33px oluyor. */
/* 18 Eyl — Brightland düzeni: ortalı tek satır değil, SOLA YASLI etiket + mesaj,
   sağ uçta ikinci bilgi. Ortalı hâli "duyuru" değil "başlık" gibi okunuyordu.
   Sayfa kenar boşluğu header ile aynı hizada olsun diye padding gövdeden geliyor. */
.qe-duyuru__ic{ font-family:var(--font-body--family); font-size:13.5px; line-height:1.2;
  letter-spacing:.02em; display:flex; align-items:center; justify-content:space-between;
  gap:20px; max-width:none; padding-inline:clamp(20px, 3.4vw, 48px); }
.qe-duyuru__sol, .qe-duyuru__sag{ margin:0; display:flex; align-items:center; gap:10px; }
/* Etiket: şeridin içindeki tek 500 ağırlık. Tipografi sistemine göre küçük büyük harf
   etiketler 500 (bkz. qe.css başı). lang="tr" olduğu için Türkçe metinde güvenli. */
.qe-duyuru__etiket{ font-size:11px; font-weight:500; letter-spacing:.14em; text-transform:uppercase;
  opacity:.72; padding-right:10px; border-right:1px solid currentColor; }
.qe-duyuru__sag{ opacity:.72; }
@media (max-width:1023px){ .qe-duyuru__sag{ display:none; } }
.qe-duyuru a{ color:inherit; text-decoration:none; border-bottom:1px solid currentColor; padding-bottom:1px; }
@media (max-width:749px){ .qe-duyuru{ padding:8px 0; }
  .qe-duyuru__ic{ font-size:13px; letter-spacing:.01em; justify-content:center; padding-inline:14px; }
  .qe-duyuru__etiket{ display:none; } }

/* header yüksekliği: 76 -> 56 (mobilde 50) */
.header__row--top{ min-height:60px !important; }
.header__row--top .header__column{ height:36px !important; }
.header__underlay{ height:59px !important; }
@media (max-width:749px){
  /* MOBİL ÖNCE. Header'ı 50'ye zorlamak yanlıştı: satırı 60 px'e çıkaran şey hamburger
     ikonunun 46 px'lik dokunma hedefi ve o küçültülmemeli (kural: >= 44 px).
     Doğru müdahale ikonu değil etrafındaki boşluğu kısmak. Sonuç 54 px. */
  /* Yüksekliği dayatan temanın kendi .header__drawer kuralıydı (min-height:60px),
     hamburger ikonu değil. İkon 46 px kalıyor (dokunma hedefi >= 44). */
  .header__row--top{ min-height:56px !important; }
  .header__row--top .header__columns{ padding-block:0 !important; }
  .header__row--top .header__column{ height:auto !important; }
  .header__drawer{ min-height:52px !important; }
  .header__underlay{ height:55px !important; }
  .header__icon--menu, .header__icon{ min-width:44px !important; min-height:44px !important; }
}

/* LOGO (17 Eyl, d7+77 ortak kararı — karar sayfası: onizleme/logo/header-karar.html)
   Önceki qe-logo-yatay.png YANLIŞ KIRPILMIŞTI. Logo dosyasındaki bantlar ölçüldü:
   amblem %8,8-%73,3 · "Queen Elisir" %74,2-%83,8 · "Olio D'oliva" el yazısı %84,0-%91,2.
   Kırpma %75,5-%88,5 idi: marka adının tepesi kesik, el yazısının yarısı içeride.
   30px'e sığınca okunmayan bir leke oluyordu; Burak'ın "logo olmamış" demesinin sebebi buydu.
   Yeni kilit %74,2-%91,2 arası, 3x retina (349x104): marka adı + altında el yazısı, ikisi de tam.
   El yazısı satırı kalıyor çünkü markayı bilmeyen ziyaretçiye ne satıldığını ilk bakışta söylüyor.
   Amblemli varyant elendi: 25px genişlikte taç okunmuyor, tanınırlık katmadan ağırlık katıyordu. */
.header-logo__image{ content:url('qe-logo-kilit.png') !important; height:36px !important;
                     width:auto !important; transition:opacity .16s ease; }
@media (max-width:749px){ .header-logo__image{ height:32px !important; } }

/* KAYDIRINCA LOGO KISALIR — SMN mekanizması (17 Eyl, Burak: "piksel piksel bak, aynı mı").
   SMN ölçüldü: iki logo alt alta, kap DİKEY KAYIYOR, iki logo da aynı genişlikte (240x60).
   Önceki hâlimiz opaklıkla değiştirmeydi ve logo 116 px'den 24 px'e düşüyordu: ikisi de yanlış.
   Şimdi: pencere sabit yükseklikte, şerit iki yuva taşıyor, kaydırınca bir yuva boyu kayıyor.
   Şeridi snippets/qe-header-kaydirma.liquid kuruyor; gerekçeler orada. */
.header-logo__image[data-qe-gizli]{ display:none !important; }
.qe-logo-pencere{ display:block; overflow:hidden; height:36px; line-height:0; }
.qe-logo-serit{ display:block; transition:transform .42s cubic-bezier(.22,.61,.36,1); }
.qe-logo-yuva{ display:flex; align-items:center; justify-content:center; height:36px; }
.qe-logo-yuva img{ display:block; width:auto; }
.qe-logo-yuva--tam  img{ height:34px; }
.qe-logo-yuva--kisa img{ height:26px; }
#header-component[data-qe-logo="kisa"] .qe-logo-serit,
.header[data-qe-logo="kisa"] .qe-logo-serit{ transform:translateY(-36px); }
@media (max-width:749px){
  .qe-logo-pencere, .qe-logo-yuva{ height:32px; }
  .qe-logo-yuva--tam  img{ height:32px; }
  .qe-logo-yuva--kisa img{ height:24px; }
  #header-component[data-qe-logo="kisa"] .qe-logo-serit,
  .header[data-qe-logo="kisa"] .qe-logo-serit{ transform:translateY(-32px); }
} }

/* Bölüm üst yazıları (küçük büyük harf etiketler) tek puntoda: 12.5px.
   qe-kol 13px'ti, diğerleri 12.5; aynı görevdeki etiket her bölümde aynı olmalı. */
.qe-kol__ust{ font-size:12.5px !important; }
/* Dipnotlar 12.5'in altına inmesin (besin tablosu kaynağı 12px'ti). */
.qe-akordiyon__kaynak{ font-size:12.5px !important; }

/* ===================== ARAMA SAYFASI (17 Eyl) =====================
   Denetimde çıkanlar: sayfanın h1'i yoktu (başlık <h3> basılıyordu, section
   dosyasında düzeltildi), arama kutusu 4px köşeliydi, "temizle" bağlantısı
   %100 yarıçapla oval bir lekeye dönüşüyordu ve filtre paneli 14px'ti —
   üçü de KÖŞE ÖLÇEĞİ dışındaydı. */
.qe-arama__baslik{ display:flex; flex-wrap:wrap; align-items:baseline; gap:10px; }
.qe-arama__terim{ font-family:var(--font-body--family); font-size:.55em;
  letter-spacing:0; color:var(--qe-mute); }
.search-page-input, .search-input, .search-page__header input[type="search"]{
  border-radius:999px !important; border-color:var(--qe-line) !important;
  min-height:50px; font-size:16px !important; }
/* NOT: buraya padding-inline YAZMA. Büyüteç ikonu solda mutlak konumlu (13-37px arası)
   ve "temizle" düğmesi sağda; temanın kendi iç boşluğu ikisini hesaba katıyor.
   20px verince ikon metnin üstüne bindi (17 Eyl, ekran görüntüsünde yakalandı). */
.search__reset-button{ border-radius:999px !important; }
/* Tetikleyiciler hap, açılan paneller kutu — ölçeğin iki değeri. */
.facets-toggle__button, .facets__summary, .sorting-filter__select-wrapper{ border-radius:999px !important; }
.facets__panel-content, .facets__inputs, .sorting-filter__options{ border-radius:10px !important; }
/* Tek satırlık form alanları (arama, filtre içi arama, bülten) hap kalsın. */
.field__input{ border-radius:999px !important; }


/* ============================================================================
   BUTON DİLİ · B (KESKİN)  — 17 Eyl, Burak seçimi
   "butonları da keskin yapma fikri kötü değil daha havalı durabilir deneyelim bi,
    renklerden emin olamadım ama b güzel gibi öyle yap"
   Karar sayfası: onizleme/dugme/index.html (A hap · B keskin · C altın · X eski hali)

   Brightland'in dilbilgisi ölçüldü, üç kuralı alındı:
     1. cümle düzeninde 15px yazı (büyük harf ve geniş harf aralığı YOK)
     2. her butonda sağda ok — "gidiyorsun" mesajını ok veriyor, harf aralığı değil
     3. cömert yatay dolgu, tek tip yükseklik
   Brightland'den ALINMAYAN: tam yuvarlak hap. Burak keskin istedi.

   ⚠️ KÖŞE ÖLÇEĞİ ÇELİŞKİSİ — 77 ile kapatılacak: 77 bugün erken saatte Burak'ın
   "her yerde aynı tür kullanılsın" talimatıyla dokuz yarıçapı tek ölçeğe indirmişti
   (buton/hap 999, kutu/kart/görsel 10). Buton artık 2px olduğuna göre ölçek İKİ KATMANLI:
   etkileşim ögesi 2px (buton, hap, giriş alanı), kap 10px (kart, kutu, görsel).
   77'ye 2 sayısı bildirildi, kendi bölgesini aynı sayıya çekiyor.
   ============================================================================ */
/* 18 Eyl · KAP KÖŞESİ 10 → 18px.
   Burak "brightland'de köşeler ne kadar güzel" dedi. Ben ekran görüntüsünden bakıp
   "yarıçap yok, keskin" diye okudum ve 0 yaptım — YANLIŞTI. İki oturum ayrı ayrı
   canlıdan ölçtü (brightland.co/products/awake, 1440px):
       18px → 49 görsel + 25 bağlantı + 25 kutu   (kap katmanının gerçek değeri)
       100px / 60px → hap butonlar ve yuvarlak kontroller
       ana galeri görseli 0px (tam genişlik aktığı için köşesi zaten görünmüyor)
   Yani Brightland baştan aşağı yuvarlak; sorun yuvarlaklığın varlığı değil, bizim
   10px'imizin onların 18px'i gibi durmamasıydı. Ders: ekran görüntüsünden ölçü okuma.
   Buton köşesi 2px BURAK'IN KARARI, dokunulmadı — Brightland'de hap olması onu geçersiz kılmaz. */
:root{ --qe-dugme-kose:2px; --qe-kap-kose:0px; }
/* Menü fontu TEK YERDEN. Jost'a dönmek ya da başka bir adaya geçmek istersen
   yalnız bu üç satır değişir; menü ve sağdaki yazı bağlantısı ikisi de buradan
   besleniyor. Punto ayrı çünkü dar kesim aynı puntoda daha küçük okunuyor:
   Şu an DENEME: Jost 15/500. Başlangıç Jost 15/600'dü, yani tek değişen ağırlık —
   Burak'ın istediği karşılaştırma bu. Punto ve aralık bilerek sabit tutuldu ki
   iki şey aynı anda değişmesin. */
:root{
  --qe-menu-font: var(--font-body--family);
  --qe-menu-punto: 15px;
  --qe-menu-agirlik: 500;
}
/* 18 Eyl · KAP KÖŞESİ 0 — BURAK'IN DOĞRUDAN TALİMATI:
   "görsellerin köşeleri yuvarlak, onlar köşeli olsun."
   NOT: Brightland'de kaplar 18px ölçüldü (iki oturum ayrı ayrı doğruladı). Yani bu
   referanstan bilerek AYRILAN bir karar, ölçüm hatası değil. Bir daha 18'e çekilecekse
   önce Burak'a sorulacak — referans ölçümü tek başına gerekçe değil. */

.button, .button--primary, .button--secondary,
.qe-edit__hap, .qe-set__hap, .qe-kapsul__buton, .qe-bant__buton, .qe-benzer__ekle,
.qe-hero__yazi a, .add-to-cart-button{
  border-radius:var(--qe-dugme-kose) !important;
  font-family:var(--font-body--family) !important;
  font-size:15px !important; font-weight:500 !important;
  letter-spacing:.01em !important; text-transform:none !important;
  min-height:48px; display:inline-flex; align-items:center; justify-content:center;
  gap:14px; padding-inline:26px; line-height:1;
}

/* Ok: işaretlemeye dokunmadan. Zaten ikon/svg taşıyan butona EKLENMİYOR,
   yoksa çift ok oluyor (ölçüp gördüm). */
/* ⚠️ qe-kapsul__buton · qe-edit__hap · qe-set__hap BU LİSTEDE YOK.
   Üçünün de işaretlemesinde zaten → var ("Hikayeyi oku →"), ::after eklenince
   ÇİFT OK oluyor. İlk yazımda üçü de listedeydi, canlıda ölçüp yakaladım.
   CSS metin içeriğine bakamaz, o yüzden koruma seçiciyle değil listeyle yapılıyor:
   yeni bir buton sınıfı eklerken önce işaretlemesinde ok var mı diye bak. */
.button:not(:has(svg)):not(:has(img))::after,
.qe-bant__buton:not(:has(svg))::after,
.qe-hero__yazi a:not(:has(svg))::after{
  content:'\2192'; font-size:15px; line-height:1; transform:translateY(-.5px);
}

/* Ana eylem: zümrüt dolgu. İkincil: saç teli çerçeve. */
.button--primary, .qe-benzer__ekle, .add-to-cart-button{
  background:var(--qe-zumrut) !important; color:var(--qe-krem) !important; border:0 !important; }
.button--secondary, .qe-edit__hap, .qe-set__hap, .qe-kapsul__buton{
  background:transparent !important; color:var(--qe-ink) !important;
  box-shadow:inset 0 0 0 1px var(--qe-ink) !important; border:0 !important; }
/* FOTOĞRAF ÜSTÜ BUTON — tek kural OLMAZ, fotoğrafın tonuna göre değişir.
   18 Eyl, Burak: "qe_bant'taki buton görünmüyor". Sebebi benim kendi kuralımdı:
   ikisini birden kağıt zemine çevirmiştim, bant fotoğrafı ise açık yeşil bir çayır.
   Beyaz butonu açık fotoğrafın üstüne koyunca kayboluyor (ölçüldü: zemin rgba(255,255,255,.94),
   fotoğraf parlak, ayırt edilemiyor).
   Kural: KOYU fotoğrafta açık buton, AÇIK fotoğrafta koyu buton. */
.qe-hero__yazi a{ /* 20 Eyl: hero, hasat bölümüyle aynı dile geçti (Burak: "bu görüntü harika, heroda da böyle").
     Dolu beyaz kütle yerine çerçeve; okunurluğu yazının arkasındaki radyal perde taşıyor, beş karede ayrı ayrı ölçülecek. */
  background:transparent !important; color:#fff !important;
  border:1px solid rgba(255,255,255,.85) !important; box-shadow:none !important; }
.qe-hero__yazi a:hover{ background:#fff !important; color:var(--qe-ink,#2B2222) !important; }
.qe-bant__buton{                        /* teneke bandı: metin KREM zeminde -> zümrüt dolgu */
  background:var(--qe-zumrut) !important; color:var(--qe-krem) !important;
  box-shadow:none !important; border:0 !important; }
.qe-bant__buton:hover{ background:#0E2115 !important; color:#fff !important; }

/* ===================== METİN BAĞLANTISI DİLİ (17 Eyl) =====================
   Yan oturum buton dilini B'ye çevirdi (2px köşe · 15px · ağırlık 500 · cümle düzeni).
   Ama metin bağlantıları eski dilde kalmıştı: "SERİYİ GÖR" 13px, büyük harf, .1em aralık.
   Sayfanın yarısı yeni dili, yarısı eskisini konuşuyordu.
   Buradaki kural bağlantıları da aynı ölçeğe çekiyor. Büyük harf KALDIRILDI: ayrıca
   Türkçe text-transform yabancı ürün adlarını bozuyor (ürün kartında aynı sebeple kalkmıştı).
   Ok eklenmedi — metin bağlantısında ok isteğe bağlı ve bu sınıfların bir kısmı
   işaretlemesinde zaten ok taşıyor (yan oturumun çift ok tuzağı). */
.qe-kol__yol, .size-style.link, .section-resource-list__header a,
.qe-satir a, .qe-editoryal a, .qe-kapsul a{
  font-size:15px !important; font-weight:500; letter-spacing:.01em !important;
  text-transform:none !important;
}
/* Giriş alanı etkileşim katmanında: hap değil, butonla aynı köşe (yan oturumun bulgusu). */
.email-signup__input, .search-page-input, .search-input, .field__input{
  border-radius:var(--qe-dugme-kose, 2px) !important;
}

/* ===================== KART BUTONU · SON SÖZ (17 Eyl) =====================
   Bu blok dosyanın sonunda duruyor çünkü buton dili bloğu (yukarıda) kart butonunu da
   koyu zeminli yapıyordu ve fotoğrafın altındaki sessiz buton fikrini eziyordu.
   Kart butonu DOLU DEĞİL: kartta zaten bir fotoğraf var, ikinci bir koyu kütle
   sayfayı ağırlaştırıyor. Dolu buton ürün sayfasında, kartta çerçeveli. */
.product-card .quick-add__button,
product-card .quick-add__button{
  background:transparent !important; color:var(--qe-ink, #2B2222) !important;
  border:1px solid var(--qe-line, #E6E1DA) !important;
  font-size:15px !important; font-weight:500 !important; letter-spacing:.01em !important;
  text-transform:none !important; border-radius:var(--qe-dugme-kose, 2px) !important;
  height:44px !important; min-height:44px !important;
}
.product-card .quick-add__button:hover,
product-card .quick-add__button:hover{
  background:var(--qe-ink, #2B2222) !important; color:#fff !important;
  border-color:var(--qe-ink, #2B2222) !important;
}
/* Yer açma: kartın alt dolgusu tek başına yetmedi, içerik kutusu ızgarayı dolduruyor
   ve buton yazının üstüne biniyordu. Boşluk içerik kutusunun altına veriliyor. */
.product-card .product-card__content{ padding-bottom:14px !important; }
/* Kartın ızgara satırı sabit yükseklikteydi (385.8px) ve içerik taşıyordu: açıklama ile
   fiyat kutunun dışına çıkıp butonun üstüne biniyordu. Satır otomatiğe alındı. */
product-card, .product-card{ grid-template-rows:auto !important; }
.product-card .product-card__content{ height:auto !important; }
/* Mutlak konumlu butonun kapsayıcı bloğu KART değil `.product-card__content` idi
   (o da position:relative). Bu yüzden buton kartın alt dolgusuna değil, içeriğin altına
   yapışıp fiyatın ve açıklamanın üstüne biniyordu. İçerik statik yapıldı; kapsayıcı
   artık kart, buton da açılan 58px'lik alana oturuyor.
   Rozet etkilenmiyor: o da aynı şekilde karta göre konumlanmaya devam ediyor. */
.product-card .product-card__content{ position:static !important; padding-bottom:0 !important; }

/* ===================== PDP BUTON HİZASI (17 Eyl, ikinci tur) =====================
   Site 2px keskin buton diline geçtikten sonra ürün sayfasındaki "Sepete ekle" ve adet
   kutusu tam yuvarlak hap olarak kalmıştı; tek sayfada iki ayrı buton dili görünüyordu.
   Üçü de etkileşim katmanına (--qe-dugme-kose) bağlandı. */
.qe-urun__satin .add-to-cart-button,
.qe-urun__satin .quantity-selector,
.qe-urun__satin .quantity-selector button,
.qe-benzer__ekle, .qe-kapsul__buton, .qe-bant__buton,
.qe-edit__hap, .qe-set__hap, main .button, main button.button{
  border-radius:var(--qe-dugme-kose, 2px) !important;
}

/* ============================================================================
   DİKEY RİTİM — 17 Eyl, Burak: "öne çıkanlar diye yazdığın yer, bi boşluk olsaydı
   üsttekiyle, o kadar amatör duruyor ki" · "iki tane banner'ı alt alta koymak ne"

   ÖLÇÜLEN DURUM (1512 px, bölüm bölüm):
     satir 64/60 · koleksiyonlar 64/72 · kapsul 0/0 · urunler 0/0 · bant 0/0
     editoryal 0/0 · basin 50/60 · tarif 50/56 · set 64/96
   Yani dört bölüm üst üste SIFIR dolguyla yapışmış, kalanların hiçbiri birbirini
   tutmuyor. Sekiz ayrı sayı, hiçbiri bir ölçekten gelmiyor.

   KURULAN ÖLÇEK — tek birim, iki kademe:
     --qe-ritim      96px (masaüstü) / 56px (mobil)   bölümler arası normal nefes
     --qe-ritim-buyuk 128px / 72px                     ana geçişlerde (ürün şeridi öncesi)
   Tam genişlikte fotoğraf taşıyan bölümler (hero, kapsul, bant, editoryal) kendi
   içinde dolgu ALMAZ — fotoğraf kenara dayanmalı — ama komşusundan ritim kadar
   ayrılır. Bu yüzden boşluk dolguyla değil, metin bölümlerinin dolgusuyla kuruluyor.
   ============================================================================ */
/* 18 Eyl · Burak: "şu sectionlarda gereksiz boşluklar var, tüm sayfalarda düzelt."
   Ölçtüm, haklı. Miras bandı örneği: içerik 167 px, bölüm 361 px — yarıdan fazlası boşluk.
   REFERANS ÖLÇÜMÜ (brightland.co/products/awake, 1512): **bölüm dolgusu 0/0.**
   Yedi bölümün yedisinde de sıfır; boşluk bölüme değil İÇERİĞE ait, bölümler birbirine dayanıyor.
   Bizim modelimiz tersiydi: içeriği sıkıştırıp bölüme kocaman dolgu veriyorduk, o yüzden
   boş bant çıkıyordu. Ölçek üçte bir kısıldı; kalan nefes içeriğin kendi boşluğundan gelecek. */
/* Ölçek iki kademe kısıldı: 96 -> 64 -> 48. Sebebi ölçüm: tek tip 64 px, KISA bölümlerde
   hâlâ fazlaydı — koleksiyon kapanışı 280 px'in 128'i dolguydu (%46). Tam genişlikte
   fotoğraf taşıyan bölümler zaten 0 aldığı için ölçek yalnız metin bölümlerini etkiliyor;
   48 px onlarda nefesi koruyor, kısa olanları da boş banda çevirmiyor. */
:root{ --qe-ritim:48px; --qe-ritim-buyuk:64px; }
@media (max-width:749px){ :root{ --qe-ritim:32px; --qe-ritim-buyuk:40px; } }

/* 22 Eyl · SABİT ŞABLON KİMLİKLERİ SİLİNDİ — TUZAK 61.
   Burada dört seçici daha vardı: `#shopify-section-template--22680500666473__qe_basin > *`
   ve kardeşleri. Sayı CANLI temanın şablon kimliği; Çalışma temasınınki başka
   (22718688591977). Sonuç: kimlikli seçici yalnız CANLI'da eşleşiyor, özgüllüğü
   (1,0,1) olduğu için aşağıdaki `[id$="__qe_basin"] > *` kurallarımızı (0,1,1)
   !important'a rağmen yeniyor ve `padding-block:48px`i geri getiriyordu.
   Görünen sonuç: taslakta doğru duran footer amblemi CANLI'da basın kartlarının
   51px üzerine biniyordu. Taslakta çalışıp canlıda çalışmayan bir kural sınıfı —
   iki temada ŞABLON KİMLİKLERİ FARKLI olduğu için tema kopyalamak bunu çözmüyor.
   Nitelik seçicileri zaten aynı bölümleri her temada yakalıyor, kimlikliler
   gereksizdi. Bir daha şablon kimliği yazma. */
[id$="__qe_koleksiyonlar"] > *,
[id$="__qe_basin"] > *, [id$="__qe_tarif"] > *, [id$="__qe_set"] > *{
  padding-block:var(--qe-ritim) !important;
}
/* qe_satir ritim listesinden ÇIKARILDI (18 Eyl): artık kendi krem zemini, kendi çizgileri
   ve kendi dolgusu olan bir AYRAÇ bandı. Ritim dolgusu üstüne binince 268 px'e çıkıyordu,
   yani "boşluk" şikayetini çözerken yenisini üretiyordu. Ayraç, içerik bölümü kadar
   yer kaplamaz; kendi 56/44 px dolgusuyla kalıyor. */
/* 21 Eyl: bu istisnanın gerekçesi ortadan kalktı. Kural yazıldığında ürün şeridinin ÜSTÜNDE
   tam genişlik bir fotoğraf vardı ve 64px'lik büyük nefes onu ayırıyordu. Bugün üstünde beyaz
   zeminli hasat bölümü var; 64 + kapsülün 48'i üst üste binince video ile "Öne çıkanlar"
   arasında 136px boşluk çıkıyordu (ölçüldü, Burak: "fazla boşluklu"). Ritme dönüldü. */
[id$="__qe_urunler"]{ padding-block:var(--qe-ritim) var(--qe-ritim) !important; }
/* 22 Eyl · Burak: "Basında biz'in üstünde hâlâ fazla boşluk var." Ölçüm (1440):
   ödül satırı ile başlık arası 97px = krem bandın 48px alt dolgusu + basın bölümünün
   48px üst ritmi. İki komşu bölüm aynı sınırda ritmi İKİ KEZ uyguluyordu.
   Kural: kendi zemini olan tam genişlik bir bant (krem alıntı) zaten ayırıcıdır;
   hemen ardından gelen bölüm üst ritmini almaz. Sınırda tek ritim kalıyor
   (masaüstü 48, mobil 32). Bandın kendi iç dolgusuna dokunulmadı, simetrisi bozulmasın. */
/* NOT: komşuluk seçicisiyle (krem bandın hemen ardındaki bölüm) yazmıştım, TUTMADI:
   aradaki `qe_sizden` bölümü içeriği boş olduğu için 0px yüksekliğinde ama sarmalayıcısı
   DOM'da duruyor, yani "hemen ardındaki" o oluyor. Görünmez bir bölüm komşuluğu bozuyor.
   Bu yüzden kural doğrudan basın bölümüne yazıldı. */
/* 23 Eyl · Burak: "başlığın üst tarafına padding eklemek lazım, orada orantısızlık var."
   Üstteki satır (padding 0) krem alıntı bandı basının hemen üstündeyken yazılmıştı; o gün
   iki krem yüzey birleşiyor, ritim iki kez uygulanıyordu. Sonra araya BEYAZ zeminli
   "Sizden gelenler" girdi: basının krem zemini beyazın hemen altında başlıyor ve başlık
   krem alanın tepesine 2px mesafede kalıyordu. Gerekçe düştüğü için üst ritim geri geldi
   (masaüstü 48, mobil 32). */
[id$="__qe_basin"] > *{ padding-block-start:var(--qe-ritim) !important; }
/* 22 Eyl: footer bordo bandi (::after) basin bolumunun ALT ritmine giriyor, ustelik
   madalyon artik altin cizginin TAM USTUNDE (merkez cizgide), yani diskin yarisi
   basin bolumunun icine giriyor. Bu dolgu iki seyi birden karsiliyor:
     bant yuksekligi (masaustu 40, mobil 24) + disk yaricapi ve nefesi (28 / 32)
   Sonuc: kart alti ile altin cizgi arasi masaustunde 76px, mobilde 64px. Yaricap
   59 / 52 oldugu icin diskin ustunde 17 / 12px acik kaliyor, karta binmiyor.
   BU DOLGU MADALYONLA CIFT: disk boyutu ya da bant yuksekligi degisirse burasi da
   degisecek, yoksa disk basin kartlarinin uzerine biner. */
[id$="__qe_basin"] > *{ padding-block-end: calc(var(--qe-ritim) + 68px) !important; }
@media (max-width: 749px){
  [id$="__qe_basin"] > *{ padding-block-end: calc(var(--qe-ritim) + 56px) !important; }
}
/* Tam genişlik fotoğraf bölümleri: kendi dolgusu yok, kenara dayalı kalsın. */
/* ⚠️ qe_kapsul 20 Eyl'den beri tam genişlik fotoğraf bandı DEĞİL: krem panel kalktı, video
   600px çerçeveye girdi, dolguyu artık sütunların kendisi veriyor (48). Sarmalayıcı sıfır
   kaldığı için sonuç doğru; listeden çıkarıp ritim listesine ALIRSAN sütun dolgusunu da
   kaldır, yoksa 48+48=96 olur. İkisini birden yapma. */
[id$="__qe_hero"], [id$="__qe_kapsul"], [id$="__qe_bant"], [id$="__qe_editoryal"]{
  padding-block:0 !important;
}

/* ===================== KART BUTONU: GİZLİ, HOVER'DA (18 Eyl) =====================
   Burak: "product box'ın altında sepete ekle butonları çirkin görünüyor, onlar gizli olmalı,
   ürünün üzerine hover edince görünmeli. Gereksiz 4 tane sepete ekle yazısı görüyoruz,
   sitenin hiçbir yerinde böyle bir şey istemiyorum."
   Dört kartın dördünde birden buton görünmesi ızgarayı "4 tane sepete ekle" yazısına çeviriyordu.

   ŞİMDİ: buton varsayılan olarak görünmez; karta gelince (hover/odak) beliriyor.
   Yer kaplaması sabit: karta alt dolgu VERİLMİYOR, buton kartın üstünde uçuyor —
   yoksa hover'da sayfa zıplıyor. Kart yüksekliği sabit kalıyor.
   DOKUNMATİKTE: hover yok, o yüzden ince cihazlarda buton hiç gösterilmiyor;
   kartın kendisi ürün sayfasına gidiyor ve sepete ekleme orada yapılıyor.
   (Bu bilinçli: mobilde butonu hep açık tutmak Burak'ın kaldırttığı görüntünün ta kendisi.) */
.product-card .quick-add,
.product-card quick-add-component{
  opacity:0; visibility:hidden; transform:translateY(4px);
  transition:opacity .22s ease, transform .22s ease, visibility .22s;
}
.product-card:hover .quick-add,
.product-card:focus-within .quick-add,
.product-card:hover quick-add-component,
.product-card:focus-within quick-add-component{
  opacity:1; visibility:visible; transform:none;
}
/* Hover olmayan cihazlarda hiç gösterme: kart zaten ürün sayfasına gidiyor. */
@media (hover: none){
  .product-card .quick-add,
  .product-card quick-add-component{ display:none !important; }
  product-card, .product-card{ padding-bottom:0 !important; }
}

/* ===================== GÖRSEL ÇERÇEVEYE SIĞSIN (18 Eyl) =====================
   Burak: "bu fotoğraflar çerçeveye tam sığsın, taşıyor hep olmaz böyle, sadece burası için
   değil tüm fotoğraflar için geçerli."
   Kural: görsel kabının dışına taşmaz, kabı doldurur, en-boy oranı bozulmaz.
   object-fit:cover + overflow:hidden ikilisi bunu garanti eder; eksik olan yerlerde
   görsel doğal boyunda açılıp kabı deliyordu. */
.qe-kol__gorsel, .qe-anlar__an figure, .qe-basin__kart figure, .qe-set figure,
.qe-tarif__kart, .qe-kardes__kare, .qe-benzer__gorsel, .qe-urun__kare, .qe-urun__kucuk,
.qe-birlikte__gorsel, .qe-kolgiris__gorsel, .qe-kolkapanis__gorsel,
.card-gallery, .product-card .product-media-container{
  overflow:hidden !important;
}
.qe-kol__gorsel img, .qe-anlar__an img, .qe-basin__kart img, .qe-set figure img,
.qe-tarif__kart img, .qe-kardes__kare img, .qe-benzer__gorsel img, .qe-urun__kare img,
.qe-urun__kucuk img, .qe-birlikte__gorsel img, .qe-kolgiris__gorsel img,
.qe-kolkapanis__gorsel img, .product-card .product-media-container img{
  width:100% !important; height:100% !important; object-fit:cover !important; display:block;
}

/* CTA RENGİ (18 Eyl): "Sepete ekle" koyu yeşildi ve sayfadaki tek yeşildi, yabancı duruyordu.
   Brightland'in CTA'sı ölçüldü: rgb(27,27,27), yani neredeyse siyah. Aynı tona geçildi. */
.qe-urun__satin .add-to-cart-button,
.add-to-cart-button, .button--primary{
  background:#1B1B1B !important; color:#fff !important; border-color:#1B1B1B !important;
}

/* MADDE LİSTESİ: AYRAÇ ÇİZGİLERİ KALKTI (18 Eyl).
   Brightland'de maddeler sade disc bullet; çizgi yok. Bizde her maddenin altında ayraç
   vardı ve liste bir "teknik özellik tablosu" gibi ağır duruyordu. */
.qe-urun .qe-bilgi__maddeler{ border-top:0 !important; margin-top:14px !important; }
.qe-urun .qe-bilgi__maddeler li{ border-bottom:0 !important; padding:5px 0 5px 18px !important; }
.qe-urun .qe-bilgi__kdv-satir{ margin:6px 0 0; font-size:13px; color:var(--qe-mute,#6E6560); }

/* HASAT ŞERİDİ · sadeleştirme (18 Eyl) */
.qe-urun .qe-hasat{ margin-bottom:20px; }
.qe-urun .qe-hasat__kart{ padding:11px 12px; gap:2px; }
.qe-urun .qe-hasat__ad{ font-size:14.5px; }
.qe-urun .qe-hasat__karakter{ font-size:13px; }
.qe-urun .qe-hasat__nerede{ font-size:12.5px; }

/* ══════════════════════════════════════════════════════════════════════════
   TİPOGRAFİ SİSTEMİ · TEK KAYNAK (18 Eyl)
   Burak: "neyin boldlu yazıldığına dikkat etmen lazım... hala bilmiyorum nerde
   hangi font nasıl boldlu mu falan kullandığımızı."
   Bundan sonra punto/ağırlık kararı BURADAN okunur, bölüm dosyasında icat edilmez.

   İKİ FONT, İKİ İŞ:
   ─ GAMBARINO (serif, TEK ağırlık 400) → yalnız ADLAR ve BÖLÜM BAŞLIKLARI
       ürün adı (h1) · bölüm başlığı (h2) · koleksiyon kartı adı · ürün kartı adı
       Kalın YAZILMAZ: fontun tek ağırlığı var, zorlanırsa tarayıcı sahte kalın üretir.
   ─ JOST (sans, 400/500) → geri kalan HER ŞEY

   JOST AĞIRLIK KURALI (Brightland'den birebir okundu):
       500 (medium) → fiyat · buton · akordiyon BAŞLIĞI · madde içindeki OLGU
                      ("750 ml", "Soğuk sıkım") · küçük büyük harf etiketler
       400 (regular) → paragraf · madde içindeki AÇIKLAMA · akordiyon gövdesi
       500 italik   → başlık altındaki tek cümlelik giriş
       400 italik   → kapanış notu, dipnot

   MADDE DESENİ: olgu kalın, açıklama normal — "**750 ml** · koyu cam şişe".
   Brightland da böyle yapıyor ("**Awake** is robust and peppery").
   ══════════════════════════════════════════════════════════════════════════ */

/* Gambarino asla sahte kalın olmasın */
h1, h2, h3, .qe-kol__ad, .product-card .text-block p, .product-card .text-block h3,
.qe-anlar h2, .qe-yorum h2, .qe-hasat__ad{ font-weight:400 !important; }

/* 500 kullanılacak yerler */
.qe-urun__fiyat, .qe-bilgi__tutar,
.qe-akordiyon summary,
.qe-bilgi__maddeler b, .qe-hasat__kart.is-etkin .qe-hasat__ad,
.add-to-cart-button, .quick-add__button, .qe-hero__yazi a,
.qe-urun__rozet, .qe-kart-rozet{ font-weight:500 !important; }

/* 400 kalacak yerler (tema bazı yerlerde 600-700 basıyordu) */
.qe-akordiyon details > div, .qe-akordiyon__metin, .qe-akordiyon__metin p,
.qe-bilgi__maddeler li, .qe-urun__guven, .qe-anlar__satir, .qe-kol__satir{
  font-weight:400 !important;
}

/* Giriş cümlesi: 500 italik (Brightland'de kalın italik) */
.qe-bilgi__giris{ font-weight:500 !important; font-style:italic !important; }

/* Akordiyon görsel kuralları sections/qe-urun.liquid içinde (tek kaynak).
   Burada yalnız yukarıdaki ağırlık kuralları geçerli: başlık 500, gövde 400. */

/* ══════════════════════════════════════════════════════════════════════════
   STICKY SEPETE EKLE ÇUBUĞU (18 Eyl) — Burak'ın tarifi: "tasarımı çok basit
   olmalı, en solda ürünün küçük bir fotoğrafı, ortada ürün ismi fiyat, sağda
   sepete ekle". Süs yok: tek üst çizgi, beyaz zemin, siyah buton.
   Buton rengi sayfadaki asıl CTA ile aynı (#1B1B1B) — ikinci bir buton dili olmaz.
   ══════════════════════════════════════════════════════════════════════════ */
.qe-sticky{
  position:fixed; left:0; right:0; bottom:0; z-index:40;
  background:#fff; border-top:1px solid var(--qe-line,#E6E1DA);
  /* Sağ dolgu, sohbet (DESTEK) butonu varsa onun genişliği kadar açılıyor; yoksa 0.
     Değişkeni qe-sticky-sepet.liquid ölçüp yazıyor (gölge DOM'daki gerçek buton). */
  padding:10px clamp(14px,3.4vw,48px);
  padding-right:calc(clamp(14px,3.4vw,48px) + var(--qe-destek-pay, 0px));
  padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));
  animation:qe-sticky-gir .18s ease-out;
}
/* ══════════════════════════════════════════════════════════════════════════
   DESTEK (Shopify Inbox) BUTONU — 21 Eyl · Burak: "diğer WhatsApp ve kampanya
   butonuyla uyumlu olsun."

   Sorun: Inbox butonunun konumu uygulamanın ayarından geliyor ve ekranın dibinden
   sabit 20px yukarıda duruyor; bizim alt çubuklarımızı umursamıyor. Ölçüldü (mobil):
   set sayfasında çubuk 591-812, Destek 746-792 — yani "Seti sepete ekle" alanının
   üstünü kapatıyordu, bizim ikili 531-575'e çıkmışken.

   Buton gölge DOM'un içinde, oraya CSS giremiyoruz; ama HOST elemana transform
   uygulanınca buton da taşınıyor. Fark kadar yukarı çekiliyor:
     mobil   bizim taban 16 → 20-16 =  4px aşağı, sonra çubuk kadar yukarı
     masaüstü bizim taban 22 → 20-22 = -2px
   İki değişken de bizim: --qe-sticky-aktif-y (ürün sayfası çubuğu),
   --qe-set-cubuk (set sayfası çubuğu). Böylece üç öge tek hizada kalıyor.

   `:not([open])` ŞART: pencere açılınca host'a `open` niteliği geliyor (ölçüldü) ve
   transform açık sohbet penceresini de kaydırıp alttan taşırıyordu.
   ══════════════════════════════════════════════════════════════════════════ */
/* 22 Eyl · Burak: "şu desteğin durduğu yeri bi çöz, soldakilerle uyumlu olsun."
   SABİT SAYI KALDIRILDI. Önce 66px (mobil 72) yazıyordu: Inbox butonunun ekran
   dibine uzaklığı gerçek önizlemede 88px ölçülmüş, bizim taban 22 olduğu için
   88-22=66 hesaplanmıştı. Sayı iki sebepten tutmadı:
     1) uygulamanın kendi payı bizim elimizde değil — `button_vertical_position`
        ayarı ya da uygulamanın bir güncellemesi payı değiştiriyor ve fark kadar
        kayma sessizce yanlışa dönüyor (yerelde ölçtüm: pay 20, +66 kaydırınca
        buton ekranın 37px altına düşüyor, yani hiç görünmüyor);
     2) aynı pay yerel sunucuda ve gerçek mağazada FARKLI, yani hangi sayıyı
        yazarsam yazayım iki ortamdan birinde yanlış oluyor (21 Eyl'de tam bu
        yüzden bir tur kaybedildi).
   Artık kayma ÖLÇÜLEREK yazılıyor: `snippets/qe-whatsapp.liquid` içindeki betik
   WhatsApp butonunun alt kenarıyla DESTEK butonunun alt kenarını okuyup farkı
   `--qe-destek-kaydir` değişkenine koyuyor. Hedef sol sütunun KENDİSİ olduğu için
   yapışkan sepet çubuğu ya da set çubuğu ikiliyi yukarı ittiğinde DESTEK de
   kendiliğinden onlarla geliyor; burada artık o değişkenleri çıkarmaya gerek yok.
   `:not([open])` ŞART: pencere açılınca host'a `open` geliyor, transform açık
   sohbeti de kaydırıp alttan taşırıyordu. */
shopify-chat:not([open]){
  transform:translateY(var(--qe-destek-kaydir, 0px)) !important;
  transition:transform .18s ease;
}

/* 2 Eki · review: ürün sayfasında çubuk çıktıktan sonra mobil menü açılınca çubuk (z 40) menünün (z 18) ÜSTÜNDE
   kalıyor, en alttaki "Kurumsal" görünmüyordu. Menü açıkken çubuk gizlenir (yüzen düğmeler için aşağıda ayrı kural var). */
body:has(details.menu-drawer-container[open]) .qe-sticky{ display:none !important; }
@keyframes qe-sticky-gir{ from{ transform:translateY(100%); } to{ transform:none; } }
@media (prefers-reduced-motion:reduce){ .qe-sticky{ animation:none; } }
.qe-sticky__ic{ display:flex; align-items:center; gap:14px; }
.qe-sticky__gorsel{ width:44px; height:44px; object-fit:cover; flex:none;
  border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-kap-kose,0px); }
.qe-sticky__metin{ flex:1 1 auto; min-width:0; display:flex; align-items:baseline; gap:10px; }
/* Ad serif (Gambarino, ad = serif kuralı), fiyat sans 500 — tipografi sistemi. */
.qe-sticky__ad{ font-family:var(--font-heading--family); font-size:16px; font-weight:400;
  color:var(--qe-ink,#2B2222); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.qe-sticky__fiyat{ font-family:var(--font-body--family); font-size:15px; font-weight:500;
  color:var(--qe-ink,#2B2222); white-space:nowrap; flex:none; }
.qe-sticky__dugme{
  flex:none; min-width:200px; padding:13px 26px; border:0; cursor:pointer;
  background:#1B1B1B; color:#fff; border-radius:var(--qe-dugme-kose,2px);
  font-family:var(--font-body--family); font-size:15px; font-weight:500; letter-spacing:.01em;
}
.qe-sticky__dugme:hover{ background:#000; }
@media (max-width:749px){
  .qe-sticky{ padding:9px 14px; padding-bottom:calc(9px + env(safe-area-inset-bottom,0px)); }
  .qe-sticky__ic{ gap:10px; }
  .qe-sticky__gorsel{ width:38px; height:38px; }
  .qe-sticky__metin{ flex-direction:column; align-items:flex-start; gap:1px; }
  .qe-sticky__ad{ font-size:14px; } .qe-sticky__fiyat{ font-size:13.5px; }
  .qe-sticky__dugme{ min-width:0; padding:12px 18px; font-size:14px; }
}

/* Header aksiyonları (18 Eyl) — Burak Brightland header'ını referans verdi, ikonlar
   yazıya çevrildi (Ara · Hesabım · Sepet + adet). Ölçünce "Hesabım" EB GARAMOND ile
   çiziliyordu: Shopify'ın <shopify-account> bileşeni kendi fontunu getiriyor, yani
   sitede sistemde olmayan ÜÇÜNCÜ bir aile vardı. Jost'a sabitlendi. */
header-actions, header-actions *, .header-actions, .header-actions *,
shopify-account, shopify-account *{
  font-family:var(--font-body--family) !important;
}
header-actions a, header-actions button, .header-actions a, .header-actions button{
  font-size:14px !important; letter-spacing:.02em !important; text-transform:none !important;
}

/* HEDİYE ŞERİDİ (18 Eyl) — butonun altındaki altı çizili bağlantı yerine ikonlu şerit.
   Zemin pudra (#F1E3E0, kimlik paletinden), yazı koyu. Brightland'in hediye satırı da
   renkli şerit; bizde link hâlinde dipnot gibi kalıyordu. */
.qe-hediye{
  display:flex; align-items:center; gap:10px; margin-top:12px;
  padding:11px 14px; background:var(--qe-pudra,#F1E3E0);
  border-radius:var(--qe-kap-kose,0px); color:var(--qe-ink,#2B2222); text-decoration:none;
  font-family:var(--font-body--family); font-size:14px; line-height:1.3;
}
.qe-hediye:hover{ background:#EBD8D4; }
.qe-hediye__metin{ flex:1 1 auto; font-weight:500; }
.qe-hediye__ikon{ width:18px; height:18px; flex:none; fill:none; stroke:currentColor;
  stroke-width:1.2; stroke-linejoin:round; }
.qe-hediye__ok{ width:12px; height:12px; flex:none; fill:none; stroke:currentColor;
  stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; }
.qe-hediye:hover .qe-hediye__ok{ transform:translateX(2px); transition:transform .15s; }

/* Çubuk sayfanın son 64 pikselini örtüyordu (2b ölçtü: son bölüm 3842, çubuk üst kenarı 781).
   Dolgu SABİT, çubuk göründüğünde açılıp kapanan cinsten değil: çubuk yalnız asıl buton
   ekrandan çıkınca geliyor, yani sayfanın altına inildiğinde HER ZAMAN görünür durumda.
   Değişken dolgu bu yüzden hiçbir şey kazandırmaz, sadece kaydırırken sayfayı zıplatır.
   :has(#qe-sticky) ile yalnız ürün sayfasına uygulanıyor — snippet başka yerde basılmıyor.
   Kaydıran kap iki yerde farklı (masaüstü .page-wrapper, mobil pencere), ikisine birden
   dolgu verirsek masaüstünde iki kez sayılır; o yüzden ayrık seçici. */
.page-wrapper:has(#qe-sticky){ padding-bottom:calc(var(--qe-sticky-yukseklik, 64px) + env(safe-area-inset-bottom, 0px)); }
/* Mobilde de .page-wrapper VAR (sadece kaydırmıyor), o yüzden :not(:has(.page-wrapper))
   hiç eşleşmiyordu. Dolgu her iki durumda .page-wrapper'da duruyor; belge yüksekliğini
   o uzattığı için pencere kaydırmasında da çalışıyor. Ölçüldü: iki genişlikte de örtüşme 0. */
body:not(:has(.page-wrapper)):has(#qe-sticky){ padding-bottom:calc(var(--qe-sticky-yukseklik, 64px) + env(safe-area-inset-bottom, 0px)); }

/* Dokunma hedefi: buton mobilde 45px'ti, 44 eşiğinin hemen üstü. 48'e çekildi. */
@media (max-width:749px){ .qe-sticky__dugme{ padding:14px 18px; } }

/* Sağdaki yazı bağlantısı (Brightland'de "Our Story"nin yeri). İkonlarla aynı
   hizada, aynı punto, Jost. Dar ekranda gizlenir — orada menü zaten çekmecede. */
/* header-actions flex ama align-items:normal — yazı ikonların 14px üstünde kalıyordu.
   Kabı ortalıyoruz; ikonların kendi yüksekliği değişmiyor. */
header-actions, .header-actions{ align-items:center !important; }
.qe-header-yazi{
  display:inline-flex; align-items:center;
  font-family:var(--qe-menu-font); font-size:16px; font-weight:var(--qe-menu-agirlik);
  letter-spacing:.02em;
  color:currentColor; text-decoration:none; white-space:nowrap; margin-right:10px;
}
.qe-header-yazi:hover{ text-decoration:underline; text-underline-offset:4px; }
@media (max-width:989px){ .qe-header-yazi{ display:none; } }
/* 28 Eyl · iPad'de "Hikayemiz" hesap ve sepet ikonlarının üstüne biniyordu. Sebep: Horizon dokunmatik
   cihazda (ve menü sığmadığında) genişlikten bağımsız olarak header'ı çekmece düzenine alıyor
   (utilities.js setHeaderMenuStyle → data-menu-style="drawer"); yukarıdaki kural yalnız genişliğe bakıyordu.
   Çekmece düzeninde yazı gizlenir; Hikayemiz çekmecede Keşfet altında duruyor. */
#header-component[data-menu-style='drawer'] .qe-header-yazi{ display:none; }

/* Hikayemiz artık sağda (Brightland'in "Our Story" yeri). Soldaki menüde de durunca
   aynı bağlantı iki kez görünüyordu. Soldaki masaüstünde gizleniyor; mobil çekmecede
   KALIYOR, orada sağ yazı linki zaten gizli (Brightland de çekmecede hepsini gösteriyor).
   Metne göre değil HREF'e göre seçiliyor — menü adı değişirse kural bozulmasın.
   KALICI ÇÖZÜM Burak'ta: Shopify yönetiminde ana menüden çıkarılırsa bu kural silinir. */
@media (min-width:990px){
}

/* ============================================================================
   RİTİM · TÜM SAYFALAR — 18 Eyl, Burak: "şu sectionlarda gereksiz boşluklar var,
   onları düzelt TÜM SAYFALARDA"

   İlk ritim çalışması yalnız ANA SAYFA bölümlerini kapsıyordu. Ölçünce diğer
   şablonların kendi sabit sayılarını taşıdığı çıktı — altı ayrı çift, hiçbiri bir
   ölçekten gelmiyor:
       koleksiyon  qe_giris 48/48 · qe_kapanis 48/64  (bölümün %42'si boşluk)
       ürün        qe_her_gun 72/80 · qe_yorumlar 72/80 (%31) · qe_sss 50/56 · qe_benzer 50/30
   Hepsi tek değişkene bağlandı. Tam genişlikte fotoğraf taşıyanlar 0'da kalır,
   ince şeritler (qe_serit) kendi 14 px'inde kalır — onlar bölüm değil ayraç.
   ============================================================================ */
[id$="__qe_giris"], [id$="__qe_kapanis"],
[id$="__qe_her_gun"], [id$="__qe_anlar"], [id$="__qe_yorumlar"],
[id$="__qe_sss"], [id$="__qe_benzer"], [id$="__qe_kardes"]{
  padding-block:var(--qe-ritim) !important;
}
[id$="__qe_giris"] > *, [id$="__qe_kapanis"] > *,
[id$="__qe_her_gun"] > *, [id$="__qe_anlar"] > *, [id$="__qe_yorumlar"] > *,
[id$="__qe_sss"] > *, [id$="__qe_benzer"] > *, [id$="__qe_kardes"] > *{
  padding-block:0 !important;
}
/* buybox ve tam genişlik fotoğraf bölümleri dolgusuz kalır */
[id$="__qe_urun"], [id$="__main"]{ padding-block:0 !important; }

/* ══════════════════════════════════════════════════════════════════════════
   SET OLUŞTURUCU (18 Eyl) — Brightland'in bundle sayfasının düzeni, bizim dilimizde.
   Solda kategori grupları + ürün ızgarası, sağda yapışkan "Setiniz" paneli.
   ══════════════════════════════════════════════════════════════════════════ */
.qe-set{ padding:40px clamp(16px,3.4vw,48px) 72px; }
.qe-set__bas{ max-width:640px; margin:0 0 34px; }
/* Punto yazmıyoruz: başlık ölçeği artık merkezi (--qe-h1/--qe-h2/--qe-h3, qe.css sonu).
   Burada bir kez !important'la 38/26/20 sabitlemiştim; ölçek kaynağında çözülünce
   söküldü. Bölüm dosyasında sabit punto = ölçeğin dışına kaçmak. */
.qe-set__bas h1{ margin:0; line-height:1.1; }
.qe-set__alt{ margin:10px 0 0; font-size:16px; line-height:1.5; color:var(--qe-mute,#6E6560); }
.qe-set__govde{ display:grid; grid-template-columns:1fr 330px; gap:44px; align-items:start; }
.qe-set__grup{ margin-bottom:38px; }
.qe-set__grup h2{ margin:0; line-height:1.2; }
.qe-set__grup-not{ margin:6px 0 18px; font-size:14.5px; line-height:1.5; color:var(--qe-mute,#6E6560); max-width:52ch; }
.qe-set__liste{ list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:26px 20px; }
.qe-set__kart{ display:flex; flex-direction:column; gap:5px; }
.qe-set__gorsel{ display:block; aspect-ratio:1; overflow:hidden; background:var(--qe-krem,#F5F3EC);
  border-radius:var(--qe-kap-kose,0px); margin-bottom:9px; }
.qe-set__gorsel img{ width:100%; height:100%; object-fit:cover; display:block; }
/* Şeffaf şişe: zemin yok, alt hizalı, boy serinin en uzununa göre (--qe-olcek, Liquid); 29 Eyl. */
.qe-set__gorsel.is-seffaf{ background:transparent; display:flex; align-items:flex-end; justify-content:center;
  padding:6% 8% 4%; box-sizing:border-box; }
.qe-set__gorsel.is-seffaf img{ height:calc(var(--qe-olcek,1) * 100%); object-fit:contain; object-position:center bottom; }
.qe-set__ad{ font-family:var(--font-heading--family); font-size:16px; line-height:1.25; }
.qe-set__fiyat{ font-size:14px; font-weight:500; color:var(--qe-ink,#2B2222); }
.qe-set__ekle{ margin-top:7px; padding:10px 12px; cursor:pointer;
  background:transparent; color:var(--qe-ink,#2B2222); border:1px solid var(--qe-ink,#2B2222);
  border-radius:var(--qe-dugme-kose,2px);
  font-family:var(--font-body--family); font-size:14px; font-weight:500; }
.qe-set__ekle:hover{ background:var(--qe-ink,#2B2222); color:#fff; }
.qe-set__yok{ margin-top:7px; padding:10px 0; font-size:14px; color:var(--qe-mute,#6E6560); }
/* 22 Eyl · Burak: "sitedeki tüm teklif alın yazan butonları aynı yapman lazım,
   üzerine hover edince zeytinyağı rengi buton olsun."
   19 Eyl'de buraya BİLEREK buton değil bağlantı koymuştum: "aynı görünüm aynı işi
   vaat eder, bu ise başka sayfaya götürüyor" diye. Gerekçe artık geçmiyor — kararı
   Burak verdi ve ekranda gördüğü şey satırın tırtıklı olması: komşusu çerçeveli
   buton, bu altı çizili soluk bir yazıydı. Kutu "Sete ekle" ile birebir aynı;
   AYRIM ARTIK RENKTE: üzerine gelince zeytinyağı gradyanı geliyor, "Sete ekle"
   ise mürekkebe dönüyor. Hover kuralı üçünde ortak (.qe-teklif-buton), aşağıda. */
.qe-set__teklif{ display:block; margin-top:7px; padding:10px 12px; box-sizing:border-box;
  /* line-height:normal — komşu "Sete ekle" bir <button>, tarayıcı ona `normal`
     veriyor (21.5px). Bu <a> gövdeden 21px miras alınca kutu 43 / 43.5 oluyordu,
     yarım piksel satırı tırtıklıyordu. Aynı kaynaktan beslensin diye açık yazıldı. */
  line-height:normal;
  text-align:center; text-decoration:none;
  background:transparent; color:var(--qe-ink,#2B2222); border:1px solid var(--qe-ink,#2B2222);
  border-radius:var(--qe-dugme-kose,2px);
  font-family:var(--font-body--family); font-size:14px; font-weight:500; }

/* Panel */
.qe-set__panel{ position:sticky; top:96px; padding:22px;
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px); }
/* Panel başlığı bir YARDIMCI raf başlığı, içerik bölümüyle aynı sesle bağırmamalı.
   Sabit punto yazmıyoruz, merkezi ölçeğin yardımcı değişkenine bağlanıyor.
   Özgüllük 0,2,1: genel h2 kuralı :not() yüzünden 0,2,1'de, altında kalmamak için gerekli. */
.qe-set .qe-set__panel h2.qe-set__panel-bas{ margin:0 0 14px; line-height:1.2;
  font-size:var(--qe-h-yardimci) !important; }
.qe-set__kademeler{ list-style:none; margin:0 0 16px; padding:0; display:flex; gap:8px; }
.qe-set__kademeler li{ flex:1; padding:9px 10px; background:#fff; text-align:center;
  border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-kap-kose,0px); opacity:.55; }
.qe-set__kademeler li.is-acik{ opacity:1; border-color:var(--qe-ink,#2B2222); }
.qe-set__kademeler b{ display:block; font-size:16px; font-weight:500; }
.qe-set__kademeler span{ font-size:11.5px; color:var(--qe-mute,#6E6560); }
.qe-set__cubuk{ height:3px; background:#fff; overflow:hidden; }
.qe-set__cubuk span{ display:block; height:100%; background:var(--qe-altin,#9A7A33); transition:width .2s; }
.qe-set__durum{ margin:9px 0 14px; font-size:13px; color:var(--qe-mute,#6E6560); }
.qe-set__slotlar{ list-style:none; margin:0 0 16px; padding:0; display:flex; flex-direction:column; gap:7px; }
.qe-set__slot{ display:flex; align-items:center; gap:10px; min-height:46px; padding:6px 10px;
  border:1px dashed var(--qe-line,#E6E1DA); font-size:13px; color:var(--qe-mute,#6E6560); }
.qe-set__slot.is-dolu{ border-style:solid; background:#fff; color:var(--qe-ink,#2B2222); }
.qe-set__slot img{ width:34px; height:34px; object-fit:cover; flex:none; }
.qe-set__slot-ad{ flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.qe-set__cikar{ flex:none; width:24px; height:24px; cursor:pointer; background:none; border:0;
  font-size:17px; line-height:1; color:var(--qe-mute,#6E6560); }
.qe-set__cikar:hover{ color:var(--qe-ink,#2B2222); }
.qe-set__toplam{ display:flex; justify-content:space-between; align-items:baseline;
  margin:0 0 12px; padding-top:12px; border-top:1px solid var(--qe-line,#E6E1DA); font-size:14px; }
.qe-set__toplam b{ font-size:18px; font-weight:500; }
/* Mobil punto ölçütü (yazı >= 14px) — ana sayfada iki gerçek ihlal (19 Eyl ölçüm).
   Ürün kartı FİYATI 13px ve "Tarifleri görün" bağlantısı 12px idi; ikisi de içerik,
   biri de dokunma hedefi. Küçük büyük harf etiketlere (qe-kol__ust, qe-kapsul__ust,
   qe-tarif__ust, rozetler) DOKUNULMADI: onlar 12-12,5px'te sitenin kendi dili ve
   büyük harf oldukları için okunurlukları puntolarından yüksek. Bu ayrım bilinçli —
   ölçütü her eşleşmeye körü körüne uygulamak tasarımı bozar (bkz. TUZAK 33). */
@media (max-width:749px){
  .product-card .price, .price{ font-size:14px !important; }
  .qe-tarif__cta span{ font-size:14px !important; }
}

/* ---- Bölüm başlıkları italik (19 Eyl) -------------------------------------
   Burak: "bu tarz başlıkları daha italik bi şekilde falan yazalım, böyle biraz
   amatör duruyor. bannerlar, bu tarz başlıklar."

   Hangi başlıklar: bölüm başlıkları (h2) ve hero/bant gibi banner başlıkları.
   Ürün adı (ürün sayfasındaki h1) ve ürün kartı adı KAPSAM DIŞI — ürün adını
   italik yazmak okunurluğu düşürür ve isim bir vurgu değil, bir etikettir.

   Punto 32 -> 38: Garamond'un x-yüksekliği Gambarino'dan küçük, aynı puntoda
   gözle daha ufak okunuyor. 38'de optik olarak eski 32'nin yerine oturuyor.
   Ölçülecek, göz kararı değil. */
.qe-hero__yazi h1,
.qe-bant__yazi h2,
.qe-kapsul h2, .qe-tarif__ust + h2, .qe-basin h2,
.qe-kol__ad, .qe-kolgiris h2, .qe-kolkapanis h2,
.shopify-section h2:not(.qe-popup__baslik):not(.theme-drawer__title){
  font-family:'Gambarino', Georgia, serif !important; font-style:normal !important;
  font-style:italic !important;
  font-size:32px !important; /* 20 Eyl: 38 → 32, Burak "başlıklar çok büyük" */
  letter-spacing:0 !important;
  line-height:1.15;
}
.qe-hero__yazi h1{ font-size:36px !important; }
@media (max-width:749px){
  .shopify-section h2:not(.qe-popup__baslik):not(.theme-drawer__title){ font-size:27px !important; }
  .qe-hero__yazi h1{ font-size:30px !important; }
}

/* ---- Sepette çift fiyat (19 Eyl) ------------------------------------------
   Burak: "ürünün hem altında hem sağında fiyat var, sadece sağındaki kalsın."
   Ölçüldü: iki AYRI değer basılıyor —
     ürün adının altı  `.cart-items__unit-price-wrapper`  item.final_price  (birim)
     sağ sütun         `.cart-items__price`               item.final_line_price (satır toplamı)
   Adet 1'ken ikisi aynı sayıyı gösteriyor, o yüzden tekrar gibi duruyor.
   Adet 2+ olduğunda farklılaşırlar (birim vs toplam) — yani bilgi kaybı VAR,
   bilerek göze alındı: sağ sütun + adet kutusu zaten yan yana duruyor.
   Bu kapta üstü çizili karşılaştırma fiyatı da var; site zaten her yerde onu
   gizliyor (10 gün kuralı kararı, qe.css satır 109 ve 231), yani yeni bir kayıp değil. */
.cart-items__unit-price-wrapper{ display:none !important; }

/* ---- Sepette fiyat fontu (19 Eyl) -----------------------------------------
   Burak: "sepet kısmındaki fiyatların fontunu düzeltelim."
   Ölçüldü ve sebep bulundu: sepette fiyatlar İKİ AYRI FONTTA çıkıyordu.
     satır fiyatı / ürün kartı fiyatı   Jost   (gövde fontu)
     ara toplam · indirim · genel toplam Gambarino (başlık serifi)
   Sebep tema: bu üç değer `cart-secondary-typography` sınıfını taşıyor ve o sınıf
   `--cart-secondary-font-family` değişkeninden besleniyor, o da başlık fontuna
   bağlı. Yani aynı sepette rakamlar iki tipografiyle yazılıyordu.
   Fiyat İÇERİKTİR, kaplama değil: gövde fontuna bağlandı, ürün kartındaki fiyatla
   aynı. tabular-nums da eklendi — rakamlar eşit genişlikte olunca alt alta duran
   tutarlar hizalanıyor (ara toplam / indirim / toplam sütunu). */
.cart-secondary-typography,
.cart-totals__original-value, .cart-totals__total-value,
.cart-discounts__value, .cart-items__price, .cart-items__price-unit{
  font-family:var(--font-body--family) !important;
  font-weight:400 !important;
  font-variant-numeric:tabular-nums;
}

/* ---- Çekmece başlıkları (19 Eyl) ------------------------------------------
   Burak: "yandan açılan sepet ekranındaki sepet yazısının fontunu da beğenmiyorum."
   Ölçüldü: `theme-drawer__title` = Gambarino 32px/400, yani başlık serifimiz.
   Header menüsü Jost 500'e geçince sepet başlığı serif kalıyordu — ikisi de sitenin
   AYNI katmanı (üstte duran kaplama), aynı dili konuşmalı. Menüyle aynı değişkenden
   besleniyor: menü fontu değişirse burası da kendiliğinden değişir.
   Sınıfı sepet ÇEKMECESİ ve filtre çekmecesi paylaşıyor, ikisi de kaplama başlığı. */
.theme-drawer__title{
  /* 20 Eyl: var(--qe-menu-font) tanımsız kalınca tüm kural düşüyordu, ölçüm Gambarino 32 gösterdi (Burak: "fontu kötü"). Açık değer. */
  font-family:'Jost', 'QE-Lira', system-ui, sans-serif !important;
  font-weight:500 !important;
  font-size:22px !important;
  font-style:normal !important;
  letter-spacing:.01em !important;
}
@media (max-width:749px){ .theme-drawer__title{ font-size:20px !important; } }

/* ---- Kademeli indirim önizlemesi (19 Eyl) ----------------------------------
   Burak: "ürünleri ekleyince ne kadar indirim tanımlandığı belli oluyor ama fiyat
   düşmüyor, sağda ürünlerin yanında fiyat yazsın."
   Panel ham toplamı yazıyordu; 4 üründe %15 uygulanacakken ekranda 4.400 duruyordu.
   Artık slot satırında birim fiyat, toplamda üstü çizili ham tutar + indirimli tutar.
   Kazanç satırı ÖNİZLEME dilinde yazıyor ("sepette uygulanır"), çünkü indirim sepet
   düzeyinde ve sepetteki tüm ürünlere işliyor: sepette başka ürün varsa kademe
   buradaki sayıya göre değil toplam sepet adedine göre hesaplanır. */
.qe-set__slot-fiyat{ flex:0 0 auto; font-size:13.5px; color:var(--qe-mute,#6E6560);
  font-variant-numeric:tabular-nums; }
.qe-set__ham{ margin-left:auto; margin-right:10px; font-size:14px;
  color:var(--qe-mute,#6E6560); text-decoration-thickness:1px; }
.qe-set__kazanc{ margin:8px 0 0; font-size:13.5px; line-height:1.5;
  color:var(--qe-zumrut,#16301F); }
/* Ortak ölçüt: mobilde yazı >= 14px. Aşağıdakiler bölümde zaten vardı, benim
   eklediklerim değil — ama dosya bana devredildi ve bilinen ihlali "önceden
   böyleydi" diye bırakmak, bugün kovaladığımız uyuyan kuralın başka bir hâli.
   Ölçülen sekiz ihlal: kademe etiketi 11,5 · durum 13 · slot adı 13 · panel notu 12,5. */
@media (max-width:749px){
  .qe-set__slot-fiyat{ font-size:14px; }
  .qe-set__kazanc{ font-size:14px; }
  .qe-set__kademeler span{ font-size:14px; }
  .qe-set__durum{ font-size:14px; }
  .qe-set__slot-ad{ font-size:14px; }
}
.qe-set__gonder{ width:100%; padding:14px; cursor:pointer; border:0;
  background:#1B1B1B; color:#fff; border-radius:var(--qe-dugme-kose,2px);
  font-family:var(--font-body--family); font-size:15px; font-weight:500; }
.qe-set__gonder:disabled{ opacity:.4; cursor:not-allowed; }
.qe-set__not{ margin:10px 0 0; font-size:12.5px; line-height:1.4; color:var(--qe-mute,#6E6560); }

/* Bu blok bilerek BURADA: yukarıdaki 749 bloğuna `.qe-set__not` yazmıştım ve
   çalışmadı, çünkü o blok .qe-set__not'un TANIMINDAN ÖNCE geliyor. Aynı
   özgüllükte sonraki kural kazanır — medya sorgusu özgüllük eklemez, sadece
   koşul koyar. Ezmek isteyen kural ezeceğinin arkasında durmalı.
   Dokunma hedefleri de ortak ölçüte çekildi: "Sete ekle" 43 -> 44,
   setten çıkarma düğmesi 24 -> 44. Çıkarma düğmesi görsel olarak büyümüyor,
   yalnız dokunma alanı büyüyor; satır zaten 46px yüksekliğinde. */
@media (max-width:749px){
  .qe-set__not{ font-size:14px; }
  .qe-set__ekle{ min-height:44px; }
  .qe-set__teklif{ min-height:44px; display:flex; align-items:center; justify-content:center; }
  .qe-set__cikar{ width:44px; height:44px; margin-right:-10px; }
}

@media (max-width:989px){
  .qe-set__govde{ grid-template-columns:1fr; gap:30px; }
  .qe-set__panel{ position:static; }

}

/* ══════════════════════════════════════════════════════════════════════════
   HEADER NAV + MEGA MENÜ — brightland.co'dan 18 Eyl'de CANLI ÖLÇÜLDÜ (1440px):
     header yüksekliği        55px
     nav bağlantısı           15px / 700 / CircularXXWeb
     mega panel               tam genişlik, beyaz, dolgu 40px 48px 28px, yükseklik 390px
     panel iç boşluk          gap 64px, sol bağlantı sütunu 279px
     grup başlığı             15px / 700      alt bağlantı   16px / 400
   BİZE UYARLAMA: Jost'ta 700 yok, 600 indirildi (latin + latin-ext, Türkçe için ikisi de
   şart). 600 SADECE gezinme için: nav bağlantısı ve mega menü grup başlığı. Gövde metninde
   kullanılmaz — tipografi sisteminde 500 hâlâ "vurgu", 600 "gezinme" basamağı.
   ══════════════════════════════════════════════════════════════════════════ */
.header .menu-list__link, .header .menu-list__item > a, .header nav a.menu-list__link{
  font-family:var(--qe-menu-font) !important;
  font-size:var(--qe-menu-punto) !important;
  font-weight:var(--qe-menu-agirlik) !important;
  letter-spacing:.02em !important;
}

/* Mega panel: Horizon'un açılır menüsünü tam genişlik panele çeviriyoruz. */
.header .menu-list__submenu, .header details[open] > .menu-list__submenu{
  position:fixed !important; left:0 !important; right:0 !important; width:100vw !important;
  max-width:none !important; margin:0 !important;
  background:#fff !important; border:0 !important; border-top:1px solid var(--qe-line,#E6E1DA) !important;
  border-radius:0 !important; box-shadow:0 12px 24px -18px rgba(10,2,0,.18) !important;
  padding:40px clamp(20px,3.4vw,48px) 28px !important;
}
/* Horizon'un mega menüsünde ZATEN iki sütunlu ızgara var (sol bağlantı sütunu 200px,
   sağda içerik). İlk denemede kendi grid'imi yazıp onu ezmiştim ve panel ortalanmış,
   bomboş göründü. Kendi düzenini bırakıyoruz; yalnız iç genişliği ve hizayı ayarlıyoruz. */
.header .menu-list__submenu-inner{ max-width:1440px; margin-inline:auto !important; }
/* :not() zinciri şart — bu kural kart ve şerit çıpalarını da yakalıyordu ve
   içlerine 5px dikey dolgu koyup yüksekliği kaydırıyordu. Seçici bağlantı
   sütunundaki metin bağlantıları için yazılmıştı, görsel kutular için değil. */
.header .menu-list__submenu a:not(.qe-mega-kart__bag):not(.qe-mega-serit__oge):not(.qe-mega-promo__bag){
  font-size:16px !important; font-weight:400 !important; letter-spacing:0 !important;
  text-transform:none !important; padding:5px 0 !important; display:block;
}
/* Alt menüsü olan öge grup başlığı olur: 15/600, altındakiler 16/400 — Brightland deseni. */
/* Grup başlığı 15/600, alt bağlantılar 16/400 — Brightland'de ölçülen desen. */
.header .mega-menu__column > a, .header .mega-menu__column > div > a{ font-size:15px !important; font-weight:600 !important; }
.header .mega-menu__column ul a{ font-size:16px !important; font-weight:400 !important; }

/* ============================================================================
   MEGA MENÜ — 19 Eyl, brightland.co'da 1440px'te ÖLÇÜLEREK yazıldı

   Burak: "menü Brightland'deki gibi açılmıyor, aynı şekilde açılmasını istiyorum."
   Ekran görüntüsünden göz kararı ölçü almak daha önce bizi yaktığı için bu sefer
   sitenin kendi getBoundingClientRect değerleri alındı. Ham ölçüm (vw=1440):

     panel            0,86 · 1440x390 · beyaz · dolgu 40px 48px 28px
     sol bağlantı     x=48 · satır yüksekliği 38 · 15px/700 · dolgu 10px 10px 10px 0
     kart             302x281 · arası 10 · zemin #F2F2F2 · köşe 18
       görsel         302x224  (4:3) · object-fit cover
       alt şerit      57 yüksek · dolgu 18 · 16px/400
     kart alanı       x 466..1392 → sağ kenar boşluğu 48, yani sol dolguyla simetrik
     promo satırı     y=433, kartların 26px altında
     Explore paneli   dolgu 0 · sütun yok · görseller kenardan kenara
       hap buton      beyaz · 100px yuvarlak · 16px/400 · dolgu 14/18 · kenardan 18px

   ÜÇ PANELİN DE YÜKSEKLİĞİ 390 — panelden panele zıplamıyor. Bu yüzden burada da
   yükseklik kartın içeriğinden DOĞMUYOR, sabitleniyor: kart 281, panel içi 322.
   Kart genişliği bizde farklı (ızgara 6 sütun), yüksekliği sabitleyince kart eni
   ne olursa olsun panel aynı boyda kalıyor.

   BİLEREK AYRILDIĞIMIZ İKİ ÖLÇÜ — ikisi de Burak'ın kararı, ölçüm hatası değil:
     köşe     Brightland 18px, bizde 0 (--qe-kap-kose, 18 Eyl talimatı)
     hap      Brightland 100px hap + beyaz; bizde kendi buton dilimiz (2px köşe,
              15/500, min 48). Zemin zümrüt çünkü dört şerit fotoğrafı da AÇIK —
              "açık fotoğrafta koyu buton" kuralı qe-bant__buton'da yazılı.
   ============================================================================ */
/* Tek kaynak: --qe-mega-icerik panelin İÇ yüksekliği. Kart paneli bu değeri
   min-height olarak alıyor, şerit paneli de üstüne panel dolgusunu (40+28) ekleyip
   aynı toplam yüksekliğe çıkıyor. İki panel arasında zıplama böyle bitti; iki ayrı
   sabit yazarsan bir breakpoint'te mutlaka ayrışıyorlar (1100px'te ölçüp gördüm). */
/* 29 Eyl: kart 281 -> 330. Kare tarif/rehber fotoğraflarında şişe görselin %75'inden uzun;
   281'lik kartta (Keşfet'te görsel alanı 296x201) hiçbir kırpma penceresine sığmıyordu. 330'da
   görsel alanı 296x250, kare fotoğrafın %85'i görünüyor ve her şişe konumlanarak bütün kalıyor.
   İki panel birlikte uzadı (Mağaza da 330), menüde gezerken zıplama yok. */
:root{ --qe-mega-kart-y:330px; --qe-mega-icerik:373px; }

/* Horizon'un mega-menu__grid'ine grid-template-columns yazmayı bir kez denedim ve
   kolonlar 105/0/0/220/682'ye bozuldu — kendi sütun sayısını kendi hesaplıyor.
   Sadece kart alanının son sütunu doldurmasını söylüyoruz.
   grid-row:1 şart — yazmayınca kartlar bağlantıların ALTINA düşüyor ve panel iki kat uzuyor.

   19 Eyl · menu_style 'featured_collections'ten 'text'e çekilince BURASI BOZULDU ve
   ölçmeseydim göremezdim: tema `--menu-columns-desktop`u içerik türüne göre hesaplıyor,
   'text'te bağlantı listesine ALTI sütunun hepsini veriyor. Altı sütun isteyen liste,
   3-6'yı kartlara verdiğimiz satıra sığmayınca İKİNCİ satıra düşüyor — panel 569px oldu,
   bağlantılar kartların altına indi. Listeyi elle 1/3'e sabitliyoruz.
   Izgaranın kendi 40px yan dolgusu da kaldırıldı: Brightland'de bağlantılar panel
   dolgusunun hizasında başlıyor (x=48), bizde 40px içeriden başlıyordu. */
/* .menu-list__submenu-inner'ın 28px dikey dolgusu var; panel dolgusunu (40/28)
   zaten biz veriyoruz, ikisi üst üste binince panel 56px uzuyordu. */
.header .qe-panel .menu-list__submenu-inner{ padding-block:0 !important; }

/* ============================================================================
   PANEL ZEMİNİ İÇERİĞİN ALTINDAN BİTİYORDU — 19 Eyl, ölçülerek bulundu

   Belirti: promo satırı beyaz panelin dışında, hero fotoğrafının üstünde duruyordu.
   İlk tahminim "promo yanlış satırda" idi; yanlıştı. Ölçünce görüldü:

     panel kutusu   y 33..426   (yükseklik 393)
     içerik         y 134..459

   Yani içerik panelin 33px dışına taşıyor. Sebep temanın kendi kuralı:
     .menu-list__submenu-inner{ transform:translateY(calc(var(--full-open-header-height)
                                                          - var(--submenu-height))) }
   Ölçülen değerler: full-open 454 · submenu 393 · fark = 61 = tam --header-height.
   Tema paneli HEADER'IN ÜST KENARINDAN başlatıyor (beyaz zemin yapışkan header'ın
   arkasına da giriyor) ve içeriği header boyu kadar aşağı itiyor. Panelin yüksekliği
   ise yalnız içerikten doğuyor, itilen 61px'i saymıyor. Sonuç: her panelin alt 61px'i
   zeminsiz. Kartlar panelin dibinde olmadığı için bugüne kadar göze çarpmamıştı;
   promo satırı eklenince ortaya çıktı.

   Çözüm öteleme miktarını alt dolguya eklemek. Geri besleme yok: öteleme
   full-open - submenu = (header + submenu) - submenu = header, yani panel uzayınca
   öteleme değişmiyor. Bu ilişki ölçülerek doğrulandı, varsayılmadı. */
.header .qe-panel{ padding-block-end:calc(28px + var(--header-height,60px)) !important; }
.header .qe-panel--kart .mega-menu__grid{ padding-inline:0 !important; row-gap:25px; min-height:var(--qe-mega-icerik); }
.header .qe-panel--kart .mega-menu__grid > .mega-menu__list{ grid-column:1 / 3 !important; grid-row:1; align-self:start; }
.header .mega-menu__grid > .qe-mega-kartlar{ grid-column:3 / -1; grid-row:1; align-self:start; }
/* 1 / -1: iki sütuna sıkıştırınca 1100px'te iki satıra kırılıyor ve ızgara 283 yerine
   307 oluyordu — şerit paneliyle 24px fark. Metin zaten sola dayalı, geniş span
   görünümü değiştirmiyor, yüksekliği öngörülebilir yapıyor. */
.header .mega-menu__grid > .qe-mega-promo{ grid-column:1 / -1; grid-row:2; align-self:start; }
.header .mega-menu__content:empty{ display:none; }

/* min-height:322 tesadüf değil: Brightland'de üç panelin de yüksekliği 390 ve dolgu
   40+28, yani içerik alanı tam 322. Panel yüksekliği içeriğe bırakılırsa Mağaza 395,
   Hediye 349 çıkıyor ve menüde gezerken panel zıplıyor. Sabitlenince üçü de 390. */

/* ---- KART VARYANTI (Mağaza, Hediye) -------------------------------------- */
/* Grup yapısı: her alt bağlantının kendi ürün grubu var, biri görünür.
   Gruplar aynı ızgara hücresini paylaşmıyor — gizli olanlar display:none, yani
   yer kaplamıyorlar ve panel yüksekliği sabit kalıyor (min-height zaten var). */
.qe-mega-kartlar{ display:block; }
/* minmax(0,1fr), düz 1fr değil (29 Eyl): Keşfet kartlarında iki satıra kesilen uzun yazı başlığı
   (-webkit-line-clamp) sütunun en küçük genişliğini kendi tam boyuna çekiyordu, ilk kart 335,
   diğerleri 267 çıktı. 0 tabanıyla üç sütun her zaman eşit. */
.qe-mega-grup{ display:none; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.qe-mega-grup[data-acik]{ display:grid; }
.qe-mega-kart__fiyat{ font-family:var(--font-body--family); font-size:14px;
  color:var(--qe-mute,#6E6560); font-variant-numeric:tabular-nums; }
.qe-mega-kart{ position:relative; height:var(--qe-mega-kart-y); }
.qe-mega-kart__bag{ text-decoration:none; color:var(--qe-ink,#2B2222);
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px); overflow:hidden;
  display:flex !important; flex-direction:column; height:100%; padding:0 !important; }
.qe-mega-kart__gorsel{ display:block; flex:1 1 auto; min-height:0; overflow:hidden; }
.qe-mega-kart__gorsel img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .35s ease; }
.qe-mega-kart:hover .qe-mega-kart__gorsel img{ transform:scale(1.03); }
.qe-mega-kart__alt{ flex:0 0 auto; display:flex; align-items:center; justify-content:space-between;
  gap:12px; padding:18px; }
.qe-mega-kart__ad{ font-family:var(--font-body--family); font-size:16px; font-weight:400; line-height:1.25; }
.qe-mega-kart__ok svg{ width:24px; height:24px; display:block; fill:none; stroke:currentColor;
  stroke-width:1.2; stroke-linecap:round; stroke-linejoin:round; }

/* ---- KARTTA SEPETE EKLE (19 Eyl) ----------------------------------------- */
/* Burak: "çok küçük ikon şeklinde, kalabalık durmasın, güzel konumlandır."
   Konum keyfi değil, VAR OLAN bir kenara hizalandı: alt şeridin dolgusu 18px, yani
   butonun sağ kenarı fiyatın sağ kenarıyla aynı dikey çizgide. Yeni bir iç boşluk
   ölçüsü uydurmak kartta üçüncü bir hiza çizgisi yaratıyordu.
   Dikeyde GÖRSELİN ÜSTÜNDE, alt şeridin üstünde değil. Önce şeridin 12px üstüne
   koydum, ölçtüm, 13px çıktı ve doğru göründü — ama şerit sabit değil: buton
   karttan konumlanıyor, şeridin yüksekliği ise ürün adına bağlı. Adı iki satıra
   düşen bir ürün (ileride uzun adlı bir boy) şeridi büyütür ve buton adın üstüne
   biner. Üstten konumlanınca böyle bir bağ kalmıyor.
   Şeridin İÇİNE de koymadım: ad + fiyat + buton üç öge 290px'e sığmıyor.
   Köşe 2px: Burak 17 Eyl'de tüm etkileşim ögelerinde keskin köşe seçti (--qe-dugme-kose).
   Yalnız hover'da değil :focus-within'de de görünür — klavyeyle gezen biri
   göremediği bir butona sekemez. */
.qe-mega-ekle{ position:absolute; right:18px; top:12px;
  width:32px; height:32px; padding:0; border:0; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:var(--qe-dugme-kose,2px);
  background:var(--qe-zumrut,#16301F); color:var(--qe-krem,#F5F3EC);
  opacity:0; transform:translateY(4px); pointer-events:none;
  transition:opacity .18s ease, transform .18s ease, background-color .18s ease; }
.qe-mega-kart:hover .qe-mega-ekle,
.qe-mega-kart:focus-within .qe-mega-ekle,
.qe-mega-ekle:focus-visible{ opacity:1; transform:none; pointer-events:auto; }
.qe-mega-ekle:hover{ background:#0E2115; }
.qe-mega-ekle svg{ width:16px; height:16px; fill:none; stroke:currentColor;
  stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
/* Tek buton, iki ikon: eklendikten sonra tik 1.8 sn görünür (qe-sepete-ekle.js
   is-eklendi sınıfını koyup kaldırıyor). İki ayrı buton kullanmak yerine üst üste
   bindirildi, yoksa tik görününce kart içinde genişlik zıplıyor.

   ÖZGÜLLÜK NOTU (TUZAK 23'ün aynısı, bu turda tekrar ısırdı): gizleme kuralı önce
   `.qe-mega-ekle__tamam{display:none}` yazılmıştı (0,1,0) ve üstteki
   `.qe-mega-ekle svg{...display:block}` (0,1,1) onu yeniyordu — sıra değil özgüllük.
   Sonuç: buton hem artı hem tik gösteriyordu, 32px kutuya iki 16px ikon sığmıştı,
   ölçüde 32x32 doğru göründüğü için ekran görüntüsüne bakmasam kaçıyordu.
   Şimdi display kararı svg kuralından çıkarıldı, üç kural da aynı katmanda. */
.qe-mega-ekle .qe-mega-ekle__arti{ display:block; }
.qe-mega-ekle .qe-mega-ekle__tamam{ display:none; }
.qe-mega-ekle.is-eklendi .qe-mega-ekle__arti{ display:none; }
.qe-mega-ekle.is-eklendi .qe-mega-ekle__tamam{ display:block; }
.qe-mega-ekle.is-eklendi{ opacity:1; transform:none; pointer-events:auto; background:#0E2115; }
.qe-mega-ekle[aria-busy='true']{ opacity:.55; }

/* Promo satırı — Brightland'de "Looking for the perfect gift? Visit The Gift Shop",
   sol sütunun altında, kartların 26px altına hizalı. */
/* line-height 1.15 keyfi değil: satır 22px olunca ızgara 329'a çıkıyor ve kart
   paneli 397, şerit paneli 391 oluyordu — menüde gezerken 6px zıplama. 1.15'te satır
   16, ızgara 281+25+16=322, iki panel de 390. Brightland'de de üçü eşit. */
.qe-mega-promo{ display:flex; flex-wrap:wrap; align-items:baseline; gap:8px;
  font-family:var(--font-body--family); font-size:14px; line-height:1.15; }
.qe-mega-promo span{ color:var(--qe-mute,#6E6560); }
/* Bağlantıya ayrı sınıf verildi çünkü özgüllükle çözmeye kalkınca kaybediyordu:
   genel kural iki `:not()` taşıdığı için (0,4,1), benim kuralım (0,3,1)'di ve
   `!important` ikisinde de olduğundan yüksek özgüllük kazanıyordu. `:not()` argümanının
   özgüllüğü dışarı sızıyor — bu dosyada daha önce h2 ölçeğinde de aynı tuzağa düşmüştük.
   Sınıfla dışlamak özgüllük saymaktan daha sağlam. */
.qe-mega-promo__bag{
  font-size:14px !important; font-weight:600 !important; padding:0 !important;
  display:inline !important; color:var(--qe-ink,#2B2222);
  text-decoration:underline; text-underline-offset:3px; }

/* ---- EDİTORYAL VARYANT (Keşfet, 29 Eyl) ----------------------------------- */
/* Panel qe-panel--kart sınıfını da taşıyor: ızgara, kart kutusu, yükseklik, promo satırı ve
   hover'da grup değiştirme Mağaza'yla birebir aynı kurallardan geliyor. Eski "şerit" (altı
   fotoğraf kenardan kenara, sütunsuz, zümrüt hap) kaldırıldı; Burak: "görsellerin yan yana
   olması iyi değil, çok karışık duruyor, belli bir şekle şemale sokalım."
   Yukarıdaki a:not(...) zincirinde .qe-mega-serit__oge DURUYOR: çıkarılırsa kuralın
   özgüllüğü düşer ve promo bağlantısının özgüllük hesabı (aşağıdaki not) değişir.

   Farklı olan tek şey alt şerit. Kartlarda yazı başlıkları var ("Gerçek natürel sızma
   zeytinyağı nasıl anlaşılır?" iki satır), şerit içerikten büyürse aynı sıradaki
   görseller farklı boylarda kalıyor. Şerit SABİT 80px: iki satır başlık (2 x 21,25) ya da
   bir satır başlık + not, 18px dolgu. Başlık iki satırda, not varsa bir satırda kesiliyor. */
.qe-panel--editoryal .qe-mega-kart__alt{ height:80px; box-sizing:border-box; }
/* Mağaza kartı da aynı şerit (29 Eyl): Grande Noir'ların teklif modu kapanınca "Grande Noir Premium
   250 ml" + fiyat tek satıra sığmadı, fiyat kartın sağından taştı ("₺400,0" kesik, ölçüldü).
   Ad iki satıra iniyor, fiyat hiç kırılmıyor ve küçülmüyor; şerit iki panelde de 80px. */
.qe-panel--kart .qe-mega-kart__alt{ height:80px; box-sizing:border-box; }
.qe-panel--kart .qe-mega-kart__ad{ min-width:0; white-space:normal; display:-webkit-box; -webkit-box-orient:vertical;
  -webkit-line-clamp:2; overflow:hidden; }
.qe-mega-kart__fiyat{ flex:none; white-space:nowrap; }
.qe-hikaye__bolum[id], .qe-oduller [id]{ scroll-margin-top:calc(var(--header-height,64px) + 32px); }
.qe-mega-kart__metin{ display:flex; flex-direction:column; gap:2px; min-width:0; }
/* white-space:normal şart: tema .menu-list__list-item'a nowrap veriyor ve panel onun içinde;
   miras kalınca uzun başlık iki satıra inmek yerine kartın kenarında kesiliyordu (ölçüldü). */
.qe-panel--editoryal .qe-mega-kart__ad{ display:-webkit-box; -webkit-box-orient:vertical;
  -webkit-line-clamp:2; overflow:hidden; white-space:normal; }
.qe-panel--editoryal .qe-mega-kart__ad--tek{ -webkit-line-clamp:1; }
.qe-mega-kart__not{ font-family:var(--font-body--family); font-size:14px; line-height:1.3;
  color:var(--qe-mute,#6E6560); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.qe-mega-kart__ok{ flex:none; }
/* Keşfet ürün kartı: şeffaf şişe krem zeminde, bütün ve alt hizalı; boy sıranın en uzununa göre
   (--qe-olcek, Liquid). Bulanık zemin denendi ve kaldırıldı (Burak: "buğulu görüntüyü sevmiyorum"). */
.qe-mega-kart__gorsel--seffaf{ display:flex !important; align-items:flex-end; justify-content:center;
  padding:18px 18px 10px; box-sizing:border-box; }
.qe-mega-kart__gorsel--seffaf img{ width:100% !important; height:calc(var(--qe-olcek,1) * 100%) !important;
  object-fit:contain !important; object-position:center bottom; }
.qe-mega-kart:hover .qe-mega-kart__gorsel--seffaf img{ transform:translateY(-3px); }

/* 1199 altında bir ara kartları iki sütuna düşürmüştüm; 1100px'te ölçünce üçüncü kart
   tek başına ikinci satıra iniyor, panel 625px oluyordu — Keşfet paneli ise 425'te
   kalıyor, menüde gezerken 200px zıplama. Üç sütun korunuyor, kart daralıyor. */
@media (max-width:1199px){
  :root{ --qe-mega-kart-y:289px; --qe-mega-icerik:332px; }
}
@media (max-width:989px){ .qe-mega-kartlar, .qe-mega-promo{ display:none; } }

/* ============================================================================
   BAŞLIK ÖLÇEĞİ — 19 Eyl
   Sorun iki yerden geldi:
   1. Burak: bütün bölüm başlıkları 48 px, hiyerarşi yok. Brightland ölçümü (1512):
      içerik bölümü 32 · alt başlık 26 · yardımcı bölüm 18 px sans
      ("Others you might like." bilerek küçük — o bir raf, içerik değil).
   2. c1: set sayfasında h1 38 px iken h2 **48 px** çıkıyor, yani h2 h1'den büyük.
      Tema h2'yi 48'e sabitliyor ve bölüm kurallarını eziyor; c1 kendi bölümünde
      `!important` + 0,2,1 özgüllük vermek zorunda kalmış. Burada kaynağında çözülüyor,
      o yerel çözümler silinebilir.

   Ölçek (Gambarino yalnız 400, kalın YOK — tek ağırlıkta çizilmiş, zorlanınca sahte kalın):
     h1  ana başlık        36 / mobil 28
     h2  bölüm başlığı     32 / mobil 24
     h3  alt başlık        20 / mobil 18
     yardımcı bölüm h2     20 / mobil 18   (benzer ürünler, çapraz satış rafları)
   ============================================================================ */
:root{ --qe-h1:36px; --qe-h2:32px; --qe-h3:20px; --qe-h-yardimci:20px; }
@media (max-width:749px){ :root{ --qe-h1:28px; --qe-h2:24px; --qe-h3:18px; --qe-h-yardimci:18px; } }

.shopify-section h1, main h1{ font-size:var(--qe-h1) !important; font-weight:400 !important; }
/* ⚠️ ÖZGÜLLÜK NOTU — iki tur burada kaybedildi, ikisini de yaz:
   1. `:not()` KENDİ ARGÜMANININ özgüllüğünü dışarı taşır: içine bir sınıf koyunca kural
      0,1,1'den 0,2,1'e çıkar. Bu yüzden aşağıdaki genel kural, yardımcı raf kuralını
      (0,1,1) eziyordu ve "Keşfetmeye devam edin" 20 yerine 32 px kalıyordu.
   2. Ama `:not()`u SİLMEK daha kötüsünü yaptı: kural 0,1,1'e düşünce bu sefer TEMANIN
      kendi 48 px kuralı kazandı ve bütün h2'ler 48'e fırladı. Yani `:not()` tesadüfen
      temayı yenmemizi sağlayan şeydi.
   Doğru çözüm ikisini birden yükseltmek: genel kural 0,2,1'de kalır (`:not()` ile),
   yardımcı raf kuralı da `.shopify-section` öneki ile 0,2,1'e çıkar ve dosyada SONRA
   geldiği için kazanır. Eşit ağırlıkta sıra belirler.
   Eski not (yanlış çıkan kısım): */
/* ⚠️ Burada ÖNCE `h2:not(.qe-popup__baslik)` yazılıydı:
   `:not()` KENDİ ARGÜMANININ özgüllüğünü dışarı taşır. İçine bir sınıf koyunca kural
   0,1,1'den **0,2,1**'e çıkıyor ve aşağıdaki yardımcı raf kuralını (0,1,1) eziyordu —
   "Keşfetmeye devam edin" 20 yerine 32 px kalıyordu. Attribute seçici ([id$=...]) sınıfla
   aynı ağırlıkta, id ağırlığında değil, oradan da kazanmıyordu.
   Çözüm: genel kural `:not()`suz ve 0,1,1'de bırakıldı; pop-up başlığı kendi kuralıyla
   eziliyor (aşağıda). Böylece yardımcı raf kuralı eşit ağırlıkta ve dosyada sonra geldiği
   için kazanıyor. `:not()` içine sınıf yazarken her zaman bunu hatırla. */
.shopify-section h2:not(.qe-popup__baslik), main h2{ font-size:var(--qe-h2) !important; font-weight:400 !important; }
.shopify-section h3, main h3{ font-size:var(--qe-h3) !important; font-weight:400 !important; }
/* Yardımcı raflar: içerik bölümüyle aynı sesle bağırmasın (Brightland'in 18 px sans'ı). */
.shopify-section[id$="__qe_benzer"] h2, .shopify-section[id$="__qe_kardes"] h2,
.shopify-section[id$="__qe_urunler"] h2, .shopify-section[id*="product_recommendations"] h2{
  font-size:var(--qe-h-yardimci) !important; letter-spacing:.06em; text-transform:none; }

/* ============================================================================
   TARİF YAZILARI — 19 Eyl

   Burak: "keşfet için tüm bu yaptığın sayfaların içlerini doldurman lazım,
   rakiplerin nasıl kullandığına bakarak."

   brightland.co/blogs/recipes'te bir tarif şöyle kuruluyor: başlık · künye
   (süre + kaç kişilik) · bir cümle giriş · MALZEMELER (miktarlı, gerekirse
   gruplu) · HAZIRLANIŞI (numaralı adım). Bizde tam olarak son iki kısım yoktu;
   tarifler "enginar kısık ateşte pişer" gibi anlatı hâlindeydi. O tarif değil,
   tarifin özeti.

   Metin dolduruldu, ama ölçünce görsel taraf da eksikti:
     h3 (tarif adı) ile h4 (Malzemeler) ikisi de 18px — hiyerarşi yok
     künye tek satıra yapışık çıkıyordu: "4 kişilik50 dakikaPişirmede harman"
     tema ul'lere list-style:none veriyor, malzemeler duvar gibi akıyordu
   ============================================================================ */
/* 19 Eyl: her tarif kendi yazısına çıkınca tarif adı h1'e taşındı ve buradaki h3
   kuralı ölü kaldı. Silmek yerine mevsim kılavuzlarındaki ara başlığa (h2) hedeflendi;
   ölü kural bırakmıyoruz — bugün bunun bedelini iki kez ödedik. */
.blog-post-content h2{ font-size:22px !important; margin-top:48px !important; }
.blog-post-content h4{
  font-size:13px !important; letter-spacing:.12em; text-transform:uppercase;
  font-family:var(--font-body--family) !important; font-weight:500 !important;
  color:var(--qe-mute,#6E6560); margin-top:28px !important; margin-bottom:10px !important;
}
.qe-tarif-kunye{
  display:flex !important; flex-wrap:wrap; align-items:center; gap:10px;
  font-size:13px !important; color:var(--qe-mute,#6E6560);
  margin-top:6px !important; margin-bottom:14px !important;
}
/* Ayraç işaretlemede değil burada: metne yazılan "·" kopyalayınca da geliyor
   ve ekran okuyucu tek tek okuyor. */
.qe-tarif-kunye span + span::before{ content:'·'; margin-right:10px; color:var(--qe-line,#E6E1DA); }
.qe-tarif-altbaslik{ font-size:14px !important; font-weight:500; margin:14px 0 6px !important; }
.blog-post-content .qe-tarif-kunye + p{ margin-bottom:18px; }
/* Tema ul'lerde list-style:none kullanıyor; malzeme listesinde madde işareti
   şart, yoksa satırlar birbirine karışıyor. */
.blog-post-content ul{ list-style:disc !important; padding-left:20px !important; }
.blog-post-content ul li{ margin-bottom:5px; }
.blog-post-content ol{ padding-left:20px !important; }
.blog-post-content ol li{ margin-bottom:9px; padding-left:4px; }
.qe-tarif-ipucu{
  margin-top:14px !important; padding:14px 16px;
  background:var(--qe-krem,#F5F3EC); border-left:2px solid var(--qe-zumrut,#16301F);
  font-size:15px !important; line-height:1.6;
}
.qe-tarif-ipucu strong{ font-weight:500; }
@media (max-width:749px){
  .blog-post-content h2{ font-size:20px !important; margin-top:40px !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   TARİF İNDEKSİ — brightland.co/blogs/recipes'ten ölçüldü (1440px, 19 Eyl):
     kap 1344 · ızgara 4 sütun x 315px · boşluk 28px · görsel 1:1 · köşe 0
     öne çıkan görsel 663x440 (3:2), metin sağda
   ══════════════════════════════════════════════════════════════════════════ */
.qe-tarifler{ padding:40px clamp(16px,3.4vw,48px) 72px; max-width:1440px; margin-inline:auto; }
.qe-tarifler__bas{ max-width:640px; margin:0 0 40px; }
.qe-tarifler__bas h1{ margin:0; line-height:1.1; }
.qe-tarifler__alt{ margin:10px 0 0; font-size:16px; line-height:1.5; color:var(--qe-mute,#6E6560); }
.qe-tarifler__bolum{ margin:0 0 20px; }

/* Mevsim kılavuzları: iki sütun, görsel 3:2 */
.qe-tarifler__kilavuz{ list-style:none; margin:0 0 56px; padding:0;
  display:grid; grid-template-columns:repeat(2,1fr); gap:28px; }
.qe-kilavuz{ display:grid; grid-template-columns:minmax(0,3fr) minmax(0,2fr); gap:20px;
  align-items:center; text-decoration:none; color:var(--qe-ink,#2B2222); }
.qe-kilavuz__gorsel{ display:block; aspect-ratio:3/2; overflow:hidden;
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px); }
.qe-kilavuz__gorsel img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .35s ease; }
.qe-kilavuz:hover .qe-kilavuz__gorsel img{ transform:scale(1.03); }
.qe-kilavuz__metin{ display:flex; flex-direction:column; gap:7px; }
.qe-kilavuz__ad{ font-family:var(--font-heading--family); font-size:20px; line-height:1.25; }
.qe-kilavuz__ozet{ font-size:14px; line-height:1.5; color:var(--qe-mute,#6E6560); }
.qe-kilavuz__bag{ display:inline-flex; align-items:center; gap:7px; font-size:14px; font-weight:500;
  text-decoration:underline; text-underline-offset:3px; }
.qe-kilavuz__bag svg{ width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:1.4;
  stroke-linecap:round; stroke-linejoin:round; }

/* Tarif ızgarası: 4 sütun, KARE görsel */
.qe-tarifler__izgara{ list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(4,1fr); gap:34px 28px; }
.qe-tarif-kart{ display:flex; flex-direction:column; gap:12px; text-decoration:none;
  color:var(--qe-ink,#2B2222); }
.qe-tarif-kart__gorsel{ display:block; aspect-ratio:1; overflow:hidden;
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px); }
.qe-tarif-kart__gorsel img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .35s ease; }
.qe-tarif-kart:hover .qe-tarif-kart__gorsel img{ transform:scale(1.03); }
/* Fotoğrafı olmayan tarif: sahte görsel yerine sessiz krem alan + adı. Geçici. */
.qe-tarif-kart__gorsel.is-bos{ border:1px solid var(--qe-line,#E6E1DA); }
.qe-tarif-kart__ad{ font-family:var(--font-heading--family); font-size:17px; line-height:1.3; }
.qe-tarif-kart__mevsim{ font-size:11.5px; font-weight:500; letter-spacing:.12em;
  text-transform:uppercase; color:var(--qe-mute,#6E6560); }

@media (max-width:1199px){
  .qe-tarifler__izgara{ grid-template-columns:repeat(3,1fr); }
  .qe-tarifler__kilavuz{ grid-template-columns:1fr; }
}
@media (max-width:749px){
  .qe-tarifler__izgara{ grid-template-columns:repeat(2,1fr); gap:26px 16px; }
  .qe-kilavuz{ grid-template-columns:1fr; gap:12px; }
  .qe-tarif-kart__ad{ font-size:15px; }
}

/* ============================================================================
   TEK TARİF SAYFASI — 19 Eyl
   brightland.co/blogs/recipes/the-greek-grid, 1440px'te ölçüldü:

     banner        dolgu 36/48/0 · boşluk 64 · align-items:center
       görsel      580x600 (oran 0,97) · SAĞA dayalı, x=108
       içerik      580 geniş, x=752
       rozet       12px/450 · büyük harf · aralık 0,48px · hap yüksekliği 40
       h1          48px/700 · aralık -0,48px
     gövde         iki sütun, ortalanmış 1018
       malzeme     358 · hazırlanış 556 · aradaki 104
       başlık      28px/450 · liste 14px/22px · dolgu-sol 40
     sonraki       iki KARE kart 526x526 · aradaki 48

   Tipografi bizim ölçeğimize oturtuldu: h1 48 bizde çok büyük kalıyor (site geneli
   --qe-h1 36), bölüm başlıkları da --qe-h2 ile aynı hizaya çekildi. Yerleşim
   Brightland'in, ölçek bizim — ikisini karıştırmak sayfayı yabancı gösteriyordu.
   ============================================================================ */
.qe-tarifsayfa{ --qe-tarifsayfa-kenar:clamp(20px,3.4vw,48px); }

.qe-tarifsayfa__bant{
  display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center;
  padding:36px var(--qe-tarifsayfa-kenar) 0;
}
/* Görsel sağa dayalı: Brightland'de sütun 640 ama görsel 580 ve x=108, yani
   hücrenin SAĞ kenarına yapışık. Ortalanınca boşluk simetrik olmuyordu. */
.qe-tarifsayfa__gorsel{
  display:block; margin-left:auto; width:100%; max-width:580px;
  aspect-ratio:580/600; overflow:hidden;
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px);
}
.qe-tarifsayfa__gorsel img{ width:100%; height:100%; object-fit:cover; display:block; }
/* Fotoğrafsız tarif: sahte görsel değil, sessiz krem alan. İndeksteki kartla aynı
   dil (qe-tarif-kart__gorsel.is-bos). Görsel hattı düzelince kendiliğinden dolar. */
.qe-tarifsayfa__gorsel.is-bos{ border:1px solid var(--qe-line,#E6E1DA); }

.qe-tarifsayfa__yazi{ max-width:580px; display:flex; flex-direction:column; align-items:flex-start; gap:18px; }
.qe-tarifsayfa__rozet{
  display:inline-flex; align-items:center; min-height:40px; padding:0 18px;
  border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-dugme-kose,2px);
  font-family:var(--font-body--family); font-size:12px; font-weight:500;
  letter-spacing:.04em; text-transform:uppercase; text-decoration:none;
  color:var(--qe-ink,#2B2222);
}
.qe-tarifsayfa__bant h1{ font-size:var(--qe-h1,36px) !important; letter-spacing:-.01em; margin:0 !important; }
.qe-tarifsayfa__kunye{
  display:flex; flex-wrap:wrap; gap:10px; margin:0 !important;
  font-family:var(--font-body--family); font-size:14px; line-height:1.2;
  color:var(--qe-mute,#6E6560);
}
.qe-tarifsayfa__kunye span + span::before{ content:'·'; margin-right:10px; color:var(--qe-line,#E6E1DA); }

.qe-tarifsayfa__giris,
.qe-tarifsayfa__sutunlar,
.qe-tarifsayfa__geri,
.qe-tarifsayfa__urun,
.qe-tarifsayfa__sonraki,
.qe-tarifsayfa__yorum,
.qe-tarifsayfa__duz{ width:min(1018px, calc(100% - var(--qe-tarifsayfa-kenar) * 2)); margin-inline:auto; }

/* ============================================================================
   MAKALE (blog yazısı) — 21 Eyl · Burak: "tüm sayfayı kaplayan görsel olmasın,
   tasarımı güzelleştir."
   Ölçüm: kapak görseli 1360x765 idi, yani 900px'lik ekranın neredeyse tamamı.
   Şablonda genişlik %66'ya indirildi (898x505) ama blok SOLA yaslı kalıyordu;
   başlık ve metin ortalı olduğu için sayfa dengesiz duruyordu. Görsel ortalandı
   ve metin ölçüsüyle aynı eksene alındı. */
/* Ortalanacak olan RESMİN KENDİSİ değil, onu saran kutu: resim kutusunu %100
   dolduruyor, genişliği veren kutu (898px) ise sola yaslı duruyordu.
   Seçici `.image-block__image` üzerinden kuruldu; ölçtüm, bu sınıf sitenin YALNIZ
   makale sayfalarında var (ana sayfa, ürün, koleksiyon, sayfalar: 0 eşleşme),
   yani genel bir kural yazmış olmuyoruz. */
:has(> .image-block__image){ margin-inline:auto !important; }
.image-block__image{ display:block; }

.qe-tarifsayfa__giris{ margin-top:var(--qe-ritim,48px); font-size:17px; line-height:1.65; max-width:70ch; }

/* 358 / 556 oranı Brightland ölçümü; aradaki 104. fr ile yazıldı ki dar ekranda
   orantı korunsun, sonra tek sütuna düşsün. */
.qe-tarifsayfa__sutunlar{
  margin-top:var(--qe-ritim,48px);
  display:grid; grid-template-columns:358fr 556fr; gap:104px; align-items:start;
}
.qe-tarifsayfa__sutunlar h2{ font-size:var(--qe-h2,32px) !important; font-weight:400 !important; margin:0 0 18px !important; }
.qe-tarifsayfa__sutunlar ul{ list-style:disc !important; padding-left:20px !important; margin:0; }
.qe-tarifsayfa__sutunlar ol{ padding-left:20px !important; margin:0; }
.qe-tarifsayfa__sutunlar li{ font-size:15px; line-height:1.6; margin-bottom:7px; }
.qe-tarifsayfa__sutunlar ol li{ margin-bottom:11px; padding-left:4px; }
/* 26 Eki: adımlar #adim-N çapasıyla açılabiliyor (Google tarif sonucu); yapışkan başlığın altında kalmasın. */
.qe-tarifsayfa__sutunlar ol li[id]{ scroll-margin-top:120px; }
.qe-tarifsayfa__sutunlar .qe-tarif-altbaslik{ font-size:14px !important; font-weight:500; margin:16px 0 6px !important; }
.qe-tarifsayfa__sutunlar .qe-tarif-altbaslik:first-child{ margin-top:0 !important; }
.qe-tarifsayfa__sutunlar .qe-tarif-ipucu{
  margin-top:20px !important; padding:14px 16px;
  background:var(--qe-krem,#F5F3EC); border-left:2px solid var(--qe-zumrut,#16301F);
  font-size:15px !important; line-height:1.6;
}
.qe-tarifsayfa__geri{ margin-top:var(--qe-ritim,48px); font-size:14px; color:var(--qe-mute,#6E6560); }
/* Cümle içi bağlantı. WCAG 2.5.8'in "inline" istisnası bunu 44px şartından muaf
   tutuyor (metin akışı içindeki hedefler hariç), ama bedava iyileştirme var:
   satır-içi ögede padding-block dokunma alanını büyütür, satır kutusunun
   yüksekliğini DEĞİŞTİRMEZ. Yani tipografiyi bozmadan hedef 21px'ten 45px'e çıkıyor.
   inline-block YAPMA: o satır yüksekliğini de büyütür ve paragrafı kaydırır. */
.qe-tarifsayfa__geri a{ padding-block:12px; }

.qe-tarifsayfa__urun{ margin-top:var(--qe-ritim-buyuk,64px); }
.qe-tarifsayfa__urun h2, .qe-tarifsayfa__sonraki h2{
  font-size:var(--qe-h-yardimci,20px) !important; font-weight:400 !important; margin:0 0 20px !important;
}
.qe-tarifsayfa__urunkart{
  display:grid; grid-template-columns:260px 1fr; gap:28px; align-items:center;
  text-decoration:none; color:var(--qe-ink,#2B2222);
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px); padding:20px;
}
.qe-tarifsayfa__urungorsel{ display:block; aspect-ratio:391/469; overflow:hidden; background:#fff; }
.qe-tarifsayfa__urungorsel img{ width:100%; height:100%; object-fit:cover; display:block; }
/* Şeffaf şişe: zemin yok, bütün görünür (contain), kutunun ortasında; 29 Eyl. */
.qe-tarifsayfa__urungorsel.is-seffaf{ background:transparent; display:flex; align-items:center; justify-content:center;
  padding:6% 8%; box-sizing:border-box; }
.qe-tarifsayfa__urungorsel.is-seffaf img{ object-fit:contain; }
.qe-tarifsayfa__urunbilgi{ display:flex; flex-direction:column; gap:8px; }
.qe-tarifsayfa__urunad{ font-family:var(--font-heading--family); font-size:22px; line-height:1.2; }
.qe-tarifsayfa__urunnot{ font-size:15px; line-height:1.6; color:var(--qe-mute,#6E6560); max-width:52ch; }
.qe-tarifsayfa__urunfiyat{ font-size:15px; font-weight:500; }
.qe-tarifsayfa__urunkart a{ color:inherit; text-decoration:none; }
.qe-tarifsayfa__urunbilgi .qe-satin-al{ align-self:flex-start; min-width:220px; margin-top:10px; }

/* Tarife yorum bölümü (21 Eyl). Sayfanın kendi ölçüsünde: aynı kolon genişliği,
   aynı gövde fontu. Form alanları sitenin giriş alanı diliyle (1px çizgi, 2px köşe,
   48px yükseklik); buton sayfadaki asıl eylemle aynı siyah. */
/* Genişlik SAYFANIN KENDİ KOLON KURALINDAN geliyor (yukarıdaki min(1018px,...)
   listesine eklendi); burada yalnız üst boşluk var. Kendi max-width'imi yazsaydım
   sayfada ikinci bir kolon ölçüsü olurdu ve "Sonraki tarifler" ile hizasızlık çıkardı
   (ölçüldü: form 0-672, sonraki 211-1229). */
.qe-tarifsayfa__yorum{ margin-top:var(--qe-ritim-buyuk,64px); }
.qe-tarifsayfa__yorumform, .qe-tarifsayfa__yorumlar{ max-width:70ch; }
.qe-tarifsayfa__yorum h2{ font-family:var(--font-heading--family); font-weight:400;
  font-size:26px; line-height:1.2; margin:0 0 6px; }
.qe-tarifsayfa__yorumlar{ list-style:none; margin:18px 0 26px; padding:0; }
.qe-tarifsayfa__yorumkart{ padding:16px 0; border-bottom:1px solid var(--qe-line,#E6E1DA); }
.qe-tarifsayfa__yorumad{ margin:0; font-family:var(--font-body--family); font-size:15px; font-weight:500; }
.qe-tarifsayfa__yorumtarih{ margin:2px 0 8px; font-size:13px; color:var(--qe-mute,#6E6560); }
.qe-tarifsayfa__yorummetin{ font-size:15.5px; line-height:1.6; }
.qe-tarifsayfa__yorumform{ display:flex; flex-direction:column; gap:14px; margin-top:16px; }
.qe-tarifsayfa__yorumsatir{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.qe-tarifsayfa__yorumform label{ display:flex; flex-direction:column; gap:6px;
  font-family:var(--font-body--family); font-size:14px; color:var(--qe-mute,#6E6560); }
.qe-tarifsayfa__yorumform input, .qe-tarifsayfa__yorumform textarea{
  width:100%; box-sizing:border-box; padding:13px 14px;
  border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-dugme-kose,2px);
  background:#fff; font-family:var(--font-body--family); font-size:16px; color:var(--qe-ink,#2B2222); }
.qe-tarifsayfa__yorumform input{ min-height:48px; }
.qe-tarifsayfa__yorumform input:focus, .qe-tarifsayfa__yorumform textarea:focus{
  outline:none; border-color:var(--qe-ink,#2B2222); }
.qe-tarifsayfa__yorumnot{ margin:0; font-size:13px; color:var(--qe-mute,#6E6560); }
.qe-tarifsayfa__yorumuyari{ margin:0; padding:12px 14px; background:var(--qe-krem,#F5F3EC);
  border-left:2px solid var(--qe-gold,#9A7A33); font-size:15px; }
.qe-tarifsayfa__yorumform button{ align-self:flex-start; min-height:48px; padding:0 26px;
  border:0; cursor:pointer; background:#1B1B1B; color:#fff;
  border-radius:var(--qe-dugme-kose,2px);
  font-family:var(--font-body--family); font-size:15px; font-weight:500; }
.qe-tarifsayfa__yorumform button:hover{ background:#000; }
@media (max-width:749px){ .qe-tarifsayfa__yorumsatir{ grid-template-columns:1fr; } }

.qe-tarifsayfa__sonraki{ margin-top:var(--qe-ritim-buyuk,64px); margin-bottom:var(--qe-ritim-buyuk,64px); }
.qe-tarifsayfa__sonrakiler{ display:grid; grid-template-columns:repeat(2,1fr); gap:48px; }

/* Rozet bir BAĞLANTI, yani dokunma hedefi. Ortak ölçüt (GECE.md md.34):
   mobilde dokunma hedefi >= 44px ve yazı >= 14px. Masaüstünde Brightland ölçüsü
   12px/40px, mobilde ikisi de ölçütün altında kalıyordu. */
@media (max-width:749px){
  .qe-tarifsayfa__rozet{ min-height:44px; font-size:14px; padding:0 20px; }
}
@media (max-width:989px){
  .qe-tarifsayfa__bant{ grid-template-columns:1fr; gap:24px; padding-top:24px; }
  .qe-tarifsayfa__gorsel{ margin-left:0; max-width:none; }
  .qe-tarifsayfa__yazi{ max-width:none; }
  .qe-tarifsayfa__sutunlar{ grid-template-columns:1fr; gap:var(--qe-ritim,48px); }
  .qe-tarifsayfa__urunkart{ grid-template-columns:1fr; }
  .qe-tarifsayfa__urungorsel{ max-width:240px; }
  .qe-tarifsayfa__sonrakiler{ gap:20px; }
}

/* ============================================================================
   KEŞFET AÇILIŞ SAYFASI — 19 Eyl
   Burak: "keşfete basınca direkt tarifler açılıyor, menüde yazanların görünmesi
   lazım." Kart oranı mega menü şeridiyle aynı (0,92) ki iki yüzey aynı dili
   konuşsun; ızgara dört sütun, 990 altında ikiye, 560 altında teke düşüyor.
   ============================================================================ */
.qe-kesfet{ --qe-kesfet-kenar:clamp(20px,3.4vw,48px);
  width:min(1344px, calc(100% - var(--qe-kesfet-kenar) * 2)); margin-inline:auto;
  padding-block:var(--qe-ritim-buyuk,64px); }
.qe-kesfet__bas{ max-width:62ch; margin-bottom:var(--qe-ritim,48px); }
.qe-kesfet__bas h1{ margin:0 0 14px !important; }
.qe-kesfet__giris{ margin:0; font-size:17px; line-height:1.65; color:var(--qe-mute,#6E6560); }
.qe-kesfet__izgara{ display:grid; grid-template-columns:repeat(4,1fr); gap:28px; }
.qe-kesfet__kart{ display:flex; flex-direction:column; gap:12px; text-decoration:none;
  color:var(--qe-ink,#2B2222); }
.qe-kesfet__gorsel{ display:block; aspect-ratio:380/412; overflow:hidden;
  background:var(--qe-krem,#F5F3EC); border-radius:var(--qe-kap-kose,0px); }
.qe-kesfet__gorsel img{ width:100%; height:100%; object-fit:cover; display:block;
  transition:transform .35s ease; }
.qe-kesfet__kart:hover .qe-kesfet__gorsel img{ transform:scale(1.03); }
/* Görselsiz kart: sahte görsel değil, sessiz krem alan. İndeks kartıyla aynı dil. */
.qe-kesfet__gorsel.is-bos{ border:1px solid var(--qe-line,#E6E1DA); }
.qe-kesfet__ad{ font-family:var(--font-heading--family); font-size:20px; line-height:1.25;
  display:flex; align-items:baseline; gap:10px; }
.qe-kesfet__ozet{ font-size:15px; line-height:1.55; color:var(--qe-mute,#6E6560); }
/* Oklar tabanda hizalı: kart zaten flex sütun, oka margin-top:auto verince
   açıklama bir satır da olsa iki satır da olsa ok en altta kalır. c1 ölçtü:
   "Nasıl kullanılır" özeti iki satıra taşıyor ve oku ~35px aşağı kayıyordu.
   Metni kısaltarak çözme — bir dahaki özet yine taşar, kusur geri gelir. */
/* 22 Eyl: ok artik basligin yaninda, kartin dibinde degil. margin-top:auto
   esit yukseklikteki kartlarda oku yazidan kopariyordu. */
.qe-kesfet__ok{ flex:none; transform:translateY(-1px); }
.qe-kesfet__ok svg{ width:16px; height:16px; display:block; fill:none; stroke:currentColor;
  stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .3s ease; }
.qe-kesfet__kart:hover .qe-kesfet__ok svg{ transform:translateX(4px); }
.qe-kesfet__uyari{ padding:16px; background:#FDF3E7; border:1px solid #E8D5B7; font-size:14px; }
@media (max-width:989px){
  .qe-kesfet__izgara{ grid-template-columns:repeat(2,1fr); gap:20px; }
}
@media (max-width:559px){
  .qe-kesfet__izgara{ grid-template-columns:1fr; }
  .qe-kesfet__gorsel{ aspect-ratio:16/10; }
}

/* ============================================================================
   ÖDÜLLER VE BELGELER — 19 Eyl
   Burak: "text heavy, oralara görsel ekleyelim." 446 kelime, 0 görsel idi.
   Sahte sertifika taraması BASILMADI (sayfanın bütün iddiası "her satırın bir
   belgesi var"; uydurma görsel onu çürütürdü). Görselleştirme belgenin KENDİ
   verisinden: numara, tarih, veren kuruluş kartlara, besin tablosu oranlı şeride.
   ============================================================================ */
.qe-oduller{ --qe-od-kenar:clamp(20px,3.4vw,48px);
  width:min(1120px, calc(100% - var(--qe-od-kenar) * 2)); margin-inline:auto;
  padding-block:var(--qe-ritim-buyuk,64px); }
.qe-oduller__bas{ max-width:68ch; }
.qe-oduller__bas h1{ margin:0 0 14px !important; }
.qe-oduller__giris{ margin:0; font-size:17px; line-height:1.7; color:var(--qe-mute,#6E6560); }

.qe-oduller__ust{ display:block; font-size:12.5px; font-weight:500; letter-spacing:.12em;
  text-transform:uppercase; color:var(--qe-mute,#6E6560); margin-bottom:10px; }

.qe-oduller__bolum{ margin-top:var(--qe-ritim-buyuk,64px); }
.qe-oduller__bolum > h2{ margin:0 0 12px !important; }
.qe-oduller__altgiris{ margin:0 0 26px; font-size:16px; line-height:1.7;
  color:var(--qe-mute,#6E6560); max-width:68ch; }
.qe-oduller__dipnot{ margin-top:22px; font-size:15px; }

.qe-oduller__belgeler{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.qe-belge{ padding:24px; border:1px solid var(--qe-line,#E6E1DA);
  border-radius:var(--qe-kap-kose,0px); background:#fff; }
/* Belge görseli (23 Eyl): A4/letter belge, 3:4 kutuda kırpılmadan (contain), beyaz zemin. */
.qe-belge__gorsel{ display:block; aspect-ratio:3/4; margin:0 0 18px; overflow:hidden;
  background:#fff; border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-kap-kose,0px); }
.qe-belge__gorsel img{ display:block; width:100%; height:100%; object-fit:contain; }
.qe-belge__gorsel:hover{ border-color:var(--qe-ink,#2B2222); }
.qe-belge__rozet svg{ width:26px; height:26px; display:block; fill:none;
  stroke:var(--qe-zumrut,#16301F); stroke-width:1.3; stroke-linecap:round; stroke-linejoin:round; }
.qe-belge h3{ font-size:17px !important; line-height:1.3; margin:14px 0 16px !important; }
.qe-belge__kunye{ margin:0 0 16px; font-size:13.5px; line-height:1.5; }
.qe-belge__kunye > div{ display:flex; gap:10px; padding:7px 0;
  border-top:1px solid var(--qe-line,#E6E1DA); }
.qe-belge__kunye dt{ flex:0 0 78px; color:var(--qe-mute,#6E6560); margin:0; }
.qe-belge__kunye dd{ margin:0; }
.qe-belge__aciklama{ margin:0; font-size:14.5px; line-height:1.6; color:var(--qe-mute,#6E6560); }
/* FDA uyarısı bilerek vurgulu: sayfanın en kolay yanlış okunan satırı bu. */
.qe-belge__uyari{ margin:14px 0 0; padding:12px 14px; background:var(--qe-krem,#F5F3EC);
  border-left:2px solid var(--qe-zumrut,#16301F); font-size:14px; line-height:1.55; }

/* ---- Ödül bölümü (30 Eyl yeniden tasarım) ------------------------------------------------
   Burak: "madalya çok uyduruk duruyor, gerçek HD madalya bulamıyor musun? görsel sola yanaşık, güzel bi tasarım yap".
   Madalya yarışmanın resmi çiziminden şeffaf kesildi (sections/qe-oduller notu). Telefonda madalya ortada, altında ortalı
   yazı ve künye; 990 px üstünde iki sütun: sol panelde madalya panelin ortasında, sağda yazı. Panel zemini krem, ortası
   hafif aydınlık (madalyanın bakırını öne çıkarıyor); madalyada iki katmanlı yumuşak gölge. */
.qe-od-odul{ margin-top:var(--qe-ritim-buyuk,64px); display:grid; grid-template-columns:minmax(0,1fr); gap:28px; text-align:center; }
.qe-od-odul__sahne{ display:flex; align-items:center; justify-content:center; padding:40px 24px;
  background:radial-gradient(120% 95% at 50% 42%, #FFFFFF 0%, var(--qe-krem,#F5F3EC) 58%, #EADFCB 100%);
  border-radius:var(--qe-kap-kose,0px); }
.qe-od-odul__madalya{ display:block; width:min(64vw, 300px); height:auto;
  filter:drop-shadow(0 18px 26px rgba(92,52,20,.20)) drop-shadow(0 3px 6px rgba(92,52,20,.16)); }
.qe-od-odul__yazi{ max-width:620px; margin-inline:auto; }
.qe-od-odul__yazi h2{ margin:0 0 14px !important; }
.qe-od-odul__metin{ margin:0; font-size:16px; line-height:1.7; }
.qe-od-odul__kunye{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; margin:24px 0 0;
  background:var(--qe-line,#E6E1DA); border:1px solid var(--qe-line,#E6E1DA); text-align:left; }
.qe-od-odul__kunye > div{ background:#fff; padding:12px 14px; }
.qe-od-odul__kunye dt{ margin:0 0 3px; font-size:12.5px; font-weight:500; letter-spacing:.08em; text-transform:uppercase;
  color:var(--qe-mute,#6E6560); }
.qe-od-odul__kunye dd{ margin:0; font-size:15px; line-height:1.4; color:var(--qe-ink,#2B2222); }
.qe-od-odul__eylem{ display:flex; flex-direction:column; align-items:stretch; gap:14px; margin-top:22px; }
.qe-od-sertifika{ display:flex; align-items:center; gap:14px; padding:10px 16px 10px 10px; text-align:left;
  border:1px solid var(--qe-line,#E6E1DA); background:#fff; color:inherit; text-decoration:none; transition:border-color .2s ease; }
.qe-od-sertifika:hover{ border-color:var(--qe-ink,#2B2222); }
.qe-od-sertifika img{ display:block; flex:none; width:84px; height:auto; box-shadow:0 1px 4px rgba(0,0,0,.14); }
.qe-od-sertifika span{ font-size:15px; font-weight:500; }
.qe-od-kaynak{ display:inline-flex; align-items:center; justify-content:center; gap:6px; font-size:15px; color:inherit;
  text-decoration:underline; text-underline-offset:3px; }
.qe-od-kaynak svg{ width:11px; height:11px; fill:none; stroke:currentColor; stroke-width:1.5; }
@media (max-width:749px){
  .qe-oduller__bas{ text-align:center; }
  .qe-od-odul__kunye dt{ font-size:14px; letter-spacing:.06em; }
}
@media (min-width:990px){
  .qe-od-odul{ grid-template-columns:minmax(0,5fr) minmax(0,6fr); gap:60px; align-items:center; text-align:left; }
  .qe-od-odul__sahne{ aspect-ratio:1 / 1; padding:48px; }
  .qe-od-odul__madalya{ width:min(100%, 340px); }
  .qe-od-odul__yazi{ max-width:none; margin:0; }
  .qe-od-odul__eylem{ flex-direction:row; align-items:center; gap:28px; }
}

/* 23 Eyl: kap sınıfı `qe-yag` idi. Aynı ad qe-hikaye'nin {% stylesheet %}'inde zeytinyağı gradyanlı
   YAZI efekti (background-clip:text + şeffaf yazı) ve bölüm stilleri her sayfaya yüklendiği için
   bu kutunun içindeki açıklama ve not kayan altın renkle boyanıyordu. Ad ayrıldı. */
.qe-yag-dagilim{ max-width:820px; }
.qe-yag__serit{ display:flex; height:34px; overflow:hidden;
  border-radius:var(--qe-kap-kose,0px); }
.qe-yag__dilim{ display:block; height:100%; }
.qe-yag__dilim--tekli { background:var(--qe-zumrut,#16301F); }
.qe-yag__dilim--coklu { background:#5E7A62; }
.qe-yag__dilim--doymus{ background:#C9CFC2; }
.qe-yag__anahtar{ list-style:none; margin:18px 0 0; padding:0;
  display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.qe-yag__anahtar li{ display:flex; align-items:center; gap:9px; font-size:14.5px; }
.qe-yag__anahtar b{ margin-left:auto; font-weight:500; }
.qe-yag__kare{ width:12px; height:12px; flex:none; display:block; }
.qe-yag__not{ margin:20px 0 0; font-size:15px; line-height:1.65; color:var(--qe-mute,#6E6560);
  max-width:68ch; }

.qe-oduller__olculer{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px;
  margin-top:var(--qe-ritim,48px); }
.qe-olcu{ padding:20px; background:var(--qe-krem,#F5F3EC);
  border-radius:var(--qe-kap-kose,0px); }
.qe-olcu__deger{ display:block; font-family:var(--font-heading--family); font-size:26px;
  line-height:1.1; margin-bottom:6px; }
.qe-olcu__ad{ display:block; font-size:13.5px; color:var(--qe-mute,#6E6560); }

/* Ortak ölçüt (GECE.md md.34): mobilde yazı >= 14px. Masaüstünde belge künyesi
   13,5 ve üst satır 12,5 — ikisi de küçük etiket, orada sorun değil; mobilde
   ölçütün altında kalıyorlardı. 23 öge ölçüldü, hepsi bu iki sınıftan. */
@media (max-width:749px){
  .qe-belge__kunye{ font-size:14px; }
  .qe-oduller__ust{ font-size:14px; }
  .qe-olcu__ad{ font-size:14px; }
}
@media (max-width:989px){
  /* 30 Eyl: telefonda üç uzun belge kartı alt alta sayfayı uzatıyordu; yana kaydırılan şerit, sonraki kartın ucu görünür. */
  .qe-oduller__belgeler{ display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:14px;
    margin-inline:calc(var(--qe-od-kenar) * -1); padding:0 var(--qe-od-kenar) 10px; scrollbar-width:none; }
  .qe-oduller__belgeler::-webkit-scrollbar{ display:none; }
  .qe-oduller__belgeler .qe-belge{ flex:0 0 84%; scroll-snap-align:center; }
  .qe-oduller__olculer{ grid-template-columns:repeat(2,1fr); }
  .qe-yag__anahtar{ grid-template-columns:1fr; gap:10px; }
}

/* Koleksiyon kapanışı: seri açıklaması (collection.description) — 20 Eyl SEO turu.
   Kapanış başlığından önce, aynı sütunda. Paragraf 15px, kapanış metniyle aynı ses. */
.qe-kolkapanis__aciklama{ margin:0 0 28px; }
.qe-kolkapanis__aciklama p{ margin:0 0 12px; font-size:15px; line-height:1.6; color:var(--qe-ink,#2B2222); }
.qe-kolkapanis__aciklama p:last-child{ margin-bottom:0; }
.qe-kolkapanis__aciklama a{ color:inherit; text-underline-offset:3px; }

/* 20 Eyl: yukarıdaki sitewide "object-fit:cover !important" kuralı, kapanış kutusundaki
   kare packshot istisnasını (.is-sigdir → contain) eziyordu; teneke altından kesiliyordu.
   Aynı ağırlıkla, dosyada SONRA gelerek kazanıyor. Uyuyan kural ailesi: kendi genel
   kuralım kendi istisnamı yenmiş, ekranda görmeden fark edilmiyordu. */
.qe-kolkapanis__gorsel.is-sigdir img{ object-fit:contain !important; padding:6% !important; box-sizing:border-box; }

/* ══ A PAKETİ (20 Eyl): PDP tarifleri · kurumsal form · seri karşılaştırma ══ */
.qe-urun-tarifler{ margin-top:8px; padding-top:22px; border-top:1px solid var(--qe-line,#E6E1DA); }
.qe-urun-tarifler__bas{ margin:0 0 12px; font-size:15.5px; font-weight:500; }
.qe-urun-tarifler__liste{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.qe-urun-tarifler__kart{ display:block; text-decoration:none; color:var(--qe-ink,#2B2222); }
.qe-urun-tarifler__gorsel{ display:block; aspect-ratio:1; background:var(--qe-krem,#F5F3EC); overflow:hidden; border-radius:var(--qe-kap-kose,0px); }
.qe-urun-tarifler__gorsel.is-bos{ border:1px solid var(--qe-line,#E6E1DA); }
.qe-urun-tarifler__gorsel img{ width:100%; height:100%; object-fit:cover; display:block; }
.qe-urun-tarifler__ad{ display:block; margin-top:7px; font-size:13.5px; line-height:1.35; }
.qe-urun-tarifler__hepsi{ display:inline-block; margin-top:12px; font-size:14px; color:var(--qe-ink,#2B2222); text-underline-offset:3px; }
@media (max-width:749px){ .qe-urun-tarifler__liste{ grid-template-columns:repeat(2,1fr); } }

.qe-kurumsal{ padding:40px clamp(16px,3.4vw,48px) 72px; max-width:1440px; margin-inline:auto; }
.qe-kurumsal__ic{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:start; }
.qe-kurumsal__yazi h1{ margin:0 0 14px; }
.qe-kurumsal__giris{ margin:0 0 18px; font-size:16px; line-height:1.55; }
.qe-kurumsal__maddeler{ list-style:none; margin:0 0 18px; padding:0; }
.qe-kurumsal__maddeler li{ position:relative; padding:8px 0 8px 18px; border-bottom:1px solid var(--qe-line,#E6E1DA); font-size:15px; }
.qe-kurumsal__maddeler li::before{ content:""; position:absolute; left:2px; top:16px; width:5px; height:5px; border-radius:50%; background:var(--qe-altin,#9A7A33); }
.qe-kurumsal__not{ margin:0; font-size:14px; color:var(--qe-mute,#6E6560); }
.qe-kurumsal__form{ background:var(--qe-krem,#F5F3EC); padding:26px; border-radius:var(--qe-kap-kose,0px); }
.qe-form label{ display:block; margin:0 0 12px; font-size:13px; font-weight:500; color:var(--qe-ink,#2B2222); }
.qe-form input, .qe-form select, .qe-form textarea{ display:block; width:100%; margin-top:5px; padding:11px 12px; box-sizing:border-box;
  border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-dugme-kose,2px); background:#fff; font:400 15px/1.4 var(--font-body--family); color:var(--qe-ink,#2B2222); }
.qe-form__dugme{ width:100%; margin-top:4px; padding:14px; border:0; cursor:pointer; background:#1B1B1B; color:#fff; border-radius:var(--qe-dugme-kose,2px); font:500 15px var(--font-body--family); }
.qe-form__ok{ margin:0 0 14px; padding:10px 12px; background:#fff; border-left:2px solid var(--qe-altin,#9A7A33); font-size:14px; }
.qe-form__hata{ margin:0 0 14px; font-size:14px; color:var(--qe-bordo,#3F1722); }
@media (max-width:989px){ .qe-kurumsal__ic{ grid-template-columns:1fr; gap:28px; } }

.qe-kars{ padding:40px clamp(16px,3.4vw,48px) 72px; max-width:1440px; margin-inline:auto; }
.qe-kars__bas{ max-width:640px; margin:0 0 30px; } .qe-kars__bas h1{ margin:0; }
.qe-kars__alt{ margin:10px 0 0; font-size:16px; color:var(--qe-mute,#6E6560); }
.qe-kars__tablo-kap{ overflow-x:auto; }
.qe-kars__tablo{ width:100%; min-width:720px; border-collapse:collapse; font-size:15px; line-height:1.5; }
.qe-kars__tablo th, .qe-kars__tablo td{ padding:14px 16px; text-align:left; vertical-align:top; border-bottom:1px solid var(--qe-line,#E6E1DA); }
.qe-kars__tablo thead th{ font-family:var(--font-heading--family); font-size:20px; font-weight:400; border-bottom:2px solid var(--qe-ink,#2B2222); }
.qe-kars__tablo tbody th{ width:120px; font-size:12px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--qe-mute,#6E6560); }
.qe-kars__bag{ font-weight:500; color:var(--qe-ink,#2B2222); text-underline-offset:3px; }
.qe-kars__not{ margin:22px 0 0; font-size:14px; color:var(--qe-mute,#6E6560); }

/* ══════════════════════════════════════════════════════════════════════════════
   TİPOGRAFİ SİSTEMİ v2 — TEK KAYNAK (20 Eyl). Burak: "hangi fontun nerede kullanıldığı
   konusunda standardımız yok… kafana göre değil, gerekçesiyle… her şey satış için."

   ÖLÇÜM: 8 sayfa tipinde 800 metin ögesi, 41 farklı font/ağırlık/punto kombinasyonu,
   3 aile (Jost 704 · Gambarino 68 · EB Garamond italik 28). Üç başlık sesi, kart fiyatı
   12px büyük harf, footer başlığı 10px serif, sepet başlığı 32px, sahte kalın strong 700.

   MANTIK — dikkat bütçesi. Ürün sayfasında gözün sırası: ÜRÜN ADI → FİYAT → BUTON → gerekçe.
   Font bu sırayı kodlar. İKİ AİLE, İKİ İŞ:
     GAMBARINO (serif, tek ağırlık) = KİMLİK. Yalnız "ne" sorusunun cevabı: ürün adı, bölüm
       başlığı, kart adı. Az kullanılır ki her göründüğünde "bu bir ürün/hikâye" desin.
       Kalın yazılmaz (tek ağırlığı var), büyük harf yapılmaz (Türkçe İ, ve serif büyük
       harf küçük puntoda okunmaz — footer 10px'te ölçüldü).
     JOST (sans, 400/500) = İŞLEV. Fiyat, buton, gövde, gezinme, etiket. Sessiz ve okunur ki
       göz butona ve fiyata gitsin. 500 = vurgu ve etkileşim, 400 = okuma. 600/700 YOK:
       sahte kalın üretiyor ve ikinci bir buton sesi açıyordu.
   Üçüncü aile (EB Garamond italik) kaldırıldı: bilgi eklemeden ses ekliyordu. Referanslarda
   ölçülen desen de bu — 10 sitenin 8'i tek display + tek metin ailesi.

   ROLLER (masaüstü / mobil):
     h1 sayfa-ürün adı      Gambarino 400  36/28     kimlik, en büyük tek öge
     h2 bölüm başlığı       Gambarino 400  32/24     kimlik
     h3 raf-panel başlığı   Gambarino 400  20/18     "Setiniz", "Hangi şişe…", sepet "Sepet"
     kart adı               Gambarino 400  17/16     ürün/tarif kartı — küçük ama serif: ürün
     FİYAT                  Jost 500       20 PDP · 15 kart · 15 sepet · 18 set toplam
                            asla büyük harf/aralıklı: fiyat 2. dikkat ögesi, süs değil
     BUTON (CTA)            Jost 500       15        tek buton sesi, 600 yok
     gövde                  Jost 400       16/15     satır 1.55
     ikincil gövde/özet     Jost 400       14
     giriş cümlesi          Jost 500 italik 16       sitedeki TEK italik
     olgu vurgusu (b/strong)Jost 500                 700 değil
     gezinme                Jost 500 15 nav · 400 16 mega alt · 400 15 footer — durum çizgiyle
     etiket (eyebrow)       Jost 500 12 · .12em · BÜYÜK HARF — tek boy (11/12/13 → 12)
     dipnot-künye-yasal     Jost 400 13 (mobil 14, dokunma/okunurluk ölçütü)
   ══════════════════════════════════════════════════════════════════════════════ */
:root{ --qe-f-display:'Gambarino', Georgia, serif; --qe-f-text:'Jost', 'QE-Lira', -apple-system, 'Helvetica Neue', Arial, sans-serif;
       --qe-h1:36px; --qe-h2:32px; --qe-h3:20px; --qe-kart-ad:17px; --qe-govde:16px; --qe-govde-2:14px; --qe-etiket:12px; --qe-dipnot:13px; }
@media (max-width:749px){ :root{ --qe-h1:28px; --qe-h2:24px; --qe-h3:18px; --qe-kart-ad:16px; --qe-govde:15px; --qe-dipnot:14px; } }

/* KİMLİK — Gambarino, yalnız başlık ve ad */
h1, h2, h3, .theme-drawer__title, .qe-kolkapanis__baslik, .qe-set__panel-bas, .qe-kurumsal__yazi h1, .qe-kars__tablo thead th,
.product-card .text-block p, .qe-tarif-kart__ad, .qe-set__ad, .qe-kilavuz__ad, .qe-mega-kart__ad, .qe-sticky__ad, .qe-urun-tarifler__ad{
  font-family:var(--qe-f-display) !important; font-weight:400 !important; font-style:normal !important; text-transform:none !important; letter-spacing:0 !important; }
h1{ font-size:var(--qe-h1) !important; } h2:not(.qe-popup__baslik){ font-size:var(--qe-h2) !important; }
h3, .theme-drawer__title, .qe-kolkapanis__baslik, .qe-set__panel-bas, .qe-kars__tablo thead th{ font-size:var(--qe-h3) !important; }
.product-card .text-block p, .qe-tarif-kart__ad, .qe-set__ad, .qe-kilavuz__ad, .qe-mega-kart__ad, .qe-sticky__ad, .qe-urun-tarifler__ad{ font-size:var(--qe-kart-ad) !important; }
/* Footer sütun başlıkları serif 10px'ti → etiket rolü (Jost), aşağıda */

/* İŞLEV — Jost */
body, p, li, td, a, button, input, select, textarea, label, span{ font-family:var(--qe-f-text); }
p, li, .qe-kolkapanis__metin, .qe-akordiyon details > div{ font-weight:400; }
b, strong, .qe-bilgi__maddeler b{ font-weight:500 !important; }
/* fiyat: her bağlamda Jost 500, asla büyük harf, asla aralıklı */
.price, .price-item, .qe-urun__fiyat, .qe-bilgi__tutar, .qe-sticky__fiyat, .qe-set__fiyat, .qe-set__toplam b, .qe-sepet-oneri__fiyat, .qe-mega-kart__fiyat,
.cart-item__price, .cart-items__price, .totals__total-value{
  font-family:var(--qe-f-text) !important; font-weight:500 !important; text-transform:none !important; letter-spacing:0 !important; }
.product-card .price, .product-card .price *{ font-size:15px !important; }
.qe-urun__fiyat{ font-size:20px !important; } .qe-set__toplam b{ font-size:18px !important; }
/* buton: tek ses */
.button, .button--primary, .button--secondary, .add-to-cart-button, .quick-add__button, .qe-sticky__dugme, .qe-set__ekle, .qe-set__teklif, .qe-set__gonder,
.qe-form__dugme, .qe-mega-promo__bag, .qe-mega-kart__bag, .qe-hero__yazi a, .qe-kilavuz__bag, .qe-kars__bag{
  font-family:var(--qe-f-text) !important; font-weight:500 !important; font-size:15px !important; letter-spacing:.01em !important; }
/* gezinme: ağırlıkla değil çizgiyle durum */
.header .menu-list__link, .qe-header-yazi, header-actions a, header-actions button{ font-family:var(--qe-f-text) !important; font-weight:500 !important; font-size:15px !important; }
.header .mega-menu__column ul a{ font-weight:400 !important; font-size:16px !important; }
.footer .menu-list a, .footer a{ font-weight:400; font-size:15px; }
/* etiket (eyebrow): TEK boy */
.qe-duyuru__etiket, .qe-urun__rozet, .qe-urun__odul, .qe-kart-rozet, .qe-tarif-kart__mevsim, .qe-kars__tablo tbody th, .qe-kol__ust, .qe-kapsul__ust,
.footer h2, .footer h3, .footer .menu__heading, .footer .h6, .email-signup__heading{
  font-family:var(--qe-f-text) !important; font-weight:500 !important; font-size:var(--qe-etiket) !important; letter-spacing:.12em !important; text-transform:uppercase !important; }
/* giriş cümlesi: tek italik */
.qe-bilgi__giris{ font-family:var(--qe-f-text) !important; font-weight:500 !important; font-style:italic !important; font-size:16px !important; }
/* dipnot / künye / yasal */
.footer-utilities, .footer-utilities__text, .qe-urun__fiyat-alt, .qe-tarif-kunye, .qe-set__not, .qe-akordiyon__kaynak, .qe-kars__not{ font-size:var(--qe-dipnot) !important; font-weight:400 !important; }

/* v2 artıkları (yeniden ölçüm: 41→32 kombinasyon; kalan 600'ler ve kart fiyat varyantları) */
.qe-sepet-oneri__ad, .qe-mega-kart__ad, .qe-mega-promo__ad, .qe-mega-promo__bag, a[class*="instagram"], .qe-basin__kart a, .qe-anlar a, .qe-kapsul a{ font-weight:500 !important; }
.qe-sepet-oneri__fiyat, .qe-mega-kart__fiyat, .qe-mega-promo__fiyat, .cart-item .price, .cart-item__price-wrapper *{ font-weight:500 !important; font-size:15px !important; }
[id*="product_recommendations"] .product-card .price{ font-size:15px !important; }
.menu-drawer__menu-item, .menu-drawer a{ font-family:var(--qe-f-text) !important; font-weight:500 !important; font-size:16px !important; }
/* footer: sütunlar daralıp "Golden / Reserve" kırılıyordu — menü sütunu satır kırmaz, e-posta bloğu tavanlı */
.footer .menu-list a, .footer .menu a{ white-space:nowrap; }
.footer .email-signup, .footer .footer__block--newsletter{ max-width:360px; }
.footer .group{ column-gap:clamp(24px,4vw,72px); }

/* FOOTER düzeltme (20 Eyl, ölçüldü): başlık sınıfı menu__heading__default/accordion (10px kalmıştı),
   bağlantı kabı .menu__item (satır kırıyordu), payment-icons bloğu 0 ikon basıyor (PayTR Shopify
   ikon setinde yok) → statik logolar snippet'ten. */
.footer .menu__heading__default, .footer .menu__heading__accordion, .footer .email-signup__heading{
  font-family:var(--qe-f-text) !important; font-weight:500 !important; font-size:var(--qe-etiket) !important; letter-spacing:.12em !important; text-transform:uppercase !important; color:#D9BE7A !important; }
.footer .menu__item, .footer .menu__item a{ white-space:nowrap; }
.footer .menu__item a{ font-size:15px; }
.qe-odeme{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; margin-top:22px; }
.qe-odeme span{ display:inline-flex; align-items:center; height:26px; padding:0 9px; border:1px solid rgba(255,255,255,.22); border-radius:var(--qe-dugme-kose,2px);
  font:500 11px/1 var(--qe-f-text); letter-spacing:.06em; color:#F4F3EE; opacity:.85; }

/* Kırpma kuralı (20 Eyl): kutu yatay ama kaynak kare/dikey ise ürün KIRPILMAZ, contain + krem zemin.
   Liquid'de image.aspect_ratio < 1.3 → .is-sigdir (koleksiyon kartı, basın, PDP sahne). */
.qe-kol__gorsel.is-sigdir img, .qe-basin__kart figure.is-sigdir img, .qe-urun__sahne.is-sigdir img, .qe-urun__sahne .is-sigdir{ object-fit:contain !important; padding:4% !important; box-sizing:border-box; background:var(--qe-krem,#F5F3EC); }

.qe-urun__kare.is-sigdir img{ object-fit:contain !important; padding:6% !important; box-sizing:border-box; background:var(--qe-krem,#F5F3EC); }
/* Dikey çekim: kırpılmadan, üstten alta tam boy; yanlar krem (29 Eyl). */
.qe-urun__kare.is-dikey{ background:var(--qe-krem,#F5F3EC) !important; }
.qe-urun__kare.is-dikey img{ object-fit:contain !important; }
.qe-basin__kart img.is-sigdir{ object-fit:contain !important; padding:6% !important; box-sizing:border-box; background:var(--qe-krem,#F5F3EC); }

/* Editoryal bant butonu: saç teli çerçeve fotoğraf üstünde görünmüyordu (Burak, 20 Eyl).
   Açık fotoğraf → koyu dolgu (kural yukarıda). */
.qe-edit__hap{ background:var(--qe-ink) !important; color:var(--qe-krem) !important; box-shadow:none !important; }
.qe-edit__hap:hover{ background:var(--qe-zumrut) !important; }

/* Koleksiyon kartları mobilde 2x2 (Burak, 20 Eyl). 38px !important başlık kuralı yukarıda
   .qe-kol__ad'ı da kapsıyor; 173px kutuda iki satıra kırılıyordu. */
@media (max-width:749px){
  .qe-kol__ad{ font-size:22px !important; line-height:1.1; margin-top:10px; }
  .qe-kol__satir{ display:none !important; }
  .qe-kol__yol{ font-size:14px !important; margin-top:6px; }
}

/* Teklif butonu (kart): fiyatın yerinde küçük zümrüt hap. 20 Eyl, Burak: "teklif ile yazan yerlerin butonlarını güzelleştirelim". */
/* 22 Eyl · Burak: "Teklif alın butonunun üzerine gelince rengi zeytinyağı rengi olsun."
   Duruş hâli "Sepete ekle" ile aynı kalıyor (saydam zemin, ince çerçeve) — iki buton
   kartta aynı yerde ve aynı ölçüde durmalı. Fark yalnız hover'da: zemin, hikaye
   sayfasının ve boş sepet butonunun kullandığı AYNI altın gradyan (--qe-yag-gradyan),
   yazı mürekkep. Yeni bir altın tonu tanımlanmadı, üçüncü kez aynı değişken.
   Sınıf `snippets/quick-add.liquid` içinde basılıyor; "Sepete ekle" bu sınıfı almıyor,
   o yüzden onun hover'ı değişmiyor. */
/* Tıklanabilirlik: tema `.quick-add` kabına `pointer-events:none` verip geri açmayı
   `button.quick-add__button` ile yapıyor; bizim öge <a>, o kurala uğramıyor. Kendi
   satırımızla açıldı. (İlk ölçümde buton "hiç tıklanmıyor" gibi göründü, sebebi
   başkaydı: kart hover edilmemişken yuva `visibility:hidden`, gizli öge zaten
   tıklama almıyor — tema butonu da aynı. Yani asıl kusur değil, ölçüm anıydı.) */
.qe-teklif-buton{ pointer-events:all !important; }

/* 22 Eyl · Burak: "Teklif alın butonunun üzerine gelince rengi zeytinyağı rengi olsun."
   Sonra: "sitedeki tüm teklif alın yazan butonları aynı yapman lazım." Bu kural artık
   ÜÇ YERİ birden besliyor ve teklif CTA'sının TEK tanımı burası:
     ürün kartı hızlı ekle   snippets/quick-add.liquid  (.button .quick-add__button)
     ürün sayfası            sections/qe-urun.liquid    (.qe-urun__teklif.button)
     set kurucu kartı        sections/qe-set.liquid     (.qe-set__teklif)
   Taban görünümü her yerde KOMŞUSUNUN dilinde kalıyor (kartta dolu, ürün sayfasında
   zümrüt, sette çerçeveli) çünkü üçü farklı zeminlerde duruyor — kart butonu fotoğrafın
   üstünde, çerçeveli olsa okunmaz. Ortak olan şey HOVER: üçünde de aynı zeytinyağı
   gradyanı. Yeni bir teklif butonu eklersen sınıfı ekle, rengi burada yazma.
   ÜÇLÜ SINIF BİLEREK: qe.css'te zaten `.product-card .quick-add__button:hover` var ve
   siyah dolgu + beyaz yazı basıyor; özgüllüğü (0,3,0) ve DOSYADA DAHA SONRA geldiği için
   tek sınıflı kuralım kaybediyordu (ölçüldü: hover'da zemin siyah, yazı beyaz kaldı).
   Sınıfı üç kez yazmak özgüllüğü (0,4,0) yapıyor ve sıra ne olursa olsun kazanıyor;
   `!important` zaten iki tarafta da var, onunla çözülmüyor. */
.qe-teklif-buton.qe-teklif-buton.qe-teklif-buton:hover,
.qe-teklif-buton.qe-teklif-buton.qe-teklif-buton:focus-visible{
  background:var(--qe-yag-gradyan) !important;
  background-color:#E0C458 !important;
  border-color:transparent !important;
  color:var(--qe-ink,#2B2222) !important;
}
.qe-teklif-buton.qe-teklif-buton.qe-teklif-buton:hover svg{ color:var(--qe-ink,#2B2222) !important; }

/* .qe-teklif-kucuk 20 Eyl'de KALDIRILDI. Kart üstündeki teklif bağlantısı artık
   temanın kendi `button quick-add__button` sınıfını kullanıyor ve hızlı ekle yuvasında
   duruyor (snippets/quick-add.liquid); ayrı bir buton dili tutmuyoruz. */

/* Sepet/filtre çekmecesi başlığı (20 Eyl, Burak: "sepet yazısının fontu kötü"). Yukarıdaki kimlik
   bloğu .theme-drawer__title'ı Gambarino 32'ye çekiyordu; çekmece bir KAPLAMA, menüyle aynı dil: Jost 500. */
.theme-drawer__title, .cart-drawer__heading, .theme-drawer__title.h4{
  font-family:'Jost', 'QE-Lira', system-ui, sans-serif !important; font-weight:500 !important; font-style:normal !important;
  font-size:22px !important; letter-spacing:.01em !important; text-transform:none !important; }
@media (max-width:749px){ .theme-drawer__title, .cart-drawer__heading{ font-size:20px !important; } }

/* ══════════════════════════════════════════════════════════════════════════
   BOŞ SEPET ÇEKMECESİ — 21 Eyl · Burak: "buranın tasarımını güzelleştirelim,
   font güzel dursun, 'Alışverişe devam et' butonu Hikayemiz'deki zeytinyağı
   renginden olsun."

   Buton dolgusu, hikaye sayfasındaki başlık gradyanının AYNISI (orada yazıya
   uygulanıyor, burada zemine). Renk kodları oradan kopyalandı, yeni bir altın
   tonu uydurulmadı; ikisi aynı kaynaktan değişirse birlikte değişsin diye
   değişkene alındı.
   Yazı rengi mürekkep: altının orta tonu açık, beyaz yazı okunmuyor (Hikayemiz'de
   de aynı sebeple gradyan koyu fotoğrafın üstünde kullanılıyor).
   ══════════════════════════════════════════════════════════════════════════ */
:root{
  --qe-yag-gradyan: linear-gradient(100deg, #C9B23A 0%, #E9D66B 22%, #FFF3B8 42%, #F3E08C 58%, #D8BF49 78%, #C3A72F 100%);
}
/* Boş durum bloğu: ortada, nefesli. Ölçüler çekmecenin kendi dolgusuyla uyumlu. */
.cart-items__wrapper--drawer-empty{
  gap:14px !important;
  padding:8px 24px 32px !important;
}
.cart-items__wrapper--drawer-empty p{
  margin:0 !important;
  font-family:var(--font-body--family) !important;
  font-size:15px !important; line-height:1.55 !important;
  color:var(--qe-mute,#6E6560) !important;
  max-width:34ch;
}
.cart-items__wrapper--drawer-empty p a{
  color:var(--qe-ink,#2B2222) !important;
  text-decoration:underline; text-underline-offset:3px;
}
/* Başlık: çekmecenin kendi Jost 500 ölçeğinde kalıyor (Burak'ın kararı),
   yalnız boş durumda alt boşluğu açılıyor ki tek başına asılı durmasın. */
.cart-drawer--empty .theme-drawer__title,
.cart-items__wrapper--drawer-empty ~ * .theme-drawer__title{ margin-bottom:2px !important; }

/* Buton: zeytinyağı gradyanı */
.cart-items__empty-button,
.cart-items__wrapper--drawer-empty .button{
  background:var(--qe-yag-gradyan) !important;
  background-color:#E0C458 !important;   /* gradyan desteklenmezse düz altın */
  color:var(--qe-ink,#2B2222) !important;
  border:0 !important;
  border-radius:var(--qe-dugme-kose,2px) !important;
  min-height:50px !important;
  padding-inline:30px !important;
  width:auto !important;
  font-family:var(--font-body--family) !important;
  font-size:15px !important; font-weight:500 !important; letter-spacing:.01em !important;
  box-shadow:0 1px 2px rgba(20,16,10,.10) !important;
  transition:filter .18s ease, transform .18s ease !important;
}
.cart-items__empty-button:hover,
.cart-items__wrapper--drawer-empty .button:hover{
  filter:brightness(1.04) saturate(1.06) !important;
  transform:translateY(-1px) !important;
}
.cart-items__empty-button .button-text{ color:inherit !important; }
/* Temanın ok ikonu altın zeminde kayboluyordu, mürekkebe çekildi. */
.cart-items__empty-button svg{ color:var(--qe-ink,#2B2222) !important; }

/* PDP "Teklif alın": sepete ekle ile aynı zümrüt dolgu (ölçüldü: .button ink'e düşüyordu). */
.qe-urun__teklif.button{ background:var(--qe-zumrut) !important; color:var(--qe-krem) !important; border:0 !important; }
.qe-urun__teklif.button:hover{ background:#0E2115 !important; }

/* ---- Görselsiz kartlar: tipografik yer tutucu (20 Eyl) ----------------------------
   Tarif görselleri henüz yok; boş krem kutu "kırık sayfa" gibi duruyordu. Görsel gelene kadar
   kutuda markanın amblemi (silik) durur; görsel gelince class düşer, kural kendiliğinden gider. */
.qe-tarif-kart__gorsel.is-bos, .qe-tarifsayfa__gorsel.is-bos, .qe-urun-tarifler__gorsel.is-bos, .qe-kesfet__gorsel.is-bos{
  background-color:var(--qe-krem,#F5F3EC); background-image:url("qe-amblem-acik.svg"); background-repeat:no-repeat; background-position:center;
  background-size:44px auto; }
.qe-tarif-kart__gorsel.is-bos, .qe-urun-tarifler__gorsel.is-bos, .qe-tarifsayfa__gorsel.is-bos, .qe-kesfet__gorsel.is-bos{ background-blend-mode:normal; }
.qe-tarif-kart__gorsel.is-bos, .qe-urun-tarifler__gorsel.is-bos{ opacity:.9; }
.qe-tarif-kart__gorsel.is-bos::after, .qe-urun-tarifler__gorsel.is-bos::after{ content:""; position:absolute; inset:10px; border:1px solid rgba(43,34,34,.10); pointer-events:none; }
.qe-tarif-kart__gorsel.is-bos, .qe-urun-tarifler__gorsel.is-bos{ position:relative; }
.qe-tarifsayfa__gorsel.is-bos{ max-height:220px; background-size:56px auto; }
.qe-tarifsayfa__gorsel.is-bos img{ display:none; }

/* Sepet/filtre çekmece başlığı: boyut kuralı daha yüksek özgüllükle (ölçüm: Jost oldu ama 32 kaldı) */
body .theme-drawer__title, body h2.theme-drawer__title, body .theme-drawer__title.h4{ font-size:22px !important; line-height:1.2 !important; }
@media (max-width:749px){ body .theme-drawer__title{ font-size:20px !important; } }

/* Teklif notu başlık satırında: uzun not başlığı sıkıştırıp harf harf kırıyordu (mobil "Golde n"). Tam satıra iner. */
.qe-urun__fiyat--teklif{ flex:1 1 100% !important; align-items:flex-start !important; text-align:left; }
@media (max-width:749px){ .qe-urun__baslik-satir{ flex-wrap:wrap; gap:6px 16px; } .qe-urun__baslik-satir h1{ flex-basis:100%; } }

/* Koleksiyon kartı adları: kimlik bloğu 32px basıyordu, kart adı bölüm başlığı değil (Burak 20 Eyl: "çok büyük"). */
.qe-kol__ad{ font-size:22px !important; line-height:1.15 !important; margin-top:12px !important; }
@media (max-width:749px){ .qe-kol__ad{ font-size:19px !important; } }

/* Ödeme logoları: Shopify'ın kart SVG'leri (payment_type_svg_tag), YUSO'daki gibi */
.qe-odeme .qe-odeme__ikon{ height:26px; width:auto; display:block; border-radius:3px; }
.qe-odeme .qe-odeme__metin{ display:inline-flex; align-items:center; justify-content:center; min-width:41px; height:26px; padding:0 8px;
  border-radius:3px; background:#fff; color:#2B2222; font-family:var(--font-body--family); font-size:11px; font-weight:600; letter-spacing:.06em; }
.qe-odeme .qe-odeme__metin--ssl{ background:transparent; color:rgba(255,255,255,.82); border:1px solid rgba(255,255,255,.28); font-weight:500; letter-spacing:.08em; }
.qe-odeme{ gap:8px 10px !important; }

/* ---- FOOTER SÜTUN BAŞLIKLARI (20 Eyl, Burak: "bu yazılar niye bu kadar küçük punto") -------
   Ölçüm: SPAN.menu__heading__default = Jost 10px/400, düz yazı. Önceki kuralım `.footer .menu__heading__default`
   ile yazılmıştı ve HİÇ EŞLEŞMİYORDU: bu başlıklar .footer'ın içinde değil, bölüm grubunun altında duruyor
   (aynı tuzağa dokunma hedefi kuralında da düşülmüştü). Doğru kap: .shopify-section-group-footer-group.
   13px/500 BÜYÜK HARF + altın: bağlantılar 16px olduğu için başlık artık okunuyor ve hiyerarşi kuruluyor. */
.shopify-section-group-footer-group .menu__heading__default,
.shopify-section-group-footer-group .menu__heading__accordion,
.shopify-section-group-footer-group summary.menu__heading,
.footer .menu__heading__default, .footer .menu__heading__accordion{
  font-family:var(--qe-f-text) !important; font-size:13px !important; font-weight:500 !important;
  letter-spacing:.14em !important; text-transform:uppercase !important; color:#D9BE7A !important; line-height:1.2 !important; }
/* e-posta başlığı aynı boyda olsun (ölçüm: 12px) */
.shopify-section-group-footer-group .email-signup__heading, .footer .email-signup__heading{ font-size:13px !important; letter-spacing:.14em !important; color:#D9BE7A !important; }
/* künye satırı: 12 ve 13 karışıktı, tek boy */
.footer-utilities, .footer-utilities *{ font-size:13px !important; }
/* Ok ile yazı arasına pay: bant butonu inline-block olduğu için gap çalışmıyordu, ok yazıya yapışıktı. */
.qe-bant__buton:not(:has(svg))::after, .qe-hero__yazi a:not(:has(svg))::after{ margin-left:10px; }

/* ============================================================================
   SET KURUCU · MOBİL (21 Eyl, Burak: "buranın kullanımı çok zor mobilde, ürünleri
   sağa sola kaydırmalı gösterelim, Setiniz kısmını daha görünür yere koyalım").
   ÖLÇÜLDÜ (390px): kart ızgarası auto-fill minmax(190px) → tek sütun, kare görsel
   358x358; üç seriyi görmek için ~2.600px kaydırmak, "Setiniz" paneli ise en altta.
   ÇÖZÜM: (1) her seri YATAY kaydırmalı şerit, kart 150px, parmakla kaydırılır ve
   kartlar hizaya oturur; (2) panel ürünlerin ÜSTÜNE alınıp yapışkan yapıldı, seçim
   yaparken ekranda kalıyor; panel mobilde kompakt (başlık, uzun slot listesi ve
   dipnot gizli; kademe + ilerleme + durum + toplam + buton).
   Masaüstü düzenine dokunulmadı.
   ============================================================================ */
@media (max-width: 749px) {
  .qe-set { padding: 24px 16px 40px; }
  .qe-set__bas { margin-bottom: 18px; }
  .qe-set__alt { font-size: 15px; }

  /* align-items:start masaüstünden miras kalıyor; column flex'te bu, çocuğu içeriğine göre
     genişletiyor (ölçüldü: sol sütun 390px ekranda 798px olup taşıyordu). stretch şart. */
  .qe-set__govde { display: flex !important; flex-direction: column; align-items: stretch !important; gap: 22px; }
  .qe-set__sol, .qe-set__grup { min-width: 0; max-width: 100%; }

  /* Setiniz paneli: ekranın ALTINA sabit çubuk. sticky denendi ve TUTMADI (ölçüldü: kaydırınca
     panel y=-569, üst ataların birinde overflow var). Sabit çubuk hem her zaman görünür hem
     seçim yaparken toplam ve buton parmağın yanında. Sayfa altına çubuk kadar pay bırakıldı. */
  .qe-set { padding-bottom: 168px; }
  /* top:auto ŞART: masaüstü kuralı sticky top:96px veriyor; fixed'e geçince top+bottom birlikte
     panelin yüksekliğini ekranın tamamına çekiyordu (ölçüldü: 748px). */
  .qe-set__panel { position: fixed; top: auto; left: 0; right: 0; bottom: 0; z-index: 30; border-radius: 0;
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); border-top: 1px solid var(--qe-line,#DCD7CB);
    background: var(--qe-krem,#F5F3EC); box-shadow: 0 -8px 24px rgba(20,16,10,.12); }
  .qe-set__kademeler { display: none; }
  .qe-set .qe-set__panel h2.qe-set__panel-bas { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .qe-set__kademeler { margin: 0 0 10px; gap: 6px; }
  .qe-set__kademeler li { padding: 6px 8px; }
  .qe-set__kademeler b { font-size: 14px; }
  .qe-set__kademeler span { font-size: 12px !important; }
  .qe-set__durum { margin: 8px 0 10px; }
  /* seçilen ürünler: alt alta uzun liste yerine yatay küçük kareler */
  .qe-set__slotlar { flex-direction: row; gap: 6px; overflow-x: auto; padding-bottom: 2px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .qe-set__slotlar::-webkit-scrollbar { display: none; }
  .qe-set__slot { flex: 0 0 auto; min-height: 44px; padding: 5px 8px; gap: 7px; }
  .qe-set__slot-ad, .qe-set__slot-fiyat { display: none; }
  .qe-set__slot.is-bos { width: 44px; justify-content: center; }
  .qe-set__toplam { margin-top: 4px; }
  .qe-set__kazanc { margin-top: 4px; }
  .qe-set__gonder { padding: 13px; }
  .qe-set__not { display: none; }
  /* Yüzen ögelerin konumu BURADAN VERİLMİYOR (21 Eyl). Daha önce burada
     `.qe-wa ... bottom: calc(16px + var(--qe-set-cubuk)) !important` vardı; ölçüldü:
     ürün sayfasında mobilde WhatsApp butonu yapışkan sepet çubuğunun ÜSTÜNE biniyordu
     (çubuk 744-812, buton 752-796), çünkü !important benim `--qe-sticky-aktif-y`
     hesabımı eziyordu. Üstelik seçicideki `popup-sekme` / `qe-popup__sekme` sınıfları
     sitede yok (sekmenin sınıfı `qe-hatirlat`), yani sekme kuralın dışında kalıyor ve
     ikili farklı yüksekliklere dağılıyordu.
     Artık iki çubuk da TEK yerde toplanıyor: qe-whatsapp.liquid ve qe-popup.liquid
     içindeki kurallar `--qe-sticky-aktif-y` ile `--qe-set-cubuk`u birlikte topluyor.
     Set çubuğunun yüksekliğini yazan betik (qe-set.liquid) olduğu gibi duruyor. */

  /* Ürünler: 2'li ızgara. ÖNCE yatay kaydırmalı şeritti (21 Eyl, Burak "sağa sola
     kaydırmalı olsun" demişti) ama 22 Eyl'de kullanınca olmadı: 375px ekranda iki
     kart sığıyor, üçüncüsü ekran kenarında BUTONUNDAN kesiliyordu, yani her serinin
     bir bölümü görünmüyordu ve kaydırmadan kaç ürün olduğu anlaşılmıyordu
     (Burak: "olmadı hiç" · "görselin yanında scroll boşluğu var, o olmadan olmuyor mu?").
     Izgarada her kart tamamen görünüyor, buton kesilmiyor, kaydırma gerekmiyor.
     Koleksiyonlarda da mobilde 2x2 kullanılıyor, sayfa dili aynı kalıyor. */
  .qe-set__grup { margin-bottom: 26px; }
  .qe-set__grup-not { margin-bottom: 12px; }
  .qe-set__liste { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 18px 12px; overflow: visible; margin-inline: 0; padding: 0; }
  .qe-set__kart { flex: none; min-width: 0; }

  /* Panel BOŞKEN incelsin: üç boş kare kutu 221px'lik bir çubuk yapıyordu, yani
     ekranın dörtte birini hiçbir şey göstermeyen bir alan kaplıyordu. Ürün
     seçilince kareler geri geliyor. */
  .qe-set__panel:not(:has(.qe-set__slot.is-dolu)) .qe-set__slotlar { display: none; }
  .qe-set__panel:not(:has(.qe-set__slot.is-dolu)) .qe-set__durum { margin: 2px 0 8px; }

  /* Yüzen butonlar bu sayfada gizli: panelin hemen üstünde duruyorlardı ve ürün
     şeridinin üzerine biniyorlardı (ölçüldü: buton 534-578, panel 591'de başlıyor,
     yani ekranın alt 278px'i üç katman kaplama). Sayfanın kendi çağrısı zaten
     paneldeki buton; ikinci bir kanal burada yer kaplamaktan başka iş yapmıyor. */
  body:has(.qe-set__panel) .qe-wa,
  body:has(.qe-set__panel) .qe-hatirlat,
  body:has(.qe-set__panel) shopify-chat:not([open]) { display: none !important; }

  /* Sayfa altı payı panelin GERÇEK yüksekliğinden: panel incelince 168px sabit pay
     boşluk bırakıyordu. Betik zaten `--qe-set-cubuk` yazıyor. */
  .qe-set { padding-bottom: calc(var(--qe-set-cubuk, 140px) + 28px) !important; }
  .qe-set__ad { font-size: 15px; }
  .qe-set__ekle, .qe-set__teklif { margin-top: 6px; padding: 9px 8px; font-size: 14px; }
  /* Izgarada iki kart yan yana durunca aksiyonları aynı hizaya gelmeli. Golden
     Reserve'de fiyat yerine "Teklif ile" yazıyor ve aksiyon çerçeveli buton değil
     bir bağlantı; ölçüde farklı oldukları için satır tırtıklı duruyordu.
     Kart tam yükseklik, aksiyon en alta; ikisi de aynı kutu ölçüsünde. */
  .qe-set__kart { height: 100%; }
  .qe-set__ekle, .qe-set__teklif, .qe-set__yok {
    margin-top: auto !important;
    min-height: 44px; display: flex; align-items: center; justify-content: center;
    box-sizing: border-box; text-align: center; }
}

/* Hasat bölümü → "Öne çıkanlar" geçişi MOBİLDE (Burak, ikinci kez: "bu boşluğu azalt").
   Ölçüldü (390px): buton altından başlığa 111px = kapsül alt 48 + ürünler üst 32 + başlık payı.
   Masaüstünde 120px'e çekilmişti ama mobil hiç ölçülmemişti. qe_urunler mobil üst dolgusu 32→20. */
@media (max-width:749px){ [id$="__qe_urunler"]{ padding-block:20px 32px !important; } }

/* ============================================================================
   FOOTER · MOBİL (21 Eyl, Burak: "çok uzun, yazan şeyleri düzene sok, aralarında
   çok boşluk var, pop-up sekmeleri kapatmasın, kart ikonları güzel görünsün").
   ÖLÇÜLDÜ (390px): footer 1745px; dört menü tek sütun alt alta (380+380+268+268),
   satır yüksekliği 44, gruplar arası 28px; ödeme şeridi sola yaslı; künyeyi WhatsApp
   butonu kapatıyor.
   ÇÖZÜM: menüler 2 sütun, satır aralığı sıkıldı, ödeme şeridi ortalandı ve ayrıldı,
   footer'ın altına yüzen ögeler için pay bırakıldı.
   ============================================================================ */
@media (max-width: 749px) {
  .shopify-section-group-footer-group .group-block-content { display: grid !important;
    grid-template-columns: 1fr 1fr; gap: 24px 18px; align-items: start; }
  .shopify-section-group-footer-group .email-signup-block { grid-column: 1 / -1; }
  .shopify-section-group-footer-group accordion-custom.menu { min-width: 0; }
  /* başlık ile ilk bağlantı arası ve satır aralığı */
  .shopify-section-group-footer-group .menu__heading__default,
  .shopify-section-group-footer-group .menu__heading__accordion { margin-bottom: 4px !important; }
  .footer .menu-list, .shopify-section-group-footer-group .menu-list { gap: 0 !important; }
  .footer .menu__item a, .shopify-section-group-footer-group .menu__item a {
    min-height: 40px; display: flex; align-items: center; font-size: 15px; }
  /* ödeme şeridi: ortalı, üstünde ince ayraç */
  .qe-odeme { justify-content: center; gap: 8px !important; margin-top: 26px !important;
    padding-top: 20px; border-top: 1px solid rgba(255,255,255,.14); }
  .qe-odeme .qe-odeme__ikon { height: 24px; }
  .qe-odeme .qe-odeme__metin { height: 24px; min-width: 38px; font-size: 10.5px; }
  /* künye: yüzen ikili (WhatsApp + hatırlat sekmesi 44px) yazıyı kapatıyordu */

  .footer-utilities, .footer-utilities * { font-size: 12.5px !important; }
}

/* Künye satırı: yüzen ikili (WhatsApp + hatırlat sekmesi, 44px) sayfanın en altındaki "© Queen Elisir"
   yazısını kapatıyordu — MASAÜSTÜNDE DE (ölçüldü). Pay her ekranda veriliyor.
   NOT: `.footer-utilities` elemanın KENDİSİ bölüm grubunun parçası; `...group .footer-utilities`
   seçicisi hiç eşleşmiyor (ilk denemem öyleydi, padding 0 kaldı). */
.footer-utilities { padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)) !important; }

/* Boş sepet · sepet ikonu (21 Eyl, Burak: "sepet ikonu gibi bir şey koyalım, sade ve premium
   market sepeti gibi dursun"). Tek parça ince çizgi: kulp yayı, üst kenar, konik gövde ve üç
   dikey tel. Dolgu yok, altın yok — buton zaten altın gradyan, ikon da parlarsa iki vurgu
   birbiriyle yarışıyor. Mürekkep rengi, soluk; süs değil, durum işareti. */
/* Kap düzeltmesi: `.cart-drawer--empty` çekmecenin TÜM iç kabı (başlık dahil, 844px) ve
   içeriği ortalayan eleman `.cart-drawer__content`. İkon ilkine konunca çekmecenin en üstünde,
   metinlerden kopuk kalıyordu (ölçüldü). Ortalayan kabın içine alındı. */
.cart-drawer--empty .cart-drawer__content::before {
  content: ""; display: block; width: 68px; height: 68px; margin: 0 auto 20px;
  background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2064%2064%22%20fill%3D%22none%22%20stroke%3D%22%232B2222%22%20stroke-width%3D%221.4%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22.5%2021c0-6.1%204.3-10.5%209.5-10.5S41.5%2014.9%2041.5%2021%22%2F%3E%3Cpath%20d%3D%22M7.5%2021.5h49%22%2F%3E%3Cpath%20d%3D%22M12.6%2021.5%2018%2049.2a4%204%200%200%200%203.9%203.3h20.2a4%204%200%200%200%203.9-3.3l5.4-27.7%22%2F%3E%3Cpath%20d%3D%22M25%2029.5%2026.8%2045M32%2029.5V45M39%2029.5%2037.2%2045%22%2F%3E%3C%2Fsvg%3E") center / contain no-repeat; opacity: .32;
}
@media (max-width: 749px) { /* Kap düzeltmesi: `.cart-drawer--empty` çekmecenin TÜM iç kabı (başlık dahil, 844px) ve
   içeriği ortalayan eleman `.cart-drawer__content`. İkon ilkine konunca çekmecenin en üstünde,
   metinlerden kopuk kalıyordu (ölçüldü). Ortalayan kabın içine alındı. */
.cart-drawer--empty .cart-drawer__content::before { width: 60px; height: 60px; margin-bottom: 16px; } }

/* ============================================================================
   FOOTER · BÜLTEN FORMU (21 Eyl, Burak: "bu ok neden burada, düzgün bir tasarım yap").
   ÖLÇÜLDÜ: form flex-column; mobilde kutu 358px, altında 44x44 ok butonu tek başına ve
   sola yaslı duruyordu; MASAÜSTÜNDE buton genişliği 0 idi, yani hiç görünmüyordu.
   ÇÖZÜM: kutu ile buton tek satır, buton 52x52 kare ve okla birlikte görünür; ok artık
   kutunun devamı, kopuk bir öge değil. Odakta altın çerçeve.
   ============================================================================ */
/* Asıl satır kabı form DEĞİL, `.email-signup__input-group` (ölçüldü: form flex ama grup mobilde
   dikey, input 24px yüksekliğinde kalıyordu). Kural gruba yazılır. */
.email-signup__input-group {
  display: flex !important; flex-direction: row !important; align-items: stretch !important;
  gap: 8px !important; width: 100%; }
.email-signup__input-group > .email-signup__input { flex: 1 1 auto !important; min-width: 0; }
.email-signup-block input[type="email"], .footer .email-signup input[type="email"], .email-signup__input {
  width: 100%; height: 52px !important; min-height: 52px !important; padding: 0 14px; border: 1px solid rgba(255,255,255,.18);
  border-radius: var(--qe-dugme-kose, 2px); background: #fff; color: var(--qe-ink, #2B2222);
  font-family: var(--font-body--family); font-size: 15px; }
.email-signup-block input[type="email"]:focus, .footer .email-signup input[type="email"]:focus {
  outline: 2px solid #C9B23A; outline-offset: 1px; }
.email-signup-block button, .email-signup-block [type="submit"],
.footer .email-signup button, .footer .email-signup [type="submit"] {
  flex: 0 0 52px !important; width: 52px !important; height: 52px !important; min-width: 52px !important;
  /* 22 Eyl · Burak: "ok işareti niye öyle altta?" Ölçüldü: temanın butona verdiği
     `margin: 8px` sıfırlanmamıştı; kutu 5156'da başlıyor, buton 5164'te, yani tam 8px
     aşağıda duruyordu. Yükseklikler eşit (52/52) olduğu için hata boy değil KONUMDU.
     Yanlardaki 8px de grubun kendi `gap:8px`ine ekleniyor, ara 16px görünüyordu. */
  margin: 0 !important;
  display: inline-flex !important; align-items: center; justify-content: center; padding: 0 !important;
  border: 0; border-radius: var(--qe-dugme-kose, 2px); cursor: pointer;
  background: linear-gradient(100deg, #C9B23A 0%, #E9D66B 40%, #D8BF49 72%, #C3A72F 100%);
  color: var(--qe-ink, #2B2222); transition: filter .2s ease; }
.email-signup-block button:hover, .footer .email-signup button:hover { filter: brightness(1.06); }
.email-signup-block button svg, .footer .email-signup button svg { width: 20px; height: 20px; }

/* ---- Sayfa başlıkları: sepet çekmecesiyle aynı ses (22 Eyl) -----------------
   Burak: "bu başlıkları düzeltmen lazım kanka fontunu, sepet ekranının fontu gibi
   olabilir. daha uygun hali işte bi tık kalın olabilir belki."
   Ölçüldü (Keşfet, 1440px): h1 = Gambarino 36/400, sayfanın geri kalanı Jost.
   Serif başlık yalnız burada kalıyordu; sepet çekmecesi ve menü çoktan Jost'a
   geçmişti (.theme-drawer__title, Jost 500/22). Aynı dil dört sayfa başlığında:
   Keşfet · Tarifler · Ödüller · İletişim.
   Ağırlık 600, çekmeceden bir kademe kalın — Burak'ın "bi tık kalın" isteği.
   Harf aralığı EKSİ: Jost geometrik ve geniş, 36px'te varsayılan aralık kelimeyi
   dağıtıyor; çekmecedeki +.01em 22px için doğru, bu boy için değil.
   Ürün adları, bölüm başlıkları ve kart başlıkları Gambarino'da KALIYOR — istenen
   sayfa başlığıydı, tipografinin tamamı değil.
   29 Eyl: Hangi yağ (.qe-kars__bas h1) da aynı kurala alındı; site denetiminde tek serif
   sayfa başlığı olarak kalmıştı. Ürün sayfasındaki karşılaştırma başlığı h2, etkilenmiyor. */
.qe-kesfet__bas h1,
.qe-tarifler__bas h1,
.qe-kars__bas h1,
.qe-oduller__bas h1,
.qe-iletisim__metin h1{
  /* !important zorunlu: 2139'daki KİMLİK kuralı h1'e Gambarino'yu !important ile
     veriyor, ayrıca ağırlığı 400'e ve aralığı 0'a çiviliyor (475 ve 933'te de aynı
     ağırlık kilidi var). Onlar Gambarino sahte-kalın çizmesin diye kondu; burada
     font Jost olduğu için gerekçe düşüyor, Jost'un 600 kesimi dosyada mevcut. */
  font-family:var(--qe-f-text) !important;
  font-weight:600 !important;
  font-style:normal !important;
  letter-spacing:-.012em !important;
  line-height:1.15;
}

/* ---- Mobil menü: tam ekran (22 Eyl) ---------------------------------------
   Burak: "menüyü açınca yanda hâlâ anasayfa görünüyor, orası olmasın, tam ekran olsun."
   Ölçüm (375px): çekmece 356.25px, yani `--drawer-width` 95vw'ye çözülüyor ve sağda
   18.75px'lik bir şerit açıkta kalıyor. Arkadaki sayfanın o ince dilimi menünün
   kendi yüzeyi gibi değil, yarım kalmış bir panel gibi okunuyor.
   Yalnız mobilde tam genişlik; 750px üstünde temanın kendi 25rem'lik yan paneli kalıyor.
   Kapanış animasyonu translateX(-100%) ile çalıştığı için genişlikten etkilenmiyor.
   HİZA: satırlar ortalanmadı. Her satırda solda küçük bir görsel var; ortalayınca
   görsellerin sol kenarı satırdan satıra kayıyor ve göz listeyi tarayamıyor.
   Ortalama ancak görseller kaldırılırsa doğru durur, onlar da menüde işe yarıyor. */
@media (max-width: 749px){
  .menu-drawer{ width:100vw !important; max-width:100vw !important; }
}

/* Menü açıkken yüzen butonlar menünün ÜSTÜNDE kalıyordu: çekmecenin z-index'i 18,
   WhatsApp ve kampanya butonu 41, Inbox butonu 2147483000. Ekran görüntüsünde menü
   listesinin üzerinde duruyorlardı. Menü açıkken üçü de çekiliyor.
   Inbox yalnız sohbet penceresi KAPALIYKEN gizleniyor; açık sohbeti kapatmak
   kullanıcının yazdığı mesajı görünmez yapardı. */
body:has(details.menu-drawer-container[open]) .qe-wa,
body:has(details.menu-drawer-container[open]) .qe-hatirlat,
body:has(details.menu-drawer-container[open]) shopify-chat:not([open]){
  opacity:0 !important; visibility:hidden !important; pointer-events:none !important;
}
.qe-wa, .qe-hatirlat{ transition:opacity .18s ease, visibility .18s ease; }

/* ---- Footer amblemi altında boş alan (22 Eyl) ------------------------------
   Burak: "tüm sayfaları kontrol et, logo boşluğa denk gelecek, bir şeyin üzerine
   geçmesin." Amblem artık altın çizginin tam üstünde duruyor, yani üst yarısı
   (yarıçap 59 masaüstü / 52 mobil) sayfanın SON bölümünün üzerine geliyor.
   Ölçüldü, binenler: koleksiyon sayfaları (kapanış görseli), ürün sayfası
   (benzer ürün kartları), ödüller (alt giriş metni), kurumsal (form düğmesi),
   hangi-yağ (not satırı), hikayemiz (şişe görseli). Yani kusur tek sayfada değil,
   bütün şablonlarda. Tek tek dolgu yerine son bölüme genel bir alt pay. */
/* !important zorunlu: 1141'deki ritim kuralı bu bölümlere `padding-block`u
   !important ile veriyor, sıradan bir kural onu ezemiyor (koleksiyon kapanışında
   80px yazdım, 48 kaldı, görsel logoya binmeye devam etti). Yalnız ALT pay
   eziliyor, üst ritim ritimden gelmeye devam ediyor. */
/* Sayı şöyle çıkıyor: bordo bant bölümün alt kenarından YUKARI doğru uzanıyor,
   yani altın çizgi bölümün altından bant yüksekliği kadar yukarıda. Boş kalması
   gereken pay = bant (41) + amblem yarıçapı (59) + nefes (20) = 120px.
   Mobilde = bant (25) + yarıçap (52) + nefes (15) = 92px.
   80px denendi ve YETMEDİ: koleksiyon kapanış görseli çizginin 43px üstünde
   bitiyordu, amblem 59 istiyor, 15px binmeye devam ediyordu. */
#MainContent > .shopify-section:last-child{ padding-bottom:120px !important; }
@media (max-width: 749px){
  #MainContent > .shopify-section:last-child{ padding-bottom:92px !important; }
}
/* Ana sayfa istisnası: son bölüm krem zeminli basın bölümü. Dolgu DIŞ kaba
   verilirse kremle bordo arasında sayfa zemini (#FEFCFC) beyaz bir şerit olarak
   görünür — Burak'ın bugün "renk farkı var" dediği kusurun aynısı. Orada pay
   zaten iç kapta (`[id$="__qe_basin"] > *`), dışarıya ikinci kez verilmiyor. */
#MainContent > .shopify-section[id$="__qe_basin"]:last-child{ padding-bottom:0 !important; }


/* ---- Sayfa başlıkları · ikinci tur (22 Eyl) --------------------------------
   Burak: "keşfetteki fontu diğer sayfalar için de yap, mağaza, hediye, setini
   oluştur sayfalarındaki başlıkları yani."
   Keşfet/Tarifler/Ödüller/İletişim h1'leri zaten Jost 600'e geçmişti. Aynı ses
   şimdi koleksiyon sayfalarının ve set sayfasının başlığında da:
     Mağaza  = /collections/tum-urunler  ) ikisi de qe-kol-giris bölümünü
     Hediye  = /collections/seckin-sunum ) kullanıyor, tek seçici yetiyor
     Setini Oluştur = /pages/set
   !important, 2139'daki KİMLİK kuralı h1'e Gambarino'yu !important ile verdiği
   için zorunlu (aynı gerekçe, aynı yöntem: bkz. Keşfet kuralı).
   Alt çizgi, boyut ve ortalama DEĞİŞMEDİ, yalnız font ailesi ve ağırlık. */
/* `h1.` öneki şart: 1637'deki `.shopify-section h1, main h1` kuralı ağırlığı
   400'e !important ile çiviliyor ve özgülüğü (0,1,1). Sade `.qe-kolgiris__baslik`
   (0,1,0) kalıyor, dosyada sonra gelse bile kaybediyor — ölçtüm, font Jost oldu
   ama ağırlık 400'de kaldı. Etiketi ekleyince (0,1,1) oluyor ve sıra karar veriyor. */
h1.qe-kolgiris__baslik,
.qe-set__bas h1{
  font-family: var(--qe-f-text) !important;
  font-weight: 600 !important;
  font-style: normal !important;
  letter-spacing: -.012em !important;
  line-height: 1.15;
}


/* ---- Mobil menü: grup başlıkları (22 Eyl) ---------------------------------
   Burak: "başlıklar biraz daha büyük ve belirgin olabilir."
   Mağaza · Hediye · Keşfet başlıkları 16px/500 ve soluk griydi (#6E6560), yani
   altlarındaki bağlantılarla neredeyse aynı ağırlıkta; grup sınırı okunmuyordu.
   20px/600 ve koyu mürekkep rengi. Üstlerine de nefes kondu ki blok başlangıcı
   belli olsun.
   Seçici `:not(.qe-cekmece__satir)`: aynı `--mainlist` sınıfını alt ögesi olmayan
   gerçek bağlantılar da taşıyor ("Setini Oluştur"). Onlar başlık değil, satır —
   büyütülmemeli. */
.menu-drawer__menu-item--mainlist:not(.qe-cekmece__satir){
  font-size: 20px !important;
  font-weight: 600 !important;
  color: var(--qe-ink, #2B2222) !important;
  letter-spacing: -.008em;
}
.menu-drawer__list-item--flat:not(:first-child) > .menu-drawer__menu-item--mainlist:not(.qe-cekmece__satir){
  margin-top: 6px;
}

/* ---- Menü: alt ögesi olmayan üst satır ("Setini Oluştur") ------------------
   Görsel eklendikten sonra iki kusur çıktı (Burak: "niye böyle aq, çizgi neden
   yok arada?").
   1) KARE İLE YAZI BİTİŞİKTİ. Alt öge satırlarında ara temanın `gap:14px`inden
      geliyor; bu dalın kendi kuralı `padding:0` + `display:flex` veriyor ama gap
      vermiyordu. Ölçüm: alt satırda yazı satır başından 70px içeride (56 kare +
      14 ara), bu satırda 56 — yani tam 14px kayık ve kareye yapışık.
      Aynı değerler yazıldı: gap 14, dikey dolgu 6, yani yükseklik de 68'e eşitlendi.
   2) ARDINDAN AYRAÇ ÇİZGİSİ GELMİYORDU. Gruplar arası çizgi `childlist`in alt
      kenarına bağlı; bu satırın childlist'i yok, dolayısıyla çizgi de yok.
      Çizgi satırın kendi li'sine veriliyor, grup ayracıyla aynı ölçülerle
      (1px, 16px alt dolgu, 22px alt boşluk) ki ritim bozulmasın. */
.menu-drawer__menu-item--mainlist.qe-cekmece__satir{
  gap: 14px !important;
  padding: 6px 0 !important;
  min-height: 68px !important;
}
li.menu-drawer__list-item--flat:not(:last-child):has(> .menu-drawer__menu-item--mainlist.qe-cekmece__satir){
  border-bottom: 1px solid var(--qe-line, #E6E1DA);
  padding-bottom: 16px;
  margin-bottom: 22px;
}

/* 22 Eyl · Burak: "product boxlarda genel olarak görsel ile ürün ismi çok yakın,
   onun arasını açalım, standart satır arası boşluk olsun."
   Ölçüldü (1440, koleksiyon ızgarası): görselin altı 892, ürün adının üstü 896 —
   arada 4px. Aynı 4px kartın İÇİNDEKİ metin satırları arasında da var (ad→açıklama,
   açıklama→fiyat), yani ad görselden değil metin bloğundan bir satırmış gibi
   okunuyordu. Görselden sonra gerçek bir ara açılıyor; metnin kendi 4px ritmi
   BOZULMUYOR, çünkü ad/açıklama/fiyat tek bir blok olarak durmalı.
   Kural galeri kabına yazıldı: kartın metin ögeleri tema blokları (shopify-block)
   ve sıraları değişebiliyor, "ilk metin" diye seçici yazmak kırılgan olurdu.

   İKİNCİ ÖLÇÜM, ÖNEMLİ: kartın iç boşluğu SAYFAYA GÖRE DEĞİŞİYOR. Kapsayıcı
   `.product-card__content` bir flex; boşluğu satır içi `--product-card-gap`ten
   geliyor ve bölüm ayarı: koleksiyon ızgarasında 4px, ana sayfa şeridinde 14px.
   Galeriye sabit pay versem iki sayfa iki farklı ara gösterirdi (16 ve 26).

   METNİN KENDİ RİTMİNE DOKUNULMADI. 4px kulağa az geliyor ama satırların kendi
   satır yüksekliği (leading) zaten payı taşıyor; ad→açıklama→fiyat arası normal
   duruyor. Görselin altında leading YOK, o yüzden aynı 4px orada "yapışık" okunuyor.
   Kusur tek bir arada, kartın tümünde değil — bölüm ayarını ezmiyoruz.

   Galerinin payı bu yüzden sabit değil, TAMAMLAYICI: hangi bölümde olursa olsun
   görselden ada 20px (yazının satır yüksekliği kadar, "standart satır arası").
   Değişken galeri kabına da miras geliyor, kapsayıcının çocuğu. */
.product-card .card-gallery{ margin-bottom: max(0px, calc(20px - var(--product-card-gap, 0px))); }


/* ---- Çerez onayı penceresi (23 Eyl) ----------------------------------------
   KVKK Çerez Rehberi 7.3: panelde "eşit derecede (renk, büyüklük, punto açısından)
   'kabul et', 'reddet' ve 'tercihler' butonlarının sunulması iyi uygulama örneği".
   Shopify'ın varsayılanında Kabul Et ve Reddet çerçeveli buton (187x37), "Tercihleri
   yönet" ise çerçevesiz düz yazıydı, yani üçüncü seçenek diğer ikisinden zayıf
   duruyordu. Aynı kutuya alındı. */
#shopify-pc__banner #shopify-pc__banner__btn-manage-prefs{
  border:1px solid rgb(31,31,31) !important; background:#fff !important; color:rgb(51,51,51) !important;
  min-height:37px !important; text-decoration:none !important; }
.qe-cerez-tercih{ cursor:pointer; margin-left:16px; font-size:inherit; text-decoration:underline; text-underline-offset:3px; }


/* ---- Mobil tarama (23 Eyl, Burak: "tüm siteyi mobilde bi kontrol et") ---------
   KART GÖRSELİ SOLA KAYIKTI. Koleksiyon ve arama ızgarası "mobilde tam genişlik"
   ayarında; tema bu modda görseli kartın 8px iç boşluğundan NEGATİF MARJLA iki yana
   taşırıyor. Bizim `.product-card .card-gallery{width:100%}` kuralımız genişliği
   kartın içine (173px) kilitlediği için yalnız sol marj işledi: sol görsel ekranın
   kenarına yapışık, sağ görselin sağında 16px boşluk (ölçüldü, 390px: 0..173 ve
   201..374). Genişlik, temanın kullandığı aynı iki payla genişletildi; görseller
   artık 0..189 ve 201..390, ikisi de simetrik. Yalnız bu sarmalayıcıda ve mobilde. */
@media (max-width:749px){
  .collection-wrapper--full-width-on-mobile .product-card .card-gallery{
    width:calc(100% + max(var(--padding-xs), var(--padding-inline-start)) + max(var(--padding-xs), var(--padding-inline-end))); }
}

/* DOKUNMA ALANLARI. Ölçülen 44px altı hedefler: footer "Çerez tercihleri" 81x18
   (her sayfada), footer Instagram 24x44, ürün sayfası "İlk değerlendirmeyi siz
   yazın" 350x22, "Tüm tarifler" 67x20, hangi-yağ tablosu "Seriyi görün" 83x22.
   Görünüm değişmesin diye kutu büyütülmedi; tıklanan alan görünmez bir ::after ile
   genişletildi (düzen payı sıfır, yazı yerinde kalıyor). Instagram tek başına ortada
   durduğu için genişliği doğrudan 44px'e çekildi, simge yerinden oynamıyor. */
.qe-cerez-tercih, .qe-urun__yildiz, .qe-urun-tarifler__hepsi, .qe-kars__bag{ position:relative; }
.qe-cerez-tercih::after, .qe-urun__yildiz::after, .qe-urun-tarifler__hepsi::after, .qe-kars__bag::after{
  content:""; position:absolute; inset:-12px -6px; }
footer .social-icons__icon-wrapper a{ display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; }

/* HANGİ YAĞ SİZE GÖRE · MOBİL: tablo yerine seri seri kartlar (işaretleme ve gerekçe
   sections/qe-karsilastir.liquid içinde). Dil tablonun kendisi: seri adı başlık yazısı,
   üstte tablo başlığının 2px mürekkep çizgisi, satır adı tablonun etiket stili
   (12px, .12em, büyük harf, soluk), satırlar arası aynı ince çizgi. */
.qe-kars__kartlar{ display:none; }
@media (max-width:749px){
  .qe-kars__tablo-kap{ display:none; }
  .qe-kars__kartlar{ display:grid; gap:40px; }
  .qe-kars__kart{ border-top:2px solid var(--qe-ink,#2B2222); padding-top:16px; }
  .qe-kars__kart-ad{ margin:0 0 6px; }
  .qe-kars__kart dl{ margin:0; }
  .qe-kars__kart dl > div{ display:grid; grid-template-columns:96px 1fr; gap:12px; padding:12px 0; border-bottom:1px solid var(--qe-line,#E6E1DA); }
  .qe-kars__kart dt{ font-family:var(--qe-f-text); font-size:var(--qe-etiket); font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--qe-mute,#6E6560); padding-top:3px; }
  .qe-kars__kart dd{ margin:0; font-size:15px; line-height:1.5; }
  .qe-kars__kart .qe-kars__bag{ display:inline-block; margin-top:16px; }
}


/* ---- Ödüller ve belgeler · hiza ve satır kırılımı (23 Eyl) -----------------------------
   Burak: "yazılar sola dayalı, bi anda kesilip aşağı satıra geçiyor, tüm sayfada düzelt".
   ÖLÇÜLDÜ (1440): sayfa kabı 1120px ve ortada, ama başlık + giriş + bölüm girişleri 68ch'de
   (653px) SOLA yaslı, sağlarında ~470px boşluk; kartlar ve ızgaralar ise tam genişlik.
   Giriş satırları 640 / 547 / 465px diye merdiven iniyordu. Kart açıklamalarında ve yağ
   notunda son satırda tek kelime kalıyordu (35-76px).
   ÇÖZÜM (≥750px): yazı blokları kabın ORTASINA alındı, satırlar dengelendi (balance);
   ızgaralar ve kartlar zaten tam genişlikte, simetri böyle kuruluyor. Madalya kartının içi
   (görsel + yazı) ve belge kartlarının içi sola hizalı kalıyor: kart içi okuma metni.
   Mobilde hiza değişmedi (dar ekranda ortalı uzun paragraf okunmuyor), yalnız yetim kelime
   önlendi (pretty). Dengeleme kuralları `.qe-oduller .x` biçiminde: genel `.qe-oduller p` (0,1,1)
   tek sınıflı kuralı eziyordu, balance hiç işlemedi (ölçüldü: 715/707/483px). */
.qe-oduller p, .qe-oduller dd{ text-wrap:pretty; }
@media (min-width:750px){
  .qe-oduller__bas{ max-width:720px; margin-inline:auto; text-align:center; }
  .qe-oduller .qe-oduller__giris{ text-wrap:balance; }
  .qe-oduller__bolum > h2{ text-align:center; }
  .qe-oduller .qe-oduller__altgiris{ max-width:720px; margin-inline:auto; margin-bottom:32px; text-align:center; text-wrap:balance; }
  .qe-oduller .qe-oduller__dipnot{ margin-top:28px; margin-bottom:0; }
  .qe-yag-dagilim{ margin-inline:auto; }
  .qe-oduller .qe-yag__not{ margin-inline:auto; text-align:center; text-wrap:balance; }
}

/* ---- Hiza ve satır kırılımı · site geneli (23 Eyl) ------------------------------------
   Burak (ödüller sayfasından sonra): "diğer sayfalarda da aynı sorun var mı kontrol et".
   33 sayfa × 1440 ve 390 tarandı.
   1) ÖDÜLLERDEKİ DESEN (başlık + giriş sola yaslı, altında tam genişlik ızgara/tablo):
      Keşfet, Tarifler, Rehber, Hangi yağ. ≥750px'te başlık ve giriş ortaya alındı, giriş
      satırları dengelendi. Tarifler'in bölüm başlıkları ("Mevsim sofraları", "Tarifler")
      ödüllerdeki gibi ortada. İki sütunlu sayfalar (İletişim, Kurumsal, Setini oluştur)
      BİLEREK sola hizalı: orada yazı sütunu yanındaki forma/panele hizalı. Okuma
      sayfaları (SSS, kargo, yasal) zaten ortada tek sütun.
   2) TEK KALAN KELİME: mobilde "Siparişinizle ilgili bir sorun / mu var?", "Kargoya verme
      ve teslimat / süresi"; hikayede "kraliçelerinden alıyor." (38px), "karakter taşır."
      (30px); tarifte "gerekir.". Başlıklar dengeli (balance), paragraflarda son satırda
      tek kelime kalmıyor (pretty). :where() ile özgüllük SIFIR: bir bölüm kendi text-wrap
      değerini yazdıysa o kazanır. */
:where(h1, h2, h3){ text-wrap:balance; }
:where(main p, main li, main dd){ text-wrap:pretty; }
@media (min-width:750px){
  .qe-kesfet__bas, .qe-tarifler__bas, .qe-kars__bas{ margin-left:auto; margin-right:auto; text-align:center; }
  .qe-kesfet .qe-kesfet__giris, .qe-tarifler .qe-tarifler__alt, .qe-kars .qe-kars__alt{ text-wrap:balance; }
  .qe-tarifler__bolum{ text-align:center; }
  .qe-kars .qe-kars__not{ max-width:640px; margin-left:auto; margin-right:auto; text-align:center; text-wrap:balance; }
}

/* ---- Mobil tarama 2 (24 Eyl, Burak: "mobilde de tüm sayfaları bi kontrol et") ----------
   1) KOLEKSİYON KAPANIŞI "Diğer seriler:" satırı. ≤760px'te bağlantılar 44px yüksek kutu
      oluyordu ve alt çizgileri kutunun DİBİNE düşüyordu (yazının ~20px altında kopuk
      çizgiler); etiket ise üstte kalıyordu, bağlantılar düzensiz kırılıyordu ("Teneke
      Seri" tek başına alt satırda). Etiket kendi satırında ortada, bağlantılar ortalı
      tek sıra; çizgi yazının altında (text-decoration), 44px dokunma alanı dolgu ile. */
@media (max-width:760px){
  .qe-kolkapanis .qe-kolkapanis__yol{ align-items:center; gap:0 18px; }
  .qe-kolkapanis .qe-kolkapanis__yol span{ flex-basis:100%; text-align:center; margin:0; }
  .qe-kolkapanis .qe-kolkapanis__yol a{ display:inline-block; min-height:0; margin:0; padding:11px 0;
    border-bottom:0; text-decoration:underline; text-decoration-color:var(--qe-line,#DCD7CE);
    text-decoration-thickness:1px; text-underline-offset:4px; }
}
/* 2) ANA SAYFA ödül satırı "OLIVE ISTANBUL 100C · BRONZ MADALYA / 2026": yıl tek başına alt
      satıra düşüyordu. Satır dengeli bölünüyor. */
.qe-krem__oduller span{ text-wrap:balance; }
/* 3) SETİNİ OLUŞTUR: mobilde alttaki sabit set çubuğu footer'ın son satırlarını (künye,
      Şartlar ve Politikalar, Çerez tercihleri, Instagram) kapatıyordu, ulaşılamıyordu.
      Footer'ın altına çubuk yüksekliği kadar pay (betik --qe-set-cubuk'u kökte yazıyor). */
@media (max-width:989px){
  body:has(.qe-set__panel) footer{ padding-bottom:var(--qe-set-cubuk,140px); }
}

/* ---- "Öne çıkanlar" raf başlığı (24 Eyl) -----------------------------------
   1. tur (Burak: "fontu güzel değil"): Jost 600'e geçmişti. 2. tur (Burak, "Sofranızdan
   gelenler" başlığını gösterip: "böyle olsun"): sitenin BÖLÜM BAŞLIKLARI kuralıyla
   birebir aynı: eğik Gambarino, masaüstü 32px, telefon 27px, aralık 0, satır 1.15
   (bkz. "BÖLÜM BAŞLIKLARI İTALİK" kuralı ve mobil karşılığı). Bu başlık <h3> olarak
   basıldığı için o kuralın (.shopify-section h2) dışında kalıyordu; ayrıca eski
   "yardımcı raf" kuralı bu rafı bilerek 20px'e indiriyordu, o da ezildi.
   Ölçüler kopya değil, aynı sayılar: bölüm başlığı ölçüsü değişirse burası da değişmeli. */
.shopify-section[id$="__qe_urunler"] h2,
.shopify-section[id$="__qe_urunler"] h3{
  font-family:'Gambarino', Georgia, serif !important;
  font-style:italic !important;
  font-weight:400 !important;
  font-size:32px !important;
  letter-spacing:0 !important;
  text-transform:none !important;
  line-height:1.15;
}
@media (max-width:749px){
  .shopify-section[id$="__qe_urunler"] h2,
  .shopify-section[id$="__qe_urunler"] h3{ font-size:27px !important; }
}

/* ---- Ürün sayfası · boy dışı varyant seçeneği (24 Eyl; 30 Eyl kart tasarımı) ----
   snippets/qe-secenek.liquid. Angelica / Lascarina "Sunum: Yalnız şişe / … kutuda". İki kart yan yana: solda küçük görsel,
   yanında ad, fark satırı ve fiyat. Seçili kart koyu çerçeve + köşede onay; kutu kartı seçilince altın çerçeve ve hafif
   gölge. Kutulu seçilince kart zıplar ve sayfada konfeti (qe-sepete-ekle.js'teki window.qeKonfeti). Hareket azaltmada zıplama yok. */
.qe-secenek{ margin-top:22px; }
.qe-secenek__liste{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:12px; }
.qe-secenek__oge{ position:relative; display:flex; align-items:center; gap:12px; min-height:78px; padding:12px 14px;
  box-sizing:border-box; background:#fff; border:1px solid var(--qe-line,#E6E1DA); border-radius:var(--qe-kap-kose,0px);
  color:#0A0200; text-decoration:none; transition:border-color .2s ease, box-shadow .2s ease; }
.qe-secenek__oge:hover{ border-color:#BDB3A8; }
.qe-secenek__oge.is-secili{ border-color:#0A0200; box-shadow:inset 0 0 0 1px #0A0200; }
.qe-secenek__oge--hediye{ background:linear-gradient(135deg, #FFFFFF 0%, #FBF6EA 100%); }
.qe-secenek__oge--hediye.is-secili{ border-color:var(--qe-gold,#9A7A33);
  box-shadow:inset 0 0 0 1px var(--qe-gold,#9A7A33), 0 8px 22px rgba(154,122,51,.16); }
.qe-secenek__gorsel{ flex:none; display:flex; align-items:center; justify-content:center; width:52px; height:60px; }
/* multiply: beyaz zeminli packshot (Angelica kırmızı kutu) krem kart zeminine karışsın, beyaz kare kalmasın. */
.qe-secenek__gorsel img{ display:block; max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; mix-blend-mode:multiply; }
.qe-secenek__gorsel svg{ width:36px; height:36px; fill:none; stroke:var(--qe-gold,#9A7A33); stroke-width:1.4;
  stroke-linejoin:round; stroke-linecap:round; }
.qe-secenek__metin{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.qe-secenek__ad{ font-family:var(--qe-f-text); font-size:15px; font-weight:500; line-height:1.25; }
.qe-secenek__fark{ font-family:var(--qe-f-text); font-size:13px; line-height:1.3; color:var(--qe-gold,#9A7A33); }
.qe-secenek__fiyat{ font-family:var(--qe-f-text); font-size:13px; line-height:1.25; color:var(--qe-mute,#6E6560); }
.qe-secenek__isaret{ position:absolute; top:-9px; right:-9px; width:20px; height:20px; border-radius:50%; background:#0A0200;
  display:flex; align-items:center; justify-content:center; opacity:0; transform:scale(.5);
  transition:opacity .2s ease, transform .3s cubic-bezier(.3,1.6,.5,1); }
.qe-secenek__oge--hediye .qe-secenek__isaret{ background:var(--qe-gold,#9A7A33); }
.qe-secenek__isaret svg{ width:11px; height:11px; fill:none; stroke:#fff; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.qe-secenek__oge.is-secili .qe-secenek__isaret{ opacity:1; transform:scale(1); }
.qe-secenek__oge.is-pop{ animation:qe-secenek-pop .5s cubic-bezier(.3,1.5,.5,1); }
@keyframes qe-secenek-pop{ 0%{ transform:scale(1); } 35%{ transform:scale(1.045); } 100%{ transform:scale(1); } }
.qe-secenek__not{ margin:12px 0 0; font-size:14px; line-height:1.5; color:var(--qe-mute,#6E6560); }
/* Telefonda iki kart yan yana ~170 px kalıyor, "Kırmızı kutuda" ve fark satırı kırılıyordu (ölçüldü, 390 px): alt alta. */
@media (max-width:749px){
  .qe-secenek__liste{ grid-template-columns:minmax(0,1fr); gap:10px; }
  .qe-secenek__oge{ min-height:70px; gap:12px; padding:10px 14px; }
  .qe-secenek__gorsel{ width:44px; height:52px; }
  .qe-secenek__fark, .qe-secenek__fiyat{ font-size:14px; }
}
/* Tek kart (30 Eyl, Burak: "yalnız şişe seçeneğini sil, kutu kalsın, tekrar basınca kutuyu çıkarsın"): kutu kartı anahtar
   gibi çalışır. Onay dairesi köşeden sağ kenara iner ve hep görünür: boşken ince çerçeve, seçiliyken altın dolu + onay. */
.qe-secenek--tek .qe-secenek__oge{ padding-right:18px; }
.qe-secenek--tek .qe-secenek__isaret{ position:static; flex:none; margin-left:auto; width:26px; height:26px; box-sizing:border-box;
  background:#fff; border:1.5px solid #BDB3A8; opacity:1; transform:none;
  transition:background-color .2s ease, border-color .2s ease; }
.qe-secenek--tek .qe-secenek__isaret svg{ width:13px; height:13px; opacity:0; transform:scale(.4);
  transition:opacity .2s ease, transform .3s cubic-bezier(.3,1.6,.5,1); }
.qe-secenek--tek .qe-secenek__oge:hover .qe-secenek__isaret{ border-color:var(--qe-gold,#9A7A33); }
.qe-secenek--tek .qe-secenek__oge.is-secili .qe-secenek__isaret{ background:var(--qe-gold,#9A7A33); border-color:var(--qe-gold,#9A7A33); }
.qe-secenek--tek .qe-secenek__oge.is-secili .qe-secenek__isaret svg{ opacity:1; transform:scale(1); }
.qe-secenek--tek .qe-secenek__oge:focus-visible{ outline:2px solid var(--qe-gold,#9A7A33); outline-offset:3px; }
@media (prefers-reduced-motion:reduce){ .qe-secenek__oge.is-pop{ animation:none; } .qe-secenek__isaret,
  .qe-secenek--tek .qe-secenek__isaret svg{ transition:none; } }

/* ---- Sepet onay kutusu (25 Eyl) ---------------------------------------------
   Burak: "sepet sayfasına onay kutusunu koy." Ön Bilgilendirme Formu + Mesafeli Satış
   Sözleşmesi onayı, ödeme butonunun hemen üstünde (snippets/qe-onay.liquid). Temanın kendi
   checkbox bileşeni kullanılıyor; o bileşen etiketi tek satırda tutup kesiyor (filtre
   listeleri için), burada cümle uzun olduğu için satır kaydırmaya açıldı. Aksi hâlde metin
   butonu da sağa taşırıyordu (ölçüldü: 390px ekranda 580px). */
.qe-onay .checkbox{ align-items:flex-start; }
.qe-onay .checkbox__label{ display:flex; align-items:flex-start; min-width:0; line-height:1.5; }
.qe-onay .checkbox__label-text{ white-space:normal; overflow:visible; text-overflow:clip; min-width:0; font-size:14px; line-height:1.5; padding-block-start:1px; }
.qe-onay .checkbox__label-text a{ color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; }
.qe-onay .checkbox__input:user-invalid + .checkbox__label .icon-checkmark{ border-color:#9B2C1F; }

/* ---- Sepet onay kutusu · belge penceresi (30 Eyl; 1 Eki: sınıf .qe-belge → .qe-sozlesme, Ödüller sayfasının
   article.qe-belge kartlarıyla çakışıyordu, canlıya bu yüzden gidemiyordu) ----------------------------
   Burak: "ön bilgilendirme formu ve mesafeli satış sözleşmesi modal olarak açılsın ve kapatılabilsin,
   tasarımları siteye uygun olsun." snippets/qe-belge-pencere.liquid (<dialog>, qe-onay'dan).
   Dil yasal sayfaların kendisiyle aynı (sections/qe-bilgi-sayfa, 29-30 Eyl standardı), pencere ölçeğinde:
     başlık  Jost 600, -.012em (sayfada 36 → burada 24/20)   ara başlık Gambarino italik (26/22 → 21/19)
     gövde   Jost 400 16/15, satır 1.7, mürekkep             strong 600 · bağlantı bordo · madde imi altın
   Masaüstünde ortada 720px pencere; telefonda alttan açılan tam genişlik sayfa (başparmakla "Kapat").
   Üst ve alt şerit sabit, yalnız metin kayar; kaydırma sayfaya taşmaz. Genel "Bölüm başlıkları italik"
   kuralı (.shopify-section h2 → 0,3,1, 32px !important) pencereye de işliyordu: buradaki başlık
   seçicileri 0,3,2 (dialog. öneki), sıradan bağımsız kazanıyor (ölçüldü). */
.qe-sozlesme{ box-sizing:border-box; width:min(720px, calc(100% - 48px)); max-width:none; max-height:min(86vh, 860px);
  margin:auto; padding:0; border:0; border-radius:var(--qe-kap-kose,0px); background:#fff; color:var(--qe-ink,#2B2222);
  box-shadow:0 24px 64px rgba(10,2,0,.28); overflow:hidden; }
.qe-sozlesme[open]{ display:flex; animation:qe-sozlesme-gir .28s cubic-bezier(.2,.8,.2,1); }
.qe-sozlesme::backdrop{ background:rgba(10,2,0,.52); backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); animation:qe-sozlesme-perde .28s ease; }
.qe-sozlesme__kap{ display:flex; flex-direction:column; width:100%; min-height:0; }
.qe-sozlesme__bas{ flex:none; display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:16px 16px 16px 32px; border-bottom:1px solid var(--qe-line,#E6E1DA); }
dialog.qe-sozlesme .qe-sozlesme__bas h2.qe-sozlesme__baslik{ margin:0; font-family:var(--qe-f-text) !important; font-style:normal !important;
  font-weight:600 !important; font-size:24px !important; line-height:1.2; letter-spacing:-.012em !important;
  text-transform:none !important; color:#0A0200; }
.qe-sozlesme__kapat{ flex:none; width:44px; height:44px; display:flex; align-items:center; justify-content:center; padding:0;
  border:0; border-radius:50%; background:transparent; color:#0A0200; cursor:pointer; transition:background-color .2s ease; }
.qe-sozlesme__kapat:hover{ background:var(--qe-krem,#F5F3EC); }
.qe-sozlesme__kapat svg{ width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.4; stroke-linecap:round; }
.qe-sozlesme__kapat:focus-visible, .qe-sozlesme__tamam:focus-visible{ outline:2px solid var(--qe-gold,#9A7A33); outline-offset:2px; }
.qe-sozlesme__govde{ flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; padding:28px 32px 32px;
  font-family:var(--qe-f-text); font-size:16px; line-height:1.7; color:var(--qe-ink,#2B2222); }
.qe-sozlesme__govde:focus-visible{ outline:none; box-shadow:inset 0 0 0 2px var(--qe-gold,#9A7A33); }
dialog.qe-sozlesme .qe-sozlesme__kap .qe-sozlesme__govde h2{ margin:32px 0 10px; font-family:var(--qe-f-display) !important;
  font-style:italic !important; font-weight:400 !important; font-size:21px !important; line-height:1.25; letter-spacing:0 !important;
  text-transform:none !important; text-align:left !important; color:#0A0200; }
dialog.qe-sozlesme .qe-sozlesme__kap .qe-sozlesme__govde > h2:first-child{ margin-top:0; }
.qe-sozlesme__govde p{ margin:0 0 14px; }
.qe-sozlesme__govde > :last-child{ margin-bottom:0; }
.qe-sozlesme__govde strong, .qe-sozlesme__govde b{ font-weight:600; }
.qe-sozlesme__govde a{ color:var(--qe-bordo,#3F1722); text-decoration:underline; text-underline-offset:3px; }
.qe-sozlesme__govde ul, .qe-sozlesme__govde ol{ margin:0 0 14px; padding-left:22px; }
.qe-sozlesme__govde li{ margin:0 0 6px; }
.qe-sozlesme__govde li::marker{ color:var(--qe-gold,#9A7A33); }
.qe-sozlesme__alt{ flex:none; display:flex; justify-content:flex-end; padding:14px 16px; border-top:1px solid var(--qe-line,#E6E1DA); background:#fff; }
.qe-sozlesme__tamam{ min-width:150px; height:48px; padding:0 24px; border:0; border-radius:var(--qe-dugme-kose,2px);
  background:#231F20; color:#fff; font-family:var(--qe-f-text); font-size:15px; font-weight:500; line-height:1; cursor:pointer; }
@media (max-width:749px){
  .qe-sozlesme{ width:100%; max-height:90vh; margin:auto 0 0; box-shadow:0 -12px 40px rgba(10,2,0,.22); }
  .qe-sozlesme[open]{ animation:qe-sozlesme-yukari .34s cubic-bezier(.2,.8,.2,1); }
  .qe-sozlesme__bas{ padding:10px 8px 10px 20px; }
  dialog.qe-sozlesme .qe-sozlesme__bas h2.qe-sozlesme__baslik{ font-size:20px !important; }
  .qe-sozlesme__govde{ padding:22px 20px 26px; font-size:15px; }
  dialog.qe-sozlesme .qe-sozlesme__kap .qe-sozlesme__govde h2{ font-size:19px !important; margin-top:26px; }
  .qe-sozlesme__alt{ padding:12px 20px calc(12px + env(safe-area-inset-bottom, 0px)); }
  .qe-sozlesme__tamam{ width:100%; }
}
@keyframes qe-sozlesme-gir{ from{ opacity:0; transform:translateY(14px) scale(.985); } }
@keyframes qe-sozlesme-yukari{ from{ transform:translateY(100%); } }
@keyframes qe-sozlesme-perde{ from{ opacity:0; } }
@media (prefers-reduced-motion:reduce){ .qe-sozlesme[open], .qe-sozlesme::backdrop{ animation:none; } }

/* ---- "Keşfetmeye devam edin" başlığı (25 Eyl) -------------------------------
   Burak: "keşfetmeye devam edin başlığı çok büyük ve imagelara yakın gibi duruyor."
   Bu raf bir YARDIMCI RAF: yukarıdaki "Yardımcı raflar" kuralı onu --qe-h-yardimci'ye
   (20px, telefonda 18px) indiriyordu, ama 19 Eyl'deki "Bölüm başlıkları italik" kuralı
   (.shopify-section h2:not(..):not(..) → 0,3,1) daha güçlü olduğu için 32px italiğe
   dönmüştü. Ölçü sepet rafındaki "Sepetinizi tamamlayın" ile aynı: düz Gambarino,
   yardımcı punto. Özgüllük 0,4,1 ki italik kuralı yenilsin. Başlık-kart arası 28px
   bölümün kendi stilinde (sections/qe-benzer.liquid). */
.shopify-section[id$="__qe_benzer"] .qe-benzer h2.qe-benzer__baslik{
  font-family:'Gambarino', Georgia, serif !important; font-style:normal !important;
  font-size:var(--qe-h-yardimci) !important; letter-spacing:0 !important; line-height:1.2;
}

/* 29 Eyl · Ana sayfa "Öne çıkanlar": arka planı kesilmiş ürün görselleri, 10 ürünlük kaydırmalı şerit.
   Görsel ürünün custom.seffaf_gorsel alanından; yalnız bu bölümün galeri bloğunda (qe_seffaf) açık. Zemin bölümün zemini. */
.card-gallery.qe-seffaf-galeri{ background:transparent; }
.qe-seffaf{
  aspect-ratio:var(--gallery-aspect-ratio, 4 / 5); width:100%;
  display:flex; align-items:flex-end; justify-content:center;
  padding:8% 10% 2%; box-sizing:border-box; background:transparent;
}
.qe-seffaf__img{ display:block; width:100%; height:calc(var(--qe-olcek, 1) * 100%); object-fit:contain; object-position:center bottom; }
/* Telefon: ölçek rafın en uzun ürününe göre (card-gallery'deki --qe-olcek-max); en uzun şişe kutuyu doldurur (29 Eyl). */
@media (max-width:749px){
  .qe-seffaf__img{ height:min(100%, calc(var(--qe-olcek, 1) / var(--qe-olcek-max, 1) * 100%)); }
}
/* Hover: şişe söner, ürün fotoğrafı kartı doldurur (card-gallery.liquid'deki not). Fotoğraf kutunun tamamını
   kaplıyor (dolgu dahil); dikey çekimler üstten hizalı ki kapak kırpılmasın. Yalnız gerçek hover olan
   cihazlarda; klavyeyle gelen de görsün diye focus-within da. */
.qe-seffaf--hover{ position:relative; overflow:hidden; }
.qe-seffaf__arka{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 0%;
  opacity:0; transition:opacity .35s ease; pointer-events:none; }
.qe-seffaf--hover .qe-seffaf__img{ transition:opacity .35s ease; }
.qe-seffaf__arka--sigdir{ object-fit:contain; object-position:50% 50%; }
@media (hover:hover){
  :is(product-card, .product-card, .card-gallery):hover .qe-seffaf--hover .qe-seffaf__arka{ opacity:1; }
  :is(product-card, .product-card, .card-gallery):hover .qe-seffaf--hover .qe-seffaf__img{ opacity:0; }
}
:is(product-card, .product-card):focus-within .qe-seffaf--hover .qe-seffaf__arka{ opacity:1; }
:is(product-card, .product-card):focus-within .qe-seffaf--hover .qe-seffaf__img{ opacity:0; }

/* ============================================================================
   29 Eyl · HABERLER — indeks (sections/qe-haberler) ve tek haber (sections/qe-haber-sayfa).
   Burak: "haberler sayfası aşırı kötü" + "fuarı anlattığın sayfa: sadece görsel ve video, düzen yok".
   Yeni parça icat edilmedi: indeks = tarif indeksinin başlığı + kılavuz kartı; haber sayfası = tarif
   sayfasının rozeti, künyesi, ürün kartı ve kılavuz kartı. Haberin kendine ait olanlar: dikey (4:5) görsel
   oranı, öne çıkan ilk haber, kapak + metin bloğu, tıklayınca büyüyen foto/video karoları.
   2. tur (Burak: "görseller çok büyük, hero çok büyük"): tarif bandı (tam genişlik, 580x600) ve 412x735'lik
   video ızgarası kaldırıldı; sayfa 1018'lik tek eksende, kapak 380, karolar ~194. */
.qe-haberler__liste{ list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:56px 40px; }
.qe-haberler__liste > .is-ilk{ grid-column:1 / -1; padding-bottom:56px; border-bottom:1px solid var(--qe-line,#E6E1DA); }
.qe-haberler .qe-kilavuz{ grid-template-columns:minmax(0,2fr) minmax(0,3fr); gap:24px; }
.qe-haberler .qe-kilavuz__gorsel{ aspect-ratio:4/5; }
.qe-haberler .qe-kilavuz__metin{ gap:10px; }
.qe-haberler .qe-kilavuz__ad{ font-size:var(--qe-h3,20px) !important; line-height:1.25; }
.qe-haberler .is-ilk .qe-kilavuz{ grid-template-columns:minmax(0,480px) minmax(0,1fr); gap:64px; }
.qe-haberler .is-ilk .qe-kilavuz__metin{ gap:16px; max-width:560px; }
.qe-haberler .is-ilk .qe-kilavuz__ad{ font-size:var(--qe-h2,32px) !important; line-height:1.15; }
.qe-haberler .is-ilk .qe-kilavuz__ozet{ font-size:16px; line-height:1.6; }
.qe-haberler__sayfa{ margin-top:48px; text-align:center; }

/* Tek haber — 3. tur (Burak: "daha havalı, premium, elegant, cool"; ölçüler BLOG-ARASTIRMA.md). Hero tam genişlik iki
   parça (krem panel + kapak, 560), gövde 680 sütun, H2 Gambarino, görseller 1040 içinde 2'li 4:5, video 9:16 + zümrüt kutu. */
.qe-hs{ --qe-hs-kenar:clamp(20px,3.4vw,48px); --qe-hs-cizgi:rgba(43,34,34,.15); --qe-hs-soluk:rgba(43,34,34,.62); }
.qe-hs__hero{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); height:min(560px, 76vh); min-height:440px;
  background:var(--qe-krem,#F5F3EC); }
.qe-hs__hero.is-gorselsiz{ grid-template-columns:1fr; height:auto; min-height:0; }
.qe-hs__panel{ display:flex; flex-direction:column; justify-content:flex-end; align-items:flex-start; gap:18px;
  padding:56px clamp(24px,5vw,80px) 52px; }
.qe-hs__etiket{ font-family:var(--qe-f-text); font-weight:500; font-size:12px; line-height:1; letter-spacing:.14em;
  text-transform:uppercase; color:var(--qe-gold,#9A7A33); text-decoration:none; }
.qe-hs .qe-hs__baslik{ margin:0 !important; max-width:13em; font-family:var(--font-heading--family) !important; font-weight:400 !important;
  font-size:clamp(34px,3.6vw,54px) !important; line-height:1.06 !important; letter-spacing:-.015em !important;
  text-transform:none !important; color:var(--qe-ink,#2B2222); }
.qe-hs__spot{ margin:0; max-width:32em; font-size:19px; line-height:1.5; color:var(--qe-ink,#2B2222); }
.qe-hs__kunye{ display:flex; flex-wrap:wrap; align-items:center; row-gap:6px; margin:4px 0 0 !important; font-size:13px;
  letter-spacing:.02em; color:var(--qe-hs-soluk); }
.qe-hs__kunye span + span::before{ content:""; display:inline-block; width:18px; height:1px; margin:0 10px;
  vertical-align:middle; background:currentColor; opacity:.5; }
.qe-hs__kapak{ margin:0; overflow:hidden; background:#E9E6E1; }
.qe-hs__kapak img{ display:block; width:100%; height:100%; object-fit:cover; object-position:50% 35%; }

.qe-hs__govde{ padding:72px var(--qe-hs-kenar) 0; }
.qe-hs__metin{ max-width:680px; margin:0 auto; }
.qe-hs__metin p{ margin:0 0 22px; font-size:18px; line-height:1.7; color:var(--qe-ink,#2B2222); }
.qe-hs__govde > .qe-hs__metin:first-child > p:first-child{ font-size:21px; line-height:1.55; }
.qe-hs .qe-hs__metin h2{ margin:64px 0 18px !important; font-family:var(--font-heading--family) !important; font-weight:400 !important;
  font-size:clamp(26px,2.4vw,34px) !important; line-height:1.15 !important; letter-spacing:-.01em !important;
  text-transform:none !important; color:var(--qe-ink,#2B2222); }
.qe-hs__metin ul, .qe-hs__metin ol{ margin:0 0 22px; padding-left:22px; }
.qe-hs__metin h3{ margin:32px 0 8px; font-family:var(--qe-f-text); font-weight:500; font-size:18px; line-height:1.4;
  letter-spacing:0; text-transform:none; color:var(--qe-ink,#2B2222); }
.qe-hs__metin table{ width:100%; margin:8px 0 28px; border-collapse:collapse; font-size:16px; line-height:1.45; }
.qe-hs__metin th, .qe-hs__metin td{ padding:12px 14px 12px 0; text-align:left; vertical-align:top; border-bottom:1px solid var(--qe-hs-cizgi); }
.qe-hs__metin thead th{ font-weight:500; font-size:13px; letter-spacing:.06em; text-transform:uppercase; color:var(--qe-hs-soluk);
  border-bottom-color:rgba(43,34,34,.35); }
.qe-hs__metin tbody th{ font-weight:500; width:34%; }
.qe-hs__kaynak{ margin-top:40px !important; padding-top:18px; border-top:1px solid var(--qe-hs-cizgi); }
.qe-hs__metin .qe-hs__kaynak small{ font-size:14px; line-height:1.6; color:var(--qe-hs-soluk); }
@media (max-width:749px){ .qe-hs__metin table{ font-size:15px; } .qe-hs__metin tbody th{ width:40%; } }
.qe-hs__metin li{ margin-bottom:8px; font-size:18px; line-height:1.65; }
/* mevsim yazılarındaki tarif listesi: çizgili satırlar, Gambarino ad, altın ok */
.qe-hs__metin ul.qe-tarif-liste{ list-style:none; margin:8px 0 22px; padding:0; border-top:1px solid var(--qe-hs-cizgi); }
.qe-hs__metin ul.qe-tarif-liste li{ margin:0; border-bottom:1px solid var(--qe-hs-cizgi); }
.qe-hs .qe-hs__metin ul.qe-tarif-liste a{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 0;
  font-family:var(--font-heading--family); font-size:22px; line-height:1.3; text-decoration:none; }
.qe-hs .qe-hs__metin ul.qe-tarif-liste a::after{ content:"\2192"; font-family:var(--qe-f-text); font-size:16px; color:var(--qe-gold,#9A7A33); }
.qe-hs .qe-hs__metin ul.qe-tarif-liste a:hover{ color:var(--qe-gold,#9A7A33); }
.qe-hs__metin a{ color:inherit; text-decoration:underline; text-decoration-color:var(--qe-gold,#9A7A33);
  text-decoration-thickness:1px; text-underline-offset:3px; }
.qe-hs__ikili{ display:grid; grid-template-columns:1fr 1fr; gap:24px; max-width:1040px; margin:56px auto; }
.qe-hs__foto{ margin:0; }
.qe-hs__buyut{ display:block; width:100%; aspect-ratio:4/5; padding:0; border:0; overflow:hidden; cursor:zoom-in; background:#E9E6E1; }
.qe-hs__buyut img{ display:block; width:100%; height:100%; object-fit:cover; transition:transform .6s ease; }
.qe-hs__buyut:hover img{ transform:scale(1.02); }
.qe-hs__buyut:focus-visible{ outline:2px solid var(--qe-ink,#2B2222); outline-offset:3px; }
.qe-hs__foto figcaption{ margin-top:12px; font-size:13px; line-height:1.45; color:var(--qe-hs-soluk); }
.qe-hs__video-blok{ display:grid; grid-template-columns:360px minmax(0,1fr); gap:40px; align-items:stretch;
  max-width:1040px; margin:56px auto; }
.qe-hs__video-blok.is-tek{ grid-template-columns:360px; justify-content:center; }
.qe-hs__video{ position:relative; aspect-ratio:9/16; overflow:hidden; background:#0A0200; }
.qe-hs__video video{ display:block; width:100%; height:100%; object-fit:cover; }
.qe-hs__ses{ position:absolute; right:12px; bottom:12px; width:40px; height:40px; padding:10px; border:0; border-radius:50%;
  background:rgba(10,2,0,.55); color:#fff; cursor:pointer; }
.qe-hs__ses svg{ display:block; width:100%; height:100%; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.qe-hs__ses .qe-hs__ses-acik{ display:none; }
.qe-hs__ses[aria-pressed="true"] .qe-hs__ses-acik{ display:inline; }
.qe-hs__ses[aria-pressed="true"] .qe-hs__ses-kapali{ display:none; }
.qe-hs__bilgi{ display:flex; flex-direction:column; justify-content:center; padding:44px; background:var(--qe-zumrut,#16301F); color:#F5F3EC; }
.qe-hs__govde > .qe-hs__bilgi{ max-width:680px; margin:48px auto; }
.qe-hs__bilgi-baslik{ margin:0 0 22px !important; font-family:var(--qe-f-text); font-weight:500; font-size:12px; line-height:1;
  letter-spacing:.14em; text-transform:uppercase; color:#C9AE72; }
.qe-hs__bilgi dl{ margin:0; }
.qe-hs__bilgi dl > div{ display:grid; grid-template-columns:128px minmax(0,1fr); gap:16px; padding:14px 0;
  border-top:1px solid rgba(245,243,236,.18); }
.qe-hs__bilgi dl > div:last-child{ border-bottom:1px solid rgba(245,243,236,.18); }
.qe-hs__bilgi dt{ padding-top:3px; font-size:14px; letter-spacing:.02em; color:rgba(245,243,236,.68); }
.qe-hs__bilgi dd{ margin:0; font-family:var(--font-heading--family); font-size:19px; line-height:1.35; }
.qe-hs__bag{ max-width:680px; margin:8px auto 0 !important; }
.qe-hs .qe-hs__bolum{ margin:0 0 28px !important; font-family:var(--font-heading--family) !important; font-weight:400 !important;
  font-size:clamp(26px,2.4vw,34px) !important; line-height:1.15 !important; letter-spacing:-.01em !important; text-transform:none !important; }
.qe-hs__urunler, .qe-hs__diger{ width:min(1040px, calc(100% - var(--qe-hs-kenar) * 2)); margin:104px auto 0;
  padding-top:64px; border-top:1px solid var(--qe-hs-cizgi); }
.qe-hs__diger{ margin-bottom:120px; }
.qe-hs__diger-bas{ display:flex; align-items:baseline; justify-content:space-between; gap:20px; }
.qe-hs__kartlar{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; }
.qe-hs__kart{ display:flex; flex-direction:column; gap:10px; text-decoration:none; color:var(--qe-ink,#2B2222); }
.qe-hs__kart-gorsel{ display:block; aspect-ratio:4/5; overflow:hidden; background:#E9E6E1; }
.qe-hs__kart-gorsel img{ display:block; width:100%; height:100%; object-fit:cover; transition:transform .6s ease; }
.qe-hs__kart:hover .qe-hs__kart-gorsel img{ transform:scale(1.02); }
.qe-hs__kart-ust{ margin-top:6px; font-family:var(--qe-f-text); font-weight:500; font-size:12px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--qe-gold,#9A7A33); }
.qe-hs__kart-ad{ font-family:var(--font-heading--family); font-size:22px; line-height:1.25; }

/* Fotoğraf penceresi (haber sayfası) */
.qe-habersayfa__pencere{ position:fixed; inset:0; width:100vw; height:100vh; max-width:none; max-height:none;
  margin:0; padding:0; border:0; background:transparent; }
.qe-habersayfa__pencere::backdrop{ background:rgba(10,2,0,.88); }
.qe-habersayfa__sahne{ position:absolute; inset:56px 76px; display:flex; align-items:center; justify-content:center; }
.qe-habersayfa__sahne img, .qe-habersayfa__sahne video{ display:block; max-width:100%; max-height:100%; object-fit:contain; }
.qe-habersayfa__kapat, .qe-habersayfa__ok{ position:absolute; width:44px; height:44px; padding:10px; border:0;
  background:transparent; color:#fff; cursor:pointer; }
.qe-habersayfa__kapat{ top:10px; right:12px; }
.qe-habersayfa__ok{ top:50%; transform:translateY(-50%); }
.qe-habersayfa__ok.is-geri{ left:16px; }
.qe-habersayfa__ok.is-ileri{ right:16px; }
.qe-habersayfa__kapat svg, .qe-habersayfa__ok svg{ width:100%; height:100%; fill:none; stroke:currentColor;
  stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }

.qe-habersayfa__urunler{ list-style:none; margin:0; padding:0;
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:34px 28px; }
.qe-habersayfa__urunler .qe-tarif-kart{ gap:8px; }
.qe-habersayfa__urunler > li{ display:flex; flex-direction:column; }
.qe-habersayfa__urunler .qe-satin-al{ width:100%; margin-top:14px; }
.qe-habersayfa__urungorsel{ background:var(--qe-krem,#F5F3EC); }
/* Şeffaf görselli üründe zemin YOK (29 Eyl, Burak: "arkaplan rengi gri kalmış, şeffaf olabilir").
   Şişeler ortak bir tabana oturuyor (alt hizalı), en uzunu kutunun üst dolgusuna kadar uzanıyor;
   ölçek Liquid'de sıranın en uzun ürününe göre hesaplanıyor. Üst/alt dolgu eşit: grup kutuda ortada. */
.qe-habersayfa__urungorsel.is-seffaf{ background:transparent; display:flex; align-items:flex-end; justify-content:center;
  padding:5% 8%; box-sizing:border-box; }
.qe-habersayfa__urungorsel.is-seffaf img{ width:100%; height:calc(var(--qe-olcek, 1) * 100%); object-fit:contain; object-position:center bottom; }
.qe-tarif-kart:hover .qe-habersayfa__urungorsel.is-seffaf img{ transform:translateY(-4px); }

@media (max-width:989px){
  .qe-haberler__liste{ grid-template-columns:1fr; gap:40px; }
  .qe-haberler__liste > .is-ilk{ padding-bottom:40px; }
  .qe-haberler .is-ilk .qe-kilavuz{ grid-template-columns:minmax(0,2fr) minmax(0,3fr); gap:32px; }
  .qe-habersayfa__urunler{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:26px 16px; }
}
@media (max-width:749px){
  .qe-haberler .is-ilk .qe-kilavuz{ grid-template-columns:1fr; gap:18px; }
  .qe-haberler .qe-kilavuz{ grid-template-columns:minmax(0,2fr) minmax(0,3fr); gap:16px; align-items:start; }
  .qe-habersayfa__sahne{ inset:60px 10px; }
  .qe-habersayfa__ok{ top:auto; bottom:8px; transform:none; }
}
@media (max-width:989px){
  .qe-hs__hero{ height:min(480px, 70vh); min-height:400px; }
  .qe-hs__kartlar{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .qe-hs__kartlar > li:nth-child(3){ display:none; }
}
@media (max-width:749px){
  .qe-hs__hero{ grid-template-columns:1fr; height:auto; min-height:0; }
  .qe-hs__kapak{ order:-1; aspect-ratio:4/5; max-height:72vh; }
  .qe-hs__panel{ padding:28px 20px 34px; gap:14px; }
  .qe-hs__spot{ font-size:17px; }
  .qe-hs__govde{ padding-top:44px; }
  .qe-hs__metin p{ font-size:17px; line-height:1.65; }
  .qe-hs__govde > .qe-hs__metin:first-child > p:first-child{ font-size:19px; }
  .qe-hs .qe-hs__metin h2{ margin-top:48px !important; }
  .qe-hs__ikili{ gap:10px; margin:36px auto; }
  .qe-hs__video-blok, .qe-hs__video-blok.is-tek{ grid-template-columns:1fr; gap:20px; margin:36px auto; }
  .qe-hs__video{ width:min(320px, 100%); margin:0 auto; }
  .qe-hs__bilgi{ padding:28px 22px; }
  .qe-hs__bilgi dl > div{ grid-template-columns:104px minmax(0,1fr); gap:12px; }
  .qe-hs__bilgi dd{ font-size:17px; }
  .qe-hs__urunler, .qe-hs__diger{ margin-top:64px; padding-top:44px; }
  .qe-hs__diger{ margin-bottom:72px; }
  .qe-hs__kart-ad{ font-size:18px; }
}

/* ============================================================================
   29 Eyl · Tarif sayfası hero — 3. tur: haber/rehber sayfasıyla aynı dil (Burak: "blog sayfalarını genel olarak
   geliştirmemiz lazım"). Tam genişlik iki parça: solda krem panel (altın etiket = mevsim bağlantısı, Gambarino 54 başlık,
   künye çizgili), sağda görsel cover; 560. Görselsiz tarif tek sütun. Tarif gövdesi (malzeme/hazırlanış) aynı kaldı. */
.qe-tarifsayfa .qe-tarifsayfa__bant{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0; align-items:stretch; padding:0;
  height:min(560px, 76vh); min-height:440px; background:var(--qe-krem,#F5F3EC); }
.qe-tarifsayfa .qe-tarifsayfa__gorsel{ order:2; max-width:none; width:100%; height:100%; margin:0; aspect-ratio:auto; background:#E9E6E1; }
.qe-tarifsayfa .qe-tarifsayfa__gorsel img{ object-position:50% 45%; }
.qe-tarifsayfa .qe-tarifsayfa__yazi{ order:1; max-width:none; justify-content:flex-end; gap:18px;
  padding:56px clamp(24px,5vw,80px) 52px; }
.qe-tarifsayfa .qe-tarifsayfa__rozet{ min-height:0; padding:0; border:0; font-size:12px; letter-spacing:.14em;
  color:var(--qe-gold,#9A7A33); }
.qe-tarifsayfa .qe-tarifsayfa__bant h1{ max-width:13em; font-size:clamp(34px,3.6vw,54px) !important; line-height:1.06 !important;
  letter-spacing:-.015em !important; }
.qe-tarifsayfa .qe-tarifsayfa__kunye{ gap:0; row-gap:6px; font-size:13px; color:rgba(43,34,34,.62); }
.qe-tarifsayfa .qe-tarifsayfa__kunye span + span::before{ content:""; display:inline-block; width:18px; height:1px; margin:0 10px;
  vertical-align:middle; background:currentColor; opacity:.5; }
.qe-tarifsayfa__bant:has(.qe-tarifsayfa__gorsel.is-bos){ grid-template-columns:1fr; height:auto; min-height:0; }
.qe-tarifsayfa .qe-tarifsayfa__bant .qe-tarifsayfa__gorsel.is-bos{ display:none; }
@media (max-width:989px){ .qe-tarifsayfa .qe-tarifsayfa__bant{ height:min(480px, 70vh); min-height:400px; } }
@media (max-width:749px){
  .qe-tarifsayfa .qe-tarifsayfa__bant{ grid-template-columns:1fr; height:auto; min-height:0; }
  .qe-tarifsayfa .qe-tarifsayfa__gorsel{ order:-1; height:auto; aspect-ratio:4/5; max-height:72vh; }
  .qe-tarifsayfa .qe-tarifsayfa__yazi{ padding:28px 20px 34px; gap:14px; }
  .qe-tarifsayfa .qe-tarifsayfa__rozet{ min-height:44px; font-size:14px; }
}

/* ---- MEGA MENÜ · EKRAN BOYUNA UYUM (1 Eki, Burak: "menü farklı ekranlarda kayıyor, tüm boyutlarda düzgün olsun") ----
   Ölçüm (canlı, 1000–2560 px, her başlık + her alt bağlantı): üst başlıklar kaymıyor, görseller yükleniyor. Bozuk olan:
   (1) 1440 üstünde .menu-list__submenu-inner max-width:1440 ve ortalı → içerik header'dan kopuyordu
       (bağlantılar 1920'de x=240, 2560'ta x=560; menü başlıkları x=30). Sınır kalktı, içerik her genişlikte x=48.
   (2) 1000–1419 px arası üç kart 198–274 px'e iniyordu, başlık ve alt satır kesiliyordu ("Zeytinyağı tabağı, taze ekmek ve…",
       "Bir gölün kıyısındaki baş…"). Bu aralıkta iki kart (302–420 px), kesik yok (ölçüldü).
   (3) Geniş ekranda kart alanı en fazla 1200 px ve sağa yaslı: 2560'ta 540 px'lik kartlar fotoğrafı fazla yatay kırpıyordu. */
@media (min-width:1441px){
  .header .qe-panel .menu-list__submenu-inner{ max-width:none !important; margin-inline:0 !important; }
  .header .mega-menu__grid > .qe-mega-kartlar{ width:100%; max-width:1200px; justify-self:end; }
}
@media (max-width:1419px){
  .qe-mega-grup{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  .qe-mega-grup > .qe-mega-kart:nth-child(n+3){ display:none !important; }
}

/* ---- 1 Eki · Burak: "Hediye menüsü kötü görünüyor (tek yazı, iki kart, sağı boş)" + "görsellerin arkasındaki krem rengi beğenmiyorum".
   (1) Kart sayısına göre ızgara: grupta 2 kart varsa iki sütun, alanı dolduruyor; boş üçüncü yer kalmıyor.
   (2) Kartın krem zemini kalktı (görsel ve alt şerit), kart panel zeminine oturuyor; yazı görselin kenarıyla hizalı.
   (3) Elle kart listesinde "sigdir": dikey kutu fotoğrafı kırpılmadan sığar, beyaz fotoğraf zemini panel zeminine karışır. */
/* 1 Eki (2. tur) · Burak: "görseller kocaman yazılar küçücük, orantısız". İki kartlı grup sütunu ikiye
   bölünce kart 600px'e çıkıyordu. Artık ızgara hep aynı: kartlar Mağaza'dakiyle aynı boyda, sağa yaslı. */
@media (min-width:1420px){
  .qe-mega-grup:has(> .qe-mega-kart:nth-child(2):last-child) > .qe-mega-kart:first-child{ grid-column:2; }
  .qe-mega-grup:has(> .qe-mega-kart:only-child) > .qe-mega-kart{ grid-column:3; } }
@media (max-width:1419px){ .qe-mega-grup:has(> .qe-mega-kart:only-child) > .qe-mega-kart{ grid-column:2; } }
.qe-mega-kart__bag{ background:transparent !important; }
.qe-mega-kart__alt{ padding-inline:0 !important; }
.qe-mega-kart__gorsel--sigdir img{ object-fit:contain !important; mix-blend-mode:multiply; }

/* Zemin kalkınca kartlar arası 10px yetmedi: bir kartın oku/fiyatı yandaki kartın başlığına yapışık görünüyordu. */
.qe-mega-grup{ column-gap:28px !important; }

/* Mağaza kartı: ad solda, fiyat en sağda kalınca arada büyük boşluk oluyordu (1 Eki, Burak).
   Ad ve fiyat alt alta, ortalı. Şerit sabit 84px: bir satır ad + fiyat; görseller aynı boyda kalsın diye. */
.qe-panel--kart .qe-mega-kart__alt:has(.qe-mega-kart__fiyat){ flex-direction:column; justify-content:center; align-items:center;
  gap:4px; height:84px !important; padding:12px 0 !important; text-align:center; }
.qe-panel--kart .qe-mega-kart__alt:has(.qe-mega-kart__fiyat) .qe-mega-kart__ad{ -webkit-line-clamp:1 !important; max-width:100%; }
.qe-panel--kart .qe-mega-kart__fiyat{ font-size:14px !important; }

/* SETİNİ OLUŞTUR PANELİ (1 Eki, 2. tur) · solda 1-2-3 adım, sağda altı küçük ürün + "Sete ekle", altta mini "Setiniz"
   tepsisi. Set sayfasıyla aynı değil: kademe, toplam, bütün ürünler yalnız sayfada (qe-mega-set.liquid başı). */
.qe-set-panel{ display:flex; flex-direction:column; gap:22px; max-width:330px; white-space:normal; padding-top:4px; }
.qe-set-panel__baslik{ margin:0; font-family:var(--font-heading--family); font-size:26px; line-height:1.2; color:var(--qe-ink,#2B2222); }
.qe-set-panel__adimlar{ margin:0; padding:0; list-style:none; counter-reset:qe-adim; display:grid; gap:18px; }
.qe-set-panel__adimlar li{ counter-increment:qe-adim; display:grid; grid-template-columns:28px 1fr; column-gap:10px; row-gap:2px; }
.qe-set-panel__adimlar li::before{ content:counter(qe-adim); grid-row:1 / span 2; font-family:var(--font-heading--family);
  font-size:24px; line-height:1; color:var(--qe-mute,#6E6560); }
.qe-set-panel__adimlar b{ font-family:var(--font-body--family); font-weight:500; font-size:15px; color:var(--qe-ink,#2B2222); }
.qe-set-panel__adimlar span{ font-family:var(--font-body--family); font-size:14px; line-height:1.45; color:var(--qe-mute,#6E6560); }
.qe-set-hizli{ display:flex !important; flex-direction:column; gap:20px; white-space:normal; }
.qe-set-hizli__liste{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; }
@media (max-width:1419px){ .qe-set-hizli__liste{ grid-template-columns:repeat(4,minmax(0,1fr)); }
  .qe-set-hizli__urun:nth-child(n+5){ display:none !important; } }
/* 1 Eki · Burak: "görseller sola yaslanmış, çerçeve olmasın". Tema menü bağlantılarına display:block veriyor, flex
   ortalaması düşüyordu (ölçüldü: görsel kutunun x=0'ında) → !important. Kart çerçevesi kaldırıldı. */
.qe-set-hizli__urun{ display:flex; flex-direction:column; align-items:center; text-align:center; gap:3px; padding:0 4px; }
.qe-set-hizli__gorsel{ display:flex !important; align-items:flex-end; justify-content:center; width:100%; height:128px; margin-bottom:12px; }
.qe-set-hizli__urun:hover .qe-set-hizli__gorsel img{ transform:translateY(-3px); }
.qe-set-hizli__gorsel img{ transition:transform .25s ease; }
.qe-set-hizli__gorsel img{ height:calc(var(--qe-olcek,1) * 100%); width:auto; max-width:100%; object-fit:contain; display:block; }
.qe-set-hizli__ad{ font-family:var(--font-heading--family); font-size:15px; line-height:1.25; color:var(--qe-ink,#2B2222); }
.qe-set-hizli__fiyat{ font-family:var(--font-body--family); font-size:13px; color:var(--qe-mute,#6E6560); font-variant-numeric:tabular-nums; }
.qe-set-hizli__ekle{ margin-top:10px; width:100%; height:34px; padding:0 6px; cursor:pointer; border:1px solid var(--qe-ink,#2B2222);
  border-radius:var(--qe-dugme-kose,2px); background:transparent; color:var(--qe-ink,#2B2222);
  font-family:var(--font-body--family); font-size:13px; transition:background-color .18s ease, color .18s ease, border-color .18s ease; }
.qe-set-hizli__ekle:hover, .qe-set-hizli__ekle.is-eklendi{ background:var(--qe-zumrut,#16301F); border-color:var(--qe-zumrut,#16301F); color:var(--qe-krem,#F5F3EC); }
.qe-set-hizli__tepsi{ display:flex; align-items:center; gap:16px; padding-top:16px; border-top:1px solid rgba(43,34,34,.10); }
.qe-set-hizli__etiket{ font-family:var(--font-heading--family); font-size:18px; color:var(--qe-ink,#2B2222); }
.qe-set-hizli__slotlar{ display:flex; gap:8px; list-style:none; margin:0; padding:0; }
.qe-set-hizli__slot{ position:relative; width:44px; height:44px; border:1px dashed rgba(43,34,34,.28); background:#fff; }
.qe-set-hizli__slot.is-dolu{ border-style:solid; border-color:rgba(43,34,34,.18); }
.qe-set-hizli__slot img{ width:100%; height:100%; object-fit:contain; display:block; }
.qe-set-hizli__cikar{ position:absolute; top:-8px; right:-8px; width:18px; height:18px; padding:0; border:0; border-radius:50%;
  cursor:pointer; background:var(--qe-ink,#2B2222); color:#fff; font-size:12px; line-height:18px; text-align:center; }
.qe-set-hizli__durum{ font-family:var(--font-body--family); font-size:14px; color:var(--qe-mute,#6E6560); }
.qe-set-hizli__devam{ margin-left:auto; }

/* 1 Eki · Hediye setleri grubunda iki ürün kartı (ortalı, fiyatlı) + "Kendi setinizi oluşturun" kartı (sola yaslı, oklu)
   yan yana farklı duruyordu. Fiyatlı kart içeren grupta bütün kartların alt şeridi aynı: ortalı, ok yok. */
.qe-panel--kart .qe-mega-grup:has(.qe-mega-kart__fiyat) .qe-mega-kart__alt{ flex-direction:column; justify-content:center;
  align-items:center; gap:4px; height:84px !important; padding:12px 0 !important; text-align:center; }
.qe-panel--kart .qe-mega-grup:has(.qe-mega-kart__fiyat) .qe-mega-kart__metin{ align-items:center; }
.qe-panel--kart .qe-mega-grup:has(.qe-mega-kart__fiyat) .qe-mega-kart__ok{ display:none; }
.qe-panel--kart .qe-mega-grup:has(.qe-mega-kart__fiyat) .qe-mega-kart__not{ font-size:14px; letter-spacing:0; }


/* 2 Eki · review: "footer alt kısmı (ödeme ikonlarının altı) mobilde gereksiz uzun". Önce dört öge (künye,
   Şartlar ve Politikalar, Çerez tercihleri, Instagram) alt alta, aralarında 24px boşluk + 44px dokunma alanıyla
   ~260px tutuyordu. Mobilde iki satır: üstte bağlantılar + Instagram yan yana, altta küçük künye.
   Dokunma alanı 44px korunuyor; yalnız dikey yığılma kalktı. "Shopify tarafından desteklenmektedir" de kapatıldı
   (footer-group.json show_powered_by). */
@media (max-width: 749px){
  .footer-utilities .utilities{ flex-direction:row !important; flex-wrap:wrap; justify-content:center;
    align-items:center; column-gap:20px !important; row-gap:2px !important; }
  .footer-utilities .utilities > anchored-popover-component{ order:1; }
  .footer-utilities .utilities > .qe-cerez-tercih{ order:2; min-height:44px; }
  .footer-utilities .utilities > .social-icons__wrapper{ order:3; }
  .footer-utilities .utilities > .footer-utilities__group-copyright{ order:4; flex-basis:100%; text-align:center; }
  .footer-utilities .utilities > .footer-utilities__group-copyright a{ min-height:32px; }
  .footer-utilities{ padding-top:16px !important; }
}

/* 2 Eki · review: "mobilde textler küçük kalmış, bir tık büyültülebilir". Mobilde (390px) ölçüldü:
   okuma metni 14.5-15px, yardımcı satırlar 13-14px, üst etiketler 12-12.5px idi. Hepsi ~1px büyütüldü:
   okuma metni 16px, yardımcılar 15px, küçük etiketler 13-14.5px. Masaüstüne dokunulmadı. */
@media (max-width: 749px){
  .qe-akordiyon__metin, .qe-akordiyon__metin p, .qe-akordiyon__liste, .qe-akordiyon__liste li,
  .qe-anlar__satir, .qe-anlar__giris, .qe-sss__madde summary, .qe-sss__madde > div, .qe-bilgi__maddeler, .qe-bilgi__maddeler li,
  .qe-kolkapanis__aciklama, .qe-kolkapanis__aciklama p, .qe-kolkapanis__metin, .qe-kolgiris__metin, .qe-kol__giris,
  .qe-kapsul__yazi, .qe-bant__yazi, .qe-sizden__giris,
  .qe-hikaye__kart-yazi, .qe-hikaye__zaman, .qe-hikaye__zaman span, .qe-hikaye__not, .qe-hikaye__alt{ font-size:16px !important; }
  .qe-secenek__not, .qe-secenek__fark, .qe-hediye__metin, .qe-gozat__alt, .qe-birlikte__alt, .qe-kars__tablo td,
  .qe-kol__yol, .qe-tarif__cta, .qe-kolkapanis__yol, .qe-belgeler__ad, .qe-akordiyon__kaynak{ font-size:15px !important; }
  .qe-akordiyon summary{ font-size:17px !important; }
  .qe-urun__guven{ font-size:14.5px !important; }
  .qe-kullanim__ad, .qe-kardes__boy, .qe-belgeler__alt, .qe-hasat__oge, .qe-hikaye__figur, .qe-belgeler__bas{ font-size:14px !important; }
  .qe-hasat__not, .qe-krem__oduller, .qe-krem__oduller span{ font-size:13.5px !important; }
  .qe-hero__etiket, .qe-kapsul__ust, .qe-sizden__ust, .qe-anlar__ust, .qe-yorum__ust, .qe-kars__tablo th,
  .qe-kol__ust, .qe-tarif__ust, .qe-tarif__rozet{ font-size:13px !important; }
}
