/* =====================================================================
   CLASSIC — HABERPORT
   Tasarım kaynağı: "C1 - anasayfa.html" (Stitch AI / Tailwind)

   Tailwind CDN'den Bootstrap 5.3'e taşındı. Tasarımın tamamı burada
   ÜÇ katmanda duruyor:

     1) Token'lar  — Stitch'in tailwind.config'indeki renk, tipografi
                     ve boşluk değerleri birebir CSS değişkeni oldu.
     2) Bootstrap  — ızgara, kart, tablo, form Bootstrap'in kendisi.
     3) Bileşenler — Tailwind yardımcı sınıflarının karşılığı olan az
                     sayıda tema sınıfı (.hp- öneki).

   NEDEN `.hp-` ÖNEKİ
   Bootstrap'in kendi sınıflarıyla çakışmasın ve bir sınıfın temaya mı
   Bootstrap'e mi ait olduğu tek bakışta anlaşılsın.
   ===================================================================== */

/* =====================================================================
   1. TOKEN'LAR
   ===================================================================== */
:root {
  /* =====================================================================
     FNEX — "GÖRSEL MODERN" PALETİ  (news'ten fork; PROVA)

     news koyu-kırmızı, keskin köşeli, klasik gazete kimliği taşıyor.
     fnex farklı bir ekol: nötr-beyaz zemin + tek canlı mavi accent +
     yumuşak köşe + geometrik sans (Outfit). Nötr çerçeve içeriği ve
     reklamı öne çıkarır (reklam/discovery odağı); temiz hiyerarşi
     GEO/SEO için okunur yapı verir.

     Bu blok bilinçle SADECE token: renk/tipografi/köşe değişince
     kartlar, butonlar, rozetler, bölüm başlıkları TÜM temada birlikte
     dönüşüyor — tek dosyada kimlik değişimi.
     ===================================================================== */
  --hp-primary:                  #2563eb;   /* canlı mavi accent */
  --hp-primary-container:        #1d4ed8;
  --hp-on-primary:               #ffffff;
  --hp-primary-fixed:            #dbe6ff;
  --hp-primary-fixed-dim:        #b6ccff;
  --hp-on-primary-container:     #dbe6ff;
  --hp-on-primary-fixed-variant: #1e40af;

  --hp-secondary:                #0ea5e9;   /* açık mavi (ikincil vurgular) */
  --hp-on-secondary:             #ffffff;
  --hp-secondary-container:      #d0eefe;
  --hp-secondary-fixed-dim:      #a9dffb;
  --hp-on-secondary-container:   #0369a1;

  --hp-tertiary:                 #7c3aed;   /* mor (etiket/çeşitlilik) */
  --hp-on-tertiary:              #ffffff;
  --hp-tertiary-container:       #ede4ff;
  --hp-tertiary-fixed-dim:       #d4c2ff;

  --hp-error:                    #dc2626;
  --hp-on-error:                 #ffffff;

  /* Nötr, hafif soğuk zemin — slate ailesi. */
  --hp-surface:                  #ffffff;
  --hp-on-surface:               #0f172a;   /* slate-900 */
  --hp-on-surface-variant:       #475569;   /* slate-600 */
  --hp-on-background:            #0f172a;

  --hp-surface-lowest:           #ffffff;
  --hp-surface-low:              #f6f8fb;
  --hp-surface-container:        #eef2f7;
  --hp-surface-high:             #e5eaf1;
  --hp-surface-highest:          #dbe2ec;
  --hp-surface-variant:          #e2e8f0;

  --hp-inverse-surface:          #0f172a;
  --hp-inverse-on-surface:       #f1f5f9;

  --hp-outline:                  #94a3b8;   /* slate-400 */
  --hp-outline-variant:          #e2e8f0;   /* slate-200 */

  /* ---- Tipografi: Outfit (geometrik, modern) ---- */
  --hp-font-headline:"Outfit","Poppins",system-ui,sans-serif;
  --hp-font-headline-title:"Outfit","Poppins",system-ui,sans-serif;
  --hp-font-body:    "Outfit","Poppins",-apple-system,"Segoe UI",Roboto,sans-serif;
  
  
  --hp-fw-600 : 600;
  --hp-fw-700 : 700;
  --hp-fw-800 : 800;
  --hp-fw-900 : 900;
  
  
  
  /* POPPINS Ayarları */
  
  --hp-fs-hp-sub2-title : 19px;
  --hp-fs-hp-h-sm : 16px;
  --hp-fs-hp-hero : 48px;
  --hp-fs-hp-lead : 18px;
  --hp-fs-hp-title : 20px;
  --hp-fs-top_content_title : 19px;
  --hp-fs-hp-h-md : 24px;
  --hp-fs-gallery-title : 22px;
  --hp-fs-hp-sm : 14px;
  --hp-fs-article-title : 14px;
  --hp-fs-hp-nav-link : 16px;
  --hp-fs-video-title : 18px;
  --hp-fs-hp-h-lg: 25px;
  
 
  /*
  --hp-fs-hp-sub2-title : 23px;
  --hp-fs-hp-h-sm : 22px;
  --hp-fs-hp-hero : 48px;
  --hp-fs-hp-lead : 18px;
  --hp-fs-hp-title : 24px;
  --hp-fs-top_content_title : 19px;
  --hp-fs-hp-h-md : 28px;
  --hp-fs-gallery-title : 26px;
  --hp-fs-hp-sm : 14px;
  --hp-fs-article-title : 14px;
  --hp-fs-hp-nav-link : 22px;
  --hp-fs-video-title : 18px;
  --hp-fs-hp-h-lg : 36px;
  */
  
  
  

  /* ---- Boşluk ölçeği ---- */
  --hp-space-1:  4px;
  --hp-space-2:  8px;
  --hp-space-3:  12px;
  --hp-space-4:  16px;
  --hp-space-6:  24px;
  --hp-space-8:  32px;
  --hp-space-12: 48px;
  --hp-space-16: 64px;

  --hp-max-width: 1280px;
  --hp-gutter:    20px;
  --hp-margin:    32px;

  /* ---- Köşe yarıçapı ----
     DİKKAT: tasarım BİLEREK köşesiz sayılır. Stitch config'inde
     rounded-lg = 0.25rem (4px), DEFAULT = 0.125rem (2px). Bootstrap'in
     varsayılanı 0.375rem; olduğu gibi bırakılsaydı tema yumuşar ve
     "gazete" havasını kaybederdi. */
  /* Yumuşak köşe — news 2px keskin (gazete); fnex modern kart hissi. */
  --hp-radius:    10px;
  --hp-radius-lg: 14px;
  --hp-radius-xl: 20px;

  /* Bootstrap'in kendi değişkenlerini de tema tarafına çekiyoruz ki
     .btn, .card, .form-control gibi hazır bileşenler uyumlu çıksın. */
  --bs-body-font-family: var(--hp-font-body);
  --bs-body-color: var(--hp-on-surface);
  --bs-body-bg: var(--hp-surface);
  --bs-border-radius: var(--hp-radius);
  --bs-border-radius-sm: var(--hp-radius);
  --bs-border-radius-lg: var(--hp-radius-lg);
  --bs-border-radius-xl: var(--hp-radius-xl);
  --bs-primary: var(--hp-primary);
  --bs-link-color: var(--hp-primary);
  --bs-link-hover-color: var(--hp-on-primary-fixed-variant);
}

/* =====================================================================
   2. TABAN
   ===================================================================== */
html, body { margin: 0; padding: 0; }

body {
  background: var(--hp-surface);
  color: var(--hp-on-surface);
  font-family: var(--hp-font-body);
  font-size: 16px;
  line-height: normal;
  -webkit-font-smoothing: antialiased;
  overscroll-behavior: none;
}

a { text-decoration: none; color: inherit; }

img { max-width: 100%; display: block; }

.shadow-hp{
	    box-shadow: rgba(0, 0, 0, 0.1) 1px 1px 1px !important;}
/* ---------------------------------------------------------------------
   KAYDIRMA ÇUBUĞU

   Stitch çıktısında `::-webkit-scrollbar { display:none }` +
   `* { scrollbar-width:none }` vardı ve olduğu gibi alınmıştı. Sonuç:
   sayfada HİÇ kaydırma çubuğu görünmüyordu.

   Bu kabul edilemez:
     · Kullanıcı sayfanın ne kadar uzun olduğunu ve nerede olduğunu
       göremiyor — uzun bir ana sayfada en çok ihtiyaç duyulan ipucu.
     · Çubuğu sürükleyerek gezinme tamamen kayboluyor.
     · Erişilebilirlik açısından görsel bir gösterge eksiliyor.

   Artık dikey çubuk GÖRÜNÜYOR, yalnızca temaya uygun biçimde
   inceltildi. Gizleme yalnızca YATAY şeritlerde kaldı: orada çubuk
   işlevsel değil, içerik zaten dokunarak ya da düğmelerle geziliyor.

   `scrollbar-gutter: stable` — çubuk belirip kaybolduğunda sayfanın
   yatayda oynamasını engelliyor (kısa sayfadan uzun sayfaya geçişte
   CLS kaynağı).
   --------------------------------------------------------------------- */
html { scrollbar-gutter: stable; }

* { scrollbar-width: thin; scrollbar-color: var(--hp-outline-variant) transparent; }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--hp-surface-low); }
::-webkit-scrollbar-thumb {
  background: var(--hp-outline-variant);
  border-radius: 999px;
  border: 2px solid var(--hp-surface-low);
}
::-webkit-scrollbar-thumb:hover { background: var(--hp-outline); }

/* Yatay şeritlerde gizli: numara çubuğu ve mobil sürmanşet. */
.hp-pager, .hp-subhead-items { scrollbar-width: none; }
.hp-pager::-webkit-scrollbar,
.hp-subhead-items::-webkit-scrollbar { display: none; }
/* Sayfa gövdesi sabit başlığın altından başlasın.
   Başlık üç katlı: 40px üst şerit + 64px ana bar + 40px son dakika. */
/* padding-top KALDIRILDI: başlık artık sticky, akışta kendi yerini
   kaplıyor. Boşluk bırakmak içeriği ikinci kez aşağı iterdi. */
.hp-main { min-height: 100vh; }

/* Ortak kap — Bootstrap'in .container'ı 1320px'e çıkıyor, tasarım
   1280px'de sabit. */
.hp-wrap {
  max-width: var(--hp-max-width);
  margin-inline: auto;
  padding-inline: var(--hp-margin);
}

/* Izgara boşluğu tasarımda 20px (Bootstrap varsayılanı 24px). */
.hp-row { --bs-gutter-x: var(--hp-gutter); --bs-gutter-y: var(--hp-gutter); }

.hp-section { padding-block: var(--hp-space-12); }
.hp-section-sm { padding-block: var(--hp-space-8); }
.hp-section-xs { padding-block: var(--hp-space-6); }

/* =====================================================================
   3. TİPOGRAFİ  —  Stitch fontSize tablosunun birebir karşılığı
   ===================================================================== */
.hp-hero,
.hp-h-lg,
.hp-h-md,
.hp-h-sm,
.hp-badge { font-family: var(--hp-font-headline); }

.hp-hero  { font-size: var(--hp-fs-hp-hero); line-height: 56px; letter-spacing: -.02em;  font-weight: 700; font-family:var(--hp-font-headline-title) !important; }
.hp-h-lg  { font-size: var(--hp-fs-hp-h-lg); line-height: 42px; letter-spacing: -.01em;  font-weight: 700; }
.hp-h-md  { font-size: var(--hp-fs-hp-h-md); line-height: 34px; letter-spacing: -.005em; font-weight: 600; }
.hp-h-sm  { font-size: var(--hp-fs-hp-h-sm); line-height: 28px; font-weight: 600; }

.hp-title { font-family: var(--hp-font-body); font-size: var(--hp-fs-hp-title); line-height: 27px; font-weight: 700; }
.video-title { font-family: var(--hp-font-body); font-size: var(--hp-fs-video-title) !important; line-height: 27px; font-weight: 700; }
.hp-lead  { font-family: var(--hp-font-body); font-size: var(--hp-fs-hp-lead); line-height: 30px; font-weight: 400; }
.hp-body  { font-family: var(--hp-font-body); font-size: 16px; line-height: 26px; font-weight: 400; }
.hp-sm    { font-family: var(--hp-font-body); font-size: var(--hp-fs-hp-sm); line-height: 22px; font-weight: 400; }
.hp-cap   { font-family: var(--hp-font-body); font-size: 12px; line-height: 16px; font-weight: 500; }

/* Mobil kırılımı — Stitch'te ayrı token'dı (headline-hero-mobile vb.) */
@media (max-width: 767.98px) {
  .hp-hero { font-size: 32px; line-height: 38px; letter-spacing: -.01em; }
  .hp-h-lg { font-size: 26px; line-height: 32px; letter-spacing: -.01em; }
  .hp-h-md { font-size: 24px; line-height: 30px; }
  /* Mobil telafi de gereksiz — sticky başlık zaten yer kaplıyor. */

}

.hp-upper { text-transform: uppercase; }

/* Satır kırpma — Tailwind line-clamp karşılığı */
.hp-clamp-1, .hp-clamp-2, .hp-clamp-3 {
  display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden;
}
.hp-clamp-1 { -webkit-line-clamp: 1; }
.hp-clamp-2 { -webkit-line-clamp: 2; }
.hp-clamp-3 { -webkit-line-clamp: 3; }

/* =====================================================================
   5. ROZETLER
   ===================================================================== */
.hp-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 13px; line-height: 14px; letter-spacing: .04em;
  font-weight: 700; text-transform: uppercase;
  padding: 4px 8px; border-radius: var(--hp-radius);
  white-space: nowrap;
}
.hp-badge-sm { font-size: 11px; padding: 2px 6px; }

.hp-badge-primary   { background: var(--hp-primary);           color: var(--hp-on-primary); }
.hp-badge-container { background: var(--hp-primary-container);  color: var(--hp-on-primary); }
.hp-badge-secondary { background: var(--hp-secondary);          color: var(--hp-on-secondary); }
.hp-badge-tertiary  { background: var(--hp-tertiary);           color: var(--hp-on-tertiary); }
.hp-badge-tertiary-c{ background: var(--hp-tertiary-container); color: var(--hp-on-tertiary); }
.hp-badge-error     { background: var(--hp-error);              color: var(--hp-on-error); }
.hp-badge-neutral   { background: var(--hp-on-surface-variant); color: var(--hp-surface-lowest); }
.hp-badge-glass     { background: rgba(25,28,32,.8); color: #fff; backdrop-filter: blur(4px); }
.hp-badge-black     { background: rgba(0,0,0,.7);    color: #fff; }

/* Bölüm başlığındaki renkli dikey çubuk */
.hp-bar { width: 10px; height: 32px; border-radius: 999px; flex: 0 0 auto; }
.hp-bar-thin { width: 6px; }

/* Nabız / yanıp sönen nokta */
.hp-dot { width: 8px; height: 8px; border-radius: 999px; display: inline-block; }
.hp-ping { animation: hp-ping 1.6s cubic-bezier(0,0,.2,1) infinite; }
.hp-pulse { animation: hp-pulse 2s cubic-bezier(.4,0,.6,1) infinite; }
@keyframes hp-ping  { 0% { transform: scale(1); opacity: 1 } 75%,100% { transform: scale(1.9); opacity: 0 } }
@keyframes hp-pulse { 0%,100% { opacity: 1 } 50% { opacity: .4 } }

/* =====================================================================
   6. GÖRSEL ÇERÇEVESİ
   Tailwind'de `aspect-video` + `object-cover` + `group-hover:scale-105`
   üçlüsüyle yapılıyordu. Burada tek sınıf.
   ===================================================================== */
.hp-media { position: relative; overflow: hidden; border-radius: var(--hp-radius-lg); }
.hp-media > img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.hp-media-16x8 { aspect-ratio: 16/8; }
.hp-media-16x9 { aspect-ratio: 16/9; }
.hp-media-16x96 { aspect-ratio: 16/9.6; }
.hp-media-16x10 {
    aspect-ratio: 16 / 10;
}
.hp-media-16x11 {
    aspect-ratio: 16 / 11;
}
.hp-media-4x3  { aspect-ratio: 4/3; }
.hp-media-1x1  { aspect-ratio: 1/1; }

.hp-card:hover .hp-media > img,
.hp-media:hover > img { transform: scale(1.05); }

/* Görsel üstündeki metin için karartma */
.hp-scrim {
  position: absolute; inset: 0;
  background: linear-gradient(to top,
              var(--hp-on-background) 0%,
              rgba(25,28,32,.5) 45%,
              transparent 100%);
}
.hp-scrim-soft {
  position: absolute; inset: 0;
  background: linear-gradient(to top,
              rgba(25,28,32,.9) 0%,
              rgba(25,28,32,.3) 45%,
              transparent 100%);
}
.hp-overlay-text { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; }

/* =====================================================================
   7. KARTLAR
   ===================================================================== */
.hp-card {
  background: var(--hp-surface-lowest);
  border-radius: var(--hp-radius-lg);
  box-shadow: 0 1px 2px rgba(0,0,0,.05);
  overflow: hidden;
  transition: box-shadow .2s ease, background-color .2s ease;
  display: flex; flex-direction: column;
  height: 100%;
}
.hp-card:hover { box-shadow: 0 4px 10px rgba(0,0,0,.08); }
.hp-card-low { background: var(--hp-surface-low); }
.hp-card-low:hover { background: var(--hp-surface-container); }

/* Başlık rengi kartın üzerine gelince değişiyor */
.hp-card:hover .hp-hl { color: var(--hp-primary); }
.hp-hl { transition: color .2s ease; }

.hp-link-muted { color: var(--hp-on-surface-variant); transition: color .2s ease; }
.hp-link-muted:hover { color: var(--hp-primary); }

/* =====================================================================
   8. BAŞLIK (header)
   ===================================================================== */
/* STICKY, FIXED DEĞİL — düzeltildi 06.09.2026

   `fixed` iken başlık akıştan çıkıyordu ve altındaki içeriği .hp-main
   üzerindeki SABİT bir padding telafi ediyordu. İki sayı tutmuyordu:
       başlığın gerçek yüksekliği  160px  (40 üst şerit + 80 bar + 40 son dakika)
       telafi                       80px
   Sonuç: HER sayfada içeriğin üstünden 80px başlığın altında kalıyordu
   (mobilde 16px). Anasayfada ilk blok tam genişlik bir görsel olduğu için
   göze batmıyordu; kategori sayfasında ekmek kırıntısı ile H1 tamamen
   kaybolunca ortaya çıktı — ölçüldü, tahmin değil.

   Sabit sayıyı düzeltmek yetmezdi: son dakika şeridi haber yoksa hiç
   basılmıyor, üst şerit mobilde gizli, yani yükseklik duruma göre
   değişiyor. `sticky` başlığı AKIŞTA bırakıyor; kendi yerini kaplıyor,
   telafiye gerek kalmıyor ve hangi parça basılırsa basılsın doğru
   çalışıyor. Kaydırma davranışı birebir aynı. */
.hp-header {
  position: sticky; top: 0; z-index: 1030;
  background: var(--hp-surface-lowest);
  box-shadow: 0 1px 8px rgba(0,0,0,.04);
}
.hp-topbar { background: var(--hp-surface-low); height: 40px; }
.hp-navbar { height: 92px; }
.hp-tickerbar { background: var(--hp-primary); height: 40px; }

/* SON DAKİKA rozeti — inline stiller buraya taşındı (header.php).
   Mobil medya sorgusunun ezebilmesi için sınıfta. */
.hp-tickerbadge {
  background: #00000033;
  line-height: 32px;
  letter-spacing: -1px;
  font-size: 21px;
}
.hp-tickerbadge .hp-dot { background: #fff; width: 9px; height: 9px; margin-right: 5px; }

/* ---- MOBİL: rozet metni + saat GİZLİ, yalnızca yanıp sönen nokta ----
   Ölçüldü: 400px'te "SON DAKİKA" (155px) + saat, başlığa yalnızca
   118px bırakıyor ve haber "Bakan Kacır du…" diye kırpılıyordu.
   Metin ve saat kalkınca başlığa neredeyse tüm genişlik kalıyor;
   dikey slider korunuyor (marquee'ye dönülmedi — okunabilirlik). */
@media (max-width: 767.98px) {
  .hp-tickerbadge-metin { display: none; }
  .hp-tickerbadge { padding: 4px 7px; font-size: 0; }   /* metin node'u kapanır, nokta kalır */
  .hp-tickerbadge .hp-dot { margin-right: 0; }
  .hp-tickerbar .hp-newsbar-time,
  .hp-tickerbar .hp-newsbar-sep { display: none; }
  /* Saat/ayraç gidince başlık soldan başlasın */
  .hp-tickerbar .hp-newsbar .hp-slide { gap: 0; }
}

/* .hp-logo-mark / .hp-logo-text KALDIRILDI — tasarım şablonundaki
   yazıyla yapılmış "HABER|PORT" logosunun sınıflarıydı. Üst bar çoktan
   $setting['site_logo'] basıyordu; son kullanan yer alt bilgiydi, o da
   artık gerçek logoyu basıyor. Hiçbir işaretleme bu sınıfları
   kullanmıyor (tema genelinde arandı). */

.hp-nav-link {
  padding: 8px 12px;
  font-family: var(--hp-font-headline); font-size: var(--hp-fs-hp-nav-link); line-height: 28px;
  font-weight: 600; text-transform: uppercase;     letter-spacing: -0.02em;
  color: var(--hp-on-surface);
  border-radius: var(--hp-radius);
  transition: color .2s ease, background-color .2s ease;
}
.hp-nav-link:hover { color: var(--hp-primary); }
.hp-nav-link.active { background: var(--hp-primary); color: var(--hp-on-primary); }

.hp-icon-btn {
  border: 0; background: transparent; padding: 8px;
  color: var(--hp-on-surface-variant); line-height: 0;
  transition: color .2s ease;
}
.hp-icon-btn:hover { color: var(--hp-on-surface); }

/* .hp-avatar KALDIRILDI — uyelik sistemi yok, giris ikonu da yok. */

/* Eski yatay kayan şerit (marquee) KALDIRILDI — yerine dikey slider
   geldi, aşağıdaki SON DAKİKA ŞERİDİ bölümüne bakın. */

/* Hareket azaltma tercihi: kayan yazı ve nabızlar durur. */
@media (prefers-reduced-motion: reduce) {
  .hp-ping, .hp-pulse { animation: none; }
  .hp-media > img { transition: none; }
}

/* =====================================================================
   9. MANŞET NUMARA ÇUBUĞU
   ---------------------------------------------------------------------
   TÜM KUTULAR EŞİT GENİŞLİKTE — aktif olan dahil.

   İlk hâlde pasif düğmeler `flex: 1`, aktif olan `flex: 0 0 40px`
   idi. Aktif düğme yer değiştirdikçe genişlikler yeniden dağılıyor,
   dolayısıyla BÜTÜN RAKAMLAR kayıyordu; üzerine gelme alanı ile
   seçili alan da örtüşmüyordu.

   Artık ölçü hiç değişmiyor: `flex: 1 1 0` + `min-width` ile hepsi
   aynı. Aktiflik YALNIZCA renkle belli oluyor.

   `min-width` dar ekranda devreye giriyor: 15 kutu 358px genişliğe
   sığmaz, çubuk yatayda kaydırılabilir hâle geliyor (kaydırma çubuğu
   zaten gizli).
   ===================================================================== */
.hp-pager {
  background: var(--hp-surface-low); border-radius: var(--hp-radius-lg);
  padding: 8px; display: flex; align-items: center; gap: 4px;
  box-shadow: inset 0 2px 4px rgba(0,0,0,.05);
  overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.hp-pager button {
  flex: 1 1 0; min-width: 40px; height: 36px; padding: 0;
  border: 0; background: transparent;
  font-family: var(--hp-font-headline); font-size: 22px; font-weight: 600;
  color: var(--hp-on-surface-variant); border-radius: var(--hp-radius);
  transition: background-color .2s ease, color .2s ease;
}
.hp-pager button:hover { background: var(--hp-surface-container); color: var(--hp-on-surface); }
.hp-pager button.active { background: var(--hp-primary); color: var(--hp-on-primary); font-weight: 700; }
.hp-pager button.active:hover { background: var(--hp-primary); color: var(--hp-on-primary); }

/* =====================================================================
   10. AKIŞ (son dakika) — zaman damgalı dikey liste
   ===================================================================== */
.hp-feed-item {
  background: var(--hp-surface-lowest); border-radius: var(--hp-radius-lg);
  padding: var(--hp-space-4); display: flex; gap: var(--hp-space-4);
  align-items: flex-start; box-shadow: 0 1px 2px rgba(0,0,0,.05);
  transition: box-shadow .2s ease;
}
.hp-feed-item:hover { box-shadow: 0 3px 8px rgba(0,0,0,.07); }
.hp-feed-time {
  display: flex; flex-direction: column; align-items: center; flex: 0 0 auto;
  font-family: var(--hp-font-headline); font-size: 22px; line-height: 28px; font-weight: 700;
}

/* =====================================================================
   11. REKLAM YUVASI  —  CLS korumalı
   Yükseklik SABİT: reklam geç gelirse sayfa zıplamasın.
   ===================================================================== */
/* .hp-ad-300x600 KALDIRILDI — ortak .hp-ad bilesenine tasindi
   (bkz. REKLAM ENVANTERI). */

/* YAPIŞKAN YAN ÇUBUK — YALNIZCA MASAÜSTÜ

   İKİ SÜRÜM OLDU, İLKİ KUTULARI EZİYORDU:
   önce `max-height: calc(100vh - 184px)` + `overflow-y: auto` vardı.
   `.hp-sticky` bir FLEX SÜTUN ve flex çocuklarının varsayılanı
   `flex-shrink: 1` — yani yükseklik sınırı gelince kutular kaydırma
   çubuğu çıkarmak yerine SIKIŞIYOR. Ölçüldü: yazarlar kutusu 508px
   yerine 178px'e, e-bülten 295px yerine 186px'e iniyordu; kullanıcı
   "yarıda kesilmiş" olarak gördü. `scrollHeight === clientHeight`
   olması taşma değil ezilme olduğunu kanıtladı.

   ŞİMDİKİ YAKLAŞIM: yükseklik sınırı YOK, iç kaydırma YOK.
   Yan çubuk sayfayla birlikte normal kayıyor; ALTI ekranın altına
   dayandığında yapışıyor. Bunu `top`un NEGATİF olmasıyla yapıyoruz
   ve değeri theme.js §15 ölçüp yazıyor (yükseklik JS'siz bilinemez).

   JS çalışmazsa `top: 168px` geçerli kalıyor: uzun yan çubukta bu,
   alt kutuların görünmemesi demek — ama hiçbir şey EZİLMİYOR ve sayfa
   normal kayıyor. Bozulma güvenli. */
.hp-sticky { position: static; }

/* Kutular ASLA sıkışmasın — asıl hatanın kaynağı buydu. */
.hp-sticky > * { flex-shrink: 0; }

@media (min-width: 992px) {
  .hp-sticky {
    position: sticky;
    top: var(--hp-yapiskan-ust, 168px);
  }
}.hp-table { width: 100%; font-size: 14px; line-height: 22px; }
.hp-table th {
  font-size: 12px; font-weight: 500; text-transform: uppercase;
  color: var(--hp-on-surface-variant); padding: 8px 0; font-family: var(--hp-font-body);
}
.hp-table td { padding: 10px 0; }
.hp-table tbody tr { transition: background-color .2s ease; }
.hp-table tbody tr:hover { background: var(--hp-surface-container); }
.hp-rank {
  width: 20px; height: 20px; border-radius: 999px;
  background: var(--hp-surface-highest); color: var(--hp-on-surface);
  font-size: 11px; font-weight: 600;
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto;
}
.hp-rank-1 { background: var(--hp-primary); color: var(--hp-on-primary); }

/* =====================================================================
   13. EN ÇOK OKUNANLAR — büyük sıra numarası
   ===================================================================== */
.hp-num {
  font-family: var(--hp-font-headline); font-size: 36px; line-height: 1;
  font-weight: 700; width: 48px; text-align: center; flex: 0 0 auto;
  color: var(--hp-on-surface-variant);
}
.hp-num-top { color: var(--hp-primary); }

/* =====================================================================
   14. VİDEO KARTI
   ===================================================================== */
.hp-play {
  position: absolute; inset: 0; display: flex;
  align-items: center; justify-content: center;
  background: rgba(0,0,0,.2); transition: background-color .2s ease;
}
.hp-play:hover { background: rgba(0,0,0,.4); }
.hp-play > span {
  width: 48px; height: 48px; border-radius: 999px;
  background: rgba(158,0,31,.9); color: #fff;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 20px rgba(0,0,0,.35);
  transition: transform .2s ease;
}
.hp-media:hover .hp-play > span { transform: scale(1.1); }
.hp-duration {
  position: absolute; right: 8px; bottom: 8px;
  background: rgba(0,0,0,.8); color: #fff;
  font-size: 11px; font-weight: 500;
  padding: 2px 6px; border-radius: var(--hp-radius);
}
.hp-carousel-btn {
  width: 36px; height: 36px; border: 0; border-radius: var(--hp-radius);
  background: var(--hp-on-background); color: var(--hp-inverse-on-surface);
  display: inline-flex; align-items: center; justify-content: center;
  transition: background-color .2s ease;
}
.hp-carousel-btn:hover { background: var(--hp-primary); }

/* =====================================================================
   15. ANKET
   ===================================================================== */
.hp-poll-option {
  display: block; padding: var(--hp-space-3);
  background: var(--hp-surface-low); border-radius: var(--hp-radius);
  cursor: pointer; transition: background-color .2s ease;
}
.hp-poll-option:hover { background: var(--hp-surface-container); }
/* display:block ŞART — <span> satır içidir ve satır içi öğede width/
   height uygulanmaz. Bu yüzden ilk koşumda anket çubukları hiç
   görünmüyordu (ekran görüntüsünde yakalandı). */
.hp-poll-bar { display: block; width: 100%; height: 8px; background: var(--hp-surface-highest); border-radius: 999px; overflow: hidden; }
.hp-poll-bar > span { display: block; height: 100%; border-radius: 999px; background: var(--hp-primary); }
.hp-poll-option input[type="radio"] { accent-color: var(--hp-primary); cursor: pointer; }

/* =====================================================================
   16. DÜĞMELER
   ===================================================================== */
.hp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  border: 0; border-radius: var(--hp-radius);
  font-family: var(--hp-font-headline); font-size: 17px; line-height: 28px;
  font-weight: 600; text-transform: uppercase; letter-spacing: .025em;
  padding: 8px 24px; transition: background-color .2s ease, color .2s ease;
}
.hp-btn-primary   { background: var(--hp-primary);   color: var(--hp-on-primary); }
.hp-btn-primary:hover   { background: var(--hp-primary-container); color: var(--hp-on-primary); }
.hp-btn-secondary { background: var(--hp-secondary); color: var(--hp-on-secondary); }
.hp-btn-secondary:hover { background: var(--hp-on-secondary-container); color: var(--hp-on-secondary); }
.hp-btn-quiet     { background: var(--hp-surface-highest); color: var(--hp-on-surface); font-size: 16px; }
.hp-btn-quiet:hover     { background: var(--hp-outline-variant); }

.hp-input {
  border: 0; outline: 0; border-radius: var(--hp-radius);
  background: var(--hp-surface-highest); color: var(--hp-on-surface);
  padding: 8px 16px; font-size: 14px; line-height: 22px; width: 100%;
}
.hp-input::placeholder { color: var(--hp-on-surface-variant); }
.hp-input:focus { background: var(--hp-surface-lowest); }

/* =====================================================================
   17. MATERIAL SYMBOLS
   Tasarım bu ikon ailesini kullanıyor. Bootstrap Icons'a çevirmek
   görünümü değiştirirdi, bu yüzden korundu.
   ===================================================================== */
/* =====================================================================
   İKONLAR  —  SVG sprite
   ---------------------------------------------------------------------
   Material Symbols FONTU KALDIRILDI (4 MB iniyordu, bkz. index.html
   içindeki sprite notu). Artık her ikon satır içi <symbol>, kullanım
   <svg class="hp-ico ms-20"><use href="#i-search"/></svg>.

   Boyut `font-size` ile veriliyor ve `em` üzerinden genişliğe/
   yüksekliğe dönüşüyor — ms-* sınıfları eskisi gibi çalışsın,
   işaretlemede başka bir şey değişmesin diye.

   `fill: currentColor`: ikon, bulunduğu yerin metin rengini alıyor.
   Font davranışının aynısı, ek sınıf gerekmiyor.
   ===================================================================== */
.hp-ico {
  width: 1em; height: 1em;
  fill: currentColor;
  flex-shrink: 0;
  vertical-align: -0.15em;   /* metinle aynı hizaya otursun */
  font-size: 20px;           /* ms-* verilmezse makul varsayılan */
}
.ms-13 { font-size: 13px } .ms-14 { font-size: 14px } .ms-15 { font-size: 15px }
.ms-16 { font-size: 16px } .ms-18 { font-size: 18px } .ms-20 { font-size: 20px }
.ms-22 { font-size: 22px } .ms-24 { font-size: 24px } .ms-26 { font-size: 26px }
.ms-28 { font-size: 28px } .ms-48 { font-size: 48px }

/* =====================================================================
   18. MOBİL
   ===================================================================== */
/* ---------------------------------------------------------------------
   MANŞET KARTI — mobilde 16:9 YETMİYOR

   358px genişlikte 16:9 kutu yalnızca 201px yüksek; başlık (32/38)
   + üstveri oraya sığmıyor ve mutlak konumlu metin görselin DIŞINA
   taşıp rozetlerin üstüne biniyordu (mobil ekran görüntüsünde
   yakalandı).

   4:5 oran 448px veriyor: üç satır başlık + üstveri rahat sığıyor ve
   görselin üst yarısı nefes alıyor. Özet mobilde gizleniyor — dar
   ekranda manşetin işi başlığı okutmak, özeti değil.

   BU KURAL DOSYANIN SONUNDA OLMAK ZORUNDA: `.hp-media-16x9` ile aynı
   özgüllükte ve o 6. bölümde tanımlı. Kural yukarıda dursaydı sessizce
   ezilirdi — ilk denemede tam olarak bu oldu, oran 16:9 kaldı.
   --------------------------------------------------------------------- */
@media (max-width: 767.98px) {
  .hp-hero-card { aspect-ratio: 4 / 5; }
  .hp-hero-card .hp-lead { display: none; }
  .hp-hero-card h1 {
    display: -webkit-box; -webkit-box-orient: vertical;
    -webkit-line-clamp: 4; overflow: hidden;
  }
}

@media (max-width: 991.98px) {
  .hp-wrap { padding-inline: 16px; }
  .hp-ad-300x600 { margin-inline: auto; }
}
@media (max-width: 575.98px) {
  .hp-num { font-size: 28px; width: 36px; }
  .hp-btn { font-size: 18px; padding: 8px 16px; }
}

/* .hp-offcanvas KALDIRILDI — soldaki mobil menü artık yok, sağdaki
   panel kategorileri de taşıyor. */

/* =====================================================================
   RENK YARDIMCILARI  —  BILEREK DOSYANIN SONUNDA

   Once 4. bolumdeydi ve .hp-card ondan SONRA geliyordu; ikisi de tek
   sinif oldugu icin cakismada sonraki kazaniyor ve e-bulten kutusunun
   `hp-card hp-bg-dark` ikilisinde KOYU ZEMIN KAYBOLUYORDU (olculdu:
   kutu beyaz cikti, acik metin okunamaz haldeydi).

   Yardimci sinif bir bileseni EZEBILMELI. Ozgulluk artirmak
   (.hp-card.hp-bg-dark) tek bir vakayi cozerdi; siralamayi duzeltmek
   hepsini birden cozuyor.
   ===================================================================== */
.hp-bg-lowestX  { background: var(--hp-surface-lowest); }
.hp-bg-low     { background: var(--hp-surface-low); }
.hp-bg-cont    { background: var(--hp-surface-container); }
.hp-bg-high    { background: var(--hp-surface-high); }
.hp-bg-highest { background: var(--hp-surface-highest); }
.hp-bg-dark    { background: var(--hp-inverse-surface); color: var(--hp-inverse-on-surface); }

.hp-t-primary  { color: var(--hp-primary); }
.hp-t-secondary{ color: var(--hp-secondary); }
.hp-t-tertiary { color: var(--hp-tertiary); }
.hp-t-error    { color: var(--hp-error); }
.hp-t-muted    { color: var(--hp-on-surface-variant); }
.hp-t-surface  { color: var(--hp-on-surface); }
.hp-t-dim      { color: var(--hp-surface-variant); }

/* =====================================================================
   GÖRSEL STANDARDI  —  .hp-img
   ---------------------------------------------------------------------
   TEMANIN BİRİNCİ KURALI: logo ve manşetin ilk slaytı dışında HER
   görsel tembel yüklenir.

   Neden data-src DEĞİL, native loading="lazy":
     · JavaScript çalışmazsa data-src görseli HİÇ göstermez —
       haber sitesinde kabul edilemez.
     · Googlebot native lazy'yi doğrudan görür; data-src için sayfayı
       render etmesini beklemek gerekir.
     · Kaydırmada JS çalışmaz, tarayıcı kendi halleder.

   KULLANIM
       <img class="hp-img" src="..." alt="..."
            loading="lazy" decoding="async">

   İSTİSNA — bunlar ASLA tembel olmaz:
       logo                 -> loading="eager"
       manşetin İLK slaytı  -> loading="eager" fetchpriority="high"

   LCP öğesine loading="lazy" vermek vega temasında ölçüldü: mobil LCP
   6,5 sn'den 17,5 sn'ye çıkmıştı.

   theme.js bir emniyet ağı kuruyor: loading özniteliği yazılmamış her
   görseli açılışta tembelleştiriyor. Yani unutulsa bile kural işler.
   ===================================================================== */
.hp-img {
  /* GRİ YER TUTUCU + PARILTI

     Görsel inene kadar yeri boş kalmasın: kutu gri duruyor ve üzerinden
     yavaş bir parıltı geçiyor. Görsel gelince ikisi de kapanıyor.

     JS KÜTÜPHANESİ KULLANILMADI. Tembel yükleme zaten tarayıcının kendi
     `loading="lazy"` özelliğiyle yapılıyor; buradaki iş yalnızca GÖRSEL
     bir dolgu. Kütüphane eklemek istek sayısını azaltmaz, üstüne bir de
     JavaScript yükü bindirirdi.

     Kutunun ölçüsü kapsayıcıdan geliyor (aspect-ratio), bu yüzden gri
     alan görselle tam aynı yeri kaplıyor ve düzen kaymıyor. */
  background-color: var(--hp-surface-highest);
  background-image: linear-gradient(90deg,
                    transparent 0%,
                    rgba(255, 255, 255, .55) 50%,
                    transparent 100%);
  background-size: 220% 100%;
  background-repeat: no-repeat;
  animation: hp-parilti 1.6s ease-in-out infinite;
}

/* Görsel geldi: gri zemin ve parıltı kalkar. */
.hp-img.is-loaded { background: none; animation: none; }

@keyframes hp-parilti {
  from { background-position: 120% 0; }
  to   { background-position: -120% 0; }
}

/* JS yoksa `is-loaded` hiç eklenmez; gri kutu sonsuza kadar kalmasın. */
.no-js .hp-img { background: none; animation: none; }

@media (prefers-reduced-motion: reduce) {
  .hp-img { animation: none; }
}

/* =====================================================================
   SLIDER  —  yeniden kullanılabilir, SINIF tabanlı
   ---------------------------------------------------------------------
   ID KULLANILMIYOR: aynı sayfada istenildiği kadar slider olabilir,
   hiçbiri diğerini etkilemez. Her biri kendi kökü içinde çalışır.

   İSKELET
     <div class="hp-slider" data-hp-slider data-autoplay="6000">
       <div class="hp-slider-viewport">
         <div class="hp-slider-track">
           <div class="hp-slide">...</div>
           <div class="hp-slide">...</div>
         </div>
       </div>
       <div data-hp-slider-nav>            (isteğe bağlı)
         <button>1</button><button>2</button>
       </div>
       <button data-hp-slider-prev>        (isteğe bağlı)
       <button data-hp-slider-next>
       <div data-hp-slider-dots></div>     (isteğe bağlı, kendi üretir)
     </div>

   SEÇENEKLER (data-* ile)
     data-autoplay="6000"      ms; 0 veya yoksa otomatik geçiş yok
     data-axis="x|y"           varsayılan x; y dikey kayar (şerit için)
     data-loop="false"         varsayılan true
     data-pause-hover="false"  varsayılan true

   Ayrıntı ve davranış: assets/js/theme.js
   ===================================================================== */
.hp-slider { position: relative; }

.hp-slider-viewport { overflow: hidden; width: 100%; }

.hp-slider-track {
  display: flex;
  transition: transform .55s cubic-bezier(.4, 0, .2, 1);
  will-change: transform;
}
.hp-slider[data-axis="y"] .hp-slider-track { flex-direction: column; }

/* SLAYT GENİŞLİĞİ — aynı anda kaç tane görüneceğine göre

   --hp-per-view JavaScript tarafından yazılıyor (ekran kırılımına göre
   değişebiliyor), varsayılanı 1. Aradaki boşluk formülden düşülüyor;
   düşülmeseydi beş slayt + dört boşluk viewport'u aşar ve sonuncusu
   kırpılırdı.

   Kaydırma adımı çoklu görünümde piksel cinsinden hesaplanıyor
   (theme.js içindeki ciz fonksiyonu); boşluk ne olursa olsun hizalama
   doğru kalıyor. */
.hp-slider-track { gap: var(--hp-slide-gap, 0px); }

.hp-slide {
  flex: 0 0 calc((100% - (var(--hp-per-view, 1) - 1) * var(--hp-slide-gap, 0px)) / var(--hp-per-view, 1));
  min-width: 0;
}
.hp-slider[data-axis="y"] .hp-slide { flex: 0 0 auto; width: 100%; }

/* Sürükleme sırasında geçiş kapanır, parmak takip edilsin. */
.hp-slider.is-dragging .hp-slider-track { transition: none; }
.hp-slider.is-dragging { cursor: grabbing; }

/* Otomatik üretilen noktalar */
.hp-slider-dots { display: flex; align-items: center; gap: 6px; }
.hp-slider-dots button {
  width: 8px; height: 8px; padding: 0; border: 0; border-radius: 999px;
  background: var(--hp-outline-variant); cursor: pointer;
  transition: background-color .2s ease, width .2s ease;
}
.hp-slider-dots button[aria-current="true"] {
  background: var(--hp-primary); width: 20px;
}

@media (prefers-reduced-motion: reduce) {
  .hp-slider-track { transition: none; }
}

/* =====================================================================
   SON DAKİKA ŞERİDİ  —  dikey slider
   ---------------------------------------------------------------------
   Önce yatay kayan tek satırdı (marquee). Vega'daki gibi SAAT + BAŞLIK
   ikilisi hâline getirildi ve haberler teker teker dikey olarak
   değişiyor: okunabilirlik marquee'den belirgin şekilde iyi, çünkü göz
   hareket eden metni takip etmek zorunda kalmıyor.
   ===================================================================== */
.hp-newsbar { flex: 1; min-width: 0; }
.hp-newsbar .hp-slider-viewport { height: 40px; }
.hp-newsbar .hp-slide {
  height: 40px; display: flex; align-items: center; gap: var(--hp-space-3);
}
.hp-newsbar-time {
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: 18px; line-height: 1; color: var(--hp-on-primary);
  flex: 0 0 auto; letter-spacing: -.01em;
}
.hp-newsbar-sep { width: 1px; height: 14px; background: var(--hp-outline-variant); flex: 0 0 auto; }
.hp-newsbar-title {
  font-size: 14px; line-height: 22px; color: var(--hp-on-primary);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: color .2s ease;
}
.hp-newsbar a:hover .hp-newsbar-title { color: var(--hp-surface-low); }

/* =====================================================================
   ARAMA PANELİ  —  üstten açılan
   ===================================================================== */
/* Arama katmanı içeriği kadar yüksek olmalı.
   İşaretlemede `style="height:auto"` vardı ama işe yaramıyordu:
   öğe `position:fixed` ve hem `top:0` hem `bottom:0` alıyor, bu
   durumda `height:auto` içerik yüksekliğine değil iki uç arasına
   (tam ekran) genişliyor. Ölçüldü: içerik 222px, katman 800px.
   Altındaki boşluk, "Popüler Aramalar" kutusu kaldırılınca iyice
   göze battı. `bottom:auto` ile bağ kopuyor ve yükseklik gerçekten
   içeriğe oturuyor. */
.hp-search { border: 0; bottom: auto; height: auto; }
.hp-search .offcanvas-body { padding: 0; }

.hp-search-inner {
  max-width: var(--hp-max-width);
  margin-inline: auto;
  padding: var(--hp-space-12) var(--hp-margin);
}

.hp-search-field {
  display: flex; align-items: center; gap: var(--hp-space-3);
  border-bottom: 2px solid var(--hp-on-surface);
  padding-bottom: var(--hp-space-3);
}
.hp-search-field input {
  flex: 1; min-width: 0; border: 0; outline: 0; background: transparent;
  font-family: var(--hp-font-headline); font-weight: 600;
  font-size: 36px; line-height: 44px; color: var(--hp-on-surface);
}
/* Yer tutucu --hp-outline-variant (#e5bdbb) ile fazla soluk ve
   pembeye kaciyordu; arama kutusunda okunmasi gereken bir metin.
   --hp-outline (#906f6e) hem token ailesinden hem yeterli kontrast. */
.hp-search-field input::placeholder { color: var(--hp-outline); }

.hp-search-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 14px; border-radius: 999px;
  background: var(--hp-surface-low); color: var(--hp-on-surface-variant);
  font-size: 14px; line-height: 22px;
  transition: background-color .2s ease, color .2s ease;
}
.hp-search-chip:hover { background: var(--hp-primary); color: var(--hp-on-primary); }

.author_avatar {
	width:110px;height:110px
	
	}
.author-article-title{
	font-size:var(--hp-fs-article-title);
	}
.top_content_title{ font-size:var(--hp-fs-top_content_title); }

.h-120{ height:120px !important;}

.home-gallery-title{ line-height:1.25;color:#fff; font-size:var(--hp-fs-gallery-title); }

@media (max-width: 767.98px) {
  .hp-search-inner { padding: var(--hp-space-6) 16px; }
  .hp-search-field input { font-size: 24px; line-height: 32px; }
}

/* =====================================================================
   SAĞ PANEL  —  ekranın %30'u
   ---------------------------------------------------------------------
   Yüzde ölçü dar ekranda kullanışsız kalıyor (390px'in %30'u 117px),
   bu yüzden alt sınır konuldu ve mobilde tam genişliğe çıkıyor.
   ===================================================================== */
.hp-panel { --bs-offcanvas-width: 30%; min-width: 380px; }
@media (max-width: 767.98px) { .hp-panel { --bs-offcanvas-width: 100%; min-width: 0; } }

.hp-panel .offcanvas-header {
  border-bottom: 1px solid var(--hp-outline-variant);
  padding: var(--hp-space-4) var(--hp-space-6);
}
.hp-panel .offcanvas-body { padding: var(--hp-space-6); }

.hp-panel-section + .hp-panel-section {
  margin-top: var(--hp-space-6);
  padding-top: var(--hp-space-6);
  border-top: 1px solid var(--hp-outline-variant);
}
.hp-panel-heading {
  font-family: var(--hp-font-headline); font-weight: 600;
  font-size: 18px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--hp-on-surface-variant);
  margin-bottom: var(--hp-space-3);
}
.hp-panel-link {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px var(--hp-space-3); border-radius: var(--hp-radius);
  color: var(--hp-on-surface);
  font-family: var(--hp-font-headline); font-weight: 600; font-size: var(----hp-fs-hp-h-sm);
  text-transform: uppercase;
  transition: background-color .2s ease, color .2s ease;
}
.hp-panel-link:hover { background: var(--hp-surface-low); color: var(--hp-primary); }

/* İçi doldurulmayı bekleyen alan — kullanıcının planı geldiğinde
   burası değişecek. */
.hp-panel-slot {
  border: 1px dashed var(--hp-outline-variant);
  border-radius: var(--hp-radius-lg);
  padding: var(--hp-space-4);
  text-align: center;
  color: var(--hp-on-surface-variant);
}

/* =====================================================================
   SÜRMANŞET BANDI
   ---------------------------------------------------------------------
   Header ile manşet arasında duran dar şerit. Dört haber.

   NEDEN BU DÜZEN
   Sayfadaki diğer dört kart biçimi zaten kullanılmıştı:
     · manşet        -> büyük 16:9, metin görselin üstünde
     · yan manşet    -> görsel solda, başlık sağda, yuvarlak köşeli kart
     · öne çıkanlar  -> görsel üstte, metin altta
     · en çok okunan -> büyük sıra numarası + tek satır başlık
   Beşinci bir kart biçimi icat etmek yerine AYRAÇLI ŞERİT seçildi:
   gazete sayfasının klasik dili, sayfada başka hiçbir yerde yok ve
   dikey olarak çok az yer kaplıyor — manşetin baskınlığını bozmuyor.

   YÜKSEKLİK BİLEREK KÜÇÜK. Bu band manşetin ÜSTÜNDE; büyürse manşeti
   ekranın altına iter ve sayfanın ilk izlenimi zayıflar. Görseller
   72x72 kare, başlık iki satırla sınırlı.

   LCP: buradaki görseller `loading="lazy"`. Ekranın üstünde oldukları
   için tarayıcı zaten hemen indiriyor, ama manşetin `fetchpriority=high`
   görseliyle bant genişliği YARIŞMIYORLAR. Vega'da dört fazladan
   öncelikli görsel mobil LCP'yi 6,5 sn'den 9 sn'ye çıkarmıştı.
   ===================================================================== */
.hp-subhead {
    background: var(--hp-surface-low);
    /* border-bottom: 1px solid var(--hp-outline-variant); */
    margin: 10px 0px;
}

.hp-subhead-row {
  display: flex;
  align-items: stretch;
  gap: var(--hp-space-4);
}

/* Sol etiket — dikey yazılmış, dar ve kırmızı. */
.hp-subhead-label {
  flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  background: var(--hp-primary); color: var(--hp-on-primary);
  border-radius: var(--hp-radius);
  padding: var(--hp-space-3) 6px;
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: 15px; letter-spacing: .12em; text-transform: uppercase;
  writing-mode: vertical-rl; transform: rotate(180deg);
  white-space: nowrap;
}

.hp-subhead-items {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
}

/* AYRAÇ: bandın kimliği. Kart gölgesi/çerçevesi yok, maddeleri
   birbirinden yalnızca 1px'lik çizgi ayırıyor. */
.hp-subhead-item {
  flex: 1 1 0; min-width: 0;
  display: flex; align-items: center; gap: var(--hp-space-3);
  padding: var(--hp-space-3) var(--hp-space-4);
  border-left: 1px solid var(--hp-outline-variant);
  transition: background-color .2s ease;
}
.hp-subhead-item:first-child { border-left: 0; }
.hp-subhead-item:hover { background: var(--hp-surface-lowest); }

.hp-subhead-media {
  flex: 0 0 auto;
  width: 72px; height: 72px;
  border-radius: var(--hp-radius);
  overflow: hidden;
  position: relative;
}
.hp-subhead-media > img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .5s ease;
}
.hp-subhead-item:hover .hp-subhead-media > img { transform: scale(1.08); }

.hp-subhead-text { min-width: 0; display: flex; flex-direction: column; gap: 2px; }

.hp-subhead-cat {
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: 12px; letter-spacing: .08em; text-transform: uppercase;
  line-height: 1;
}

.hp-subhead-title {
  font-family: var(--hp-font-body); font-weight: 700;
  font-size: 15px; line-height: 20px; color: var(--hp-on-surface);
  margin: 0;
  display: -webkit-box; -webkit-box-orient: vertical;
  /* ÜÇ SATIR: iki satırda başlıklar kelime ortasından kesiliyordu
     ("... Oksij…"). Metin sütunu 190px; gerçek haber başlıkları
     için iki satır yetmiyor. Görsel 72px olduğu için üçüncü satır
     banda yükseklik EKLEMİYOR — öğe yüksekliğini zaten görsel
     belirliyordu. */
  -webkit-line-clamp: 3; overflow: hidden;
  transition: color .2s ease;
}
.hp-subhead-item:hover .hp-subhead-title { color: var(--hp-primary); }

.hp-subhead-time {
  font-size: 12px; line-height: 16px; color: var(--hp-on-surface-variant);
  display: flex; align-items: center; gap: 4px;
}

/* ---------------------------------------------------------------------
   MOBİL — yatay kaydırma + hizalama

   Dört maddeyi alt alta dizmek bandı 4 katına çıkarır ve manşeti
   ekrandan tamamen atardı. Yatayda kaydırılıp her maddede duruyor
   (scroll-snap); JavaScript gerekmiyor.
   --------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .hp-subhead-row { flex-direction: column; gap: var(--hp-space-2); }

  .hp-subhead-label {
    writing-mode: horizontal-tb; transform: none;
    align-self: flex-start;
    padding: 4px 10px; font-size: 13px;
  }

  .hp-subhead-items {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
  }
  .hp-subhead-item {
    flex: 0 0 84%;
    scroll-snap-align: start;
    padding: var(--hp-space-2) var(--hp-space-3);
  }
  .hp-subhead-item:first-child { padding-left: 0; }
}

/* =====================================================================
   REKLAM ENVANTERİ
   ---------------------------------------------------------------------
   Altı yuva, TEK bileşen. Ölçü `--hp-ad-w` / `--hp-ad-h` ile veriliyor;
   her yuva için ayrı bir kutu stili yazılmıyor.

   HEPSİ CLS KORUMALI. Yükseklik önceden ayrılıyor, reklam geç gelse de
   sayfa zıplamıyor. Reklam sunucusu yavaşladığında düzenin bozulmaması
   pazarlık konusu değil: Core Web Vitals'ta CLS'i en çok bozan şey
   ölçüsü bildirilmemiş reklamlardır.

   YUVALAR
     hp-ad-masthead     970x250   header'ın altı            (en değerli)
     hp-ad-leaderboard  728x90    bölümler arası
     hp-ad-halfpage     300x600   yan sütun, yapışkan
     hp-ad-rail         160x600   içeriğin DIŞINDA sol/sağ ray
     hp-ad-mobile       320x50    mobilde ekranın altına sabit

   Her yuvanın mobil karşılığı ayrıca tanımlı: 970px'lik kutuyu 390px
   ekranda yüzdeye çevirmek yetmez, YÜKSEKLİK de değişmeli yoksa
   ekranın yarısını boş bir kutu kaplar.
   ===================================================================== */

.hp-ad {
  position: relative;
  width: var(--hp-ad-w, 100%);
  height: var(--hp-ad-h, 90px);
  max-width: 100%;
  flex: 0 0 auto;
  background: var(--hp-surface-high);
  border-radius: var(--hp-radius-lg);
  box-shadow: inset 0 2px 4px rgba(0,0,0,.05);
  overflow: hidden;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 6px;
  text-align: center;
  color: var(--hp-on-surface-variant);
}

.hp-ad-label {
  position: absolute; top: 6px; left: 8px;
  font-size: 10px; line-height: 1; letter-spacing: .12em;
  text-transform: uppercase; color: var(--hp-outline);
}

.hp-ad-note { font-size: 12px; line-height: 16px; margin: 0; }

/* Ortalayıcı sarmalayıcı — bölümler arasına konan yuvalar için. */
.hp-ad-wrap { display: flex; justify-content: center; }

/* ---- 970x250 masthead ------------------------------------------- */
.hp-ad-masthead { --hp-ad-w: 970px; --hp-ad-h: 250px; }
@media (max-width: 991.98px) {
  .hp-ad-masthead { --hp-ad-w: 100%; --hp-ad-h: 100px; }
}

/* ---- 728x90 bölüm arası ------------------------------------------ */
.hp-ad-leaderboard { --hp-ad-w: 728px; --hp-ad-h: 90px; }
@media (max-width: 767.98px) {
  .hp-ad-leaderboard { --hp-ad-w: 100%; --hp-ad-h: 100px; }
}

/* ---- 300x600 yan sütun ------------------------------------------- */
.hp-ad-halfpage { --hp-ad-w: 300px; --hp-ad-h: 600px; }

/* ---- 160x600 SOL/SAĞ RAY  —  içeriğin dışında -------------------
   Vega'da bu alanlar `position:fixed; margin-left:-180px` ile
   sabitlenmişti ve MEDYA SORGUSU YOKTU: dar ekranda içeriğin üstüne
   biniyorlardı. Burada raylar ancak GERÇEKTEN YER VARSA görünüyor.

   Hesap: içerik 1280px, ray 160px, aradaki boşluk 24px.
       1280 + 2 x (160 + 24) = 1648px
   Bu yüzden eşik 1660px. Altında raylar hiç çizilmiyor.
   ------------------------------------------------------------------ */
.hp-ad-rail {
  --hp-ad-w: 160px; --hp-ad-h: 600px;
  position: fixed;
  top: 180px;              /* başlığın (144px) altında kalsın */
  z-index: 1020;           /* header 1030, offcanvas 1045 */
  display: none;
}
.hp-ad-rail-left  { left: calc(50% - 640px - 184px); }
.hp-ad-rail-right { left: calc(50% + 640px + 24px); }

@media (min-width: 1660px) {
  .hp-ad-rail { display: flex; }
}

/* ---- 320x50 MOBİL YAPIŞKAN --------------------------------------
   Yalnızca mobilde ve ekranın altında sabit. Kapatma düğmesi ŞART:
   kapatılamayan yapışkan reklam hem kullanıcıyı kaçırıyor hem de
   Google'ın "araya giren geçiş reklamı" ölçütüne takılıyor.

   `body` altına dolgu ekleniyor (theme.js), yoksa şerit alt bilginin
   son satırını örtüyor.
   ------------------------------------------------------------------ */
.hp-ad-mobile {
  --hp-ad-w: 320px; --hp-ad-h: 50px;
  position: fixed; left: 50%; transform: translateX(-50%);
  bottom: 0; z-index: 1035;
  display: none;
  border-radius: var(--hp-radius-lg) var(--hp-radius-lg) 0 0;
  box-shadow: 0 -2px 12px rgba(0,0,0,.12);
}
@media (max-width: 767.98px) {
  .hp-ad-mobile { display: flex; }
}
.hp-ad-mobile.is-closed { display: none !important; }

.hp-ad-close {
  position: absolute; top: -22px; right: 0;
  width: 22px; height: 22px; padding: 0; border: 0;
  border-radius: var(--hp-radius) var(--hp-radius) 0 0;
  background: var(--hp-surface-high); color: var(--hp-on-surface-variant);
  display: flex; align-items: center; justify-content: center;
  line-height: 0;
}

/* =====================================================================
   YUKARI ÇIK
   ---------------------------------------------------------------------
   Sağ altta, standart yer. İki ayrıntı sıradan bir düğmeden ayırıyor:

   1) OKUMA İLERLEMESİ HALKASI. Düğmenin çevresi konik bir degrade;
      dolu kısım sayfanın okunan oranı, `--hp-scroll` (0-100)
      JavaScript'ten geliyor. Kullanıcı hem "başa dön" düğmesini hem de
      nerede olduğunu tek öğede görüyor — 8000px'lik bir ana sayfada
      işe yarıyor.

   2) MOBİL YAPIŞKAN REKLAMLA ÇAKIŞMIYOR. Alt boşluk
      `--hp-bottom-offset` üzerinden hesaplanıyor; reklam görünürken
      theme.js bu değeri yazıyor, kapatılınca siliyor. Sabit bir
      `bottom` yazılsaydı reklam kapatıldığında düğme havada kalırdı.

   Görünme eşiği 400px: daha erken çıkarsa kullanıcı daha okumaya
   başlamadan ekranı meşgul ediyor.
   ===================================================================== */
.hp-top {
  position: fixed;
  right: 24px;
  bottom: calc(24px + var(--hp-bottom-offset, 0px));
  z-index: 1030;                 /* header 1030, offcanvas 1045 */

  width: 52px; height: 52px; padding: 3px;
  border: 0; border-radius: 999px;
  cursor: pointer;

  /* Halka: dolu kısım okunan oran. */
  background: conic-gradient(
    var(--hp-primary) calc(var(--hp-scroll, 0) * 1%),
    var(--hp-surface-highest) 0
  );

  opacity: 0; visibility: hidden; transform: translateY(12px) scale(.9);
  transition: opacity .25s ease, transform .25s ease, visibility .25s ease,
              bottom .25s ease;
}

.hp-top.is-on { opacity: 1; visibility: visible; transform: none; }

.hp-top-inner {
  width: 100%; height: 100%; border-radius: 999px;
  background: var(--hp-primary); color: var(--hp-on-primary);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 4px 14px rgba(0,0,0,.22);
  transition: background-color .2s ease;
}
.hp-top:hover .hp-top-inner { background: var(--hp-primary-container); }
.hp-top:focus-visible { outline: 2px solid var(--hp-on-surface); outline-offset: 3px; }

@media (max-width: 575.98px) {
  .hp-top { right: 16px; width: 46px; height: 46px; }
}

@media (prefers-reduced-motion: reduce) {
  .hp-top { transition: none; }
}

/* =====================================================================
   SÜRMANŞET B  —  görsel üstünde yazı
   ---------------------------------------------------------------------
   A ile aynı işi yapan ikinci seçenek. Karşılaştırıp birini seçmek için
   ikisi de sayfada duruyor.

   A: yatay şerit, 72px kare küçük görsel, yazı yanda, aralarında ayraç
   B: 4:3 büyük görsel, yazı görselin ÜSTÜNDE

   TASARIM AYRINTILARI
   Sayfada bindirmeli metin zaten iki yerde var (manşet ve foto galeri),
   ikisi de düz karartma kullanıyor. B'nin onlara benzememesi için üç
   şey eklendi:

     1) ALT KENAR ÇUBUĞU. Kartın en altında 4px'lik kategori rengi.
        Rozet yerine geçiyor — kullanıcı rozet istemedi ama kategori
        bilgisi kaybolmamalı. Gazete sayfasındaki bölüm çizgisinin
        karşılığı.

     2) KADEMELİ KARARTMA. Düz siyah bindirme fotoğrafı öldürüyor.
        Üstte tamamen saydam, altta koyu — fotoğrafın üst yarısı
        olduğu gibi görünüyor.

     3) ÜZERİNE GELİNCE BAŞLIK 3px YUKARI. Küçük ama kartın canlı
        olduğunu hissettiren ayrıntı; karartma da bir tık koyulaşıyor.

   Yazı okunabilirliği: karartmanın altı %92 opaklıkta. Açık renkli bir
   fotoğrafta bile beyaz başlık okunur kalıyor — bindirmeli metinde en
   sık yapılan hata karartmayı yeterince koyu yapmamaktır.
   ===================================================================== */
.hp-sub2-card {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3.4;
  border-radius: var(--hp-radius-lg);
  overflow: hidden;
  background: var(--hp-inverse-surface);
}

.hp-sub2-card > img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .6s ease;
}
.hp-sub2-card:hover > img { transform: scale(1.05); }

.hp-sub2-scrim {
  position: absolute; inset: 0;
  background: linear-gradient(
    to top,
    rgba(25, 28, 32, .92) 0%,
    rgba(25, 28, 32, .70) 28%,
    rgba(25, 28, 32, .18) 55%,
    rgba(25, 28, 32, 0)   80%
  );
  transition: opacity .3s ease;
}
.hp-sub2-card:hover .hp-sub2-scrim { opacity: .88; }

.hp-sub2-text {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: var(--hp-space-4);
  padding-bottom: calc(var(--hp-space-4) + 4px);   /* alt çubuk için yer */
  transition: transform .3s ease;
}
.hp-sub2-card:hover .hp-sub2-text { transform: translateY(-3px); }

/* Güvenli varsayılan: satır içi stil geçersiz bir token'a düşerse
   etiket koyu fotoğrafın üzerinde kaybolmasın. */
.hp-sub2-cat {
  color: #fff;
  display: block;
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: 12px; line-height: 1; letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.hp-sub2-title {
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: var(--hp-fs-hp-sub2-title); line-height: 26px; letter-spacing: -.01em;
  color: #fff; margin: 0;
  display: -webkit-box; -webkit-box-orient: vertical;
  -webkit-line-clamp: 3; overflow: hidden;
}

.hp-sub2-time {
  display: flex; align-items: center; gap: 4px;
  margin-top: 8px;
  font-size: 12px; line-height: 16px;
  color: var(--hp-surface-highest);
}

/* Kategori rengindeki alt kenar çubuğu — rozetin yerini tutuyor. */
.hp-sub2-bar {
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 4px;
}

@media (max-width: 575.98px) {
  .hp-sub2-title { font-size: 19px; line-height: 24px; }
}

/* =====================================================================
   TOP MANŞET  —  tam genişlik şerit
   ---------------------------------------------------------------------
   Vega'daki `topheadline` bloğunun karşılığı. Oradaki iki kusur
   düzeltildi:

     1) GÖRSELLER EZİLİYORDU. Vega: `height:220px; width:100%` ve
        `object-fit` YOK — dikey bir fotoğraf yatay olarak sıkıştırılıp
        deforme oluyor. Burada `object-fit: cover`.

     2) MOBİLDE TAMAMEN GİZLİYDİ (`display:none !important`).
        İçeriği mobilde yok saymak yerine oran değiştiriliyor: geniş
        ekranda 1280x260 şerit, dar ekranda 16:9. Müşteri bloğu
        kapatmak isterse bunu panelden yapar — tema kendi başına
        içerik gizlemez.

   Numaralı gezinme sağ altta duruyor; vega'daki `owl-numbers`
   alışkanlığı korundu ama motor bizim (theme.js -> HpSlider).
   ===================================================================== */
.hp-topman { position: relative; }

.hp-topman .hp-slider-viewport { border-radius: var(--hp-radius-lg); }

.hp-topman-slide {
  position: relative;
  aspect-ratio: 1280 / 260;
  overflow: hidden;
  background: var(--hp-inverse-surface);
}
.hp-topman-slide > img { width: 100%; height: 100%; object-fit: cover; }

.hp-topman-text {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: var(--hp-space-4) var(--hp-space-6);
  background: linear-gradient(to top, rgba(25,28,32,.88), rgba(25,28,32,0));
}
.hp-topman-title {
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: 26px; line-height: 32px; letter-spacing: -.01em;
  color: #fff; margin: 0;
  display: -webkit-box; -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; overflow: hidden;
}

/* Numaralı gezinme — sağ altta, şeridin üstünde. */
.hp-topman-nav {
  position: absolute; right: 12px; bottom: 12px; z-index: 3;
  display: flex; gap: 4px;
}
.hp-topman-nav button {
  width: 30px; height: 30px; padding: 0; border: 0;
  border-radius: var(--hp-radius);
  background: rgba(25, 28, 32, .55); color: #fff;
  font-family: var(--hp-font-headline); font-weight: 700; font-size: 14px;
  backdrop-filter: blur(3px);
  transition: background-color .2s ease;
}
.hp-topman-nav button:hover { background: rgba(25, 28, 32, .8); }
.hp-topman-nav button.active { background: var(--hp-primary); }

/* Oklar yalnızca üzerine gelince — vega'daki davranış. */
.hp-topman-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  z-index: 3;
  width: 44px; height: 44px; padding: 0; border: 0;
  background: rgba(25, 28, 32, .55); color: #fff;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .2s ease, background-color .2s ease;
}
.hp-topman:hover .hp-topman-arrow { opacity: 1; }
.hp-topman-arrow:hover { background: var(--hp-primary); }
.hp-topman-arrow.prev { left: 0;  border-radius: 0 var(--hp-radius) var(--hp-radius) 0; }
.hp-topman-arrow.next { right: 0; border-radius: var(--hp-radius) 0 0 var(--hp-radius); }

/* Dokunmatikte hover yok — oklar hep görünsün. */
@media (hover: none) {
  .hp-topman-arrow { opacity: 1; }
}

@media (max-width: 991.98px) {
  .hp-topman-slide { aspect-ratio: 16 / 9; }
  .hp-topman-title { font-size: 20px; line-height: 26px; }
  .hp-topman-text  { padding: var(--hp-space-3) var(--hp-space-4); }
}

/* =====================================================================
   ÇEREZ BİLGİLENDİRME VE ONAY
   ---------------------------------------------------------------------
   TAM EKRAN KAPLAMA DEĞİL, ALT BANT. İki sebep:

     · Google'ın "araya giren geçiş reklamı" (intrusive interstitial)
       ölçütü mobilde içeriği kapatan katmanları cezalandırıyor.
     · Kullanıcı karar vermeden de haberi okuyabilmeli; onay isteği
       okumanın önüne geçmemeli.

   RET DÜĞMESİ KABULLE EŞİT AĞIRLIKTA. Reddi küçük gri bir bağlantıya
   indirmek karanlık desendir; KVKK ve GDPR rehberleri onayın "açık ve
   özgür irade" ile verilmesini istiyor. İkisi de aynı boyutta, aynı
   belirginlikte.

   KAPATMA (X) DÜĞMESİ YOK. Kapatmak "kabul mü ret mi" belirsiz
   bırakır; belirsiz onay onay değildir. Kullanıcı üç seçenekten birini
   seçmek zorunda ama bu arada sayfayı okuyabiliyor.
   ===================================================================== */
.hp-consent {
  position: fixed;
  left: 0; right: 0;
  bottom: 0;
  z-index: 1040;              /* header 1030, offcanvas 1045 */

  background: var(--hp-surface-lowest);
  border-top: 3px solid var(--hp-primary);
  box-shadow: 0 -6px 28px rgba(0, 0, 0, .14);

  transform: translateY(100%);
  transition: transform .35s cubic-bezier(.2, .7, .3, 1);
}
.hp-consent.is-on { transform: none; }

/* Çerez bandı açıkken mobil yapışkan reklam GÖSTERİLMEZ.

   Sebep görsel değil hukuki: reklam çerezleri onay gerektiriyor,
   onay alınmadan reklamı basmak KVKK/GDPR açısından yanlış. Yan
   faydası, iki bandın ekranın altında üst üste binmesini de
   engellemesi — ölçüldü, biniyorlardı. */
.hp-consent-acik .hp-ad-mobile { display: none !important; }

.hp-consent-inner {
  max-width: var(--hp-max-width);
  margin-inline: auto;
  padding: var(--hp-space-4) var(--hp-margin);
  display: flex; align-items: center; gap: var(--hp-space-6);
}

.hp-consent-main { flex: 1 1 auto; min-width: 0; }

.hp-consent-title {
  font-family: var(--hp-font-headline); font-weight: 700;
  font-size: 20px; line-height: 26px; text-transform: uppercase;
  letter-spacing: .01em; margin: 0 0 4px;
}

.hp-consent-text {
  font-size: 14px; line-height: 21px;
  color: var(--hp-on-surface-variant); margin: 0;
}
.hp-consent-text a { color: var(--hp-primary); text-decoration: underline; }

.hp-consent-actions {
  flex: 0 0 auto;
  display: flex; align-items: center; gap: var(--hp-space-2);
}

/* Üç düğme de aynı yükseklikte; kabul ile ret aynı genişlikte. */
.hp-consent-actions .hp-btn { font-size: 14px; padding: 10px 22px; min-width: 132px; }

.hp-btn-ghost {
  background: transparent;
  color: var(--hp-on-surface-variant);
  text-decoration: underline;
  min-width: 0 !important;
}
.hp-btn-ghost:hover { color: var(--hp-primary); }

.hp-btn-outline {
  background: transparent;
  color: var(--hp-on-surface);
  box-shadow: inset 0 0 0 2px var(--hp-on-surface);
}
.hp-btn-outline:hover { background: var(--hp-on-surface); color: var(--hp-surface-lowest); }

/* ---- Ayrıntı paneli (kategori seçimi) ---------------------------- */
.hp-consent-detail {
  border-top: 1px solid var(--hp-outline-variant);
  background: var(--hp-surface-low);
}
.hp-consent-detail-inner {
  max-width: var(--hp-max-width);
  margin-inline: auto;
  padding: var(--hp-space-4) var(--hp-margin);
}

.hp-consent-row {
  display: flex; align-items: flex-start; gap: var(--hp-space-3);
  padding: var(--hp-space-3) 0;
  border-bottom: 1px solid var(--hp-outline-variant);
}
.hp-consent-row:last-of-type { border-bottom: 0; }

.hp-consent-row h3 {
  font-family: var(--hp-font-headline); font-weight: 600;
  font-size: 17px; line-height: 22px; margin: 0 0 2px;
}
.hp-consent-row p {
  font-size: 13px; line-height: 19px;
  color: var(--hp-on-surface-variant); margin: 0;
}

.hp-consent-row .form-check.form-switch { flex: 0 0 auto; padding-left: 2.6em; margin: 0; }
.hp-consent-row .form-check-input { width: 2.2em; height: 1.2em; margin-left: -2.6em; cursor: pointer; }
.hp-consent-row .form-check-input:checked { background-color: var(--hp-primary); border-color: var(--hp-primary); }
.hp-consent-row .form-check-input:disabled { opacity: .55; cursor: not-allowed; }

/* ---- Mobil ------------------------------------------------------- */
@media (max-width: 767.98px) {
  .hp-consent-inner {
    flex-direction: column; align-items: stretch; gap: var(--hp-space-3);
    padding: var(--hp-space-3) 16px;
  }
  .hp-consent-detail-inner { padding: var(--hp-space-3) 16px; }

  /* Dar ekranda üç düğme yan yana sıkışıyor: ayarlar üste alınıyor,
     kabul ve ret altta eşit genişlikte yan yana kalıyor. */
  .hp-consent-actions { flex-wrap: wrap; }
  .hp-consent-actions .hp-btn-ghost { order: -1; width: 100%; text-align: center; }
  .hp-consent-actions .hp-btn:not(.hp-btn-ghost) { flex: 1 1 0; min-width: 0; }

  .hp-consent-title { font-size: 18px; line-height: 24px; }
  .hp-consent-text  { font-size: 13px; line-height: 19px; }

  /* Kategori satırında anahtar sağa alınıyor. */
  .hp-consent-row { align-items: center; }
}

@media (prefers-reduced-motion: reduce) {
  .hp-consent { transition: none; }
}

/* =====================================================================
   REKLAM — DOLU YUVA  ·  SİTE ÖNÜ
   ---------------------------------------------------------------------
   Bu blok dosyanın SONUNDA duruyor. `.hp-ad` yukarıda tanımlı ve aynı
   özgüllükte; buradaki kurallar önce yazılsaydı sessizce ezilirdi.
   (Aynı tuzağa e-bülten koyu zemini ve mobil manşet oranında düşüldü.)
   ===================================================================== */

/* Yuvada gerçek reklam varken yer tutucu görünümü kalkıyor: gri zemin
   ve iç gölge, reklamın kendi zeminiyle çakışıyordu. Ölçü sınıfı
   (hp-ad-masthead vb.) duruyor, yani ayrılmış yükseklik korunuyor —
   CLS koruması reklam gelince de geçerli. */
.hp-ad.is-dolu {
  background: transparent;
  box-shadow: none;
}

/* Reklam kodu kutuyu taşırmasın. Reklam ağları çoğu zaman kendi
   ölçüsünü dayatıyor; taşan iframe yatay kaydırma çubuğu çıkarıyordu. */
.hp-ad.is-dolu > *:not(.hp-ad-label) { max-width: 100%; max-height: 100%; }
.hp-ad.is-dolu img,
.hp-ad.is-dolu iframe { display: block; max-width: 100%; max-height: 100%; border: 0; }

/* "Reklam" etiketi creative'in üstünde kalıyor; okunabilirlik için
   ince bir zemin. Etiketi tamamen kaldırmak yerine bırakıldı —
   reklamın reklam olduğunu belirtmek yayıncı sorumluluğu. */
.hp-ad.is-dolu > .hp-ad-label {
  top: 0; left: 0;
  padding: 1px 5px;
  background: rgba(255,255,255,.82);
  border-radius: 0 0 var(--hp-radius) 0;
}

/* ---------------------------------------------------------------------
   SİTE ÖNÜ (yuva 5) — tam ekran geçiş reklamı

   Vega'daki karşılığı jQuery ile yazılmıştı; burada saf JS
   (theme.js -> HpSiteOnu). Davranış aynı: 10 saniyelik geri sayım,
   "Reklamı Geç" düğmesi, kapatınca 1 saatlik çerez.

   Kapatma düğmesi ve geri sayım ŞART: kapatılamayan tam ekran geçiş
   reklamı Google'ın "araya giren geçiş reklamı" ölçütüne takılıyor ve
   mobil aramada sıra kaybettiriyor.
   --------------------------------------------------------------------- */
.hp-interstitial {
  position: fixed; inset: 0; z-index: 2000;
  display: none;
  flex-direction: column; align-items: center; justify-content: center;
  gap: 16px;
  padding: 16px;
  background: rgba(0,0,0,.88);
}
.hp-interstitial.is-acik { display: flex; }

.hp-interstitial-bar {
  display: flex; align-items: center; gap: 12px;
  width: 100%; max-width: 970px;
  justify-content: flex-end;
}
.hp-interstitial-sec {
  font-size: 12px; letter-spacing: .04em;
  color: rgba(255,255,255,.7);
}
.hp-interstitial-skip {
  border: 1px solid rgba(255,255,255,.35);
  background: transparent; color: #fff;
  font-size: 13px; font-weight: 600;
  padding: 6px 14px; border-radius: var(--hp-radius);
  cursor: pointer;
}
.hp-interstitial-skip:hover { background: rgba(255,255,255,.12); }

.hp-interstitial-body {
  max-width: 100%; max-height: 78vh;
  overflow: auto;
}
.hp-interstitial-body img,
.hp-interstitial-body iframe { display: block; max-width: 100%; height: auto; border: 0; }

/* Anket SONUÇ satırı tıklanabilir değil; oy formundakiyle aynı kutuyu
   kullanıyor ama imleci ve vurgusu olmamalı — yoksa okur tekrar
   oy verebileceğini sanıyor. */
.hp-poll-option.is-sonuc { cursor: default; }
.hp-poll-option.is-sonuc:hover { background: var(--hp-surface-low); }

/* =====================================================================
   SPOR ARENA  —  saha temalı bölüm
   ---------------------------------------------------------------------
   Dosyanın SONUNDA: `.hp-card`, `.hp-table`, `.hp-rank` yukarıda tanımlı
   ve buradaki kurallar onları eziyor. Önce yazılsaydı sessizce
   kaybolurdu (aynı tuzağa daha önce iki kez düşüldü).

   RENK TEK YERDEN. Bloğun kök öğesine PHP dört değişken basıyor:
       --hp-arena-accent      vurgu (panelden, ör. #8BC34A)
       --hp-arena-accent-rgb  aynı rengin r,g,b üçlüsü (rgba için)
       --hp-arena-deep        vurgudan türetilmiş koyu zemin
       --hp-arena-deep2       daha koyusu (gradyanın orta durağı)
       --hp-arena-on-accent   vurgunun ÜSTÜNE yazılacak renk (parlaklığa göre)
   Böylece panelden tek renk değişince bölümün tamamı — zemin, çizgiler,
   rozet, sıra numarası, düğme — birlikte dönüyor.

   `color-mix()` KULLANILMADI: Safari 16.2 ve öncesinde yok. Tonlar
   PHP'de hesaplanıp değişken olarak basılıyor.
   ===================================================================== */

.hp-arena {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: var(--hp-space-16);
  color: #e9f3e0;
  background:
    radial-gradient(1000px 460px at 4% -22%, rgba(var(--hp-arena-accent-rgb), .40), transparent 64%),
    radial-gradient(760px 400px at 97% 118%, rgba(var(--hp-arena-accent-rgb), .26), transparent 62%),
    linear-gradient(158deg, var(--hp-arena-deep) 0%, var(--hp-arena-deep2) 52%, var(--hp-arena-deep) 100%);
}

/* Saha deseni. `slice` ile daima kaplıyor; oran korunduğu için dar
   ekranda çizgiler ezilmiyor, kırpılıyor. */
.hp-arena-art {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  color: var(--hp-arena-accent);
  pointer-events: none;
  z-index: -1;
}

/* Üst ve alt kenara yumuşak geçiş — koyu bandın sınırı jilet gibi
   durmasın, komşu açık bölümlere yedirilsin. */
.hp-arena::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(0,0,0,.16) 0%, transparent 14%, transparent 88%, rgba(0,0,0,.20) 100%);
  pointer-events: none;
}

/* ---- Başlık ---- */
.hp-arena-head {
  display: flex; flex-wrap: wrap; align-items: flex-end;
  justify-content: space-between; gap: var(--hp-space-4);
  padding-bottom: var(--hp-space-8);
}
.hp-arena-title {
  display: flex; align-items: center; gap: var(--hp-space-3);
  margin: 0; color: #fff;
}
.hp-arena-title .hp-bar {
  background: var(--hp-arena-accent);
  box-shadow: 0 0 18px rgba(var(--hp-arena-accent-rgb), .55);
}
.hp-arena-kicker {
  margin: 6px 0 0 22px;
  color: rgba(233,243,224,.62);
  font-size: 13px; line-height: 20px;
}
.hp-arena-all {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 16px; border-radius: 999px;
  border: 1px solid rgba(var(--hp-arena-accent-rgb), .55);
  color: var(--hp-arena-accent);
  font-family: var(--hp-font-headline);
  font-size: 16px; letter-spacing: .04em; text-transform: uppercase;
  transition: background-color .2s ease, color .2s ease, border-color .2s ease;
  flex-shrink: 0;
}
.hp-arena-all:hover {
  background: var(--hp-arena-accent);
  border-color: var(--hp-arena-accent);
  color: var(--hp-arena-on-accent);
}

/* ---- Kartlar: koyu cam ----
   Açık `.hp-card` bu zeminde beyaz bir yama gibi duruyordu. Saydam cam,
   sahanın deseninin kartın altından geçmesini sağlıyor. */
.hp-arena-card {
  position: relative;
  display: flex; flex-direction: column;
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: var(--hp-radius-lg);
  overflow: hidden;
  transition: background-color .25s ease, border-color .25s ease, transform .25s ease;
}
.hp-arena-card:hover {
  background: rgba(255,255,255,.09);
  border-color: rgba(var(--hp-arena-accent-rgb), .45);
  transform: translateY(-2px);
}
.hp-arena-card .hp-hl { color: #fff; }
.hp-arena-card:hover .hp-hl { color: var(--hp-arena-accent); }

/* Hero: masaüstünde görsel solda, mobilde tam genişlik.
   Eskiden inline `max-width:50%` vardı ve mobilde theme.js düzeltiyordu
   ([data-hp-half]); ölçüyü CSS'e almak o JS bağımlılığını kaldırdı. */
.hp-arena-hero { flex-direction: column; }
.hp-arena-hero-media { width: 100%; flex-shrink: 0; border-radius: 0; }
.hp-arena-hero-body {
  display: flex; flex-direction: column; justify-content: space-between;
  gap: var(--hp-space-4); padding: var(--hp-space-6); flex: 1 1 auto;
}
@media (min-width: 768px) {
  .hp-arena-hero { flex-direction: row; }
  .hp-arena-hero-media { width: 46%; }
}

/* Küçük kartlar eşit yükseklikte; alt satır dibe yapışıyor, başlıklar
   farklı uzunlukta olsa da meta satırları hizalı kalıyor. */
.hp-arena-mini { height: 100%; padding: var(--hp-space-3); }
.hp-arena-mini .hp-media { margin-bottom: var(--hp-space-3); }
.hp-arena-mini-body { display: flex; flex-direction: column; flex: 1 1 auto; gap: var(--hp-space-2); }
.hp-arena-mini-meta { margin-top: auto; }

/* Rozet: sahanın vurgu rengi, üstünde koyu yazı. Kategori rengi burada
   BİLEREK kullanılmıyor — bölümün kendi kimliği var; her karta farklı
   renk rozet koymak sahayı alacalı gösteriyordu. */
.hp-arena-badge {
  display: inline-flex; align-items: center;
  padding: 3px 10px; border-radius: 999px;
  background: var(--hp-arena-accent); color: var(--hp-arena-on-accent);
  font-family: var(--hp-font-headline);
  font-size: 13px; line-height: 18px; letter-spacing: .04em;
  text-transform: uppercase; font-weight: 600;
}
.hp-arena-meta { color: rgba(233,243,224,.62); }
.hp-arena-lead { color: rgba(233,243,224,.78); }

/* ---- Yan sütun: puan cetveli ---- */
.hp-arena-panel { padding: var(--hp-space-4); gap: var(--hp-space-4); }
.hp-arena-panel-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--hp-space-2);
  padding-bottom: var(--hp-space-3);
  border-bottom: 1px solid rgba(255,255,255,.10);
}
.hp-arena-panel-head h3 { color: #fff; margin: 0; display: flex; align-items: center; gap: 8px; }
.hp-arena-week {
  font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  padding: 3px 9px; border-radius: 999px;
  background: rgba(var(--hp-arena-accent-rgb), .16);
  color: var(--hp-arena-accent);
  white-space: nowrap;
}

.hp-arena .hp-table th {
  color: rgba(233,243,224,.5);
  border-bottom: 1px solid rgba(255,255,255,.10);
}
.hp-arena .hp-table td { border-bottom: 1px solid rgba(255,255,255,.055); }
.hp-arena .hp-table tbody tr:last-child td { border-bottom: 0; }
.hp-arena .hp-table tbody tr:hover { background: rgba(var(--hp-arena-accent-rgb), .10); }
.hp-arena .hp-table .hp-t-muted { color: rgba(233,243,224,.55); }
.hp-arena .hp-rank { background: rgba(255,255,255,.10); color: #fff; }
.hp-arena .hp-rank-1 {
  background: var(--hp-arena-accent); color: var(--hp-arena-on-accent);
  box-shadow: 0 0 14px rgba(var(--hp-arena-accent-rgb), .45);
}

/* ---- Haftanın maçı ---- */
.hp-arena-match {
  border-radius: var(--hp-radius-lg);
  padding: var(--hp-space-4);
  background: linear-gradient(180deg, rgba(var(--hp-arena-accent-rgb), .14), rgba(var(--hp-arena-accent-rgb), .04));
  border: 1px solid rgba(var(--hp-arena-accent-rgb), .22);
  text-align: center;
}
.hp-arena-match-when {
  font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--hp-arena-accent); margin-bottom: 10px;
}
.hp-arena-match-row {
  display: grid; grid-template-columns: 1fr auto 1fr;
  align-items: center; gap: var(--hp-space-2);
  font-family: var(--hp-font-headline); font-size: 20px; line-height: 26px; color: #fff;
}
.hp-arena-match-row > :first-child { text-align: right; }
.hp-arena-match-row > :last-child  { text-align: left; }
.hp-arena-vs {
  width: 34px; height: 34px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--hp-arena-accent); color: var(--hp-arena-on-accent);
  font-size: 13px; font-weight: 700; letter-spacing: .02em;
}
.hp-arena-match-where { font-size: 12px; color: rgba(233,243,224,.55); margin-top: 10px; }

.hp-arena-btn {
  display: block; width: 100%; text-align: center;
  padding: 10px 14px; border-radius: var(--hp-radius);
  border: 1px solid rgba(255,255,255,.16);
  background: transparent; color: rgba(233,243,224,.85);
  font-family: var(--hp-font-headline); font-size: 17px; letter-spacing: .03em;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.hp-arena-btn:hover {
  background: rgba(var(--hp-arena-accent-rgb), .14);
  border-color: rgba(var(--hp-arena-accent-rgb), .45);
  color: var(--hp-arena-accent);
}

/* Yer tutucu uyarısı — cetvel gerçek veriye bağlanana kadar. */
.hp-arena-stub {
  font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: rgba(233,243,224,.38); text-align: center;
}

@media (max-width: 991.98px) {
  .hp-arena { padding-block: var(--hp-space-12); }
}
@media (max-width: 575.98px) {
  .hp-arena-head { align-items: flex-start; }
  .hp-arena-match-row { font-size: 17px; }
}

/* =====================================================================
   E-BÜLTEN KARTI — posta deseni
   ---------------------------------------------------------------------
   Zemin olduğu gibi kalıyor (`hp-bg-dark`, antrasit). Üstüne yalnızca
   bir SVG katmanı biniyor: gradyan YOK, düz renk korunuyor.

   Katman `z-index:-1` ile içeriğin ALTINDA; `isolation:isolate` bunu
   karta hapsediyor, yoksa negatif z-index kartın kendi zeminini de
   delip sayfanın arkasına düşerdi.

   Dosyanın SONUNDA: `.hp-card` yukarıda tanımlı, buradaki
   `position: relative` onu tamamlıyor.
   ===================================================================== */

.hp-nl-card {
  position: relative;
  isolation: isolate;
  /* overflow:hidden zaten .hp-card'da var; desen köşeleri taşırmıyor. */
}

.hp-nl-art {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  z-index: -1;
  pointer-events: none;
}

/* =====================================================================
   KATEGORİ SAYFASI
   ---------------------------------------------------------------------
   Sayfanın tamamı Bootstrap ızgarası ve mevcut .hp-* bileşenleriyle
   kuruldu; burada yalnızca Bootstrap'te karşılığı OLMAYAN üç şey var.
   ===================================================================== */

/* Akış kartındaki küçük görsel. Bootstrap'te "mobilde tam genişlik,
   sm'den itibaren sabit 192px" diye hazır bir yardımcı yok. */
.hp-cat-thumb { width: 100%; }
@media (min-width: 576px) {
  .hp-cat-thumb { width: 192px; }
}

/* Kenar çubuğundaki en çok okunan satırı. Bootstrap'in list-group'u
   kendi kenarlık/dolgu düzenini dayatıyor; tek satırlık kural daha
   ucuz. */
.hp-cat-pop { border-radius: var(--hp-radius); transition: background-color .2s ease; }
.hp-cat-pop:hover { background: var(--hp-surface-low); }

/* Vitrinin yan kartları: yüksekliği flex belirliyor (aspect-ratio YOK).
   Oran verilseydi kart, sol karttan bağımsız bir yükseklik dayatır ve
   iki sütun hizasız kalırdı. min-height ise görsel gelmeden önce
   kutunun çökmesini engelliyor (CLS). */
.hp-cat-yan { min-height: 180px; }

/* Resmi ilan tarih seçicisinin "Göster" düğmesi: JS varken gereksiz
   (input onchange zaten gönderiyor), JS yokken şart. <noscript> içindeki
   stil geri açıyor. */
.hp-bik-git { display: none; }

/* =====================================================================
   HABER DETAY
   ---------------------------------------------------------------------
   Sayfanın çoğu Bootstrap + mevcut .hp-* bileşenleriyle kuruldu.
   Buradakiler Bootstrap'te karşılığı olmayanlar: okunabilirlik genişliği,
   makale tipografisi, okuma çubuğu ve sonsuz okuma ayracı.
   ===================================================================== */

/* Okuma ilerleme çubuğu — yapışkan başlığın hemen altında.
   `sticky` değil `fixed`: başlık kaydırmayla yer değiştirdiğinde çubuk
   onunla oynamamalı, hep ekranın tepesinde kalmalı. */
.hp-progress {
  position: fixed; top: 0; left: 0; right: 0;
  height: 3px; z-index: 1031;          /* başlık 1030 */
  background: transparent;
  pointer-events: none;
}
.hp-progress > span {
  display: block; height: 100%; width: 0;
  background: var(--hp-primary);
  transition: width .12s linear;
}

/* ---- Makale ---- */
.hp-article-title {
  font-family: var(--hp-font-headline);
  font-size: 34px; line-height: 1.1;
  letter-spacing: -.01em;
  color: var(--hp-on-surface);
  margin: 0;
  font-weight: var(--hp-fw-800);
}
@media (min-width: 992px) {
  .hp-article-title { font-size: 44px; line-height: 50px; }
}

.hp-article-lead {
  font-size: 19px; line-height: 1.55;
  font-style: italic;
  color: var(--hp-on-surface-variant);
}

.hp-article-meta {
  background: var(--hp-surface-low);
  border-radius: var(--hp-radius-lg);
}
.hp-article-avatar {
  width: 44px; height: 44px; border-radius: 999px;
  object-fit: cover; flex: 0 0 auto;
  box-shadow: 0 0 0 2px var(--hp-surface-highest);
}
.hp-article-chip {
  background: var(--hp-surface-container);
  border-radius: var(--hp-radius);
  padding: 2px 8px; font-weight: 600;
  color: var(--hp-on-surface);
}

/* Paylaşım ve araç düğmeleri */
.hp-share-btn {
  width: 36px; height: 36px; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center;
  border: 0; border-radius: var(--hp-radius);
  background: var(--hp-surface-container);
  color: var(--hp-on-surface);
  transition: background-color .2s ease, color .2s ease, transform .1s ease;
}
.hp-share-btn:hover { background: var(--hp-surface-high); color: var(--hp-primary); }
.hp-share-btn:active { transform: scale(.94); }
.hp-share-btn.is-ok { background: var(--hp-secondary-container); color: var(--hp-on-secondary-container); }

.hp-font-ctrl {
  background: var(--hp-surface-container);
  border-radius: var(--hp-radius);
  padding: 2px;
}
.hp-font-ctrl button {
  border: 0; background: transparent;
  padding: 4px 10px; font-weight: 700; font-size: 13px;
  color: var(--hp-on-surface);
}
.hp-font-ctrl button:hover { color: var(--hp-primary); }
.hp-font-ctrl span { color: var(--hp-outline-variant); font-size: 12px; }

/* ---- Gövde ----
   680px sınırı okunabilirlik için: satır 75 karakteri aştığında göz
   satır başını kaybediyor. Tasarımdaki max-w-[680px] ile aynı. */
/* ÖLÇÜLDÜ (06.09.2026, 1440px): sütun 824px, gövde 680px, 17px punto →
   satırda 83 KARAKTER. Sütunun tamamı verilseydi 100 karakter olurdu;
   50-75 aralığı rahat okuma sınırı, 83 zaten üst kenarda. Bu yüzden
   METİN ölçüsü büyütülmedi — bunun yerine GÖRSEL/TABLO/GÖMÜLÜ içerik
   sütunun tamamına taşıyor (aşağıdaki --hp-tasma). Boş görünen 144px
   böylece medyaya gidiyor, metin okunaklı kalıyor.

   Okur yazıyı büyütünce ölçü kendiliğinden düzeliyor: 21px'te 680px
   ≈ 67 karakter, tam ideal aralık. */
.hp-article-body {
  --hp-tasma: 0px;
     max-width: 95%;
  font-size: 17px;
  line-height: 1.75;
  color: var(--hp-on-surface);
}

/* Taşma yalnızca sütunun geniş olduğu yerde: 680 + 2×72 = 824 = sütun. */
@media (min-width: 992px) {
  .hp-article-body11 { --hp-tasma: 72px; }
}

.hp-article-body > figure,
.hp-article-body > table,
.hp-article-body > iframe,
.hp-article-body > video,
.hp-article-body > .hp-tasma,
.hp-article-body > p:has(> img:only-child),
.hp-article-body > p:has(> a:only-child > img:only-child) {
  width: calc(100% + 2 * var(--hp-tasma));
  max-width: none;
  margin-left: calc(-1 * var(--hp-tasma));
}
.hp-article-body > * + * { margin-top: 1.1em; }
.hp-article-body p { margin: 0; }
.hp-article-body img,
.hp-article-body iframe,
.hp-article-body video {     
	max-width: 100% !important;
    height: auto !important; 
	border-radius: var(--hp-radius-lg); 
	margin: 20px 0px; }
.hp-article-body iframe { aspect-ratio: 16/9; width: 100%; height: auto; }
.hp-article-body h2 {
  font-family: var(--hp-font-headline);
  font-size: 26px; line-height: 1.2; text-transform: uppercase;
  margin-top: 1.6em;
}
.hp-article-body h3 { font-size: 20px; font-weight: 700; margin-top: 1.4em; }
.hp-article-body a { color: var(--hp-primary); text-decoration: underline; }
.hp-article-body ul,
.hp-article-body ol { padding-left: 1.4em; }
.hp-article-body li + li { margin-top: .4em; }
.hp-article-body blockquote {
  margin: 1.4em 0; padding: 12px 18px;
  border-left: 4px solid var(--hp-primary);
  background: var(--hp-surface-low);
  font-size: 19px; font-style: italic;
}
.hp-article-body table { width: 100%; border-collapse: collapse; }
.hp-article-body td, .hp-article-body th {
  border: 1px solid var(--hp-outline-variant); padding: 6px 10px;
}

/* Okuyucunun seçtiği yazı boyutu — kök öğede tutuluyor, sonsuz okumayla
   gelen makaleler de aynı ayarı alıyor.

   TABAN 17px. Eskiden bir kademe AŞAĞI (15px) vardı; kullanıcı haklı
   olarak küçük buldu — 15px gövde metni haber sitesi için okuma
   yorgunluğu demek. Kademeler artık yalnızca YUKARI: 17 → 19 → 21 → 23.
   Böylece "küçült" düğmesi tabandayken pasif kalıyor (widgets.css). */
[data-hp-okuma="1"] .hp-article-body { font-size: 19px; }
[data-hp-okuma="2"] .hp-article-body { font-size: 21px; line-height: 1.8; }
[data-hp-okuma="3"] .hp-article-body { font-size: 23px; line-height: 1.8; }

/* Etiketler — tags() çıktısı düz <a class="taglink"> basıyor. */
.hp-article-tags .taglink {
  display: inline-flex; align-items: center;
  padding: 4px 12px; border-radius: 999px;
  background: var(--hp-surface-container);
  color: var(--hp-on-surface);
  font-size: 13px; line-height: 20px;
  transition: background-color .2s ease, color .2s ease;
}
.hp-article-tags .taglink:hover { background: var(--hp-primary); color: var(--hp-on-primary); }

.hp-article-note {
  font-size: 12px; line-height: 18px;
  color: var(--hp-on-surface-variant);
  padding: 10px 14px;
  background: var(--hp-surface-low);
  border-left: 3px solid var(--hp-outline-variant);
  border-radius: var(--hp-radius);
      width: 98%;
}

/* ---- Sonsuz okuma ---- */

/* Makaleler arası ayraç: okur yeni bir habere geçtiğini görmeli,
   yoksa iki haber tek uzun metin gibi okunuyor. */
.hp-article-sep {
  height: 0;
  border-top: 2px dashed var(--hp-outline-variant);
  margin: 48px 0 40px;
}

.hp-next-zone { border-top: 2px dashed var(--hp-outline-variant); }
.hp-next-link { text-decoration: none; }
.hp-next-ico {
  width: 44px; height: 44px; border-radius: 999px;
  background: var(--hp-primary); color: var(--hp-on-primary);
}
.hp-next-zone.is-yukleniyor .hp-next-ico { animation: hp-next-pulse 1s ease-in-out infinite; }
@keyframes hp-next-pulse {
  0%, 100% { transform: translateY(0); opacity: 1; }
  50%      { transform: translateY(4px); opacity: .6; }
}

@media (prefers-reduced-motion: reduce) {
  .hp-next-zone.is-yukleniyor .hp-next-ico { animation: none; }
  .hp-progress > span { transition: none; }
}

@media (max-width: 575.98px) {
  .hp-article-title { font-size: 27px; }
  .hp-article-lead { font-size: 17px; }
}

/* Resmi ilan metni: okunabilirlik sınırı YOK — ilanlar çoğunlukla tablo
   içeriyor ve 680px'e sıkıştırmak onları taşırıyor. Tablolar dar ekranda
   kendi içinde kayıyor, sayfa yatay kaymıyor. */
.hp-bik-body { font-size: 15px; line-height: 1.7; color: var(--hp-on-surface); overflow-x: auto; }
.hp-bik-body > * + * { margin-top: 1em; }
.hp-bik-body img { max-width: 100%; height: auto; }
.hp-bik-body table { width: 100%; border-collapse: collapse; }
.hp-bik-body td, .hp-bik-body th {
  border: 1px solid var(--hp-outline-variant); padding: 6px 8px; vertical-align: top;
}

/* BİK zorunlu alt şeridi. */
.hp-bik-footer {
  background: var(--hp-surface-low);
  border-radius: var(--hp-radius);
  padding: 10px 18px;
  font-size: 14px;
  color: var(--hp-on-surface);
}

/* =====================================================================
   19. GÖRSEL BÜYÜTECİ (LIGHTBOX)

   Kütüphane YOK. Tasarımda `data-glightbox` öznitelikleri vardı ama
   GLightbox hiçbir yerde yüklenmiyordu — yani galeri görselleri
   tıklanınca ham dosyaya gidiyordu. Kendi motorumuz theme.js §14'te;
   toplam ~90 satır ve dış bağımlılık getirmiyor.
   ===================================================================== */
.hp-lb {
  position: fixed; inset: 0; z-index: 1080;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.92);
  opacity: 0; visibility: hidden;
  transition: opacity .2s ease, visibility .2s ease;
}
.hp-lb.is-acik { opacity: 1; visibility: visible; }

.hp-lb-sahne {
  position: relative;
  max-width: min(94vw, 1400px); max-height: 88vh;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.hp-lb-gorsel {
  max-width: 100%; max-height: 78vh;
  width: auto; height: auto; object-fit: contain;
  border-radius: 6px; background: #111;
}
.hp-lb-yazi {
  max-width: 80ch; text-align: center;
  font-size: 13px; line-height: 1.5; color: rgba(255,255,255,.82);
}
.hp-lb-sayac { font-size: 12px; color: rgba(255,255,255,.5); }

/* Düğmeler: dokunma hedefi 44px, ekranın kenarına yapışmıyor. */
.hp-lb-btn {
  position: absolute; z-index: 2;
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border: 0; border-radius: 50%; cursor: pointer;
  background: rgba(255,255,255,.12); color: #fff;
  transition: background-color .18s ease;
}
.hp-lb-btn:hover { background: rgba(255,255,255,.24); }
.hp-lb-btn .hp-ico { width: 24px; height: 24px; }
.hp-lb-kapat { top: 16px; right: 16px; position: fixed; }
.hp-lb-onceki { left: 16px;  top: 50%; transform: translateY(-50%); position: fixed; }
.hp-lb-sonraki{ right: 16px; top: 50%; transform: translateY(-50%); position: fixed; }
.hp-lb-btn[hidden] { display: none; }

/* Büyütülebilir görsele imleç ipucu. Görselin büyüyeceğini SÖYLEMEK
   gerekiyor; okur denemeden bilemez. */
.hp-article-body img,
.hp-gallery-grid img { cursor: zoom-in; }

@media (max-width: 575.98px) {
  .hp-lb-onceki { left: 8px; }
  .hp-lb-sonraki { right: 8px; }
  .hp-lb-gorsel { max-height: 70vh; }
}
@media (prefers-reduced-motion: reduce) {
  .hp-lb { transition: none; }
}

/* =====================================================================
   20. YAZDIRMA

   "Yazdır" düğmesi sayfanın TAMAMINI basıyordu: header, menü, yan
   çubuk, reklamlar, yorumlar, sonraki haber… 6-7 sayfa kâğıt.
   Burada yalnızca makalenin kendisi kalıyor.

   `display: none !important` yerine önce her şeyi gizleyip sonra
   makale zincirini geri açmak DAHA GÜVENLİ: ileride eklenecek yeni
   bölümler kendiliğinden gizli kalıyor, tek tek listelemek gerekmiyor.
   ===================================================================== */
@media print {
  /* BOŞ SAYFA SORUNU: önce `visibility: hidden` kullanılıyordu.
     Görünmez öğe YER KAPLAMAYA DEVAM EDER — 1 sayfalık haber için
     arkasından 4 sayfa boş gri kâğıt çıkıyordu (kullanıcı bildirdi).
     Çözüm `display: none`, ama körlemesine değil: yazdırılacak bölüme
     giden YOL korunup her düğümün diğer çocukları budanıyor.

     Kural: X'i İÇEREN her öğenin, ne X olan ne de X'i içeren
     çocuklarını gizle. Bu, ağacı X'e giden tek dala indiriyor.
     `body:has(...)` kapsamı da duruyor: yazdırılabilir bölümü olmayan
     sayfada (anasayfa, kategori) kural hiç çalışmıyor, aksi hâlde
     Ctrl+P boş kâğıt verirdi.

     `:has()` desteklenmeyen tarayıcıda kuralların tamamı düşüyor ve
     sayfa eskisi gibi olduğu haliyle basılıyor — güvenli bozulma. */
  :is(body, body *):has(.hp-article, [data-hp-print])
    > *:not(.hp-article, [data-hp-print]):not(:has(.hp-article, [data-hp-print])) {
    display: none !important;
  }

  .hp-article, [data-hp-print] {
    max-width: none; padding: 0; margin: 0;
    border: 0; box-shadow: none; background: #fff;
  }

  /* Sonsuz okumada yalnızca EKRANDAKİ ilk haber basılıyor; okurun o gün
     okuduğu her şey değil. Makale kuyrukları (ilgili haberler, reklam,
     yorumlar) zaten `<article>` DIŞINDA olduğu için yukarıdaki budama
     onları kendiliğinden eliyor. */
  [data-hp-article-stream] .hp-article:not(:first-of-type) { display: none !important; }

  /* Makale İÇİNDEKİ ekran öğeleri kâğıtta işe yaramıyor. */
  .hp-py,
  .hp-ad,
  .hp-progress,
  .hp-lb,
  .hp-article video,
  .hp-article iframe { display: none !important; }

  .hp-article-body { max-width: none; font-size: 12pt; line-height: 1.5; }
  .hp-article-title { font-size: 20pt; }
  .hp-article-body img,
  .hp-media img { max-width: 100%; height: auto; page-break-inside: avoid; }

  /* Bağlantıların adresi kâğıtta görünsün — kâğıtta tıklanamıyor. */
  .hp-article-body a[href^="http"]::after,
  [data-hp-print] a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 9pt; color: #555; word-break: break-all;
  }

  a { text-decoration: none; color: #000; }
  @page { margin: 1.6cm; }
}/* ---------------------------------------------------------------------
   HABER SONU — AYNI KATEGORİDEN HABERLER

   Önce satırda 4 kart vardı (col-lg-3) ve hem kapak hem başlık
   küçük kalıyordu; okur haberi bitirdiğinde ilk gördüğü şey bu blok
   olduğu için burası okunaklı olmak zorunda. Artık satırda 3 kart
   (col-lg-4), başlık 17px ve kapak belirgin.
   --------------------------------------------------------------------- */
.hp-ilgili-kart { transition: transform .18s ease, box-shadow .18s ease; }
.hp-ilgili-kart:hover { transform: translateY(-3px); box-shadow: 0 8px 22px rgba(0,0,0,.12); }

.hp-ilgili-govde { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 5px; }

.hp-ilgili-tarih {
  font-size: 11px; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--hp-outline);
}
.hp-ilgili-baslik {
  font-size: 17px; line-height: 1.35; font-weight: 700;
  color: var(--hp-on-surface);
}
.hp-ilgili-kart:hover .hp-ilgili-baslik { color: var(--hp-primary); }

@media (max-width: 575.98px) {
  .hp-ilgili-baslik { font-size: 16px; }
}

/* =====================================================================
   22. YATAY ŞERİT — ortak kaydırma bileşeni

   Kategori kapsülleri gibi tek satırda kalması gereken listeler için.
   Galeri ve video kategori sayfaları kullanıyor.

   NEDEN OKLAR VAR
   `overflow-x: auto` tek başına YETMİYOR. Ölçüldü (1440px): şerit
   1216px görünüyor, içerik 1551px — yani 335px gizli. Dokunmatikte
   sorun yok, parmakla kayıyor. Masaüstünde ise fare tekerleği DİKEY
   kaydırıyor ve kaydırma çubuğu da gizli olduğu için okurun tutunacak
   hiçbir şeyi kalmıyordu: kategorilerin bir kısmı erişilemiyordu.

   Üç çözüm birden: ok düğmeleri (görünür), tekerlek yataya çevriliyor
   (alışkanlık), kenarlarda soluklaşma (daha var sinyali).

   Oklar HTML'de `hidden` başlıyor ve theme.js §16 yalnızca şerit
   GERÇEKTEN taşıyorsa açıyor — az kategorili sitede boşuna düğme
   durmuyor.
   ===================================================================== */
.hp-serit { position: relative; }

.hp-serit-yol {
  display: flex; gap: 8px;
  overflow-x: auto;
  scroll-behavior: smooth;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding: 2px;
}
.hp-serit-yol::-webkit-scrollbar { display: none; }

.hp-serit-ok {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  border: 0; border-radius: 50%; cursor: pointer;
  background: var(--hp-surface-lowest); color: var(--hp-on-surface);
  box-shadow: 0 2px 10px rgba(16,20,26,.18);
  transition: background-color .18s ease, color .18s ease, opacity .18s ease;
}
.hp-serit-ok:hover { background: var(--hp-on-surface); color: var(--hp-surface-lowest); }
.hp-serit-ok.is-sol { left: -4px; }
.hp-serit-ok.is-sag { right: -4px; }
.hp-serit-ok[disabled] { opacity: .25; pointer-events: none; }
.hp-serit-ok[hidden] { display: none; }

/* Kenar soluklaşması — "daha var" sinyali. Ok düğmesinin altında
   kaldığı için `z-index` 2. Yalnızca o yönde kaydırılacak varken
   açılıyor (JS sınıf koyuyor). */
.hp-serit::before,
.hp-serit::after {
  content: ""; position: absolute; top: 0; bottom: 0; width: 56px;
  pointer-events: none; z-index: 2; opacity: 0;
  transition: opacity .2s ease;
}
.hp-serit::before {
  left: 0;
  background: linear-gradient(90deg, var(--hp-surface-lowest), transparent);
}
.hp-serit::after {
  right: 0;
  background: linear-gradient(270deg, var(--hp-surface-lowest), transparent);
}
.hp-serit.is-sol-var::before { opacity: 1; }
.hp-serit.is-sag-var::after  { opacity: 1; }

/* Dokunmatikte ok yok: parmakla kaydırmak zaten doğal ve düğmeler
   dar ekranda kapsüllerin üstünü örtüyor. */
@media (hover: none) and (pointer: coarse) {
  .hp-serit-ok { display: none !important; }
}

@media (prefers-reduced-motion: reduce) {
  .hp-serit-yol { scroll-behavior: auto; }
}

/* =====================================================================
   23. MODÜL KATEGORİ ŞERİDİ  (.hp-mkat)

   Galeri, video ve ileride seri ilan / firma rehberi gibi kategorili
   BÜTÜN modüller bunu kullanıyor. Önce `.hp-gal-kat` ve `.hp-vid-kat`
   diye iki ayrı kopya vardı; aynı kurallar iki dosyada duruyordu ve
   yeni modül gelince üçüncüsü çıkacaktı.

   Kaydırma, oklar ve tekerlek §22'deki `.hp-serit`'ten geliyor;
   burada yalnızca kapsüllerin görünümü ve alt kategori paneli var.

   Şerit beyaz bir kart: yan yana duran kapsüller kendi başına bir
   satır oluşturuyor ve sayfanın geri kalanından ayrışıyor.
   ===================================================================== */
.hp-mkat {
  background: var(--hp-surface-lowest);
  border-radius: 10px;
  box-shadow: rgba(0,0,0,.1) 1px 1px 1px;
  margin: 10px 0;
}
.hp-mkat-yol { padding: 11px; gap: 8px; }

/* Şeridin kendi zemini beyaz olduğu için §22'deki kenar soluklaşması
   da beyazdan başlamalı — yoksa kapsüller kartın kenarında kesiliyor. */
.hp-mkat::before { background: linear-gradient(90deg, var(--hp-surface-lowest), transparent); }
.hp-mkat::after  { background: linear-gradient(270deg, var(--hp-surface-lowest), transparent); }

/* ---------- kapsül ---------- */
.hp-mkat-bag {
  flex: 0 0 auto;
  display: inline-flex; align-items: center;
  font-family: var(--hp-font-headline);
  font-size: 19px;
  font-weight: 700; letter-spacing: .02em; text-transform: uppercase;
  padding: 7px 14px; border-radius: 8px;
  text-decoration: none; white-space: nowrap;
  transition: background-color .18s ease, color .18s ease;
}
.hp-mkat-bag:hover { background: var(--hp-surface-highest); color: var(--hp-on-surface); }
.hp-mkat-bag.is-aktif { background: var(--hp-primary); color: var(--hp-on-primary); }

/* ---------- alt kategorisi olan kapsül ----------
   Bağlantı ve açma düğmesi TEK kapsül gibi görünüyor ama iki ayrı
   hedef: metin üst kategoriye gidiyor, ok paneli açıyor. */
.hp-mkat-oge {
  position: relative; flex: 0 0 auto;
  display: inline-flex; align-items: stretch;
  border-radius: 8px;
  transition: background-color .18s ease;
}
.hp-mkat-oge:hover { background: var(--hp-surface-highest); }
.hp-mkat-oge > .hp-mkat-bag { padding-right: 6px; background: none; }
.hp-mkat-oge > .hp-mkat-bag:hover { background: none; color: var(--hp-on-surface); }

.hp-mkat-ac {
  display: inline-flex; align-items: center; justify-content: center;
  border: 0; background: none; cursor: pointer;
  padding: 0 10px 0 2px; border-radius: 0 8px 8px 0;
  color: var(--hp-outline);
}
.hp-mkat-ac .hp-ico { transition: transform .2s ease; }
.hp-mkat-ac[aria-expanded="true"] .hp-ico { transform: rotate(180deg); }
.hp-mkat-ac:hover { color: var(--hp-on-surface); }

/* Etkin dal: kapsülün tamamı marka renginde. */
.hp-mkat-oge.is-aktif { background: var(--hp-primary); }
.hp-mkat-oge.is-aktif > .hp-mkat-bag,
.hp-mkat-oge.is-aktif .hp-mkat-ac { color: var(--hp-on-primary); }

/* ---------- açılır panel ----------
   Şerit `overflow-x: auto`; panel şeridin İÇİNDE açılsaydı taşma
   yüzünden kırpılırdı. Bu yüzden `position: fixed` ile konumu JS
   yazıyor (theme.js §17) — kırpılma yok, kaydırınca kapanıyor. */
.hp-mkat-panel {
  position: fixed; z-index: 60;
  min-width: 210px; max-width: 280px;
  display: flex; flex-direction: column;
  padding: 6px;
  background: var(--hp-surface-lowest);
  border-radius: 5px;
  box-shadow: 0 4px 10px rgba(16,20,26,.10), 0 18px 44px rgba(16,20,26,.20);
}
.hp-mkat-panel[hidden] { display: none; }

.hp-mkat-satir {
  padding: 9px 12px; border-radius: 10px;
  font-size: 15px;
  font-weight: 700; letter-spacing: .02em; text-transform: uppercase;
  
  text-decoration: none; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
  transition: background-color .16s ease, color .16s ease;
}
.hp-mkat-satir:hover { background: var(--hp-surface-highest); color: var(--hp-on-surface); }
.hp-mkat-satir.is-aktif { background: var(--hp-primary); color: var(--hp-on-primary); }

/* İlk satır (üst kategorinin kendisi) çocuklardan ayrılsın. */
.hp-mkat-satir:first-child { border-bottom: 1px solid var(--hp-outline-variant); border-radius: 5px 5px 0 0; margin-bottom: 4px; }

@media (max-width: 575.98px) {
  .hp-mkat-yol { padding: 9px; }
  .hp-mkat-bag { font-size: 14px; padding: 6px 12px; }
  .hp-mkat-panel { min-width: 180px; }
}


/* =====================================================================
   GOOGLE NEWS BANDI — haber detayında başlık/spot altında

   Boydan boya, tek satır, tıklanabilir. Reklam gibi durmaması için
   dolu bir renk yok: nötr yüzey + ince çerçeve; üzerine gelince
   marka rengiyle belirginleşiyor.
   ===================================================================== */
.hp-gnews-bant {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 0 0 20px;
  padding: 11px 14px;
  border: 1px solid var(--hp-outline-variant);
  border-radius: var(--hp-radius, 8px);
  background: var(--hp-surface-lowest);
  color: var(--hp-on-surface-variant);
  font-size: 13px;
  line-height: 1.4;
  transition: border-color .18s ease, background-color .18s ease, color .18s ease;
}
.hp-gnews-bant:hover {
  border-color: var(--hp-primary);
  background: var(--hp-surface-low);
  color: var(--hp-on-surface);
}
.hp-gnews-bant img { flex: 0 0 auto; width: 28px; height: 28px; object-fit: contain; }
.hp-gnews-bant span { flex: 1 1 auto; min-width: 0; }
.hp-gnews-bant strong { color: var(--hp-on-surface); font-weight: 600; }

/* Ok ucu: bandın tıklanabilir olduğunu söyleyen tek işaret.
   Üzerine gelince hafifçe kayıyor — yön duygusu veriyor. */
.hp-gnews-ok {
  flex: 0 0 auto;
  font-size: 18px;
  color: var(--hp-outline);
  transition: transform .18s ease, color .18s ease;
}
.hp-gnews-bant:hover .hp-gnews-ok { color: var(--hp-primary); transform: translateX(3px); }

@media (max-width: 575.98px) {
  .hp-gnews-bant { font-size: 12.5px; padding: 10px 12px; gap: 9px; }
  .hp-gnews-bant img { width: 24px; height: 24px; }
}

/* =====================================================================
   ============  FNEX — GÖRSEL MODERN KATMANI (Faz-1)  ============

   news'ten fork; bu blok fnex'i "görsel modern" ekole çeken KİMLİK
   üst-katmanı. Yukarıdaki news kuralları temeldir, buradakiler ezer.
   Token değişimi (renk/font/köşe) zaten :root'ta; bu blok YAPISAL
   his farkını getiriyor: modern kartlar, nefes alan boşluk, iri
   manşet, belirgin bölüm başlıkları.
   ===================================================================== */

/* ---- 1) MODERN KART: derin-yumuşak gölge + hover-lift ----
   news'te kart düz duruyor (0 1px 2px). Görsel-modern portallarda
   kartlar "kâğıt gibi" yüzer: hafif taban gölgesi, üzerine gelince
   yukarı kalkıp derinleşir. Tüm sayfadaki kartlara yayılır. */
.hp-card {
  box-shadow: 0 1px 3px rgba(15,23,42,.06), 0 1px 2px rgba(15,23,42,.04);
  transition: box-shadow .22s ease, transform .22s ease, background-color .2s ease;
  will-change: transform;
}
.hp-card:hover {
  box-shadow: 0 14px 30px rgba(15,23,42,.13);
  transform: translateY(-4px);
}
/* Görsel yakınlaşması biraz daha belirgin ve yumuşak */
.hp-card:hover .hp-media > img,
.hp-media:hover > img { transform: scale(1.06); }

/* ---- 2) MODERN BÖLÜM BAŞLIĞI ----
   news'te renkli çubuk + başlık var; fnex'te başlığın ALTINA ince bir
   ayraç ekleyip çubuğu hap şekline sokuyoruz — daha çağdaş, daha
   "bölüm" hissi. Başlık bloğu tipik olarak .hp-bar + h2 içeriyor. */
.hp-bar {
  width: 6px; height: 22px; border-radius: 999px;
  background: var(--hp-primary);
}
.hp-bar-thin { width: 4px; }
/* Bölüm başlığı satırına alt çizgi: h2'yi taşıyan flex satır genelde
   d-flex + gap. Doğrudan h2'ye değil, section içindeki ilk başlık
   satırına dokunmak riskli; onun yerine başlığın kendisine ince alt
   sınır veriyoruz. */
.hp-section .hp-h-lg,
.hp-section-xs .hp-h-lg { letter-spacing: -.01em; }

/* ---- 3) İRİ, MODERN MANŞET ----
   Hero başlık Outfit ile zaten değişti; burada boyut ve sıkı tracking
   ile gazete-manşetinden "dergi kapağı" hissine çekiyoruz. */
.hp-hero { letter-spacing: -.025em; font-weight: 800; }
.hp-hero-card { border-radius: var(--hp-radius-xl); }
.hp-hero-card .hp-scrim,
.hp-hero-card .hp-overlay-text { border-radius: 0 0 var(--hp-radius-xl) var(--hp-radius-xl); }
/* Manşet görselinin üstündeki karartma gradyanı daha derin: başlık
   her görselde okunur kalsın (SEO/erişilebilirlik + görsel odak). */
.hp-hero-card .hp-scrim {
  background: linear-gradient(to top, rgba(2,6,23,.86) 0%, rgba(2,6,23,.35) 45%, rgba(2,6,23,0) 72%);
}

/* ---- 4) NEFES ALAN DÜZEN ----
   Görsel-modern = boşluk. Bölümler arası ve kart-ızgara aralığı biraz
   açılıyor; sıkışık gazete ritminden ferah portal ritmine. */
.hp-section    { padding-block: var(--hp-space-12); }
.hp-section-xs { padding-block: var(--hp-space-8); }
.hp-row { --bs-gutter-x: 1.75rem; --bs-gutter-y: 1.75rem; }

/* ---- 5) MODERN HEADER ----
   Sticky zaten var; fnex'te gölgeyi biraz belirginleştirip üst bar ve
   son dakika şeridini tema rengiyle daha bütünleşik yapıyoruz. */
.hp-header { box-shadow: 0 2px 16px rgba(15,23,42,.06); }
.hp-navbar { height: 84px; }        /* biraz daha derli toplu */
.hp-topbar { background: var(--hp-surface-low); }

/* ---- 6) MODERN ROZET ----
   Kategori rozetleri hap (pill) formunda — köşeli etiketten çağdaş
   çipe. Görsel-modern kart estetiğiyle uyumlu. */
.hp-badge { border-radius: 999px; font-weight: 600; letter-spacing: .02em; }

/* ---- 7) BUTON / SAYFALAYICI ----
   Manşet altındaki sayfalayıcı (hp-pager) ve genel butonlar hap
   formunda, hover'da accent. */
.hp-pager button { border-radius: 999px; }

/* ---- Erişilebilirlik: hareketi azalt tercihine saygı ---- */
@media (prefers-reduced-motion: reduce) {
  .hp-card, .hp-card:hover { transform: none; transition: box-shadow .2s ease; }
}

/* =====================================================================
   ============  FNEX — MANŞET (numaralı editör seçkisi)  ============
   blocks/headline.php ile birlikte. Sol büyük hero (1) + sağ dikey
   numaralı liste (2..n). Slider yok — statik, hızlı, hepsi tıklanır.
   ===================================================================== */

.hp-mans-head { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }

.hp-mans {
  display: grid;
  grid-template-columns: 1.6fr 1fr;   /* sol büyük, sağ liste */
  gap: 20px;
  align-items: stretch;
}

/* ---- SOL: büyük hero SLIDER ---- */
.hp-mans-hero {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--hp-radius-xl);
  min-height: 420px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.hp-mans-slider .hp-slider-viewport,
.hp-mans-slider .hp-slider-track { height: 100%; }
/* Her slayt tam yükseklikte bir kart; görsel absolute doldurur */
.hp-mans-slide {
  position: relative; display: block; overflow: hidden;
  min-height: 420px; height: 100%;
}
.hp-mans-slide > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform 6s ease;
}
.hp-mans-slide:hover > .hp-img { transform: scale(1.06); }   /* yavaş "ken burns" hissi */
.hp-mans-scrim {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(2,6,23,.92) 0%, rgba(2,6,23,.42) 44%, rgba(2,6,23,0) 72%);
}
.hp-mans-hero-text {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
  padding: 26px 28px 26px;
  display: flex; flex-direction: column; gap: 12px;
}
.hp-mans-hero-title {
  color: #fff; margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 30px; line-height: 1.15; font-weight: 800; letter-spacing: -.02em;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.hp-mans-meta { display: flex; gap: 16px; color: rgba(255,255,255,.85); font-size: 12.5px; }
.hp-mans-meta span { display: inline-flex; align-items: center; gap: 5px; }

/* ---- fnex'e ÖZGÜ numara: iri italik rakam + aksan çubuk, sol üstte ---- */
.hp-mans-rank {
  position: absolute; top: 20px; left: 22px; z-index: 3;
  display: flex; align-items: flex-start; gap: 10px;
  pointer-events: none;
}
.hp-mans-rank-bar {
  width: 5px; height: 52px; margin-top: 4px; border-radius: 999px;
  background: var(--hp-primary);
  box-shadow: 0 0 0 1px rgba(0,0,0,.15);
}
.hp-mans-rank-no {
  font-family: var(--hp-font-headline-title);
  font-size: 58px; line-height: .86; font-weight: 800; font-style: italic;
  color: #fff; letter-spacing: -.03em;
  text-shadow: 0 3px 14px rgba(2,6,23,.55);
}

/* ---- Kontroller: ok + nokta, hero içinde alt-sağ ---- */
.hp-mans-ctrl {
  position: absolute; right: 16px; bottom: 16px; z-index: 4;
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; border-radius: 999px;
  background: rgba(2,6,23,.42);
  backdrop-filter: blur(6px);
}
.hp-mans-arw {
  width: 32px; height: 32px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 0; border-radius: 999px; cursor: pointer;
  background: rgba(255,255,255,.14); color: #fff;
  transition: background-color .18s ease, transform .12s ease;
}
.hp-mans-arw:hover { background: var(--hp-primary); }
.hp-mans-arw:active { transform: scale(.92); }
.hp-mans-ctrl .hp-slider-dots button { background: rgba(255,255,255,.45); }
.hp-mans-ctrl .hp-slider-dots button[aria-current="true"] { background: #fff; width: 20px; }

/* ---- Sağ liste küçük numara işareti ---- */
.hp-mans-no {
  position: absolute; top: 0; left: 0; z-index: 3;
  min-width: 38px; height: 38px; padding: 0 8px;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--hp-font-headline-title);
  font-size: 20px; font-weight: 800; line-height: 1; color: #fff;
  background: var(--hp-primary);
  border-radius: 0 0 var(--hp-radius-lg) 0;
}
.hp-mans-no-sm { min-width: 26px; height: 26px; font-size: 14px; border-radius: 0 0 10px 0; }

/* ---- SAĞ: numaralı liste ---- */
.hp-mans-list { display: flex; flex-direction: column; gap: 12px; }
.hp-mans-item {
  display: grid; grid-template-columns: 116px 1fr; gap: 12px;
  background: var(--hp-surface-lowest);
  border-radius: var(--hp-radius-lg);
  box-shadow: 0 1px 2px rgba(15,23,42,.05);
  overflow: hidden;
  transition: box-shadow .2s ease, transform .2s ease;
  flex: 1;
}
.hp-mans-item:hover { box-shadow: 0 10px 24px rgba(15,23,42,.12); transform: translateY(-2px); }
.hp-mans-item-media { position: relative; overflow: hidden; }
.hp-mans-item-media .hp-img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.hp-mans-item:hover .hp-mans-item-media .hp-img { transform: scale(1.06); }
.hp-mans-item-text {
  display: flex; flex-direction: column; gap: 4px;
  padding: 10px 12px 10px 0; min-width: 0; justify-content: center;
}
.hp-mans-item-cat { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.hp-mans-item-title {
  margin: 0; font-size: 15px; line-height: 1.3; font-weight: 600; color: var(--hp-on-surface);
  transition: color .2s ease;
}
.hp-mans-item:hover .hp-mans-item-title { color: var(--hp-primary); }
.hp-mans-item-time { font-size: 11.5px; color: var(--hp-on-surface-variant); display: inline-flex; align-items: center; gap: 4px; }

/* ---- Tablet: hero üstte, liste altta 2 sütun ---- */
@media (max-width: 991.98px) {
  .hp-mans { grid-template-columns: 1fr; }
  .hp-mans-hero, .hp-mans-slide { min-height: 360px; }
  .hp-mans-list { display: grid; grid-template-columns: 1fr 1fr; }
}
@media (max-width: 575.98px) {
  .hp-mans-hero, .hp-mans-slide { min-height: 280px; }
  .hp-mans-hero-title { font-size: 22px; }
  .hp-mans-rank-no { font-size: 46px; }
  .hp-mans-rank-bar { height: 42px; }
  .hp-mans-list { grid-template-columns: 1fr; }
  .hp-mans-item { grid-template-columns: 104px 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  .hp-mans-slide > .hp-img, .hp-mans-slide:hover > .hp-img,
  .hp-mans-item, .hp-mans-item:hover { transform: none; }
}

/* =====================================================================
   ============  FNEX — HEADER (üç katlı modern portal)  ============
   header.php ile birlikte. KAT 1: logo + orta arama + aksiyonlar.
   KAT 2: tam genişlik kategori şeridi. KAT 3: son dakika (mevcut).
   news'te logo+menü tek satırdaydı; burada arama ORTADA ve her zaman
   açık, kategoriler AYRI şeritte — büyük portal dili.
   ===================================================================== */

/* KAT 1 — üst bar: logo | arama | aksiyonlar */
.hp-topbar {
  height: 100%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 24px;
}
.hp-brand { display: inline-flex; align-items: center; flex-shrink: 0; }
.hp-brand img { max-width: 210px; max-height: 46px; height: auto; width: auto; display: block; }

/* Orta — her zaman açık arama kutusu (masaüstü) */
.hp-search-top {
  align-items: center;
  gap: 8px;
  width: 100%;
  max-width: 560px;
  justify-self: center;
  background: var(--hp-surface);
  border: 1px solid var(--hp-outline-variant);
  border-radius: 999px;
  padding: 7px 8px 7px 16px;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.hp-search-top:focus-within {
  border-color: var(--hp-primary);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--hp-primary) 14%, transparent);
}
.hp-search-top input {
  flex: 1 1 auto;
  min-width: 0;
  border: 0;
  background: transparent;
  outline: none;
  font: 500 15px/1.2 var(--hp-font-body);
  color: var(--hp-on-surface);
}
.hp-search-top input::placeholder { color: var(--hp-on-surface-variant); }
.hp-search-top-btn {
  flex-shrink: 0;
  border: 0;
  border-radius: 999px;
  padding: 8px 20px;
  background: var(--hp-primary);
  color: var(--hp-on-primary);
  font: 600 14px/1 var(--hp-font-body);
  cursor: pointer;
  transition: background-color .18s ease, transform .12s ease;
}
.hp-search-top-btn:hover { background: var(--hp-primary-container); }
.hp-search-top-btn:active { transform: translateY(1px); }

/* Sağ — hızlı erişim + ikon butonlar */
.hp-topbar-actions { display: inline-flex; align-items: center; gap: 8px; justify-self: end; }
.hp-quick {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--hp-surface-low);
  color: var(--hp-on-surface);
  font: 600 13.5px/1 var(--hp-font-body);
  letter-spacing: .01em;
  border: 1px solid var(--hp-outline-variant);
  transition: background-color .16s ease, color .16s ease, border-color .16s ease;
}
.hp-quick:hover { background: var(--hp-primary); color: var(--hp-on-primary); border-color: var(--hp-primary); }
.hp-quick .hp-ico { flex-shrink: 0; }
.hp-quick-video:hover { background: var(--hp-tertiary); border-color: var(--hp-tertiary); }

/* KAT 2 — tam genişlik kategori şeridi */
.hp-navstrip {
  background: var(--hp-on-surface);      /* koyu şerit: portal aksanı */
  border-top: 3px solid var(--hp-primary);
}
.hp-navstrip-in {
  display: flex;
  align-items: stretch;
  gap: 2px;
  height: 46px;
  overflow-x: auto;
  scrollbar-width: none;
}
.hp-navstrip-in::-webkit-scrollbar { display: none; }
.hp-strip-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 0 15px;
  white-space: nowrap;
  color: color-mix(in srgb, #fff 78%, transparent);
  font: 600 14px/1 var(--hp-font-body);
  letter-spacing: .01em;
  transition: color .16s ease, background-color .16s ease;
}
.hp-strip-link::after {
  content: "";
  position: absolute;
  left: 12px; right: 12px; bottom: 0;
  height: 3px;
  border-radius: 3px 3px 0 0;
  background: var(--hp-primary);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .18s ease;
}
.hp-strip-link:hover { color: #fff; }
.hp-strip-link:hover::after { transform: scaleX(1); }
.hp-strip-home {
  padding-inline: 16px;
  color: #fff;
  background: color-mix(in srgb, #fff 8%, transparent);
}
.hp-strip-home:hover { background: var(--hp-primary); }
.hp-strip-home::after { display: none; }

/* Sticky küçülme uyumu: header sabit kalırken şerit korunur */
@media (max-width: 991.98px) {
  .hp-topbar { grid-template-columns: auto 1fr auto; gap: 12px; }
  .hp-brand img { max-width: 160px; }
}

/* =====================================================================
   ============  FNEX — FAZ-2: ANASAYFA BÖLÜMLERİ  ============

   Faz-1 kimliği (token + kart + manşet) kurdu; bu katman anasayfanın
   İÇERİK BÖLÜMLERİNİ news'ten ayırıyor. Ortak ilkeler:

     · Görsel üstü yazı (overlay) ağırlıklı — görsel yoğunluk.
     · Kart yüzeyi yerine GÖRSEL yüzeyi: çerçeve yok, derin scrim var.
     · Sıra rakamı fnex imzası: iri, italik, aksan çubuklu
       (manşetteki .hp-mans-rank ile aynı dil).
     · Sütun sayısı auto-fit ile KAPSAYICIDAN türüyor; medya sorgusu
       yalnızca ritim değiştiği yerde (kapsayıcı genişliği EKRANLA
       aynı şey değil).

   ÖN EK fx- BİLEREK: news'ten gelen .hp-* bileşenleri bozulmasın ve
   ileride bir bileşen news'e geri taşınırsa çakışma olmasın.
   ===================================================================== */

/* ---------------------------------------------------------------------
   ORTAK: bölüm başlığı satırı
   news'te her blok kendi "d-flex ... pb-4" kombinasyonunu yazıyordu;
   dokuz blokta dokuz kopya. Tek sınıfa indi.
   --------------------------------------------------------------------- */
.fx-head {
  display: flex; align-items: center; gap: 14px;
  margin-bottom: var(--hp-space-6);
}
.fx-head-arali { justify-content: space-between; flex-wrap: wrap; }
.fx-head-arali > .fx-head { margin-bottom: 0; }

.fx-tumu {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  font-size: 13px; font-weight: 700; letter-spacing: .02em;
  color: var(--hp-on-surface-variant);
  padding: 7px 14px; border-radius: 999px;
  background: var(--hp-surface-high);
  transition: background-color .18s ease, color .18s ease;
}
.fx-tumu:hover { background: var(--hp-primary); color: #fff; }

/* ---------------------------------------------------------------------
   ORTAK: overlay GÖRSEL KARTI  (.fx-bk)
   Bento, podyum ve galeri üçü de bu tabanı kullanıyor. Tek yerde
   durması, üç blokta scrim/başlık/meta ritminin aynı kalmasını
   garanti ediyor.
   --------------------------------------------------------------------- */
.fx-bk {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--hp-radius-xl);
  min-height: 240px;
  background: var(--hp-surface-high);
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-bk:hover { box-shadow: 0 16px 34px rgba(15,23,42,.16); transform: translateY(-3px); }
.fx-bk > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .6s ease;
}
.fx-bk:hover > .hp-img { transform: scale(1.06); }

/* Scrim: başlık HER görselde okunur kalmalı — erişilebilirlik ve
   Discovery kartlarında görselin üstündeki metnin kontrastı. */
.fx-bk-scrim {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(2,6,23,.90) 0%, rgba(2,6,23,.40) 46%, rgba(2,6,23,0) 74%);
}
.fx-bk-text {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
  display: flex; flex-direction: column; align-items: flex-start; gap: 9px;
  padding: 20px 20px 18px;
}
.fx-bk-baslik {
  color: #fff; margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 19px; line-height: 1.24; font-weight: 700; letter-spacing: -.015em;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.fx-bk-baslik-xl { font-size: 28px; line-height: 1.16; font-weight: 800; letter-spacing: -.022em; }
.fx-bk-spot { color: rgba(255,255,255,.82); font-size: 13.5px; line-height: 1.5; }
.fx-bk-meta {
  display: flex; flex-wrap: wrap; gap: 14px;
  color: rgba(255,255,255,.80); font-size: 12px;
}
.fx-bk-meta span { display: inline-flex; align-items: center; gap: 5px; }

/* ---------------------------------------------------------------------
   1) BENTO MOZAİK  —  blocks/news_grid.php
   Büyük kart iki satır yüksekliğinde; sağdaki ikisi onun yanında
   istifleniyor. news'in üç eşit kartına göre bakış sırası net:
   göz büyük görsele düşüyor, sonra sağa iniyor.
   --------------------------------------------------------------------- */
.fx-bento {
  display: grid;
  grid-template-columns: 1.62fr 1fr;
  grid-auto-rows: 1fr;
  gap: 18px;
}
.fx-bk-buyuk { grid-row: span 2; min-height: 460px; }
.fx-bento > .fx-bk:not(.fx-bk-buyuk) { min-height: 221px; }

/* Kompakt alt şerit: kalan haberler. auto-fit -> satır sonunda delik
   kalmıyor, kaç kayıt kalırsa kalsın kartlar alanı paylaşıyor. */
.fx-mini-grid {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 3), minmax(0, 1fr));
  gap: 14px;
  margin-top: 18px;
}
.fx-mini {
  display: flex; align-items: stretch; gap: 13px;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-lg);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .2s ease, transform .2s ease;
}
.fx-mini:hover { box-shadow: 0 10px 24px rgba(15,23,42,.12); transform: translateY(-2px); }
.fx-mini-media {
  position: relative; flex: 0 0 104px; overflow: hidden;
  /* Sabit en-boy: görsel yüklenmeden önce de yer ayrılıyor (CLS). */
  aspect-ratio: 1 / 1;
}
.fx-mini-media .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .45s ease;
}
.fx-mini:hover .fx-mini-media .hp-img { transform: scale(1.07); }
.fx-mini-text {
  display: flex; flex-direction: column; gap: 4px;
  padding: 11px 13px 11px 0; min-width: 0; justify-content: center;
}
.fx-mini-cat {
  font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em;
}
.fx-mini-baslik {
  margin: 0; font-family: var(--hp-font-headline-title);
  font-size: 14.5px; line-height: 1.33; font-weight: 700;
  color: var(--hp-on-surface);
  transition: color .18s ease;
}
.fx-mini:hover .fx-mini-baslik { color: var(--hp-primary); }
.fx-mini-time {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--hp-on-surface-variant);
}

/* ---------------------------------------------------------------------
   2) PODYUM  —  blocks/most_read.php
   İlk üç büyük kart + iri italik rakam (manşetle aynı imza).
   Kalanlar altta kompakt iki kolon; görselsiz, yoğun.
   --------------------------------------------------------------------- */
.fx-podyum {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 18px;
}
.fx-podyum-kart {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--hp-radius-xl);
  min-height: 300px;
  background: var(--hp-surface-high);
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-podyum-kart:hover { box-shadow: 0 16px 34px rgba(15,23,42,.16); transform: translateY(-3px); }
.fx-podyum-kart > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .6s ease;
}
.fx-podyum-kart:hover > .hp-img { transform: scale(1.06); }

/* fnex imzası — manşetteki .hp-mans-rank ile aynı ölçü ve duruş. */
.fx-podyum-no {
  position: absolute; top: 16px; left: 18px; z-index: 3;
  display: flex; align-items: flex-start; gap: 9px;
  pointer-events: none;
}
.fx-podyum-no-bar {
  width: 5px; height: 44px; margin-top: 4px; border-radius: 999px;
  background: var(--hp-primary);
  box-shadow: 0 0 0 1px rgba(0,0,0,.15);
}
.fx-podyum-no-rakam {
  font-family: var(--hp-font-headline-title);
  font-size: 50px; line-height: .86; font-weight: 800; font-style: italic;
  color: #fff; letter-spacing: -.03em;
  text-shadow: 0 3px 14px rgba(2,6,23,.55);
}

.fx-okunan-liste {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 0 34px; margin-top: 22px;
}
.fx-okunan-kolon { display: flex; flex-direction: column; }
.fx-okunan-satir {
  display: flex; align-items: center; gap: 14px;
  padding: 13px 4px;
  border-top: 1px solid var(--hp-outline-variant);
  transition: background-color .16s ease;
}
.fx-okunan-kolon > .fx-okunan-satir:first-child { border-top: 0; }
.fx-okunan-satir:hover { background: var(--hp-surface-high); }
.fx-okunan-no {
  flex: 0 0 34px; text-align: center;
  font-family: var(--hp-font-headline-title);
  font-size: 22px; font-weight: 800; font-style: italic;
  color: var(--hp-outline); letter-spacing: -.02em;
}
.fx-okunan-satir:hover .fx-okunan-no { color: var(--hp-primary); }
.fx-okunan-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; }
.fx-okunan-baslik {
  margin: 0; font-family: var(--hp-font-headline-title);
  font-size: 14.5px; line-height: 1.34; font-weight: 700;
  color: var(--hp-on-surface);
}
.fx-okunan-satir:hover .fx-okunan-baslik { color: var(--hp-primary); }
.fx-okunan-hit {
  flex-shrink: 0; font-size: 11.5px; font-weight: 700;
  color: var(--hp-on-surface-variant);
  background: var(--hp-surface-high);
  padding: 3px 9px; border-radius: 999px;
}

/* ---------------------------------------------------------------------
   3) FOTO DUVARI  —  blocks/gallery.php
   Sol tam yükseklik kapak + sağ dikey istif. Tek galeri varsa
   kapak tam genişliğe yayılıyor (.fx-gal-tek).
   --------------------------------------------------------------------- */
.fx-gal {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 18px;
  min-height: 460px;
}
.fx-gal-tek { grid-template-columns: 1fr; }

.fx-gal-kapak, .fx-gal-kucuk {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--hp-radius-xl);
  background: var(--hp-surface-high);
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-gal-kapak:hover, .fx-gal-kucuk:hover {
  box-shadow: 0 16px 34px rgba(15,23,42,.16); transform: translateY(-3px);
}
.fx-gal-kapak > .hp-img, .fx-gal-kucuk > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .6s ease;
}
.fx-gal-kapak:hover > .hp-img, .fx-gal-kucuk:hover > .hp-img { transform: scale(1.06); }

.fx-gal-yan { display: grid; grid-auto-rows: 1fr; gap: 18px; }

.fx-gal-text {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
  display: flex; flex-direction: column; gap: 7px;
  padding: 18px 20px 16px;
}
.fx-gal-cat {
  font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em;
}
.fx-gal-rozet {
  position: absolute; top: 14px; left: 16px; z-index: 3;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px; border-radius: 999px;
  font-size: 11.5px; font-weight: 700; color: #fff;
  background: rgba(2,6,23,.55);
  backdrop-filter: blur(6px);
}

/* ---------------------------------------------------------------------
   MOBİL — Faz-2 bölümleri
   Tek sütuna inerken yükseklikler de düşüyor: telefonda 460px'lik bir
   kart ekranın tamamını yiyor ve okur bloğun devamı olduğunu görmüyor.
   --------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .fx-bento { grid-template-columns: 1fr; }
  .fx-bk-buyuk { grid-row: auto; min-height: 340px; }
  .fx-bento > .fx-bk:not(.fx-bk-buyuk) { min-height: 240px; }
  .fx-gal { grid-template-columns: 1fr; min-height: 0; }
  .fx-gal-kapak { min-height: 320px; }
  .fx-gal-kucuk { min-height: 220px; }
  .fx-okunan-liste { grid-template-columns: 1fr; gap: 0; }
  .fx-okunan-kolon + .fx-okunan-kolon > .fx-okunan-satir:first-child {
    border-top: 1px solid var(--hp-outline-variant);
  }
}

@media (max-width: 575.98px) {
  .fx-bk-baslik-xl { font-size: 21px; }
  .fx-bk-baslik { font-size: 17px; }
  .fx-bk-buyuk { min-height: 280px; }
  .fx-bento > .fx-bk:not(.fx-bk-buyuk) { min-height: 210px; }
  .fx-podyum-kart { min-height: 250px; }
  .fx-podyum-no-rakam { font-size: 40px; }
  .fx-podyum-no-bar { height: 36px; }
  .fx-mini-media { flex-basis: 92px; }
  .fx-head { gap: 10px; }
}

/* =====================================================================
   ============  FNEX — FAZ-2 / B: AKIŞ · VİDEO · EKONOMİ · SPOR  ======
   ===================================================================== */

/* Bölüm başlığının altındaki açıklama satırı (video kicker, spor kicker).
   news'te bu metin başlığın yanına yazılıyordu ve dar ekranda başlığı
   ikinci satıra itiyordu; artık başlığın ALTINDA, kendi satırında. */
.fx-alt-metin {
  display: block; margin-top: 3px;
  font-size: 12.5px; line-height: 1.4;
  color: var(--hp-on-surface-variant);
}

/* ---------------------------------------------------------------------
   4) CANLI BANT  —  blocks/livefeed.php

   Sayfanın ortasındaki KOYU bölge. Bölüm ayracı işlevi de görüyor:
   üstü ve altı açık zemin olduğu için okur buraya gelince "başka bir
   şey" olduğunu anlıyor.
   --------------------------------------------------------------------- */
.fx-canli {
  background: linear-gradient(180deg, #0b1220 0%, #111c31 100%);
  padding-block: var(--hp-space-12);
  color: rgba(255,255,255,.92);
}
.fx-canli .hp-h-lg { color: #fff; }

.fx-canli-head {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 14px;
  margin-bottom: var(--hp-space-6);
}
.fx-canli-baslik { display: flex; align-items: center; gap: 12px; }

/* Nabız: "canlı" olduğunu renk TEK BAŞINA anlatmasın diye yanında
   "Otomatik Güncelleniyor" etiketi de var (renk körü okur). */
.fx-canli-nabiz {
  width: 11px; height: 11px; border-radius: 999px; flex-shrink: 0;
  background: #ef4444;
  box-shadow: 0 0 0 0 rgba(239,68,68,.7);
  animation: fxNabiz 1.8s ease-out infinite;
}
@keyframes fxNabiz {
  70%  { box-shadow: 0 0 0 11px rgba(239,68,68,0); }
  100% { box-shadow: 0 0 0 0 rgba(239,68,68,0); }
}
@media (prefers-reduced-motion: reduce) {
  .fx-canli-nabiz { animation: none; }
}

.fx-canli-etiket {
  display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0;
  font-size: 12px; font-weight: 600; color: rgba(255,255,255,.72);
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  padding: 6px 13px; border-radius: 999px;
}

/* Sütun sayısı KAPSAYICIDAN türüyor: reklam varken 2, yokken 3.
   Medya sorgusu ekranı ölçerdi, kapsayıcıyı değil. */
.fx-akis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
  gap: 12px;
}
.fx-akis-satir {
  display: flex; align-items: stretch; gap: 12px;
  padding: 10px 14px 10px 0;
  border-radius: var(--hp-radius-lg);
  background: rgba(255,255,255,.055);
  border: 1px solid rgba(255,255,255,.08);
  border-left: 3px solid var(--fx-akis-renk, var(--hp-primary-fixed-dim));
  overflow: hidden;
  transition: background-color .18s ease, transform .18s ease;
}
.fx-akis-satir:hover { background: rgba(255,255,255,.10); transform: translateX(3px); }
.fx-akis-ilk { background: rgba(255,255,255,.10); }

.fx-akis-saat {
  flex: 0 0 auto; align-self: center;
  padding-left: 12px;
  font-family: var(--hp-font-headline-title);
  font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums;
  color: var(--fx-akis-renk, #fff);
  letter-spacing: -.01em;
}
.fx-akis-media {
  position: relative; flex: 0 0 72px; overflow: hidden;
  aspect-ratio: 1 / 1; border-radius: var(--hp-radius);
  align-self: center;
}
.fx-akis-media .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .45s ease;
}
.fx-akis-satir:hover .fx-akis-media .hp-img { transform: scale(1.08); }

.fx-akis-text {
  display: flex; flex-direction: column; gap: 3px;
  min-width: 0; justify-content: center; padding: 4px 0;
}
.fx-akis-cat {
  font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em;
  color: var(--fx-akis-renk, var(--hp-primary-fixed-dim));
}
.fx-akis-baslik {
  margin: 0; font-family: var(--hp-font-headline-title);
  font-size: 14.5px; line-height: 1.32; font-weight: 700;
  color: #fff;
}

/* ---------------------------------------------------------------------
   5) SİNEMA  —  blocks/video.php
   Bölüm zemini AÇIK, oynatıcı kartı KOYU. Üstteki canlı bantla
   birleşip tek bir koyu bölge oluşturmasın diye.
   --------------------------------------------------------------------- */
.fx-sinema {
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  gap: 18px;
  align-items: stretch;
}
.fx-sinema-tek { grid-template-columns: 1fr; }

.fx-sin-one {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--hp-radius-xl);
  min-height: 420px;
  background: #0b1220;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-sin-one:hover { box-shadow: 0 16px 34px rgba(15,23,42,.18); transform: translateY(-3px); }
.fx-sin-one > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: .82; transition: transform .6s ease, opacity .3s ease;
}
.fx-sin-one:hover > .hp-img { transform: scale(1.05); opacity: .9; }
.fx-sin-scrim {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(2,6,23,.92) 0%, rgba(2,6,23,.35) 50%, rgba(2,6,23,.15) 100%);
}

/* Oynat düğmesi: gerçek bir oynatıcı değil, detaya giden kapak
   (anasayfada gömülü oynatıcı = sağlayıcının betiği her ziyaretçide). */
.fx-sin-play {
  position: absolute; top: 50%; left: 50%; z-index: 2;
  transform: translate(-50%, -50%);
  width: 78px; height: 78px; border-radius: 999px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.16);
  border: 2px solid rgba(255,255,255,.55);
  backdrop-filter: blur(6px);
  color: #fff;
  transition: background-color .2s ease, transform .2s ease;
}
.fx-sin-one:hover .fx-sin-play {
  background: var(--hp-error); border-color: var(--hp-error);
  transform: translate(-50%, -50%) scale(1.07);
}
.fx-sin-text {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 3;
  display: flex; flex-direction: column; align-items: flex-start; gap: 10px;
  padding: 22px 24px 20px;
}
.fx-sin-rozet {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 12px; border-radius: 999px;
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  background: var(--hp-error); color: #fff;
}

/* --- Oynatma listesi --- */
.fx-sin-liste {
  display: flex; flex-direction: column;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.fx-sin-liste-head {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 16px;
  font-size: 12.5px; font-weight: 700; letter-spacing: .02em;
  color: var(--hp-on-surface);
  border-bottom: 1px solid var(--hp-outline-variant);
}
.fx-sin-sayac {
  margin-left: auto; font-size: 11.5px; font-weight: 700;
  color: var(--hp-on-surface-variant);
  background: var(--hp-surface-high);
  padding: 3px 9px; border-radius: 999px;
}
/* Liste kendi içinde kayıyor — SAYFA kaymıyor. Oynatıcı yüksekliğini
   aşan bir liste bölümün hizasını bozardı. */
.fx-sin-liste-yol { flex: 1 1 auto; min-height: 0; overflow-y: auto; }

.fx-sin-satir {
  display: flex; gap: 11px; padding: 10px 12px;
  border-bottom: 1px solid var(--hp-outline-variant);
  transition: background-color .16s ease;
}
.fx-sin-satir:last-child { border-bottom: 0; }
.fx-sin-satir:hover { background: var(--hp-surface-high); }

.fx-sin-satir-media {
  position: relative; flex: 0 0 108px; overflow: hidden;
  aspect-ratio: 16 / 9; border-radius: var(--hp-radius);
  background: var(--hp-surface-high);
}
.fx-sin-satir-media .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.fx-sin-satir-no {
  position: absolute; left: 0; bottom: 0; z-index: 2;
  min-width: 22px; height: 20px; padding: 0 5px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800; font-style: italic; color: #fff;
  background: rgba(2,6,23,.68);
  border-radius: 0 var(--hp-radius) 0 0;
}
.fx-sin-satir-text {
  display: flex; flex-direction: column; gap: 4px; min-width: 0; justify-content: center;
}
.fx-sin-satir-baslik {
  margin: 0; font-family: var(--hp-font-headline-title);
  font-size: 13.5px; line-height: 1.32; font-weight: 700;
  color: var(--hp-on-surface);
}
.fx-sin-satir:hover .fx-sin-satir-baslik { color: var(--hp-primary); }
.fx-sin-satir-meta { font-size: 11px; color: var(--hp-on-surface-variant); }

/* ---------------------------------------------------------------------
   6) EKONOMİ  —  blocks/economy.php
   Üstte gerçek veri şeridi, altında geniş kapak + tipografik kartlar.
   --------------------------------------------------------------------- */
.fx-piyasa {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 6), minmax(0, 1fr));
  gap: 10px;
  margin-bottom: var(--hp-space-6);
}
.fx-piyasa-kutu {
  display: flex; flex-direction: column; gap: 2px;
  padding: 12px 14px;
  border-radius: var(--hp-radius-lg);
  background: var(--hp-surface);
  border: 1px solid var(--hp-outline-variant);
  border-top: 3px solid var(--hp-outline);
}
/* Yön RENKLE ve OKLA birlikte: renk tek başına bilgi taşımıyor. */
.fx-piyasa-kutu.is-artis { border-top-color: var(--hp-secondary); }
.fx-piyasa-kutu.is-dusus { border-top-color: var(--hp-error); }

.fx-piyasa-ad {
  font-size: 10.5px; font-weight: 800; letter-spacing: .06em;
  text-transform: uppercase; color: var(--hp-on-surface-variant);
}
.fx-piyasa-deger {
  font-family: var(--hp-font-headline-title);
  font-size: 19px; font-weight: 800; letter-spacing: -.02em;
  color: var(--hp-on-surface); font-variant-numeric: tabular-nums;
}
.fx-piyasa-fark {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 11.5px; font-weight: 700;
}
.is-artis .fx-piyasa-fark { color: var(--hp-secondary); }
.is-dusus .fx-piyasa-fark { color: var(--hp-error); }

.fx-eko { display: flex; flex-direction: column; gap: 18px; }

.fx-eko-kapak {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--hp-radius-xl);
  /* Geniş sinemaskop oran: sayfadaki diğer kartların hiçbiri bu
     orana sahip değil, bölüm tek bakışta ayırt ediliyor. */
  aspect-ratio: 21 / 9; min-height: 260px;
  background: var(--hp-surface-high);
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-eko-kapak:hover { box-shadow: 0 16px 34px rgba(15,23,42,.16); transform: translateY(-3px); }
.fx-eko-kapak > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .6s ease;
}
.fx-eko-kapak:hover > .hp-img { transform: scale(1.05); }

.fx-eko-kartlar {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 4), minmax(0, 1fr));
  gap: 14px;
}
/* Görselsiz "analiz kartı": sayfanın geri kalanı görsel ağırlıklı,
   burada ritim bilerek düşüyor — finans masası hissi. */
.fx-eko-kart {
  display: flex; flex-direction: column; gap: 7px;
  padding: 16px 17px;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-lg);
  border-top: 3px solid var(--fx-eko-renk, var(--hp-secondary));
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .2s ease, transform .2s ease;
}
.fx-eko-kart:hover { box-shadow: 0 12px 26px rgba(15,23,42,.13); transform: translateY(-3px); }
.fx-eko-baslik {
  margin: 0; font-family: var(--hp-font-headline-title);
  font-size: 16px; line-height: 1.3; font-weight: 700;
  color: var(--hp-on-surface);
}
.fx-eko-kart:hover .fx-eko-baslik { color: var(--hp-primary); }
.fx-eko-spot {
  margin: 0; font-size: 13px; line-height: 1.5;
  color: var(--hp-on-surface-variant);
}
.fx-eko-meta {
  display: flex; gap: 14px; margin-top: auto; padding-top: 8px;
  font-size: 11.5px; color: var(--hp-on-surface-variant);
}
.fx-eko-meta span { display: inline-flex; align-items: center; gap: 4px; }

/* ---------------------------------------------------------------------
   7) SPOR ARENA  —  blocks/sports.php
   news'teki koyu "saha" bandının yerine açık zemin + aksan rengi.
   Renk yalnızca çizgi, rozet ve sıra kapsülünde.
   --------------------------------------------------------------------- */
.fx-spor {
  display: grid;
  grid-template-columns: 1.8fr 1fr;
  gap: 18px;
  align-items: start;
}
.fx-spor-tek { grid-template-columns: 1fr; }

.fx-spor-sol { display: flex; flex-direction: column; gap: 14px; }
.fx-spor-one { min-height: 340px; }
.fx-spor-yardim {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px;
}
.fx-spor-rozet {
  display: inline-flex; align-items: center;
  padding: 4px 12px; border-radius: 999px;
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  background: var(--fx-spor); color: var(--fx-spor-on);
}

.fx-cetvel {
  display: flex; flex-direction: column;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.fx-cetvel-head {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 16px;
  font-size: 13px; font-weight: 800; letter-spacing: .02em;
  color: var(--fx-spor-on); background: var(--fx-spor);
}
.fx-cetvel-tablo { width: 100%; border-collapse: collapse; font-size: 13px; }
.fx-cetvel-tablo th {
  padding: 9px 10px; font-size: 10.5px; font-weight: 800;
  text-transform: uppercase; letter-spacing: .05em;
  color: var(--hp-on-surface-variant);
  border-bottom: 1px solid var(--hp-outline-variant);
}
.fx-cetvel-tablo td {
  padding: 9px 10px;
  border-bottom: 1px solid var(--hp-outline-variant);
  color: var(--hp-on-surface);
}
.fx-cetvel-tablo tr:last-child td { border-bottom: 0; }
.fx-cetvel-sira { width: 38px; }
.fx-cetvel-no {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; height: 22px; padding: 0 5px; border-radius: 999px;
  font-size: 11.5px; font-weight: 800;
  background: var(--hp-surface-high); color: var(--hp-on-surface-variant);
}
/* Zirve üç: renk + KAPSÜL dolgusu birlikte — renk tek başına bilgi değil,
   sıra numarası zaten yazıyor. */
.fx-cetvel-no.is-zirve { background: var(--fx-spor); color: var(--fx-spor-on); }
.fx-cetvel-takim { font-weight: 700; }
.fx-cetvel-btn {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  padding: 12px; font-size: 12.5px; font-weight: 700;
  color: var(--hp-on-surface-variant);
  border-top: 1px solid var(--hp-outline-variant);
  transition: background-color .18s ease, color .18s ease;
}
.fx-cetvel-btn:hover { background: var(--fx-spor); color: var(--fx-spor-on); }

/* ---------------------------------------------------------------------
   MOBİL — Faz-2 / B
   --------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .fx-sinema { grid-template-columns: 1fr; }
  .fx-sin-one { min-height: 300px; }
  .fx-sin-liste-yol { max-height: 320px; }
  .fx-spor { grid-template-columns: 1fr; }
  .fx-eko-kapak { aspect-ratio: 16 / 9; }
}

@media (max-width: 575.98px) {
  .fx-akis-satir { padding-right: 10px; }
  .fx-akis-media { flex-basis: 62px; }
  .fx-akis-saat { padding-left: 10px; font-size: 12px; }
  .fx-sin-play { width: 58px; height: 58px; }
  .fx-sin-satir-media { flex-basis: 92px; }

  .fx-piyasa-deger { font-size: 16px; }
  .fx-eko-kapak { aspect-ratio: 4 / 3; min-height: 0; }
  .fx-spor-one { min-height: 260px; }
}

/* ---------------------------------------------------------------------
   FNEX — hpKolon ızgaralarının DAR EKRAN karşılığı

   Sütun sayısı masaüstünde İÇERİKTEN türüyor (--fx-kol, hpKolon).
   Dar ekranda içerik değil YER belirleyici: 5 sütunluk bir ızgara
   telefonda 70px'lik kartlar demek. Bu yüzden değişkenin kendisi
   eziliyor — kural tek yerde kalıyor, blok dosyaları dokunulmuyor.
   --------------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .fx-eko-kartlar { --fx-kol: 3 !important; }
  .fx-mini-grid   { --fx-kol: 3 !important; }
  .fx-piyasa      { --fx-kol: 4 !important; }
}

@media (max-width: 767.98px) {
  .fx-eko-kartlar { --fx-kol: 2 !important; }
  .fx-mini-grid   { --fx-kol: 2 !important; }
  .fx-piyasa      { --fx-kol: 3 !important; }
}

@media (max-width: 479.98px) {
  .fx-eko-kartlar { --fx-kol: 1 !important; }
  .fx-mini-grid   { --fx-kol: 1 !important; }
  .fx-piyasa      { --fx-kol: 2 !important; }
}

/* =====================================================================
   ============  FNEX — FAZ-2 / C: ALT BİLGİ  ============

   Zemin "Anlık Haber Akışı" bandıyla AYNI koyu ton: sayfanın koyu
   parçaları tek aileden görünüyor. Üstünde ince bir accent çizgi —
   içeriğin bittiğini gösteren tek görsel işaret.
   ===================================================================== */

.fx-footer {
  position: relative;
  background: linear-gradient(180deg, #0b1220 0%, #070d18 100%);
  color: rgba(255,255,255,.72);
}
.fx-foot-cizgi {
  position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--hp-primary), var(--hp-secondary));
}

/* ---- ÜST: marka solda, sosyal sağda ---- */
.fx-foot-ust {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 28px; flex-wrap: wrap;
  padding-bottom: var(--hp-space-8);
  border-bottom: 1px solid rgba(255,255,255,.10);
}
.fx-foot-marka { max-width: 620px; }
.fx-foot-logo { display: inline-block; }
.fx-foot-logo img {
  height: 44px; width: auto; max-width: 220px; object-fit: contain;
  /* FİLTRE YOK — bilerek. İlk sürümde koyu zeminde okunsun diye
     `filter: brightness(0) invert(1)` vardı; ÖLÇÜLDÜ: zemini olan bir
     logo (kurulumun ürettiği PNG) komple BEYAZ BİR KUTUYA dönüştü.
     Filtre renkli/markalı her logoyu tek renk siluete çeviriyor —
     yayıncının markasını bozmak, düşük kontrasttan daha kötü.
     Koyu logolu kurulumlar alt bilgi için açık bir logo yükler. */
}
.fx-foot-lead {
  margin: 14px 0 0;
  font-size: 13.5px; line-height: 1.65;
  color: rgba(255,255,255,.62);
}

.fx-foot-sosyal { display: flex; flex-wrap: wrap; gap: 9px; }
.fx-foot-soc {
  width: 42px; height: 42px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  color: rgba(255,255,255,.80);
  background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.12);
  transition: background-color .18s ease, color .18s ease, transform .18s ease;
}
.fx-foot-soc:hover {
  background: var(--hp-primary); color: #fff; border-color: var(--hp-primary);
  transform: translateY(-2px);
}

/* ---- ORTA: kategoriler + kurumsal ---- */
.fx-foot-orta {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  gap: 36px;
  padding-top: var(--hp-space-8);
}
.fx-foot-head {
  margin: 0 0 14px;
  font-family: var(--hp-font-headline-title);
  font-size: 12px; font-weight: 800; letter-spacing: .12em;
  text-transform: uppercase; color: rgba(255,255,255,.45);
}

/* Kategoriler KAPSÜL: 24 kategori madde listesi olsaydı alt bilgi bir
   site haritasına dönerdi. Kapsül aynı yerde daha çoğunu taşıyor ve
   dokunmatik hedefi büyük. */
.fx-foot-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.fx-foot-chip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 7px 14px; border-radius: 999px;
  font-size: 13px; font-weight: 600;
  color: rgba(255,255,255,.80);
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.10);
  transition: background-color .18s ease, color .18s ease, border-color .18s ease;
}
.fx-foot-chip:hover {
  background: var(--hp-primary); color: #fff; border-color: var(--hp-primary);
}
.fx-foot-chip.is-tumu {
  background: transparent; border-color: rgba(255,255,255,.28);
  color: rgba(255,255,255,.62);
}

/* Kurumsal bağlantılar: iki kolon, madde işareti yok. */
.fx-foot-links {
  display: grid; grid-template-columns: 1fr 1fr; gap: 2px 18px;
}
.fx-foot-links a {
  display: block; padding: 7px 0;
  font-size: 13.5px; color: rgba(255,255,255,.66);
  transition: color .16s ease, padding-left .16s ease;
}
.fx-foot-links a:hover { color: #fff; padding-left: 4px; }

/* ---- ALT BAR ---- */
.fx-foot-alt {
  border-top: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.28);
}
.fx-foot-alt-in {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 10px;
  padding-block: 18px;
  font-size: 12.5px; color: rgba(255,255,255,.50);
}
.fx-foot-alt-in strong { color: rgba(255,255,255,.82); font-weight: 700; }
.fx-foot-kredi { color: rgba(255,255,255,.38); }
.fx-foot-kredi a { color: rgba(255,255,255,.62); }
.fx-foot-kredi a:hover { color: #fff; }

@media (max-width: 991.98px) {
  .fx-foot-orta { grid-template-columns: 1fr; gap: 28px; }
}
@media (max-width: 575.98px) {
  .fx-foot-ust { gap: 20px; }
  .fx-foot-links { grid-template-columns: 1fr; }
  .fx-foot-alt-in { justify-content: flex-start; }
  .fx-foot-soc { width: 38px; height: 38px; }
}

/* =====================================================================
   ============  FNEX — FAZ-3: HABER DETAYI  ============

   Anasayfadaki dil iç sayfaya taşınıyor: sürükleyici kapak, çerçevesiz
   künye, görsel üstü yazılı ilgili haberler, görselli "sıradaki haber".

   KORUNAN KANCALAR (dokunulmadı, dokunulmamalı):
     .hp-article          yazdırma kuralı + okuma ilerlemesi + yazı boyutu
     .hp-article-body     gövde tipografisi ve taşma mekanizması
     [data-hp-*]          sonsuz okuma, büyüteç, paylaşım motoru
   ===================================================================== */

/* ---- EKMEK KIRINTISI ---- */
.fx-kirinti {
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
  margin-bottom: 14px;
  font-size: 12.5px; color: var(--hp-on-surface-variant);
}
.fx-kirinti a { color: var(--hp-on-surface-variant); transition: color .16s ease; }
.fx-kirinti a:hover { color: var(--hp-primary); }

/* ---------------------------------------------------------------------
   KAPAK (hero)

   Oran SABİT DEĞİL: `aspect-ratio` yerine `min-height` + `max-height`
   kullanılıyor. Sebep ölçüm: 21:9 sabit oranda uzun başlıklı haberde
   metin scrim'in dışına taşıyor, kısa başlıkta ise altta koca boşluk
   kalıyordu. Yükseklik aralığı verilince kapak içeriğe göre nefes
   alıyor.
   --------------------------------------------------------------------- */
.fx-hero {
  position: relative; display: block; overflow: hidden; margin: 0 0 18px;
  border-radius: var(--hp-radius-xl);
  min-height: 380px;
  background: var(--hp-surface-high);
  cursor: zoom-in;                 /* büyüteçle açılıyor */
}
.fx-hero > .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.fx-hero-scrim {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to top, rgba(2,6,23,.92) 0%, rgba(2,6,23,.45) 48%, rgba(2,6,23,.05) 80%);
}
.fx-hero-text {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
  /* min-height ile aynı değer: metin bloğu kapağın altına yaslanıyor,
     kutunun yüksekliğini de metnin kendisi belirleyebiliyor. */
  min-height: 380px; justify-content: flex-end;
  padding: 28px 30px 26px;
}
.fx-hero-baslik {
  margin: 0; color: #fff;
  font-family: var(--hp-font-headline-title);
  font-size: 38px; line-height: 1.14; font-weight: 800; letter-spacing: -.025em;
}
.fx-hero-spot {
  margin: 0; max-width: 68ch;
  color: rgba(255,255,255,.88);
  font-size: 16.5px; line-height: 1.6;
}

/* Görselsiz haber: scrim'li boş kutu yerine düz başlık bloğu. */
.fx-hero-duz {
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
  padding: 4px 0 20px;
  border-bottom: 1px solid var(--hp-outline-variant);
  margin-bottom: 18px;
}
.fx-hero-duz .fx-hero-baslik { color: var(--hp-on-surface); }
.fx-hero-duz .fx-hero-spot   { color: var(--hp-on-surface-variant); }

/* ---------------------------------------------------------------------
   KÜNYE ŞERİDİ
   news'te çerçeveli gri kutuydu; kapağın hemen altında ikinci bir kutu
   sayfayı ağırlaştırıyordu. Burada tek ayraç çizgisi yetiyor.
   --------------------------------------------------------------------- */
.fx-kunye {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 14px;
  padding-bottom: 14px; margin-bottom: 18px;
  border-bottom: 1px solid var(--hp-outline-variant);
}
.fx-kunye-yazar { display: flex; align-items: center; gap: 11px; min-width: 0; }
.fx-kunye-avatar {
  width: 42px; height: 42px; border-radius: 999px; object-fit: cover; flex-shrink: 0;
  box-shadow: 0 0 0 2px var(--hp-surface), 0 0 0 4px var(--hp-primary-fixed);
}
.fx-kunye-ad { display: flex; flex-direction: column; min-width: 0; }
.fx-kunye-ad strong { font-size: 14px; font-weight: 700; color: var(--hp-on-surface); }
.fx-kunye-ad span   { font-size: 12px; color: var(--hp-on-surface-variant); }

.fx-kunye-meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px;
  font-size: 12.5px; color: var(--hp-on-surface-variant);
}
.fx-kunye-meta > span { display: inline-flex; align-items: center; gap: 5px; }
.fx-kunye-sure {
  font-weight: 700; color: var(--hp-primary);
  background: var(--hp-primary-fixed);
  padding: 4px 11px; border-radius: 999px;
}

/* ---------------------------------------------------------------------
   İLGİLİ HABERLER — anasayfadaki .fx-bk kart dili
   --------------------------------------------------------------------- */
.fx-ilgili-grid {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 3), minmax(0, 1fr));
  gap: 16px;
}
.fx-ilgili-kart { min-height: 215px; }
.fx-ilgili-kart .fx-bk-baslik { font-size: 16px; -webkit-line-clamp: 3; }

/* ---------------------------------------------------------------------
   SIRADAKİ HABER
   --------------------------------------------------------------------- */
.fx-sonraki-head {
  display: flex; align-items: center; gap: 9px; margin-bottom: 14px;
  font-size: 11.5px; font-weight: 800; letter-spacing: .1em;
  text-transform: uppercase; color: var(--hp-on-surface-variant);
}
.fx-sonraki {
  display: flex; align-items: stretch; gap: 16px;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  /* Sol kenarda accent şerit: kutunun bir EYLEM olduğunu söylüyor. */
  border-left: 4px solid var(--hp-primary);
  transition: box-shadow .2s ease, transform .2s ease;
}
.fx-sonraki:hover { box-shadow: 0 14px 30px rgba(15,23,42,.14); transform: translateY(-3px); }

.fx-sonraki-media {
  position: relative; flex: 0 0 152px; overflow: hidden; aspect-ratio: 16 / 10;
}
.fx-sonraki-media .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .5s ease;
}
.fx-sonraki:hover .fx-sonraki-media .hp-img { transform: scale(1.07); }

.fx-sonraki-ikon {
  flex: 0 0 auto; align-self: center; margin-left: 16px;
  width: 46px; height: 46px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--hp-primary-fixed); color: var(--hp-primary);
}
.fx-sonraki-text {
  display: flex; flex-direction: column; gap: 4px; justify-content: center;
  min-width: 0; padding: 14px 0;
}
.fx-sonraki-duz .fx-sonraki-text { padding-left: 0; }
.fx-sonraki-etiket {
  font-size: 11px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--hp-on-surface-variant);
}
.fx-sonraki-baslik {
  font-family: var(--hp-font-headline-title);
  font-size: 17px; line-height: 1.3; font-weight: 700;
  color: var(--hp-on-surface);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.fx-sonraki:hover .fx-sonraki-baslik { color: var(--hp-primary); }
.fx-sonraki-ok {
  flex: 0 0 auto; align-self: center; margin-left: auto; margin-right: 18px;
  color: var(--hp-outline); transition: color .18s ease, transform .18s ease;
}
.fx-sonraki:hover .fx-sonraki-ok { color: var(--hp-primary); transform: translateY(3px); }

.fx-sonraki-son {
  margin: 14px 0 0; text-align: center;
  font-size: 12.5px; color: var(--hp-on-surface-variant);
}

/* ---------------------------------------------------------------------
   MOBİL — haber detayı
   --------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .fx-ilgili-grid { --fx-kol: 2 !important; }
  .fx-hero, .fx-hero-text { min-height: 300px; }
  .fx-hero-baslik { font-size: 30px; }
}

@media (max-width: 575.98px) {
  .fx-ilgili-grid { --fx-kol: 1 !important; }
  .fx-hero, .fx-hero-text { min-height: 250px; }
  .fx-hero-text { padding: 20px 18px 18px; }
  .fx-hero-baslik { font-size: 24px; }
  .fx-hero-spot { font-size: 14.5px; }
  .fx-kunye { gap: 10px; }
  .fx-kunye-meta { gap: 12px; font-size: 12px; }
  .fx-sonraki-media { flex-basis: 108px; }
  .fx-sonraki-ok { display: none; }   /* dar ekranda başlığa yer açıyor */
}

/* Yazdırma: kapak scrim'i ve "sıradaki haber" kâğıda gitmesin.
   Asıl kapsam kuralı .hp-article'a bağlı (theme.css §20) — burada
   yalnızca fnex'e özgü öğeler. */
@media print {
  .fx-hero-scrim { display: none; }
  .fx-hero-text  { position: static; min-height: 0; padding: 10px 0 0; }
  .fx-hero-baslik, .fx-hero-spot { color: #000; }
  .fx-sonraki, .fx-sonraki-head, .fx-sonraki-son { display: none; }
}

/* ---------------------------------------------------------------------
   SPOT — kapağın altında (20.09.2026)

   Önce kategori + başlık + spot üçü birden scrim'in üstündeydi.
   `description` alanının uzunluğu yayıncıya göre değişiyor; uzun spot
   hero'yu şişirip görseli eziyordu ve beyaz metin koyu zeminde paragraf
   hâline gelince okunurluk düşüyordu. Kapakta artık yalnızca kısa ve
   öngörülebilir iki öğe var; spot buraya taşındı ve uzunluğu serbest.
   --------------------------------------------------------------------- */
.fx-spot {
  margin: 0 0 18px;
  padding-left: 16px;
  border-left: 3px solid var(--fx-spot-renk, var(--hp-primary));
  font-size: 18px; line-height: 1.62; font-weight: 500;
  color: var(--hp-on-surface-variant);
}

/* Görselsiz haberde kapak zaten düz bir başlık bloğu ve altında
   ayraç çizgisi var; spot ona yapışmasın. */
.fx-hero-duz + .fx-spot { margin-top: -2px; }

@media (max-width: 575.98px) {
  .fx-spot { font-size: 16px; padding-left: 13px; }
}

@media print {
  .fx-spot { border-left: 0; padding-left: 0; color: #000; }
}

/* =====================================================================
   ============  FNEX — FAZ-4: KATEGORİ · ARŞİV · ETİKET  ============

   `.fx-satir` ve `.fx-akis-liste` üç sayfada ORTAK
   (news_category · archive · tag) ve sonsuz akış yükleyicisi de aynı
   parçayı basıyor — ilk parti ile sonrakiler bu sayede birebir aynı.
   ===================================================================== */

/* ---------------------------------------------------------------------
   KATEGORİ BANDI
   Kategori rengi başlığın yanındaki ince çubuktan çıkıp BANDIN KENDİSİNE
   giriyor: çok açık tonlu zemin + solda dolu renk şerit. Okur hangi
   kategoride olduğunu metni okumadan anlıyor.
   --------------------------------------------------------------------- */
.fx-katbant {
  position: relative;
  padding: 20px 24px 20px 26px;
  margin-bottom: var(--hp-space-6);
  border-radius: var(--hp-radius-xl);
  background: var(--hp-surface-high);
  background: rgba(var(--fx-kat-rgb, 37,99,235), .07);
  overflow: hidden;
}
/* Sol şerit: ayrı bir öğe değil ::before — işaretleme temiz kalıyor. */
.fx-katbant::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px;
  background: var(--fx-kat, var(--hp-primary));
}
.fx-katbant .fx-kirinti { margin-bottom: 8px; }

.fx-katbant-ust {
  display: flex; align-items: center; flex-wrap: wrap; gap: 12px;
}
.fx-katbant-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 34px; line-height: 1.1; font-weight: 800; letter-spacing: -.025em;
  /* Koyulaştırılmış ton: ham kategori rengi açık tonlu zeminde
     (sarı, açık yeşil) okunmuyordu. `deep` hpPalet'ten geliyor. */
  color: var(--fx-kat-deep, var(--hp-on-surface));
  text-transform: uppercase;
}
.fx-katbant-sayi {
  padding: 5px 12px; border-radius: 999px;
  font-size: 12px; font-weight: 700;
  color: var(--fx-kat-deep, var(--hp-on-surface));
  background: var(--hp-surface);
}
.fx-katbant-spot {
  margin: 10px 0 0; max-width: 72ch;
  font-size: 14px; line-height: 1.6; color: var(--hp-on-surface-variant);
}

/* ---------------------------------------------------------------------
   VİTRİN — 1 geniş yatay panel + 2 overlay kart
   --------------------------------------------------------------------- */
.fx-vitrin { display: flex; flex-direction: column; gap: 18px; }

.fx-vitrin-one {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-vitrin-one:hover { box-shadow: 0 16px 34px rgba(15,23,42,.15); transform: translateY(-3px); }

.fx-vitrin-media {
  position: relative; overflow: hidden;
  /* Sabit oran: görsel yüklenmeden yer ayrılıyor (CLS). */
  aspect-ratio: 16 / 10;
}
.fx-vitrin-media .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .6s ease;
}
.fx-vitrin-one:hover .fx-vitrin-media .hp-img { transform: scale(1.05); }

.fx-vitrin-rozet {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  padding: 5px 13px; border-radius: 999px;
  font-size: 11px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  color: #fff; background: var(--fx-kat, var(--hp-primary));
}

.fx-vitrin-govde {
  display: flex; flex-direction: column; justify-content: center; gap: 10px;
  padding: 26px 28px; min-width: 0;
}
.fx-vitrin-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 26px; line-height: 1.2; font-weight: 800; letter-spacing: -.02em;
  color: var(--hp-on-surface);
  transition: color .18s ease;
}
.fx-vitrin-one:hover .fx-vitrin-baslik { color: var(--hp-primary); }
.fx-vitrin-spot {
  font-size: 14.5px; line-height: 1.6; color: var(--hp-on-surface-variant);
}

.fx-vitrin-yan {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 2), minmax(0, 1fr));
  gap: 18px;
}
.fx-vitrin-kart { min-height: 230px; }

/* ---------------------------------------------------------------------
   AKIŞ SATIRI  (.fx-satir) — kategori · arşiv · etiket ORTAK

   Çerçeveli karttan çerçevesiz satıra. Ayraç çizgisi SATIRIN KENDİSİNDE
   değil listede: `.fx-akis-liste > * + *`. Böylece sonradan yüklenen
   partide de doğru yerde çıkıyor ve listenin sonunda yetim çizgi
   kalmıyor. (Satıra `border-bottom` verilseydi son satırın altında da
   çizgi olurdu ve her partinin sonunda tekrarlardı.)
   --------------------------------------------------------------------- */
.fx-akis-liste { display: flex; flex-direction: column; }
.fx-akis-liste > * + * { border-top: 1px solid var(--hp-outline-variant); }

.fx-satir {
  display: flex; gap: 18px; align-items: flex-start;
  padding: 18px 12px;
  border-radius: var(--hp-radius-lg);
  transition: background-color .18s ease;
}
.fx-satir:hover { background: var(--hp-surface-high); }

.fx-satir-media {
  position: relative; flex: 0 0 200px; overflow: hidden;
  aspect-ratio: 4 / 3;
  border-radius: var(--hp-radius-lg);
  background: var(--hp-surface-high);
}
.fx-satir-media .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .45s ease;
}
.fx-satir:hover .fx-satir-media .hp-img { transform: scale(1.06); }

.fx-satir-govde {
  display: flex; flex-direction: column; gap: 6px; min-width: 0; flex: 1 1 auto;
}
/* Kategori ROZET değil renkli metin — yirmi satırda yirmi renkli kutu
   listeyi alacalı yapıyordu. */
.fx-satir-cat {
  font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .06em;
}
.fx-satir-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 19px; line-height: 1.28; font-weight: 700; letter-spacing: -.012em;
}
.fx-satir-baslik a { color: var(--hp-on-surface); transition: color .18s ease; }
.fx-satir:hover .fx-satir-baslik a { color: var(--hp-primary); }
.fx-satir-spot {
  margin: 0; font-size: 14px; line-height: 1.55; color: var(--hp-on-surface-variant);
}
.fx-satir-meta {
  display: flex; flex-wrap: wrap; gap: 16px; margin-top: 2px;
  font-size: 12px; color: var(--hp-on-surface-variant);
}
.fx-satir-meta > span { display: inline-flex; align-items: center; gap: 5px; }

.fx-canli-not {
  display: inline-flex; align-items: center; gap: 7px; flex-shrink: 0;
  font-size: 12px; color: var(--hp-on-surface-variant);
}

/* ---------------------------------------------------------------------
   DAHA FAZLA YÜKLE
   --------------------------------------------------------------------- */
.fx-daha {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  width: 100%; max-width: 26rem;
  padding: 14px 24px; border-radius: 999px;
  font-size: 14px; font-weight: 700;
  color: var(--hp-primary);
  background: var(--hp-primary-fixed);
  transition: background-color .2s ease, color .2s ease, transform .15s ease;
}
.fx-daha:hover { background: var(--hp-primary); color: #fff; transform: translateY(-2px); }
.fx-daha-son { font-size: 12.5px; color: var(--hp-on-surface-variant); }

/* ---------------------------------------------------------------------
   YAN KUTU — kategori sayfasının bağlamsal kutusu
   `.hp-w` widget kabuğunu KULLANMIYOR: bu kutu panelden yönetilen bir
   widget değil, sayfanın kendi verisi. Görünüm yine de widget'larla
   aynı ritimde kalsın diye ölçüler eşitlendi.
   --------------------------------------------------------------------- */
.fx-yan-kutu {
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  padding: 14px 16px 6px;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.fx-yan-kutu-head {
  display: flex; align-items: center; gap: 10px;
  padding-bottom: 10px; margin-bottom: 4px;
  border-bottom: 1px solid var(--hp-outline-variant);
}

/* ---------------------------------------------------------------------
   MOBİL
   --------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .fx-vitrin-one { grid-template-columns: 1fr; }
  .fx-vitrin-govde { padding: 20px; }
  .fx-vitrin-baslik { font-size: 22px; }
  .fx-katbant-baslik { font-size: 28px; }
}

@media (max-width: 575.98px) {
  .fx-katbant { padding: 16px 16px 16px 20px; }
  .fx-katbant-baslik { font-size: 23px; }
  .fx-vitrin-yan { --fx-kol: 1 !important; }
  .fx-vitrin-kart { min-height: 200px; }

  /* Satır dikeye dönüyor: 200px'lik görsel + metin telefonda yan yana
     sığmıyor, başlık üç kelimede bir sarıyordu. */
  .fx-satir { flex-direction: column; gap: 12px; padding: 16px 8px; }
  .fx-satir-media { flex-basis: auto; width: 100%; aspect-ratio: 16 / 9; }
  .fx-satir-baslik { font-size: 17.5px; }
}

/* =====================================================================
   ============  FNEX — FAZ-5: YAZARLAR · PROFİL · KÖŞE YAZISI  =======

   ÜÇÜ DE AYNI KALIBI PAYLAŞIYOR: renkli açık tonlu bant + solda dolu
   renk şerit + büyük kare portre. Kategori bandıyla da aynı iskelet;
   fark yalnızca rengin kaynağı (kategori rengi ↔ yazarın monogram
   rengi). Okur her sayfada "burası neyin sayfası"nı aynı görsel dille
   okuyor.
   ===================================================================== */

/* ---------------------------------------------------------------------
   ORTAK SAYFA BAŞLIĞI  (parts/sayfa_bas.php)
   Yazarlar · galeri · video · ilan · rehber · bilgi sayfaları.
   --------------------------------------------------------------------- */
.fx-sayfa-bas {
  padding-bottom: 18px; margin-bottom: var(--hp-space-6);
  border-bottom: 1px solid var(--hp-outline-variant);
}
.fx-sayfa-bas .fx-kirinti { margin-bottom: 10px; }
.fx-sayfa-bas-ust {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 14px;
}
.fx-sayfa-bas-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 32px; line-height: 1.12; font-weight: 800; letter-spacing: -.025em;
  text-transform: uppercase; color: var(--hp-on-surface);
}
.fx-sayfa-bas-rozetler { display: flex; flex-wrap: wrap; gap: 8px; }
.fx-sayfa-bas-rozet {
  padding: 6px 13px; border-radius: 999px;
  font-size: 12.5px; color: var(--hp-on-surface-variant);
  background: var(--hp-surface-high);
}
.fx-sayfa-bas-rozet b { color: var(--hp-on-surface); font-weight: 800; }
.fx-sayfa-bas-not {
  margin: 10px 0 0; max-width: 72ch;
  font-size: 14px; line-height: 1.6; color: var(--hp-on-surface-variant);
}

/* ---------------------------------------------------------------------
   MONOGRAM — fotoğrafı olmayan yazar

   news'te 62px'lik soluk bir daireydi. fnex'te portrenin TAMAMINI
   dolduruyor: yazarın kendi renginde zemin, dev harf. Fotoğrafsız kart
   "eksik" değil, sadece farklı.
   --------------------------------------------------------------------- */
.fx-yzr-mono {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--hp-font-headline-title);
  font-weight: 800; letter-spacing: -.03em;
  font-size: clamp(38px, 42%, 90px);
  color: var(--fx-yzr, var(--hp-primary));
  background: color-mix(in srgb, var(--fx-yzr, #2563eb) 16%, var(--hp-surface));
}

/* ---------------------------------------------------------------------
   YAZARLAR — ÖNE ÇIKAN
   --------------------------------------------------------------------- */
.fx-yzr-one {
  display: grid; grid-template-columns: 300px 1fr;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .22s ease, transform .22s ease;
}
.fx-yzr-one:hover { box-shadow: 0 16px 34px rgba(15,23,42,.15); transform: translateY(-3px); }
.fx-yzr-one-portre { position: relative; overflow: hidden; aspect-ratio: 1 / 1; }
.fx-yzr-one-portre .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .6s ease;
}
.fx-yzr-one:hover .fx-yzr-one-portre .hp-img { transform: scale(1.05); }

.fx-yzr-one-govde {
  display: flex; flex-direction: column; justify-content: center; gap: 8px;
  padding: 28px 30px; min-width: 0;
}
.fx-yzr-etiket {
  display: inline-flex; align-self: flex-start;
  padding: 4px 12px; border-radius: 999px;
  font-size: 10.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: #fff; background: var(--fx-yzr, var(--hp-primary));
}
.fx-yzr-one-ad {
  font-family: var(--hp-font-headline-title);
  font-size: 30px; line-height: 1.15; font-weight: 800; letter-spacing: -.025em;
  color: var(--hp-on-surface);
}
.fx-yzr-one-unvan { font-size: 13.5px; color: var(--hp-on-surface-variant); }
.fx-yzr-one-yazi {
  margin-top: 6px;
  font-family: var(--hp-font-headline-title);
  font-size: 17px; line-height: 1.35; font-weight: 700;
  color: var(--hp-on-surface-variant);
}
.fx-yzr-one:hover .fx-yzr-one-yazi { color: var(--hp-primary); }

/* ---------------------------------------------------------------------
   YAZARLAR — PORTRE IZGARASI
   --------------------------------------------------------------------- */
.fx-yzr-grid {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 4), minmax(0, 1fr));
  gap: 18px; margin-top: 18px;
}
.fx-yzr-kart {
  display: flex; flex-direction: column;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  /* Üstte yazarın kendi rengi — ızgara tekdüze gri kutular dizisi
     olmuyor, her kart kendi kimliğini taşıyor. */
  border-top: 3px solid var(--fx-yzr, var(--hp-primary));
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .2s ease, transform .2s ease;
}
.fx-yzr-kart:hover { box-shadow: 0 14px 30px rgba(15,23,42,.14); transform: translateY(-3px); }

.fx-yzr-portre {
  position: relative; display: block; overflow: hidden;
  aspect-ratio: 1 / 1;
  /* TAVAN ŞART: sütun sayısı öğe sayısından türüyor (hpKolon), yani
     2 yazarlı sitede ızgara 2 sütuna iniyor ve kart ~600px'e çıkıyor.
     1/1 oranla portre de 600px yükseliyor, tek kart ekranı yiyordu
     (ekran görüntüsüyle yakalandı). max-height kırpıyor; object-fit
     cover oranı koruduğu için görsel bozulmuyor. */
  max-height: 320px;
  background: var(--hp-surface-high);
}
.fx-yzr-portre .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .5s ease;
}
.fx-yzr-kart:hover .fx-yzr-portre .hp-img { transform: scale(1.06); }

/* Ad/ünvan portrenin ÜSTÜNDE: kart yüksekliği ada göre oynamıyor,
   ızgara hizalı kalıyor. */
.fx-yzr-kim {
  position: absolute; left: 0; right: 0; bottom: 0; z-index: 2;
  display: flex; flex-direction: column; gap: 2px;
  padding: 14px 16px 13px;
}
.fx-yzr-ad {
  font-family: var(--hp-font-headline-title);
  font-size: 17px; line-height: 1.2; font-weight: 800; letter-spacing: -.02em;
  color: #fff;
}
.fx-yzr-unvan { font-size: 11.5px; color: rgba(255,255,255,.80); }

.fx-yzr-son {
  display: flex; flex-direction: column; gap: 4px;
  padding: 14px 16px 12px; flex: 1 1 auto;
}
.fx-yzr-son-etiket {
  font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  color: var(--hp-on-surface-variant);
}
.fx-yzr-son-baslik {
  font-family: var(--hp-font-headline-title);
  font-size: 14.5px; line-height: 1.34; font-weight: 700;
  color: var(--hp-on-surface); transition: color .18s ease;
}
.fx-yzr-son:hover .fx-yzr-son-baslik { color: var(--hp-primary); }

.fx-yzr-ayak {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 16px 13px;
  border-top: 1px solid var(--hp-outline-variant);
  font-size: 11.5px; color: var(--hp-on-surface-variant);
}
.fx-yzr-ayak a {
  display: inline-flex; align-items: center; gap: 4px;
  font-weight: 700; color: var(--fx-yzr, var(--hp-primary));
}

/* ---------------------------------------------------------------------
   YAZAR PROFİLİ — BANT
   --------------------------------------------------------------------- */
.fx-yzp-bant {
  position: relative;
  padding: 22px 24px 22px 28px;
  border-radius: var(--hp-radius-xl);
  background: var(--hp-surface-high);
  background: color-mix(in srgb, var(--fx-yzr, #2563eb) 8%, var(--hp-surface));
  overflow: hidden;
}
.fx-yzp-bant::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px;
  background: var(--fx-yzr, var(--hp-primary));
}
.fx-yzp-kafa { display: flex; align-items: flex-start; gap: 20px; flex-wrap: nowrap; }

.fx-yzp-portre {
  position: relative; flex: 0 0 132px; overflow: hidden;
  aspect-ratio: 1 / 1; border-radius: var(--hp-radius-lg);
  background: var(--hp-surface);
}
.fx-yzp-portre .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}

/* `flex: 1 1 260px` DEĞİL: sütun kipinde (mobil) yüksekliğe bakıp
   bloğu uzatıyor ve künyede ~400px boşluk bırakıyordu — news'te
   ölçülmüş bir hataydı, burada baştan `min-width` ile kuruldu. */
.fx-yzp-bilgi { flex: 1 1 auto; min-width: 0; }
.fx-yzp-ad {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 30px; line-height: 1.12; font-weight: 800; letter-spacing: -.025em;
  color: var(--hp-on-surface);
}
.fx-yzp-unvan { margin-top: 4px; font-size: 14px; color: var(--hp-on-surface-variant); }
.fx-yzp-rozetler { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.fx-yzp-rozet {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 13px; border-radius: 999px;
  font-size: 12px; color: var(--hp-on-surface-variant);
  background: var(--hp-surface);
}
.fx-yzp-paylas { margin-top: 14px; }

/* ---- Yazı listesi: görsel yok, iri sıra numarası onun yerinde ---- */
.fx-yzp-satir {
  display: flex; gap: 18px; align-items: flex-start;
  padding: 18px 12px;
  border-radius: var(--hp-radius-lg);
  transition: background-color .18s ease;
}
.fx-yzp-satir:hover { background: var(--hp-surface-high); }
.fx-yzp-no {
  flex: 0 0 auto; min-width: 44px; text-align: center;
  font-family: var(--hp-font-headline-title);
  font-size: 30px; line-height: 1; font-weight: 800; font-style: italic;
  color: var(--hp-outline); letter-spacing: -.03em;
  transition: color .18s ease;
}
.fx-yzp-satir:hover .fx-yzp-no { color: var(--hp-primary); }
.fx-yzp-satir-govde { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.fx-yzp-satir-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 19px; line-height: 1.28; font-weight: 700; letter-spacing: -.012em;
  color: var(--hp-on-surface); transition: color .18s ease;
}
.fx-yzp-satir:hover .fx-yzp-satir-baslik { color: var(--hp-primary); }

/* ---- Sayfalama ---- */
.fx-sayfalama {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 12px; padding-top: 22px;
}
.fx-sayfa-btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 11px 20px; border-radius: 999px;
  font-size: 13.5px; font-weight: 700;
  color: var(--hp-primary); background: var(--hp-primary-fixed);
  transition: background-color .2s ease, color .2s ease;
}
.fx-sayfa-btn:hover { background: var(--hp-primary); color: #fff; }
.fx-sayfalama-no { font-size: 12.5px; color: var(--hp-on-surface-variant); }

/* ---------------------------------------------------------------------
   KÖŞE YAZISI — KAPAK
   Haberde kapak bir GÖRSEL; köşe yazısının görseli yok, görsel çıpa
   yazarın kendisi.
   --------------------------------------------------------------------- */
.fx-yzd-kapak {
  position: relative;
  /* `flex-wrap: wrap` DEĞİL — ÖLÇÜLDÜ. Sarmalı bırakınca uzun başlıklı
     yazıda metin bloğunun max-content genişliği kabı aşıyor ve portre
     ile metin ALT ALTA düşüyordu (ekran görüntüsüyle yakalandı).
     Masaüstünde satır kırılmıyor; metin bloğu `min-width: 0` ile
     daralabildiği için sığıyor. Dikey düzen yalnızca mobilde. */
  display: flex; align-items: center; gap: 22px; flex-wrap: nowrap;
  padding: 24px 26px 24px 30px; margin-bottom: 20px;
  border-radius: var(--hp-radius-xl);
  background: var(--hp-surface-high);
  background: color-mix(in srgb, var(--fx-yzr, #2563eb) 8%, var(--hp-surface));
  overflow: hidden;
}
.fx-yzd-kapak::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px;
  background: var(--fx-yzr, var(--hp-primary));
}
.fx-yzd-portre {
  position: relative; flex: 0 0 116px; overflow: hidden;
  aspect-ratio: 1 / 1; border-radius: var(--hp-radius-lg);
  background: var(--hp-surface);
}
.fx-yzd-portre .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.fx-yzd-govde { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 9px; }
.fx-yzd-tur {
  display: inline-flex; align-self: flex-start;
  padding: 4px 13px; border-radius: 999px;
  font-size: 10.5px; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;
  color: #fff; background: var(--fx-yzr, var(--hp-primary));
}
.fx-yzd-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 32px; line-height: 1.16; font-weight: 800; letter-spacing: -.025em;
  color: var(--hp-on-surface);
}
.fx-yzd-kim { display: flex; flex-direction: column; gap: 1px; }
.fx-yzd-kim strong {
  font-size: 15px; font-weight: 700; color: var(--hp-on-surface);
}
.fx-yzd-kim span {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12px; color: var(--fx-yzr, var(--hp-primary)); font-weight: 600;
}
.fx-yzd-meta {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px;
  font-size: 12.5px; color: var(--hp-on-surface-variant);
}
.fx-yzd-meta > span { display: inline-flex; align-items: center; gap: 5px; }

/* ---------------------------------------------------------------------
   MOBİL
   --------------------------------------------------------------------- */
@media (max-width: 1199.98px) {
  .fx-yzr-grid { --fx-kol: 3 !important; }
}
@media (max-width: 991.98px) {
  .fx-yzr-grid { --fx-kol: 2 !important; }
  .fx-yzr-one { grid-template-columns: 220px 1fr; }
  .fx-yzr-one-ad { font-size: 24px; }
  .fx-yzd-baslik { font-size: 26px; }
  .fx-sayfa-bas-baslik { font-size: 27px; }
}
@media (max-width: 575.98px) {
  .fx-yzr-grid { --fx-kol: 1 !important; }
  .fx-yzr-one { grid-template-columns: 1fr; }
  .fx-yzr-one-portre { aspect-ratio: 16 / 10; }
  .fx-yzr-one-govde { padding: 20px; }
  .fx-yzp-portre { flex-basis: 96px; }
  .fx-yzp-ad { font-size: 24px; }
  .fx-yzd-portre { flex-basis: 84px; }
  .fx-yzd-baslik { font-size: 22px; }
  .fx-yzp-no { min-width: 34px; font-size: 24px; }
  .fx-yzp-satir { gap: 12px; padding: 16px 8px; }
  .fx-sayfa-bas-baslik { font-size: 23px; }
}

@media print {
  .fx-yzd-kapak { background: none; padding: 0 0 12px; }
  .fx-yzd-kapak::before { display: none; }
  .fx-yzd-portre, .fx-yzd-tur { display: none; }
}

/* Yazar kapağı/profili DAR ekranda dikeye dönüyor. Masaüstünde
   `flex-wrap: nowrap` — uzun başlık portreyi alta itmesin diye. */
@media (max-width: 575.98px) {
  .fx-yzd-kapak, .fx-yzp-kafa { flex-wrap: wrap; }
}

/* =====================================================================
   ============  FNEX — FAZ-6: GALERİ · VİDEO LİSTELERİ  ============

   news'te galeri ve video kartlarının KENDİ kabukları vardı
   (`hp-gal-kart`, `hp-vid-kart`): aynı galeri anasayfada bir türlü,
   liste sayfasında başka türlü görünüyordu. fnex'te ikisi de
   `.fx-bk` tabanını kullanıyor — tek yerde tanımlı bir kart, dört
   ekranda aynı.

   Düzen de ortak: mozaik üst blok (`.fx-gal`, anasayfadaki foto
   duvarının aynısı) + altında `hpKolon` ile sütunlanan ızgara.
   ===================================================================== */

/* Liste kartı: `.fx-bk` tabanının üstüne yalnızca yükseklik. */
.fx-medya-kart { min-height: 230px; }
.fx-medya-kart.is-buyuk { min-height: 420px; }

.fx-medya-grid {
  display: grid;
  grid-template-columns: repeat(var(--fx-kol, 4), minmax(0, 1fr));
  gap: 18px; margin-top: 18px;
}

/* ---- VİDEO: oynat düğmesi ----
   Kartın ortasında, cam efektli. Üzerine gelince marka kırmızısına
   dönüp hafifçe büyüyor — anasayfadaki sinema kartıyla aynı davranış. */
.fx-vid-oynat {
  position: absolute; top: 50%; left: 50%; z-index: 2;
  transform: translate(-50%, -50%);
  width: 56px; height: 56px; border-radius: 999px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.16);
  border: 2px solid rgba(255,255,255,.55);
  backdrop-filter: blur(6px);
  color: #fff;
  transition: background-color .2s ease, border-color .2s ease, transform .2s ease;
}
.fx-vid-kart.is-buyuk .fx-vid-oynat { width: 78px; height: 78px; }
.fx-vid-kart:hover .fx-vid-oynat {
  background: var(--hp-error); border-color: var(--hp-error);
  transform: translate(-50%, -50%) scale(1.07);
}

/* Video kapağı biraz karartılıyor: oynat düğmesi ve başlık her
   görselde okunur kalsın. Galeri kartında YOK — orada fotoğrafın
   kendisi ürün. */
.fx-vid-kart > .hp-img { opacity: .9; }
.fx-vid-kart:hover > .hp-img { opacity: 1; }

@media (max-width: 1199.98px) {
  .fx-medya-grid { --fx-kol: 3 !important; }
}
@media (max-width: 767.98px) {
  .fx-medya-grid { --fx-kol: 2 !important; }
  .fx-medya-kart.is-buyuk { min-height: 300px; }
}
@media (max-width: 479.98px) {
  .fx-medya-grid { --fx-kol: 1 !important; }
  .fx-medya-kart { min-height: 210px; }
  .fx-vid-oynat { width: 48px; height: 48px; }
  .fx-vid-kart.is-buyuk .fx-vid-oynat { width: 58px; height: 58px; }
}

/* =====================================================================
   ============  FNEX — FAZ-7: SERİ İLAN · FİRMA REHBERİ  ============

   İki modül aynı kartı ve aynı detay iskeletini paylaşıyor
   (`location.php` zaten `classifieds.php`'yi include ediyor).
   ===================================================================== */

.fx-kyt-liste { display: flex; flex-direction: column; gap: 16px; }

/* ---------------------------------------------------------------------
   KAYIT KARTI
   Yatay: solda görsel, sağda gövde. Haber akışındaki `.fx-satir`ın
   aksine ÇERÇEVELİ bir kart — ilan ve firma kayıtları eylem taşıyan
   ayrık nesneler, sınırlarının belli olması doğru.
   --------------------------------------------------------------------- */
.fx-kyt {
  display: flex; gap: 18px; align-items: stretch;
  background: var(--hp-surface);
  border-radius: var(--hp-radius-xl);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
  transition: box-shadow .2s ease, transform .2s ease;
}
.fx-kyt:hover { box-shadow: 0 14px 30px rgba(15,23,42,.13); transform: translateY(-3px); }

.fx-kyt-gorsel {
  position: relative; flex: 0 0 210px; overflow: hidden;
  aspect-ratio: 4 / 3; background: var(--hp-surface-high);
}
.fx-kyt-gorsel .hp-img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; transition: transform .45s ease;
}
.fx-kyt:hover .fx-kyt-gorsel .hp-img { transform: scale(1.05); }

/* Görselsiz kayıt "kırık" görünmesin: kategori renginde soluk alan. */
.fx-kyt-bos {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: var(--fx-kyt-renk, var(--hp-primary));
  background: color-mix(in srgb, var(--fx-kyt-renk, #2563eb) 12%, var(--hp-surface));
}

.fx-kyt-govde {
  display: flex; flex-direction: column; gap: 7px;
  padding: 16px 18px 16px 0; min-width: 0; flex: 1 1 auto;
}
.fx-kyt-ust {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
}
.fx-kyt-tarih {
  display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0;
  font-size: 11.5px; color: var(--hp-on-surface-variant);
}
.fx-kyt-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 19px; line-height: 1.26; font-weight: 700; letter-spacing: -.012em;
}
.fx-kyt-baslik a { color: var(--hp-on-surface); transition: color .18s ease; }
.fx-kyt:hover .fx-kyt-baslik a { color: var(--hp-primary); }

.fx-kyt-adres {
  display: inline-flex; align-items: flex-start; gap: 6px;
  font-size: 12.5px; color: var(--hp-on-surface-variant);
}
.fx-kyt-adres .hp-ico { flex-shrink: 0; margin-top: 1px; }

/* ---- EYLEM DÜĞMELERİ ----
   news'te ikon-only iki küçük kareydi; ne yaptıkları ancak hover'da
   (title) anlaşılıyordu ve dokunmatikte hover yok. Burada METİNLİ hap:
   telefon numarası düğmenin İÇİNDE yazıyor, görmek için tıklamak
   gerekmiyor. İlan/firma kaydında okurun aradığı şey zaten bu iki
   eylem — en belirgin öğe olmaları doğru. */
.fx-kyt-eylem { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; padding-top: 6px; }
.fx-kyt-btn {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 8px 15px; border-radius: 999px;
  font-size: 13px; font-weight: 700;
  color: var(--hp-on-surface-variant);
  background: var(--hp-surface-high);
  transition: background-color .18s ease, color .18s ease;
}
.fx-kyt-btn:hover { background: var(--hp-on-surface); color: var(--hp-surface); }
.fx-kyt-btn.is-ara {
  color: var(--hp-primary); background: var(--hp-primary-fixed);
  font-variant-numeric: tabular-nums;
}
.fx-kyt-btn.is-ara:hover { background: var(--hp-primary); color: #fff; }

/* ---------------------------------------------------------------------
   DETAY KAPAĞI — kategori/yazar bandıyla aynı kalıp
   --------------------------------------------------------------------- */
.fx-kyt-kapak {
  position: relative;
  padding: 20px 24px 20px 26px; margin-bottom: 20px;
  border-radius: var(--hp-radius-xl);
  background: var(--hp-surface-high);
  background: rgba(var(--fx-kat-rgb, 37,99,235), .07);
  overflow: hidden;
}
.fx-kyt-kapak::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px;
  background: var(--fx-kat, var(--hp-primary));
}
.fx-kyt-kapak-rozet { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.fx-kyt-kat-rozet {
  display: inline-flex; align-items: center;
  padding: 5px 13px; border-radius: 999px;
  font-size: 11px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  color: #fff; background: var(--fx-kat, var(--hp-primary));
}
.fx-kyt-kapak-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 30px; line-height: 1.16; font-weight: 800; letter-spacing: -.025em;
  color: var(--fx-kat-deep, var(--hp-on-surface));
}
.fx-kyt-kapak-spot {
  margin: 10px 0 0; max-width: 72ch;
  font-size: 15px; line-height: 1.6; color: var(--hp-on-surface-variant);
}

/* Süresi dolmuş ilan uyarısı */
.fx-kyt-uyari {
  display: flex; align-items: center; gap: 9px;
  margin: 0 0 20px; padding: 12px 16px;
  border-radius: var(--hp-radius-lg);
  font-size: 13.5px; font-weight: 600;
  color: var(--hp-error);
  background: color-mix(in srgb, var(--hp-error) 10%, var(--hp-surface));
}

@media (max-width: 767.98px) {
  .fx-kyt { flex-direction: column; gap: 0; }
  .fx-kyt-gorsel { flex-basis: auto; width: 100%; aspect-ratio: 16 / 9; }
  .fx-kyt-govde { padding: 16px 18px; }
  .fx-kyt-kapak-baslik { font-size: 24px; }
}
@media (max-width: 479.98px) {
  .fx-kyt-eylem { flex-direction: column; align-items: stretch; }
  .fx-kyt-btn { justify-content: center; }
}

/* =====================================================================
   ============  FNEX — FAZ-8: BİLGİ · FORM SAYFALARI  ============
   ===================================================================== */

/* Bilgi metni gövdesi haber gövdesiyle AYNI tipografiyi kullanıyor
   (`.hp-article-body`): iki yerde iki ayrı okuma ölçüsü tutmak, birini
   değiştirince diğerini geride bırakıyordu. Burada yalnızca üst
   boşluk düzeltiliyor. */
.fx-metin { margin-top: 4px; }

/* Yan çubuktaki kurumsal sayfa listesi */
.fx-metin-liste { display: flex; flex-direction: column; }
.fx-metin-liste a {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 11px 4px;
  border-top: 1px solid var(--hp-outline-variant);
  font-size: 13.5px; color: var(--hp-on-surface-variant);
  transition: color .16s ease, padding-left .16s ease;
}
.fx-metin-liste a:first-child { border-top: 0; }
.fx-metin-liste a:hover { color: var(--hp-primary); padding-left: 8px; }
.fx-metin-liste a .hp-ico { flex-shrink: 0; opacity: .5; }
.fx-metin-liste a.is-aktif {
  color: var(--hp-primary); font-weight: 700;
}

/* ---------------------------------------------------------------------
   FORM BİLEŞENİ  (.fx-form)

   İletişim formu için yazıldı ama bilinçli olarak GENEL: bülten,
   abonelikten çıkma ve ileride eklenecek her form aynı bileşeni
   kullanacak. Bootstrap'in `form-floating` / `form-control` kalıbı
   KULLANILMIYOR — panel tarafındaki kuralın ön yüzdeki karşılığı:
   etiket alanın ÜSTÜNDE, yüzen etiket yok.

   NEDEN YÜZEN ETİKET YOK: otomatik doldurma (tarayıcı, parola
   yöneticisi) alanı doldurduğunda yüzen etiket çoğu tarayıcıda
   yerinde kalıp değerin üstüne biniyor. Üstte duran etiket bu
   sınıf hatanın tamamından bağışık.
   --------------------------------------------------------------------- */
.fx-form {
  margin-top: 28px;
  padding: 24px 26px 26px;
  border-radius: var(--hp-radius-xl);
  background: var(--hp-surface);
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.fx-form-bas { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 20px; }
.fx-form-ikon {
  flex: 0 0 auto;
  width: 44px; height: 44px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--hp-primary); background: var(--hp-primary-fixed);
}
.fx-form-baslik {
  margin: 0;
  font-family: var(--hp-font-headline-title);
  font-size: 21px; line-height: 1.2; font-weight: 800; letter-spacing: -.02em;
  color: var(--hp-on-surface);
}
.fx-form-not { margin: 3px 0 0; font-size: 13.5px; color: var(--hp-on-surface-variant); }

.fx-form-govde { display: flex; flex-direction: column; gap: 16px; }
.fx-form-satir { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

.fx-alan { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.fx-alan-et {
  font-size: 12.5px; font-weight: 700; color: var(--hp-on-surface-variant);
}
.fx-alan-et b { color: var(--hp-error); font-weight: 700; }

.fx-alan input,
.fx-alan select,
.fx-alan textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--hp-outline-variant);
  border-radius: var(--hp-radius-lg);
  background: var(--hp-surface-lowest);
  color: var(--hp-on-surface);
  font-family: var(--hp-font-body); font-size: 14.5px;
  transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}
.fx-alan textarea { resize: vertical; min-height: 130px; line-height: 1.6; }
.fx-alan input::placeholder,
.fx-alan textarea::placeholder { color: var(--hp-outline); }

.fx-alan input:focus,
.fx-alan select:focus,
.fx-alan textarea:focus {
  outline: 0;
  background: var(--hp-surface);
  border-color: var(--hp-primary);
  /* Odak halkası RENK DEĞİL GÖLGE ile: kenarlık kalınlığı değişse
     alan 1px zıplıyordu. */
  box-shadow: 0 0 0 3px var(--hp-primary-fixed);
}

.fx-form-ayak {
  display: flex; align-items: center; flex-wrap: wrap; gap: 14px;
  margin-top: 4px;
}
.fx-form-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 13px 26px; border: 0; border-radius: 999px; cursor: pointer;
  font-family: var(--hp-font-body); font-size: 14px; font-weight: 700;
  color: #fff; background: var(--hp-primary);
  transition: filter .18s ease, transform .15s ease, box-shadow .18s ease;
}
.fx-form-btn:hover {
  filter: brightness(1.08); transform: translateY(-2px);
  box-shadow: 0 10px 22px rgba(var(--fx-kat-rgb, 37,99,235), .28);
}
.fx-form-btn:active { transform: translateY(0); }
.fx-form-zorunlu { font-size: 12px; color: var(--hp-on-surface-variant); }
.fx-form-zorunlu b { color: var(--hp-error); }

/* Gönderim sonucu — renk TEK BAŞINA bilgi taşımıyor, yanında ikon var. */
.fx-form-sonuc {
  display: flex; align-items: center; gap: 9px;
  margin: 0 0 18px; padding: 12px 16px;
  border-radius: var(--hp-radius-lg);
  font-size: 13.5px; font-weight: 600;
}
.fx-form-sonuc.is-ok {
  color: var(--hp-secondary);
  background: color-mix(in srgb, var(--hp-secondary) 12%, var(--hp-surface));
}
.fx-form-sonuc.is-hata {
  color: var(--hp-error);
  background: color-mix(in srgb, var(--hp-error) 12%, var(--hp-surface));
}

@media (max-width: 575.98px) {
  .fx-form { padding: 18px 16px 20px; }
  .fx-form-satir { grid-template-columns: 1fr; }
  .fx-form-btn { width: 100%; justify-content: center; }
}

/* =====================================================================
   ============  FNEX — FAZ-9: SERVİS SAYFALARI  ============
   namaz · puan · yol · gazete · burç — beşi de ortak sayfa başlığına
   (parts/sayfa_bas.php) geçti. Burada kalan tek şey namaz sayfasındaki
   şehir seçici.
   ===================================================================== */

.fx-svc-sehir {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
  margin: -6px 0 22px;
  padding: 12px 16px;
  border-radius: 999px;
  background: var(--hp-surface);
  box-shadow: 0 1px 3px rgba(15,23,42,.06);
}
.fx-svc-sehir label {
  font-size: 12.5px; font-weight: 700; color: var(--hp-on-surface-variant);
}
.fx-svc-sehir select {
  flex: 1 1 200px; max-width: 280px;
  padding: 9px 13px;
  border: 1px solid var(--hp-outline-variant);
  border-radius: 999px;
  background: var(--hp-surface-lowest);
  color: var(--hp-on-surface);
  font-family: var(--hp-font-body); font-size: 14px;
  transition: border-color .18s ease, box-shadow .18s ease;
}
.fx-svc-sehir select:focus {
  outline: 0; border-color: var(--hp-primary);
  box-shadow: 0 0 0 3px var(--hp-primary-fixed);
}
.fx-svc-sehir button {
  padding: 9px 20px; border: 0; border-radius: 999px; cursor: pointer;
  font-family: var(--hp-font-body); font-size: 13.5px; font-weight: 700;
  color: var(--hp-primary); background: var(--hp-primary-fixed);
  transition: background-color .18s ease, color .18s ease;
}
.fx-svc-sehir button:hover { background: var(--hp-primary); color: #fff; }

@media (max-width: 575.98px) {
  /* Hap kabuk dar ekranda sarıyor; yumuşak köşeye düşüyor —
     paylaşım çubuğundaki ölçülmüş kararın aynısı. */
  .fx-svc-sehir { border-radius: var(--hp-radius-lg); }
  .fx-svc-sehir select { max-width: none; }
  .fx-svc-sehir button { width: 100%; }
}
.fx-ara-terim { color: var(--hp-primary); }
