/* TurnuvaGo — Sol menü grupları ve aktif turnuva bağlamı

   v6.169.0 (UX/IA Faz 2, docs/UX_ARCHITECTURE.md UXA-070..UXA-077):
   teknik 'Lisans Modülleri' katlanabilir grubu KALDIRILDI, yerine görev
   bazlı üç grup (Turnuvayı Yönet · Operasyon · Yönetim) geldi. Eski
   .v3-sidebar-group kuralları AŞAĞIDA KORUNDU — bu dosyanın alt
   yarısındaki mobil çekmece yönü (data-mobile-menu-side) blokları hâlâ
   canlıdır ve o bloklarla aynı dosyada yaşamaları gerekir.

   ESKİ BAŞLIK (v6.38.0):
   Sol menü 'Lisans Modülleri' katlanabilir grubu
   v6.38.0 (bkz. TURNUVAGO_ARCHITECTURE.md Ek C, app/v3_layout.php
   v3_tournament_nav()). Sidebar/topbar krom stilleri app.css'in birden
   fazla katmanlı, kırılgan bloğunda dağınık durumda (bkz. DESIGN_SYSTEM.md)
   — o bloklara dokunmadan yalnızca YENİ <details> grubunun stilini burada
   tanımlıyoruz. Mevcut .v3-sidebar-nav / .v3-nav-icon kuralları (app.css)
   aynen miras alınır, üzerine yazılmaz. */

.v3-sidebar-group {
  margin: 10px 0 4px;
  border-top: 1px solid rgba(255, 255, 255, .12);
  padding-top: 8px;
}
.v3-sidebar-group > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 14px;
  border-radius: 10px;
  cursor: pointer;
  list-style: none;
  color: var(--tg-nav-text-muted);
  font-size: var(--tg-font-xs);
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
  -webkit-user-select: none;
  user-select: none;
}
.v3-sidebar-group > summary::-webkit-details-marker { display: none; }
.v3-sidebar-group > summary:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.v3-sidebar-group-caret { display: inline-flex; transition: transform .18s ease; }
.v3-sidebar-group[open] > summary .v3-sidebar-group-caret { transform: rotate(180deg); }

.v3-sidebar-subnav { margin-top: 2px; }
.v3-sidebar-subnav a { padding-inline-start: 20px; font-size: 13.5px; }

@media (max-width: 760px) {
  .v3-sidebar-group > summary { padding: 9px 12px; }
  .v3-sidebar-subnav a { padding-inline-start: 16px; font-size: 13px; }
}

/* Faz 5C.1 — kullanıcı tercihine göre sağdan açılan mobil çekmece varyantı
   (bkz. app/v3_layout.php v3_shell_start() [data-mobile-menu-side], app/
   appearance_helpers.php). Gerçek kontrol eden kural mobile-core.css'teki
   @media(max-width:760px) .v3-sidebar bloğudur (!important + inset ile sol
   kenara sabitler, yalnızca transform ile kaydırır) — app.css'teki eski
   .v3-sidebar{left:-300px} bloğu mobilde zaten ölü koddur (mobile-core.css
   sonradan yüklenip !important ile ezer). Bu yüzden override BURADA, daha
   yüksek özgüllükte ([data-mobile-menu-side="right"] + iki sınıf) ve gerekli
   yerlerde aynı şekilde !important ile yapılır — hangi sırada yüklenirse
   yüklensin kazanır. */
@media (max-width: 760px) {
  .v3-app[data-mobile-menu-side="right"] .v3-sidebar {
    inset: 0 0 0 auto !important;
    transform: translateX(105%);
    box-shadow: -18px 0 45px rgba(2, 16, 31, .28);
  }
  .v3-app[data-mobile-menu-side="right"] .v3-sidebar.open {
    left: auto !important;
    right: 0 !important;
    transform: translateX(0);
  }
}

/* Faz 5C.1 (ergonomi düzeltmesi) — hamburger'in üst çubuktaki konumu drawer
   yönüyle eşleşsin: 'right' iken hamburger grubu (.v3-topbar-left) sağa,
   bildirim/profil grubu (.v3-topbar-tools) sola geçer; hamburger kendi
   grubu içinde de kenara (page title'ın önüne) alınır. v6.388.x (§15.8):
   grup İÇİ sıra da aynalanır (sol modda en dıştaki profil sağ modda da en
   dışta) — eski "grup içi sıra değişmez" notu SUPERSEDED. Yalnız görsel
   sıra değişir (`order`, `row-reverse`); DOM sırası (klavye/Tab) aynı kalır. Aynı eşik (760px) — sidebar drawer'ıyla
   tutarlı. */
@media (max-width: 760px) {
  .v3-app[data-mobile-menu-side="right"] .v3-topbar-left { order: 2; }
  .v3-app[data-mobile-menu-side="right"] .v3-topbar-tools { order: 1; flex-direction: row-reverse; }
  .v3-app[data-mobile-menu-side="right"] .v3-menu-button { order: 2; }
  .v3-app[data-mobile-menu-side="right"] .v3-page-title { order: 1; }
  /* Profil grubu solda iken açılır menü sağa hizalı açılırsa ekranın solundan
     taşar (ölçüm: kompakt 44px tetikleyicide left −34px). Menü tetikleyicinin
     sol kenarından açılır. */
  .v3-app[data-mobile-menu-side="right"] .tg-profile-dropdown { left: 0; right: auto; }
}

/* Branding Yönetimi — özel turnuva marka adı ne kadar uzun olursa olsun
   sidebar taşmadan kırpılır (bkz. app/branding_helpers.php
   branding_tournament_brand_markup()). sidebar-nav.css v3 sayfalarında
   HER ZAMAN yüklü (bkz. app/layout.php page_header_v3()). */
.v3-sidebar .branding-effective-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}

/* v6.165.0 — BEKLEYEN DİSİPLİN İŞİ ROZETİ.
   Menü satırının sonunda küçük sayaç; yalnız 0'dan büyükse basılır.
   Anlam sayıyla verilir (renk tek kaynak değildir) ve rozetin kendi
   aria-label'ı vardır. Yeni bir bildirim/görev çerçevesi kurulmadı. */
.v3-sidebar-nav a{position:relative}
.v3-nav-badge{margin-inline-start:auto;display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;border-radius:var(--tg-radius-pill);background:var(--tg-status-danger);color:var(--tg-text-inverse);font-size:var(--tg-font-xs);font-weight:900;line-height:1;flex:0 0 auto}

/* ═══ v6.169.0 — UX/IA FAZ 2: GÖREV GRUPLARI + AKTİF TURNUVA BAĞLAMI ═══
   Canonical: docs/UX_ARCHITECTURE.md UXA-070/UXA-071/UXA-076/UXA-077.

   Bu blok BİLİNÇLİ olarak küçüktür. Faz 2 bir tasarım migrasyonu
   DEĞİLDİR: mevcut .v3-sidebar / .v3-sidebar-nav / .v4-context-links
   kuralları (app.css + mobile-management.css) OLDUĞU GİBİ yeniden
   kullanılır, hiçbiri yeniden yazılmaz (DS-044: migrasyon eklemelidir).
   Yalnız iki YENİ yapı stillenir: grup başlığı ve bağlam kutusu. */

/* Grup başlığı — bir "bölüm etiketi"dir, tıklanabilir değildir.
   .v3-sidebar-group > summary ile aynı görsel dil (küçük, versal, soluk)
   kullanılır ki menü iki farklı başlık tipi öğrenmek zorunda bırakmasın. */
.v3-nav-group + .v3-nav-group { margin-top: 12px; }
.v3-nav-group-title {
  margin: 0;
  padding: 6px 14px 2px;
  color: var(--tg-nav-text-muted);
  font-size: var(--tg-font-xs);
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
/* İlk grubun başlığı bağlam kutusunun hemen altındadır; üstte ek
   boşluğa gerek yok. */
.v3-nav-group:first-of-type .v3-nav-group-title { padding-top: 2px; }

/* Aktif turnuva bağlamı — ad · rol(ler) · durum.
   ROL SEÇİCİ DEĞİLDİR (UXA-012): tıklanabilir hiçbir öğe içermez. */
.v3-tournament-context {
  display: grid;
  gap: 3px;
  margin: 10px 0 2px;
  padding: 10px 12px;
  border: 1px solid var(--tg-nav-border);
  border-radius: var(--tg-radius-md);
  background: var(--tg-nav-surface);
}
.v3-tournament-context-name {
  overflow: hidden;
  color: var(--tg-nav-text);
  font-size: var(--tg-font-md);
  font-weight: 850;
  line-height: 1.25;
  /* Uzun turnuva adı çekmeceyi yatay taşırmaz; iki satırda kırpılır. */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
/* Çoklu rol etiketi dar ekranda KIRPILMAZ, alt satıra sarar — rozetin
   yarısını göstermek bağlamı anlatmaz (UXA-076). */
.v3-tournament-context-roles {
  color: var(--tg-nav-accent);
  font-size: var(--tg-font-sm);
  font-weight: 800;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
.v3-tournament-context-state {
  color: var(--tg-nav-text-muted);
  font-size: var(--tg-font-xs);
  font-weight: 700;
}

/* Bağlam çıkışı — menünün EN ALTINDA, ayrı bir bölüm olarak.
   Görsel dili .v4-context-links'ten miras alır (markup o sınıfı da
   taşır); burada yalnız konumun ayracı tanımlanır. */
.v3-context-exit {
  margin-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, .12);
  padding-top: 12px;
}

@media (max-width: 760px) {
  .v3-nav-group + .v3-nav-group { margin-top: 8px; }
  .v3-nav-group-title { padding: 5px 10px 1px; }
  .v3-tournament-context { margin: 6px 0 2px; padding: 9px 10px; border-radius: 10px; }
  .v3-context-exit { margin-top: 12px; padding-top: 9px; }
  /* Çekmecedeki bağlam çıkışı gerçek bir dokunma hedefidir (DS-010: ~44px).
     Karşı kural mobile-management.css'teki
     `.v3-sidebar .v4-context-links a { min-height:37px; padding:6px 9px!important }`.
     - `min-height` için özgüllük EŞİTLENİR (0,3,1) ve sidebar-nav.css o
       dosyadan SONRA yüklendiği için kazanır — `!important` gerekmez.
     - `padding` karşı tarafta `!important` taşıdığı için burada da
       `!important` ZORUNLUDUR; aksi hâlde 6px dolgu 44px'i görsel olarak
       anlamsız kılardı. Bu, DS-012'nin yasakladığı "tabanı DELEN" kullanım
       değil, tabanı GERİ KAZANAN tek noktalı bir karşı-kuraldır. */
  .v3-sidebar .v4-context-links.v3-context-exit a {
    min-height: 44px; /* = --tg-touch-min (DS-010) */
    padding: 10px 12px !important;
  }
}

/* ═══ v6.169.0 — DOKUNMA HEDEFİ TABANI (DS-010) ═══
   Canonical: docs/DESIGN_SYSTEM.md DS-010/DS-012.

   Faz 2'de yenilenen kenar çubuğu/çekmece navigasyonunun TÜM
   interaktif öğeleri ≈44px etkileşim yüksekliği sağlar.

   NEDEN BURADA: `mobile-management.css` çekmece bağlantılarına
   `min-height:36px` veriyor (ölçülen gerçek yükseklik 42px — 44
   tabanının altında). sidebar-nav.css o dosyadan SONRA yüklendiği için
   EŞİT özgüllükte (0,1,1) kazanır; `!important` GEREKMEZ.

   GÖRSEL ŞİŞME YOK: yalnız `min-height` yükseltilir. Bağlantılar zaten
   `display:flex; align-items:center` olduğundan kutu 44px'e büyür,
   içerik dikeyde ortalanır — dolgu (padding) DEĞİŞTİRİLMEZ, satır
   aralığı ve yazı boyutu aynı kalır. Faz 4'ün genel 44/16 çalışması
   bunu ezmez, kapsar. */
.v3-sidebar-nav a {
  min-height: 44px; /* = --tg-touch-min (DS-010) */
}

/* ═══════════════════════════════════════════════════════════════════
   v6.218.0 — UXA-198: TURNUVA İÇİ KENAR ÇUBUĞU / MOBİL ÇEKMECE
   Canonical: docs/UX_ARCHITECTURE.md UXA-198, docs/DESIGN_SYSTEM.md
   DS-010 (≈44px dokunma hedefi) / DS-012 (taban delinmez).

   ─── KAPSAM SINIRI (ZORUNLU OKUMA) ───────────────────────────────
   `.v3-sidebar` ve `.v3-tournament-context` markup'ı Hesabım
   kabuğuyla PAYLAŞILIR (app/account_layout.php — o kabuk da bu
   dosyayı yükler). Bu bölümdeki HER kural bu yüzden
   `.v3-app--tournament` altında kapsanır: turnuva içi çekmecenin
   düzeni değişir, Hesabım/global navigasyon AYNEN kalır. Bu bölüme
   kapsamsız bir seçici EKLEMEYİN.
   İSTİSNA (v6.394.49): §1 üst boşluk + marka kilidi Hesabım kabuğuna
   da (`.account-app`) AÇIKÇA uygulanır. Diğer bölümler turnuvaya
   özgü kalır.
   v6.394.121: çekmecede X kapatma düğmesi YOK (UX_ARCHITECTURE §15.43);
   krom X kuralları ve marka kilidindeki X güvenli alanı kaldırıldı.

   ─── !important KULLANIMI ────────────────────────────────────────
   Aşağıdaki üç yerde `!important` ZORUNLUDUR, tercih değildir:
   karşı kural (mobile-core.css `padding-top:58px!important`,
   mobile-management.css `padding:54px 8px 10px!important` ve marka
   kilidi ölçüleri) zaten `!important` taşır. Bu, DS-012'nin
   yasakladığı "tabanı DELEN" kullanım değil, mevcut bir
   `!important`'ı DAR KAPSAMDA geri alan karşı-kuraldır; dokunma
   hedefleri hiçbir yerde küçültülmez.
   ═══════════════════════════════════════════════════════════════ */

/* ── 1. ÜST BOŞLUK (UXA-198 §3; X kaldırıldı v6.394.121) ──────────
   Eski kapatma satırının 54/58px'lik üst şeridi (mobile-core.css /
   mobile-management.css) burada geri alınır. Çekmecede X düğmesi yok:
   kapatma dış alan, Escape ve menü düğmesiyle (app/v3_layout.php
   v3_shell_drawer_script()). */
@media (max-width: 760px) {
  .v3-app--tournament .v3-sidebar,
  .account-app .v3-sidebar {
    /* Yatay/alt dolgu mobile-management.css'teki değerlerle AYNI
       bırakılır — çekmece genişliği ve iç hizası DEĞİŞMEZ. */
    padding: 10px 8px 10px !important;
  }

  /* ── 2. MARKA KİLİDİ YUKARI (UXA-198 §4) ───────────────────────
     Logo kartı çekmecenin en üstünde başlar. Kart YENİDEN
     TASARLANMAZ: yükseklik/oran/radius/yüzey mobile-management.css'te
     kalır. X olmadığı için yanlarda güvenli alan AYRILMAZ (v6.394.121;
     önceki 40px / yerleşik TGO 52px güvenli alan kaldırıldı). */
  .v3-app--tournament .v3-sidebar .turnuvago-brand,
  .account-app .v3-sidebar .turnuvago-brand {
    margin-top: 0 !important;
  }
}

/* ── 3. KOMPAKT AKTİF TURNUVA KİMLİĞİ (UXA-198 §2) ────────────────
   Rol satırı kalktığı için kutu ızgaradan tek SATIRA döner:
   "AD ................ Durum". Ad uzunsa kontrollü kırpılır, durum
   rozeti asla ezilmez (`flex:0 0 auto`). Masaüstünde de aynı kompakt
   dil geçerlidir — aynı veri kaynağı, iki farklı kutu üretilmez. */
.v3-app--tournament .v3-tournament-context {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 11px;
}
.v3-app--tournament .v3-tournament-context-name {
  min-width: 0;
  /* İki satıra kadar sarar, sonra kırpılır: uzun turnuva adı
     çekmeceyi yatay taşırmaz ama tek kelimede de yok olmaz. */
  -webkit-line-clamp: 2;
  font-size: var(--tg-font-sm);
  overflow-wrap: anywhere;
}
.v3-app--tournament .v3-tournament-context-state {
  flex: 0 0 auto;
  padding: 3px 8px;
  border-radius: var(--tg-radius-pill);
  background: rgba(255, 255, 255, .1);
  white-space: nowrap;
}

/* ── 4. "DİĞER İŞLEMLER" KATLANABİLİR GRUBU (UXA-198 §7-8) ────────
   Görsel dil, kalkan `.v3-nav-group-title` başlığından MİRAS ALINIR
   (küçük, versal, soluk) — kullanıcı iki farklı başlık tipi öğrenmek
   zorunda kalmaz. Yeni bir accordion çerçevesi/kütüphanesi YOKTUR. */
.v3-app--tournament .v3-nav-collapse { margin-top: 10px; }
.v3-app--tournament .v3-nav-collapse-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  min-height: var(--tg-touch-min); /* DS-010 */
  margin: 0;
  padding: 6px 14px;
  border: 0;
  border-radius: var(--tg-radius-md);
  background: transparent;
  color: var(--tg-nav-text-muted);
  font-size: var(--tg-font-xs);
  font-weight: 800;
  letter-spacing: .06em;
  text-align: start;
  text-transform: uppercase;
  cursor: pointer;
}
.v3-app--tournament .v3-nav-collapse-toggle:hover {
  background: var(--tg-nav-hover-bg);
  color: var(--tg-nav-text);
}
.v3-app--tournament .v3-nav-collapse-toggle:focus-visible {
  outline: 3px solid var(--tg-nav-active-bg);
  outline-offset: -3px;
}
.v3-app--tournament .v3-nav-collapse-caret {
  display: inline-flex;
  flex: 0 0 auto;
  transition: transform .18s ease;
}
.v3-app--tournament .v3-nav-collapse.is-open .v3-nav-collapse-caret {
  transform: rotate(180deg);
}
/* Panel kapalıyken `hidden` özniteliği taşır; `.v3-sidebar-nav`
   herhangi bir `display` bildirmediği için tarayıcı varsayılanı
   yeterlidir — yine de niyeti açık yazıyoruz. */
.v3-app--tournament .v3-nav-collapse-panel[hidden] { display: none; }
.v3-app--tournament .v3-nav-collapse-panel { padding-top: 2px; }

/* ── 5. ALT YARDIMCI ALAN — Destek Merkezi (UXA-198 §10) ──────────
   Turnuva operasyonunun parçası değildir; bağlam çıkışının hemen
   üstünde, ondan ayrı ama aynı "yardımcı" bölgede durur. Ayrı bir
   büyük kart ÜRETİLMEZ — sıradan bir menü satırıdır. */
.v3-app--tournament .v3-nav-utility {
  margin-top: 14px;
  border-top: 1px solid rgba(255, 255, 255, .12);
  padding-top: 8px;
}
.v3-app--tournament .v3-nav-utility .v3-sidebar-nav { padding-top: 0; }

/* ── 6. MOBİL YOĞUNLUK (UXA-198 §12) ──────────────────────────────
   Çekmece yüksekliğini büyüten BOŞLUK azaltılır; dokunma hedefi,
   satır yüksekliği ve ikon/metin hizası DEĞİŞMEZ. */
@media (max-width: 760px) {
  .v3-app--tournament .v3-tournament-context { margin: 6px 0 2px; padding: 6px 9px; }
  .v3-app--tournament .v3-nav-collapse { margin-top: 6px; }
  .v3-app--tournament .v3-nav-collapse-toggle { padding: 4px 10px; }
  .v3-app--tournament .v3-nav-utility { margin-top: 8px; padding-top: 5px; }
  .v3-app--tournament .v3-context-exit { margin-top: 8px; padding-top: 6px; }
}

/* ── 7. SAĞDAN AÇILAN ÇEKMECE VARYANTI ────────────────────────────
   v6.394.121: X kaldırıldığı için bu bölümde kural kalmadı (X'i ve
   marka kilidinin güvenli alanını sola alan kurallar silindi). Çekmece
   yönü Faz 5C.1 kuralıyla (dosya başı), ayna §8 ile sürer. */

/* ── 8. SAĞ MOD = SOL MODUN GEOMETRİK AYNASI (v6.388.x, UX_ARCHITECTURE §15.8) ──
   Yön değişir; bilgi mimarisi, sıra, ölçüler, renkler DEĞİŞMEZ. Çekmece
   kökü `direction: rtl` alır: flex satırları (ikon/metin, ad/durum, başlık/
   ok), `text-align: start` ve mantıksal özellikler kendiliğinden aynalanır.
   DOM ve klavye sırası aynı kalır; ayrı sağ markup YOKTUR. Fiziksel
   konumlu tek öğe (X) yukarıdaki §7 kuralıyla karşı köşeye alınır.
   Marka metni kırpılırken okuma yönünü korur (başı görünür, sona …). */
@media (max-width: 760px) {
  .v3-app--tournament[data-mobile-menu-side="right"] .v3-sidebar { direction: rtl; }
  .v3-app--tournament[data-mobile-menu-side="right"] .v3-sidebar .tg-brand-copy { direction: ltr; text-align: right; overflow: hidden; }
}

/* ═══ 2026-10-25 — PLATFORM MERKEZİ ALT BAĞLANTISI (UX_ARCHITECTURE §15.50) ═══
   Yalnız platform dashboard'a erişebilen kullanıcıda basılır
   (account_shell_platform_center_link()). Bağlantıyı taşıyan kenar çubuğu /
   çekmece dikey flex sütunudur: kısa menüde bağlantı çekmecenin ALT
   KENARINA iner (`margin-top:auto`); uzun menüde içerik kendi içinde kayar
   (`.v3-sidebar` overflow:auto) ve bağlantı `sticky` ile alt kenarda görünür
   kalır, kaydırma sonunda üstündeki son öğe tamamen görünür (üstüne kalıcı
   binmez). Flex YALNIZ bu çekmecededir (`:has()`; üyede hiçbir şey değişmez):
   mobile-core.css'in mobil `display:block!important`ı burada aşılır — çekmece
   açma/kapama `transform` iledir, display'e dayanmaz. Öğeler büzülmez
   (`flex-shrink:0`), taşma kaydırılır. Flex'te çocuk kenar boşlukları
   birleşmez: menü gruplarında ölçülen fark +1–2px (2026-10-25).
   Zemin: kenar çubuğu gradyanının alt ucu (`--tg-brand-secondary`) — kayan
   menü öğeleri arkadan görünmez. Alt güvenli alan (çentik / ev çubuğu)
   dolguya eklenir. Dokunma hedefi mevcut bağlam çıkışı kuralıyla 44px. */
.v3-sidebar:has(> .account-platform-exit) {
  display: flex !important;
  flex-direction: column;
  /* Klavye odağı / scrollIntoView menü öğesini (bağlam çıkışı dahil) yapışkan
     bağlantının ARKASINA bırakmaz: kaydırma kabının alt payı bağlantı bloğu
     kadardır (üst ayraç 1 + dolgu 8 + 44 hedef + 8 + alt güvenli alan).
     Yapışkan blok kabın alt dolgusu kadar yukarıda durduğu için o dolgu
     sıfırlanır (app.css / mobile-management.css 10px, mobilde !important);
     güvenli alan zaten bloğun kendi dolgusundadır. Ölçüm 2026-10-25: pay
     yokken odaklanan "Ana Sayfaya Dön" bağlantının altında kalıyordu. */
  padding-bottom: 0 !important;
  scroll-padding-bottom: calc(var(--tg-touch-min) + 17px + env(safe-area-inset-bottom, 0px));
}
.v3-sidebar:has(> .account-platform-exit) > * { flex-shrink: 0; }
.v3-sidebar > .account-platform-exit {
  position: sticky;
  bottom: 0;
  z-index: 2;
  margin-top: auto;
  border-top: 1px solid var(--tg-nav-border);
  padding-top: 8px;
  padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px));
  background: var(--tg-brand-secondary);
}
/* Karşı kural (DS-012: tabanı GERİ KAZANAN tek nokta): app.css
   `.v3-sidebar .v4-context-links{margin:0!important}` ve mobilde
   mobile-management.css `{margin:5px 0 3px!important;padding:0!important}`
   alta itmeyi (account-shell.css'teki eski `margin-top:auto` niyeti dâhil) ve
   alt güvenli alan dolgusunu siliyordu. Özgüllük (0,3,0) > (0,2,0). */
.v3-sidebar > .v4-context-links.account-platform-exit {
  margin-top: auto !important;
  margin-bottom: 0 !important;
  padding-top: 8px !important;
  padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
}
.v3-sidebar > .account-platform-exit a { min-height: var(--tg-touch-min); }

/* ═══ 2026-11-01 — KENAR ÇUBUĞU ALT BAĞLANTILARI = MENÜ BAĞLANTISI ÖLÇÜSÜ (UX_ARCHITECTURE §15.62 md. 11 · DS-156) ═══
   "Ana Sayfaya Dön" (bağlam çıkışı) ve "Platform Merkezi" (`.v4-context-links`) masaüstünde yazı boyutunu gövdeden
   kalıtımla alıyordu (app.css'te font-size yok, kalınlık 800): tarayıcının varsayılan yazı boyutu büyütüldüğünde
   (kullanıcının Chrome'unda ölçüldü: 20 px) menü bağlantılarından (14 px / 700) büyük kalıyor, 220 px kutuda iki
   satıra inip 80 px yüksekliğe çıkıyordu. Kalıcı menü aralığında (≥ 761 px; çekmece ≤ 760 — mevcut eşik) yazı
   boyutu, kalınlık, ikon–metin aralığı ve en az yükseklik `.v3-sidebar-nav a` ile aynı token'lardır; dolgu (9/12) ve
   ikon (18 px) zaten aynıdır. Çerçeveli çıkış görünümü korunur. Metin kırpılmaz / zorla tek satır yapılmaz (ölçüde
   tek satıra sığar); erişilebilir ad bağlantı metnidir, değişmez. Mobil çekmece (≤ 760: 13 px, 44 px dokunma hedefi)
   ve public çekmecenin ≤ 760 görünümü aynen. Özgüllük (0,2,1) app.css `.v4-context-links a` (0,1,1) kuralını aşar. */
@media (min-width:761px){
  .v3-sidebar .v4-context-links a{min-height:var(--tg-touch-min);gap:10px;font-size:var(--tg-font-md);font-weight:700}
}
