/* ============================================================
   tema.css — Kare Menü | Müşteri menüsü kart sistemi
   Eki 2026 — 7 kart şablonu + köşe stili (sharp/rounded) ayarı.

   YÜKLEME SIRASI ÖNEMLİ: Bu dosya critical_min.css ve
   deferred_min.css'ten SONRA, index.php'nin </head>'ine hemen
   önce bağlanmalı. O iki dosyadaki eski .product-row--classic /
   .mcard--* kuralları silinmedi (43KB'lık minified dosyaları
   ameliyat gibi kesmek riskli) — bunun yerine bu dosya SIRA
   ÖNCELİĞİYLE üzerlerine yazıyor. Aynı özgüllükte (specificity)
   olduğundan, sonra yüklenen kazanır; gerekli yerlerde ekstra
   güvenlik için !important kullanıldı (yorumlarda belirtildi).

   Köşe stili: index.php, businesses.card_corner_style'a göre
   <head> içine şunu basar:
     <style>:root{--card-r:0px;}</style>   (sharp — varsayılan)
     <style>:root{--card-r:16px;}</style>  (rounded)
   Bu dosyadaki her şablon var(--card-r, 0px) kullanır.
   ============================================================ */

:root{ --card-r:0px; }

/* ── Kart min-genişlikleri — 4 ekran aralığı için AYRI AYRI
   tanımlı: 0-480px, 480-900px, 900-1200px, 1200px+. Aralık
   sıklaştıkça kart genişliği aynı aralık içinde daha az değişiyor
   (sadece min var; neden max yok, aşağıda açıklanıyor).

   auto-fit → auto-fill'e GEÇİLDİ. auto-fit boş sütunları eritip
   kalan tek karta TÜM boşluğu veriyordu (bu yüzden elle bir max
   px sınırı eklemek gerekmişti — bu da hem fazladan bir ayar
   yükü hem de üstteki dolu satırlarla BİREBİR eşleşmeyen,
   gelişigüzel bir genişlik anlamına geliyordu). auto-fill ise
   boş sütunları eritmiyor — dolu/boş fark etmeksizin TÜM
   sütunlara eşit (1fr) pay veriyor. Sonuç: az ürünlü bir satırda
   kalan kart(lar), üstteki dolu satırdaki kartlarla MATEMATİKSEL
   olarak birebir aynı genişlikte oluyor; yanlarındaki boşluk da
   sadece "eksik kart sayısı kadar" görünmez bir alan — ne devasa
   büyüme var ne elle ayarlanmış, rastgele duran bir max sınırı.
   Bu yüzden artık --card-max-* değişkenlerine gerek kalmadı. ── */
:root{
  --card-min-sadesik:220px;
  --card-min-hizli:140px;
  --card-min-afis:180px;
  --card-min-classic:300px;
  --card-min-vitrin:190px;
  --card-min-noktali:320px;
  --card-min-noktalisiz:320px;
}
@media (min-width:480px){
  :root{
    --card-min-sadesik:240px;
    --card-min-hizli:170px;
    --card-min-afis:210px;
    --card-min-classic:320px;
    --card-min-vitrin:200px;
    --card-min-noktali:340px;
    --card-min-noktalisiz:340px;
  }
}
@media (min-width:900px){
  :root{
    --card-min-sadesik:260px;
    --card-min-hizli:200px;
    --card-min-afis:230px;
    --card-min-classic:340px;
    --card-min-vitrin:210px;
    --card-min-noktali:360px;
    --card-min-noktalisiz:360px;
  }
}
@media (min-width:1200px){
  :root{
    --card-min-sadesik:380px;
    --card-min-hizli:220px;
    --card-min-afis:260px;
    --card-min-classic:380px;
    --card-min-vitrin:220px;
    --card-min-noktali:380px;
    --card-min-noktalisiz:380px;
  }
}

/* ── Yeni 3 şablonun (Sade Şık/Hızlı Servis/Afiş) konteyner grid'i
   — kritik/deferred'de hiç tanımlı değildi. ── */
.product-list--sadesik{display:grid; gap:16px; grid-template-columns:repeat(auto-fill, minmax(var(--card-min-sadesik), 1fr));}
.product-list--hizli{display:grid; gap:16px; grid-template-columns:repeat(auto-fill, minmax(var(--card-min-hizli), 1fr));}
.product-list--afis{display:grid; gap:16px; grid-template-columns:repeat(auto-fill, minmax(var(--card-min-afis), 1fr));}

/* ════════════════════════════════════════════════════════════
   TÜM ŞABLONLARIN SÜTUN KONTROLÜ — TEK MERKEZ: tema.css
   -------------------------------------------------------------
   Klasik, Vitrin, Yatay Mini Fotoğraflı ve Fotoğrafsız şablonlarının
   sütun sayısı/min-genişlik tanımları critical.min.css ve
   deferred.min.css içinde SABİT sütun sayısıyla (repeat(N,1fr))
   kodluydu — o dosyalara dokunulmadı (43KB'lık minified dosyaları
   ameliyat gibi kesmek riskli, deferred.min.css'teki yorum da
   zaten bunu söylüyor).

   Bunun yerine: tema.css <head>'e EN SON ekleniyor (index.php'deki
   "tema.css EN SONDA" yorumu), bu yüzden aynı özgüllükteki
   (.product-list--vitrin gibi tek sınıf) bir seçici burada tekrar
   tanımlanınca CSS kademesi gereği SON yüklenen kazanır — eski
   dosyalardaki breakpoint'li repeat(N,1fr) kuralları (media query
   içinde olsalar bile, media query özgüllüğe katkı yapmaz)
   geçersiz kalır. Böylece 7 şablonun TAMAMI artık tek dosyadan
   (burada, yukarıdaki 4 aralıklı min/max tablosundan) yönetiliyor;
   yeni bir şablon eklenirken veya mevcut birinin sütun davranışı
   değiştirilirken yalnızca bu dosyaya bakmak yeterli.
   ════════════════════════════════════════════════════════════ */
.product-list--classic{grid-template-columns:repeat(auto-fill, minmax(var(--card-min-classic), 1fr)) !important;}
.product-list--vitrin{grid-template-columns:repeat(auto-fill, minmax(var(--card-min-vitrin), 1fr)) !important;}
.product-list--noktali{grid-template-columns:repeat(auto-fill, minmax(var(--card-min-noktali), 1fr)) !important;}
.product-list--noktalisiz{grid-template-columns:repeat(auto-fill, minmax(var(--card-min-noktalisiz), 1fr)) !important;}

/* NOT — !important bilerek kullanıldı: deferred.min.css'teki
   .product-list--vitrin/noktali/noktalisiz kuralları KENDİ
   media query'leri içinde tanımlı (örn. @media(max-width:550px)).
   Normalde "son yüklenen kazanır" kuralı bunu zaten çözerdi, ama
   ekranı daraltıp genişletirken geçiş anlarında iki kuralın aynı
   anda eşleşmesi ve tarayıcı önbelleğe alma farkları riskini
   sıfırlamak için !important eklendi — vitrin/noktali/noktalisiz
   için her koşulda bu dosyanın kazanmasını garanti eder. Klasik
   için aynı risk yok (.product-list tek breakpoint'siz kural),
   ama tutarlılık için o da aynı şekilde yazıldı.
   Yeni bir şablon eklerken aynı deseni izleyin: yukarıdaki 4
   aralığa --card-min-<ad> ve --card-max-<ad> değişkenlerini
   ekleyin, .product-list--<ad> için tek satırlık auto-fit/minmax
   kuralını buraya ekleyin. */

/* ── Ortak: tüm şablonlarda aynı görünen uyum rozetleri ──
   1. seviye (kalori + alerjen): büyük/belirgin.
   2. seviye (süre + gram): küçük/soluk.
   Gerçek PHP tarafı bu sınıf adlarını zaten kısmen kullanıyordu
   (meta-badge-kcal/meta-badge-sure/meta-badge-gram, Klasik'te) —
   aynı adları tüm şablonlara yayıyoruz, yeni olan sadece
   meta-badge-alerjen. */
.meta-badges{display:flex; flex-wrap:wrap; align-items:center; gap:4px;}
.meta-badge{display:inline-flex; align-items:center; gap:4px; border-radius:var(--card-r, 20px); white-space:wrap;line-height: 16px;}
.meta-badge-kcal{font-size:10px; font-weight:600; padding:3px 4px; background:#FFF1E8; color:#E8590C;}
.meta-badge-alerjen{font-size:11px; font-weight:600; padding:3px 4px; background:#FDE8EC; color:#B91C1C;}
.meta-badge-none{font-size:11px; font-weight:600; padding:3px 4px; background:#F3F3F6; color:#8A8A95;}
.meta-badge-sure{font-size:10px; font-weight:600; padding:3px 4px; background:#F1F1F4; color:#9A9AA6;}
.meta-badge-gram{font-size:10px; font-weight:600; padding:3px 4px; background:#F1F1F4; color:#9A9AA6;}

/* Köşe alerjen rozeti — Klasik, Hızlı Servis, Afiş (alg_corner_badge()
   index.php'de üretiyor). Görselden bağımsız, karta bindirilir;
   .mcard--hizli/.mcard--afis ve .product-row--classic zaten
   position:relative.
   RTL DÜZELTMESİ (Eki 2026): fiziksel "right" yerine mantıksal
   "inset-inline-end" kullanılıyor — sayfa Arapça gibi RTL dile
   geçtiğinde (<html dir="rtl">) rozet otomatik olarak kartın SOL
   üst köşesine kayar, ürün adının üstüne biniş yapmaz. */
.tc-alg-badge{position:absolute; top:6px; inset-inline-end:6px; z-index:2; background:#c62f47; color:#fff; font-size:10.5px; font-weight:600; padding:4px 7px; display:inline-flex; align-items:center; gap:3px; white-space:nowrap; border-radius:0;}
.tc-alg-badge svg{flex:none;}


/* ════════════════════════════════════════════════════════════
   1) KLASİK — mevcut .product-row--classic / .hmeta / .hmedia
   Sadece köşe stili + yeni alerjen rozetinin yerleşimi eklendi.
   ════════════════════════════════════════════════════════════ */
.product-row--classic{ border-radius:var(--card-r, 14px) !important; gap:0px}
.hmedia, .hmedia img{ border-radius:var(--card-r, 14px) !important; }
.select-btn{ border-radius:var(--card-r, 10px) !important; }

/* ════════════════════════════════════════════════════════════
   2) VİTRİN — .mcard--vitrin (köşe stili + rozet satırı eklendi,
   gövde yapısı aynı kalıyor)
   ════════════════════════════════════════════════════════════ */
.mcard--vitrin{ border-radius:var(--card-r, 16px) !important; }
.mcard--vitrin .mcard__media{ border-radius:calc(var(--card-r, 16px) * 0.6) calc(var(--card-r, 16px) * 0.6) 0 0 !important; }

/* ════════════════════════════════════════════════════════════
   3) YATAY MİNİ FOTOĞRAFLI — eski adı "Noktalı", .mcard--noktali
   ════════════════════════════════════════════════════════════ */
.mcard--noktali{ border-radius:var(--card-r, 14px) !important; padding-right:6px !important; }
.mcard--noktali .mcard__media{ border-radius:calc(var(--card-r, 14px) * 0.65) !important; }
.mcard--noktali .mcard__desc{font-size:12px; color:#9a9aa6; overflow:hidden; text-overflow:ellipsis; padding-right:34px;}
.mcard--noktali .meta-badges{margin-top:1px; padding-right:32px;}

/* ════════════════════════════════════════════════════════════
   4) YATAY MİNİ FOTOĞRAFSIZ — eski adı "Noktalısız", .mcard--noktalisiz
   Sepete ekle butonu eksikti — eklendi.
   ════════════════════════════════════════════════════════════ */
.mcard--noktalisiz{ border-radius:var(--card-r, 10px) !important; padding-right:6px !important; position:relative; }
.mcard--noktalisiz .mcard__desc{font-size:12px; color:#000; overflow:hidden; text-overflow:ellipsis; padding-right:34px;}
.mcard--noktalisiz .meta-badges{margin-top:1px; padding-right:34px;}

/* ════════════════════════════════════════════════════════════
   5) SADE ŞIK — fine-dining, EB Garamond, çerçevesiz kart,
   krem arka plan. button.product-row (index.php satır-içi reset)
   ve .product-row (critical.min.css) temel kuralları aynı
   elemente bindiği için, özgüllüğü kesin yenecek
   ".product-row.mcard--sadesik" (iki sınıf) seçicisi kullanıldı —
   sadece ".mcard--sadesik" (tek sınıf), "button.product-row"
   (eleman+sınıf) tarafından eziliyordu.
   ════════════════════════════════════════════════════════════ */
.product-list--sadesik{
  background:#faf8f4;
  padding:16px 12px 24px;
  border-radius:4px;
}

.product-row.mcard--sadesik{
  background:transparent;
  border:none;
  border-bottom:1px solid #e4ddd0;
  border-radius:0;
  padding:16px 4px !important;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:8px;
  min-height:0 !important;
  position:relative;
  cursor:default !important; /* modal kapalı (bu temada sepet/varyant yok), tıklanabilir görünmesin */
}
.product-list--sadesik .mcard--sadesik:last-child{ border-bottom:none; }

.mcard--sadesik .mcard__row{display:flex; align-items:baseline; gap:10px;}
.mcard--sadesik .mcard__name{font-family:'EB Garamond',Georgia,serif; font-weight:600; font-size:19px; color:#241c15; line-height:1.3;}
.mcard--sadesik .mcard__dots{flex:1; border-bottom:1px dotted #c7b696; transform:translateY(-3px);}
.mcard--sadesik .mcard__price{font-family:'EB Garamond',Georgia,serif; font-weight:600; font-size:17px; color:#b8375a; flex-shrink:0;}
.mcard--sadesik .mcard__desc{font-family:'EB Garamond',Georgia,serif; font-size:14px; font-style:italic; color:#8a7c68; line-height:1.5;}

/* Rozet satırı: alerjen kendi satırında (varsa), kcal/süre/gram
   ayrı bir satırda. Alerjen badge'i flex-basis:100% ile zorla
   satır başı yapıyoruz — HTML sırası zaten alerjen > kcal > süre >
   gram olduğu için ek markup değişikliği gerekmiyor. İkon YOK
   (sadesik ikonsuz tasarım), SVG'ler gizleniyor. */
.mcard--sadesik .meta-badges{display:flex; flex-wrap:wrap; align-items:center; row-gap:4px;}
.mcard--sadesik .meta-badge{
  background:none !important;
  padding:0 !important;
  font-family:'EB Garamond',Georgia,serif;
  font-style:italic;
  font-weight:500;
  font-size:13px;
  color:#a8977e !important;
}
.mcard--sadesik .meta-badge svg{ display:none; }
.mcard--sadesik .meta-badge::after{content:'·'; margin:0 7px; font-style:normal;}
.mcard--sadesik .meta-badge:last-child::after{content:''; margin:0;}

.mcard--sadesik .meta-badge-alerjen{
  flex:0 0 100%;
  color:#b8375a !important;
  opacity:.9;
}
.mcard--sadesik .meta-badge-alerjen::after{content:''; margin:0;} /* alerjen kendi satırında yalnız, sonunda nokta olmasın */

/* Sepete ekle butonu — critical.min.css'teki beyaz kare + pembe
   ikon varsayılanını (.select-btn) tamamen eziyoruz. Çoğu işletme
   bu temada sipariş sistemini kapalı (no-ordering) kullanacak —
   .no-ordering .select-btn{display:none!important} zaten global
   olarak devrede, ekstra bir şey yapmaya gerek yok. */
.product-row.mcard--sadesik .select-btn{
  position:absolute;
  bottom:0px;
  right:0px;
  top:auto;
  left:auto;
  width:30px;
  height:30px;
  border-radius:50%;
  background:#b8375a;
  color:#fff;
  box-shadow:none;
  display:flex;
  align-items:center;
  justify-content:center;
}
.product-row.mcard--sadesik .select-btn.active{ background:#8a2743; }

@media (max-width:480px){
  .product-row.mcard--sadesik{padding:14px 4px !important;}
}

/* ── Sayfa geneli: body ve alg-bar (alerjen filtre/sıralama çubuğu)
   kart listesinin dışında, index.php'nin kendi satır-içi CSS'inde
   sabit #fafafa olarak tanımlı. Bu tema seçiliyken onlarla aynı
   krem tonuna (#faf8f4) çekiyoruz ki sayfa tek parça görünsün.
   index.php artık <body> etiketine "tema-<cardTemplate>" class'ı
   ekliyor (aynı $bodyClasses mekanizması, no-ordering/pdf-export
   ile birlikte), bu yüzden burada sadece bu temaya özel
   hedefleyebiliyoruz. ── */
body.tema-sadesik{
  background:#faf8f4;
}
body.tema-sadesik .alg-bar{
  background:#faf8f4;
  border-bottom-color:#e4ddd0;
  border-top-color:#e4ddd0;
}

/* ── Kategori başlığı — sadece Sade Şık. index.php'de h2.section-title
   artık "section-title--<cardTemplate>" class'ını da taşıyor, bu
   yüzden burada sadece bu temaya özel hedefleyebiliyoruz. ── */
.section-title--sadesik{
  background:#faf8f4;
  justify-content:center;
  gap:14px;
  padding:28px 8px 22px;
  min-height:auto;
}
.section-title--sadesik .section-title__echo{ display:none; }
.section-title--sadesik .section-title__text{
  font-family:'Hachi Maru Pop',cursive;
  font-weight:400;
  font-size:30px;
  line-height:1;
  letter-spacing:.01em;
  color:#241c15;
  text-transform:none;
  display:inline-flex;
  align-items:center;
}
.section-title--sadesik::before,
.section-title--sadesik::after{
  content:'';
  flex:1;
  max-width:70px;
  height:1px;
  background:#c7b696;
}
.section-title--sadesik .section-title__text::before,
.section-title--sadesik .section-title__text::after{
  content:'';
  display:inline-block;
  width:20px; height:20px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 58 20' fill='none' stroke='%23b8375a' stroke-width='1.3' stroke-linecap='round' stroke-linejoin='round'><path d='M2 10 C18 10 20 2 30 2 C26 8 30 14 40 12 C34 11 32 6 38 4'/><circle cx='40' cy='10' r='1.4' fill='%23b8375a' stroke='none'/></svg>");
  background-repeat:no-repeat;
  background-size:contain;
}
.section-title--sadesik .section-title__text::before{ margin-inline-end:8px; }
.section-title--sadesik .section-title__text::after{ margin-inline-start:8px; transform:scaleX(-1); }

/* NOT — FONT: Kategori başlığı artık 'Hachi Maru Pop' (Japon
   el yazısı stili). fonts.css'teki eski 'Hurricane' @font-face
   kaydı kaldırıldı (başka hiçbir yerde kullanılmıyordu), yerine
   Hachi Maru Pop self-hosted olarak eklendi (2 dosya: latin +
   latin-ext, Türkçe karakterler latin-ext'te). Ürün adı/fiyat/
   açıklama hâlâ EB Garamond kullanıyor, dokunulmadı. */

/* ════════════════════════════════════════════════════════════
   6) HIZLI SERVİS — Büyük görsel, dev buton, kafe/hızlı
   servis işletmeleri için.
   ════════════════════════════════════════════════════════════ */
.mcard--hizli{display:flex; flex-direction:column; width:100%; background:#fff; border-radius:var(--card-r, 18px); overflow:hidden; position:relative; box-shadow:0 2px 8px rgba(0,0,0,.08); transition:box-shadow .15s, transform .15s;gap: 0px;}
.mcard--hizli .mcard__media{width:100%;}
.mcard--hizli:hover{box-shadow:0 6px 18px rgba(0,0,0,.12); transform:translateY(-1px);}
.mcard--hizli .mcard__media{aspect-ratio:1/1; position:relative; background-size:cover; background-position:center;}
.mcard--hizli .mcard__noimg{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:42px;
  font-weight:800;
  color:#fff;
  background:linear-gradient(135deg,#c7c9d6,#9a9db0);
}
.mcard--hizli .mcard__pricebadge{position:absolute; bottom:6px; left:6px; background:var(--theme, #E91E63); color:#fff; font-weight:600; font-size:14px; padding:2px 6px; border-radius:calc(var(--card-r, 18px) * 0.5);}
.mcard--hizli .mcard__body{padding:6px; display:flex; flex-direction:column; gap:8px; position:relative;}
.mcard--hizli .mcard__toprow{display:flex; align-items:center; gap:8px;}
.mcard--hizli .mcard__name{font-weight:600; font-size:14px; color:#1a1a2e; line-height:2.6;}
/* Seçenek A: buton görsel/gövde sınırını taşan, yarı görsel yarı
   gövde üzerinde duran dairesel FAB. Konum .mcard__body'ye göre
   (position:relative), bu yüzden görsel oranı ne olursa olsun
   (kare, responsive genişlik) her zaman tam sınır çizgisinde kalır. */
.mcard--hizli .mcard__add{position:absolute; top:-14px; right:6px; width:28px; height:28px; border-radius:50%; background:var(--theme, #E91E63); color:#fff; display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:700; box-shadow:0 3px 8px rgba(0,0,0,.2); z-index:2;}
.mcard--hizli .meta-badges{padding-bottom:0px;}
.mcard--hizli .meta-badge{font-size:10px; padding:3px 7px;}
.mcard--hizli .meta-badge-kcal, .mcard--hizli .meta-badge-alerjen{font-size:11px; padding:4px 8px;}

/* ════════════════════════════════════════════════════════════
   7) AFİŞ — Görsel kartın tamamı, metin gradient üzerine.
   ════════════════════════════════════════════════════════════ */
.mcard--afis{position:relative; aspect-ratio:3/4; border-radius:var(--card-r, 16px); overflow:hidden; background:linear-gradient(135deg,#f6d9a8,#e8a35c 55%,#d1823f);}
/* B seçeneği: blur YOK. Boşluk, JS'in (afis-bg-sample.js) görselden
   örneklediği ortalama renkle (--afis-bg-color) dolduruluyor — bu
   yüzden burada sadece düz bir background-color var, JS gelene
   kadar nötr bir varsayılan renkle başlıyor, sonra yumuşak
   geçişle gerçek renge dönüyor. */
.mcard--afis .mcard__bg{position:absolute; inset:0; overflow:hidden; z-index:0; background-color:var(--afis-bg-color, #e9e2d6); transition:background-color .35s ease;}
.mcard--afis .mcard__bg::after{content:''; position:absolute; inset:0; background-image:var(--img); background-size:contain; background-position:top center; background-repeat:no-repeat; z-index:1;}
.mcard--afis::before{content:''; position:absolute; inset:0; background:linear-gradient(to top, rgba(10,8,6,.82) 0%, rgba(10,8,6,.45) 38%, transparent 68%); pointer-events:none; z-index:1;}
.mcard--afis .mcard__content{position:absolute; left:0; right:0; bottom:0; padding:8px; display:flex; flex-direction:column; gap:8px; z-index:2;}
.mcard--afis .mcard__name{font-weight:600; font-size:14px; color:#fff; line-height:1.25;}
.mcard--afis .mcard__pricerow{display:flex; align-items:center; justify-content:space-between; gap:10px;}
.mcard--afis .mcard__price{font-weight:700; font-size:15px; color:#fff;}
.mcard--afis .mcard__desc{font-size:12px; color:rgba(255,255,255,.8); line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.mcard--afis .meta-badge{backdrop-filter:blur(3px);}
.mcard--afis .select-btn{flex-shrink:0;
width: 28px;
  height: 28px;
top: 29px;
  right: 8px;
}

/* ════════════════════════════════════════════════════════════
   8) TİPOGRAFİ — Sade Şık HARİÇ tüm şablonlarda Montserrat.
   Sade Şık kendi serif kimliğini (EB Garamond) korur, dokunulmadı.
   NOT: fonts.css bilinçli olarak Google Fonts'tan bağımsız
   (self-hosted). Montserrat için de aynısı yapıldı — siteye
   Google Fonts linki EKLENMEDİ.
   ════════════════════════════════════════════════════════════ */
.product-row--classic, .product-row--classic *,
.mcard--vitrin, .mcard--vitrin *,
.mcard--noktali, .mcard--noktali *,
.mcard--noktalisiz, .mcard--noktalisiz *,
.mcard--hizli, .mcard--hizli *,
.mcard--afis, .mcard--afis * {
  font-family:'Montserrat',system-ui,sans-serif !important;
}

/* ════════════════════════════════════════════════════════════
   9) Yatay Mini Fotoğraflı / Fotoğrafsız — fiyat üst satırda
   akışta (statik) kalıyor, sepete ekle butonu alta sabitlendi
   (eskiden top:50% ile kart boyuna göre kayıyordu, genişlik
   değiştikçe fiyatla arasında tutarsız boşluk/çakışma oluyordu).
   ════════════════════════════════════════════════════════════ */
.mcard--noktali .mcard__add,
.mcard--noktalisiz .mcard__add,
.mcard--noktali .select-btn,
.mcard--noktalisiz .select-btn{
  right: 8px !important;

}

.mcard--noktali .mcard__price,
.mcard--noktalisiz .mcard__price{
  position: static;
  background: none;
  padding: 0;
}

.no-ordering .mcard--noktali .mcard__desc,
.no-ordering .mcard--noktalisiz .mcard__desc{
  padding-right: 0;
}

.no-ordering .mcard--noktali .meta-badges,
.no-ordering .mcard--noktalisiz .meta-badges{
  padding-right: 0;
}