/* ============================================================
   Redev UI — ÖNERİ katmanı (bu projede üretildi, DS'e taşınabilir)

   Buradaki her şey Redev UI konvansiyonlarına uyar: `re-` prefix,
   yalnızca token kullanımı (--brand, --card, --border, --re-space-*),
   `re-c-{role}` ve `-sm/-lg` modifier'ları ile uyumlu.
   Rapor: docs/redevui-gaps.md
   ============================================================ */

/* ── re-shell mobil uyumu → DS'E GEÇTİ (2026-08-19) ───────────────────────
   DS `.re-app` sarmalayıcısı (comments: "from _labs §3.2" — bu raporun sonucu)
   artık şunların hepsini veriyor:
     · `.re-app { display:flex; flex-direction:column; height:100dvh; overflow:hidden }`
     · `.re-app > .re-shell { height:auto; flex:1 1 auto; min-height:0 }`
     · `.re-app .re-sidebar { display:none }`      @≤1023px  (sidebar→tabbar takası)
     · `.re-app .re-navbar { padding-top:env(safe-area-inset-top) }` @≤1023px
     · `.re-app .re-tabbar { display:none / flex }`
     · `.re-banner` slot'u + `:has(> .re-banner)` ile çentik dolgusu devri
   Bu yüzden yerel `re-shell` / `re-shell-body` / `re-sidebar` / `re-navbar`
   kuralları silindi. `re-main`'in `padding-bottom`'u da silindi.
   ⚠ 2026-08-20 GÜNCELLEME: artık island yerleşimi (`re-tabbar-float`) kullanılıyor,
   yani çubuk içeriğin ÜSTÜNE biniyor. Alt payı yine burada YAZILMIYOR — DS
   `:has(> .re-tabbar-float)` ile veriyor (ölçüm: telefonda 76px = 52 + 12×2,
   masaüstünde 0). Buraya elle bir `padding-bottom` yazmak onu ikiye katlar.

   Kalan tek yerel ihtiyaç, dokunmatik kaydırma davranışı (DS'te yok): */
/* `overscroll-behavior-y: contain` SİLİNDİ (v0.17.0): DS v9 §V9-2 ile `.re-main`in
   kendi kuralına girdi — aynı seçici, aynı property, aynı değer.
   ⚠ `html, body { overscroll-behavior: none }` (app.css) KALIYOR: DS'in kendi yorumu
   "This does NOT replace the host's html,body rule" diyor — biri belge kauçuğunu,
   öteki zincirlemeyi kesiyor, ikisi ayrı iş. */
.re-main { -webkit-overflow-scrolling: touch; }

/* ── re-tabbar → DS'E GEÇTİ (2026-08-19) ──────────────────────────────────
   Yerel `.re-tabbar` bloğu DS'inkiyle birebir aynıydı (display/align/background/
   border-top/padding-bottom/flex-shrink) — tam kopya, silindi.
   `.re-tabbar-item` ve `.re-tabbar-badge`de küçük farklar vardı; DS benimsendi:
     · gap 3→2px, padding 8/2/7→6/4 + min-height 52px, ikon 21→22px
     · font-size calc(0.625rem*scale) → 11px
     · aktif göstergesi: yerel 26px ortalanmış pill (`::before`) yerine DS'in
       `re-tabbar-top` varyantı (aktif öğede tam genişlik üst kenarlık).
       Markup'a `re-tabbar-top` eklendi (app.js).
     · badge: yerel `2px solid var(--card)` halkası düştü, DS'in sade hâli.
   Renk değişmedi: `data-brand="violet"` --brand ve --primary'yi aynı değere kuruyor. */

/* ── re-sheet → artık DESIGN SYSTEM component'i, buradaki kopya SİLİNDİ ──
   2026-08-18: Redev UI `components.css`'e `.re-sheet` eklendi. Buradaki kopya
   `position` ve `transform` yazmadığı için DS'in `translateY(100%)` /
   masaüstünde `opacity:0;visibility:hidden` değerleri AYAKTA KALDI → backdrop
   göründü, panel viewport dışında kaldı. Kısmi override, override değil.
   Ders ve teşhis: LESSONS.md.

   DS sözleşmesi (uyulması zorunlu): açılışta `open` sınıfı **hem** backdrop'a
   **hem** `.re-sheet`'in kendisine eklenir. Uygulaması `ui.js § openSheet`.

   `.re-sheet-title` ve footer düğme genişliği de artık DS'te:
     · DS `.re-sheet-title { margin:0; font-size/weight/color:inherit }` — birebir
       aynı iş, yerel kopya silindi.
     · DS `.re-sheet-footer > .re-btn { flex:1 }` — bizim footer düğmelerimiz
       `re-btn` olduğu için kapsanıyor; yerel `> *` kuralı silindi. */


/* ── re-check-btn → DS'E GEÇTİ (2026-08-19) ───────────────────────────────
   Görünür iki fark bilinçli olarak DS'e bırakıldı:
     · köşe: 8px yuvarlatılmış kare → tam daire (`border-radius:50%`)
     · işaretli durum: `--success` (yeşil) → `--primary` (violet)
   İkincisi tartışmalı: "tamamlandı" için yeşil semantik olarak daha güçlü.
   Yerelde override etmek yerine soruyu DS'e taşıdım (docs/redevui-gaps.md) —
   yeni temizlenmiş bir çakışmanın yerine hemen yenisini koymak istemiyorum. */

/* ── re-stat → DS'E GEÇTİ (2026-08-19) ────────────────────────────────────
   `.re-stat-label` DS'le birebir aynıydı. Diğer ikisinde DS benimsendi:
     · `.re-stat` dolgu var(--re-space-3) → 14px 16px, radius → radius-lg
     · `.re-stat-value` 1.25rem → 1.5rem, line-height 1.15 → 1.1
   Daha küçük sayı gerekirse DS'in `re-stat-sm` modifier'ı var (1.125rem). */

/* ── re-scroll-x → DS'İN ÜÇ PARÇASINA BÖLÜNDÜ (2026-08-19, gap-v2 §2.1) ──
   Buradaki yerel blok DS'in `re-scroll-x`ini (yalnız `overflow-x:auto` + ince çubuk)
   **yeniden tanımlıyordu** — isim çakışması. DS artık işi üçe bölmüş durumda:
     · kaydırma        → `re-scroll-x`   (base.css:412)
     · kenar taşması   → `re-bleed-x`    (utilities.css, negatif margin + eşit padding)
     · flex+gap+snap   → `re-chip-strip` (components.css:1132, `scroll-padding-inline` dahil)
   Markup `class="re-scroll-x re-bleed-x re-chip-strip"` oldu (ui.js, week.js).

   Şeridin kaydırma çubuğunu gizlemek de artık DS'te: v0.78.0 (`e27d648`) koşulsuz gizliyor.
   Buradaki iki satır SİLİNDİ (CS1, 2026-10-02) — `ds-inventory` onları "DS şüpheli" sayıyordu
   ve üç uygulamada aynı kural duruyordu. Ölçüldü: v0.77'de kural yokken taşan şeridin altında
   4px çubuk çıkıyordu (68 → 72), v0.78'de kural olmadan 0. */

/* ── DS Faz 5 geçişinden kalan iki parça (2026-08-19) ────────────────────
   `hey-composer` → `re-prompt-bar`, `hey-timeline` → `re-timeline` devri yapıldı.
   Aşağıdaki ikisi DS'in kapsamadığı yerler; ikisi de gap-v5 adayı olarak yazıldı. */

/* 1) mikrofon → DS `re-prompt-action` (v0.7.1). Yerel kopya silindi. */


/* ── DS'E GEÇTİ (Redev UI, gap-v5 §V5-4) ────────────────────────────────
   `re-section-label-sub` artık DS'te flex + 6px gap, `> svg` 13px + margin-top:2px.
   Yerel kopya silindi; DS'in ikon yuvası `re-section-label` ile aynı x'i veriyor. */

/* Sohbet ekranındaki sabit prompt bar kuralları SİLİNDİ (v0.19.0): dock artık
   KABUK seviyesinde (`app.js § composerHtml`, `.hey-prompt-dock`) ve `chat.js`
   composer render ETMİYOR. Kurallar dock refactor'undan artakalmıştı ve iki gündür
   hiçbir şeye uygulanmıyordu. `_labs/scripts/olu-kural.mjs` ölçtü. */


/* ── re-tabbar-float — YEREL OVERRIDE KALDIRILDI (2026-08-21) ─────────────
   DS `gap-v6` kapandı: `--re-tabbar-count` primitive'i geldi ve ada genişliği
   artık DS'te token'dan hesaplanıyor (`min(--re-tabbar-item-w, --_item-cap) *
   count + dolgu + kenarlık`). Bizim `min()` tavanımız ve `width` hesabımız
   gereksiz kaldı — iki katman aynı işi yapınca hangisinin çalıştığı belirsizleşiyor.
   Ada masrafı da DS'te token (`--_bar-pad` / `--_bar-edge`), yani pill varyantının
   farklı dolgusu artık DS tarafında doğru hesaplanıyor; benim sabit 18/6px'im
   bunu elle takip etmek zorundaydı.
   Tüketiciye kalan TEK iş: sekme sayısını vermek (app.css § Sabit prompt bar).
   Tarihçe: DS'e bildirilen kök sebep `docs/redevui-gaps.md § 6`. */

/* Emniyet kemeri: DS tavanı bir gün yetmezse etiket taşmasın, kırpılsın.
   Bu KALIYOR — DS'in kapsamı öğe genişliği, etiketin kendisi değil. */
/* ── Tabbar etiketi ellipsis'i SİLİNDİ (v0.15.3) ────────────────────────
   Yerel kural `> span`e `max-width:100%` + `text-overflow:ellipsis` veriyordu.
   ÖLÇÜLDÜ ve hiç tetiklenmiyordu: 280/320/360px × standard+comfortable, en uzun
   etiket 38px, en dar hücre 63px — 25px pay. DS zaten zararlı durumu kesiyor
   (`.re-tabbar-item{white-space:nowrap;overflow:hidden}`, §V6-4): etiket ne
   komşu hücreye taşabiliyor ne ikinci satıra inip çubuğu büyütebiliyor.
   Kalan fark yalnız kesilme ANINDA "…" görünmesi; o an bu etiketlerle gelmiyor.
   Bir gün uzun bir etiket gerekirse doğru çözüm etiketi kısaltmak ya da DS'e gap
   yazmak — hiç tetiklenmeyen bir sigorta kuralı taşımak değil. */

