/*
 * TurnuvaGo — FİKSTÜR YÜZEYİ (v6.266.0 / FX-UX)
 * ══════════════════════════════════════════════════════════════════════
 *
 * KAPSAM: yalnız fikstür ekranı (fixtures.php) ve herkese açık fikstür
 * listesinin ortak sunumu. Global app.css refactor'ü, tasarım sistemi
 * yeniden yazımı ya da başka sayfaların temizliği BU DOSYANIN İŞİ DEĞİL.
 *
 * BORÇ AZALTMA (FX-08): bu dosya HİÇ `!important` KULLANMAZ. Yükleme
 * sırası (app.css → mobile-core.css → mobile-competition.css →
 * fixtures.css, bkz. app/layout.php) sayesinde özgüllük savaşına gerek
 * yoktur; yeni yüzey kendi `.fixture-*` ad alanında yaşar.
 *
 * DOKUNMA HEDEFİ (FX-07): tüm etkileşimli öğeler canonical
 * `--tg-touch-min` (44px) tabanını kullanır. Bu token TEMA DIŞIDIR ve
 * fikstüre özel bir sayı burada YENİDEN TANIMLANMAZ.
 *
 * MOBİL SÖZLEŞMESİ (§13): 760px altında tablo GİZLENİR ve kart listesi
 * gösterilir — görünüm anahtarı da gizlenir. Yani yatay kaydırılan bir
 * tablo mobilde canonical görünüm HÂLİNE GELEMEZ.
 */

/* ── HIZLI HAFTA SEÇİMİ + TAKIM / GRUP AKORDİYONU (FIKSTUR-HIZLI-HAFTA-SECIMI, 2026-10-30) ──
 * UX_ARCHITECTURE §15.59. Yönetim ve public AYNI işaretlemeyi basar (app/fixture_filter_view.php).
 *   - Hafta şeridi ortak ince alt sekme görünümüdür (`tg-tabbar tg-tabbar-sub`: 32px görsel /
 *     44px dokunma, altı tasarım) — burada YALNIZ dış boşluk sıfırlanır; ızgara boşluğu yönetir.
 *     Izgara kolonu `minmax(0,1fr)`: çok haftalı şerit sayfayı genişletmez, kendi içinde kayar.
 *   - Takım / grup akordiyonu kart DEĞİL: 32px görsel başlık (alt sekmeyle aynı yükseklik), 1px
 *     kenar, dolgu / gölge yok; tıklama alanı `summary`nin 44px'idir. Uzun seçim özeti kırpılır
 *     (tam ad `title`da). Açık form yalnız etiketli yerel seçimlerdir.
 *   - Masaüstü Tablo / Kart anahtarı aynı satırda, akordiyonun DIŞINDA sağdadır.
 *   - Metin ≥ 4,5 : 1: seçim özeti, açık formun etiketleri ve aktif hafta notu ana metin rengindedir
 *     (`--tg-color-muted` beyaz zeminde 4,02, sayfa zemininde ~3,7 : 1 ölçüldü — 2026-10-30); "Seçimi kaldır"
 *     bağlantısı da ana metin rengi + alt çizgi (`--tg-color-accent` sayfa zemininde 2,64 : 1 ölçüldü).
 * SUPERSEDED: v6.274.1 / v6.274.5 katlanır `.fixture-filter-shell` "Filtrele" kapağı ve
 * `.fixture-toolbar` çerçeveli araç çubuğu (masaüstünde açık, mobilde kapalı kapak).
 */
.fixture-quick-filters{
  display:grid;grid-template-columns:minmax(0,1fr);gap:var(--tg-space-2);
  margin-bottom:var(--tg-space-4);
}
.fixture-quick-filters>.fixture-week-strip{margin:0}
/* 2026-11-01 (MASAUSTU-GENISLIK-KABUK, UX §15.62 md. 13) — yönetimde hafta şeridi + Tablo / Kart anahtarı TEK satır
   (`fixture_quick_filters_markup(…, true)`): şerit kalan alanda kendi içinde yatay kayar, anahtar sağda sabit. Mobilde
   anahtar gizli olduğu için (§13) şerit tam satırdır. Takım / grup akordiyonu ve aktif hafta notu alt satırda. */
.fixture-quick-head{display:flex;align-items:center;gap:var(--tg-space-3);min-width:0}
.fixture-quick-head>.fixture-week-strip{flex:1 1 auto;min-width:0;margin:0}
.fixture-quick-head>.fixture-view-switch{flex:0 0 auto;margin-left:auto}
.fixture-quick-row{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--tg-space-2);min-width:0}
.fixture-quick-row>.fixture-view-switch{margin-left:auto}
.fixture-team-picker{min-width:0;max-width:100%}
.fixture-team-picker-summary{
  display:flex;align-items:center;min-height:var(--tg-touch-min);
  list-style:none;cursor:pointer;
}
.fixture-team-picker-summary::-webkit-details-marker{display:none}
.fixture-team-picker-summary::marker{content:""}
.fixture-team-picker-summary:focus-visible{outline:none}
.fixture-team-picker-head{
  display:inline-flex;align-items:center;gap:var(--tg-space-2);box-sizing:border-box;
  min-width:0;max-width:100%;height:var(--tg-subtab-height);padding:0 var(--tg-space-3);
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-sm);
  background:var(--tg-color-surface);color:var(--tg-color-text);
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);white-space:nowrap;
}
.fixture-team-picker-summary:focus-visible .fixture-team-picker-head{
  outline:2px solid var(--tg-focus-ring);outline-offset:2px;
}
.fixture-team-picker-label{flex:0 0 auto}
.fixture-team-picker-value{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;
  color:var(--tg-color-text);font-weight:400;
}
.fixture-team-picker-caret{
  flex:0 0 auto;color:var(--tg-color-muted);font-style:normal;font-weight:400;
  transition:transform .18s ease;
}
.fixture-team-picker[open] .fixture-team-picker-caret{transform:rotate(180deg)}
.fixture-team-picker-form{
  display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--tg-space-2) var(--tg-space-3);
  margin-top:var(--tg-space-1);
}
.fixture-quick-row>.fixture-scope-note{align-self:center;margin:0}
/* ── Aşama sekmeleri: Gruplar / Eleme (PD-59) ─────────────────────────
   Aşama geçişi artık süreç şeması (ok + format renkli pill) DEĞİL, görünüm
   sekmesidir: markup `.fixture-stage-flow.tg-tabbar` + `.tg-canonical-tab`,
   görünüm TAMAMEN foundation.css canonical sekme kuralından gelir. Fikstür,
   Puan Durumu ve public sayfanın aşama sekmeleri aynı sınıfı paylaşır. */

/* ── Filtre alanları (takım / grup akordiyonunun açık formu) ────────── */
.fixture-filter{display:flex;flex-direction:column;gap:var(--tg-space-1);min-width:150px}
.fixture-filter label{
  color:var(--tg-color-text);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);
}
.fixture-filter select{
  min-height:var(--tg-touch-min);padding:0 var(--tg-space-3);
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-sm);
  background:var(--tg-color-surface);color:var(--tg-color-text);
  font-family:inherit;font-size:var(--tg-font-sm);
}
.fixture-filter-apply{min-height:var(--tg-touch-min)}
.fixture-filter-clear{
  display:inline-flex;align-items:center;min-height:var(--tg-touch-min);
  padding:0 var(--tg-space-2);color:var(--tg-color-text);font-size:var(--tg-font-sm);
  font-weight:var(--tg-font-weight-bold);text-decoration:underline;
}
.fixture-scope-note{color:var(--tg-color-text);font-size:var(--tg-font-xs)}

/* ── Görünüm anahtarı (masaüstü) ───────────────────────────────────── */
.fixture-view-switch{
  display:inline-flex;overflow:hidden;
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-sm);
}
.fixture-view-switch a{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:var(--tg-touch-min);min-width:var(--tg-touch-min);padding:0 var(--tg-space-4);
  background:var(--tg-color-surface);color:var(--tg-color-muted);
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);
}
.fixture-view-switch a + a{border-left:1px solid var(--tg-color-border)}
.fixture-view-switch a.is-active{background:var(--tg-status-info-soft);color:var(--tg-status-info)}

/* ── Tur başlıkları (eleme tek akışı, §11) ─────────────────────────── */
.fixture-round-heading{
  margin:var(--tg-space-5) 0 var(--tg-space-2);
  color:var(--tg-color-text);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);
}
.fixture-round-heading:first-child{margin-top:0}

/* ── Tablo görünümü ────────────────────────────────────────────────── */
.fixture-table-wrap{overflow-x:auto}
/*
 * v6.274.11 (UX-REV5 §6/§7/§8/§9) — TABLO KALIR, MAÇ BİRİMİ GÖRÜNÜR.
 *
 * Sorun: tek beyaz yüzey + ince yatay çizgiler "hesap tablosu satırı"
 * hissi veriyordu ve kullanıcı maçları ayrı birimler olarak tarayamıyordu.
 * Çözüm tabloyu kart yığınına çevirmek DEĞİL: `border-collapse:separate`
 * + `border-spacing` ile satırlar arasına gerçek nefes koyulur; her satır
 * kendi hafif yüzeyini ve sol format rail'ini alır.
 *
 * Bu yol bilinçli seçildi: `<table>/<tr>/<td>` semantiği ve KOLON
 * HİZASI aynen korunur (div-grid'e çevrilmedi), `<tr>` üzerinde
 * güvenilir olmayan margin/radius hack'lerine gerek kalmaz — yarıçap ve
 * yüzey hücrelere verilir, boşluğu tarayıcının kendi tablo motoru üretir.
 */
.fixture-table{
  width:100%;font-size:var(--tg-font-sm);
  border-collapse:separate;border-spacing:0 5px;
}
.fixture-table caption{text-align:left}
.fixture-table th,.fixture-table td{
  padding:var(--tg-space-2) var(--tg-space-3);text-align:left;vertical-align:middle;
}
/* Başlık maç yüzeyinin PARÇASI DEĞİLDİR (§13): yüzeyi/yarıçapı yok,
   ayrımı kendi alt çizgisiyle yapar. */
.fixture-table thead th{
  padding-bottom:var(--tg-space-2);
  border-bottom:1px solid var(--tg-color-border);
  color:var(--tg-color-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);
  text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;
}
/*
 * Satır yüzeyi HÜCRELERE verilir (`<tr>` arka planı yarıçapı taşımaz).
 * Ton masaüstünde MOBİLDEN DAHA HAFİFTİR (§8): amaç satırı boyamak değil,
 * maç birimini ayırmaktır.
 */
.fixture-table tbody td{
  border-top:1px solid var(--tg-color-border);
  border-bottom:1px solid var(--tg-color-border);
  background:var(--tg-color-surface);
}
.fixture-table tbody td:first-child{
  border-left:1px solid var(--tg-color-border);
  border-top-left-radius:var(--tg-radius-md);border-bottom-left-radius:var(--tg-radius-md);
}
.fixture-table tbody td:last-child{
  border-right:1px solid var(--tg-color-border);
  border-top-right-radius:var(--tg-radius-md);border-bottom-right-radius:var(--tg-radius-md);
}
/* Format kimliği: mobil kartla AYNI `data-format-family` sözleşmesi ve
   AYNI canonical token ailesi — masaüstünde yalnız daha soluk. */
.fixture-row[data-format-family="league"]{
  --tg-format-accent:var(--tg-section-format-league-accent);
  --tg-format-soft:var(--tg-section-format-league-soft);
}
.fixture-row[data-format-family="groups"]{
  --tg-format-accent:var(--tg-section-format-groups-accent);
  --tg-format-soft:var(--tg-section-format-groups-soft);
}
.fixture-row[data-format-family="knockout"]{
  --tg-format-accent:var(--tg-section-format-knockout-accent);
  --tg-format-soft:var(--tg-section-format-knockout-soft);
}
.fixture-row[data-format-family] > td{
  background:color-mix(in srgb, var(--tg-format-soft, transparent) 46%, var(--tg-color-surface));
  border-top-color:color-mix(in srgb, var(--tg-format-accent, transparent) 16%, var(--tg-color-border));
  border-bottom-color:color-mix(in srgb, var(--tg-format-accent, transparent) 16%, var(--tg-color-border));
}
/* Sol rail — mobil kartla AYNI DS-088 geometrisi, masaüstü için 3px. */
.fixture-row[data-format-family] > td:first-child{
  border-left:3px solid color-mix(in srgb, var(--tg-format-accent, transparent) 62%, var(--tg-color-surface));
}
/* Hover YALNIZ ilgili maçı belirginleştirir; ölçü değiştirmez, yani
   satır kaymaz (layout shift yok — transform/padding/kenarlık kalınlığı
   DEĞİŞMEZ, yalnız renk). */
.fixture-table tbody tr:hover > td{
  background:color-mix(in srgb, var(--tg-format-soft, var(--tg-color-page)) 88%, var(--tg-color-surface));
}
.fixture-col-no{width:44px;color:var(--tg-color-muted);font-variant-numeric:tabular-nums}
/*
 * 2026-11-01 — TOPLU TABLO (MASAUSTU-GENISLIK-KABUK, UX_ARCHITECTURE §15.62 md. 13).
 * Dokuz sütun beşe indi, bilgi kaldırılmadı:
 *   - Tarih · Saat tek sütun: tarih ilk satır, saat ikinci satır (soluk, tablo rakamı); tarih yoksa yalnız
 *     "Tarih belirlenmedi".
 *   - "Maç" hücresi: ev sahibi (sağa yaslı) · skor (ortada) · deplasman (sola yaslı) TEK satırda — üç kolonlu
 *     iç ızgara, skor kolonu `auto`; takım adları kelime sınırında sarar (font küçültme / kesme yok). Maç
 *     durumu (canlı / planlandı / tamamlandı …) skorun altında ortalı.
 *   - İşlem düğmeleri alt alta (sütun dar kalır); görünen 32–34 px, isabet alanı 44 px aynen.
 * SUPERSEDED: ayrı Saat / Ev Sahibi / Skor / Deplasman / Durum sütunları (`.fixture-col-time/-home/-away/-score`).
 */
.fixture-col-when{white-space:nowrap;font-variant-numeric:tabular-nums}
.fixture-when-date{display:block}
.fixture-when-time{display:block;margin-top:2px;color:var(--tg-color-muted);font-size:var(--tg-font-xs)}
.fixture-col-match{min-width:0}
.fixture-table thead th.fixture-col-match{text-align:center}
.fixture-match-line{
  display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;
  gap:var(--tg-space-2) var(--tg-space-3);
}
.fixture-match-team{min-width:0;overflow-wrap:break-word}
.fixture-match-team.is-home{text-align:right}
.fixture-match-team.is-away{text-align:left}
.fixture-match-score{text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
.fixture-match-score .score-empty{color:var(--tg-color-muted)}
.fixture-match-score small{display:block;color:var(--tg-color-muted);font-size:var(--tg-font-xs)}
/* Sarmalayıcı adı bilinçli olarak `-status` ile BİTMEZ: rozet değil yerleşim satırıdır (UI envanteri `*-status`
   sınıflarını durum rozeti ailesi sayar; rozetin kendisi mevcut `.v3-match-state`tir). */
.fixture-match-state-row{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--tg-space-1) var(--tg-space-2);
  margin-top:var(--tg-space-2);
}
.fixture-match-state-row .score-forfeit-reason{flex:1 0 100%;text-align:center}
.fixture-actions-stack{display:inline-flex;flex-direction:column;align-items:stretch;gap:var(--tg-space-2)}
/*
 * SAHA HÜCRESİ = SAHA + (varsa) HAKEMLER (UX-REV5 §10).
 * Yeni "HAKEMLER" sütunu AÇILMADI — tabloyu yatay büyütür ve 1024/1366
 * davranışını bozardı. Hakem satırı ikincil metadatadır ve YALNIZ atama
 * varken çizilir; sahte placeholder üretilmez.
 */
/*
 * Saha kolonuna TABAN GENİŞLİK verilir. Otomatik tablo yerleşimi 1024px'te
 * bu kolonu 58px'e sıkıştırıyor, hakem satırı da karakter karakter sararak
 * satırı 236px'e çıkarıyordu (1024'te ölçüldü). Yüzde + piksel tabanı
 * kolonu makul tutar; YATAY KAYDIRMA ÜRETMEZ çünkü tablo hâlâ %100
 * genişliğe sığar (ölçüldü: taşma 0).
 */
.fixture-table .fixture-col-venue{width:20%;min-width:150px;color:var(--tg-color-text)}
.fixture-col-venue .fixture-venue-name{display:block;overflow-wrap:anywhere}
/* Hakem satırı KELİME sınırında sarar (`anywhere` DEĞİL): adlar
   ortasından bölünmez, gerektiğinde ikinci satıra geçer. */
.fixture-row-referees{
  display:block;margin-top:2px;
  color:var(--tg-color-muted);font-size:var(--tg-font-xs);line-height:1.3;
}
.fixture-row-referees-label{font-weight:var(--tg-font-weight-bold)}

/*
 * DAR MASAÜSTÜ (761–1280px) — YATAY DOLGU SIKIŞTIRMASI.
 *
 * Saha kolonuna taban genişlik vermek tablonun asgari genişliğini
 * büyütüyor ve 1024px'te `.fixture-table-wrap`in KENDİ yatay kaydırması
 * artıyordu (ölçüldü: 224 → 315px). Kaybı satır yüksekliğinden değil
 * DOLGUDAN geri alırız: hücre ve buton yatay dolgusu bu aralıkta bir
 * adım daralır. Sonuç (1024'te ölçüldü): iç kaydırma 235px — yani
 * REV5 ÖNCESİ seviyeye döner — Saha 150px kalır ve en uzun satır
 * 236px yerine 69px'tir. Sayfa gövdesi hiçbir zaman yatay kaydırmaz;
 * kaydırma canonical olarak yalnız tablo kabındadır.
 *
 * 2026-11-01 — MASAUSTU-GENISLIK-KABUK md. 11 (UX_ARCHITECTURE §15.62):
 * toplam yönetim kabuğu 1100 px olduğundan turnuva içeriği kalıcı menü
 * aralığında en çok 800–812 px'tir; "dar masaüstü" artık her masaüstü
 * genişliğidir. Üst sınır (1280) kaldırıldı — aynı dolgu adımı ≥ 761 px'te
 * geçerli. Tablo yine sığmazsa kaydırma yalnız `.fixture-table-wrap`'tadır.
 */
@media (min-width:761px){
  .fixture-table th,.fixture-table td{padding-left:var(--tg-space-2);padding-right:var(--tg-space-2)}
  .fixture-col-actions .tg-btn{padding-left:var(--tg-space-2);padding-right:var(--tg-space-2)}
}
.fixture-col-actions{width:1%;white-space:nowrap}
.fixture-col-actions > *{vertical-align:middle}
.fixture-row.is-finished{color:var(--tg-color-muted)}

/* ── Kart görünümü (mobil canonical) ───────────────────────────────── */
/*
 * v6.274.1 (UX-REV §5/§6/§7) — DÜZ SOL ŞERİT YOK, HAFİF YÜZEY VAR.
 *
 * Eski kart nötr beyaz gövde + keskin dikey renk şeridiydi; bu, projenin
 * yumuşak/surface tabanlı görsel diliyle uyumsuzdu. Şerit markup'tan
 * KALDIRILDI (`v3-match-accent` artık basılmıyor) ve kart kimliğini
 * genelindeki HAFİF YÜZEYDEN alıyor.
 *
 * TOKEN KARARI: yeni token AÇILMADI. `--tg-surface-soft` zaten projenin
 * canonical "hafif yüzey" değeridir; kenarlık ve yarıçap da mevcut
 * ailelerden gelir. `fixture-card-bg` gibi sayfaya özel token
 * üretilmedi ve hiçbir hex yazılmadı. Durum bilgisi ayrıca semantic
 * rozette taşınmaya devam eder (§14: renk tek başına anlam taşımaz).
 */
/*
 * ═══ v6.274.3 (UX-REV3 §2) — KART YÜZEYİ AŞAMAYA GÖRE ═══
 *
 * Kart, ait olduğu aşama türünün canonical format kimliğini taşır ve bu
 * kimlik Turnuva Formatı ekranıyla AYNI token ailesinden gelir
 * (`--tg-section-format-*`). Fikstüre özel renk sözlüğü ya da hardcoded
 * hex YOKTUR; `data-format-family` sözleşmesi de aynen yeniden kullanılır.
 *
 * Ton bilinçli olarak HAFİFTİR: kart kimliğini anlatır, durum bilgisini
 * DEĞİL. Maç durumu ayrıca kendi semantic rozetindedir (§14).
 */
.fixture-card{
  position:relative;overflow:hidden;
  border:1px solid var(--tg-surface-match-border);border-radius:var(--tg-radius-lg);
  background:var(--tg-surface-match);
}
.fixture-card[data-format-family="league"]{
  --tg-format-accent:var(--tg-section-format-league-accent);
  --tg-format-soft:var(--tg-section-format-league-soft);
}
.fixture-card[data-format-family="groups"]{
  --tg-format-accent:var(--tg-section-format-groups-accent);
  --tg-format-soft:var(--tg-section-format-groups-soft);
}
.fixture-card[data-format-family="knockout"]{
  --tg-format-accent:var(--tg-section-format-knockout-accent);
  --tg-format-soft:var(--tg-section-format-knockout-soft);
}

/*
 * ── SOL KIVRIMLI FORMAT ACCENT'İ (UX-REV5 §2) ──────────────────────
 *
 * UX-REV4'ün sağ-üst eşmerkezli yay dekoru KALDIRILDI: istenen kimlik o
 * değildi. Kullanılan dil, Takımlar ekranının canonical accent'idir
 * (`.teams-modern-card` / `.team-fixture-row`, DS-088):
 *
 *   yuvarlatılmış kart kutusu + kalın `border-left`
 *   → köşe yarıçapı şeridin üst/alt ucunu kartın İÇİNE doğru kıvırır
 *     ve "(" hissi verir.
 *
 * Yani kıvrım ayrı bir dekordan değil, GEOMETRİDEN gelir: pseudo-element
 * YOK, wedge/blok YOK, clip-path YOK, hardcoded hex YOK. Düz dikey şerit
 * de değildir — uçları kart radius'una bağlanır.
 *
 * Tek fark referanstan RENK KAYNAĞIDIR: Takımlar sabit `roster` rolünü
 * tüketir, fikstür ise maçın format ailesini (`--tg-format-accent` →
 * canonical `--tg-section-format-*`). Yeni token ailesi açılmadı.
 *
 * Katman sırası (§2): 1) hafif aşama yüzeyi · 2) bu sol rail ·
 * 3) BAĞIMSIZ semantic durum rozeti. Üçü birbirinin yerine geçmez.
 */
.fixture-card[data-format-family]{
  background:var(--tg-format-soft,var(--tg-surface-match));
  border-color:color-mix(in srgb, var(--tg-format-accent, transparent) 22%, var(--tg-color-border));
  border-left:4px solid color-mix(in srgb, var(--tg-format-accent, transparent) 62%, var(--tg-color-surface));
}
.fixture-card.is-finished{color:var(--tg-color-muted)}


/* ── DİKEY RİTİM (§8) — kompakt ama nefes alan ─────────────────────── */
.fixture-card-body{
  display:flex;flex-direction:column;gap:var(--tg-space-2);
  padding:var(--tg-space-3);
}

/*
 * ── 1) ÜST METADATA: tarih-saat · bağlam · durum (UX-REV4 §1) ──────
 *
 * GERÇEK MERKEZ. Sol ve sağ kolonlar `minmax(0,1fr)` ile birbirine
 * EŞİTTİR; içerikleri farklı genişlikte olsa bile ortadaki `auto` kolon
 * kartın geometrik merkezinde kalır. `minmax(0,…)` zorunludur: çıplak
 * `1fr` (= `minmax(auto,1fr)`) geniş içerikte kendi kolonunu büyütür ve
 * merkezi kaydırırdı. Kırılgan margin/padding dengeleme YOK.
 *
 * Yan kolonlar `overflow:hidden` taşır — dar kırılımda uzun bir durum
 * etiketi kartı yatay olarak TAŞIRAMAZ.
 */
.fixture-card-top{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;gap:var(--tg-space-2);
}
.fixture-card-top > .fixture-card-when{justify-self:start;min-width:0;overflow:hidden}
.fixture-card-top > .fixture-card-context{justify-self:center;min-width:0}
.fixture-card-top > .fixture-state{justify-self:end;min-width:0;overflow:hidden}

/*
 * ── TARİH ve SAAT (§2) ─────────────────────────────────────────────
 *
 * İki AYRI değerdir; "05.09.2026 14:26" gibi tek birleşik metin olarak
 * okunmamalıdır. Ayrım hem YAPISAL (iki eleman, alt alta) hem
 * TİPOGRAFİKTİR (tarih birincil ağırlık/renk, saat sakin + aralıklı).
 * İki büyük yatay blok DEĞİL: sol kolon dar kalır.
 *
 * Maç planlanmamışsa saat elemanı HİÇ ÇİZİLMEZ (sahte saat üretilmez);
 * "Tarih belirlenmedi" metni kendi içinde doğal olarak sarar ve ızgara
 * bozulmaz.
 */
.fixture-card-when{
  display:flex;flex-direction:column;align-items:flex-start;
  gap:1px;font-variant-numeric:tabular-nums;line-height:1.2;
}
.fixture-card-date{
  color:var(--tg-color-text);font-size:var(--tg-font-xs);
  font-weight:var(--tg-font-weight-bold);
}
.fixture-card-time{
  color:var(--tg-color-muted);font-size:var(--tg-font-xs);
  font-weight:600;letter-spacing:.06em;white-space:nowrap;
}
/*
 * Bağlam (grup / hafta / tur) SAKİN kalır ve takım isimlerinin dar
 * bölgesine ASLA girmez — kendi metadata satırındadır (§5).
 */
.fixture-card-context{
  display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-1);
  min-width:0;overflow:hidden;
  color:var(--tg-color-muted);font-size:var(--tg-font-xs);font-weight:600;
}
.fixture-card-context i{font-style:normal;opacity:.5}

/* ── 2) ANA ALAN: takımlar + skor (§4) ─────────────────────────────── */
.fixture-card-teams{
  display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:center;gap:var(--tg-space-2);
  padding:var(--tg-space-1) 0;
}
.fixture-card-team{display:flex;align-items:center;gap:var(--tg-space-2);min-width:0}
.fixture-card-team.away{flex-direction:row-reverse;text-align:right}
.fixture-card-team strong{
  min-width:0;overflow-wrap:anywhere;
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);line-height:1.25;
}
/* FX-07 — takım adı kart içinde gezinilebilir bir bağlantıdır; mobilde
   dokunma yüksekliği canonical tabana çekilir. Satır zaten logo (30px) +
   ad taşıdığı için bu, kartı gözle görülür biçimde uzatmaz. */
.fixture-card-team .entity-link{color:inherit;display:inline-flex;align-items:center;min-height:var(--tg-touch-min)}
.fixture-card-score{
  min-width:52px;text-align:center;
  font-size:var(--tg-font-xl);font-weight:var(--tg-font-weight-black);
  font-variant-numeric:tabular-nums;line-height:1.1;
}
.fixture-card-score .score-empty{color:var(--tg-color-muted);font-size:var(--tg-font-md)}

/*
 * ── LOGO ALANI (§3) ────────────────────────────────────────────────
 * Alan HER ZAMAN ayrılır ve iki tarafta eşittir; kart geometrisi logonun
 * varlığına göre DEĞİŞMEZ. Logo yoksa takımın iki rengi 50/50 çapraz
 * bölünmüş daire olarak çizilir (renkler `teams` satırından gelir ve
 * satır içi stille verilir — takım verisidir, tema tokenı değildir).
 * Harf, top, uydurma arma, tek renk ya da gri avatar KULLANILMAZ.
 */
.fixture-team-logo{
  width:30px;height:30px;flex:0 0 30px;
  border-radius:var(--tg-radius-pill);object-fit:cover;
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tg-color-text) 12%, transparent);
}
.fixture-team-logo.is-colors{display:block}
.fixture-team-logo.is-empty{display:block;background:var(--tg-status-neutral-soft)}

/* ── 3) HAKEM ÖZETİ (§6) — sakin secondary metadata ────────────────── */
.fixture-card-referees{
  margin:0;color:var(--tg-color-muted);
  font-size:var(--tg-font-xs);line-height:1.35;
}
.fixture-card-referees-label{font-weight:var(--tg-font-weight-bold)}
.fixture-card-referees .is-empty{opacity:.75}

/* ── 4) ALT SATIR (§7) ─────────────────────────────────────────────── */
.fixture-card-foot{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:var(--tg-space-2);padding-top:var(--tg-space-2);
  border-top:1px solid color-mix(in srgb, var(--tg-color-text) 8%, transparent);
}
.fixture-card-venue{min-width:0;overflow-wrap:anywhere;color:var(--tg-color-muted);font-size:var(--tg-font-xs)}
/* §9 — aksiyonlar GÖRSEL olarak küçük, DOKUNMA BANDI tam 44px: kutular
   34px kalır ama satır canonical dokunma yüksekliğini taşır ve görünmez
   ::after katmanları bu bandın tamamını kaplar. */
.fixture-card-actions{
  display:flex;align-items:center;gap:var(--tg-space-2);
  min-height:var(--tg-touch-min);
}

/* ── Ortak etkileşim öğeleri (44px taban) ──────────────────────────── */
.fixture-open-match,.fixture-plan-trigger{
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--tg-radius-sm);
  font-weight:var(--tg-font-weight-bold);text-decoration:none;
}
/*
 * v6.274.1 (UX-REV §9) — "PLANLA" KOMPAKT.
 *
 * Planlama önemli bir yönetim aksiyonudur ama maç içeriğinin önüne
 * geçmemelidir. GÖRÜNEN kutu küçülür (yükseklik 34px, dar padding),
 * DOKUNMA HEDEFİ 44px KALIR: fark, kutunun dışına taşan görünmez bir
 * ::after katmanıyla kapatılır — üst bar aksiyonlarının (33px kare /
 * 44px isabet) kullandığı AYNI desen, ikinci bir çözüm icat edilmedi.
 */
.fixture-plan-trigger.is-compact{
  position:relative;min-height:34px;padding:0 var(--tg-space-3);
  font-size:var(--tg-font-xs);font-weight:600;
}
.fixture-plan-trigger.is-compact::after{
  content:'';position:absolute;left:0;right:0;top:50%;
  height:var(--tg-touch-min);transform:translateY(-50%);
}
/*
 * "MAÇI AÇ" — GERÇEK KONTROL (UX-REV4 §3).
 *
 * Artık düz metin/bağlantı görünümünde DEĞİL: "Planla" ile AYNI kontrol
 * ailesinden (`tg-btn`), AYNI görünür yükseklikte (34px) ve AYNI 44px
 * dokunma bandında. Semantiği hâlâ navigasyondur (<a> → maç ekranı).
 *
 * Vurgu mevcut `--tg-action-primary-*` ailesinin YUMUŞAK katmanından
 * gelir: "Planla"dan belirgin biçimde öndedir ama dolgulu primary CTA
 * DEĞİLDİR — kartın dikkatini takımlardan/skordan almaz. Yeni hex yok.
 */
.fixture-open-match.tg-btn{
  position:relative;min-height:34px;padding:0 var(--tg-space-3);
  /* UX-REV5 §4/§12: GENERIC MAVİ OUTLINE KALDIRILDI. Kontrol hâlâ
     gerçek bir butondur ve "Planla" ile AYNI ailededir; hiyerarşi artık
     RENKLE değil AĞIRLIK + KENARLIK GÜCÜ ile kurulur, böylece kartın
     aşama rengiyle yarışan ikinci bir renk kalmaz.
     Zemin opak taban yüzeydir: aşama tonu üzerinde kontrol olarak okunur. */
  border:1px solid color-mix(in srgb, var(--tg-color-text) 26%, var(--tg-color-border));
  background:var(--tg-color-surface);
  color:var(--tg-color-text);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);
}
.fixture-open-match.tg-btn:hover{
  border-color:color-mix(in srgb, var(--tg-color-text) 46%, var(--tg-color-border));
  background:var(--tg-surface-soft);
}
/* Görünen kutu 34px, isabet alanı 44px — "Planla" ile AYNI desen. */
.fixture-open-match::after{
  content:'';position:absolute;left:0;right:0;top:50%;
  height:var(--tg-touch-min);transform:translateY(-50%);
}
/* Masaüstü tablosunda satır yüksekliği DEĞİŞMEZ: aynı kompakt kutu. */
.fixture-col-actions .fixture-open-match.tg-btn{min-height:32px}

/* ── Aşama aksiyonları (§3) — turun ardında, bağlamında ────────────── */
.fixture-stage-actions{
  display:flex;flex-wrap:wrap;gap:var(--tg-space-2);
  margin:var(--tg-space-3) 0 var(--tg-space-5);
}
.fixture-stage-actions .tg-btn{min-height:var(--tg-touch-min)}
.fixture-stage-action-form{margin:0}
/* FX-1 (CED §15.38) — aşamanın KENDİ boş durumundaki aksiyon, ilk aşamanın
   "Fikstürü Oluştur"u gibi ortalı tek birincil CTA'dır (sola yaslı değil). */
.program-empty-actions .fixture-stage-actions{justify-content:center;margin-bottom:0}

/* ── Alt yönetim aksiyonları (§10) — minimal, danger yüzeyde değil ─── */
.fixture-footer-actions{
  margin-top:var(--tg-space-6);padding-top:var(--tg-space-4);
  border-top:1px solid var(--tg-color-border);
}
/* FIKSTUR-PLANLA-DUZENLEME (2026-11-04 kullanıcı kararı) — iki alt işlem küçük, ikincil ağırlıkta standart düğme
   (`tg-btn tg-btn-sm`: görünen kutu kompakt, dokunma alanı 44px — foundation.css), altlarında birer kısa açıklama;
   uzun veri kaybı ayrıntısı işlem onayındadır. «Fikstürü sıfırla» mevcut uyarı tonunda (status-warning token'ları),
   «Aşamayı kuraya döndür» kanonik ikincil tehlike (`tg-btn-danger-soft`). Renge ek olarak ikon + açık metin.
   SUPERSEDED: v6.274.1 katlanır `.fixture-regenerate` <details> paneli (özet + uzun uyarı paragrafları). */
.fixture-maintenance{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--tg-space-4) var(--tg-space-6)}
.fixture-maintenance-item{display:grid;justify-items:start;gap:var(--tg-space-1);flex:1 1 240px;max-width:46ch;min-width:0}
.fixture-maintenance-btn{gap:var(--tg-space-2);font-size:var(--tg-font-sm)}
.fixture-maintenance-btn.is-caution{
  background:var(--tg-status-warning-soft);color:var(--tg-status-warning);
  border-color:color-mix(in srgb,var(--tg-status-warning) 40%,transparent);
}
.fixture-maintenance-btn.is-caution:hover:not(:disabled){background:color-mix(in srgb,var(--tg-status-warning-soft) 70%,var(--tg-status-warning) 12%)}
.fixture-maintenance-text{margin:0;color:var(--tg-color-muted);font-size:var(--tg-font-xs);line-height:1.4;overflow-wrap:anywhere}
.fixture-state{display:inline-flex;align-items:center;gap:var(--tg-space-1)}

/* ── Hızlı planlama diyaloğu (§15/§30) ─────────────────────────────── */
.fixture-plan-dialog{
  width:min(440px,calc(100vw - 2 * var(--tg-space-4)));max-height:calc(100vh - 2 * var(--tg-space-6));
  padding:0;border:0;border-radius:var(--tg-radius-lg);
  background:var(--tg-color-surface);color:var(--tg-color-text);box-shadow:var(--tg-shadow-overlay);
}
.fixture-plan-dialog::backdrop{background:rgba(15,25,40,.45)}
/* FIKSTUR-PLANLA-DUZENLEME: başlık / takım adları / × ve sekmeler Canlı Maç penceresiyle ortak (match-live.css);
   eski `.fixture-plan-head` / `-subject` / `-hint` (uzun genel açıklama) kaldırıldı. */
.fixture-plan-form{display:flex;flex-direction:column;gap:var(--tg-space-3)}
/* UX-19 — girilen saatin hangi saat diliminde olduğunu söyleyen kısa bilgi.
   Tarih/saat alanının HEMEN ALTINDA durur, alanı sıkıştırmaz; uzun IANA
   adları (ör. America/Argentina/Buenos_Aires) dar ekranda satır kırar. */
.schedule-timezone-hint{margin:-2px 0 2px;color:var(--tg-color-muted);font-size:var(--tg-font-xs);line-height:1.35;overflow-wrap:anywhere}
.fixture-plan-fields{display:flex;flex-direction:column;gap:var(--tg-space-1)}
.fixture-plan-fields label{
  margin-top:var(--tg-space-2);color:var(--tg-color-muted);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);
}
.fixture-plan-fields input[type=datetime-local],.fixture-plan-fields select{
  width:100%;min-height:var(--tg-touch-min);padding:0 var(--tg-space-3);
  border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-sm);
  background:var(--tg-color-surface);color:var(--tg-color-text);
  font-family:inherit;font-size:var(--tg-font-md);
}
.fixture-plan-fields .program-conflict-ack{
  display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start;
  gap:var(--tg-space-2);margin-top:var(--tg-space-3);
  color:var(--tg-color-text);font-size:var(--tg-font-xs);font-weight:400;line-height:1.4;
}
.fixture-plan-fields .program-conflict-ack input{width:20px;height:20px;margin:0}
/* Kapat + Kaydet satırı ve «Otomatik planlamaya bırak» / «Elle planlandı» bölümü (`.fixture-plan-actions`,
   `.fixture-plan-release`) kaldırıldı (FIKSTUR-PLANLA-DUZENLEME): Kaydet pencerenin ortak işlem satırında. */

/* ── Yeniden oluşturma paneli (ikincil aksiyon, §17) ───────────────── */
/* Eski `.fixture-regenerate-panel` / `.fixture-referee-panel` (alt «Hakem Atamaları» tekrar listesi) kuralları
   kaldırıldı — FIKSTUR-PLANLA-DUZENLEME: hakem ataması maçın penceresindedir. */
.program-pre-summary{margin:var(--tg-space-2) 0 0;color:var(--tg-color-muted);font-size:var(--tg-font-sm)}
/* v6.372.0 (R-02) — boş durumdaki İKİNCİ geçerli yolun tek satırlık
   duyurusu. Yeni bileşen ÜRETİLMEDİ: paragraf zaten `.v3-empty-state
   .is-compact p` reçetesinden ortalanmayı (`margin:0 auto`), `38ch`
   okuma genişliğini ve `--tg-font-sm` tabanını alır — bu yüzden BURADA
   yalnız birincil aksiyondan ayıran ÜST BOŞLUK tanımlanır.
   Seçici bilinçli olarak `.v3-empty-state.is-compact p`den (0,2,1) daha
   spesifiktir (0,3,1); yalnız `margin-top` ezilir, yatay `auto` korunur
   (aksi hâlde satır sola kayar ve boş durumun ortalaması bozulurdu).
   Aksiyonun kendisi canonical `.tg-btn.tg-btn-secondary`dir: 390px'te
   kendi satırında durur ve ortak 44px dokunma tabanı geçerlidir. */
.v3-empty-state.is-compact p.program-empty-alt{margin-top:var(--tg-space-4)}

/* ── Görünüm değişimi ──────────────────────────────────────────────── */
.is-hidden-view{display:none}

/* Ekran okuyucu başlığı (tablo caption) — görsel olarak gizli. */
.fixture-table .sr-only{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;
}

/* ── MOBİL (§13) — tablo YOK, yalnız kart ──────────────────────────── */
@media (max-width:760px){
  /* Sunucu hangi görünümü verirse versin: mobilde tek canonical yüzey
     karttır. Görünüm anahtarı da anlamsız olduğu için gizlenir. */
  .fixture-table-wrap{display:none}
  .fixture-card-wrap.is-hidden-view{display:block}
  .fixture-view-switch{display:none}

  /*
   * ── KART GENİŞLİĞİ = FİLTRE GENİŞLİĞİ (UX-REV2 §5) ──────────────
   *
   * Maç listesini saran `.match-program-panel` mobilde 10px dolgu + kendi
   * kenarlığı taşıyordu; filtre yüzeyi paneli DIŞINDA olduğu için kartlar
   * her iki yandan içeri kaçıyor, takım adları ve skor gereksiz yere
   * sıkışıyordu. Panel dar kırılımda görsel bir kap OLMAKTAN ÇIKAR:
   * kartlar sayfanın kendi içerik ızgarasına oturur ve filtre yüzeyiyle
   * AYNI sol/sağ kenarı paylaşır. Kartın KENDİ iç dolgusu korunur.
   */
  .match-program-panel{padding:0;border:0;background:transparent;box-shadow:none}

  /* ── TAKIM / GRUP AKORDİYONU (UX §15.59) ── Açıkken satırın tamamını alır;
     seçimler alt alta ve tam genişliktedir. */
  .fixture-team-picker[open]{flex-basis:100%}
  .fixture-team-picker-form{flex-direction:column;align-items:stretch}
  .fixture-filter{min-width:0}
  .fixture-filter select,.fixture-filter-apply{width:100%}
  /* iOS otomatik yakınlaştırmasını engellemek için 16px taban. */
  .fixture-filter select{font-size:16px}
  .fixture-card-teams{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:var(--tg-space-1)}
  .fixture-card-score{min-width:48px;font-size:var(--tg-font-md)}
  /* §9 — aksiyon satırı ince kalır: CTA'lar kartı ele geçirmez. */
  .fixture-card-foot{
    display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
    gap:var(--tg-space-2);
  }
  .fixture-card-venue{flex:1 1 auto}
  .fixture-card-actions{flex:0 0 auto;display:flex;gap:var(--tg-space-1)}

  /* `100vw` KAYDIRMA ÇUBUĞUNU DA SAYAR ve diyalogu viewport'un dışına
     taşırır (390px'te ölçüldü: 390 > 375). Yüzde, dialog'un içeren bloğu
     olan görünüm alanına göre çözülür ve taşma olmaz. */
  .fixture-plan-dialog{
    width:100%;max-width:100%;max-height:88vh;margin:auto auto 0;
    border-radius:var(--tg-radius-lg) var(--tg-radius-lg) 0 0;
  }
}

@media (max-width:390px){
  .fixture-card-team strong{font-size:var(--tg-font-xs)}
  .fixture-team-logo{width:22px;height:22px;flex-basis:22px}
}

@media (prefers-reduced-motion:reduce){
  .fixture-card,.fixture-table tbody tr{transition:none}
}
