/*
 * TurnuvaGo — CANLI MAÇ / MAÇ YÖNETİMİ YÜZEYİ (v6.274.14)
 * ══════════════════════════════════════════════════════════════════════
 *
 * KAPSAM: yalnız match-live.php'nin bu turda yenilenen bölümleri —
 * skorbord kimliği, takım seçimi + hızlı olay satırı, ORTAK zaman
 * çizelgesi, yaşam döngüsü aksiyon hiyerarşisi ve bağlantı şeridi.
 * Global app.css/mobile-core.css refactor'ü BU DOSYANIN İŞİ DEĞİLDİR.
 *
 * SÖZLEŞME: bu dosya HİÇ `!important` kullanmaz. Eski yüzeyin global
 * kuralları `.event-buttons.compact` / `.live-team-grid` / `.live-team-card`
 * atalarına bağlıydı; yeni markup bu ad alanlarını KULLANMADIĞI için o
 * kurallar kendiliğinden devre dışı kalır ve özgüllük savaşı gerekmez.
 *
 * TOKEN: yeni token ailesi açılmadı. Renkler mevcut `--tg-*` semantik
 * tokenlarından gelir; hardcoded hex yoktur. Takım kimliği platformun
 * ortak primitive'idir (app/ui_helpers.php · team_visual_identity).
 */

/* ── MAÇ KARTI (LM-1) ─────────────────────────────────────────────── */
/*
 * Skorbord artık public maç detayı ve Genel Bakış ile AYNI canonical kart
 * (`.overview-match-card`, dashboard-overview.css; markup
 * app/match_card_view.php). Eski lacivert yüzey ve satır içi ad+skor
 * kuralları (app.css / mobile-core.css `.live-scoreboard`, `.live-score*`,
 * `.live-clock`, mobil sticky) emekli oldu; kap artık `.live-match-summary`.
 * Burada yalnız bu ekrana özgü ayar var: takım adı bağlantıdır (yönetimde
 * takım sayfasına gider; public'te düz metin).
 */
.live-match-card a.overview-match-team{color:inherit;text-decoration:none;overflow-wrap:anywhere}
.live-match-card a.overview-match-team:hover{text-decoration:underline}

/* ── YAŞAM DÖNGÜSÜ AKSİYONLARI ─────────────────────────────────────── */
/*
 * Beklenen SONRAKİ adım ana CTA'dır; geri alma ve istisna aksiyonları
 * onunla YARIŞMAZ. Hangi formun çizileceği sunucu tarafında belirlenir
 * (değişmedi); burada yalnız görsel ağırlık ayrılır.
 */
.live-controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2)}
.live-controls form{margin:0}
.live-controls .tg-btn-primary{min-height:var(--tg-touch-min)}
/*
 * Geri alma HER ZAMAN sakin: ileri akışın yanında ikincil kalır.
 *
 * v6.326.3 — Bu kuralın KENDİSİ kaldırıldı, sözleşme DEĞİŞMEDİ. `live-btn`
 * Canlı Maç'a özel bir buton ailesiydi ve taban kuralı hiç yoktu: yedi
 * kullanımın altısı tarayıcının NATIVE buton görünümüne düşüyordu, yalnız
 * bu tek varyant boyanıyordu. Çözüm ikinci bir Canlı Maç buton sistemi
 * kurmak değil, aksiyonları anlamlarına göre canonical aileye bağlamaktı —
 * "sakin ikincil" zaten canonical `.tg-btn-secondary`dir.
 */
/*
 * "Maçı Bitir" bazı durumlarda GERÇEKTEN sonraki adımdır (ikinci yarı,
 * uzatma sonu, seri tamamlandı) — orada güçlü kalır. Ama daha spesifik
 * bir ileri adım varken (devre bitir / devreyi başlat) istisna
 * aksiyonudur ve ana CTA'nın önüne geçmemelidir.
 */
.live-controls[data-live-state="first_half"] .live-finish,
.live-controls[data-live-state="halftime"] .live-finish,
.live-controls[data-live-state="extra_time_first_half"] .live-finish,
.live-controls[data-live-state="extra_time_halftime"] .live-finish{
  min-height:36px;padding:0 var(--tg-space-3);
  border:1px solid var(--tg-color-border);background:transparent;
  color:var(--tg-color-muted);font-weight:600;box-shadow:none;
}
.live-controls[data-live-state="first_half"] .live-finish:hover,
.live-controls[data-live-state="halftime"] .live-finish:hover,
.live-controls[data-live-state="extra_time_first_half"] .live-finish:hover,
.live-controls[data-live-state="extra_time_halftime"] .live-finish:hover{
  border-color:var(--tg-color-border-strong,var(--tg-color-border));
  color:var(--tg-color-text);
}

/* ── TAKIM SEÇİMİ + HIZLI OLAY GİRİŞİ ──────────────────────────────── */
.live-entry{
  display:flex;flex-direction:column;gap:var(--tg-space-2);
  padding:var(--tg-space-3);
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-lg);
  background:var(--tg-color-surface);
}
/*
 * Bu seçim YALNIZ yeni olayın hangi takıma yazılacağını belirler;
 * geçmişi FİLTRELEMEZ (eski davranış geri gelmemeli).
 */
.live-side-picker{display:grid;grid-template-columns:1fr 1fr;gap:var(--tg-space-2)}
.live-side-picker button{
  display:flex;align-items:center;gap:var(--tg-space-2);
  min-width:0;min-height:var(--tg-touch-min);padding:0 var(--tg-space-2);
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);
  background:var(--tg-color-surface);color:var(--tg-color-muted);
  font:inherit;font-size:var(--tg-font-xs);cursor:pointer;
}
.live-side-picker button b{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-weight:var(--tg-font-weight-bold);
}
.live-side-picker button.active{
  border-color:color-mix(in srgb, var(--tg-action-primary) 46%, var(--tg-color-border));
  background:var(--tg-action-primary-soft);
  color:var(--tg-color-text);
}
.live-side-identity{
  width:22px;height:22px;flex:0 0 22px;
  border-radius:var(--tg-radius-pill);object-fit:cover;
}
.live-side-identity.is-empty{background:var(--tg-status-neutral-soft)}

/*
 * YEDİ HIZLI AKSİYON — masaüstünde TEK SATIR.
 * Eşit paylı ızgara; her hücre `minmax(0,1fr)` olduğu için uzun etiket
 * kolonu büyütüp satırı taşıramaz. Görünen kutu kompakttır ama dokunma
 * hedefi canonical `--tg-touch-min` tabanındadır.
 *
 * v6.362.0: buton sayısı 6 -> 7 (kendi kalesine gol kendi butonunu aldı).
 * Dar ekranda yedi hücre okunur genişlik bırakmadığı için ızgara 760px
 * altında DÖRT kolona iner: 4 + 3 iki satır. Yükseklik `--tg-touch-min`
 * tabanlı olduğu için ikinci satır da 44px dokunma bandını korur.
 */
.live-quick-actions{
  display:grid;grid-template-columns:repeat(7,minmax(0,1fr));
  gap:var(--tg-space-1);
}
.live-quick-actions .event-trigger{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;min-width:0;min-height:var(--tg-touch-min);padding:var(--tg-space-1) 2px;
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);
  background:var(--tg-color-surface);color:var(--tg-color-text);
  font:inherit;line-height:1.1;cursor:pointer;
}
.live-quick-actions .event-trigger:hover:not(:disabled):not(.is-passive){
  border-color:color-mix(in srgb, var(--tg-color-text) 26%, var(--tg-color-border));
  background:var(--tg-surface-soft);
}
.live-quick-actions .event-trigger:disabled{opacity:.5;cursor:not-allowed}
/*
 * PASİF BUTON (oyuncusuz modda kartlar).
 * Gerçek `disabled` KULLANILMAZ: disabled kontrol tıklama/odak almaz ve
 * kullanıcı neden kapalı olduğunu öğrenemez. Burada buton odaklanabilir
 * ve Enter/Space ile çalışır — yalnız açıklamayı gösterir. Bu yüzden
 * `pointer-events:none` de VERİLMEZ.
 *
 * Görsel: düşük vurgu — soluk yüzey, KESİKLİ kenar ve ikincil metin
 * rengi. Butonun TAMAMINA opaklık VERİLMEZ: `.tg-btn[aria-disabled]`
 * kalıbındaki `opacity` gerçekten kullanılamayan kontroller içindir ve
 * etiketi canonical ikincil metin kontrastının ALTINA düşürür (390px'te
 * ölçüldü). Burada buton kullanılabilir (açıklamayı gösterir), bu yüzden
 * ayrım rengin ve kenarın işidir; soluklaştırma yalnız dekoratif ikondadır.
 *
 * Kutu ölçüsü ve dokunma bandı aktif butonla AYNIDIR, böylece mod
 * değişince yerleşim oynamaz.
 */
.live-quick-actions .event-trigger.is-passive{
  background:var(--tg-surface-soft);color:var(--tg-color-muted);
  border-style:dashed;cursor:default;
}
.live-quick-actions .event-trigger.is-passive .event-button-icon{opacity:.55}
.live-quick-actions .event-button-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;line-height:0}
.live-quick-actions .event-button-label{
  min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:var(--tg-font-xs);font-weight:600;
}
.live-quick-actions .event-color-chip{
  display:block;width:13px;height:13px;border-radius:var(--tg-radius-sm);
}
/*
 * Pasif butonun açıklaması TEK alanda durur (üst üste bildirim birikmez).
 * Canonical notices ailesinin `tg-note` + `tg-note-neutral` bileşenidir;
 * burada yalnız KOMPAKT ölçü ve gizlenme/vurgu davranışı tanımlanır.
 *
 * `.tg-note{display:block}` UA'nın `[hidden]{display:none}` kuralını yener —
 * bu paketteki `.manual-entry-fields` hatasının aynısı. `[hidden]` açıkça
 * geri verilir.
 */
.tg-note-passive{
  margin:var(--tg-space-1) 0 0;padding:var(--tg-space-1) var(--tg-space-2);
  font-size:var(--tg-font-xs);line-height:1.35;
}
.tg-note-passive[hidden]{display:none}
.tg-note-passive.is-pulse{animation:live-passive-pulse .45s ease-out}
@keyframes live-passive-pulse{from{opacity:.35}to{opacity:1}}
@media (prefers-reduced-motion:reduce){
  .tg-note-passive.is-pulse{animation:none}
}

/* ── ORTAK ZAMAN ÇİZELGESİ ─────────────────────────────────────────── */
/*
 * İki takımın olayları AYNI kronolojik akıştadır: ev sahibi solda,
 * dakika ortada, deplasman sağda. Orta kolon `auto` ve yan kolonlar
 * `minmax(0,1fr)` olduğu için dakika sütunu her satırda AYNI yerdedir
 * ve uzun ad kolonu taşıramaz.
 */
/*
 * v6.274.24 — MAÇ OLAYLARI: CANLI MAÇ KİMLİĞİNİN SOFT YÜZEYİ.
 *
 * Skorbord bu ailenin GÜÇLÜ yüzeyidir; olay akışı AYNI ailenin soft
 * karşılığını taşır (`--tg-surface-live-*`, `--tg-brand-primary`den
 * türetilir). Tema markayı değiştirdiğinde ikisi birlikte kayar.
 *
 * BU YÜZEY FORMAT (Grup/Lig/Eleme) RENGİ DEĞİLDİR ve olayların semantic
 * renkleri (gol/sarı/kırmızı) karta YAYILMAZ — onlar kendi ikonlarında
 * kalır. Sol accent ince tutulur: dekor değil, kimlik işareti.
 */
.live-timeline{
  display:flex;flex-direction:column;gap:2px;
  padding:var(--tg-space-2) var(--tg-space-3);
  border:1px solid var(--tg-surface-live-border);
  border-left:3px solid var(--tg-surface-live-accent);
  border-radius:var(--tg-radius-lg);
  background:var(--tg-surface-live-soft);
}
.live-timeline-empty{margin:var(--tg-space-2) 0;color:var(--tg-color-muted);font-size:var(--tg-font-sm);text-align:center}
/*
 * LM-1 — SATIR HİYERARŞİSİ public "Maç Akışı" (`.public-event`) ile aynı:
 * dakika güçlü ve satırın kendi kenarında · ikon + olay adı ana bilgi ·
 * oyuncu · takım adı ikinci seviye. Ev sahibi olayı soldan, deplasman olayı
 * sağdan okunur (aynalı). Düzenle/sil yalnız yönetimdedir ve satırın KARŞI
 * kenarında küçük durur — olay içeriğinin hiyerarşisini bozmaz.
 */
.live-timeline-row{
  display:grid;grid-template-columns:40px minmax(0,1fr) auto;
  align-items:start;gap:var(--tg-space-2);
  padding:var(--tg-space-1) 0;
}
.live-timeline-row + .live-timeline-row{border-top:1px solid var(--tg-surface-live-border)}
.live-timeline-minute{
  grid-column:1;grid-row:1;padding-top:1px;
  color:var(--tg-color-text);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);
  font-variant-numeric:tabular-nums;
}
.live-timeline-body{
  grid-column:2;grid-row:1;
  display:flex;flex-wrap:wrap;align-items:center;gap:2px var(--tg-space-2);min-width:0;
}
.live-timeline-event{display:inline-flex;align-items:center;gap:6px;min-width:0}
.live-timeline-icon{display:inline-flex;flex:0 0 auto}
.live-timeline-type{font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);color:var(--tg-color-text)}
.live-timeline-name{
  min-width:0;overflow-wrap:anywhere;
  color:var(--tg-color-text);font-size:var(--tg-font-sm);text-decoration:none;
}
a.live-timeline-name:hover{text-decoration:underline}
.live-timeline-team{flex-basis:100%;min-width:0;overflow-wrap:anywhere;color:var(--tg-color-muted);font-size:var(--tg-font-xs)}
.live-timeline-tools{grid-column:3;grid-row:1;display:inline-flex;align-items:center;gap:2px}
/* Deplasman satırı aynalanır: dakika sağ kenarda, araçlar sol kenarda. */
.live-timeline-row[data-side="away"]{grid-template-columns:auto minmax(0,1fr) 40px}
.live-timeline-row[data-side="away"] > .live-timeline-minute{grid-column:3;text-align:right}
.live-timeline-row[data-side="away"] > .live-timeline-body{justify-content:flex-end;text-align:right}
.live-timeline-row[data-side="away"] > .live-timeline-tools{grid-column:1}
.live-timeline-tools form{margin:0}
.live-timeline-tools > details > summary,
.live-timeline-tools button{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;padding:0;
  border:0;border-radius:var(--tg-radius-sm);background:transparent;
  color:var(--tg-color-muted);font:inherit;font-size:var(--tg-font-xs);
  list-style:none;cursor:pointer;opacity:.55;
}
.live-timeline-tools > details > summary::-webkit-details-marker{display:none}
/* Görünen kutu 24px, İSABET ALANI 44px: fark, kutunun dışına taşan
   görünmez bir ::after katmanıyla kapatılır — fikstür kartındaki aynı
   desen. Erişilebilirlik tabanı korunur, satır yoğunluğu bozulmaz. */
.live-timeline-tools > details > summary,
.live-timeline-tools button{position:relative}
.live-timeline-tools > details > summary::after,
.live-timeline-tools button::after{
  content:'';position:absolute;left:50%;top:50%;
  width:var(--tg-touch-min);height:var(--tg-touch-min);
  transform:translate(-50%,-50%);
}
/* Açılan dakika formunun kaydet butonu gerçek boyutundadır (görünmez
   katman GEREKMEZ) — ama v6.303.0 (UX-10): genişliği 28px'ti, dokunma
   tabanının altında. Yükseklik zaten 44px; yalnız genişlik eşiğe çekilir,
   görünüm ve satır düzeni bozulmaz. */
.live-timeline-tools > details > form button::after{content:none}
.live-timeline-tools > details > form button{min-width:32px}
.live-timeline-tools > details > summary:hover,
.live-timeline-tools button:hover,
.live-timeline-tools > details[open] > summary,
.live-timeline-tools :focus-visible{opacity:1;color:var(--tg-color-text)}
.live-timeline-tools .live-timeline-delete:hover{color:var(--tg-status-danger)}
/* Dakika düzenleme kutusu satırı ittirmesin: akış üstünde açılır. */
.live-timeline-tools > details{position:relative}
.live-timeline-row[data-side="away"] .live-timeline-tools > details > form{right:auto;left:0}
.live-timeline-tools > details > form{
  position:absolute;right:0;top:calc(100% + 4px);z-index:3;
  display:flex;align-items:center;gap:var(--tg-space-1);
  padding:var(--tg-space-1);
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);
  background:var(--tg-color-surface);
  box-shadow:0 8px 20px color-mix(in srgb, var(--tg-color-text) 14%, transparent);
}
.live-timeline-tools > details > form input[name="minute_label"]{width:64px}
.live-timeline-tools > details > form button{width:28px;height:28px;opacity:1}

/* ── BAĞLANTI ŞERİDİ — normalde sakin, sorunda güçlü ────────────────── */
/*
 * Her şey yolundayken bu bir DURUM SATIRI değil, küçük bir imzadır:
 * kutu/kenarlık yok, tek satır, muted. Gerçek bağlantı problemi varsa
 * uyarı tam güçle döner (danger yüzeyi + kalın metin).
 */
.live-status-strip{
  display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-2);
  min-height:0;padding:0 var(--tg-space-1);
  border:0;border-radius:var(--tg-radius-md);background:transparent;
  color:var(--tg-color-muted);font-size:var(--tg-font-xs);
}
.live-status-strip .live-connection{gap:var(--tg-space-1);color:var(--tg-color-muted)}
.live-status-strip .live-connection i{width:7px;height:7px;box-shadow:none;background:var(--tg-status-success)}
.live-status-strip .live-connection b{font-weight:600}
.live-submit-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
/* Gerçek problem: sakinlik biter. */
.live-status-strip.is-offline,
.live-status-strip:has(.live-connection.is-offline){
  padding:var(--tg-space-2) var(--tg-space-3);
  border:1px solid var(--tg-status-danger);
  background:var(--tg-action-danger-soft);
  color:var(--tg-status-danger);font-size:var(--tg-font-sm);
}
.live-status-strip .live-connection.is-offline{color:var(--tg-status-danger)}
.live-status-strip .live-connection.is-offline i{background:var(--tg-status-danger)}
.live-status-strip .live-connection.is-offline b{font-weight:var(--tg-font-weight-black)}

/* ── DAR KIRILIM (≤760px) ──────────────────────────────────────────── */
/* ═══ v6.303.0 (UX-10) — SAHA KENARI DOKUNMA ERGONOMİSİ ═══
   Canlı Maç tek elle, ayakta ve aceleyle kullanılır. Skor tablosundaki
   takım adları (55×16), zaman çizelgesindeki oyuncu adları (96×16) ve
   geri bağlantısı (102×19) gerçek dokunma hedefleridir ama satır içi
   metin yüksekliğindeydi.

   GÖRÜNEN KUTU BÜYÜTÜLMEZ: yoğun skor/çizelge düzeni ve punto aynı
   kalır; eksik yükseklik, kutunun dışına taşan GÖRÜNMEZ bir `::after`
   katmanıyla kapatılır — `.live-timeline-tools` ve fikstür kartındaki
   AYNI canonical desen, yeni bir sistem kurulmadı. Katman yalnız dokunma
   için vardır; imleç/odak görünümü ve düzen etkilenmez. */
@media (max-width:760px){
  .live-match-card a.overview-match-team,.live-timeline-name,.live-back{position:relative}
  .live-match-card a.overview-match-team::after,.live-timeline-name::after,.live-back::after{
    content:'';position:absolute;left:0;right:0;top:50%;
    height:var(--tg-touch-min,44px);transform:translateY(-50%);
  }
  /* Çizelgede iki ad yan yana olabilir: katman satırı aşmasın diye
     yalnız KENDİ kutusunu genişletir (left/right 0). */
  .live-entry{padding:var(--tg-space-2)}
  .live-timeline{padding:var(--tg-space-2)}
  .live-timeline-name{font-size:var(--tg-font-xs)}
  /* Aksiyon satırı dar ekranda daha da sıkışır ama 44px dokunma bandı
     ve tek satır düzeni KORUNUR. */
  .live-quick-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}
  .live-quick-actions .event-trigger{padding:var(--tg-space-1) 1px}
  .live-quick-actions .event-button-label{font-size:10px;letter-spacing:-.01em}
  .live-quick-actions .event-button-icon .tg-event-icon{width:18px;height:18px}
  .live-controls{gap:var(--tg-space-1)}
  .live-controls .tg-btn-primary{flex:1 1 100%}
}

@media (max-width:390px){
  .live-quick-actions .event-button-label{font-size:9.5px}
  .live-timeline-minute{min-width:30px}
}

/* ── MAÇIN ADAMI — kompakt, açılır (v6.274.21) ─────────────────────── */
/*
 * Maç olayları akışının hemen altında durur ve VARSAYILAN OLARAK TEK
 * SATIRDIR: kapalıyken gereksiz dikey alan tüketmez. Seçim yapıldığında
 * özet satırı seçili oyuncuyu açıkça gösterir; kullanıcı tekrar açıp
 * değiştirebilir. Yeni token/renk YOK.
 */
.live-potm{
  /* Global `details` dolgusu (12px) sıfırlanır: kapalı durumda alan
     TAM OLARAK özet satırı kadar olmalı (390px+te ölçüldü: 69.6 -> 45.6).
     İç dolguyu form ve ipucu kendi kuralında taşır. */
  padding:0;
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-lg);
  background:var(--tg-color-surface);
}
.live-potm-summary{
  display:flex;align-items:center;gap:var(--tg-space-2);
  min-height:var(--tg-touch-min);padding:0 var(--tg-space-3);
  list-style:none;cursor:pointer;
  color:var(--tg-color-text);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);
}
.live-potm-summary::-webkit-details-marker{display:none}
.live-potm-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Seçim yapılmışsa özet BİLGİ taşır; boşken yalnız bir başlıktır. */
.live-potm:not([data-potm-selected]) .live-potm-label{color:var(--tg-color-muted);font-weight:600}
.live-potm-caret{
  flex:0 0 auto;margin-left:auto;color:var(--tg-color-muted);
  font-style:normal;transition:transform .18s ease;
}
.live-potm[open] .live-potm-caret{transform:rotate(180deg)}
.live-potm-form{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--tg-space-2);
  margin:0;padding:0 var(--tg-space-3) var(--tg-space-2);
}
.live-potm-form label{
  flex:0 0 100%;color:var(--tg-color-muted);font-size:var(--tg-font-xs);font-weight:600;
}
.live-potm-form select{flex:1 1 200px;min-width:0}
.live-potm-form .tg-btn{flex:0 0 auto;min-height:var(--tg-touch-min)}
.live-potm-hint{
  margin:0;padding:0 var(--tg-space-3) var(--tg-space-3);
  color:var(--tg-color-muted);font-size:var(--tg-font-xs);line-height:1.35;
}
@media (max-width:760px){
  .live-potm-form{padding:0 var(--tg-space-2) var(--tg-space-2)}
  .live-potm-form select,.live-potm-form .tg-btn{flex:1 1 100%}
  .live-potm-hint{padding:0 var(--tg-space-2) var(--tg-space-2)}
  .live-potm-summary{padding:0 var(--tg-space-2)}
}

/*
 * Katlama AÇIKÇA yazılır. `<details>`in yerleşik gizlemesine GÜVENİLEMEZ:
 * çocuklara verilen `display:flex` kapalı durumda da boyanıyor ve alan
 * tüketiyordu (390px'te ölçüldü: kapak 44px iken form 147.8px + ipucu
 * 40.4px hâlâ render ediliyordu). Fikstür filtre kapağındaki AYNI tuzak.
 */
.live-potm:not([open]) > .live-potm-form,
.live-potm:not([open]) > .live-potm-hint{display:none}

/* ── AYAR ÇARKI: GERÇEK GEOMETRİK MERKEZ (v6.274.24) ───────────────── */
/*
 * Kök neden: accessibility.css'teki `body summary:not([data-a11y-compact])`
 * kuralı `display:flex; align-items:center` uygular ve app.css'teki
 * `display:grid; place-items:center`i EZER — yatay merkezleme
 * (`justify-content`) verilmediği için ikon kutunun soluna yaslanıyordu.
 * Ayrıca metin glyph'i (⚙) yerine canonical SVG kullanılır: viewBox
 * merkezlidir, baseline boşluğu yoktur.
 *
 * Offset/transform hilesi YOK; kutu ölçüsü ve dokunma hedefi korunur.
 */
.live-settings > summary{
  display:flex;align-items:center;justify-content:center;
  padding:0;line-height:0;
}
.live-settings > summary > .tg-icon{display:block}

/* LM-1 — v6.274.24 "kale + CSS topu" penaltı golü birleşimi EMEKLİ: hızlı
   olay girişi canonical sözlükten (`match_event_icon("penalty_goal")`,
   foundation.css `.tg-event-icon`) ikon alır. */

/* ── MAÇIN OYUNCUSU İKONU ──────────────────────────────────────────── */
.live-potm-icon{display:inline-flex;align-items:center;flex:0 0 auto;color:var(--tg-color-muted)}
.live-potm-icon .tg-icon{display:block}
.live-potm[data-potm-selected] .live-potm-icon{color:var(--tg-status-warning)}
.live-potm-empty{
  margin:0;padding:var(--tg-space-1) 0 var(--tg-space-2);
  color:var(--tg-color-muted);font-size:var(--tg-font-sm);
}

/* ═══ UXA-265 (2026-10-23) — Canlı Maçlar listesi (live-matches.php) ═══
   Kart canonical `.overview-match-card`'tır (dashboard-overview.css); burada yalnız liste
   düzeni, kart İÇİNDEKİ eylem ve sayfalama vardır. Eski `v3-match-*` kuralları bu sayfada
   kullanılmaz ve değiştirilmedi.
   2026-10-23 — eylem kartın İÇİNE taşındı (`match_card_markup()` `actions`, `.match-card-actions`):
   sağ altta, yalnız metni kadar geniş; kartlar arası boşluk hangi düğmenin hangi maça ait
   olduğunu ayırır. SUPERSEDED: kartın altındaki ayrı `.live-matches-actions` satırı ve
   ≤620px'te tam genişlik düğme. */
.live-matches-total{margin:0 0 var(--tg-space-3);color:var(--tg-color-muted);font-size:var(--tg-font-sm);font-weight:700}
.live-matches-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--tg-space-5)}
.live-matches-item{min-width:0}
.live-matches-item>.overview-match-card{min-width:0}
.live-matches-card .match-card-actions{display:flex;justify-content:flex-end;margin-top:var(--tg-space-3)}
.live-matches-card .match-card-actions .tg-btn{flex:0 0 auto;width:auto;max-width:100%;min-height:var(--tg-touch-min);white-space:normal;text-align:center}
.live-matches-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--tg-space-2);margin-top:var(--tg-space-4);font-size:var(--tg-font-sm)}
.live-matches-pager .tg-btn{min-height:var(--tg-touch-min)}

/* ═══ MAC-AYARLARI-SEKMELER (2026-11-03 kullanıcı kararı) — «Maç Ayarları» penceresi: üç sekme ═══
   Yeni modal / sekme bileşeni YOK: pencere mevcut `details.live-settings` açılırı, sekme çubuğu kanonik
   `.tg-tabbar` + `.tg-canonical-tab` (DS-092; 44 px dokunma hedefi). Bu blok yalnız pencere içi düzeni düzeltir:
   - başlık «Maç Ayarları» + altında ayrı satırda takım adları (uzun ad kırılır, bitişmez) + sağda kapatma;
   - başlık ve sekmeler kaydırılan içeriğin üstünde sabit (yapışkan); içerik pencere içinde kayar;
   - eski başlık üstü bağlantı bloğu kalktı (dev üst boşluk); checkbox tam satır / 36 px yerine 18 px;
   - kısa ekran (yatay telefon) için pencere görünür alana sabitlenir. */
.live-settings-menu{padding-top:0!important;gap:var(--tg-space-3)}
/* Kenar belirginliği (kullanıcı isteği 2026-11-03): eski 1px #dbe4ef kenar beyaz sayfa zemininde kayboluyordu. Kenar metin
   renginden türetilir (tema / koyu kipte de görünür), dış halka + örtü gölgesi pencereyi sayfadan ayırır. */
.live-settings-menu{border:1px solid color-mix(in srgb,var(--tg-text,#122e4f) 34%,var(--tg-surface,#fff))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--tg-text,#122e4f) 10%,transparent),var(--tg-shadow-overlay,0 18px 45px rgba(2,16,31,.28))!important}
@media (min-width:761px){.live-settings-menu{max-height:min(75vh,640px)}}
.live-settings-top{position:sticky;top:0;z-index:2;display:grid;gap:var(--tg-space-2);padding-top:var(--tg-space-3);padding-bottom:var(--tg-space-1);background:inherit;background-color:var(--tg-surface,#fff)}
.live-settings-heading{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:var(--tg-space-2)!important;padding:0 0 var(--tg-space-2)!important}
.live-settings-title{display:grid;gap:2px;min-width:0}
.live-settings-title strong{font-size:var(--tg-font-md,1rem);line-height:1.25}
.live-settings-heading .live-settings-title small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;font-size:var(--tg-font-sm,.875rem);line-height:1.3}
.live-settings-menu .live-settings-close{width:var(--tg-touch-min,44px)!important;height:var(--tg-touch-min,44px);min-height:0;padding:0!important;display:grid;place-items:center;font-size:22px;line-height:1}
.live-settings-top>.live-settings-tabs.tg-tabbar{width:100%;margin:0}
/* FIKSTUR-PLANLA-DUZENLEME ek (2026-11-04, ölçüldü): kısaltma (ellipsis) sekmenin kendisinde değil etiket span'inde.
   Sekmedeki `overflow:hidden` foundation.css'in şeffaf `::before` isabet bandını kırpıyor, dokunma alanı çubuğun 44px'i
   yerine görünen 40px'te kalıyordu (iki pencerede de). Eski düzende metin kısaltılmıyor, sekmenin 12px yan iç boşluğuna
   taşıp kenarda kırpılıyordu; etikete aynı alan açıkça verilir (yan iç boşluk 4px; seçili çizgi genişliği token'dan,
   değişmez) — 320 / 360 px'te «Maç Ayarları» önceki gibi tam görünür. */
.live-settings-tabs .tg-canonical-tab{flex:1 1 0;min-width:0;justify-content:center;text-align:center;white-space:nowrap;padding-inline:var(--tg-space-1,4px)}
.live-settings-tab-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-status-strip[hidden]{display:none!important}
.live-settings-pane{display:grid;gap:var(--tg-space-3)}
.live-settings-pane[hidden]{display:none}
.live-settings-pane>.settings-block:last-of-type{border-bottom:0;padding-bottom:0}
.live-settings-menu .settings-block>strong{font-size:var(--tg-font-sm,.875rem);color:var(--tg-text,#122e4f)}
.live-settings-menu .settings-block label{font-size:var(--tg-font-sm,.875rem)}
.live-settings-menu .settings-conflict-ack{display:grid!important;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:var(--tg-space-2)!important;line-height:1.35}
.live-settings-menu input[type=checkbox]{width:18px!important;height:18px!important;min-height:0!important;margin:1px 0 0;padding:0;flex:none}
.live-settings-menu .schedule-timezone-hint{margin:-2px 0 0;font-size:12px;color:var(--tg-color-muted,#65758b)}
/* Hakemler sekmesi — fikstürle aynı form; pencere içinde okunabilir ölçü. */
.live-settings-pane .program-referee-team-form{padding:0;border:0;background:none;gap:var(--tg-space-2)}
.live-settings-pane .program-referee-team-form label{font-size:12px}
.live-settings-pane .program-referee-slots{grid-template-columns:minmax(0,1fr)}
.live-settings-pane .program-referee-team-form select,.live-settings-pane .program-referee-team-form textarea{min-height:var(--tg-touch-min,44px);font-size:var(--tg-font-sm,.875rem)}
.live-settings-pane .program-referee-readonly strong,.live-settings-pane .program-referee-readonly small{font-size:12px}
/* Canlı Yayın sekmesi + geri dönüş sayfası — tek sade içerik (match_broadcast_manage_markup()). */
.broadcast-manage{display:grid;gap:var(--tg-space-3)}
.broadcast-manage-form{display:grid;gap:var(--tg-space-2)}
.broadcast-manage-form>label{margin:0;font-size:var(--tg-font-sm,.875rem);font-weight:700;color:var(--tg-text,#122e4f)}
.broadcast-manage-form>input[type=url]{width:100%;min-height:var(--tg-touch-min,44px);margin:0}
.broadcast-manage-help,.broadcast-manage-note{margin:0;font-size:12px;line-height:1.4;color:var(--tg-color-muted,#65758b)}
.broadcast-manage-current{margin:0;display:grid;gap:2px;font-size:12px;color:var(--tg-color-muted,#65758b)}
.broadcast-manage-current code{overflow-wrap:anywhere;color:var(--tg-text,#122e4f)}
/* Kaldır formu yalnız gizli alan taşır (düğmesi işlem satırında, `form` özniteliğiyle) — boş ızgara satırı / boşluk bırakmaz. */
.broadcast-manage-remove{display:contents}
/* Kısa ekran (yatay telefon / küçük pencere): pencere görünür alana sabitlenir, içerik kendi içinde kayar. */
@media (max-height:560px){.live-settings-menu{position:fixed!important;top:8px!important;bottom:8px!important;left:auto!important;right:8px!important;width:min(420px,calc(100vw - 16px))!important;max-height:none!important}}

/* ═══ Son düzeltme (2026-11-03 kullanıcı kabulü) — ortak sabit yükseklik · altta sabit işlem satırı · kayıtlı yayın önizlemesi ═══
   Sekmeli pencere (`.live-settings-menu--tabbed`, yalnız 2+ sekme) ekrana göre ORTAK, SABİT yükseklik taşır: sekme değişince
   boy değişmez. Başlık + sekmeler sabit (akış dışı kaydırma yok); yalnız etkin sekmenin içeriği kayar; işlem satırı içeriğin
   altında yapışkan durur ve ayrı bir satırdır (alanları örtmez; odaklanan alan için scroll-padding). Az içerikli sekme
   doldurulmaz — işlem satırı yalnız altta kalır. Mobil klavye: assets/js/match-settings-tabs.js görünür alanı
   (visualViewport) `--live-settings-vvh` / `--live-settings-kb` olarak yazar; pencere klavyenin arkasına taşmaz.
   Düğmeler kanonik `.tg-btn` (ana: `-primary`, ikincil tehlike: `-danger-soft`); eski açık mavi görünüm app.css'teki
   `.live-settings-menu button` kuralının (0,1,1) `.tg-btn-primary`'yi (0,1,0) ezmesindendi — o kural artık `:not(.tg-btn)`. */
.live-settings-menu--tabbed{display:flex!important;flex-direction:column;gap:0!important;overflow:hidden!important;padding-bottom:0!important}
/* `--live-settings-fit`: en uzun sekmenin doğal yüksekliği (JS, açılışta bir kez) — az içerikli rolde pencere gereksiz uzamaz;
   tanımsızsa yalnız ekran sınırı geçerlidir. */
@media (min-width:761px){.live-settings-menu--tabbed{height:min(640px,75vh,var(--live-settings-fit,100vh));height:min(640px,75dvh,var(--live-settings-fit,100dvh));max-height:none}}
@media (max-width:760px){.live-settings-menu--tabbed{height:min(600px,84dvh,calc(var(--live-settings-vvh,100dvh) - 16px - env(safe-area-inset-bottom)),var(--live-settings-fit,100dvh))!important;max-height:none!important;bottom:calc(8px + env(safe-area-inset-bottom) + var(--live-settings-kb,0px))!important}}
@media (max-height:560px){.live-settings-menu--tabbed{height:min(calc(100dvh - 16px - var(--live-settings-kb,0px)),var(--live-settings-fit,100dvh))!important;bottom:auto!important}}
.live-settings-menu--tabbed.is-measuring{height:auto!important;max-height:none!important}
.live-settings-menu--tabbed.is-measuring>.live-settings-pane{flex:none;overflow:visible}
.live-settings-menu--tabbed>.live-settings-top{flex:none;position:relative}
.live-settings-menu--tabbed>.live-settings-pane{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:var(--tg-space-3);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;margin:0 -4px;padding:var(--tg-space-3) 4px 0;scroll-padding-bottom:80px}
.live-settings-menu--tabbed>.live-settings-pane[hidden]{display:none}
.live-settings-menu--tabbed>.live-settings-pane>*{flex:none}
.live-settings-menu--tabbed>.live-settings-pane>.broadcast-manage{flex:1 0 auto;display:flex;flex-direction:column}
/* İşlem satırı (Kaydet · Kaldır): aynı satırda, mobilde de yan yana; metin kırılır, taşmaz; 44 px dokunma hedefi. */
.live-settings-actions,.broadcast-manage-actions{display:flex;flex-wrap:nowrap;gap:var(--tg-space-2);align-items:stretch}
.live-settings-actions>.tg-btn,.broadcast-manage-actions>.tg-btn{flex:1 1 0;min-width:0;width:auto;min-height:var(--tg-touch-min,44px);white-space:normal;overflow-wrap:anywhere;text-align:center}
.live-settings-pane>.live-settings-actions,.live-settings-pane .broadcast-manage-actions{position:sticky;bottom:0;z-index:1;margin-top:auto;margin-inline:-4px;padding:var(--tg-space-2) 4px var(--tg-space-3);background:var(--tg-surface,#fff);border-top:1px solid color-mix(in srgb,var(--tg-text,#122e4f) 12%,var(--tg-surface,#fff))}
/* Kayıtlı yayın önizlemesi: public kartla AYNI alan (app.css), alanın altında; YouTube'un 200 × 200 alt sınırı korunur. */
.broadcast-manage-preview{width:100%;min-width:200px}
.broadcast-manage-preview .public-broadcast-play{width:56px;height:56px}
.broadcast-manage-preview .public-broadcast-play::after{border-width:11px 0 11px 18px}
.broadcast-manage-preview .public-broadcast-load-label{font-size:var(--tg-font-sm,.875rem)}

/* ═══ FIKSTUR-PLANLA-DUZENLEME (2026-11-04 kullanıcı kararı) — Fikstür «Planla / Hakemler» penceresi ═══
   Canlı Maç «Maç Ayarları» penceresiyle (kullanıcı kabulü 2026-11-03) AYNI tasarım dili ve AYNI yapı sınıfları
   (`.live-settings-top` / `-heading` / `-tabs` / `-pane` / `-actions`, ortak sabit yükseklik `.live-settings-menu--tabbed`,
   assets/js/match-settings-tabs.js). Kabuk native <dialog>'dur (konum / genişlik / mobilde alttan açılış fixtures.css);
   bu blok yalnız pencere gövdesini (`.fixture-settings-window`) Canlı Maç penceresine eşitler ve `!important`'lı
   ortak kuralları (× 44 px, checkbox 18 px) bu kapsamda uygular. Yeni modal / sekme bileşeni YOK. */
.fixture-plan-dialog{overflow:hidden;border:1px solid color-mix(in srgb,var(--tg-text,#122e4f) 34%,var(--tg-surface,#fff))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--tg-text,#122e4f) 10%,transparent),var(--tg-shadow-overlay,0 18px 45px rgba(2,16,31,.28))!important}
.fixture-settings-window{display:flex;flex-direction:column;padding:0 var(--tg-space-4,16px);background:var(--tg-surface,#fff)}
.fixture-settings-window:not(.live-settings-menu--tabbed){max-height:calc(100dvh - 48px);overflow-y:auto;padding-bottom:var(--tg-space-3,12px)}
.fixture-settings-window [hidden]{display:none!important}
.fixture-settings-window .live-settings-close{width:var(--tg-touch-min,44px)!important;height:var(--tg-touch-min,44px)!important;min-height:0!important;padding:0!important;display:grid!important;place-items:center;font-size:22px!important;line-height:1!important}
.fixture-settings-window .program-conflict-ack{grid-template-columns:18px minmax(0,1fr)}
.fixture-settings-window input[type=checkbox]{width:18px!important;height:18px!important;min-height:0!important;margin:1px 0 0;padding:0;flex:none}
.fixture-settings-window .program-referee-team-form .program-conflict-ack{display:grid;align-items:start;gap:var(--tg-space-2);font-size:12px;line-height:1.35}
/* Hakem kaydı sonrası dönüş iletisi (sayfanın başarı / hata iletisinin kopyası; kanal yeni değil). */
.fixture-plan-result{margin:0;padding:var(--tg-space-2,8px) var(--tg-space-3,12px);border-radius:var(--tg-radius-sm,8px);font-size:var(--tg-font-sm,.875rem);line-height:1.35;background:var(--tg-status-success-soft,#e8f8ef);color:var(--tg-status-success,#16794a)}
.fixture-plan-result[data-tone="error"]{background:var(--tg-status-danger-soft,#fdeaea);color:var(--tg-status-danger,#b42318)}
/* Mobil klavye: alttan açılan pencere klavye payı kadar yukarı çıkar (değer match-settings-tabs.js). Kısa ekran: pencere
   görünür alana sığar (iç yükseklik ortak kuralla). */
@media (max-width:760px){.fixture-plan-dialog{margin-bottom:var(--live-settings-kb,0px)}}
@media (max-height:560px){.fixture-plan-dialog{max-height:calc(100dvh - 12px)}}