// Reaksiyoner — Republik-style magazine data
// Teaser-driven front, plus full articles, formats, writers.

const FORMATS = {
  "bu-hafta":  { id: "bu-hafta",  label: "Bu Hafta Önemli Olanlar", color: "#0a7d33" },
  "saha":      { id: "saha",      label: "Saha",                     color: "#8a2a18" },
  "yorum":     { id: "yorum",     label: "Yorum",                    color: "#1a3d8f" },
  "belgesel":  { id: "belgesel",  label: "Belgesel",                 color: "#020202" },
  "soylesi":   { id: "soylesi",   label: "Söyleşi",                  color: "#5d3a8a" },
  "veri":      { id: "veri",      label: "Veri",                     color: "#b35a00" },
  "sutun":     { id: "sutun",     label: "Sütun",                    color: "#2a2a2a" },
  "uzun":      { id: "uzun",      label: "Uzun Okuma",               color: "#0a4a5c" },
  "manifest":  { id: "manifest",  label: "Manifest",                 color: "#c4145c" },
  "kupon":     { id: "kupon",     label: "Kupon",                    color: "#0a7d33" },
};

const WRITERS = {
  selin:   { name: "Selin Karaca",      role: "Diplomasi muhabiri" },
  mehmet:  { name: "Mehmet Tuna Özkan", role: "Ankara temsilcisi" },
  ayse:    { name: "Ayşe Demirhan",     role: "Ekonomi editörü" },
  kerem:   { name: "Kerem Yıldız",      role: "Teknoloji yazarı" },
  cansu:   { name: "Cansu Bilge",       role: "Kültür-sanat editörü" },
  burak:   { name: "Burak Sönmez",      role: "Tarihçi, köşe yazarı" },
  elif:    { name: "Elif Tan",          role: "Anadolu muhabiri" },
  murat:   { name: "Murat İnan",        role: "Dış haberler" },
  zeynep:  { name: "Zeynep Aksoy",      role: "Siyaset analisti" },
  dogan:   { name: "Doğan Kaya",        role: "Saha muhabiri" },
  hakan:   { name: "Hakan Akar",        role: "Görsel yönetmen" },
  burcu:   { name: "Burcu Sertoğlu",    role: "Genel yayın yönetmeni" },
};

// ARTICLES — referenced by teaser url. Body for article detail page.
const ARTICLES = {
  "a01": {
    id: "a01", fmt: "belgesel",
    title: "Pasifik'te yeni güvenlik mimarisi: Üç başkentin sessiz mutabakatı",
    lead: "Tokyo, Canberra ve Manila arasında üç aydır sürdürülen istişareler, bölgedeki denge politikasını yeniden çiziyor. Reaksiyoner'in eline geçen 41 sayfalık mutabakat metni, kamuoyuna ilan edilenden çok daha kapsamlı bir koordinasyon öngörüyor.",
    writer: "selin", date: "20 Mayıs 2026", readMin: 24,
    imageLabel: "Manila körfezi, alacakaranlık, bir Japon firkateyni demirli",
    body: [
      "Pasifik'in batı kıyısında oluşan yeni güç dengesi, üç ülkenin dışişleri bürokrasilerini son altı aydır olağanüstü bir tempoda çalıştırıyor. Reaksiyoner'in eline geçen 41 sayfalık ortak mutabakat metni, kamuoyuna ilan edilenden çok daha kapsamlı bir askeri ve sivil koordinasyon öngörüyor.",
      "Belgeye göre üç başkent, hem deniz devriyelerini hem de uydu istihbaratını tek bir operasyon merkezinden yönetmeyi planlıyor. Bu, soğuk savaş sonrası dönemde imzalanan en geniş kapsamlı çok taraflı güvenlik düzenlemesi olma özelliği taşıyor.",
      "Bölge uzmanlarına göre asıl mesele, mutabakatın açıklanmayan eklerinde gizli. Bir Avustralyalı yetkili, isminin kullanılmaması koşuluyla Reaksiyoner'e şunları söyledi: «Mesele yalnızca caydırıcılık değil; tedarik zincirinin kendisi artık bir güvenlik meselesi olarak ele alınıyor.»",
      "Tayvan boğazından geçen yarı iletken yüklü konteyner gemilerinin sigorta primleri son altı ayda yüzde 38 arttı. Bu rakam, sivil deniz ticaretinin de yavaş yavaş güvenlik konseptinin bir parçası haline geldiğini gösteriyor.",
      "Ankara'nın bu yeni mimariye dahil olma ihtimali yok. Ancak Türk dışişleri kaynakları, Pasifik'teki gerilimin Doğu Akdeniz enerji denklemini doğrudan etkileyeceğini, bu nedenle gelişmelerin yakından izlendiğini belirtiyor.",
      "Mutabakatın askeri ekleri kadar dikkat çekici olan, sivil ekleri. Üç ülke, ortak bir «kritik altyapı tehdit kütüphanesi» kurmayı planlıyor. Sismik kablo hatları, enerji boru hatları ve deniz dibi veri iletişim hatları, bu kütüphanenin ilk üç klasörünü oluşturacak."
    ]
  },
  "a02": {
    id: "a02", fmt: "yorum",
    title: "Anayasa Mahkemesi'nin yeni içtihadı muhalefeti nasıl şekillendirecek?",
    lead: "Karar, parti içi demokrasi tartışmalarını yeniden masaya getiriyor. Önümüzdeki üç yıl içinde davaların ikiye katlanması bekleniyor.",
    writer: "zeynep", date: "20 Mayıs 2026", readMin: 9,
    imageLabel: null,
    body: [
      "Geçtiğimiz hafta açıklanan içtihat değişikliği, siyasi partiler için yalnızca prosedürel bir mesele değil. Mahkemenin kurduğu yeni gerekçe çerçevesi, parti içi seçim itirazlarının önümüzdeki dönemde nasıl ele alınacağını köklü biçimde değiştiriyor.",
      "İktidar partisi, kararı «demokratik denetimin güçlenmesi» olarak nitelerken muhalefet cephesinde tablo daha karmaşık. Üç farklı genel merkez kaynağıyla konuştuk; hepsi farklı endişeler dile getirdi.",
      "Kararın asıl sonuçları, önümüzdeki yerel seçim öncesi aday belirleme süreçlerinde görülecek. Hukukçular, «sessiz devrim» nitelemesini abartılı bulmasa da olası dava sayısının iki katına çıkabileceğini öngörüyor."
    ]
  },
  "a03": {
    id: "a03", fmt: "veri",
    title: "Net rezervler: Üç çeyrekte yön nasıl değişti? Beş grafikte Merkez Bankası'nın yeni çerçevesi",
    lead: "Merkez Bankası'nın geçen aralık ayında devreye aldığı yeni rezerv yönetim çerçevesi ilk meyvelerini verdi. Veriler ne diyor?",
    writer: "ayse", date: "20 Mayıs 2026", readMin: 12,
    imageLabel: "Veri görselleştirmesi: hesap defteri ve renkli çizgi grafik",
    body: [
      "Merkez Bankası'nın geçtiğimiz aralık ayında sessizce devreye aldığı yeni rezerv yönetim çerçevesi, ilk meyvelerini vermeye başladı. Net uluslararası rezervler, 2021'den bu yana ilk kez pozitif bölgeye yerleşmiş durumda.",
      "Üst düzey bir Hazine yetkilisi, çerçevenin üç sütun üzerine kurulduğunu söylüyor: vade uzatma, swap kompozisyonu ve altın rezervlerinin coğrafi dağılımı."
    ]
  },
  "a04": {
    id: "a04", fmt: "saha",
    title: "Boğaziçi'nin küçük laboratuvarında üç yıl: Bir açık kaynak modelin doğuşu",
    lead: "11 milyar parametreli Türkçe-merkezli dil modeli bu hafta açık kaynak yayımlandı. Lablarda geçen üç yılı yerinde izledik.",
    writer: "kerem", date: "19 Mayıs 2026", readMin: 18,
    imageLabel: "Boğaziçi Üniversitesi mühendislik laboratuvarı, GPU rafları, gece çalışması",
    body: [
      "Boğaziçi Üniversitesi'nin Doğal Dil İşleme Laboratuvarı, üç yıldır üzerinde çalıştığı 11 milyar parametreli dil modelini bu hafta tamamen açık kaynak olarak yayımladı.",
      "Proje lideri Prof. Dr. Arda Yenice, Reaksiyoner'e konuştu: «Bizim için mesele bir benchmark'ı geçmek değildi. Türkçe konuşan bir öğrencinin, kendi yazdığı şiiri bir modele okutup geri bildirim alabilmesini istiyorduk.»",
      "Modelin eğitildiği veri kümesi yaklaşık 4 terabaytlık Türkçe metinden oluşuyor. İlginç tarafı, veri toplama sürecinde Milli Kütüphane'nin dijitalleştirme arşivinden de yararlanılmış olması.",
      "Endüstri tarafı kararsız. Büyük bir Türk telekom şirketinin AI bölüm başkanı, modeli «akademik açıdan çok değerli, ürün açısından henüz erken» diye değerlendirdi. Açık kaynak topluluğu ise ilk 48 saatte 12 binden fazla yıldız vererek farklı bir yanıt verdi."
    ]
  },
  "a05": {
    id: "a05", fmt: "sutun",
    title: "Pera'nın hayalet sineması: Bir restorasyonun arkeolojisi",
    lead: "Beyoğlu'nun en eski sinemalarından biri olan Saray, kapılarını yeniden açmaya hazırlanıyor. Restoratörün defterinden.",
    writer: "cansu", date: "19 Mayıs 2026", readMin: 8,
    imageLabel: "Saray Sineması'nın eski lobisi, ahşap işçilik, toz altında oturma planı",
    body: ["Saray Sineması'nın 1927'de açıldığı gün, İstanbul gazetelerinin yarısı bunu manşetten gördü. Bugün, 99 yıl sonra, salon yeniden seyirciyle buluşmaya hazırlanıyor."]
  },
  "a06": {
    id: "a06", fmt: "belgesel",
    title: "1923'ün unutulan diplomasisi: Lozan'ın gölgesinde kalan üç protokol",
    lead: "Cumhuriyetin ilk yıllarında imzalanan ve bugün hâlâ etkileri süren üç teknik anlaşmayı çıkardık.",
    writer: "burak", date: "19 Mayıs 2026", readMin: 22,
    imageLabel: "Eski bir diplomatik koridor; ahşap kapılar ve yağlı boya tablolar",
    body: ["Lozan Antlaşması'nın gölgesinde, cumhuriyetin ilk on iki ayında imzalanan üç teknik protokol var ki bugün Türk dış politikasının bazı temel reflekslerini bunlara borçluyuz."]
  },
  "a07": {
    id: "a07", fmt: "saha",
    title: "Anadolu'nun yeni göç dalgası: Mersin'e yerleşen genç nüfus",
    lead: "Son üç yılda 220 binden fazla genç, Mersin'e taşındı. Şehri, gelenler ve gönderenler anlatıyor.",
    writer: "elif", date: "19 Mayıs 2026", readMin: 11,
    imageLabel: "Mersin sahili, akşamüstü iş çıkışı yürüyen genç insanlar",
    body: ["TÜİK'in geçtiğimiz hafta yayımladığı bölgesel göç tablosu beklenmedik bir hareketi gün yüzüne çıkardı."]
  },
  "a08": {
    id: "a08", fmt: "veri",
    title: "Konya ovasında 1980'den bu yana en düşük su seviyesi: Üç haritada kuraklık",
    lead: "Sigorta sektörü için artık risk modelleri sıfırdan yazılıyor.",
    writer: "elif", date: "19 Mayıs 2026", readMin: 9,
    imageLabel: "Konya Ovası, çatlamış toprak üzerinde tek bir buğday başağı",
    body: ["Konya Kapalı Havzası'nda yer altı su seviyesi, 1980'den bu yana ilk kez kritik eşiğin altına indi."]
  },
  "a09": {
    id: "a09", fmt: "yorum",
    title: "Sahel'de askeri konseyler: Avrupa'nın silikleşen etkisi",
    lead: "Üç Sahel ülkesinde art arda gerçekleşen yönetim değişiklikleri, Brüksel'in yeni bir politika belgesini hazırlamasına neden oldu.",
    writer: "murat", date: "19 Mayıs 2026", readMin: 7,
    imageLabel: "Bamako sokaklarında bir BM konvoyu, toz bulutu",
    body: ["Sahel kuşağındaki üç ülkede son 18 ayda art arda gerçekleşen yönetim değişiklikleri, Avrupa Birliği'nin Afrika politikasını yeniden tartışmaya açtı."]
  },
  "a10": {
    id: "a10", fmt: "bu-hafta",
    title: "Bu hafta önemli olanlar: Ankara, Brüksel, Tokyo, Konya — beş cephede ne oluyor?",
    lead: "Sayının açılışı: redaksiyon ekibinden bir özet.",
    writer: "burcu", date: "20 Mayıs 2026", readMin: 6,
    imageLabel: null,
    body: ["Bütçe görüşmelerinin gerçek pazarlığı, plan-bütçe komisyonunun ilk haftasında değil, ondan iki hafta önceki kulis temaslarında yapılır."]
  },
  "a11": {
    id: "a11", fmt: "saha",
    title: "Çorlu'da bir temiz oda: Türkiye'nin ilk 28nm hattının inşaatından",
    lead: "Çorlu OSB'de inşaatı süren tesis, ülkenin ilk gerçek yarı iletken üretim hattı olacak.",
    writer: "kerem", date: "18 Mayıs 2026", readMin: 14,
    imageLabel: "Yarı iletken temiz odası, mavi flüoresan aydınlatma, beyaz tulumlu işçiler",
    body: ["Çorlu Organize Sanayi Bölgesi'nde temeli atılan tesis, kâğıt üstünde basit bir yarı iletken fabrikası gibi görünüyor."]
  },
  "a12": {
    id: "a12", fmt: "soylesi",
    title: "«Aile arşivinden romana»: Üç genç yazarla bellek üzerine",
    lead: "Bu sezonun en güçlü ilk romanları aynı tekniği paylaşıyor. Yazarlarla buluştuk.",
    writer: "cansu", date: "18 Mayıs 2026", readMin: 16,
    imageLabel: "Eski bir aile fotoğraf albümü, açık bir sayfada üç çocuk fotoğrafı",
    body: ["Bu sezon yayımlanan üç ilk roman, ortak bir teknik üzerinde buluşuyor."]
  },
  "a13": {
    id: "a13", fmt: "sutun",
    title: "Bizans'ın son yüzyılı: İmparatorluğun ekonomik çöküşü",
    lead: "Yeni keşfedilen bir Cenova arşivi, 1400'lerin İstanbul'unu farklı bir gözle okumamızı sağlıyor.",
    writer: "burak", date: "18 Mayıs 2026", readMin: 19,
    imageLabel: "Hagia Sophia, sabah ışığı, kuş sürüsü",
    body: ["1421-1453 arasındaki 32 yıllık dönemi anlamadan ne Fatih'in fethini ne de sonrasında kurulan ekonomik düzeni anlayabiliriz."]
  },
  "a14": {
    id: "a14", fmt: "saha",
    title: "Karadeniz'de fındık krizi: Üreticinin sessiz isyanı",
    lead: "Giresun, Ordu ve Trabzon'da geçen hafta gerçekleşen üretici buluşmaları, taban fiyat tartışmasını yeniden açtı.",
    writer: "dogan", date: "18 Mayıs 2026", readMin: 10,
    imageLabel: "Fındık bahçesi, yamaçta sis ve yağmur",
    body: ["Giresun'un bir köy kahvesinde, üreticinin sözleri kısa ve net: «Bizim sorunumuz fiyat değil; sorunumuz, fiyatı kimin belirlediğini bilmemek.»"]
  },
  "a15": {
    id: "a15", fmt: "veri",
    title: "Çip ekonomisinin coğrafyası: Üç haritada Tayvan boğazı",
    lead: "Dünyanın en gelişmiş yarı iletken üretiminin yüzde 92'si bu hattan geçiyor.",
    writer: "selin", date: "18 Mayıs 2026", readMin: 11,
    imageLabel: "Tayvan'da bir liman, dev konteyner gemisi, kuş bakışı",
    body: ["Tayvan boğazından geçen bir konteyner gemisinin yükü, bazen birkaç orta ölçekli ülkenin GSYH'sine eşit."]
  },
  "a16": {
    id: "a16", fmt: "bu-hafta",
    title: "Bu hafta piyasalar: Altın, dolar, mevduat kompozisyonu — üç sessiz hareket",
    lead: "Hanehalkı bilançosundaki üç sessiz hareket.",
    writer: "ayse", date: "18 Mayıs 2026", readMin: 5,
    imageLabel: null,
    body: ["TÜİK'in hanehalkı tüketim araştırması ile BDDK'nın mevduat verisi karşılaştırıldığında ortaya ilginç bir tablo çıkıyor."]
  },
  "a17": {
    id: "a17", fmt: "yorum",
    title: "Yerel seçim mimarisi: Büyükşehirlerin yeniden çizilen haritası",
    lead: "Yeni nüfus verileri, ilçe sınırlarının yeniden ele alınmasını gündeme getirebilir. Bu teknik bir mesele mi?",
    writer: "zeynep", date: "17 Mayıs 2026", readMin: 6,
    imageLabel: "Bir Türk büyükşehir silueti gece, hava drone görüntüsü",
    body: ["İlçe sınırları teknik bir mesele gibi görünür; oysa siyasetin uzun vadeli mimarisi çoğu zaman bu çizgilerle belirlenir."]
  },
  "a18": {
    id: "a18", fmt: "soylesi",
    title: "«Hata düzeltme her şeyi değiştirir»: İTÜ kuantum ekibiyle bir akşam",
    lead: "Bir küçük araştırma grubu, kuantum hata düzeltme alanına özgün bir katkı sundu.",
    writer: "kerem", date: "17 Mayıs 2026", readMin: 13,
    imageLabel: "Bir kuantum bilgisayar, çok katlı altın renkli soğutma altyapısı",
    body: ["Kuantum hata düzeltme, kuantum hesaplamanın gerçek dünya uygulamaları için en kritik problem alanı."]
  },
  "a19": {
    id: "a19", fmt: "soylesi",
    title: "Bienalin sessiz küratörü Nora Toraman: «Görünmeyenin estetiği»",
    lead: "18. İstanbul Bienali'nin küratoryal çerçevesini, küratörünün atölyesinde konuştuk.",
    writer: "cansu", date: "17 Mayıs 2026", readMin: 15,
    imageLabel: "Boş bir sergi salonu, beton zemin, tek bir koltuk",
    body: ["Bienalin küratörü Nora Toraman, kavramsal çerçeveyi «görünmeyenin estetiği» olarak tanımlıyor."]
  },
  "a20": {
    id: "a20", fmt: "sutun",
    title: "Osmanlı sefarethanesi: Paris'te bir diplomatik laboratuvar",
    lead: "19. yüzyılın ortasında Paris'teki Osmanlı elçiliği, modern Türk diplomasisinin gizli laboratuvarıydı.",
    writer: "burak", date: "17 Mayıs 2026", readMin: 12,
    imageLabel: "Paris'te 19. yy. bir konak cephesi, demir parmaklıklı pencere",
    body: ["1840'larda Paris'teki Osmanlı sefarethanesinde çalışan kâtipler arasında, sonradan Tanzimat'ın mimarlarından sayılacak isimler vardı."]
  },
  "a21": {
    id: "a21", fmt: "belgesel",
    title: "Diyarbakır surları altında: Yeni arkeolojik katmanlar kentin tarihini 800 yıl geri itiyor",
    lead: "Restorasyon kazılarında karşılaşılan yeni katmanları, kazı ekibinin yanında üç gün izledik.",
    writer: "dogan", date: "17 Mayıs 2026", readMin: 20,
    imageLabel: "Diyarbakır surları, bazalt taş işçiliği, akşam ışığı",
    body: ["Diyarbakır surları üzerinde yürütülen restorasyon kazıları, arkeologların öngöremediği bir katmanı gün yüzüne çıkardı."]
  },
  "a22": {
    id: "a22", fmt: "manifest",
    title: "Bir şey değişti. Reaksiyoner'in yedinci yılı için manifest.",
    lead: "Bizi okumaya başladığınız gün, biz farklı bir gazeteyiz. Şimdi neredeyiz?",
    writer: "burcu", date: "15 Mayıs 2026", readMin: 9,
    imageLabel: null,
    body: ["Reaksiyoner'in yedi yıl önceki ilk sayısında yazdığımız bir cümle hâlâ duvarımızda asılı duruyor."]
  },
  "a23": {
    id: "a23", fmt: "uzun",
    title: "Bir nehrin sonu: Asi Nehri'nin son yüz yılı",
    lead: "Suriye'den Türkiye'ye uzanan bir nehrin biyografisi — hidrolojik ve siyasi.",
    writer: "elif", date: "16 Mayıs 2026", readMin: 32,
    imageLabel: "Asi Nehri, sazlıklar arasından akan dar yatak, sabah sisi",
    body: ["Asi Nehri'nin kaynağı, Lübnan'da bir minik gözeden çıkıyor."]
  },
};

// MAGAZINE FRONT — sequence of teaser objects.
// Each teaser specifies its visual treatment (Republik-style).
const FRONT = [
  // 0 — Hero: full-image teaser with overlaid text, bottomleft position
  {
    type: "image",
    ref: "a01",
    bgColor: "#1d2937",
    color: "#ffffff",
    textPosition: "bottomleft",
    image: { label: "Manila körfezi, alacakaranlık, bir Japon firkateyni demirli", tone: 1 },
    byline: "Foto · arşivden Pasifik üzerinden geçen bir konvoy",
    titleSize: "large",
  },

  // 1 — Bu hafta briefing as a typo teaser
  {
    type: "briefing",
    ref: "a10",
    bgColor: "#E2FBA6",
    color: "#020202",
    items: [
      { ref: "a02", date: "20 V" },
      { ref: "a03", date: "20 V" },
      { ref: "a16", date: "18 V" },
      { ref: "a17", date: "17 V" },
      { ref: "a09", date: "19 V" },
    ]
  },

  // 2 — Split image+text, image left
  {
    type: "split",
    ref: "a04",
    bgColor: "#FF9A82",
    color: "#020202",
    reverse: false,
    image: { label: "Boğaziçi Üniversitesi mühendislik laboratuvarı, GPU rafları, gece çalışması", tone: 2 },
  },

  // 3 — Typo, big bold text, no image, black bg
  {
    type: "typo",
    ref: "a02",
    bgColor: "#020202",
    color: "#ffffff",
    accent: "#E2FBA6",
    titleSize: "large",
  },

  // 4 — Split image+text, image right (reverse)
  {
    type: "split",
    ref: "a07",
    bgColor: "#F2ECE6",
    color: "#020202",
    reverse: true,
    image: { label: "Mersin sahili, akşamüstü iş çıkışı yürüyen genç insanlar", tone: 3 },
  },

  // 5 — Full-bleed image teaser, topleft text
  {
    type: "image",
    ref: "a06",
    bgColor: "#2a1f18",
    color: "#f6efe3",
    textPosition: "topleft",
    image: { label: "Eski bir diplomatik koridor; ahşap kapılar ve yağlı boya tablolar", tone: 1 },
    titleSize: "medium",
  },

  // 6 — Section heading: Saha karuseli (3 tiles)
  { type: "sectionHead", title: "Saha karuseli", note: "Bu hafta yola çıktığımız üç saha çalışması" },

  // 7 — TileRow with 3 tiles
  {
    type: "tileRow",
    columns: 3,
    tiles: [
      { ref: "a11", bgColor: "#0F3563", color: "#f6efe3", image: { label: "Yarı iletken temiz odası, mavi flüoresan aydınlatma", tone: 4 }, byline: null },
      { ref: "a14", bgColor: "#6B7A4F", color: "#f6efe3", image: { label: "Fındık bahçesi, yamaçta sis ve yağmur", tone: 3 }, byline: null },
      { ref: "a21", bgColor: "#8b3a1c", color: "#f6efe3", image: { label: "Diyarbakır surları, bazalt taş işçiliği, akşam ışığı", tone: 2 }, byline: null },
    ]
  },

  // 8 — Typo on mustard yellow
  {
    type: "typo",
    ref: "a17",
    bgColor: "#FFD23F",
    color: "#020202",
    titleSize: "default",
  },

  // 9 — Image teaser, middle text position, beige bg w/dark
  {
    type: "image",
    ref: "a12",
    bgColor: "#000",
    color: "#ffffff",
    textPosition: "middle",
    image: { label: "Eski bir aile fotoğraf albümü, açık bir sayfada üç çocuk fotoğrafı", tone: 1 },
    titleSize: "default",
  },

  // 10 — Split image+text, image left, pink bg
  {
    type: "split",
    ref: "a19",
    bgColor: "#F5BCC6",
    color: "#020202",
    reverse: false,
    image: { label: "Boş bir sergi salonu, beton zemin, tek bir koltuk", tone: 3 },
  },

  // 11 — Section heading: Veri
  { type: "sectionHead", title: "Veri", note: "Sayının üç veri yorumu" },

  // 12 — TileRow with 2 tiles, larger
  {
    type: "tileRow",
    columns: 2,
    tiles: [
      { ref: "a03", bgColor: "#fafafa", color: "#020202", image: { label: "Veri görselleştirmesi: hesap defteri ve renkli çizgi grafik", tone: 3 }, byline: null },
      { ref: "a15", bgColor: "#2a2a2a", color: "#f6efe3", image: { label: "Tayvan'da bir liman, dev konteyner gemisi, kuş bakışı", tone: 1 }, byline: null },
    ]
  },

  // 13 — Typo, no image, sandy color
  {
    type: "typo",
    ref: "a08",
    bgColor: "#F4A460",
    color: "#1a1208",
    titleSize: "default",
  },

  // 14 — Section heading
  { type: "sectionHead", title: "Söyleşi", note: "Bu hafta üç ses, üç oda" },

  // 15 — TileRow 3 cols — söyleşi
  {
    type: "tileRow",
    columns: 3,
    tiles: [
      { ref: "a18", bgColor: "#1a0a3a", color: "#f6efe3", image: { label: "Bir kuantum bilgisayar, çok katlı altın renkli soğutma altyapısı", tone: 4 } },
      { ref: "a12", bgColor: "#f6efe3", color: "#020202", image: { label: "Eski bir aile fotoğraf albümü, açık bir sayfada üç çocuk fotoğrafı", tone: 3 } },
      { ref: "a19", bgColor: "#5d3a8a", color: "#f6efe3", image: { label: "Boş bir sergi salonu, beton zemin, tek bir koltuk", tone: 1 } },
    ]
  },

  // 16 — Image teaser, bottomleft, sandy brown classic
  {
    type: "image",
    ref: "a23",
    bgColor: "#3c4a2a",
    color: "#ffffff",
    textPosition: "bottomleft",
    image: { label: "Asi Nehri, sazlıklar arasından akan dar yatak, sabah sisi", tone: 3 },
    byline: "Uzun okuma · 32 dakika",
    titleSize: "large",
  },

  // 17 — Typo, lime green
  {
    type: "typo",
    ref: "a22",
    bgColor: "#0a4a3c",
    color: "#E2FBA6",
    accent: "#ffffff",
    titleSize: "medium",
  },

  // 18 — articleTile feed list (Republik's "Was diese Woche wichtig war" pattern)
  { type: "sectionHead", title: "Sayının kapanışı", note: "Tarihten ve kültürden okumalar" },

  // 19 — TileRow 3
  {
    type: "tileRow",
    columns: 3,
    tiles: [
      { ref: "a13", bgColor: "#eeeae0", color: "#020202", image: { label: "Hagia Sophia, sabah ışığı, kuş sürüsü", tone: 3 } },
      { ref: "a20", bgColor: "#3a2a18", color: "#f6efe3", image: { label: "Paris'te 19. yy. bir konak cephesi, demir parmaklıklı pencere", tone: 1 } },
      { ref: "a05", bgColor: "#bf4030", color: "#f6efe3", image: { label: "Saray Sineması'nın eski lobisi, ahşap işçilik", tone: 2 } },
    ]
  },

  // 20 — Closing typo, big statement, white
  {
    type: "typo",
    ref: "a22",
    bgColor: "#ffffff",
    color: "#020202",
    accent: "#00AA00",
    titleSize: "large",
    closing: true,
  },
];

// Feed (Akış) = all articles, sorted reverse-chrono (already in order)
const FEED_ORDER = Object.keys(ARTICLES);

Object.assign(window, { FORMATS, WRITERS, ARTICLES, FRONT, FEED_ORDER });
