/* ============================================================
   Site responsive — canlı site TEK masaüstü-DOM'u tüm cihazlara sunar.

   2026-07-13 (masaüstü kanon birleşmesi) — SEÇİCİLER YENİLENDİ.

   Motor artık `auto-fit minmax(280px,1fr)` BASMIYOR: sütun sayısı bir düzen
   tokeni oldu (`trColsOf`) ve grid'ler AÇIK `repeat(N,1fr)` basıyor. Eski
   kurallar `[style*="minmax(280px,1fr)"]` arıyordu → yeni markup'ta HİÇ
   eşleşmiyorlardı; yani mobil, hiçbir uyarı vermeden 4 sütunlu masaüstü
   ızgarasını görecekti. (Bu tam olarak bu dosyanın kırılganlığı: markup
   string'ine bakan seçici, motor değişince SESSİZCE kopar.)

   NİHAİ ÇÖZÜM (yapıldı ama henüz açılmadı): viewport'a özgü düzeni motorun
   kendisinden @media deltası olarak taşımak — `_snapshot-responsive.cjs`
   `LAYOUT_PROPS` + `DORUK_LAYOUT_DELTA=1`. ÖNKOŞULU: DOM'un üç viewport'ta
   ÖZDEŞ olması (delta eleman ekleyemez). O iş bitince bu dosyanın (B) bölümü
   tamamen silinecek (S18b).

   2026-07-30 (proje-v3 aşama 04 · T04.3) — BORÇ ARTIK ÖLÇÜLÜ.
   Yukarıdaki "mobil 1798 vs masaüstü 1738" sayısı 2026-07-13'ten kalmaydı.
   Bugünkü ölçüm: 59 bölümün 12'si ıraksıyor, 47'si ÖZDEŞ. İki kök neden —
   (A) highlights/areahigh viewport'a göre farklı SAYIDA kart basar;
   (B) secDnTreatments satır motoru kartları çözümlenen SÜTUN sayısına göre
       satırlara paylaştırır → satır sayısı/ataması viewport'a göre değişir.
   Kullanıcı kararı K24 (2026-07-30): ürün DEĞİŞMEZ, borç ilan edilir → bu
   dosya OLDUĞU GİBİ KALIR (S18b açık).
   Ölç:   node scripts/.dom-simetri/olc.cjs
   Hüküm: node scripts/_dom-simetri-kapi.cjs   (ilan: scripts/.dom-simetri/ilan.json)
   Bayrak artık GUARD'lı: önkoşulsuz açılırsa yayın hattı DURUR.

   ⚠️ BU DOSYA SİLİNMEDEN ÖNCE: düzen deltası açıldığında buradaki `!important`
   kurallar delta kurallarını ÖZGÜLLÜKLE EZER (`.dz-exact-wrap [style*=…]` >
   `[data-rk="N"]`) → S18a ve S18b tek iştir, sırayla değil birlikte kapanır.
   ============================================================ */

/* (A) MASAÜSTÜ CİLA -------------------------------------------------- */
@media (min-width: 1024px) {
  /* 50/50 intro/feature blokları çok geniş ekranda ölçüsüz uzamasın.
     (Motor tarafında da cw() kapısı eklendi — bu kural savunma amaçlı.) */
  .dz-exact-wrap [style*="grid-template-columns:1fr 1fr"] {
    max-width: 1100px;
    margin-inline: auto;
  }
}

/* (B) MOBİL (<680) — tek-DOM telefon uyarlaması ----------------------
   GEÇİCİ: düzen deltası açılınca silinecek. Sütun indirgemesi, motorun
   yeni AÇIK `repeat(N,1fr)` markup'ına göre yazıldı.

   2026-08-17 — ŞİMİN KAPSAMI ÖLÇÜLDÜ ve iki deliği kapatıldı (K24 istisnası,
   gerekçe aşağıdaki blokta). Şimin kapsamı bir KANONDUR: buraya girmeyen her
   inline ızgara biçimi telefonda MASAÜSTÜ sütununu görür ve bunun BELİRTİSİ YOKTUR
   (taşma `overflow:hidden` ile yutulur, `document.scrollWidth` 0 fark gösterir —
   `_responsive-check.cjs` tam bu yüzden PASS diyordu). Yeni bir inline biçim
   eklenirse buraya da eklenmeli; ölçen koşum: scripts/_iphone-kesik.cjs */
@media (max-width: 679px) {
  /* yatay gutter 64px → 22px.
     16px'TEN 22px'E ÇEKİLDİ (2026-08-19) — gerekçe ÖLÇÜM, tercih değil: stüdyonun mobil
     önizlemesi bu gutter'ı 22px basar ve extract onu deltaya ZATEN yazıyor
     (`@media(max-width:480px) [data-rk="2"]{padding:0 22px}`). Bu kural özgüllükle
     (0,2,0 > 0,1,0) o doğru değeri EZİYORDU → yayın stüdyodan her yandan 6px sapıyordu.
     Belirtisi: kenara taşan satırlar. Kart satırları `margin-inline:-22px` ile kenara
     bleed eder (bu da stüdyodan gelen bir delta); gutter 16 olunca 22-16=6px ekran
     DIŞINA çıkıyordu — `iphone:kesik:gate`in ölçtüğü 9 kesiğin tamamı bu aritmetiktir.
     Şim SİLİNMEDİ, HİZALANDI: deltası olmayan (üç viewport'ta özdeş) kaplar için hâlâ
     tek gutter kaynağıdır; silinseydi onlar 64px'te kalırdı. */
  .dz-exact-wrap [style*="padding:0 64px"] {
    padding-inline: 22px !important;
  }

  /* ALAN ALT-NAVI (strip) — telefon uyarlaması.
     Motor masaüstünde şeridi TEK SATIR RAY basar: ‹ › okları + YAPIŞIK uçlar (alan adı sol, CTA sağ),
     ve yatay gutter ray'in padding'inden alınıp OKUN kutusuna taşınır (sticky sınırının dışında delik
     kalmasın diye). Telefonda bu kurgunun üçü de yanlıştır: dokunmatik kaydırma zaten doğaldır (ok
     gereksiz), 390px'lik şeritte iki yapışık uç linklere yer bırakmaz, ve oklar gizlenince gutter'ı
     taşıyan kutu da kaybolur → ray kenara yapışır. Üçü birden burada geri alınır; sonuç = stüdyonun
     mobil önizlemesiyle BİREBİR (studio: mob() dalı). */
  .dz-exact-wrap .hs-navarw { display: none !important; }
  .dz-exact-wrap .hs-areanav [data-navpin] { position: static !important; }
  .dz-exact-wrap .hs-areanav {
    padding-inline: 16px !important;
  }

  /* ── K24 İSTİSNASI · 2026-08-17 ────────────────────────────────────────────
     K24 (2026-07-30) bu dosyayı DONDURMUŞTU: "ürün değişmez, borç ilan edilir".
     Aşağıdaki beş kural o donmayı DAR bir kapsamda deler ve gerekçesi ÖLÇÜMDÜR:
     yayınlanan sayfaların telefonda içerik KESİYOR olması (20 rastgele sayfanın
     18'inde; en büyüğü `areawhy` 241px → 3 kart ekran dışında ve KAYDIRILAMIYOR).
     Şim iki yerden delik veriyordu:
       (1) `repeat(2,1fr)` hiçbir kurala uymuyordu → areawhy telefonda 2 sütun kaldı;
       (2) `1fr` = `minmax(auto,1fr)` olduğu için kart min-content'i track'i şişiriyordu
           (ölçüldü: process 237+252=489px, kap 390px).
     Her kuralın hedef değeri STÜDYONUN MOBİL ÖNİZLEMESİNDEN türetildi (uydurulmadı):
     areawhy=1 sütun · process=1 sütun · tech/doctors=2 sütun.
     KAPSAM DIŞI (borç olarak duruyor): S18a peek-ray kaybı — stüdyoda mobil raylar
     kaydırılabilir, yayında ızgaraya düşüyor. Bu, düzen deltasının işidir.
     Ölçüm: mobil kesik 30→8 (390/375/430) · tablet ve masaüstü DEĞİŞMEDİ (media 679px).
     Kalan 8 kesik ilan edilmiştir: `treatments` 4-18px + `areatreat` 5-37px — kökü
     bu şim değil, sıfır-genişliğe çöken aspect-ratio kartları (yamasızken de var). */

  /* Görsel-kart ızgaraları: motor masaüstünde 5/4/3 sütun basar → telefonda 2.
     (Kart oranı korunur; kartlar dar ama okunur kalır.)
     `minmax(0,…)`: track kabından geniş olamaz — `1fr`in min-content tabanı taşma üretiyordu. */
  .dz-exact-wrap [style*="grid-template-columns:repeat(5,1fr)"],
  .dz-exact-wrap [style*="grid-template-columns:repeat(4,1fr)"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* 2 sütunlu ızgaralar (areawhy · tech · doctors · drareas · expbranches):
     ŞİMDE HİÇ YOKTU → telefonda masaüstü sütunu kalıyordu. Sütun sayısı korunur,
     track sınırlanır; bölüm-özel istisna (areawhy) aşağıda. */
  .dz-exact-wrap [style*="grid-template-columns:repeat(2,1fr)"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* 3 sütunlu METİN ızgaraları (process/psvc/testimonials/stories) → tek sütun.
     Görsel-kart 3'lüleri de 2'ye inmek yerine 1'e iner: kart + metin bandı
     telefonda 3'e bölünürse okunmaz. */
  .dz-exact-wrap [style*="grid-template-columns:repeat(3,1fr)"] {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  /* GÖRSEL-KART ALANLARI (`data-area-id`) 3 sütun basınca telefonda 2 KALIR — 1'e düşmez.
     ÖLÇÜLDÜ 2026-08-18: hekimler bölümü masaüstünde 3+3 kurulunca yayında mobil TEK sütuna
     düşüp 358×477 dev kartlar üretti; stüdyonun mobil önizlemesi aynı anda 2 sütun gösteriyordu.
     Stüdyo mobil önizlemesi REFERANStır (yayın ona uyar) → yukarıdaki genel 3→1 kuralı METİN
     ızgaraları (process · psvc · testimonials) için doğru, kart alanları için DEĞİL. Seçici
     `data-area-id`ye dayanır: o öznitelik yalnız kanonik görsel-kart alanlarında basılır, yani
     kapsam motorun kendi kimliğinden TÜRER (inline stil string'i tek başına ayırt edemezdi). */
  .dz-exact-wrap [data-area-id] [style*="grid-template-columns:repeat(3,1fr)"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* BENTO HÜCRE HARİTASI (masaüstü) telefonda NÖTRLENİR — `data-bento` motorun kendi damgasıdır.
     Bento bir MASAÜSTÜ sunum kararıdır (dc.html: yalnız `!mob && !tab` dalında basılır); DOM masaüstünden
     çıkarıldığı için `grid-area` inline stilleri snapshot'a da gider ve şimlenmezse telefonda 4 sütunluk
     hücre haritası sıkışırdı. Nötrleme İKİ ayaklıdır: (1) hücre atamalarını sil, (2) `height:100%` ile
     dolduran 2×2 kartın oranını GERİ VER — yoksa satır yüksekliği tanımsız kalır ve kart metne çöker. */
  .dz-exact-wrap [data-bento] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .dz-exact-wrap [data-bento] > * {
    grid-area: auto !important;
  }
  .dz-exact-wrap [data-bento] > * > * {
    height: auto !important;
    aspect-ratio: var(--dz-bento-asp, 4 / 5) !important;
  }

  /* galeri mozaiği (grid-auto-rows'lu) → 2 sütun; yukarıdaki repeat(3) kuralını
     bilerek EZER, bu yüzden sonra gelir */
  .dz-exact-wrap [style*="grid-auto-rows"] {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* BÖLÜM-ÖZEL: stüdyonun mobil önizlemesi bu ikisini TEK sütun basar (ölçüldü),
     genel kural ise 2 bırakırdı. Seçici `data-sec`e dayanır — inline stil string'ine
     değil — çünkü motor markup'ı değişince string seçici SESSİZCE kopar (bu dosyanın
     2026-07-13 dersi). Daha yüksek özgüllük: genel kuralı ezer, sıraya bağlı değildir. */
  .dz-exact-wrap [data-sec="areawhy"] [style*="grid-template-columns:repeat(2,1fr)"],
  .dz-exact-wrap [data-sec="process"] [style*="grid-template-columns:repeat(4,1fr)"] {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  /* Kaydırma şeridi: masaüstü genişliği donmuş halde geldiği için `margin:auto`
     onu ekrandan TAŞIRARAK ortalıyordu (ölçüldü: rect 434px, margin -22px, kap 390px). */
  .dz-exact-wrap .hs-rail {
    width: auto !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  /* Izgara/şerit çocuğu kendi hücresini aşamaz. Yayın DOM'unda `box-sizing`
     content-box'tır (global reset extract'te düşüyor) → padding track'in ÜSTÜNE
     biniyor ve kart hücresinden taşıyordu (ölçüldü: track 173px, kart 216px).
     Reset'i GLOBAL geri koymak denendi ve REDDEDİLDİ: kesikleri kapatmıyor (30→26)
     ama masaüstünde elemanların ~%18'ini oynatıyor. Burada yalnız hücre çocuğuna. */
  .dz-exact-wrap [style*="grid-template-columns"] > *,
  .dz-exact-wrap .hs-rail > * {
    box-sizing: border-box !important;
    max-width: 100% !important;
  }

  /* Sığmayan TEK kelime (marka/terim: "Multidisipliner", "TrueBeam") kutuyu şişirmesin. */
  .dz-exact-wrap [data-sec] h1, .dz-exact-wrap [data-sec] h2, .dz-exact-wrap [data-sec] h3,
  .dz-exact-wrap [data-sec] h4, .dz-exact-wrap [data-sec] p, .dz-exact-wrap [data-sec] span,
  .dz-exact-wrap [data-sec] div, .dz-exact-wrap [data-sec] a {
    overflow-wrap: break-word !important;
  }

  /* yetim-kart ortalaması masaüstüne özgüdür: mobilde sütun sayısı değiştiği için
     grid-column-start kartı yanlış hücreye iter → sıfırla */
  .dz-exact-wrap [style*="grid-column-start"] {
    grid-column-start: auto !important;
  }

  /* footer / lokasyon / 50-50 blokları → tek sütun */
  .dz-exact-wrap [style*="1.4fr 1fr 1fr 1fr"],
  .dz-exact-wrap [style*="grid-template-columns:1.1fr .9fr"],
  .dz-exact-wrap [style*="grid-template-columns:1fr 1fr"] {
    grid-template-columns: 1fr !important;
  }
}

/* ══ BENTO — TELEFONDA NÖTRLEME (2026-08-19) ═══════════════════════════════════════════════
   ÖLÇÜLEN KIRIK: `_bentoDefs()` desenleri YALNIZ masaüstünde render ediliyor, ama yayın DOM'u
   masaüstünden alınır → telefonda da masaüstünün hücre haritası (`grid-area:1/1/3/3`) ve sütun
   sayısı basılıyordu. Motorun yorumu bu şimin VAR olduğunu söylüyordu; gerçekte YOKTU
   (`grep data-bento` → 0 sonuç). Yukarıdaki kaba `repeat(3,1fr)` kuralı kabı 2 sütuna çekiyor
   ama ÇOCUKLAR hücre haritasını taşımaya devam ediyordu → telefonda bozuk yerleşim.

   KAPSAM `:not([data-bento-m])` İLE DARDIR — ve bu bir SIRALAMA oyunu değil, AÇIK BİR İDDİAdır:
   `data-bento-m="1"` taşıyan desen MOBİL HARİTASINI kendisi ilan eder (Twitter ailesi) ve düzenini
   `--bt-*` custom property'leriyle @media deltası olarak yayına TAŞIR; onu burada nötrlemek
   kullanıcının bilerek seçtiği mobil tasarımı silerdi. Haritasız desen (masaüstü-only, ilanlı muaf)
   telefonda bugünkü ızgaraya döner — motorun zaten söz verdiği davranış. */
@media (max-width: 834px) {
  .dz-exact-wrap [data-bento]:not([data-bento-m]) > * { grid-area: auto !important; }
  .dz-exact-wrap [data-bento]:not([data-bento-m]) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
