*{box-sizing:border-box}
body{margin:0;font-family:var(--tg-font-family,Arial,sans-serif);background:var(--tg-page-bg);color:var(--tg-text)}
a{color:var(--tg-action-primary);text-decoration:none}
.container{width:min(1100px,calc(100% - 28px));margin:0 auto}
.topbar{background:var(--tg-nav-bg);color:var(--tg-nav-text);position:sticky;top:0;z-index:20;box-shadow:0 2px 10px #0002}
.topbar-inner{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:15px}
.brand{color:#fff;font-weight:800;font-size:19px}
.nav{display:flex;gap:14px;flex-wrap:wrap}
.nav a{color:#fff}
.page-title{margin:24px 0 14px}
.card{background:var(--tg-surface);border:1px solid var(--tg-border);border-radius:var(--tg-radius-lg);padding:18px;margin-bottom:16px;box-shadow:var(--tg-shadow-card)}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.stat{font-size:28px;font-weight:800;color:var(--navy)}
.muted{color:var(--muted);font-size:13px}
label{display:block;font-weight:700;margin:12px 0 5px}
input,select,textarea{width:100%;padding:11px;border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-sm);background:var(--tg-surface);color:var(--tg-text);font:inherit}
button,.btn{display:inline-block;border:0;border-radius:var(--tg-radius-sm);padding:10px 14px;font-weight:700;cursor:pointer;background:var(--tg-action-primary);color:var(--tg-action-primary-text)}
.btn-light{background:var(--tg-action-primary-soft);color:var(--tg-brand-primary)}
.btn-danger{background:var(--tg-action-danger-soft);color:var(--tg-action-danger)}
.row{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.row-between{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:11px 8px;border-bottom:1px solid var(--line);font-size:14px}
.badge{display:inline-block;padding:4px 8px;border-radius:var(--tg-radius-pill);font-size:var(--tg-font-xs);font-weight:700;background:var(--tg-status-info-soft);color:var(--tg-status-info)}
.badge.green{background:var(--tg-status-success-soft);color:var(--tg-status-success)}
.badge.red{background:var(--tg-status-danger-soft);color:var(--tg-status-danger)}
.alert{padding:12px 14px;border-radius:var(--tg-radius-md);margin-top:18px;background:var(--tg-status-info-soft);color:var(--tg-status-info)}
.alert.success{background:var(--tg-status-success-soft);color:var(--tg-status-success)}
.alert.error{background:var(--tg-status-danger-soft);color:var(--tg-status-danger)}
.alert.warning{background:var(--tg-status-warning-soft);color:var(--tg-status-warning)}
.auth{max-width:480px;margin:42px auto}
.footer{padding:25px 0;color:var(--muted);font-size:13px;text-align:center}
.empty{padding:24px;text-align:center;color:var(--muted)}
@media(max-width:760px){
    .grid{grid-template-columns:1fr}
    table{display:block;overflow-x:auto}
}

.responsive-table{overflow-x:auto}
.button-link{display:inline-block;background:var(--tg-action-primary);color:var(--tg-action-primary-text)!important;padding:10px 15px;border-radius:9px;font-weight:700;text-decoration:none}
.group-grid,.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.group-box,.module-box{border:1px solid var(--line);border-radius:12px;padding:15px;background:#f8fafc}
.group-box strong,.module-box strong{display:block;margin-bottom:5px}
.module-box span{font-size:13px;color:var(--muted)}
.active-module{border-color:#2367aa;background:#edf5fd}
textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:12px;font:inherit;background:#fff;color:var(--text);margin-bottom:14px}
/* v6.363.0 — DOKUNMA HEDEFİ. `.check-line` kendi ölçüsünü taşımıyordu:
   etiket kutusu gövde satır yüksekliği kadar (ölçüldü: 32px) kalıyor ve
   canonical 44px eşiğinin ALTINA düşüyordu. Ölçü artık token tabanlı;
   dikey ritim şişmesin diye dış boşluk 12px -> 4px'e çekildi (satır adımı
   44+8=52px, öncesi 20+24=44px idi). Kural mobil hack DEĞİL, her ekranda
   geçerli erişilebilirlik tabanıdır. */
.check-line{display:flex;align-items:center;gap:9px;margin:4px 0;min-height:var(--tg-touch-min)}
.check-line input{width:auto;margin:0}
.team-list{display:grid;gap:12px}
.team-card{border:1px solid var(--line);border-radius:13px;background:#fff;overflow:hidden}
.team-card summary{list-style:none;cursor:pointer;padding:16px;display:flex;justify-content:space-between;align-items:center;gap:14px}
.team-card summary::-webkit-details-marker{display:none}
.team-card[open] summary{border-bottom:1px solid var(--line);background:#f8fafc}
.team-summary-right{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.team-edit-form,.team-readonly{padding:16px}
.danger-button{background:var(--tg-action-danger);color:var(--tg-action-danger-text);margin:0 16px 16px}
@media(max-width:760px){
    .group-grid,.module-grid{grid-template-columns:1fr}
    .team-card summary{align-items:flex-start;flex-direction:column}
    .team-summary-right{justify-content:flex-start}
}

.tournament-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.tournament-tile{display:flex;gap:14px;align-items:center;border:1px solid var(--line);padding:16px;border-radius:14px;color:var(--text);background:#fff}
.tournament-letter{width:48px;height:48px;border-radius:13px;background:#e8f0f8;display:grid;place-items:center;font-size:22px;font-weight:800;color:var(--navy)}
.tile-meta{font-size:12px;color:var(--muted);margin-top:7px}
.tournament-shell{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px}
.tournament-nav{background:#122c4d;border-radius:15px;padding:13px;height:max-content;position:sticky;top:14px}
.tournament-nav-title{color:#fff;font-weight:800;padding:12px 11px;border-bottom:1px solid #ffffff20;margin-bottom:8px}
.tournament-nav a{display:block;color:#dbe8f5;padding:11px;border-radius:9px;margin:3px 0}
.tournament-nav a:hover,.tournament-nav a.active{background:#ffffff18;color:#fff}
.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.settings-tabs a{padding:10px 13px;border:1px solid var(--line);border-radius:999px;background:#fff}
.settings-tabs a.active{background:#15395f;color:#fff;border-color:#15395f}
.player-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.player-card{border:1px solid var(--line);border-radius:12px;padding:14px;color:var(--text);display:grid;gap:5px}
.shirt-no{width:38px;height:38px;border-radius:10px;background:#e8f0f8;display:grid;place-items:center;font-weight:800}
.player-card small{color:var(--muted)}
.draw-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
.draw-modes>div{border:1px solid var(--line);border-radius:13px;padding:16px}
.draw-team{padding:8px;border-top:1px solid var(--line)}
@media(max-width:900px){
.tournament-card-grid,.player-grid,.draw-modes{grid-template-columns:1fr}
.tournament-shell{grid-template-columns:1fr}
.tournament-nav{position:static;display:flex;gap:5px;overflow-x:auto}
.tournament-nav-title{display:none}
.tournament-nav a{white-space:nowrap}
}

body{background:var(--v3-bg)}
.v3-app{min-height:100vh;display:grid;grid-template-columns:286px minmax(0,1fr);background:var(--v3-bg)}
/* Theme preset bugfix (2026-08-10) — sabit #062746/#0a3b68 yerine --tg-color-brand-900/700
   (Tema Yönetimi'nin ürettiği token'lar) tüketilir; fallback ESKİ değerlerdir, tema hiç
   yapılandırılmamışsa görünüm birebir korunur (bkz. assets/css/platform-admin.css aynı desen). */
/* v6.171.0 — Faz 4D: kenar çubuğu/çekmece/üst çubuk SEMANTİK nav token'larını
   tüketir (--tg-nav-*, --tg-topbar-*). Masaüstü ve mobil AYNI token'ları
   kullanır; aktif öğe metni kontrasta göre türetilir (DS-005). */
.v3-sidebar{background:var(--tg-nav-bg-gradient);color:var(--tg-nav-text);padding:18px 14px;position:sticky;top:0;height:100vh;overflow:auto;z-index:30}
.v3-brand{display:flex;align-items:center;gap:12px;padding:3px 8px 22px;border-bottom:1px solid var(--tg-nav-border)}
.v3-brand-mark{width:54px;height:54px;border:2px solid var(--tg-nav-accent);border-radius:50%;display:grid;place-items:center;font-size:27px;background:var(--tg-nav-surface)}
.v3-brand strong{font-size:27px;display:block;line-height:1}.v3-brand small{color:var(--tg-nav-accent);font-weight:800}
.v3-sidebar-nav{padding-top:17px}
.v3-sidebar-nav a{display:flex;align-items:center;gap:12px;min-height:var(--tg-touch-min);padding:10px 14px;color:var(--tg-nav-text);border-radius:var(--tg-radius-md);margin:4px 0;font-size:var(--tg-font-md);font-weight:700;transition:background-color .15s ease,color .15s ease}
.v3-sidebar-nav a:hover{background:var(--tg-nav-hover-bg);color:var(--tg-nav-text)}
.v3-sidebar-nav a:focus-visible{outline:3px solid var(--tg-nav-active-bg);outline-offset:-3px}
.v3-sidebar-nav a.active{background:var(--tg-nav-active-bg);color:var(--tg-nav-active-text);box-shadow:0 8px 22px #0002}
.v3-nav-icon{width:22px;text-align:center}
.v3-main{min-width:0}.v3-topbar{height:72px;margin:0 16px;display:flex;align-items:center;justify-content:space-between;background:var(--tg-topbar-bg);color:var(--tg-topbar-text);border-radius:0 0 16px 16px;padding:0 18px;box-shadow:0 5px 20px #22354d13}
.v3-topbar-left{display:flex;align-items:center;gap:14px;font-size:20px}.v3-menu-button{border:1px solid var(--tg-border);background:var(--tg-surface);color:var(--tg-text);width:var(--tg-touch-min);height:var(--tg-touch-min);border-radius:var(--tg-radius-sm);display:grid;place-items:center;padding:0}
/* ═══ UXA-262 — KOYU ÜST ÇUBUK (onaylandı, 2026-10-14; UX_ARCHITECTURE §15.43) ═══
   Tüm `.v3-topbar` yüzeyleri (Ana Sayfa, Hesabım, Bildirimler, turnuva yönetimi, public turnuva ve
   oyuncu) çekmeceyle AYNI tema token'larından beslenir: zemin `--tg-nav-bg` (Tema Yönetimi "Menü Rengi"),
   metin/ikon `--tg-nav-text` (kontrasttan türetilir — beyaz ya da koyu). Sabit renk YOKTUR: yüzey, kenar,
   soluk metin ve odak halkası `--tg-nav-text`'ten color-mix ile türer; tema yeşil, mor ya da açık olsa da
   okunur kalır. Krom kontrolleri yalnız kendi kapsamlarında yüzey/kenar/metin token'larını eşler; profil
   açılır menüsü tetikleyicinin kardeşidir → açık yüzeyde kalır. Profil tetikleyicisi diğer kontrollerle
   AYNI ölçüdedir: görünür kare token'ı (--tg-topbar-profile-visual) bu yüzeyde action-visual'a eşitlenir
   ve mobilde diğer kontrollerin 1px (şeffaf) kenarlığı kadar kenarlık taşır — üç kare birebir aynı çıkar;
   çerçevesi içeriden (inset) çizilir, ölçüyü büyütmez. Platform Yönetimi bu token'ı kendi değeriyle kullanır. Help Center üst çubuğu ve Platform Yönetimi (`.platform-topbar`) kapsam dışıdır. */
.v3-topbar{--tg-topbar-bg:var(--tg-nav-bg);--tg-topbar-text:var(--tg-nav-text);--tg-topbar-profile-visual:var(--tg-topbar-action-visual)}
.v3-topbar .v3-menu-button,.v3-topbar .notification-topbar-link,.v3-topbar .tg-profile-trigger{--tg-surface:color-mix(in srgb,var(--tg-nav-text) 8%,transparent);--tg-border:color-mix(in srgb,var(--tg-nav-text) 18%,transparent);--tg-border-strong:color-mix(in srgb,var(--tg-nav-text) 45%,transparent);--tg-text:var(--tg-nav-text);--tg-text-muted:color-mix(in srgb,var(--tg-nav-text) 72%,var(--tg-nav-bg));--tg-focus-ring:var(--tg-nav-text)}
.v3-topbar .v3-menu-button:hover,.v3-topbar .notification-topbar-link:hover{--tg-surface:color-mix(in srgb,var(--tg-nav-text) 16%,transparent)}
.v3-topbar .v3-menu-button:active,.v3-topbar .notification-topbar-link:active{--tg-surface:color-mix(in srgb,var(--tg-nav-text) 28%,transparent)}
.v3-topbar .tg-profile-trigger:hover,.v3-topbar .tg-profile-menu[open]>.tg-profile-trigger{background:color-mix(in srgb,var(--tg-nav-text) 10%,transparent);border-color:var(--tg-border)}
.v3-topbar .tg-profile-avatar{color:var(--tg-brand-primary-text);box-shadow:inset 0 0 0 1px var(--tg-border)}
.v3-topbar .notification-topbar-link b{border-color:var(--tg-nav-bg)}
@media(max-width:760px){.v3-topbar .tg-profile-avatar{box-shadow:none;border:1px solid transparent}.v3-topbar .tg-profile-avatar::before{box-shadow:inset 0 0 0 1px var(--tg-border)}}
.v3-userbox{display:flex;align-items:center;gap:10px}.v3-userbox small{display:block;color:var(--v3-muted)}
.v3-user-avatar{width:42px;height:42px;border-radius:50%;background:#30445f;color:#fff;display:grid;place-items:center;font-weight:800}
.v3-page{padding:16px}.v3-hero{min-height:176px;border-radius:16px;padding:28px 32px;display:flex;align-items:center;gap:24px;color:#fff;background:radial-gradient(circle at 80% 20%,#174d7d 0,#082a4f 42%,#061f3a 100%);position:relative;overflow:hidden}
.v3-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 55%,#f6bd3330);pointer-events:none}
.v3-hero-badge{width:105px;height:125px;clip-path:polygon(50% 0,95% 17%,89% 76%,50% 100%,11% 76%,5% 17%);background:#113d69;border:5px solid #efba3c;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:900;z-index:1}
.v3-hero-badge span{font-size:23px}.v3-hero-badge small{margin-top:32px}
.v3-hero-copy{z-index:1}.v3-hero-copy h1{font-size:34px;margin:0 0 8px}.v3-hero-meta,.v3-hero-submeta{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.v3-status-pill{background:var(--tg-nav-active-bg);color:var(--tg-nav-active-text);border-radius:var(--tg-radius-pill);padding:7px 14px;font-weight:900;font-size:13px}.v3-hero-submeta{margin-top:15px}
.v3-hero-cup{margin-left:auto;font-size:100px;filter:drop-shadow(0 8px 8px #0005);z-index:1}
.v3-stat-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin:16px 0}.v3-stat-card{background:var(--tg-surface);border:1px solid var(--tg-border);border-radius:var(--tg-radius-lg);padding:16px;display:grid;grid-template-columns:54px 1fr;gap:10px;color:var(--v3-text);box-shadow:0 5px 18px #22354d0c}
.v3-stat-icon{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;background:#edf4ff;font-size:25px}.v3-stat-card strong{font-size:29px;display:block}.v3-stat-card span{color:var(--v3-muted)}.v3-stat-card small{grid-column:1/-1}
.v3-stat-card.players .v3-stat-icon{background:#e9f8ef}.v3-stat-card.matches .v3-stat-icon{background:#f2eefe}.v3-stat-card.goals .v3-stat-icon{background:#fff5df}.v3-stat-card.penalties .v3-stat-icon{background:#fff0f0}
.v3-dashboard-grid{display:grid;grid-template-columns:1.15fr 1.35fr;gap:16px}.v3-right-stack{display:grid;gap:16px}.v3-panel{background:var(--tg-surface);border:1px solid var(--tg-border);border-radius:var(--tg-radius-lg);padding:16px;box-shadow:var(--tg-shadow-card)}.v3-panel-title{font-size:17px;font-weight:900;padding-bottom:12px;border-bottom:1px solid var(--v3-line);margin-bottom:10px}
.v3-activity-list>div{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--v3-line)}.v3-activity-list>div:last-child{border-bottom:0}.v3-activity-list span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center}.v3-activity-list p{margin:0}.v3-activity-list p small{display:block;color:var(--v3-muted)}.v3-activity-list time{color:#2670d8;font-size:12px}.v3-activity-list .ok{background:#dcf7e7}.v3-activity-list .info{background:#e6f0ff}.v3-activity-list .purple{background:#efe7ff}.v3-activity-list .orange{background:#fff0dc}
.v3-progress-flow{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;position:relative}.v3-progress-flow:before{content:"";position:absolute;top:18px;left:8%;right:8%;height:2px;background:#dbe3ed}.v3-progress-flow>div{text-align:center;position:relative}.v3-progress-flow b{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#eef1f5;color:#6b7685;border:1px solid #d7dee8}.v3-progress-flow span,.v3-progress-flow small{display:block;margin-top:8px}.v3-progress-flow small{color:var(--v3-muted)}.v3-progress-flow .done b{background:#15a55d;color:#fff}.v3-progress-flow .current b{background:#1664d9;color:#fff}.v3-progress-flow .done small{color:#15a55d}.v3-progress-flow .current small{color:#1664d9}
.v3-group-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.v3-group-preview>div{border:1px solid var(--v3-line);border-radius:10px;padding:12px}.v3-group-preview span{display:block;color:#66758a;margin-top:5px}.tg-note.module-disabled-note,.tg-note.workflow-locked-note{border-color:color-mix(in srgb,var(--tg-status-warning) 35%,transparent);background:var(--tg-status-warning-soft)}
.v3-quick-panel{margin-top:16px}.v3-quick-actions{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.v3-quick-actions a{padding:15px 10px;border-radius:9px;text-align:center;color:#fff;font-weight:900}.v3-quick-actions .green{background:#16a05a}.v3-quick-actions .gold{background:#e9aa0d}.v3-quick-actions .blue{background:#1267dc}.v3-quick-actions .purple{background:#7650cc}.v3-quick-actions .navy{background:#0d3c78}.v3-quick-actions .red{background:#ef3428}.v3-quick-actions .teal{background:#169b93}
.v3-footer{display:flex;justify-content:space-between;color:#78869a;font-size:12px;padding:18px 8px 2px}
@media(max-width:1150px){.v3-stat-grid{grid-template-columns:repeat(3,1fr)}.v3-quick-actions{grid-template-columns:repeat(4,1fr)}.v3-dashboard-grid{grid-template-columns:1fr}.v3-group-preview{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){
 .v3-app{grid-template-columns:1fr}.v3-sidebar{position:fixed;left:-300px;transition:.25s;width:270px}.v3-sidebar.open{left:0}.v3-topbar{margin:0;border-radius:0 0 var(--tg-radius-lg) var(--tg-radius-lg)}.v3-page{padding:10px}.v3-hero{padding:20px;min-height:auto}.v3-hero-badge{width:72px;height:90px}.v3-hero-copy h1{font-size:23px}.v3-hero-cup{display:none}.v3-stat-grid{grid-template-columns:1fr 1fr}.v3-quick-actions{grid-template-columns:1fr 1fr}.v3-progress-flow{grid-template-columns:1fr}.v3-progress-flow:before{display:none}.v3-userbox div:last-child{display:none}
}

/* GMHD Turnuva v3.0.1 arayüz düzeltmeleri */
.v3-body{margin:0;overflow-x:hidden}
.v3-global-alert{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:1000;min-width:280px;max-width:min(680px,calc(100vw - 24px));box-shadow:0 10px 30px #0002}
/* UX Fix Pack 1 (K2): kalıcı hata bandı — metin + canonical ikon düğmesi (kapat).
   Toast DEĞİLDİR: .v3-page'in başında sayfa akışında durur, içeriği örtmez
   (sabit konum/transform/gölge sıfırlanır; mobil toast genişliği de geçersiz). */
.v3-global-alert.is-persistent{position:static;top:auto;left:auto;transform:none;z-index:auto;width:auto;min-width:0;max-width:none;box-shadow:none;margin:0 0 var(--tg-space-3);display:flex;align-items:center;gap:var(--tg-space-2);padding-top:4px;padding-bottom:4px;padding-right:4px}.v3-global-alert-text{flex:1;min-width:0}.v3-global-alert .v3-global-alert-close{flex:0 0 auto;border-color:transparent;background:transparent;color:inherit}.v3-global-alert .v3-global-alert-close:hover{background:color-mix(in srgb,currentColor 10%,transparent);color:inherit}
.v3-app{grid-template-columns:310px minmax(0,1fr);width:100%;max-width:none;margin:0}
.v3-sidebar{width:310px;padding:22px 18px}
.v3-brand{padding:4px 10px 25px}
.v3-brand-mark{width:62px;height:62px;border-radius:18px}
.v3-brand strong{font-size:31px}.v3-brand small{font-size:12px;letter-spacing:.5px}
.v3-sidebar-nav a{font-size:15px;padding:11px 16px}
.v3-svg-icon{display:inline-block;vertical-align:middle;flex:0 0 auto}
.v3-topbar{height:76px;margin:0 20px;padding:0 20px}
.v3-topbar-tools{display:flex;align-items:center;gap:10px}
/* .v3-search KALDIRILDI (UXA-144): ölü arama kutusu kullanıcıya gösterilmez. */
.v3-page{padding:20px}
.v3-hero{min-height:210px;padding:34px 38px}
.v3-hero:before{content:"";position:absolute;right:0;bottom:0;width:55%;height:100%;background:radial-gradient(circle at 65% 70%,#f7c94b22 0 2px,transparent 3px),radial-gradient(circle at 40% 30%,#f7c94b30 0 3px,transparent 4px);background-size:58px 58px,83px 83px;opacity:.65}
.v3-hero-copy h1{font-size:40px}
.v3-hero-cup{margin-left:auto;color:#f4bb37;z-index:1;filter:drop-shadow(0 13px 10px #0005)}
.v3-hero-cup svg{width:118px;height:118px;stroke-width:1.45}
.v3-stat-grid{gap:16px;margin:18px 0}
.v3-stat-card{min-height:122px;padding:18px;grid-template-columns:62px 1fr;align-items:center}
.v3-stat-icon{width:62px;height:62px}
.v3-stat-card strong{font-size:34px;line-height:1}
.v3-stat-card span{text-transform:uppercase;font-size:12px;letter-spacing:.45px;font-weight:700}
.v3-stat-card small{font-size:12px}
.v3-panel{padding:19px}.v3-panel-title{font-size:18px}
.v3-group-preview>div{min-height:130px;padding:14px}
.v3-quick-actions a{min-height:104px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:11px;border-radius:12px;padding:14px 9px;box-shadow:0 8px 20px #00000015;transition:transform .18s ease,box-shadow .18s ease}
.v3-quick-actions a:hover{transform:translateY(-2px);box-shadow:0 12px 26px #00000020}
.v3-quick-actions a span{width:42px;height:42px;border-radius:12px;background:#ffffff22;display:grid;place-items:center}
.v3-quick-actions a strong{font-size:13px}
@media(max-width:1200px){
  .v3-app{grid-template-columns:286px minmax(0,1fr)}
  .v3-sidebar{width:286px}
}
@media(max-width:760px){
  .v3-app{grid-template-columns:1fr}
  .v3-sidebar{width:286px;left:-300px}
  .v3-topbar{margin:0;padding:0 12px}
  .v3-topbar-tools{gap:6px}
  .v3-page{padding:10px}
  .v3-hero{padding:22px;min-height:165px}
  .v3-hero-copy h1{font-size:25px}
  .v3-stat-grid{grid-template-columns:1fr 1fr}
  .v3-stat-card{min-height:105px;padding:13px;grid-template-columns:48px 1fr}
  .v3-stat-icon{width:48px;height:48px}
  .v3-stat-card strong{font-size:28px}
  .v3-quick-actions{grid-template-columns:1fr 1fr}
}

/* v3.0.2 - tüm turnuva sekmeleri */
.v3-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px}
.v3-section-head h1{font-size:32px;margin:3px 0 6px}.v3-section-head p{margin:0;color:var(--v3-muted)}
.v3-eyebrow{display:block;color:var(--tg-action-primary);font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.7px}
.v3-settings-layout{display:grid;grid-template-columns:275px minmax(0,1fr);gap:16px}
.v3-settings-menu{background:var(--tg-surface);border:1px solid var(--tg-border);border-radius:var(--tg-radius-lg);padding:10px;height:max-content;position:sticky;top:94px}
.v3-settings-menu a{display:flex;align-items:center;gap:11px;min-height:var(--tg-touch-min);padding:10px 12px;border-radius:var(--tg-radius-sm);color:var(--tg-text);margin:3px 0}
.v3-settings-menu a:hover,.v3-settings-menu a.active{background:var(--tg-action-primary-soft);color:var(--tg-action-primary)}
.v3-settings-menu a span{width:24px;display:grid;place-items:center}
.v3-form-panel label{font-weight:800;color:var(--tg-text)}.v3-form-panel input,.v3-form-panel select,.v3-form-panel textarea{background:var(--tg-surface);border:1px solid var(--tg-border-strong)}
.v3-panel-heading{display:flex;gap:12px;align-items:flex-start;padding-bottom:15px;margin-bottom:16px;border-bottom:1px solid var(--tg-border)}
.v3-panel-heading>span{width:44px;height:44px;border-radius:var(--tg-radius-md);background:var(--tg-action-primary-soft);color:var(--tg-action-primary);display:grid;place-items:center}
.v3-panel-heading h2{margin:0 0 4px}.v3-panel-heading p{margin:0;color:var(--tg-text-muted)}
.v3-form-actions{display:flex;justify-content:flex-end;margin-top:18px}
.v3-empty-state{text-align:center;padding:48px 18px;color:var(--tg-text-muted)}.v3-empty-state svg{color:var(--tg-action-primary)}.v3-empty-state h2{color:var(--tg-text)}
/* v6.173.0 — Faz 6A (DS-076): KOMPAKT boş durum. Dikey boşluk neredeyse bir
   tam ekran olduğunda kullanıcı sayfanın bittiğini sanıyor; varyant aynı
   aileyi kullanır, yeni bir bileşen kurulmaz. */
.v3-empty-state.is-compact{padding:22px 16px}
.v3-empty-state.is-compact h2{margin:10px 0 4px;font-size:var(--tg-font-lg)}
.v3-empty-state.is-compact p{margin:0 auto;max-width:38ch;font-size:var(--tg-font-sm)}
.v3-empty-state.is-compact form{margin-top:14px}
/* v6.307.0 — UX-13: hata durumu kartı. Yeni bir bileşen ailesi DEĞİL —
   mevcut .card + .v3-empty-state reçetesinin ortalanmış varyantı. Genişlik
   sınırı okunabilirlik içindir; dar ekranda kenar boşluğu korunur ve
   yatay taşma üretmez. */
.error-state-card{max-width:640px;margin:48px auto}
.error-state-card .v3-empty-state p{margin:0 auto;max-width:46ch}
.error-state-action{margin-top:22px}
/* Tek birincil aksiyon canonical dokunma tabanını (--tg-touch-min, UX-10)
   HER genişlikte karşılar: hata sayfası çoğu zaman telefonda, bayat bir
   bildirimden açılır ve buradaki tek çıkış yolu budur. */
.error-state-action .button-link{display:inline-flex;align-items:center;justify-content:center;
  min-height:var(--tg-touch-min);padding:10px 22px}
@media (max-width:760px){.error-state-card{margin:24px auto}}
.module-summary-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-bottom:8px}
.module-summary-card{background:var(--tg-surface);border:1px solid var(--v3-line);border-radius:13px;padding:14px;display:flex;flex-direction:column;gap:8px}
.module-summary-card.module-summary-locked{opacity:.55;filter:grayscale(.4)}
.module-summary-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.module-summary-card p{margin:0;color:var(--v3-muted);font-size:12.5px;line-height:1.4}
.module-summary-card form{margin-top:auto}
.module-summary-badge{padding:5px 9px;border-radius:999px;font-size:10px;font-weight:900;white-space:nowrap}
.module-summary-badge.active{background:#e5f8ec;color:#197443}
.module-summary-badge.inactive{background:#fff0bd;color:#805b00}
.module-summary-badge.locked{background:#edf2f7;color:#516273}
.v3-mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.v3-mini-stats>div{background:#fff;border:1px solid var(--v3-line);border-radius:13px;padding:16px;display:grid;grid-template-columns:42px 1fr;column-gap:10px;align-items:center}
.v3-mini-stats span{grid-row:1/3;width:42px;height:42px;border-radius:11px;background:#eaf3ff;color:#1765c5;display:grid;place-items:center}
.v3-mini-stats strong{font-size:25px}.v3-mini-stats small{color:var(--v3-muted);font-size:var(--tg-font-sm)}
/* 2026-11-01 (MASAUSTU-GENISLIK-KABUK, UX §15.62 md. 15): sütun sayısı GERÇEK içerik alanından — kart en az 300 px
   (1100 px kabukta ~800 px içerikte rahat İKİ sütun; yeni medya eşiği yok). ≤ 1000 / ≤ 700 px kuralları (aşağıda) aynen. */
.v3-team-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:14px}
.v3-team-card{border:1px solid var(--v3-line);border-radius:13px;overflow:hidden;background:#fff}
.v3-team-main{display:grid;grid-template-columns:58px 1fr auto;gap:12px;align-items:center;padding:16px;color:var(--v3-text)}
.v3-team-avatar{width:58px;height:58px;border-radius:16px;background:linear-gradient(160deg,#123e70,#0b2b50);color:#fff;display:grid;place-items:center;font-weight:900;font-size:18px;border:2px solid #efba3c}
.v3-team-main h3{margin:0 0 4px}.v3-team-main p{margin:0;color:var(--v3-muted)}
.v3-seed-badge{background:#fff3cf;color:#9c6a00;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:900}
.v3-card-actions{display:flex;align-items:center;gap:7px;border-top:1px solid var(--v3-line);padding:10px}
.v3-card-actions form{margin:0}.v3-card-actions a,.v3-card-actions button{background:#f5f8fc;color:#2a3c55;border:0;padding:8px 10px;border-radius:8px;font-size:12px}.v3-card-actions .danger{color:#c92b2b;background:#fff0f0}
.v3-player-number{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:12px;background:#0d3a69;color:#fff;font-size:22px;margin-right:8px}
.v3-player-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.v3-player-stat-card{background:#fff;border:1px solid var(--v3-line);border-radius:14px;padding:22px;text-align:center}
.v3-player-stat-card .stat{font-size:35px;font-weight:900;color:#123a68}
@media(max-width:1000px){.v3-settings-layout{grid-template-columns:1fr}.v3-settings-menu{position:static;display:flex;overflow-x:auto}.v3-settings-menu a{min-width:max-content}.v3-team-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.v3-section-head{flex-direction:column}.v3-mini-stats,.v3-team-grid,.v3-player-stat-grid{grid-template-columns:1fr}.v3-settings-menu{display:grid}.v3-team-main{grid-template-columns:52px 1fr}.v3-seed-badge{grid-column:1/-1;width:max-content}.v3-card-actions{flex-wrap:wrap}}

.v3-team-meta{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--v3-line);color:var(--v3-muted);font-size:12px}
.v3-team-edit{border-top:1px solid var(--v3-line);padding:10px 14px}
.v3-team-edit summary{cursor:pointer;font-weight:900;color:#1765c5}
.v3-team-edit form{margin-top:14px}
.v3-team-edit .danger{margin-top:10px;background:#fff0f0;color:#bd2828;border:1px solid #f2c8c8}

/* v3.0.3 tamamlanan modüller */
.v3-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:10px 0 20px}
.v3-choice-card{display:flex!important;flex-direction:column;gap:6px;border:1px solid var(--v3-line);border-radius:12px;padding:15px;background:#fff;cursor:pointer}
.v3-choice-card:has(input:checked),.v3-choice-card.selected{border-color:#1d6fd1;background:#eef6ff;box-shadow:0 0 0 2px rgba(29,111,209,.08)}
.v3-choice-card input{width:auto!important;margin:0 0 4px}.v3-choice-card small{font-weight:500;color:var(--v3-muted)}
.v3-check-stack{display:grid;gap:8px;margin-top:16px}
/* v6.173.0 — Faz 6A (§22/DS-010): filtre çipleri gerçek dokunma hedefi olur.
   Seçili durum yalnız renkle değil, kalın çerçeveyle de anlatılır. */
.v3-filter-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.v3-filter-tabs a{display:inline-flex;align-items:center;min-height:var(--tg-touch-min);padding:9px 15px;border-radius:999px;background:#fff;border:1px solid var(--v3-line);color:var(--v3-text);font-weight:800}.v3-filter-tabs a.active{background:#165fae;color:#fff;border-color:#165fae}
.v3-match-list{display:grid;gap:14px}.v3-match-card{border:1px solid var(--v3-line);border-radius:14px;background:var(--tg-surface);overflow:hidden}.v3-match-card.is-forfeit{border-color:#e4b342}
.v3-match-top,.v3-match-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 15px;background:#f8fafc;color:var(--v3-muted);font-size:12px}
.v3-match-score{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px;text-align:center;padding:22px 16px}.v3-match-score .score{font-size:26px;font-weight:900;color:#123a68}.v3-match-score .score span{color:#9aacbf}
.v3-status-badge,.v3-forfeit-tag{padding:4px 8px;border-radius:999px;font-weight:900}.v3-forfeit-tag{background:#fff0c7;color:#875d00}.v3-forfeit-note{padding:12px 15px;background:#fff9e8;border-top:1px solid #f0dfaa}
.v3-match-actions{border-top:1px solid var(--v3-line);padding:12px 15px}.v3-match-actions summary{cursor:pointer;color:#1765c5;font-weight:900}.v3-action-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:15px}
.v3-two-column{display:grid;grid-template-columns:1fr 1fr;gap:16px}.v3-standings-table td:first-child{font-weight:var(--tg-font-weight-black);color:var(--tg-color-muted)}
@media(max-width:800px){.v3-choice-grid,.v3-action-columns,.v3-two-column{grid-template-columns:1fr}.v3-match-score{grid-template-columns:1fr}.v3-match-score .score{order:-1}}

/* TurnuvaGo v4.0 */
.turnuvago-brand{padding:18px 14px!important;height:auto!important}.turnuvago-brand img{width:230px;max-width:100%;display:block}
.v4-context-links{padding:5px 14px 10px}.v4-context-links a{display:flex;align-items:center;gap:9px;border:1px solid rgba(255,255,255,.14);border-radius:10px;padding:10px 12px;color:#fff;font-weight:800;background:rgba(255,255,255,.06)}
.v4-global-shell{min-height:100vh;background:#f3f6fa}.v4-global-header{height:82px;background:#fff;border-bottom:1px solid #dbe3ec;display:flex;align-items:center;justify-content:space-between;padding:10px clamp(18px,4vw,60px);position:sticky;top:0;z-index:20}
.v4-global-logo img{width:240px;max-height:62px;object-fit:contain}.v4-global-user{display:flex;align-items:center;gap:12px}.v4-global-user span{color:#718096;font-size:12px}.v4-global-user a{padding:8px 12px;border-radius:8px;background:#eef3f8}
.v4-global-main{max-width:1480px;margin:0 auto;padding:30px clamp(18px,4vw,56px) 60px}.v4-dashboard-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:22px}.v4-dashboard-head h1{font-size:36px;margin:4px 0 7px}.v4-dashboard-head p{margin:0;color:#6b7b8f}.v4-head-actions{display:flex;gap:10px;flex-wrap:wrap}
.v4-search-row{display:grid;grid-template-columns:1fr auto;gap:10px;background:#fff;border:1px solid #dae3ed;border-radius:13px;padding:10px;margin-bottom:16px}.v4-search-row input{border:0;background:#f7f9fc}.v4-search-row button{border:0;border-radius:9px;background:#123d6d;color:#fff;padding:0 20px;font-weight:900}
.v4-tournament-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.v4-tournament-card{background:#fff;border:1px solid #dce4ed;border-radius:16px;padding:18px;box-shadow:0 7px 24px rgba(31,56,82,.05)}.v4-tournament-card.demo{border-color:#e8bd4a;background:linear-gradient(180deg,#fffdf5,#fff)}
.v4-card-top{display:flex;justify-content:space-between;align-items:flex-start}.v4-tournament-emblem{width:54px;height:54px;border-radius:14px;background:#123e70;color:#fff;border:2px solid #e9b844;display:grid;place-items:center;font-weight:900}.v4-card-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.v4-demo-badge,.v4-status{padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900}.v4-demo-badge{background:#fff0bd;color:#805b00}.v4-status{background:#edf2f7;color:#516273}.v4-status.status-active{background:#e5f8ec;color:#197443}.v4-status.status-completed{background:#e9f0ff;color:#245caa}.v4-status.status-archived{background:#eceef1;color:#5e6570}
.v4-tournament-card h2{margin:16px 0 5px;font-size:20px}.v4-tournament-card>p{margin:0;color:#718096}.v4-card-stats{display:flex;gap:18px;margin:17px 0;color:#6d7d90}.v4-card-stats strong{color:#173b63}.v4-open-button{display:flex;justify-content:center;background:#145fae;color:#fff;border-radius:10px;padding:11px;font-weight:900}
.v4-card-menu{margin-top:10px}.v4-card-menu summary{text-align:center;color:#1765c5;font-weight:800;cursor:pointer}.v4-card-menu>div{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin-top:10px}.v4-card-menu form{margin:0}.v4-card-menu button{width:100%;border:0;border-radius:8px;padding:8px;background:#f1f5f9}.v4-card-menu button.danger{background:#fff0f0;color:#bd2828}
.v4-dialog{border:0;border-radius:17px;padding:0;width:min(560px,92vw);box-shadow:0 30px 80px rgba(0,0,0,.25)}.v4-dialog::backdrop{background:rgba(8,25,43,.58)}.v4-dialog form{padding:22px}.v4-dialog-head{display:flex;justify-content:space-between;gap:20px}.v4-dialog-head h2{margin:0}.v4-dialog-head p{color:#718096}.v4-dialog-head button{border:0;background:none;font-size:30px}
.v4-simulation-form{display:grid;gap:16px}.v4-simulation-form .v3-panel-heading>span{font-size:20px;font-weight:900}.v4-feature-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:18px 0}.v4-feature-grid span{padding:11px;border-radius:9px;background:#f5f8fc;color:#2e4a68;font-weight:800}.v4-sim-summary{text-align:center}
.v4-upgrade{background:#f3f6fa}.v4-upgrade .card{max-width:650px;margin:auto;text-align:center}
@media(max-width:1050px){.v4-tournament-grid{grid-template-columns:repeat(2,1fr)}.v4-feature-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.v4-global-header{height:auto;align-items:flex-start}.v4-global-logo img{width:190px}.v4-global-user span,.v4-global-user strong{display:none}.v4-dashboard-head{flex-direction:column}.v4-head-actions{width:100%}.v4-head-actions>*{flex:1}.v4-tournament-grid{grid-template-columns:1fr}.v4-feature-grid{grid-template-columns:1fr}.v4-global-main{padding-top:20px}.v4-dashboard-head h1{font-size:29px}}

/* TurnuvaGo v4.0.2 — sol menü logo ve hizalama düzeltmesi */
.turnuvago-brand{
    min-height:74px;
    height:74px;
    padding:8px 10px 12px!important;
    justify-content:flex-start;
    overflow:hidden;
}
.turnuvago-brand img{
    display:block;
    width:auto!important;
    max-width:230px!important;
    height:58px!important;
    max-height:58px!important;
    object-fit:contain;
    object-position:left center;
}
.v4-context-links{
    padding-top:10px;
}
.v3-sidebar-nav{
    padding-top:8px;
}

/* TurnuvaGo v4.0.3 — authoritative compact sidebar brand */
.v3-sidebar .turnuvago-brand{
    box-sizing:border-box!important;
    display:flex!important;
    align-items:center!important;
    gap:10px!important;
    width:100%!important;
    height:72px!important;
    min-height:72px!important;
    max-height:72px!important;
    margin:0!important;
    padding:5px 8px 12px!important;
    overflow:hidden!important;
    border-bottom:1px solid rgba(255,255,255,.12)!important;
}
.v3-sidebar .turnuvago-brand-icon{
    display:block!important;
    flex:0 0 48px!important;
    width:48px!important;
    height:48px!important;
    min-width:48px!important;
    max-width:48px!important;
    min-height:48px!important;
    max-height:48px!important;
    object-fit:contain!important;
    margin:0!important;
}
.v3-sidebar .turnuvago-brand-copy{
    display:block!important;
    min-width:0!important;
    line-height:1.05!important;
}
.v3-sidebar .turnuvago-brand-copy strong{
    display:block!important;
    color:#fff!important;
    font-size:23px!important;
    line-height:1!important;
    letter-spacing:-.4px!important;
    white-space:nowrap!important;
}
.v3-sidebar .turnuvago-brand-copy strong span{
    color:#f3b62d!important;
}
.v3-sidebar .turnuvago-brand-copy small{
    display:block!important;
    margin-top:5px!important;
    color:#c8d7e6!important;
    font-size:10px!important;
    font-weight:800!important;
    letter-spacing:.45px!important;
    text-transform:uppercase!important;
    white-space:nowrap!important;
}
.v3-sidebar .v4-context-links{
    padding:10px 8px 4px!important;
    margin:0!important;
}
.v3-sidebar .v3-sidebar-nav{
    padding-top:4px!important;
}
.v5-license{display:inline-flex;align-items:center;margin:8px 0 14px;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:800;background:#e8f7ef;color:#087f5b}.v5-license.expired,.v5-license.suspended{background:#fff0f0;color:#c92a2a}.v5-license.not_started{background:#fff7e0;color:#9c6500}

/* TurnuvaGo v5.1.0 — gerçek logo ve kompakt sol menü */
.v3-app{grid-template-columns:260px minmax(0,1fr)}
.v3-sidebar{width:260px;padding:10px 12px;overflow-y:auto}
.v3-sidebar .turnuvago-brand{height:116px!important;padding:6px 10px 10px!important;display:flex;justify-content:center;overflow:visible}
.v3-sidebar .turnuvago-full-logo{display:block;width:188px;height:100px;object-fit:contain;object-position:center}
.v4-context-links{margin-top:5px}
.v4-context-links a{padding:9px 12px!important}
.v3-sidebar-nav{padding-top:7px!important}
.v3-sidebar-nav a{font-size:14px!important;padding:9px 12px!important;margin:2px 0!important;gap:10px!important}
.v3-sidebar-nav .v3-svg-icon{width:18px;height:18px}
@media(max-width:1200px){.v3-app{grid-template-columns:248px minmax(0,1fr)}.v3-sidebar{width:248px}}
@media(max-width:760px){.v3-app{grid-template-columns:1fr}.v3-sidebar{width:260px;left:-280px}}
.team-logo-preview{width:92px;height:92px;border-radius:16px;border:1px solid var(--v3-line);object-fit:contain;background:#fff;padding:6px}
.team-profile-head{display:flex;align-items:center;gap:18px}.team-profile-head h1{margin:0}

/* v5.1.1 entity navigation hotfix */
.entity-link, .responsive-table a, .v3-team-main, .player-card > a{color:inherit;text-decoration:none;cursor:pointer}
.entity-link:hover, .responsive-table a:hover, .v3-team-main:hover h3, .player-card > a:hover strong{text-decoration:underline}
.player-card > a{display:grid;gap:5px;position:relative;z-index:2}
.v3-team-main{position:relative;z-index:2}

/* TurnuvaGo v5.2 - modern maç kartları ve canlı durum göstergeleri */
.v3-match-list{display:grid;gap:16px}
.v3-match-card{position:relative;display:grid;grid-template-columns:5px 1fr;border:1px solid #dbe4ef;border-radius:18px;background:var(--tg-surface);overflow:hidden;box-shadow:0 7px 22px rgba(17,49,85,.055);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.v3-match-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(17,49,85,.09);border-color:#c8d6e7}
.v3-match-accent{background:#f2bd32}.v3-match-card.is-live .v3-match-accent,.v3-match-card.is-halftime .v3-match-accent,.v3-match-card.is-finished .v3-match-accent{background:#25a55b}.v3-match-card.is-postponed .v3-match-accent{background:#e05252}
.v3-match-body{min-width:0}
.v3-match-top{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px 5px;background:transparent;border:0}
.v3-match-context{display:flex;align-items:center;gap:0;flex-wrap:wrap;color:#63758b;font-size:13px}
.v3-match-context span+span:before{content:"•";display:inline-block;margin:0 7px;color:#9bacbf}
.v3-match-state{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:5px 10px;border-radius:999px;font-size:13px;font-weight:750;white-space:nowrap;background:#fff8e2;color:#8d6700}
.v3-match-dot{width:11px;height:11px;border-radius:50%;background:#f2bd32;box-shadow:0 0 0 4px rgba(242,189,50,.14);flex:0 0 auto}
.v3-match-state.is-live,.v3-match-state.is-halftime,.v3-match-state.is-finished{background:#eaf8f0;color:#187540}.v3-match-state.is-live .v3-match-dot,.v3-match-state.is-halftime .v3-match-dot,.v3-match-state.is-finished .v3-match-dot{background:#25a55b;box-shadow:0 0 0 4px rgba(37,165,91,.14)}
.v3-match-state.is-postponed{background:#fff0f0;color:#a52f2f}.v3-match-state.is-postponed .v3-match-dot{background:#e05252;box-shadow:0 0 0 4px rgba(224,82,82,.14)}
.v3-match-state.is-live .v3-match-dot,.v3-match-state.is-countdown .v3-match-dot{animation:v3MatchPulse 1.25s ease-in-out infinite}
@keyframes v3MatchPulse{0%,100%{opacity:1;transform:scale(1);box-shadow:0 0 0 4px rgba(37,165,91,.14)}50%{opacity:.35;transform:scale(.82);box-shadow:0 0 0 8px rgba(37,165,91,.04)}}
.v3-match-state.is-countdown .v3-match-dot{background:#f2bd32;box-shadow:0 0 0 4px rgba(242,189,50,.14)}
.v3-match-score{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:24px;text-align:center;padding:13px 22px 24px}
.v3-match-team strong{font-size:23px;line-height:1.2}.v3-match-team.home{text-align:right}.v3-match-team.away{text-align:left}
/* v6.167.0 (UX-2L-01) — "Tur Atladi" rozeti. Takim adinin ALTINDA bloklanir:
   ad 23px kalin oldugu icin yan yana konsa uzun isimde adi ezerdi. Skor
   sutununa YAZILMAZ (o sutun mobilde ~48px). */
.v3-match-team .advanced-badge{display:inline-block;margin-top:6px;font-size:11px;
  font-weight:700;padding:1px 8px;border-radius:999px;background:#e8f6ee;color:#0f7b3f;
  border:1px solid #b7e3c9;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.v3-match-score .score{min-width:106px;font-size:27px;font-weight:950;color:#102e55;letter-spacing:.4px}.v3-match-score .score span{color:#678099}.v3-match-score .score-empty{font-size:24px;letter-spacing:2px;color:#173a67}
.v3-match-card .entity-link{text-decoration:none;color:#102c50}.v3-match-card .entity-link:hover{color:#1265c4;text-decoration:underline;text-underline-offset:4px}
.v3-postponed-note{margin:0 18px 14px;padding:10px 12px;border-radius:10px;background:#fff5f5;color:#963737;font-size:13px}
.v3-match-actions{border-top:1px solid #e6edf5;padding:12px 18px}.v3-match-actions summary{display:inline-flex;align-items:center;cursor:pointer;color:#1765c5;font-weight:850}
@media(max-width:800px){.v3-match-top{align-items:flex-start}.v3-match-context{max-width:65%}.v3-match-score{grid-template-columns:1fr auto 1fr;gap:8px;padding:15px 10px 22px}.v3-match-team strong{font-size:16px}.v3-match-score .score,.v3-match-score .score-empty{font-size:20px;min-width:72px}.v3-match-team.home,.v3-match-team.away{text-align:center}}
@media(max-width:520px){.v3-match-top{display:grid}.v3-match-context{max-width:none}.v3-match-state{justify-self:start}.v3-match-score{grid-template-columns:1fr;gap:8px}.v3-match-team.home,.v3-match-team.away{text-align:center}.v3-match-score .score{order:0}.v3-match-team.home{order:-1}}

/* TurnuvaGo v5.3.0 - Canlı maç yönetimi */
.v3-live-open{display:flex;justify-content:center;margin:10px 0}.v3-live-open .tg-btn{text-decoration:none;padding:10px 18px}
.live-match-page{display:grid;gap:18px}.live-match-head{display:flex;justify-content:space-between;align-items:center;color:#61708a}.live-back{text-decoration:none;font-weight:800;color:#0b5ed7}

.live-dot{width:11px;height:11px;border-radius:50%;background:#39c77a;box-shadow:0 0 0 5px rgba(57,199,122,.15)}.live-dot.pulse{animation:tgPulse 1.2s infinite}
@keyframes tgPulse{50%{opacity:.35;transform:scale(.82)}}

.live-controls{display:flex;gap:10px;justify-content:center;align-items:flex-start;flex-wrap:wrap}
/* v6.315.0 — Esame yapılandırma hatası (fail-closed) kontrol şeridinde TAM satır kaplar; mobil grid (mobile-core) ve flex düzeninde aynı; bağlantı 44px dokunma hedefi. */
.live-controls .live-esame-config-error{flex:1 1 100%;grid-column:1/-1;width:100%;box-sizing:border-box;text-align:left}.live-esame-config-error p{margin:0;flex:1 1 220px}.live-esame-config-error a{display:inline-flex;align-items:center;min-height:var(--tg-touch-min,44px);padding:0 6px;font-weight:700;text-decoration:underline}.live-controls form{margin:0}.live-finish{background:#13243a;color:#fff;border:0;border-radius:12px;padding:12px 18px;font-weight:800}.live-postpone summary{cursor:pointer;background:#fff1f1;color:#bd1e2d;padding:11px 16px;border-radius:12px;font-weight:800}.live-postpone form{display:flex;gap:8px;margin-top:8px}.live-postpone input{min-width:230px}
.live-team-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.live-team-card{background:#fff;border:1px solid #dbe4ef;border-radius:18px;padding:18px}.live-team-card h2{margin:0 0 14px}.live-team-card h2 a{text-decoration:none;color:#0b2748}.event-add-form select{width:100%;margin-bottom:12px}.event-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.event-buttons button{border:0;border-radius:11px;padding:11px;background:#edf3f9;font-weight:800;cursor:pointer}.event-buttons button.red{background:#ffe8e8;color:#b41424}
.live-timeline{background:#fff;border:1px solid #dbe4ef;border-radius:18px;padding:18px}.timeline-list{display:grid}.timeline-event{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:14px 4px;border-bottom:1px dashed #dbe4ef}.timeline-event:last-child{border-bottom:0}.timeline-icon{font-size:24px;text-align:center}.timeline-main{display:grid;gap:2px}.timeline-main a{text-decoration:none;color:#0b5ed7;font-weight:800}.timeline-main span{font-size:13px;color:#66758d}.timeline-actions{display:flex;align-items:center;gap:7px}.timeline-actions summary{cursor:pointer;font-weight:700;color:#0b5ed7}.timeline-actions details form{display:flex;gap:5px;margin-top:6px}.timeline-actions input{width:85px}.timeline-actions .danger{padding:7px 10px}
@media(max-width:760px){.live-team-grid{grid-template-columns:1fr}.timeline-event{grid-template-columns:34px 1fr}.timeline-actions{grid-column:2}.event-buttons{grid-template-columns:1fr 1fr}.live-match-head{align-items:flex-start;gap:10px}.live-postpone form{flex-direction:column}.live-postpone input{min-width:0}}

/* v6.75.0 — Oyuncu Sistemi Faz F: match-live.php explicit appearance
   bölümü (maç 'finished' olduğunda görünür). */
.live-appearance-panel h2{margin:0 0 4px}
.live-appearance-panel>p{margin:0 0 16px;color:var(--v3-muted)}
.live-appearance-teams{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.live-appearance-team h3{margin:0 0 10px;font-size:15px}
.live-appearance-empty{color:var(--v3-muted);font-size:13px}
.live-appearance-squad-fallback-note{margin:0 0 10px;padding:8px 11px;border-radius:9px;background:#fff8e1;color:#8a5a00;font-size:12px}
.live-appearance-option{display:flex;align-items:center;gap:9px;padding:9px 4px;border-bottom:1px solid #edf1f5}
.live-appearance-option:last-child{border-bottom:0}
.live-appearance-option input{width:18px;height:18px;flex:0 0 auto}
.live-appearance-option span{display:flex;align-items:center;gap:8px;min-width:0}
.live-appearance-option span b{flex:0 0 auto;color:var(--v3-muted);font-weight:800}
.live-appearance-inferred-badge{margin-left:auto;padding:3px 7px;border-radius:999px;background:#eaf3ff;color:#1267dc;font-size:10px;font-weight:800;white-space:nowrap}
@media(max-width:760px){.live-appearance-teams{grid-template-columns:1fr}}

/* TurnuvaGo v5.3.5 - Minimal canlı maç yönetimi */
.live-head-right{display:flex;align-items:center;gap:12px}.live-settings{position:relative}.live-settings>summary{list-style:none;width:40px;height:40px;border:1px solid #dbe4ef;border-radius:12px;background:#fff;display:grid;place-items:center;cursor:pointer;font-size:19px}.live-settings>summary::-webkit-details-marker{display:none}.live-settings-menu{position:absolute;right:0;top:48px;z-index:30;width:min(350px,calc(100vw - 32px));max-height:75vh;overflow:auto;background:#fff;border:1px solid #dbe4ef;border-radius:16px;box-shadow:0 18px 45px rgba(15,42,72,.2);padding:14px;display:grid;gap:12px}.settings-block{display:grid;gap:8px;padding-bottom:12px;border-bottom:1px solid #e8eef5}.settings-block label{display:grid;gap:4px;font-size:12px;color:#65758b}.settings-block input{width:100%}.live-settings-menu button:not(.tg-btn):not(.public-broadcast-load){width:100%;border:0;border-radius:10px;padding:9px 11px;font-weight:800;cursor:pointer;background:#eaf2fb;color:#0d4f91}.live-settings-menu button.danger:not(.tg-btn){background:#ffe9e9;color:#b71f2e}.audit-mini summary{cursor:pointer;font-weight:800}.audit-mini div{max-height:210px;overflow:auto;margin-top:8px}.audit-mini p{margin:0;padding:7px 0;border-bottom:1px dashed #dde6f0}.live-controls{min-height:44px}.live-controls button{padding:10px 16px;border-radius:11px}.event-buttons.compact{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.event-buttons.compact button{padding:9px 5px;font-size:12px;white-space:nowrap}.event-buttons .type-goal{background:#e7f6ee;color:#157642}.event-buttons .type-yellow{background:#fff7d6;color:#8a6500}.event-buttons .type-second_yellow{background:#fff0df;color:#984a00}.event-buttons .type-red{background:#ffe8e8;color:#b41424}.team-event-list{display:grid;margin-top:12px}.team-event-row{display:grid;grid-template-columns:26px 48px minmax(0,1fr) auto;align-items:center;gap:6px;min-height:42px;border-top:1px solid #edf1f6}.team-event-row:first-child{border-top:0}.team-event-row a{color:#12355e;text-decoration:none;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-ico{text-align:center}.event-minute{font-weight:850;color:#607187}.event-row-actions{display:flex;align-items:center;gap:3px}.event-row-actions details{position:relative}.event-row-actions summary{list-style:none;cursor:pointer;color:#1b65ad;font-weight:900;padding:4px}.event-row-actions summary::-webkit-details-marker{display:none}.event-row-actions details form{position:absolute;right:0;top:28px;z-index:10;display:flex;background:#fff;border:1px solid #dbe4ef;border-radius:9px;padding:5px;box-shadow:0 8px 20px rgba(15,42,72,.15)}.event-row-actions input{width:72px}.event-row-actions button{border:0;background:#edf4fb;border-radius:7px;padding:5px 7px;font-weight:900}.event-delete{color:#bd2635!important;background:#fff0f0!important}.event-empty{margin:10px 0 0;color:#8a98aa;font-size:13px}.event-modal[hidden]{display:none}.event-modal{position:fixed;inset:0;z-index:1000;background:rgba(4,18,34,.55);display:grid;place-items:center;padding:16px}.event-modal-card{position:relative;width:min(460px,100%);max-height:82vh;overflow:auto;background:var(--tg-surface);border-radius:18px;padding:18px;box-shadow:0 25px 70px rgba(0,0,0,.28)}.event-modal-card h3{margin:0 36px 14px 0}.modal-close{position:absolute;right:12px;top:10px;border:0;background:#eef3f8;width:34px;height:34px;border-radius:50%;font-size:22px;cursor:pointer}.player-choice-list{display:grid;gap:7px}.player-choice-list button{display:grid;grid-template-columns:42px 1fr;text-align:left;align-items:center;border:1px solid #dbe4ef;background:#fff;border-radius:11px;padding:10px;cursor:pointer}.player-choice-list button:hover{background:#f4f8fc}.player-choice-list b{font-size:16px;color:#0c5ab6}.modal-open{overflow:hidden}
@media(max-width:760px){.live-match-page{gap:12px}.live-controls{justify-content:stretch}.live-controls form{width:100%}.live-controls button{width:100%}.live-team-card{padding:13px;border-radius:15px}.live-team-card h2{font-size:18px;margin-bottom:10px}.event-buttons.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.event-buttons.compact button{font-size:11px;padding:9px 2px}.team-event-row{grid-template-columns:24px 44px minmax(0,1fr) auto}.live-head-right>span{display:none}.live-settings-menu{position:fixed;right:12px;top:72px}}
@media(max-width:390px){.event-buttons.compact button{font-size:0}.event-buttons.compact button::first-letter{font-size:17px}.team-event-row{font-size:13px}}

/* TurnuvaGo v5.3.6 - Oyuncu seçim penceresi görünürlük düzeltmesi */
.player-choice-list button span{
  display:block;
  min-width:0;
  color:#0b2748;
  font-size:14px;
  font-weight:750;
  line-height:1.25;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.player-choice-list button b{
  display:block;
  color:#0c5ab6;
}

/* TurnuvaGo v5.3.7 - olay seçim güvenliği ve kendi kalesine gol */
.player-choice-list[hidden], .goal-mode-switch[hidden], .eligible-empty[hidden]{display:none!important}
.goal-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:0 0 12px}
.goal-mode-switch button{border:1px solid #dbe4ef;background:#f4f7fb;color:#42546a;border-radius:10px;padding:9px;font-weight:800;cursor:pointer}
.goal-mode-switch button.active{background:#0c5ab6;color:#fff;border-color:#0c5ab6}
.eligible-empty{margin:12px 0 2px;padding:12px;border-radius:10px;background:#fff7d6;color:#795b00;font-size:13px;font-weight:700;text-align:center}

/* v5.3.8 — kadrosuz olay girişi ve mobil canlı maç düzeni */
.manual-event-name{font-weight:750;color:#12355e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.empty-name{min-width:1px}.manual-entry{margin-top:12px;padding-top:12px;border-top:1px solid #e4ebf3;display:grid;gap:7px}.manual-entry>span{font-size:12px;color:#66778c}.manual-entry-fields{display:grid;gap:7px}.manual-entry-fields[hidden]{display:none}.manual-entry input{min-width:0;width:100%;height:44px;border:1px solid #d4dfeb;border-radius:10px;padding:0 11px}.manual-entry-actions{display:grid}.manual-entry-actions button{border:0;border-radius:10px;min-height:44px;padding:0 15px;background:#0b62c7;color:#fff;font-weight:850}.manual-entry-toggle{justify-self:start;display:inline-flex;align-items:center;min-height:44px;padding:0 2px;border:0;background:none;color:#0b62c7;font-size:13px;font-weight:750;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.manual-entry-toggle.is-open{text-decoration:none;color:#66778c}.manual-entry small{color:#8795a7}.eligible-empty{padding:12px;border-radius:10px;background:#fff4df;color:#825600;font-size:13px}.goal-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}.goal-mode-switch button{border:1px solid #d7e1ec;background:#f6f8fb;border-radius:10px;padding:9px;font-weight:800}.goal-mode-switch button.active{background:#0b62c7;border-color:#0b62c7;color:#fff}
@media(max-width:760px){
 .v3-page{padding:8px!important}.live-match-page{gap:9px}.live-match-head{min-height:42px;align-items:center}.live-back{font-size:14px}.live-settings>summary{width:38px;height:38px}
 
 .live-controls{display:block;min-height:0}.live-controls form{width:100%}.live-controls button{min-height:44px;width:100%;padding:9px 12px}
 .live-team-grid{gap:9px}.live-team-card{padding:11px 10px;border-radius:13px}.live-team-card h2{font-size:17px;margin:0 0 9px}.event-buttons.compact{gap:4px}.event-buttons.compact button{min-width:0;min-height:42px;padding:5px 2px;font-size:10.5px;line-height:1.05;border-radius:9px;white-space:normal}
 .team-event-list{margin-top:7px}.team-event-row{grid-template-columns:22px 36px minmax(0,1fr) 50px;gap:3px;min-height:38px;font-size:13px}.event-minute{font-size:12px}.event-row-actions{justify-content:flex-end}.event-row-actions summary,.event-row-actions button{min-width:23px;padding:4px}
 .event-modal{padding:0;place-items:end center}.event-modal-card{width:100%;max-height:88dvh;border-radius:18px 18px 0 0;padding:16px 12px calc(16px + env(safe-area-inset-bottom));overflow:auto}.event-modal-card h3{font-size:18px;margin-bottom:10px}.player-choice-list{gap:5px}.player-choice-list button{min-height:44px;padding:8px;grid-template-columns:36px 1fr}.player-choice-list b{font-size:14px}.manual-entry-fields{grid-template-columns:1fr}.manual-entry-actions button{min-height:44px}.modal-close{position:sticky;float:right;top:0;z-index:2}
 .live-settings-menu{left:8px;right:8px;top:auto;bottom:8px;width:auto;max-height:80dvh;border-radius:16px}.settings-block input{min-height:42px}
}
@media(max-width:360px){.event-buttons.compact button{font-size:10px}.team-event-row{grid-template-columns:20px 34px minmax(0,1fr) 46px}}

/* TurnuvaGo v5.4.0 — üç modlu kura ve sunum ekranı */
.draw-section-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.draw-section-title h2{margin:0}.draw-section-title p{margin:4px 0 0}.draw-locked-title{display:block}.draw-locked-reason{margin:4px 0 0}.draw-pool-reopen{display:flex;flex-direction:column;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid #e3e9f1}.draw-pool-reopen .tg-note{margin:0}.draw-pool-reopen-form{display:flex}.draw-pool-reopen-reason{margin:0;color:#785700;font-size:13px}.draw-mode-number{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#eaf3ff;color:#0b62c7;font-weight:900}.draw-delay-label{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:13px;color:#68798d}.draw-delay-label strong{color:#16385e}.draw-delay-range{width:100%;accent-color:#0b62c7}.draw-range-marks{display:flex;justify-content:space-between;font-size:11px;color:#8796a8;margin-top:-7px}.draw-key-hint{padding:9px 10px;border-radius:9px;background:#f2f6fa;color:#53667d;font-size:13px}.draw-key-hint kbd{border:1px solid #cbd7e4;border-bottom-width:2px;border-radius:5px;background:#fff;padding:2px 6px;font-family:inherit}.draw-presentation[hidden]{display:none!important}.draw-presentation{position:fixed;inset:0;z-index:3000;display:grid;grid-template-rows:auto 1fr auto;background:#07182c;color:#fff}.draw-presentation-open{overflow:hidden}.draw-presentation-head,.draw-presentation-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px clamp(14px,3vw,36px);background:rgba(3,16,31,.92);border-color:rgba(255,255,255,.12)}.draw-presentation-head{border-bottom:1px solid rgba(255,255,255,.12)}.draw-presentation-head>div:first-child{display:flex;align-items:center;gap:12px}.draw-presentation-head span{color:#7fbaff;font-weight:900;letter-spacing:.12em}.draw-presentation-head strong{font-size:18px}.draw-presentation-actions{display:flex;gap:8px}.draw-presentation-actions button,.draw-presentation-footer button{border:1px solid rgba(255,255,255,.2);border-radius:9px;padding:9px 13px;background:rgba(255,255,255,.09);color:#fff;font-weight:800;cursor:pointer}.draw-presentation-actions .danger{color:#ffd3d7}.draw-presentation-footer{border-top:1px solid rgba(255,255,255,.12)}.draw-presentation-footer button{background:#1474db;border-color:#1474db}.draw-presentation-main{min-height:0;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:clamp(16px,3vw,42px);padding:clamp(18px,4vw,52px);overflow:auto}.draw-stage{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px}.draw-stage-meta{width:min(650px,100%);display:flex;justify-content:space-between;margin-bottom:12px;color:#a9c0db}.draw-spinner-card{width:min(650px,100%);min-height:350px;border:1px solid rgba(255,255,255,.17);border-radius:28px;background:linear-gradient(145deg,rgba(255,255,255,.09),rgba(255,255,255,.025));display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;transition:.3s ease}.draw-spinner-card.is-revealed{border-color:#66adff;background:rgba(20,116,219,.23);transform:scale(1.02)}.draw-logo{width:130px;height:130px;border-radius:50%;background:#fff;display:grid;place-items:center;overflow:hidden;color:#0b4f98;font-size:38px;font-weight:950;box-shadow:0 16px 42px rgba(0,0,0,.25)}.draw-logo img{width:100%;height:100%;object-fit:contain;padding:10px}.draw-spinning-name{margin-top:22px;font-size:clamp(25px,4vw,48px);font-weight:950;line-height:1.1}.draw-reveal-group{min-height:30px;margin-top:12px;color:#79b9ff;font-size:21px;font-weight:900}.draw-countdown{height:36px;margin-top:12px;color:#ffe39a;font-size:24px;font-weight:950}.draw-select-button{margin-top:10px;min-width:220px;border:0;border-radius:13px;padding:14px 22px;background:#1474db;color:#fff;font-size:17px;font-weight:900;cursor:pointer}.draw-help{color:#9fb2c8}.draw-live-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start}.draw-live-groups section{border:1px solid rgba(255,255,255,.14);border-radius:15px;background:rgba(255,255,255,.055);overflow:hidden}.draw-live-groups h3{display:flex;justify-content:space-between;margin:0;padding:12px 13px;border-bottom:1px solid rgba(255,255,255,.12);font-size:15px}.draw-live-groups h3 span{color:#75b7ff}.draw-live-groups section>div{padding:5px 10px;min-height:52px}.draw-live-groups p{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:8px;margin:0;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.08)}.draw-live-groups p:last-child{border-bottom:0}.draw-live-groups img,.draw-live-groups i{width:28px;height:28px;border-radius:50%;background:#fff;object-fit:contain;display:grid;place-items:center;color:#0b4f98;font-style:normal;font-size:10px;font-weight:900}.draw-live-groups b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.draw-live-groups em{display:block;padding:11px 2px;color:#8195ac;font-size:12px}.group-grid .v3-empty-state{grid-column:1/-1}
@media(max-width:900px){.draw-presentation-main{grid-template-columns:1fr}.draw-stage{min-height:auto}.draw-live-groups{grid-template-columns:repeat(2,minmax(0,1fr))}.draw-spinner-card{min-height:280px}.draw-logo{width:100px;height:100px}.draw-presentation-main{padding:16px}}
@media(max-width:620px){.draw-presentation-head{align-items:flex-start}.draw-presentation-head>div:first-child{display:grid;gap:2px}.draw-presentation-head strong{font-size:14px}.draw-presentation-actions button{padding:7px 9px;font-size:12px}.draw-presentation-main{gap:14px}.draw-spinner-card{min-height:235px;border-radius:20px;padding:18px}.draw-logo{width:82px;height:82px;font-size:27px}.draw-spinning-name{font-size:25px;margin-top:15px}.draw-reveal-group{font-size:18px}.draw-live-groups{grid-template-columns:1fr}.draw-presentation-footer{font-size:12px}.draw-presentation-footer button{padding:8px 10px}.draw-select-button{min-width:180px}.draw-help{text-align:center;font-size:12px}}

/* v5.5.0 Üyelik sistemi */
.member-auth-card{max-width:820px;margin:0 auto}.member-intro{margin-top:-4px}.member-form label{display:block;font-weight:700;margin-bottom:7px}.member-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.member-grid input{width:100%;min-width:0}.member-form-note{font-size:13px;line-height:1.5;color:#66788c;background:#f4f7fb;border:1px solid #dfe7f0;border-radius:10px;padding:12px 14px;margin:18px 0}.member-submit{border:0;border-radius:10px;background:#0c2744;color:#fff;padding:13px 20px;font-weight:800;cursor:pointer}.member-login-link{margin:20px 0 0}.member-profile-layout{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(0,1.5fr);gap:22px}.member-summary-card{align-self:start}.member-number-label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:#6d7d8f;font-weight:800}.member-number{display:block;font-size:27px;margin:5px 0 20px;color:#155e9b}.member-summary-card h2{font-size:24px;margin:0 0 12px;letter-spacing:-.4px}.email-status-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:18px}.email-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800}.email-badge.verified{background:#e8f7ee;color:#16733b}.email-badge.unverified{background:#fff3d8;color:#8a5a00}.member-admin-card{padding:0;overflow:hidden}.member-admin-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px}.member-admin-head h2{margin:0 0 5px;font-size:23px}.member-count{background:#eef4fa;border-radius:999px;padding:7px 11px;font-weight:800;color:#155e9b}.member-table-wrap{overflow-x:auto}.member-table{min-width:1050px;margin:0}.member-table th,.member-table td{vertical-align:top}.member-no-mini{display:inline-block;margin-top:5px;padding:3px 7px;border-radius:6px;background:#eef4fa;color:#155e9b;font-size:12px;font-weight:800}.member-access-form{display:grid;gap:7px;min-width:175px}.member-access-form select{width:100%}.member-save-small{padding:9px 13px;white-space:nowrap}.update-card{max-width:720px;margin:0 auto}.update-success h2,.update-card h2{margin-top:0}.inline-button{display:inline-block;text-decoration:none}
@media(max-width:760px){.member-grid,.member-profile-layout{grid-template-columns:1fr}.member-auth-card,.member-profile-form-card,.member-summary-card{padding:18px}.member-admin-card{padding:0}.member-admin-head{align-items:flex-start;padding:18px}.member-table-wrap{overflow:visible}.member-table{min-width:0;display:block}.member-table thead{display:none}.member-table tbody,.member-table tr,.member-table td{display:block;width:100%}.member-table tr{padding:16px 18px;border-top:1px solid #e4eaf1}.member-table td{border:0!important;padding:6px 0 6px 112px;position:relative;min-height:31px}.member-table td:before{content:attr(data-label);position:absolute;left:0;top:7px;width:100px;color:#718196;font-size:12px;font-weight:800}.member-access-form{min-width:0}.member-save-small{width:100%}}

/* TurnuvaGo v6.4 - Kompakt takım profili */
.v3-team-summary-panel{padding:16px 18px;display:grid;gap:14px}.v3-team-summary-top{display:flex;align-items:center;justify-content:space-between;gap:16px}.v3-team-manager-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:4px}.v3-team-manager-line span{font-size:12px;color:#66758d;background:#f1f5f9;border-radius:999px;padding:4px 8px}.v3-compact-stat-row{display:grid;grid-template-columns:repeat(11,minmax(58px,1fr));border:1px solid #dfe7f0;border-radius:14px;overflow:hidden;background:#fff}.v3-compact-stat-row>div{min-width:0;text-align:center;padding:9px 5px;border-right:1px solid #e7edf4}.v3-compact-stat-row>div:last-child{border-right:0}.v3-compact-stat-row span{display:block;font-size:11px;font-weight:900;color:#64748b}.v3-compact-stat-row strong{display:block;font-size:18px;line-height:1.25;color:#102e55}.v3-compact-stat-row small{display:block;font-size:10px;line-height:1.15;color:#8a98aa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v3-compact-stat-row .yellow{background:#fffbea}.v3-compact-stat-row .red{background:#fff1f1}.v3-compact-stat-row .suspended{background:#f4f0ff}.v3-compact-team-form{padding-top:14px;padding-bottom:14px}.v3-compact-team-form .v3-panel-heading{margin-bottom:10px}.v3-compact-team-form form+form{margin-top:10px;padding-top:10px;border-top:1px solid #e7edf4}
@media(max-width:900px){.v3-compact-stat-row{overflow-x:auto;display:flex}.v3-compact-stat-row>div{flex:0 0 68px}.v3-team-summary-top{align-items:flex-start}}
@media(max-width:560px){.v3-team-summary-panel{padding:12px}.v3-team-manager-line{display:grid;gap:4px}.v3-team-manager-line span{justify-self:start}.v3-compact-stat-row>div{flex-basis:62px;padding:8px 3px}.v3-compact-stat-row strong{font-size:16px}.team-profile-head{align-items:center}.team-logo-preview{width:58px;height:58px}}

/* TurnuvaGo v6.5 - Team profile redesign */
/* TurnuvaGo v6.191.0 — TAKIM DETAYI (UXA-189 / DS-083).
   Marka temalı hero + masaüstünde sol kadro / sağ gerçek sekmeler, mobilde
   tek sütun gerçek sekmeler. Yüzey renkleri SEMANTİK TOKEN'dan gelir; takımın
   kendi rengi (--team-primary/--team-secondary) yalnız amblemde kalır.
   Eski accordion/stat-strip/bilgi-kartı düzeni KALDIRILDI. */
.tg-team-page{display:grid;gap:var(--tg-space-4)}

/* ── Hero ───────────────────────────────────────────────────────────── */
/* PD-UX13 — takım detayının hero'su, sayfa özet başlığıyla AYNI canonical
   context-surface ailesini kullanır (tokens.css). Bileşen ayrı kalır —
   işlevleri farklıdır — ama "benzer ama farklı mavi" ortadan kalkar:
   ayrı gradient/hex burada TANIMLANMAZ. */
.team-hero{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-4);padding:var(--tg-space-4);border:1px solid var(--tg-surface-context-border);border-radius:var(--tg-radius-lg);background:var(--tg-surface-context);color:var(--tg-surface-context-text);box-shadow:var(--tg-shadow-card)}
.team-hero-brand{display:flex;align-items:center;gap:var(--tg-space-4);min-width:0}
.team-hero-logo{width:64px;height:64px;flex:0 0 64px;border-radius:var(--tg-radius-lg);background:var(--tg-surface);border:3px solid var(--tg-surface-context-line);object-fit:contain}
.team-hero-title{min-width:0}
.team-hero-name{display:flex;align-items:center;gap:var(--tg-space-3);flex-wrap:wrap}
.team-hero-name h1{margin:0;color:inherit;font-size:var(--tg-font-2xl);line-height:1.15;overflow-wrap:anywhere}
.team-hero-meta{display:flex;flex-wrap:wrap;gap:var(--tg-space-2);margin-top:var(--tg-space-2)}
.team-hero-meta span{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--tg-radius-pill);background:var(--tg-surface-context-soft);border:1px solid var(--tg-surface-context-line);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.team-hero-actions{display:flex;flex-wrap:wrap;gap:var(--tg-space-2);justify-content:flex-end}
/* v6.379.0 — Takım sayfası "Kadro PDF": kuyruk formu butonla aynı satırda; durum rozeti yanında. */
.team-roster-export-form{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2);margin:0}
.team-hero-action{background:var(--tg-brand-primary-text);color:var(--tg-brand-primary)}
.team-hero-action:hover{background:color-mix(in srgb,var(--tg-brand-primary-text) 88%,var(--tg-brand-primary))}
/* Hero durum rozeti canonical `.tg-status` ailesindedir (DS-086) — ayrı `.tg-status-pill` sınıfı EMEKLİ. */

/* ── Düzen: mobil tek sütun · masaüstü sol kadro + sağ sekmeler ─────── */
.team-detail-layout{display:grid;gap:var(--tg-space-3);min-width:0}
.team-squad-col,.team-tab-col{display:grid;gap:var(--tg-space-3);min-width:0}
/* PD-59: takım sekme çubuğu canonical `.tg-tabbar` (foundation.css). */
.team-tablist{min-width:0}
/* Yalnız aktif panel görünür — JS kapalıyken de sunucudan doğru gelir. */
.team-panel{display:none;min-width:0}
.team-panel.is-active{display:block}
.team-panel:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.team-squad-block{padding:var(--tg-space-3) var(--tg-space-4) var(--tg-space-4);border-top:1px solid var(--tg-border)}
.team-squad-block h3{margin:0 0 var(--tg-space-1);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.team-squad-block>p.muted{margin:0 0 var(--tg-space-3);font-size:var(--tg-font-sm)}
.team-squad-block .v3-list-item{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-3);flex-wrap:wrap;padding:var(--tg-space-3) 0;border-top:1px solid var(--tg-border)}
.team-squad-block .v3-list-item p{margin:2px 0 0;font-size:var(--tg-font-sm)}
/* Metin taşıyan özet hücreleri (ör. "Puan tablosu: B Grubu") sayısal
   hücrelerle aynı puntoda basılmaz — kutu iki satıra bölünüp taşmasın. */
.team-panel .tg-summary-grid strong{font-size:var(--tg-font-xl);line-height:1.25;overflow-wrap:anywhere}
.team-form-line{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-3);flex-wrap:wrap;padding:0 var(--tg-space-4) var(--tg-space-2)}
.team-form-line>span{color:var(--tg-text-muted);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black)}

/* ── V2 (UXA-191): kadro açılımı · panel içi alt bölümler · disiplin ── */
.team-squad-more{display:flex;justify-content:center;padding:0 var(--tg-space-4) var(--tg-space-4)}
/* Kademeli açılımın gizli gövdesi: mobil tablo stili tbody'ye display
   verdiği için tarayıcının [hidden] varsayılanı yetmez — açık kural. */
.team-squad-col .tg-player-table tbody[hidden]{display:none}
.team-squad-more>a{width:100%;justify-content:center}
/* Panel İÇİ alt bölüm: kendi paneli olmayı hak etmeyen içerik (Gol
   Liderleri gibi) ait olduğu panelde ayrılmış bir blok olarak yaşar. */
.team-stat-subsection{padding:var(--tg-space-3) var(--tg-space-4) var(--tg-space-4);border-top:1px solid var(--tg-border)}
.team-stat-subsection h3{margin:0 0 var(--tg-space-2);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.team-subsection-link{display:inline-flex;align-items:center;min-height:var(--tg-touch-min);color:var(--tg-action-primary);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);text-decoration:none}
.team-subsection-link:hover{text-decoration:underline}
/* Forma numarası rozeti: `tg-shirt-inline` BİLEREK kullanılmaz — o rozet
   yalnız mobil tablo satırı için vardır ve masaüstünde gizlidir (orada
   Forma No kendi sütunundadır). Bu listelerde sütun YOK, rozet her
   genişlikte görünür. */
/* FORMA NUMARASI (UXA-193): düz sayı değil, okunur mavi rozet. Durum
   hapları kadar net ama oyuncu adından daha baskın DEĞİL. Renk mevcut
   aksiyon token ailesinden gelir; yeni mavi üretilmedi. */
.team-jersey-badge{display:inline-grid;place-items:center;min-width:34px;height:26px;padding:0 8px;border-radius:var(--tg-radius-pill);background:var(--tg-section-roster-soft);border:1px solid color-mix(in srgb,var(--tg-section-roster-accent) 24%,var(--tg-border));color:var(--tg-section-roster-accent);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);font-variant-numeric:tabular-nums;line-height:1}
.team-shirt-chip{display:inline-grid;place-items:center;min-width:30px;height:24px;padding:0 6px;border-radius:var(--tg-radius-sm);background:var(--tg-surface-soft);border:1px solid var(--tg-border);color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);font-variant-numeric:tabular-nums}
.tg-penalty-list .team-shirt-chip{margin-right:6px}
/* GOL LİDERLERİ (UXA-193): İstatistiklerin lila alt bölümü — Maçların
   yeşili ya da Disiplinin turuncusu KULLANILMAZ. Açık lila yüzey içinde
   sade yuvarlatılmış satırlar; kart-içinde-kart zinciri yok. */
.tg-team-page .team-scorers-block{margin:var(--tg-space-3) var(--tg-space-4) var(--tg-space-4);padding:var(--tg-space-3);border:1px solid color-mix(in srgb,var(--tg-section-statistics-accent) 22%,var(--tg-border));border-radius:var(--tg-radius-lg);background:color-mix(in srgb,var(--tg-section-statistics-soft) 62%,var(--tg-surface))}
.tg-team-page .team-scorers-block h3{color:var(--tg-section-statistics-accent)}
.team-scorer-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}
.tg-team-page .team-scorer-list li{padding:8px 11px;border-radius:var(--tg-radius-md);background:var(--tg-surface);border:1px solid color-mix(in srgb,var(--tg-section-statistics-accent) 14%,var(--tg-border))}
.team-scorer-rank{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:var(--tg-radius-pill);background:var(--tg-section-statistics-soft);border:1px solid color-mix(in srgb,var(--tg-section-statistics-accent) 26%,var(--tg-border));color:var(--tg-section-statistics-accent);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);font-variant-numeric:tabular-nums}
.tg-team-page .team-scorer-list a>strong{font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.tg-team-page .team-scorers-block .tg-score-badge{min-width:0;height:26px;padding:0 11px;background:var(--tg-section-statistics-soft);border:1px solid color-mix(in srgb,var(--tg-section-statistics-accent) 26%,var(--tg-border));color:var(--tg-section-statistics-accent);font-size:var(--tg-font-xs);white-space:nowrap}
.tg-team-page .team-scorers-block .team-subsection-link{color:var(--tg-section-statistics-accent)}
.team-scorer-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-2);min-width:0}
.team-scorer-list a{display:flex;align-items:center;gap:var(--tg-space-2);min-width:0;color:var(--tg-text);text-decoration:none}
.team-scorer-list a>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-scorer-list a:hover>strong{text-decoration:underline}
.team-discipline-body{display:grid;gap:var(--tg-space-3);padding:0 var(--tg-space-4) var(--tg-space-4)}
.team-discipline-block h3{display:flex;align-items:center;gap:var(--tg-space-2);margin:0 0 var(--tg-space-2);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
/* Yarım genişlikte paneller: boş durum ve araç çubuğu tipografisi panel
   başlığını EZMEZ — bunlar ikincil bilgidir. */
.team-discipline-block .tg-empty-compact strong{font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-bold)}
.team-discipline-block .tg-empty-compact small{font-size:var(--tg-font-sm)}
.team-tab-col .tg-panel-toolbar .tg-btn{white-space:nowrap;font-size:var(--tg-font-sm)}
.team-case-list{display:grid;gap:var(--tg-space-2)}
.team-case-list a{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-3);min-height:var(--tg-touch-min);padding:var(--tg-space-2) var(--tg-space-3);border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft);color:var(--tg-text);text-decoration:none}
.team-case-list a:hover{border-color:var(--tg-action-primary)}
.team-case-list a>span{display:grid;gap:2px;min-width:0}
.team-case-list a>span>strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-case-list a>span>small{color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.team-case-list .module-summary-badge{background:var(--tg-surface);border:1px solid var(--tg-border);color:var(--tg-text-muted)}
/* Bekleyen iş rozeti: sekmede ve alt başlıkta AYNI bileşen. */
.team-pending-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:var(--tg-radius-pill);background:var(--tg-status-danger-soft);color:var(--tg-status-danger);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black)}

/* ── Yönetim görünümü (?tab=settings) ──────────────────────────────── */
.team-settings-view{display:grid;gap:var(--tg-space-3);min-width:0}
.team-settings-head{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-3);flex-wrap:wrap}
.team-settings-head h2{margin:0;font-size:var(--tg-font-xl)}
.team-settings-head p{margin:3px 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.team-settings-card{display:grid;gap:var(--tg-space-2)}
.team-settings-card .tg-card-title{margin-bottom:var(--tg-space-2)}
.team-danger-card{border-color:color-mix(in srgb,var(--tg-status-danger) 32%,var(--tg-border))}

/* ── UX-21: kritik takım durumu aksiyonları ────────────────────────────
   Çekme/diskalifiye sportif ilerlemeyi etkiler; bölüm normal ayarlardan
   GÖRSEL OLARAK ayrışır (uyarı kenarlığı + zemin). Butonlar dar ekranda
   tam genişliğe iner: yan yana sıkışıp yanlış tıklama üretmezler. */
.tg-team-status-readonly{display:flex;align-items:center;gap:var(--tg-space-2);flex-wrap:wrap;margin:0}
.tg-team-status-readonly small{color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.tg-team-status-actions{display:grid;gap:var(--tg-space-2);margin-top:var(--tg-space-3);border-color:color-mix(in srgb,var(--tg-status-warning) 38%,var(--tg-border));background:color-mix(in srgb,var(--tg-status-warning) 5%,var(--tg-surface))}
.tg-team-status-actions-head h3{margin:0;font-size:var(--tg-font-lg)}
.tg-team-status-actions-head p{margin:3px 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.tg-team-status-current{display:flex;align-items:center;gap:var(--tg-space-2);flex-wrap:wrap;margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.tg-team-status-buttons{display:flex;gap:var(--tg-space-2);flex-wrap:wrap}
.tg-team-status-buttons .tg-btn{min-height:var(--tg-touch-min)}
.tg-team-status-dialog[hidden]{display:none}
.tg-team-status-dialog{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;padding:16px;background:rgba(3,20,37,.55)}
.tg-team-status-dialog-card{width:min(100%,460px);max-height:88vh;overflow-y:auto;border:1px solid var(--tg-border);border-radius:16px;padding:20px;background:var(--tg-surface);box-shadow:var(--tg-shadow-overlay)}
.tg-team-status-dialog-card h4{margin:0 0 8px;font-size:var(--tg-font-lg);overflow-wrap:anywhere}
.tg-team-status-dialog-card p{margin:0 0 12px;color:var(--tg-text-muted);font-size:var(--tg-font-sm);line-height:1.5}
.tg-team-status-dialog-actions{display:flex;gap:var(--tg-space-2);justify-content:flex-end;flex-wrap:wrap;margin-top:14px}
.tg-team-status-dialog-actions .tg-btn{min-height:var(--tg-touch-min)}
@media(max-width:520px){
  .tg-team-status-buttons{display:grid;grid-template-columns:1fr}
  .tg-team-status-dialog-actions{display:grid;grid-template-columns:1fr}
  /* Onay her zaman ALTTA: "Vazgeç" başparmağa daha yakın kalmaz. */
  .tg-team-status-dialog-actions [data-team-status-close]{order:2}
}
.tg-removed-list{display:grid;gap:var(--tg-space-2)}
.tg-removed-list a{display:grid;grid-template-columns:minmax(0,1fr) 20px;align-items:center;gap:2px var(--tg-space-2);min-height:var(--tg-touch-min);padding:var(--tg-space-2) var(--tg-space-3);border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft);color:var(--tg-text);text-decoration:none}
.tg-removed-list a>span{grid-column:1;grid-row:1;font-weight:var(--tg-font-weight-bold)}
.tg-removed-list a>small{grid-column:1;grid-row:2;color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.tg-removed-list a>svg{grid-column:2;grid-row:1/3;justify-self:end;color:var(--tg-text-muted)}

@media (min-width:901px){
  /* `grid-template-rows:auto 1fr` ZORUNLU: kadro kolonu iki satırı birden
     kapladığı için fazla yükseklik SEKME satırına dağılır ve paneller
     aşağı itilirdi. Fazlalık artık panel satırına gider. */
  /* v6.193.0 (UXA-191): kolonlar ~50/50. Kadro artık 400px'lik dar bir
     şerit değil, sayfanın eşit yarısıdır — sütunlar sıkışmadan sığar. */
  /* v6.216.0 — PL-A5: Oyuncusuz turnuvada kadro kolonu YOK — tek içerik kolonu, boş sol kolon bırakılmaz. */
  .team-detail-layout.is-no-squad{grid-template-columns:minmax(0,1fr);grid-template-areas:"tabs" "panels"}
  .team-detail-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"squad tabs" "squad panels";align-items:start;column-gap:var(--tg-space-4)}
  .team-tablist{grid-area:tabs}
  .team-squad-col{grid-area:squad}
  .team-tab-col{grid-area:panels}
  /* Kadro masaüstünde SABİT sol kolondadır; sekme düğmesi gizlenir. */
  .team-tab[data-team-tab="players"]{display:none}
  .team-squad-col .team-panel{display:block}
  /* Mobil varsayılanı (Oyuncular) masaüstünde sağ kolonu boş bırakamaz:
     canonical masaüstü varsayılanı Maçlar'dır (JS kapalıyken de doğru). */
  .team-detail-layout.is-players-active .team-tab-col .team-panel[data-team-panel="matches"]{display:block}
  /* Masaüstü varsayılanı Maçlar: seçili görünüm foundation.css ortak seçili bildirimiyle
     BİREBİR AYNI (SEKME-TEMA-YONETIMI — seçilen görünüm burada da geçerli; eşlik testle kilitli). */
  .team-detail-layout.is-players-active .tg-tabbar>.team-tab[data-team-tab="matches"]{border:none;
    background:linear-gradient(var(--tg-tab-active-line),var(--tg-tab-active-line)) center var(--tg-tab-active-line-position)/calc(100% - 2 * var(--tg-tab-padding-x)) var(--tg-tab-active-line-width) no-repeat,var(--tg-tab-active-bg);
    box-shadow:inset 0 0 0 1px var(--tg-tab-active-border),inset 0 0 0 2px var(--tg-tab-active-border-strong),0 4px 14px var(--tg-tab-active-elevation);
    color:var(--tg-tab-active-text);font-weight:var(--tg-font-weight-bold)}
  .team-detail-layout.is-players-active .tg-tabbar>.team-tab[data-team-tab="matches"]:focus-visible{outline-color:var(--tg-tab-active-focus)}
  /* Kadro sütunları: Forma No · Ad Soyad · Sarı · Kırmızı · Durum (+ ok).
     İlk sütun ARTIK forma numarasıdır (eski satır indeksi sütunu markup'tan
     kalktı), bu yüzden gizlenmez; yalnız dar sayısal sütunlar sıkıştırılır. */
  .team-squad-col .tg-player-table th,.team-squad-col .tg-player-table td{padding-left:8px;padding-right:8px;font-size:var(--tg-font-sm)}
  .team-squad-col .tg-player-table .tg-squad-shirt,.team-squad-col .tg-player-table .tg-mobile-metric{text-align:center;font-variant-numeric:tabular-nums}
  /* Ad Soyad ESNEK sütundur: sayısal sütunlar içeriğine göre daralır,
     artan genişliği isim alır (aksi halde 1024px'te isim forma no'dan
     dar kalıyordu — ölçülmüş regresyon). */
  .team-squad-col .tg-player-table th:first-child{width:56px}
  .team-squad-col .tg-player-table th:nth-child(2){width:99%}
  .team-squad-col .tg-player-table th:nth-child(3),.team-squad-col .tg-player-table th:nth-child(4){width:48px}
  .team-squad-panel .tg-panel-toolbar{align-items:flex-start;flex-wrap:wrap;gap:var(--tg-space-2)}
  /* Özet kutuları artık YARIM sayfaya sığmak zorunda: sütun sayısı
     viewport'a değil GERÇEK kolon genişliğine göre belirlenir (1366'da
     6 sabit sütun panelden taşıyordu — ölçülmüş regresyon). */
  .team-tab-col .tg-summary-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
}
@media (min-width:901px) and (max-width:1199px){
  /* Bu bantta yarım kolon ~350px: beş sütun sığdırılınca Ad Soyad
     okunamayacak kadar daralıyor. Kart sayaçları düşürülür (veri kaybı
     YOK — oyuncu profilinde ve İstatistikler panelinde duruyor), isim
     sütunu nefes alır. */
  .team-squad-col .tg-player-table th:nth-child(3),.team-squad-col .tg-player-table td:nth-child(3),
  .team-squad-col .tg-player-table th:nth-child(4),.team-squad-col .tg-player-table td:nth-child(4){display:none}
}
@media (max-width:760px){
  .tg-team-page{gap:var(--tg-space-2)}
  .team-hero{flex-direction:column;align-items:stretch;gap:var(--tg-space-3);padding:var(--tg-space-3);border-radius:var(--tg-radius-md)}
  .team-hero-brand{gap:var(--tg-space-3)}
  .team-hero-logo{width:58px;height:58px;flex-basis:58px;border-width:2px;border-radius:var(--tg-radius-md)}
  .team-hero-name h1{font-size:var(--tg-font-xl)}
  .team-hero-actions{justify-content:stretch}
  /* PD-59: kimlik başlığı ile sekme çubuğu arası 16px (sayfa satır aralığı mobilde 8px). */
  .tg-team-page>.team-detail-layout{margin-top:calc(var(--tg-tab-section-gap) - var(--tg-space-2))}
  .team-hero-actions>a{flex:1 1 auto}
  .team-roster-export-form,.team-roster-export-form>button{flex:1 1 auto}
  .team-squad-block{padding:var(--tg-space-3) var(--tg-space-3) var(--tg-space-4)}
  .team-form-line{padding:0 var(--tg-space-3) var(--tg-space-2)}
  .team-squad-more{padding:0 var(--tg-space-3) var(--tg-space-3)}
  .team-stat-subsection{padding:var(--tg-space-3)}
  .team-discipline-body{padding:0 var(--tg-space-3) var(--tg-space-3)}
}

/* ── Takım Detayı'nın diğer ekranlarla PAYLAŞTIĞI parçalar (korunur) ── */
.tg-team-logo-fallback{position:relative;overflow:hidden;background:repeating-linear-gradient(135deg,var(--team-primary) 0 27px,var(--team-secondary) 27px 54px);display:grid;place-items:center}
.tg-team-logo-fallback:after{content:"";position:absolute;inset:10px;border:2px solid #fff8;border-radius:50%}
.tg-team-logo-fallback span{position:relative;z-index:1;background:#fff;color:#111827;border-radius:999px;padding:8px 12px;font-size:14px;font-weight:1000;box-shadow:0 3px 12px #0004;max-width:80px;overflow:hidden;text-overflow:ellipsis}
.tg-card-title{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.tg-card-title>span{width:34px;height:34px;border-radius:50%;background:#eaf3ff;color:#1765c5;display:grid;place-items:center;font-weight:900}
.tg-card-title h2{font-size:18px;margin:0}
.tg-detail-list{display:grid;gap:11px;margin:0}
.tg-detail-list>div{display:grid;gap:3px}
.tg-detail-list dt{font-size:12px;color:var(--v3-muted)}
.tg-detail-list dd{margin:0;font-weight:750}
.tg-detail-list i{display:inline-block;width:13px;height:13px;border-radius:50%;vertical-align:-1px;margin-right:5px;border:1px solid #0002}
.tg-manager-profile{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.tg-manager-avatar{width:52px;height:52px;border-radius:50%;background:#edf1f6;color:#22324a;display:grid;place-items:center;font-size:22px;font-weight:900}
.tg-manager-profile small{display:block;color:var(--v3-muted);margin-top:3px}
.tg-contact-line{padding:8px 0;color:#40516a;overflow-wrap:anywhere}
.tg-contact-line b{margin-right:6px;color:var(--tg-text-muted);font-size:var(--tg-font-xs);text-transform:uppercase;letter-spacing:.04em}
.tg-empty-compact{display:grid;gap:5px;color:var(--v3-muted)}
.tg-empty-compact strong{color:var(--v3-text)}
.tg-icon-danger{width:32px;height:32px;padding:0;border-radius:8px;background:#fff1f1;color:#c32929}
.tg-panel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 18px}
.tg-player-table{padding:0 18px 18px}
.tg-player-table table{margin:0}
.tg-logo-upload-box{margin-top:20px;padding:18px;border:1px solid #cfe0f7;border-radius:12px;background:#f3f8ff;display:grid;grid-template-columns:minmax(280px,1fr) auto auto;gap:16px;align-items:center}
.tg-logo-upload-box h3{margin:0 0 6px}
.tg-logo-upload-box p{margin:4px 0;color:#56677e;font-size:13px}
.tg-logo-upload-box form{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.tg-logo-upload-box input[type=file]{max-width:260px;margin:0}
@media(max-width:1050px){.tg-logo-upload-box{grid-template-columns:1fr}}
@media(max-width:720px){.tg-panel-toolbar{align-items:flex-start;flex-wrap:wrap}.tg-player-table{padding:0}.tg-player-table th:nth-child(1),.tg-player-table td:nth-child(1),.tg-player-table th:nth-child(3),.tg-player-table td:nth-child(3),.tg-player-table th:nth-child(4),.tg-player-table td:nth-child(4){display:none}.tg-logo-upload-box{padding:14px}.tg-logo-upload-box form{display:grid}.tg-logo-upload-box input[type=file]{max-width:100%}}

/* TurnuvaGo v6.6 - takım profili tamamlayıcı bölümler */
.tg-section-panel{padding:0;scroll-margin-top:84px}.tg-section-panel .tg-panel-toolbar>div{display:grid;gap:3px}.tg-section-panel .tg-panel-toolbar small{color:var(--v3-muted);font-weight:500}.tg-summary-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;padding:0 18px 18px}.tg-summary-grid>div{padding:16px;border:1px solid var(--v3-line);border-radius:12px;background:#f8fafc;display:grid;gap:6px}.tg-summary-grid span{font-size:12px;color:var(--v3-muted);font-weight:700}.tg-summary-grid strong{font-size:23px;color:var(--v3-text)}.tg-score-badge{display:inline-grid;place-items:center;min-width:34px;height:30px;padding:0 9px;border-radius:999px;background:#eaf3ff;color:#1267dc;font-weight:1000}.tg-section-panel>.responsive-table{padding:0 18px 18px}.tg-penalty-list{display:grid;gap:9px}.tg-penalty-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--v3-line);border-radius:10px;background:#fbfcfe}.tg-penalty-list span{display:grid;gap:3px;min-width:0}.tg-penalty-list small{color:var(--v3-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tg-penalty-list b{white-space:nowrap;color:#b92222}.badge.yellow{background:#fff2b8;color:#7a5a00}
@media(max-width:1050px){.tg-summary-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.tg-summary-grid{grid-template-columns:repeat(2,1fr);padding:0 12px 12px;gap:8px}.tg-summary-grid>div{padding:13px}.tg-summary-grid strong{font-size:20px}.tg-section-panel>.responsive-table{padding:0}.tg-section-panel .tg-panel-toolbar{padding:14px 12px}}
@media(max-width:420px){.tg-summary-grid{grid-template-columns:1fr 1fr}}

/* v6.7 - Sade oyuncu profili */
.player-profile-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px}.player-identity{display:flex;align-items:center;gap:16px;min-width:0}.player-avatar{width:76px;height:76px;border-radius:22px;display:grid;place-items:center;flex:0 0 76px;overflow:hidden;background:var(--player-avatar-bg,var(--tg-brand-primary));box-shadow:var(--tg-shadow-card);border:4px solid var(--tg-surface)}.player-avatar img{width:100%;height:100%;object-fit:cover}.player-avatar span{font-size:28px;font-weight:900;color:var(--player-avatar-text,var(--tg-brand-primary-text))}.player-team-link{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.player-profile-head h1{font-size:28px;line-height:1.1;margin:0;color:#10233d}.player-profile-head h1 small{font-size:17px;color:#65748a;font-weight:800}.player-profile-head p{margin:7px 0 0;color:#68778d}.player-status{margin-left:7px}.player-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--tg-space-2);position:relative}.player-head-actions .tg-btn-icon{border-radius:var(--tg-radius-md)}.player-more-button{font-size:22px;line-height:1}.player-action-menu{display:none;position:absolute;right:0;top:48px;z-index:20;background:#fff;border:1px solid var(--v3-line);border-radius:12px;box-shadow:0 14px 35px rgba(15,31,52,.14);padding:6px;min-width:175px}.player-action-menu.open{display:block}.player-action-menu button{width:100%;border:0;background:transparent;text-align:left;padding:10px 12px;border-radius:8px;font-weight:700;color:#1d2c42;cursor:pointer}.player-action-menu button:hover{background:#f3f6fa}.player-stat-strip{display:grid;grid-template-columns:repeat(6,1fr);background:linear-gradient(135deg,#182436,#0e1827);border-radius:16px;padding:10px 12px;margin-bottom:16px;box-shadow:0 12px 28px rgba(15,27,44,.13)}.player-stat-strip>div{min-width:0;text-align:center;padding:7px 8px;border-right:1px solid rgba(255,255,255,.1)}.player-stat-strip>div:last-child{border-right:0}.player-stat-strip span{display:block;color:#8fa1b9;font-size:11px;font-weight:900}.player-stat-strip strong{display:block;color:#fff;font-size:24px;line-height:1.1;margin:2px 0}.player-stat-strip small{display:block;color:#c6d0dd;font-size:11px;white-space:nowrap}.player-tabs-panel{padding:0;overflow:hidden}.player-tabs{display:flex;gap:0;border-bottom:1px solid var(--v3-line);overflow-x:auto}.player-tabs button{border:0;background:#fff;padding:16px 22px;font-weight:800;color:#607086;cursor:pointer;white-space:nowrap;border-bottom:3px solid transparent}.player-tabs button.active{color:#0b6cf2;border-bottom-color:#0b6cf2}.player-tab-content{display:none;padding:20px}.player-tab-content.active{display:block}.player-info-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0}.player-info-list>div{display:flex;justify-content:space-between;gap:20px;padding:14px 4px;border-bottom:1px solid #edf0f4}.player-info-list dt{color:#6f7d90;font-weight:700}.player-info-list dd{margin:0;font-weight:800;color:#17263a;text-align:right}.player-simple-table table{margin:0}.player-subtitle{font-size:15px;margin:0 0 12px;color:#1b2b42}.player-subtitle:not(:first-child){margin-top:24px}.empty.compact{padding:18px}.player-modal[hidden]{display:none}.player-modal{position:fixed;inset:0;z-index:2000;background:rgba(8,18,32,.56);display:grid;place-items:center;padding:18px}.player-modal-card{width:min(470px,100%);background:var(--tg-surface);border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.24);padding:20px}.player-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.player-modal-head h2{font-size:20px;margin:0}.player-modal-head button{width:34px;height:34px;border:0;border-radius:9px;background:#f1f4f8;font-size:24px;cursor:pointer}.player-modal-card form{display:grid;gap:13px}.player-modal-card label{display:grid;gap:6px;font-weight:750;color:#334155}.player-modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:5px}
@media(max-width:760px){.player-profile-head{align-items:flex-start;flex-direction:column}.player-identity{width:100%}.player-avatar{width:64px;height:64px;flex-basis:64px;border-radius:18px}.player-avatar span{font-size:24px}.player-profile-head h1{font-size:23px}.player-head-actions{width:100%}.player-stat-strip{grid-template-columns:repeat(3,1fr);padding:8px}.player-stat-strip>div:nth-child(3){border-right:0}.player-stat-strip>div:nth-child(-n+3){border-bottom:1px solid rgba(255,255,255,.1)}.player-stat-strip strong{font-size:21px}.player-info-list{grid-template-columns:1fr}.player-tabs button{padding:14px 17px}.player-tab-content{padding:15px}.player-simple-table table{min-width:620px}}
@media(max-width:430px){.player-profile-head p{font-size:12px}.player-team-link{font-size:11px}.player-stat-strip small{font-size:10px}.player-info-list>div{padding:12px 2px}.player-modal-card{padding:16px}}

/* v6.9.2 fikstür ve puan durumu */
.fixture-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.fixture-actions form{margin:0}
/* v6.173.0 — Faz 6A: başlık aksiyonları artık ortak .tg-page-header-actions
   içindedir; formlar yerleşimi bozmasın diye sıfırlanır. */
/* PD-UX13 — SAYFA AKSİYON SATIRI. Bağlam başlığı yalnız bilgi taşıdığı
   için iş akışı aksiyonları (Fikstürü Oluştur, dışa aktarma, …) içerik
   alanının en üstünde bu satırda durur. Tek-birincil kuralı değişmez;
   satır yalnız hizalama yapar. */
.tg-page-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2);margin:0 0 var(--tg-space-3)}
.tg-page-actions:empty{display:none}
.tg-page-actions .tg-btn,.tg-page-actions button{min-height:var(--tg-touch-min)}
/* PD-UX12 — "Gelişmiş Formata Geç" header'dan içerik alanına taşındı:
   ikincil, sola yaslı, kendi satırında; sayfanın birincili formun
   Kaydet düğmesi olmaya devam eder. */
/* PD-UX15 — BASİT / GELİŞMİŞ FORMAT SEKMELERİ. PD-59: çubuk ve sekmeler
   canonical `.tg-tabbar` + `.tg-canonical-tab` (foundation.css) — 2 sekme
   %50/%50. Burada YALNIZ kapalı sekmenin sakin görünümü tanımlanır. */
.structure-mode-tabs .structure-mode-tab.is-disabled{opacity:.55;cursor:not-allowed}
/* PD-UX12 — TEK DURUM KUTUSU: rozet + cümle aynı satırda akar. */
.structure-state-notice{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2)}
.tg-page-header-actions .fixture-action-form{display:contents}.v3-standings-table tr.is-qualified td{background:color-mix(in srgb,var(--tg-qualify-accent,var(--tg-status-success)) 12%,var(--tg-standings-surface,var(--tg-color-surface)))}/* v6.282.0 — SATIRIN SOL ACCENT'İ KALDIRILDI. Kartın sol kenarı artık
   MODÜL KİMLİĞİDİR (mavi rail, Turnuva Aşamaları reçetesi); satırın da
   sol kenarında yeşil bir çubuk olsaydı iki dikey accent üst üste
   binerdi. Üst tura çıkış artık YALNIZ hafif satır tonuyla anlatılır
   (lejant onu açıklar, `.sr-only` metni satırda kalır). */.standings-legend{display:flex;align-items:center;gap:var(--tg-space-2);margin:14px 0 0;color:var(--tg-color-muted);font-size:var(--tg-font-sm)}.standings-legend span{width:20px;height:12px;border-radius:var(--tg-radius-sm);background:color-mix(in srgb,var(--tg-qualify-accent,var(--tg-status-success)) 12%,var(--tg-standings-surface,var(--tg-color-surface)));border:1px solid color-mix(in srgb,var(--tg-qualify-accent,var(--tg-status-success)) 34%,var(--tg-color-border))}@media(max-width:700px){.fixture-actions{width:100%}.fixture-actions form,.fixture-actions button{width:100%}}

/* v7.0 turnuva ilerleme */
.tg-progress-panel{margin:18px 0;padding:18px 20px}.tg-progress-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.tg-progress-head div{display:flex;flex-direction:column;gap:3px}.tg-progress-head strong{font-size:16px}.tg-progress-head span,.tg-progress-panel small{color:#64748b}.tg-progress-head b{font-size:24px;color:#163c68}.tg-progress-track{height:10px;background:#e8eef5;border-radius:999px;overflow:hidden;margin:12px 0 6px}.tg-progress-track i{display:block;height:100%;background:linear-gradient(90deg,#163c68,#2f80ed);border-radius:inherit;transition:width .25s ease}@media(max-width:640px){.tg-progress-panel{padding:15px}.tg-progress-head b{font-size:20px}}

/* v7.1.0 Birleşik ve canlı Maç Programı */
.match-program-hero>div{position:relative;z-index:1}.match-program-hero h1{margin:5px 0 8px;font-size:clamp(28px,4vw,44px);letter-spacing:-1.2px}.match-program-hero p{margin:0;max-width:700px;color:rgba(255,255,255,.8);font-size:15px}.match-program-hero .v3-eyebrow{color:#8ff1d2}.fixture-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.program-create{box-shadow:0 10px 24px rgba(7,57,48,.26)}
.program-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) minmax(210px,1.4fr);gap:12px;margin-bottom:18px}.program-summary-grid>div{display:flex;flex-direction:column;justify-content:center;min-height:92px;padding:17px 19px;background:#fff;border:1px solid #e7ecf3;border-radius:18px;box-shadow:0 8px 22px rgba(24,40,66,.055)}.program-summary-grid strong{font-size:26px;line-height:1;color:#17243a}.program-summary-grid span{margin-top:8px;color:#718096;font-size:13px}.program-summary-grid .is-live-summary strong{color:#e23b4f}.program-progress i{display:block;height:7px;margin-top:10px;background:#e8eef4;border-radius:99px;overflow:hidden}.program-progress i b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2b68dd,#16a77d)}
.program-tabs{margin-bottom:16px}.match-program-panel{padding:18px}.program-match-list{gap:14px}.program-match-card{position:relative;padding-left:74px;border:1px solid #e8edf3;border-radius:20px;box-shadow:0 8px 24px rgba(32,48,75,.06);transition:transform .18s ease,box-shadow .18s ease}.program-match-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(32,48,75,.10)}.program-match-number{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:46px;height:56px;border-radius:14px;background:#f1f5fa;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#65748a}.program-match-number small{font-size:10px;font-weight:800;letter-spacing:1px}.program-match-number strong{font-size:21px;color:#1f3150}.program-stage{background:#edf4ff!important;color:#2f64b9!important}.program-empty{padding:48px 20px}.program-empty form{margin-top:18px}
@media(max-width:900px){.match-program-hero{align-items:flex-start;flex-direction:column;padding:24px}.fixture-actions{justify-content:flex-start}.program-summary-grid{grid-template-columns:repeat(2,1fr)}.program-summary-grid .program-progress{grid-column:1/-1}}
@media(max-width:620px){.program-summary-grid{grid-template-columns:1fr 1fr;gap:8px}.program-summary-grid>div{min-height:78px;padding:13px}.program-summary-grid strong{font-size:22px}.match-program-panel{padding:10px}.program-match-card{padding-left:58px}.program-match-number{left:8px;width:40px;height:50px}.program-match-number strong{font-size:18px}.match-program-hero{border-radius:18px;padding:20px}.match-program-hero h1{font-size:30px}}

/* v7.1.1 sade maç listesi, açılır işlemler ve durum öncelikli sıralama */
.program-summary-grid>div{position:relative;overflow:hidden;border:0;color:#fff;box-shadow:0 12px 28px rgba(31,48,77,.12)}
.program-summary-grid>div:after{content:"";position:absolute;right:-28px;top:-30px;width:95px;height:95px;border-radius:50%;background:rgba(255,255,255,.12)}
.program-summary-grid>div:nth-child(1){background:linear-gradient(135deg,#2463d4,#5189ed)}
.program-summary-grid>div:nth-child(2){background:linear-gradient(135deg,#d99116,#f5b943)}
.program-summary-grid>div:nth-child(3){background:linear-gradient(135deg,#e04457,#ff6b79)}
.program-summary-grid>div:nth-child(4){background:linear-gradient(135deg,#168e68,#30bd8d)}
.program-summary-grid>div:nth-child(5){background:linear-gradient(135deg,#6845c4,#9672e8)}
.program-summary-grid strong,.program-summary-grid .is-live-summary strong{position:relative;z-index:1;color:#fff}.program-summary-grid span{position:relative;z-index:1;color:rgba(255,255,255,.82)}
.program-progress i{position:relative;z-index:1;background:rgba(255,255,255,.22)}.program-progress i b{background:#fff}
.program-match-card{padding-left:74px}.program-match-card.is-finished{order:99;opacity:.88}.program-match-card.is-live{box-shadow:0 12px 30px rgba(224,68,87,.14)}
@media(max-width:760px){.program-card-footer{align-items:stretch}.quick-date-form{width:100%}.quick-date-form input{min-width:0;flex:1}.program-open-hint{margin-left:auto}.program-detail-head{align-items:flex-start;flex-direction:column}.program-detail-head .tg-btn{width:100%;justify-content:center}.program-match-details{padding:15px}}
@media(max-width:500px){.program-match-card{padding-left:58px}.program-card-footer{padding:0 12px 12px}.program-date-view{width:100%}.quick-date-form{display:grid;grid-template-columns:1fr auto}.quick-date-form input{width:100%}}

/* v7.1.2 nihai maç sırası ve mobil maç programı */

@media(max-width:620px){
  .fixture-actions,.fixture-actions form,.fixture-actions button{width:100%}
  .fixture-actions button{justify-content:center}

  .program-summary-grid{gap:9px;margin-bottom:14px}
  .program-summary-grid>div{min-height:82px;padding:14px 16px;border-radius:17px}
  .program-summary-grid strong{font-size:25px}
  .program-summary-grid span{font-size:12px;margin-top:7px}
  .program-summary-grid .program-progress{min-height:94px}

  .match-program-panel{padding:0;background:transparent;border:0;box-shadow:none}
  .program-match-list{gap:12px}
  .program-match-card{padding:0;border-radius:18px;overflow:hidden;background:#fff;box-shadow:0 7px 22px rgba(27,48,77,.08)}
  .program-match-card:hover{transform:none}
  .v3-match-accent{position:absolute;left:0;top:0;bottom:0;width:4px}
  .v3-match-body{width:100%}
  .v3-match-top{display:flex;align-items:center;justify-content:flex-end;min-height:55px;padding:12px 13px 8px 80px;gap:8px;border-bottom:1px solid #eef2f6}
  .v3-match-context{order:1;display:flex;align-items:center;justify-content:flex-end;max-width:none;font-size:11px;line-height:1.3;text-align:right}
  .v3-match-context span:nth-child(4){display:none}
  .v3-match-state{order:2;flex:0 0 auto;font-size:11px;padding:6px 9px}

  .v3-match-score{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;padding:20px 13px 16px}
  .v3-match-team.home,.v3-match-team.away{order:initial;text-align:center}
  .v3-match-team strong{font-size:15px;line-height:1.25;display:block}
  .v3-match-score .score,.v3-match-score .score-empty{order:initial;min-width:54px;font-size:20px}

}

@media(max-width:390px){
  .v3-match-top{padding-left:74px}
  .v3-match-context span:nth-child(3){display:none}
  .v3-match-score{grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);padding-left:10px;padding-right:10px}
  .v3-match-team strong{font-size:14px}
}

/* Public Turnuva V1 — kompakt Paylaş tetiği + paneli (yönetim Genel Bakış
   banner'ı + public üst çubuk). Eski büyük gövde widget'ı EMEKLİ; markup
   tek yerde: app/public_tournament_view.php public_share_panel_markup().
   Panel viewport dışına çıkmaz: masaüstünde tetiğe bağlı açılır kutu,
   dar ekranda alt sayfa (bottom sheet). */
.tg-share{position:relative;display:inline-flex}
.tg-share-trigger{display:inline-flex;align-items:center;gap:6px;min-height:var(--tg-touch-min,44px);padding:0 14px;border:1px solid var(--tg-action-secondary-border,#c6d6e6);border-radius:var(--tg-radius-pill,999px);background:var(--tg-action-secondary-bg,#fff);color:var(--tg-action-secondary-text,#1769d7);font:inherit;font-size:13px;font-weight:800;cursor:pointer;white-space:nowrap}
.tg-share-trigger:hover{filter:brightness(.97)}
/* UX Fix Pack 1 — paylaşım paneli (native <dialog>, tek sözleşme: yönetim + public).
   Yüzey uygulamanın açık mavi-gri sayfa tonu (--tg-page-bg); kod satırı ve QR beyaz yüzeyde; yalnız token. */
.tg-share-panel{position:fixed;inset:auto;margin:0;width:min(340px,calc(100vw - 24px));max-width:none;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow:auto;overscroll-behavior:contain;box-sizing:border-box;flex-direction:column;gap:var(--tg-space-3);padding:var(--tg-space-3) var(--tg-space-4) var(--tg-space-4);border:1px solid var(--tg-border);border-radius:var(--tg-radius-lg);background:var(--tg-page-bg);color:var(--tg-text);box-shadow:var(--tg-shadow-overlay);text-align:left;font-size:var(--tg-font-sm);line-height:1.4}
.tg-share-panel:not([open]){display:none}
.tg-share-panel[open]{display:flex}
/* Açıkken arka sayfa kaymaz (mobilde modal diyalog tek başına engellemez). */
html:has(.tg-share-panel[open]),html:has(.tg-share-panel[open]) body{overflow:hidden}
.tg-share-head{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-2);margin-right:calc(var(--tg-space-2) * -1)}
.tg-share-title{margin:0;font-size:var(--tg-font-lg);font-weight:800;color:var(--tg-text)}
.tg-share-close{min-width:var(--tg-touch-min,44px);min-height:var(--tg-touch-min,44px);border:0;background:none;font-size:24px;line-height:1;color:var(--tg-text-muted);cursor:pointer}
.tg-share-code{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-4);min-height:var(--tg-touch-min);padding:0 var(--tg-space-3);border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
.tg-share-code-label{font-weight:700;color:var(--tg-text-muted);white-space:nowrap}
.tg-share-code-value{font-size:var(--tg-font-lg);font-weight:900;letter-spacing:.06em;color:var(--tg-text);white-space:nowrap}
.tg-share-qr{align-self:center;flex:0 0 auto;display:grid;place-items:center;width:min(208px,100%);aspect-ratio:1;box-sizing:border-box;padding:var(--tg-space-2);border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
.tg-share-qr svg{display:block;width:100%;height:100%}
.tg-share-actions{display:flex;flex-direction:column;gap:var(--tg-space-2)}
.tg-share-actions .tg-btn{width:100%}
/* Native paylaşım yalnız destekleyen tarayıcıda görünür (.tg-btn display'i [hidden]'ı ezmesin). */
.tg-share-actions .tg-share-native[hidden]{display:none}
.tg-share-view-group{display:flex;flex-direction:column;align-items:stretch;gap:2px}
.tg-share-url{align-self:center;max-width:100%;padding:4px 6px;overflow-wrap:anywhere;text-align:center;font-size:var(--tg-font-xs);color:var(--tg-action-primary);text-decoration:none}
.tg-share-url:hover{text-decoration:underline}
.tg-share-trigger-icon{display:inline-grid;place-items:center;flex:0 0 auto}
.overview-banner .tg-share{align-self:flex-start}
/* PD-63 — hero Paylaş: MİNİMAL birleşik CTA (dairesel ikon yüzeyi + metin), durum
   rozetiyle ("Devam ediyor") aynı görsel ağırlıkta: kalın çerçeve/gölge yok, rozet
   yüksekliği. 44px dokunma alanı her genişlikte görünmez isabet alanıyla korunur
   (`data-a11y-compact`). Renkler yalnız banner'ın kontrast token çiftinden
   (--tg-brand-primary-text üzerinde --tg-brand-primary); tema ayarı/yeni token yok.
   SUPERSEDES: yalnız çerçeveli yarı saydam hap (v6.357.x). */
.overview-banner .tg-share-trigger{position:relative;gap:0;min-height:0;padding:2px 10px 2px 2px;border:0;background:color-mix(in srgb,var(--tg-brand-primary-text) 18%,transparent);color:var(--tg-brand-primary-text);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);line-height:1.5}
.overview-banner .tg-share-trigger::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,var(--tg-touch-min,44px));height:var(--tg-touch-min,44px);transform:translate(-50%,-50%)}
.overview-banner .tg-share-trigger:hover{filter:none;background:color-mix(in srgb,var(--tg-brand-primary-text) 26%,transparent)}
.overview-banner .tg-share-trigger:focus-visible{outline:2px solid var(--tg-brand-primary-text);outline-offset:2px}
.overview-banner .tg-share-trigger-icon{width:20px;height:20px;border-radius:50%;background:var(--tg-brand-primary-text);color:var(--tg-brand-primary)}
.overview-banner .tg-share-trigger-icon svg{width:12px;height:12px}
.overview-banner .tg-share-trigger-label{margin-left:6px}
.topbar .tg-share-trigger{min-height:36px;padding:0 12px;background:transparent;border-color:color-mix(in srgb,#fff 45%,transparent);color:#fff}
@media(max-width:480px){
  .tg-share-panel{top:auto;bottom:0;left:0;right:0;width:auto;max-height:85vh;max-height:85dvh;border-radius:var(--tg-radius-lg) var(--tg-radius-lg) 0 0}
  .tg-share-qr{width:min(188px,100%)}
}

/* v6.34.0 — §5/§6: turnuva sayfalarındaki PDF/Excel "Dışa Aktar" bağlantıları. */
.tg-export-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
/* v6.173.0 — Faz 6A: bu liste artık YALNIZ Raporlar ekranında kullanılır
   (Takımlar/Fikstür ortak menüye geçti). Sabit hex'ler semantik token'a
   bağlandı; kuyruk formundaki çıplak <button> de aynı görünümü alır ki
   aynı iş iki farklı ağırlıkta basılmasın. */
.tg-export-links a,.tg-export-links .tg-export-queue-form button{display:inline-flex;align-items:center;gap:6px;min-height:var(--tg-control-height);padding:7px 12px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm);background:var(--tg-surface);color:var(--tg-action-primary);font-size:var(--tg-font-sm);font-weight:800;text-decoration:none;cursor:pointer}
.tg-export-links a:hover,.tg-export-links .tg-export-queue-form button:hover{background:var(--tg-action-primary-soft)}
/* v6.316.0 — Dışa aktarma teslimat durumu. "Hazırlanıyor" bir AKSİYON
   değildir: <span> olarak basılır ve butonla aynı kutu dilini alır ki
   liste zıplamasın. Rozet metni ui_text'ten gelir, renk semantik
   token'lardan — yeni bir durum rengi ailesi üretilmedi. */
.tg-export-links>span,.tg-export-menu-panel>span[data-export-slot]{display:inline-flex;align-items:center;gap:6px;min-height:var(--tg-control-height);padding:7px 12px;color:var(--tg-text-muted)}
.tg-export-state{margin-left:6px;font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold,700);letter-spacing:.01em}
.tg-export-state.is-preparing{color:var(--tg-text-muted)}
.tg-export-state.is-ready{color:var(--tg-status-success)}
.tg-export-state.is-failed{color:var(--tg-status-danger)}
/* v6.378.0 — Takım Kadrosu PDF takım seçimi: kendi satırında, mevcut token'larla.
   Liste kaydırılabilir (çok takımlı turnuvada sayfa uzamaz); 360px'te tek sütun. */
.tg-export-links .tg-export-team-form{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.tg-export-team-select{flex-basis:100%;min-width:0;margin:0;padding:10px 12px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm)}
.tg-export-team-select legend{padding:0 4px;font-size:var(--tg-font-sm);font-weight:800}
.tg-export-team-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.tg-export-team-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:4px 12px;max-height:260px;overflow-y:auto}
.tg-export-team-option{display:flex;align-items:center;gap:8px;min-height:var(--tg-control-height);min-width:0;font-size:var(--tg-font-sm);overflow-wrap:anywhere}
.tg-export-team-status,.tg-export-team-download{display:inline-flex;align-items:center;gap:6px;min-height:var(--tg-control-height)}
/* Açıklama HER ZAMAN kendi satırında: `flex-basis` tek başına yetmez,
   satırda yer kalmışsa flex öğesi küçülüp yanına oturur (390px ve az
   butonlu kartlarda görüldü) — `width:100%` ile satır kesin kırılır. */
.tg-export-hint{display:block;flex:0 0 100%;width:100%;margin-top:4px;color:var(--tg-text-muted);font-size:var(--tg-font-xs);line-height:1.35}
/* v6.321.0 — tamamlanmış turnuva dışa aktarma penceresi. Yeni bir bileşen
   dili üretilmedi: ikisi de .tg-export-hint ile AYNI ölçü/renk kaynağını
   (--tg-text-muted, --tg-font-xs) kullanır; kapalı durum yalnızca daha
   belirgin bir metin rengiyle ayrışır. */
.tg-export-window-note{display:block;flex:0 0 100%;width:100%;margin:4px 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-xs);line-height:1.35}
.tg-export-window-closed{display:block;width:100%;margin:0;color:var(--tg-text-secondary,var(--tg-text-muted));font-size:var(--tg-font-xs);line-height:1.4}
/* Uzun dosya/etiket adları taşmasın (390px). */
.tg-export-links>*,.tg-export-menu-panel>*{min-width:0;max-width:100%}
.tg-export-links a>span,.tg-export-links button>span,.tg-export-menu-item>span{overflow-wrap:anywhere}
/* ═══ v6.388.0 — RAPOR MERKEZİ ═══
   İki grup (Genel Raporlar · Takımlar ve Oyuncular), her rapor bir kart:
   ikon · ad · kısa açıklama · DURUM · AKSİYON. Durum rozeti aksiyondan ayrı
   satırdadır. Mevcut token'lar; yeni renk/durum ailesi YOK. */
.report-center{display:grid;gap:16px}
.report-center>.tg-note{margin:0}
.report-center-group{display:grid;gap:8px;min-width:0}
.report-center-group>h2{margin:0;font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
.report-center-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start;gap:10px;min-width:0}
.report-center-cards>.tg-export-window-note,.report-center-cards>.tg-export-window-closed{grid-column:1/-1}
.tg-report-card{display:grid;grid-template-columns:40px minmax(0,1fr);align-content:start;gap:10px 12px;min-width:0;padding:12px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
.tg-report-card-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--tg-radius-sm);background:var(--tg-action-primary-soft);color:var(--tg-action-primary)}
.tg-report-card-body{display:grid;gap:2px;min-width:0}
.tg-report-card-body h3{margin:0;font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);line-height:1.25;color:var(--tg-text);overflow-wrap:anywhere}
.tg-report-card-body p{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-sm);line-height:1.35}
.tg-report-card-foot{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding-top:8px;border-top:1px solid var(--tg-border)}
.tg-report-card-foot>.tg-export-state{margin:0}
.tg-export-state.is-idle{color:var(--tg-text-muted)}
.tg-report-card-form{grid-column:1/-1;display:grid;gap:8px;min-width:0}
.tg-report-card-action{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;min-width:0;margin-left:auto}
.tg-report-card-action>form{margin:0}
.tg-report-card-action .tg-btn{min-height:var(--tg-touch-min)}
/* 2026-10-14 — PDF İndirme V1 (Karar EXP-4): tek "PDF İndir" butonu; meşgulken
   aria-busy. Bildirimden gelinen rapor kartı işaretlenir (mevcut token'lar). */
.tg-report-card-foot>.tg-btn{min-height:var(--tg-touch-min);margin-left:auto}
.tg-report-card-foot .tg-btn[aria-busy="true"],.team-roster-export-form .tg-btn[aria-busy="true"]{cursor:progress;opacity:.72}
.tg-report-card.is-prepare-target{border-color:var(--tg-action-primary);box-shadow:0 0 0 2px var(--tg-action-primary-soft)}
.tg-export-team-fixed{flex:1 1 auto;min-width:0;margin:0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);overflow-wrap:anywhere}
/* Kompakt takım seçici: native <details>; panel açılınca kart genişliğinde. */
.tg-export-team-chooser{min-width:0}
.tg-export-team-chooser>summary{min-height:var(--tg-touch-min);list-style:none;cursor:pointer}
.tg-export-team-chooser>summary::-webkit-details-marker{display:none}
.tg-export-team-chooser>summary::after{content:"";width:7px;height:7px;margin-left:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.tg-export-team-chooser[open]>summary::after{transform:translateY(2px) rotate(-135deg)}
.tg-export-team-chooser>summary>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tg-export-team-panel{display:grid;gap:8px;margin-top:8px;padding:10px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm);background:var(--tg-surface-soft)}
.tg-export-team-search{display:block;margin:0}
.tg-export-team-search input{width:100%;min-height:var(--tg-touch-min)}
.tg-export-team-panel .tg-export-team-actions{margin:0}
.tg-export-team-panel .tg-export-team-actions .tg-btn{min-height:var(--tg-touch-min)}
.tg-export-team-panel .tg-export-team-select{padding:0;border:0}
.tg-export-team-panel .tg-export-team-list{grid-template-columns:minmax(0,1fr);align-content:start;gap:0;max-height:min(320px,50vh);padding:0 4px;border-radius:var(--tg-radius-sm);background:var(--tg-surface)}
.tg-export-team-panel .tg-export-team-option{min-height:var(--tg-touch-min);margin:0;padding:0 6px;border-bottom:1px solid var(--tg-border);cursor:pointer}
.tg-export-team-panel .tg-export-team-option:last-child{border-bottom:0}
.tg-export-team-option[hidden]{display:none}
.tg-export-team-option input{flex:0 0 auto;width:20px;height:20px;margin:0}
.tg-export-team-empty{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.tg-export-team-panel-foot{display:flex;justify-content:flex-end}
@media(max-width:720px){
  .report-center{gap:12px}
  .report-center-cards{grid-template-columns:minmax(0,1fr);gap:8px}
  .tg-report-card{padding:10px;gap:8px 10px}
  .tg-export-team-chooser>summary{width:100%;justify-content:space-between}
}

/* v6.34.0 — §8: Sponsor Yönetimi (admin) + sponsor şeridi (herkese açık/canlı). */
.grid-full{grid-column:1/-1}
.sponsor-admin-logo{width:24px;height:24px;object-fit:contain;border-radius:4px;margin-right:6px;vertical-align:middle}
.sponsor-strip{display:flex;align-items:center;gap:12px;margin:14px 0;padding:10px 14px;border:1px solid #e3e9ef;border-radius:12px;background:#fbfcfe}
.sponsor-strip-label{flex:0 0 auto;color:#8a99a8;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.sponsor-strip-track{display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.sponsor-strip-item{display:inline-flex;align-items:center;max-height:32px}
.sponsor-strip-item img{max-height:32px;max-width:110px;object-fit:contain}
.sponsor-strip-name{font-size:12px;font-weight:800;color:#405d78}
/* SPONSORLAR YÖNETİM EKRANI — SPONSOR-ALTBILGI (v6.394.191–197) + SPONSOR-ALT-PANEL / ORTAK-GORSEL-DUZENLEYICI (v6.394.198;
   UX_ARCHITECTURE §15.62 md. 6 (p) (10)–(12)). Sıra: başlık → «Üst Afiş | Alt Panel» yönetim sekmeleri → seçili alanın ayar
   kartı (ziyaretçi sekmeleri çerçevesiz, sarılabilen ≥ 44 px seçimler; süre + kısa Kaydet aynı satırda) → sayı + «+ Sponsor
   ekle» menüsü → TEK liste (kompakt kart: önizleme · ad · tek durum · Düzenle; mobilde de tek satır) → kapalı Yardım.
   Görsel yükleme / önizleme / kadraj kartın İÇİNDE. Genel sayfa genişliği DEĞİŞMEZ; ≤ 600 px tek sütun, taşmasız; mobilde
   girdiler 16 px. Önizleme çerçevesi gerçek alanın küçültülmüş hâlidir (taralı bölüm boşluk). */
.sponsor-page-head{margin-bottom:10px}
.sponsor-area-tabs{margin:0 0 12px}
.sponsor-area-settings{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:10px 12px 12px}
.sponsor-area-settings-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px}
.sponsor-area-settings-head h2{margin:0;font-size:var(--tg-font-md)}
.sponsor-count{color:var(--tg-text);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.sponsor-area-form{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.sponsor-tab-fieldset{min-width:0;margin:0;padding:0;border:0}
.sponsor-tab-fieldset legend{margin:0 0 2px;padding:0;color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold)}
/* Ziyaretçi sekme seçimleri çerçevesizdir (kullanıcı talimatı 2026-11-02: adları çevreleyen çizgi yok); seçili olan hafif
   zeminli; dokunma hedefi ≥ 44 px. Bu turnuvada şu an görünmeyen sekmenin adı noktalı altı çizgilidir (ekran okuyucu metni +
   ipucu ayrıca). */
.sponsor-tab-chips{display:flex;flex-wrap:wrap;gap:2px 4px}
.sponsor-tab-chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;margin:0;padding:0 10px 0 8px;border-radius:var(--tg-radius-pill);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);cursor:pointer;white-space:nowrap}
.sponsor-tab-chip input{width:18px;height:18px;min-height:0;margin:0;accent-color:var(--tg-action-primary)}
.sponsor-tab-chip:has(input:checked){background:var(--tg-action-primary-soft)}
.sponsor-tab-chip:has(input:focus-visible){outline:3px solid var(--tg-action-primary);outline-offset:1px}
.sponsor-tab-chip.is-unavailable>span:not(.sr-only){text-decoration:underline dotted;text-underline-offset:3px;color:var(--tg-text-muted)}
.sponsor-field{display:flex;flex-direction:column;gap:3px;margin:0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.sponsor-field .tg-input{min-height:44px;width:100%;box-sizing:border-box}
.sponsor-save-row{display:flex;align-items:flex-end;gap:10px}
.sponsor-save-row .sponsor-interval{flex:0 0 auto}
.sponsor-save-row .sponsor-interval .tg-input{width:112px}
.sponsor-save-row .tg-btn{min-height:44px;flex:0 0 auto;width:auto}
.sponsor-add-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;margin:14px 0 8px}
.sponsor-add-menu-wrap{position:relative}
.sponsor-add-menu-wrap>summary{display:inline-flex;align-items:center;min-height:44px;width:auto;list-style:none;cursor:pointer}
.sponsor-add-menu-wrap>summary::-webkit-details-marker{display:none}
.sponsor-add-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:5;display:grid;gap:2px;width:min(300px,calc(100vw - 32px));padding:6px;border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface);box-shadow:var(--tg-shadow-overlay)}
.sponsor-add-menu a{display:block;min-height:44px;padding:8px 10px;border-radius:var(--tg-radius-sm);color:var(--tg-text);font-weight:var(--tg-font-weight-bold);text-decoration:none}
.sponsor-add-menu a small{display:block;color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:500}
.sponsor-add-menu a:hover,.sponsor-add-menu a:focus-visible{background:var(--tg-surface-soft);outline:2px solid var(--tg-action-primary)}
.sponsor-add-form{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin:0 0 10px;padding:12px}
.sponsor-add-form h2{margin:0;font-size:var(--tg-font-md)}
/* Notlar canonical `.tg-note.tg-note-compact` (uyarı: + `.tg-note-warning`); ızgara aralığı boşluğu verir. `[hidden]`: compact
   not `display:flex` taşır, gizli öznitelik bağlamında açıkça kapatılır. */
.sponsor-card-form .tg-note-compact,.sponsor-add-form .tg-note-compact,.sponsor-banner-field .tg-note-compact{margin:0}
.sponsor-banner-field .tg-note-compact[hidden]{display:none}
.sponsor-form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sponsor-form-actions .tg-btn{min-height:44px;width:auto}
.sponsor-toggle-button{margin-left:auto}
.sponsor-toggle-form{display:none}
.sponsor-form-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1.4fr) minmax(84px,.45fr);gap:10px 12px}
.sponsor-form-grid label{display:grid;align-content:start;gap:4px;min-width:0;margin:0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.sponsor-form-grid .tg-input{width:100%;min-width:0;min-height:44px}
.sponsor-form-logo input{min-width:0;max-width:100%}
.sponsor-form-desc{grid-column:2 / -1}
.sponsor-banner-fields{min-width:0;margin:0;padding:10px 12px 12px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft)}
.sponsor-banner-fields legend{padding:0 4px;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black)}
.sponsor-banner-field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px 16px}
.sponsor-banner-field{display:grid;align-content:start;gap:6px;min-width:0}
.sponsor-banner-label{margin:0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.sponsor-banner-spec{margin:0;color:var(--tg-text);font-size:var(--tg-font-xs);line-height:1.45}
.sponsor-banner-file{min-width:0;max-width:100%;min-height:var(--tg-control-height)}
.sponsor-banner-selected{margin:0;font-size:var(--tg-font-sm)}
.sponsor-banner-previews{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:8px}
.sponsor-banner-previews[hidden]{display:none}
.sponsor-banner-frame{min-width:0;margin:0}
.sponsor-banner-frame--phone,.sponsor-banner-frame--phone-fallback,.sponsor-banner-frame--panel{width:100%;max-width:342px}
.sponsor-banner-frame[hidden]{display:none}
.sponsor-banner-frame-box{display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px dashed var(--tg-border-strong);border-radius:var(--tg-radius-sm);background:repeating-linear-gradient(45deg,var(--tg-surface-soft) 0 8px,color-mix(in srgb,var(--tg-border) 55%,var(--tg-surface)) 8px 16px)}
.sponsor-banner-frame-box img{display:block;height:auto;max-height:100%}
/* Üst afiş önizlemesi (2026-11-03, UST-AFIS-SABIT-CERCEVE; UX_ARCHITECTURE §15.62 md. 6 (r)): kutu sabit 1100:192, görsel ziyaretçi
   sayfasındaki gibi orantılı cover ile alanı doldurur. Kırpılan bölüm göstergesi: görselin tamamı kendi oranında (en çok 120 px
   yükseklik — satır içi max-width), ziyaretçinin gördüğü pencere çizgiyle, dışı karartılır (yalnız oran farkı > %1 iken). */
.sponsor-banner-frame-box.is-cover{position:relative;display:block;border:0}
/* Kesik çerçeve görselin ÜSTÜNE çizilir (düzende yer kaplamaz): görselin çizildiği alan tam 1100:192 — ziyaretçi alanıyla aynı kırpma
   (ölçüldü: kutu içi kenarlık 184 px önizlemede alanı ≈ 6,05:1 yapıyordu). */
.sponsor-banner-frame-box.is-cover::after{content:"";position:absolute;inset:0;border:1px dashed var(--tg-border-strong);border-radius:inherit;pointer-events:none}
.sponsor-banner-frame-box.is-cover img{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;object-position:50% 50%}
.sponsor-crop-guide{min-width:0;margin:0}
.sponsor-crop-guide[hidden]{display:none}
.sponsor-crop-guide-box{position:relative;width:100%;overflow:hidden;border-radius:var(--tg-radius-sm);background:var(--tg-surface-soft)}
.sponsor-crop-guide-box img{display:block;width:100%;height:100%}
.sponsor-crop-window{position:absolute;box-shadow:0 0 0 999px rgba(4,18,34,.62);outline:2px solid #fff;outline-offset:-1px;pointer-events:none}
.sponsor-crop-guide figcaption{margin-top:3px;color:var(--tg-text);font-size:var(--tg-font-xs);font-weight:600}
.sponsor-banner-frame figcaption{margin-top:3px;color:var(--tg-text);font-size:var(--tg-font-xs);font-weight:600}
.sponsor-banner-notes{display:grid;gap:4px;margin:0;padding:8px 10px 8px 26px;border:1px solid color-mix(in srgb,var(--tg-status-warning) 45%,var(--tg-border));border-radius:var(--tg-radius-sm);background:var(--tg-status-warning-soft);font-size:var(--tg-font-sm)}
.sponsor-banner-notes[hidden]{display:none}
.sponsor-image-view{display:grid;gap:6px}
.sponsor-image-view[hidden]{display:none}
.sponsor-image-view-state{margin:0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.sponsor-image-view-actions{display:flex;flex-wrap:wrap;gap:8px}
.sponsor-image-view-actions .tg-btn{min-height:44px;width:auto}
.sponsor-image-view-actions .tg-btn[hidden]{display:none}
.sponsor-image-view-actions .tg-btn[aria-busy="true"]{cursor:progress;opacity:.72}
.sponsor-check{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin:0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.sponsor-check input{width:18px;height:18px;margin:0}
/* Kart: önizleme + ad + TEK durum + Düzenle (mobilde de tek satır; uzun ad kesilir, tam adı `title` + açık kartta girdi). */
/* Tek sütunlu ızgaralar `minmax(0,1fr)`: kesilen uzun ad (nowrap) kartın min-içerik genişliğini büyütüp dar ekranda sayfayı
   yatay taşırmaz (ölçüldü 360 px: 585 px'lik özet → taşma 233 px; düzeltmeyle 0). */
.sponsor-list{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.sponsor-card{min-width:0;margin:0;border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
/* `.sponsor-list>` öneki bilinçli: accessibility.css'teki genel `body summary:not([data-a11y-compact]){display:flex}` (0,1,2)
   kuralı ızgarayı ezip «Düzenle»yi ad uzunluğuna göre kaydırıyordu (ölçüldü: display flex); (0,2,1) ile ızgara korunur. */
.sponsor-list>.sponsor-card>summary,.sponsor-card-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px 12px;min-height:56px;padding:8px 12px;list-style:none;cursor:pointer}
.sponsor-card-row{grid-template-columns:auto minmax(0,1fr);cursor:default}
.sponsor-card>summary::-webkit-details-marker{display:none}
.sponsor-card>summary:focus-visible{outline:3px solid var(--tg-action-primary);outline-offset:-3px;border-radius:var(--tg-radius-md)}
.sponsor-thumb{display:flex;align-items:center;justify-content:center;width:88px;height:44px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm);background:var(--tg-surface-soft);overflow:hidden;color:var(--tg-text-muted);font-size:11px;text-align:center;line-height:1.2}
.sponsor-thumb img{max-width:100%;max-height:100%;width:auto;height:auto}
.sponsor-card.is-passive .sponsor-thumb img{opacity:.45;filter:grayscale(1)}
.sponsor-card-main{min-width:0}
.sponsor-card-main strong{display:block;font-size:var(--tg-font-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sponsor-card-main .tg-status{margin-top:4px}
.sponsor-edit-cta{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-sm);background:var(--tg-surface);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);white-space:nowrap}
.sponsor-card[open] .sponsor-edit-cta{background:var(--tg-action-primary-soft);border-color:var(--tg-action-primary)}
.sponsor-card-body{padding:0 12px 12px;border-top:1px solid var(--tg-border)}
.sponsor-card-form{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding-top:12px}
.sponsor-card-subtitle{margin:4px 0 0;font-size:var(--tg-font-sm);color:var(--tg-text-muted)}
.sponsor-help-details{margin-top:12px;border-top:1px solid var(--tg-border);padding-top:8px;font-size:var(--tg-font-sm)}
.sponsor-help-details>summary{display:inline-flex;align-items:center;min-height:44px;color:var(--tg-action-primary);font-weight:var(--tg-font-weight-bold);cursor:pointer}
.sponsor-help-details ul{display:grid;gap:4px;margin:6px 0 0;padding-left:18px;color:var(--tg-text);line-height:1.45}
@media (max-width:760px){.sponsor-form-grid input,.sponsor-field input,.sponsor-field select{font-size:var(--tg-input-font-mobile)}.sponsor-card>summary,.sponsor-card-row{gap:8px 10px;padding:8px 10px}.sponsor-thumb{width:56px;height:28px}.sponsor-edit-cta{padding:0 12px}}
@media (max-width:600px){
  .sponsor-form-grid{grid-template-columns:minmax(0,1fr) 96px}
  .sponsor-form-name,.sponsor-form-site,.sponsor-form-desc{grid-column:1 / -1}
  .sponsor-form-logo{grid-column:1 / 2}
  .sponsor-form-order{grid-column:2 / 3;grid-row:3}
}

/* v6.75.0 — Oyuncu Sistemi Faz E: turnuva-içi merkezi Oyuncular listesi
   (players.php). .sr-only genel bir erişilebilirlik yardımcısıdır —
   projede yalnızca assets/css/public-packages.css içinde tanımlıydı
   (turnuva v3-shell sayfaları app.css DIŞINDA sayfa CSS'i yüklemez),
   bu yüzden burada da tanımlanır — ikinci bir "gizli etiket" deseni
   İCAT EDİLMEDİ, aynı .sr-only sözleşmesi kopyalanmıştır. */
.sr-only{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.player-list-filter{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:16px}
.player-list-filter label{display:grid;gap:5px;margin:0;font-size:12px;font-weight:800;color:var(--v3-muted)}
.player-list-filter-q{flex:1 1 220px;min-width:0}
.player-list-filter input,.player-list-filter select{min-height:var(--tg-control-height);border:1px solid var(--v3-line);border-radius:10px;padding:0 12px;background:#fff;font-size:14px}
/* v6.173.0 — Faz 6A (§12): TAKIMLAR ARAMASI. Paylaşılan .player-list-filter
   bileşeni korunur (players.php aynen çalışır); bu satır YALNIZ takımlar
   ekranındaki ek sınıfa uygulanır, !important merdiveni kurulmaz. Alan ve
   buton tek satırda durur; mobilde dikey yığılma kalktığı için ekranın
   üstündeki büyük beyaz blok yok olur. */
.teams-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:12px}
.teams-search-row .teams-search-field{position:relative;display:block;min-width:0}
.teams-search-row .teams-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--tg-text-muted);pointer-events:none}
.teams-search-row input[type=search]{width:100%;min-height:var(--tg-control-height);padding:0 12px 0 38px;font-size:var(--tg-font-md)}
.teams-search-row .teams-search-clear{padding-left:10px;padding-right:10px}
.player-list-clear{align-self:center;color:#c0392b;font-weight:800;text-decoration:none;white-space:nowrap}
/* v6.388.0 — OYUNCULAR KOMPAKT FİLTRE. Arama tam genişlik, takım seçimi ve
   Filtrele tek satır; takım etiketi görsel olarak gizli ("Tüm Takımlar"
   seçeneği anlamı taşır, etiket ekran okuyucuda kalır). Arka uç filtresi
   DEĞİŞMEDİ (GET q/team_id, canlı arama yok). */
.player-list-filter.players-filter{display:grid;grid-template-columns:minmax(0,1fr) minmax(140px,220px) auto;align-items:center;gap:8px;margin-bottom:12px}
.players-filter .player-list-filter-q,.players-filter .players-filter-team{display:block;min-width:0}
.players-filter input[type=search],.players-filter select{width:100%;min-height:var(--tg-touch-min);color:var(--tg-text);font-weight:500}
.players-filter>.tg-btn{min-height:var(--tg-touch-min)}
.players-filter .player-list-clear{grid-column:1/-1;justify-self:start;display:inline-flex;align-items:center;min-height:var(--tg-touch-min)}
.players-empty-state>svg{display:block;margin:0 auto}
.players-empty-state .tg-btn{margin-top:12px}
.players-list-table td:first-child a{display:flex;align-items:center;gap:10px;color:inherit;text-decoration:none}
.players-list-avatar{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:10px;overflow:hidden;background:linear-gradient(135deg,#0b3762 0 50%,#f4b51f 50% 100%);color:#fff;font-size:13px;font-weight:900}
.players-list-avatar img{width:100%;height:100%;object-fit:cover}
.players-list-primary-badge{display:inline-block;margin-left:3px;padding:1px 6px;border-radius:999px;background:#eaf3ff;color:#1267dc;font-size:10px;font-weight:900;vertical-align:middle}
.v3-pagination{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;margin-top:16px}
.v3-pagination a,.v3-pagination span{display:grid;place-items:center;min-width:36px;min-height:36px;padding:5px 10px;border:1px solid var(--v3-line);border-radius:9px;background:#fff;color:#174f91;text-decoration:none;font-weight:800}
.v3-pagination span{border-color:#165fae;background:#165fae;color:#fff}
@media(max-width:720px){
  .player-list-filter{flex-direction:column;align-items:stretch}
  /* Sütun düzeninde 220px flex-basis YÜKSEKLİĞE dönüşüyordu (boş dev panel). */
  .player-list-filter-q{flex:0 0 auto}
  .player-list-filter.players-filter{grid-template-columns:minmax(0,1fr) auto}
  .players-filter .player-list-filter-q{grid-column:1/-1}
  .players-list-table th:nth-child(3),.players-list-table td:nth-child(3),.players-list-table th:nth-child(4),.players-list-table td:nth-child(4){display:none}
}
/* ═══ v6.303.0 (UX-10) — TABLO İÇİ BAĞLANTILARIN İSABET ALANI ═══
   Oyuncu listesindeki takım/oyuncu adları (52×19) ve puan durumunun grup
   filtresi (41×12) satır içi metin yüksekliğindeydi. Görünen kutu ve
   punto DEĞİŞMEZ; eksik yükseklik `.live-timeline-tools` ile AYNI
   canonical desende, kutunun dışına taşan görünmez bir `::after`
   katmanıyla kapatılır. Satır yoğunluğu ve kart yüksekliği korunur.
   İlk sütun bağlantısı zaten 36px avatarla yeterlidir — dışarıda. */
@media(max-width:760px){
  .players-list-table td:not(:first-child) a,
  .standings-group-picker nav a,
  .v3-standings-table td a{position:relative}
  .players-list-table td:not(:first-child) a::after,
  .standings-group-picker nav a::after,
  .v3-standings-table td a::after{
    content:'';position:absolute;left:0;right:0;top:50%;
    height:var(--tg-touch-min,44px);transform:translateY(-50%);
  }
  /* v6.325.0 (F-06) — KATMAN VARDI AMA KIRPILIYORDU.
     Yukarıdaki `::after` bandı takım adı hücresinde İŞE YARAMIYORDU:
     `.standings-team`, içindeki `strong` ve bağlantının KENDİSİ metni
     kısaltmak için `overflow:hidden` taşıyor ve bu, kutunun DIŞINA taşan
     dokunma katmanını 13px'lik satır yüksekliğine geri kırpıyordu —
     gerçek dokunma alanı 13px'ti (tarayıcı hit-test ölçümü). `hidden`
     yerine `clip` kullanmak, YALNIZ yatay eksende kırpıp dikey ekseni
     serbest bırakmaya izin verir: üç nokta (`text-overflow:ellipsis`)
     ve hücre geometrisi BİREBİR korunur, katman ise dışarı çıkabilir.
     Yeni bir desen değil; var olan desenin önündeki engelin kaldırılması. */
  .v3-standings-table td.standings-team,
  .v3-standings-table td.standings-team>strong,
  .v3-standings-table td.standings-team>strong>a{overflow-x:clip;overflow-y:visible}
}

/* v6.77.0 — Oyuncu Sistemi Faz F2: Esame (match-squad.php) + match-live.php'deki "Esame" bağlantısı. */
.live-esame-link{display:inline-flex;align-items:center;padding:8px 14px;border-radius:10px;background:#eaf3ff;color:#1267dc;font-weight:800;text-decoration:none;white-space:nowrap}
.esame-teams-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.esame-team-section h2{margin:0}
.esame-status-pill{display:inline-block;padding:3px 9px;border-radius:999px;background:#edf1f5;color:#5f7080;font-size:11px;font-weight:900}
.esame-status-pill.is-submitted{background:#e8f8ed;color:#17863d}
.esame-limits-hint{margin:0 0 12px;color:var(--v3-muted);font-size:12px}
.esame-roster-list{display:grid;gap:6px;margin-bottom:14px}
.esame-roster-row{display:grid;grid-template-columns:32px 1fr auto auto;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid #edf1f5}
.esame-roster-shirt{font-weight:800;color:var(--v3-muted);text-align:center}
.esame-roster-row select{min-height:38px;border:1px solid var(--v3-line);border-radius:8px;padding:0 8px;background:#fff}
.esame-roster-row.is-suspended select{opacity:.6;cursor:not-allowed}
.esame-suspended-badge{white-space:nowrap}
.esame-list-heading{margin:14px 0 8px;font-size:14px}
.esame-list-heading:first-child{margin-top:0}
.esame-readonly-list{list-style:none;margin:0 0 6px;padding:0;display:grid;gap:5px}
.esame-readonly-list li{padding:6px 0;border-bottom:1px solid #edf1f5}
.esame-readonly-list li b{display:inline-block;min-width:22px;color:var(--v3-muted);margin-right:6px}
@media(max-width:720px){.esame-teams-grid{grid-template-columns:1fr}}

/* v6.81.0 — Oyuncu Sistemi Faz H: Oyuncu Havuzu kart ızgarası
   (player-pool.php). players-list-avatar İLE AYNI görsel dil (yeni bir
   tasarım dili İCAT EDİLMEDİ) — yalnız kart boyutu daha büyük (foto/yaş/
   konum/pozisyon/bio/kariyer taşıdığı için). Mobile-first: tek sütun
   varsayılan, geniş ekranda ızgaraya genişler. */
.pool-card-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:14px}
.pool-card{display:flex;gap:12px;padding:14px;border:1px solid var(--v3-line);border-radius:12px;background:var(--tg-surface)}
.pool-card-avatar{display:grid;place-items:center;width:56px;height:56px;flex:0 0 56px;border-radius:14px;overflow:hidden;background:linear-gradient(135deg,#0b3762 0 50%,#f4b51f 50% 100%);color:#fff;font-size:20px;font-weight:900}
.pool-card-avatar img{width:100%;height:100%;object-fit:cover}
.pool-card-body{min-width:0;flex:1 1 auto}
.pool-card-body h3{margin:0 0 3px;font-size:15px;font-weight:900;color:#0d2743}
.pool-card-meta{display:flex;flex-wrap:wrap;gap:6px 10px;margin-bottom:6px;color:var(--v3-muted);font-size:12px;font-weight:700}
.pool-card-positions{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.pool-card-position-badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#eaf3ff;color:#1267dc;font-size:10px;font-weight:900}
.pool-card-position-badge.is-primary{background:#0b3762;color:#fff}
.pool-card-bio{margin:0 0 6px;color:#425873;font-size:12px;line-height:1.4}
.pool-card-career{color:var(--v3-muted);font-size:11px;font-weight:700}
@media(max-width:720px){
  .pool-card{flex-direction:row}
  .pool-card-avatar{width:46px;height:46px;flex:0 0 46px;font-size:16px}
}

/* v6.92.0 — Oyuncu Sistemi Faz K: transfer talebi/onay kuyruğu */
.players-transfer-cta{display:inline-block;margin-left:8px;font-size:.82rem;white-space:nowrap}
.transfer-queue-item{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.transfer-queue-item .tg-inline-actions{display:flex;gap:8px;flex-wrap:wrap}
.transfer-queue-item .transfer-reject-form{flex:1 1 240px;max-width:420px}

/* v6.94.0 — Pre-Faz-L: takım-bazlı appearance doğrulama satırları */
.live-appearance-confirmations{margin-top:14px;display:flex;flex-direction:column;gap:8px}
.live-appearance-confirmation-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.live-appearance-confirmation-row form{display:inline}

/* v6.116.0 — Competition Engine PHASE 6B.4b.1: Basit Mod format kartları.
   KÖK NEDEN (6B.4b görsel regresyonu): app.css'in EN ÜSTÜNDEKİ global
   `input,select,textarea{width:100%;padding:11px;border:...}` kuralı
   radio'ya da uygulanıyordu; radio ~1150px yer kaplıyor, metin gövdesine
   0px kalıyor ve gövde kartın SAĞ DIŞINA taşıyordu. Repo bu tuzağı zaten
   biliyor (`.check-line input`, `.v3-choice-card input` aynı sebeple
   `width:auto` veriyor) — burada scope'lama atlanmıştı.
   Global `label`/`input` kuralları DEĞİŞTİRİLMEDİ; yalnız bu bileşen
   kapsamında ezilir. */
/* v6.220.0 — Basit Mod yeniden tasarımı: kartlar 6 teknik şablonu değil 4
   ANA FORMAT AİLESİNİ temsil eder. Bileşenin ÖLÇÜ sözleşmesi (radio
   scope'u, sabit kenarlık, esneyen gövde, görünür odak) BİREBİR korundu;
   değişen yalnız renk kaynağıdır: hardcoded hex/`--blue` yerine semantik
   token (§28 — ekranlar arası tek görsel dil). */
.structure-format-choice{border:0;padding:0;margin:0;min-width:0}
.structure-format-choice > legend{display:flex;align-items:center;gap:var(--tg-space-2);
  font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black);margin:0 0 var(--tg-space-3);padding:0}
/* v6.220.2 — DÖRT KART MASAÜSTÜNDE TEK SIRA (§3).
   `auto-fit` bırakıldığında sütun sayısı yalnız genişliğe bağlıydı ve ara
   ölçülerde 3+1 gibi dengesiz bir kırılma üretiyordu. Sütun sayısı artık
   kırılma noktasına göre AÇIKÇA verilir: taban 2×2, geniş masaüstünde
   (≥1280px, iki kolon düzeninin rahat sığdığı ölçü) 4×1. Sabit px kart
   genişliği YOKTUR — sütunlar `minmax(0,1fr)` ile paylaşır. */
.structure-format-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tg-space-2)}
/* Kart artık DİKEY hiyerarşidir: görsel → ad → açıklama. Radio gerçek ve
   erişilebilir kalır; yalnız kartın sağ üst köşesine konumlanır (sahte
   tıklanabilir div ya da `appearance:none` sahte gösterge YOKTUR). */
.structure-format-card{position:relative;display:flex;align-items:stretch;gap:10px;padding:var(--tg-space-3) var(--tg-space-2);margin:0;
  min-height:var(--tg-touch-min);min-width:0;font-weight:400;color:var(--tg-text);
  /* Kenarlık ÖLÇÜSÜ sabit: seçim yalnız RENK/zemin değiştirir, layout
     kaymaz (fractional 0.8px→1.6px sıçraması kaldırıldı). */
  border:2px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface);cursor:pointer}
.structure-format-card input[type="radio"]{
  /* Global input kuralının ezilmesi — bileşen kapsamında. */
  position:absolute;top:8px;right:8px;z-index:1;
  width:auto;min-width:0;flex:0 0 auto;margin:0;padding:0;border-radius:0;accent-color:var(--tg-action-primary)}
.structure-format-card-body{display:flex;flex-direction:column;align-items:center;text-align:center;
  gap:var(--tg-space-1);min-width:0;flex:1 1 auto}
/* Dört görselin OPTİK AĞIRLIĞI eşitlenir: hepsi aynı yükseklikteki kutuya
   `contain` ile oturur, viewBox oranları farklı olsa da satır hizası
   bozulmaz ve kart gereksiz uzamaz. */
.structure-format-card-icon{display:flex;align-items:center;justify-content:center;
  width:100%;height:54px;margin-bottom:2px;color:var(--tg-text-muted)}
.structure-format-card-art{display:block;width:auto;max-width:100%;height:100%;object-fit:contain;opacity:.62}
.structure-format-card-body strong{font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);overflow-wrap:anywhere}
.structure-format-card-body small{color:var(--tg-text-muted);font-size:var(--tg-font-sm);line-height:1.4;overflow-wrap:anywhere}
.structure-format-card.is-selected{border-color:var(--tg-action-primary);background:var(--tg-action-primary-soft)}
.structure-format-card.is-selected .structure-format-card-icon{color:var(--tg-action-primary)}
/* Seçili kartta görsel ve ad ÖNE ÇIKAR; ölçü değişmez, yalnız ton/renk. */
.structure-format-card.is-selected .structure-format-card-art{opacity:1}
.structure-format-card.is-selected .structure-format-card-body strong{color:var(--tg-action-primary)}
.structure-format-card:hover{border-color:var(--tg-action-primary)}
.structure-format-card:hover .structure-format-card-art{opacity:.85}
.structure-format-card:focus-within{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.structure-format-choice[disabled] .structure-format-card{opacity:.6;cursor:default}
.is-hidden{display:none !important}

/* v6.117.0 — Competition Engine PHASE 6B.4c: Gelişmiş Yapı Builder.
   6B.4b.1'in dersi burada BAŞTAN uygulanır: global
   `input,select,textarea{width:100%;padding:11px}` kuralı radio/checkbox'a
   da vurduğu için seçim kartlarında bileşen kapsamında EZİLİR. Global
   kurallara DOKUNULMAZ.
   §44 — bu paket fonksiyonel builder'dır; genel görsel standardizasyon
   ileride ayrı bir UI/UX fazında yapılacaktır. Buradaki hedef: temiz,
   taşmayan, mobilde kullanılabilir. */
/* PD-UX15 — tek yönlü mod anahtarının (builder mode switch) kuralları
   KALDIRILDI: o markup artık üretilmiyor, yerini iki ekranın paylaştığı
   `.structure-mode-tabs` sekme çubuğu aldı. DS-085 dokunma hedefi
   sözleşmesi yeni çubukta sürüyor. */
/* v6.220.0 — mod sekmesi kalktı (Basit Mod baskın deneyim); "Özel yapı"
   etiketi bilgi kutusunun içinde kalır ve semantik token'a taşındı. */
.structure-custom-badge{display:inline-block;align-self:center;padding:4px 12px;border-radius:var(--tg-radius-pill);
  border:1px solid var(--tg-status-warning);background:var(--tg-status-warning-soft);color:var(--tg-status-warning);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);
  overflow-wrap:anywhere}
.structure-custom-notice{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2)}
/* v6.173.0 — Faz 6A (UXA-172): açıklama iki cümleye indi; `opacity` yerine
   token'lı muted renk (soluklaştırma kontrastı düşürüyordu). */
.builder-switch-note{margin:0 0 8px;color:var(--tg-text-muted);font-size:var(--tg-font-sm);line-height:1.45;overflow-wrap:anywhere}
.builder-conversion-note{margin-bottom:14px}
/* Format bölümü başlığı: iç içe kart hissini azaltan kompakt aralık. */
.structure-format-heading{margin-bottom:10px}

/* ═══════════════════════════════════════════════════════════════════
   v6.220.0 — TURNUVA YAPISI / BASİT MOD YENİDEN TASARIMI
   ═══════════════════════════════════════════════════════════════════
   Üç bölümlü bilgi mimarisi (Format Seç · Detayları Belirle · Önizle ve
   Kaydet) + "Oluşacak Turnuva" görsel önizlemesi.

   Yeni bir tasarım sistemi KURULMADI: yüzeyler `.tg-card`/`.v3-panel`
   ailesinden, butonlar `.tg-btn`'den, alanlar `.tg-field`/`.tg-select`ten
   gelir. Bu bloktaki HER renk semantik token'dandır — hardcoded hex
   YOKTUR. Yarıçap ailesi `--tg-radius-lg` (kart) / `-md` (düğüm); bu
   projede `--tg-radius-xl` diye bir token YOKTUR.

   Renk semantiği (§16): grup kutuları TEK bir aile (`info`), eleme
   turları başka bir aile (`special`), final güçlü vurgu (`success`), ön
   eleme `warning`. Bunlar DURUM/severity anlamı taşımaz — yalnız
   aşamaları birbirinden ayırır ve beyaz taban baskın kalır. */
.structure-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--tg-space-4);align-items:start}
.structure-form-column{display:flex;flex-direction:column;gap:var(--tg-space-4);min-width:0}
.structure-step{background:var(--tg-surface);border:1px solid var(--tg-border);border-radius:var(--tg-radius-lg);
  padding:var(--tg-space-4);box-shadow:var(--tg-shadow-card);min-width:0}
.structure-step-title{display:flex;align-items:center;gap:var(--tg-space-2);margin:0 0 var(--tg-space-3);
  font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
/* Adım numarası: ağır bir wizard kurmadan üç aşamayı hissettirir. */
.structure-step-index{display:inline-grid;place-items:center;width:26px;height:26px;flex:0 0 26px;
  border-radius:var(--tg-radius-pill);background:var(--tg-action-primary-soft);color:var(--tg-action-primary);
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black)}
/* §6 — SEÇİLİ FORMAT ↔ AYAR PANELİ BAĞI. Panel, seçili kartla AYNI accent
   ailesini (`action-primary`) ve AYNI görseli taşır; başlığı da hangi
   formatın ayarı olduğunu söyler ("Lig Ayarları"). Accent şeridi KOŞULSUZ
   verilir — seçim değişince kutu ölçüsü değişmez, layout zıplamaz. */
.structure-step-details{border-top:3px solid var(--tg-action-primary)}
.structure-details-title{flex-wrap:wrap}
.structure-details-mark{display:inline-flex;align-items:center;justify-content:center;
  width:42px;height:30px;flex:0 0 42px;padding:3px 5px;
  border-radius:var(--tg-radius-sm);background:var(--tg-action-primary-soft);color:var(--tg-action-primary)}
.structure-details-mark[hidden]{display:none}
.structure-details-art{display:block;width:auto;max-width:100%;height:100%;object-fit:contain}
.structure-suboption{border:0;margin:0 0 var(--tg-space-3);padding:0;min-width:0}
.structure-suboption > legend{margin:0 0 var(--tg-space-2);padding:0;
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
.structure-suboption[hidden],.structure-field[hidden],.structure-preliminary-target[hidden]{display:none}
/* `.check-line` kendi ölçüsünü taşımaz ve gövde ölçüsünü devralır; bu
   ekranda onay satırları alan etiketleriyle AYNI hiyerarşide kalmalı. */
.structure-step .check-line{margin:0 0 var(--tg-space-2);
  font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-bold);line-height:1.35}
.structure-step .check-line input{flex:0 0 auto}
.structure-suboption-grid{display:flex;flex-wrap:wrap;gap:var(--tg-space-2)}
/* Alt seçim çipi — gerçek radio taşır, sahte tıklanabilir div DEĞİLDİR. */
.structure-choice-chip{display:inline-flex;align-items:center;gap:8px;margin:0;padding:8px 14px;
  min-height:var(--tg-touch-min);border:2px solid var(--tg-border);border-radius:var(--tg-radius-pill);
  background:var(--tg-surface);color:var(--tg-text);font-size:var(--tg-font-sm);
  font-weight:var(--tg-font-weight-bold);cursor:pointer}
.structure-choice-chip input{width:auto;min-width:0;flex:0 0 auto;margin:0;padding:0;border-radius:0}
.structure-choice-chip:has(input:checked){border-color:var(--tg-action-primary);
  background:var(--tg-action-primary-soft);color:var(--tg-action-primary)}
.structure-choice-chip:focus-within{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.structure-suboption[disabled] .structure-choice-chip{opacity:.6;cursor:default}
.structure-field{margin:0 0 var(--tg-space-3);min-width:0}
.structure-field .tg-select{max-width:220px}
.structure-preliminary{border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);
  padding:var(--tg-space-3);background:var(--tg-surface-soft)}
.structure-preliminary > legend{margin-left:var(--tg-space-2);padding:0 6px}
.structure-preliminary-toggle{margin:0}
.structure-knockout-options{border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);
  padding:var(--tg-space-3);background:var(--tg-surface-soft)}
.structure-knockout-options > legend{margin-left:var(--tg-space-2);padding:0 6px}
.structure-knockout-form{margin:0}
.structure-save-bar{display:flex;flex-wrap:wrap;gap:var(--tg-space-2)}
.structure-save-button{min-width:200px}
.structure-flow-hint{margin-top:var(--tg-space-2)}
/* v6.225.0 — UZUN / KISA METİN İKİLİSİ. Aynı bilgi iki sürümde basılır ve
   yalnız BİRİ gösterilir; `display:none` görünmeyeni erişilebilirlik
   ağacından da kaldırır, böylece ekran okuyucu aynı cümleyi iki kez
   okumaz. Masaüstü varsayılanı UZUN sürümdür — mobil kısaltma masaüstüne
   sızmaz (§2). */
.structure-short-copy{display:none}
.structure-locked-notice{margin:0}
.structure-errors ul{margin:6px 0 0;padding-left:18px}
/* PD-62 (v6.382.4) — sekmeler + durum kutusu (`.structure-mode-head`) DOM'da
   önce gelir, ardından önizleme ve form kolonu (v6.381.0 önizleme-önce SUPERSEDED). */
.structure-mode-head{display:flex;flex-direction:column;gap:var(--tg-tab-section-gap);min-width:0}
.structure-mode-head>.structure-mode-tabs{margin:0}
/* Sekme çubuğu ile önizleme / içerik arası canonical sekme aralığı — grid satır aralığı. */
.structure-layout.structure-layout--mode-first{row-gap:var(--tg-tab-section-gap);margin-top:var(--tg-tab-section-gap)}
/* ALT BÖLÜM: kilit cümlesi → (kura gerekmiyorsa kısa not) → aksiyonlar.
   İkincil aksiyon solda, sıradaki adım CTA'sı sağa yaslı. */
.structure-footer{display:flex;flex-direction:column;gap:var(--tg-space-3);margin-top:var(--tg-space-4);min-width:0}
.structure-footer-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--tg-space-2)}
.structure-footer-secondary{margin-right:auto}
.structure-footer-copy{margin:0}

/* ── OLUŞACAK TURNUVA ─────────────────────────────────────────────── */
.structure-preview-column{min-width:0}
.structure-preview-card{background:var(--tg-surface);border:1px solid var(--tg-border);
  border-radius:var(--tg-radius-lg);padding:var(--tg-space-4);box-shadow:var(--tg-shadow-card);min-width:0}
.structure-preview-head{display:flex;align-items:flex-start;justify-content:space-between;
  gap:var(--tg-space-3);margin-bottom:var(--tg-space-3)}
.structure-preview-head h2{margin:0 0 4px;font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black)}
/* §15 — NÖTR rozet: danger/alarm tonu kullanılmaz, şemanın rengi değişmez. */
.structure-preview-badge{flex:0 0 auto;padding:4px 10px;border-radius:var(--tg-radius-pill);
  background:var(--tg-status-neutral-soft);color:var(--tg-status-neutral);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);white-space:nowrap}
.structure-preview-badge[hidden]{display:none}
.structure-preview-empty,.structure-preview-invalid{margin:0;padding:var(--tg-space-4) var(--tg-space-3);
  border:1px dashed var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft);
  color:var(--tg-text-muted);font-size:var(--tg-font-sm);line-height:var(--tg-line-height);text-align:center;
  overflow-wrap:anywhere}
.structure-preview-total{margin:var(--tg-space-3) 0 0;padding-top:var(--tg-space-3);
  border-top:1px solid var(--tg-border);color:var(--tg-text);
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black)}

/* ═══ ZİNCİR = DİYAGRAM (v6.220.2, §8/§9) ═══
   Bu bölüm SUNUMDUR: read-model, düğüm verisi, sınıf sözleşmesi ve
   sunucu/istemci markup pariteği DEĞİŞMEDİ — yalnız aynı düğümler artık
   dikey bir "kart listesi" gibi değil, akan bir turnuva şeması gibi
   çizilir. Bağlantıların tamamı STATİK CSS'tir: animasyon, canvas,
   diyagram kütüphanesi, sürüklenebilir düğüm ve zoom YOKTUR.

   Boşluk tek bir yerel değişkendedir; bağlantı çizgilerinin boyu ona
   bağlıdır, böylece ölçü tek yerden değişir ve çizgiler kaymaz. */
.structure-chain{--tg-chain-gap:22px;list-style:none;display:flex;flex-direction:column;align-items:stretch;
  gap:var(--tg-chain-gap);margin:0;padding:0;min-width:0}
/* §19 — AİLEYE GÖRE YERLEŞİM. Eleme ağırlıklı yapılarda turlar arası
   boşluk daralır: birleşme zaten turun içinde çizildiği için aralar
   gereksiz uzamaz ve ağaç tek bakışta okunur. Zincirin İÇERİĞİ bu
   anahtardan ETKİLENMEZ. */
.structure-chain[data-layout="bracket"],
.structure-chain[data-layout="hybrid"]{--tg-chain-gap:16px}
.structure-chain-item{position:relative;min-width:0}
/* Aşamalar arası statik bağlantı çizgisi (ilk öğe hariç). */
.structure-chain-item + .structure-chain-item::before{content:"";position:absolute;
  top:calc(var(--tg-chain-gap) * -1);left:50%;width:2px;height:var(--tg-chain-gap);
  background:var(--tg-border-strong)}
/* Akış YÖNÜ görünür olsun diye çizginin ucunda küçük bir chevron. Kendi
   çatalını çizen düğümlerde (eleme turları) ve yan dalda TEKRARLANMAZ. */
.structure-chain-item + .structure-chain-item:not(:has(.structure-node-third_place))::after{
  content:"";position:absolute;top:-8px;left:50%;width:7px;height:7px;
  border-right:2px solid var(--tg-border-strong);border-bottom:2px solid var(--tg-border-strong);
  transform:translate(-50%,-50%) rotate(45deg)}
/* ── DÜĞÜM TABANI: HER ŞEY MERKEZ EKSENDE (v6.222.0 §20) ───────────
   Akış tek bir dikey eksende okunur; sola yaslı "rapor satırı" görünümü
   kalktı. Aşama kimliği rengi (tone) artık ÜST kenardadır: ortalanmış
   içerikle simetrik durur. Renk DEĞERLERİ değişmedi (§21). */
.structure-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;
  width:100%;margin:0;padding:10px 12px;
  border:1px solid var(--tg-border);border-top:3px solid var(--tg-border-strong);
  border-radius:var(--tg-radius-md);background:var(--tg-surface);color:var(--tg-text);
  font:inherit;text-align:center;min-width:0}
button.structure-node{cursor:pointer}
button.structure-node:hover{border-color:var(--tg-action-primary);background:var(--tg-surface-soft)}
button.structure-node:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.structure-node-label{font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);line-height:1.3;overflow-wrap:anywhere}
/* §10/§19 — düğüm KOMPAKT: aynı bilgi iki kez yazılmaz, meta tek satırda
   "2 grup · 9 maç" olarak ve ORTALI okunur. */
.structure-node-meta{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:0 6px;
  color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.structure-node-meta > * + *::before{content:"·";margin-right:6px;color:var(--tg-border-strong)}
.structure-node-note{color:var(--tg-text-muted);font-size:var(--tg-font-xs);line-height:1.4;overflow-wrap:anywhere}

/* ═══ İKİ BİLGİ TÜRÜ, İKİ GÖRSEL AĞIRLIK (§2) ═══════════════════════
   `is-role-stage` = GERÇEK turnuva aşaması (grup, lig, eleme turu, ön
   eleme, 3.'lük, sonuç) — ana görsel ağırlık bunlarda.
   `is-role-info`  = GEÇİŞ/AÇIKLAMA bilgisi (katılımcı sayısı, eleme
   aşamasına geçen takım sayısı, çift maç notu) — aşama DEĞİLDİR, bu
   yüzden aşama kadar yer kaplamaz.

   Rol sunucuda ve istemcide AYNI kuralla türetilir
   (`competition_preview_node_role()` / `nodeRole()`); burada yalnız
   çizilir. */

/* ── GEÇİŞ BİLGİSİ: bağlantı üzerinde küçük, sakin bir etiket ─────── */
.structure-node.is-role-info{width:fit-content;max-width:100%;margin-inline:auto;
  gap:0;padding:5px 14px;
  border:1px solid var(--tg-border);border-top-width:1px;border-radius:var(--tg-radius-pill);
  background:var(--tg-surface-soft);color:var(--tg-text-muted);box-shadow:none}
.structure-node.is-role-info .structure-node-label{font-size:var(--tg-font-xs);
  font-weight:var(--tg-font-weight-bold);line-height:1.35}
/* §10 — AYNI BİLGİ İKİ KEZ YAZILMAZ: bu düğümlerin etiketi zaten sayıyı
   içerir ("9 takım turnuvaya katılır", "8 Takım Eleme Aşamasına Geçer");
   altındaki meta satırı yalnız tekrardır. `display:none` metni
   erişilebilirlik ağacından da kaldırır — bilgi KAYBOLMAZ. */
.structure-node.is-role-info .structure-node-meta{display:none}

/* ── AŞAMA KADEMELERİ: turnuva daraldıkça kart da daralır (§6/§15) ──
   Dört kontrollü kademe; düğüm başına keyfi genişlik hesabı YOKTUR.
   Kademe, read-model'de zaten bulunan takım sayısından sınıflandırılır
   (`competition_preview_node_size()`), genişlik değeri burada durur.
   `min-width` okunabilirlik tabanıdır: dar sağ kolonda kart asla
   okunamayacak kadar daralmaz. */
.structure-node.is-role-stage{margin-inline:auto;min-width:min(100%,196px)}
.structure-node.is-role-stage.is-size-lg{width:100%}
.structure-node.is-role-stage.is-size-md{width:min(100%,86%)}
.structure-node.is-role-stage.is-size-sm{width:min(100%,72%)}
.structure-node.is-role-stage.is-size-xs{width:min(100%,60%)}
/* Ana aşama başlığı gövde metninden güçlüdür (§19 — birinci seviye). */
.structure-node.is-role-stage .structure-node-label{font-size:var(--tg-font-md)}

/* ── SONUÇ DÜĞÜMLERİ: akışın kapanışı ─────────────────────────────── */
.structure-node-outcome{background:var(--tg-surface-soft);color:var(--tg-text-muted)}
.structure-node-outcome .structure-node-label{font-size:var(--tg-font-sm)}
/* §10 — ŞAMPİYON: EN KOMPAKT ama en güçlü final durumu. Poster/kupa kartı
   DEĞİL; sağ kolonun yarısını kaplamaz ve gerçek takım sonucu üretmez.
   Kademe kuralından SONRA ve ondan daha yüksek özgüllükle yazılır ki
   "en küçük" kademeden de bir tık daha kompakt kalabilsin. */
.structure-node.is-role-stage.structure-node-outcome.is-tone-final{width:min(100%,52%);
  min-width:min(100%,150px);color:var(--tg-text);
  border-color:var(--tg-status-success);border-top-color:var(--tg-status-success);
  background:var(--tg-status-success-soft)}
.structure-node-outcome.is-tone-final .structure-node-label{font-size:var(--tg-font-md);letter-spacing:.01em}

/* ── GRUPLAR: ızgarada yan yana kutular ────────────────────────────
   §12/§17 — gruplar TEK KUTUDA "4 Grup" diye özetlenmez; her grup ayrı
   kutudur ve gerçek canonical kapasitesini gösterir (eşitsiz dağılım
   dahil). PD-UX15: kutuları tek sıraya bağlayan ray ve dallar kaldırıldı. */
/* PD-UX15 — SATIR BAŞINA EN FAZLA 4 GRUP, DOĞAL SARMA, YATAY KAYDIRMA YOK.
   5–6 grupta üç sütun (3+2 / 3+3) daha dengeli görünür; 7+ grupta dört
   sütuna sabitlenir (7 → 4+3, 8 → 4+4, 12 → 4+4+4). Kutular okunamayacak
   kadar KÜÇÜLTÜLMEZ; sığmayan grup alt satıra iner.
   Grup KİMLİĞİ ve SIRASI presentation'dan etkilenmez — hangi kutunun
   çizileceği read-model'den gelir, CSS yalnız kaç sütun olacağını söyler. */
.structure-node-boxes{--tg-preview-cols:4;position:relative;list-style:none;width:100%;
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:7px;margin:16px 0 0;padding:0}
.structure-node-boxes:has(> :nth-child(2):last-child){--tg-preview-cols:2;grid-template-columns:repeat(2,minmax(0,1fr))}
.structure-node-boxes:has(> :nth-child(3):last-child){--tg-preview-cols:3;grid-template-columns:repeat(3,minmax(0,1fr))}
.structure-node-boxes:has(> :nth-child(4):last-child){--tg-preview-cols:4;grid-template-columns:repeat(4,minmax(0,1fr))}
/* 5 ve 6 grup: 3+2 ve 3+3 — dört sütunda 4+1 / 4+2 kalırdı. */
.structure-node-boxes:has(> :nth-child(5):last-child),
.structure-node-boxes:has(> :nth-child(6):last-child){--tg-preview-cols:3;grid-template-columns:repeat(3,minmax(0,1fr))}
/* 9 grup: 3+3+3. */
.structure-node-boxes:has(> :nth-child(9):last-child){--tg-preview-cols:3;grid-template-columns:repeat(3,minmax(0,1fr))}
/* 7+ grup dört sütunda sarar (7 → 4+3, 8 → 4+4, 12 → 4+4+4). */
.structure-node-boxes:has(> :nth-child(7)){--tg-preview-cols:4;grid-template-columns:repeat(4,minmax(0,1fr))}
/* PD-UX15 — GRUP İÇİ DALLANMA ÇİZGİLERİ KALDIRILDI.
   Sap + yatay ray + her kutuya inen dal, çok satırlı ızgarada kesiliyor
   ve ikinci satırdaki kutular bağlantısız görünüyordu. Gruplar zaten Grup
   Aşaması kartının İÇİNDE duruyor; aidiyeti kutunun konumu anlatıyor.
   Aşamalar ARASI dikey akış (`.structure-chain-item` konnektörleri)
   DEĞİŞMEDİ. */
/* §14 — GRUP KUTULARI ANA AŞAMANIN ALTINDA DURUR (subordinate): ana
   "Grup Aşaması" kartı güçlüdür, tek tek gruplar ondan daha hafif bir
   yüzeydir. Mesaj: "Bu bir Grup Aşaması, içinde N grup var." */
/* v6.224.0 (§12) — grup kutuları gereksiz küçültülmez: 2–4 gruplu tipik
   senaryoda "Grup A / 5 takım" rahat okunur. Ana aşama tinted olduğu için
   kutular BEYAZ zeminde öne çıkar; hiyerarşi (§14) korunur. */
.structure-node-box{position:relative;display:flex;flex-direction:column;gap:2px;padding:9px 7px;
  border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm);background:var(--tg-surface);
  font-size:var(--tg-font-xs);text-align:center;align-items:center;min-width:0}
.structure-node-box strong{font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);overflow-wrap:anywhere}
.structure-node-box span{color:var(--tg-text-muted)}
/* Aşama kimliği — renk yalnız okunabilirliği artırır, DURUM anlatmaz;
   anlam her zaman metinle de taşınır (§16/§27). Renk DEĞERLERİ v6.222.0'da
   değişmedi; yalnız accent kenarı sola değil ÜSTE taşındı (§20 simetri). */
/* v6.224.0 (§7/§18) — GERÇEK AŞAMALARIN ORTAK YÜZEY SÖZLEŞMESİ.
   "Beyaz zemin + renkli üst çizgi" tek başına yeterli değildi: aşama
   kartları rastgele farklı diller konuşuyordu. Artık HER gerçek aşama
   aynı reçeteyi kullanır — çok düşük yoğunluklu semantik soft zemin +
   tonlu kenarlık + tonlu üst accent. Yoğunluk tek yerden, `--tg-stage-fill`
   ile ayarlanır; yeni hex ya da hardcoded opacity ÜRETİLMEZ. */
.structure-node.is-role-stage{--tg-stage-fill:52%}
.structure-node.is-tone-group{border-color:color-mix(in srgb,var(--tg-status-info) 24%,var(--tg-border));
  border-top-color:var(--tg-status-info);
  background:color-mix(in srgb,var(--tg-status-info-soft) var(--tg-stage-fill),var(--tg-surface))}
.structure-node.is-tone-merge{border-color:var(--tg-status-info);background:var(--tg-status-info-soft);
  color:var(--tg-status-info)}
.structure-node.is-tone-league{border-color:color-mix(in srgb,var(--tg-status-info) 24%,var(--tg-border));
  border-top-color:var(--tg-status-info);
  background:color-mix(in srgb,var(--tg-status-info-soft) var(--tg-stage-fill),var(--tg-surface))}
/* §16 — Ön Eleme gerçek aşamadır: boş beyaz kart gibi durmaz. */
.structure-node.is-tone-preliminary{border-color:color-mix(in srgb,var(--tg-status-warning) 24%,var(--tg-border));
  border-top-color:var(--tg-status-warning);
  background:color-mix(in srgb,var(--tg-status-warning-soft) var(--tg-stage-fill),var(--tg-surface))}
/* §2/§8/§9 — Çeyrek Final · Yarı Final · Final AYNI görsel ailededir. */
.structure-node.is-tone-knockout{border-color:color-mix(in srgb,var(--tg-status-special) 24%,var(--tg-border));
  border-top-color:var(--tg-status-special);
  background:color-mix(in srgb,var(--tg-status-special-soft) var(--tg-stage-fill),var(--tg-surface))}
/* §10/§17 — FİNAL: aynı ailenin BİR TIK GÜÇLÜ hâli. Yeşil dolu ayrı bir
   bileşen DEĞİL; outcome'a geçiş Şampiyon düğümünde olur. */
.structure-node-knockout.is-tone-final{--tg-stage-fill:88%;
  border-color:color-mix(in srgb,var(--tg-status-special) 40%,var(--tg-border));
  border-top-color:var(--tg-status-special);
  background:color-mix(in srgb,var(--tg-status-special-soft) var(--tg-stage-fill),var(--tg-surface))}
/* Şampiyon dışındaki `is-tone-final` (yalnız sonuç düğümü) success ailesinde
   kalır — aşağıdaki Şampiyon kuralı onu kendi kompakt hâliyle devralır. */
.structure-node.is-tone-hint{border-color:var(--tg-border);background:var(--tg-surface-soft);
  color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.structure-node.is-tone-hint .structure-node-label{font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold)}
/* Başlangıç bilgisi aksiyon değil BİLGİdir: sakin nötr hap (§3). */
.structure-node-start{border-color:var(--tg-border-strong)}

/* ═══ ELEME TURLARI: GERÇEK AĞAÇ/BRACKET HİSSİ (v6.223.0, §7/§8) ═══
   Önceki sürümde tur kartının ÜSTÜNE tek bir ⊔ çatalı çiziliyordu; bu
   "kart biraz küçüldü" hissinden öteye geçmiyordu. Artık birleşme turun
   KENDİ İÇİNDE, katılımcı başına çizilir: tur, katılımcı sayısı kadar
   yapısal slot taşır ve slotlar İKİŞER İKİŞER birleşir. Bir sonraki tur
   yarısı kadar slot taşıdığı için daralma hem kart genişliğinden hem DAL
   SAYISINDAN okunur (§11).

   Slotlar GERÇEK TAKIM DEĞİLDİR: ad/logo/eşleşme/kura taşımazlar, DOM'da
   `aria-hidden`'dır (aynı sayı meta satırında metin olarak zaten var) ve
   hiçbir domain hesabı üretmezler — sayı read-model'deki `teams`'tir,
   ikişerli birleşme ise saf CSS (`:nth-child(odd)`). */
.structure-bracket-slots{--tg-bracket-gap:18px;--tg-bracket-size:22px;--tg-bracket-merge:11px;
  --tg-bracket-stroke:2px;--tg-bracket-radius:5px;
  display:flex;flex-wrap:nowrap;justify-content:center;align-items:flex-start;
  gap:var(--tg-bracket-gap);list-style:none;
  margin:11px 0 calc(var(--tg-bracket-merge) + 9px);padding:0;max-width:100%}
.structure-bracket-slot{position:relative;flex:0 0 auto;
  width:var(--tg-bracket-size);height:var(--tg-bracket-size);
  border-radius:var(--tg-bracket-radius);
  border:var(--tg-bracket-stroke) solid var(--tg-bracket-line,var(--tg-border-strong));
  background:var(--tg-surface)}
/* Her ÇİFT bir eşleşmedir: iki slot alttan birleşir (2 → 1). Genişlik
   YÜZDEYLE değil token'la verilir: yüzde, konumlanmış öğenin PADDING
   kutusuna göre çözülür ve slotun kenarlığı kadar (2 × 1.5px) eksik
   kalırdı. `slot + boşluk` tam olarak iki slot merkezi arası mesafedir. */
.structure-bracket-slot:nth-child(odd)::after{content:"";position:absolute;
  top:calc(100% + 4px);left:50%;
  width:calc(var(--tg-bracket-size) + var(--tg-bracket-gap));height:var(--tg-bracket-merge);
  border:var(--tg-bracket-stroke) solid var(--tg-bracket-line,var(--tg-border-strong));border-top:0;
  border-radius:0 0 var(--tg-bracket-radius) var(--tg-bracket-radius)}
/* v6.224.0 (§4/§5) — YAYGIN SENARYOLARDA MİKRO BOYUT KULLANILMAZ.
   2/4 slot (Yarı Final, Final, 3.'lük) en büyük ölçüde durur; 8 slot
   (Çeyrek Final) ilk bakışta sayılabilir kalır. Ancak yoğun turlarda
   (16/32) ölçek küçülmeye devam eder ki dar sağ kolonda satır taşmasın —
   kart genişliği daralsa da bracket'ın kendisi bu tabanın ALTINA inmez
   (§20). Sınır üstü (32+) davranışı DEĞİŞMEDİ: satır hiç çizilmez. */
.structure-bracket-slots:has(> :nth-child(5)){--tg-bracket-gap:12px;--tg-bracket-size:18px;--tg-bracket-merge:10px}
.structure-bracket-slots:has(> :nth-child(9)){--tg-bracket-gap:7px;--tg-bracket-size:12px;--tg-bracket-merge:8px;
  --tg-bracket-stroke:1.5px;--tg-bracket-radius:3px}
.structure-bracket-slots:has(> :nth-child(17)){--tg-bracket-gap:3px;--tg-bracket-size:6px;--tg-bracket-merge:6px;
  --tg-bracket-stroke:1.5px;--tg-bracket-radius:2px}
/* Birleşme çizgisi turun KENDİ tonunu taşır (§6/§17 — mevcut tonlar
   korunur, yeni renk üretilmez). Final turu ELEME ailesinde kalır: yeşil
   dolu ayrı bir bileşen gibi görünmez (§10). */
.structure-node.is-tone-knockout .structure-bracket-slots,
.structure-node-knockout.is-tone-final .structure-bracket-slots{--tg-bracket-line:var(--tg-status-special)}
.structure-node-third_place .structure-bracket-slots{--tg-bracket-line:var(--tg-status-neutral)}

/* ── 3.'LÜK MAÇI: gerçek YAN DAL ──────────────────────────────────
   §13/§14 — ana şampiyonluk yolu (Yarı Final → Final → Şampiyon) kesintisiz
   akmaya devam eder; 3.'lük maçı bu omurgadan sağa çıkan bir dirsekle
   bağlanır. Payload davranışı DEĞİŞMEDİ, yalnız sunum netleşti. */
/* §11 — gerçek bir AŞAMA olduğu için geçiş bilgisi kadar küçülmez, ama
   ana final yoluyla da yarışmaz: kademe kuralından sonra ve daha yüksek
   özgüllükle kendi yan dal ölçüsünü alır. */
.structure-node.is-role-stage.structure-node-third_place{width:min(100%,46%);
  min-width:min(100%,168px);margin-left:auto;margin-right:0;
  border-style:dashed;border-top-color:var(--tg-status-neutral);background:var(--tg-surface-soft)}
/* Omurga yan dalın yanından GEÇER (kesilmez). */
.structure-chain-item:has(.structure-node-third_place)::before{content:"";position:absolute;
  top:calc(var(--tg-chain-gap) * -1);left:50%;width:2px;
  height:calc(100% + var(--tg-chain-gap));background:var(--tg-border-strong)}
/* Omurgadan düğüme uzanan dirsek (düğüm genişliğinin ~%9'u = omurga ile
   düğümün sol kenarı arasındaki mesafe). */
.structure-node-third_place::before{content:"";position:absolute;top:18px;left:-9%;width:9%;height:2px;
  background:var(--tg-border-strong)}

/* ── MASAÜSTÜ: iki kolon, önizleme sticky ─────────────────────────── */
@media(min-width:1100px){
  /* §7 — iki kolonlu IA KORUNDU; yalnız oran diyagramın okunabileceği
     şekilde dengelendi. Sabit magic px yerine `minmax()`: sağ kolon
     hiçbir zaman okunamayacak kadar daralmaz, çok geniş ekranda da
     sonsuza kadar büyümez. */
  .structure-layout{grid-template-columns:minmax(0,1fr) minmax(340px,min(38%,460px))}
  /* v6.381.0 — DOM sırası önizleme-önce olsa da masaüstü IA'sı aynı:
     sekmeler tam genişlik üstte, form solda, önizleme sağda (sticky). */
  .structure-layout--mode-first>.structure-mode-head{grid-column:1/-1;grid-row:1}
  .structure-layout--mode-first>.structure-form-column{grid-column:1;grid-row:2}
  .structure-layout--mode-first>.structure-preview-column{grid-column:2;grid-row:2}
  /* v6.390.2 (§15.23) — önizlemesiz salt okunur Basit (Gelişmiş'te kesinleşmiş yapı): boş sağ kolon bırakılmaz. */
  .structure-layout.structure-layout--no-preview{grid-template-columns:minmax(0,1fr)}
  /* Kabuk üst çubuğu sticky olduğu için offset ona göre verilir; sabit
     px yerine viewport'a bağlı güvenli bir tavan kullanılır ki uzun
     önizleme kendi içinde kaydırılabilsin, sayfayla çakışmasın. */
  .structure-preview-column{position:sticky;top:var(--tg-space-4);
    max-height:calc(100dvh - var(--tg-space-8));overflow:auto}
}

/* ── GENİŞ MASAÜSTÜ: dört format kartı TEK SIRA (§3) ──────────────── */
@media(min-width:1280px){
  .structure-format-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
}

/* ── MOBİL ────────────────────────────────────────────────────────── */
@media(max-width:760px){
  .structure-layout{gap:var(--tg-space-3)}
  .structure-form-column{gap:var(--tg-space-3)}
  .structure-step{padding:var(--tg-space-3);border-radius:var(--tg-radius-md)}
  /* ═══ v6.225.0 — DAR EKRAN SADELEŞTİRMESİ ═══════════════════════
     Mobil kullanıcının işi tek bir akıştır: Format → Ayarlar → Önizleme →
     Kaydet. Masaüstündeki açıklayıcı metinler bu akışın ÖNÜNE geçmesin
     diye dar ekranda gizlenir. Hepsi SUNUM kararıdır: DOM'dan hiçbir şey
     silinmez, masaüstü davranışı değişmez, yeni bir metin/işlev
     üretilmez. */
  .structure-long-copy{display:none}
  .structure-short-copy{display:inline}
  /* §13 — akış ipucu ve §15 — legacy "ayarlar taşındı" yönlendirmesi
     mobil ana akışta gerekli değil (ikisi de bilgilendirme; Turnuva
     Ayarları kenar çubuğundan zaten erişilebilir).
     PD-UX14 — sayfa açıklaması bu listeden ÇIKARILDI: ortak mavi bağlam
     başlığının kısa açıklaması artık beş ekranda da tutarlı biçimde
     görünür (en fazla iki satır, foundation.css'te clamp'li). */
  .structure-flow-hint,
  .structure-settings-note{display:none}
  /* §4 — turnuva adı eyebrow'u dikkat çalmasın: tek satır, kompakt. */
  .structure-page-header .tg-page-header-eyebrow{font-size:var(--tg-font-xs);
    display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  /* §5 — "Gelişmiş Yapıya Geç" sakin ikincil aksiyon olur: dev full-width
     CTA gibi durmaz ama dokunma hedefi korunur. Capability/dirty-state
     guard'ı DEĞİŞMEDİ. Global mobil kuralı (foundation.css: başlık
     aksiyonları tam genişlik + `flex:1 1 auto`) DEĞİŞTİRİLMEZ; yalnız bu
     sayfa kapsamında ezilir. */
  .structure-page-header .tg-page-header-actions{width:auto;justify-content:flex-start}
  .structure-page-header .tg-page-header-actions > .structure-advanced-link{flex:0 0 auto;width:auto;
    min-height:var(--tg-touch-min);padding:0 var(--tg-space-3);font-size:var(--tg-font-sm)}
  /* v6.226.0 (§8/§9) — MOD DÖNÜŞÜM BİLGİ KUTUSU DAR EKRANDA GİZLENİR.
     Sürekli açık duran bu not, kullanıcı henüz "Gelişmiş Yapıya Geç"
     aksiyonunu kullanmamışken karar vermesine yardımcı olmuyor ve dikey
     alanın önemli bir kısmını tüketiyordu.

     BİLGİ KUTUSU KALKAR, KORUMA KALKMAZ: kaydedilmemiş taslakla Gelişmiş'e
     geçiş uyarısı (`data-structure-advanced` + `structure_family.advanced_dirty_confirm`),
     özel/Gelişmiş yapı üzerine yazma koruması (§31) ve materialized
     lifecycle kilidi tamamen AYRI yollardır ve DEĞİŞMEDİ. Masaüstünde not
     olduğu gibi kalır. */
  .builder-conversion-note{display:none}

  .structure-layout{gap:var(--tg-space-3)}
  .structure-form-column{gap:var(--tg-space-3)}
  .structure-step{padding:var(--tg-space-3);border-radius:var(--tg-radius-md)}
  .structure-step-title{margin-bottom:var(--tg-space-2)}
  .structure-format-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tg-space-2)}
  /* §7/§8 — KART: görsel + ad. Açıklama dar ekranda GİZLENİR (masaüstünde
     kalır) ve kart yüksekliği belirgin düşer; dokunma hedefi korunur. */
  .structure-format-card{gap:6px;padding:var(--tg-space-2) 6px}
  .structure-format-card-body small{display:none}
  /* Görsel mobilde de KALIR (kartın kimliği odur); yalnız küçülür ve
     taşmaz — `object-fit:contain` + `max-width:100%` zaten tabanda. */
  .structure-format-card-icon{height:38px;margin-bottom:0}
  .structure-format-card-body strong{font-size:var(--tg-font-sm)}
  .structure-details-mark{width:34px;height:26px;flex:0 0 34px}
  /* §10/§12 — detay formu yoğunluğu: dış boşluk ve alanlar arası aralık
     azalır, yardım metni kompaktlaşır. Kontrol YÜKSEKLİKLERİ (input/select)
     DEĞİŞMEZ — dokunulabilirlik korunur. */
  .structure-field{margin-bottom:var(--tg-space-2)}
  .structure-field .tg-select{max-width:none}
  .structure-suboption{margin-bottom:var(--tg-space-2)}
  .structure-step .tg-help{margin-top:4px;font-size:var(--tg-font-xs);line-height:1.35}
  .structure-preliminary,.structure-knockout-options{padding:var(--tg-space-2)}
  /* §11 — Tek maç / Çift maç: tek satırda kompakt seçim. Gerçek radio
     semantiği ve 44px dokunma hedefi KORUNUR. */
  .structure-suboption-grid{flex-wrap:nowrap;gap:6px}
  .structure-suboption-grid .structure-choice-chip{flex:1 1 0;min-width:0;
    justify-content:center;padding:0 var(--tg-space-2);gap:6px;white-space:nowrap}
  /* §16 — önizleme başlığı ve rozeti KALIR; açıklama kısa sürüme geçer. */
  .structure-preview-card{padding:var(--tg-space-3)}
  .structure-preview-head{margin-bottom:var(--tg-space-2)}
  .structure-preview-head .tg-card-muted{font-size:var(--tg-font-xs);line-height:1.35}
  /* §12/§18 — diyagram kutuları OKUNAMAYACAK kadar küçültülmez; gerektiğinde
     KENDİ kabında yatay kaydırılır. Sayfa gövdesi yatay taşmaz. */
  .structure-preview-body{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .structure-chain{min-width:min-content}
  .structure-node{min-width:220px}
  /* Okunabilirlik tabanı dar ekranda aşama kartları için de geçerlidir
     (kademe yüzdeleri onu KÜÇÜLTEMEZ); geçiş bilgisi hapı ise içeriği
     kadar kalır — 220px'e zorlanmaz. */
  .structure-node.is-role-stage{min-width:220px}
  .structure-node.is-role-info{min-width:0}
  /* Dar ekranda yan dal ana kolona iner: `min-width:220px` yüzünden %46'lık
     kaçış payı kalmaz, dirsek omurgayla çakışırdı. Yan dal olduğu kesikli
     kenarlık ve düğümün kendi açıklama metniyle anlatılmaya devam eder. */
  .structure-node.is-role-stage.structure-node-third_place{width:100%;margin-left:0;margin-right:0}
  .structure-node-third_place::before{display:none}
  .structure-chain-item:has(.structure-node-third_place)::before{height:var(--tg-chain-gap)}
  /* §19 — MOBİL ALT AKSİYON ÇUBUĞU. Yalnız düzenlenebilir durumda render
     edilir (kilitli/materialized yapıda bölüm hiç basılmaz — bkz. sayfa
     `$editable` kapısı), safe-area hesaba katılır ve içerik çubuğun
     altında KAPANMASIN diye sayfaya alt boşluk verilir.

     `sticky` DEĞİL `fixed`: sticky yalnız kendi kapsayıcısı (form)
     görünürken tutunur, kullanıcı önizlemeye indiğinde aksiyon ekrandan
     kaybolurdu. Kapsayıcı zincirinde `transform`/`filter`/`contain`
     bulunmadığı için `fixed` bu kabukta güvenlidir.

     Pinlenen çubuk YALNIZ aksiyonu taşır: adım başlığı kalıcı yer
     kaplamaz ve yardım metni çubuğun dışındadır.

     §18/§20 (v6.225.0) — çubuk KOMPAKTLAŞTI: dış boşluk azaldı ve
     butonlar kısa etiketle (`Kaydet` / `Temizle`) 44px dokunma hedefinde
     kaldı. Sticky davranışı, dirty-state kapısı ve POST yolu DEĞİŞMEDİ. */
  .structure-save-step{position:fixed;left:0;right:0;bottom:0;z-index:20;
    border:0;border-top:1px solid var(--tg-border);border-radius:0;
    padding:6px var(--tg-mobile-gutter,10px);
    padding-bottom:calc(6px + env(safe-area-inset-bottom));
    box-shadow:0 -8px 22px rgb(0 0 0 / .08)}
  .structure-save-step .structure-step-title{display:none}
  /* Taslak varken iki aksiyon YAN YANA durur: çubuk tek satır kalır,
     ana aksiyon baskın genişliği alır ve ikisi de 44px'i korur. */
  .structure-save-bar{flex-wrap:nowrap;gap:6px}
  .structure-save-button{flex:58 1 0;min-width:0;min-height:44px;padding:0 var(--tg-space-3)}
  .structure-clear-draft{flex:42 1 0;min-width:0;min-height:44px;padding:0 var(--tg-space-3)}
  /* Sabit çubuk son içeriği KAPATMAZ: çubuk küçüldüğü için sayfa alt
     boşluğu da gerçek yüksekliğe (6 + 44 + 6 + kenarlık) uyarlandı (§21). */
  .structure-layout{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
  /* v6.381.0 — alt bölüm varsa sayfanın SON içeriği odur: sabit çubuk
     payı ona taşınır (arada boş 58px kalmaz, CTA çubuğun altında kalmaz). */
  .structure-layout--mode-first:has(+ .structure-footer){padding-bottom:0}
  .structure-layout--mode-first + .structure-footer{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
  /* Dar ekranda aksiyonlar tam genişlik alt alta; CTA en altta kalır. */
  .structure-footer-actions{flex-direction:column;align-items:stretch}
  .structure-footer-actions>.tg-btn{width:100%;justify-content:center;margin-right:0}
}
/* ── BASİT MOD YENİDEN TASARIMI BLOĞU SONU ─────────────────────────── */

/* ═══════════════════════════════════════════════════════════════════
   v6.221.0 — YARIŞMA FORMATI KİMLİK RENKLERİ (DS-090)
   ═══════════════════════════════════════════════════════════════════
   Basit Mod'daki 4 SUNUM ailesinin görsel kimliği. Burada HİÇBİR renk
   DEĞERİ tanımlı değildir: her yüzey, tema motorunun ürettiği bölüm rolü
   değişkenlerini (`--tg-section-format-*`, canonical kaynak
   config/theme_defaults.php `sections` + `section_palettes`) tüketir.
   Platform Sahibi Tema Yönetimi → Turnuva Yapısı sekmesinden paleti
   değiştirdiğinde kart, ikon alanı, seçili durum ve ilgili ayar paneli
   BİRLİKTE değişir; bu dosyada değişiklik gerekmez.

   Zincir: platform varsayılan palet → (varsa) tema override → CSS
   değişkeni → tüketici. Kart DB okumaz, CSS'te iş koşulu YOKTUR ve
   JS renk hesaplamaz (yalnız `data-format-family` durumunu taşır).

   Format kimliği DURUM/severity DEĞİLDİR: `.tg-status-*` ailesi ve
   aksiyon renkleri (buton, seçim çipi, odak) bu rollerden ETKİLENMEZ —
   aksiyon her ekranda aynı dili konuşmaya devam eder.

   ERİŞİLEBİLİRLİK: seçim yalnız RENKLE anlatılmaz — gerçek radio'nun
   işaretli hâli, kenarlık, zemin ve başlık birlikte çalışır. Palet
   accent'leri metin olarak da kullanıldığı için beyaza karşı >= 4.5:1
   seçilmiştir (bkz. config/theme_defaults.php `section_palettes`);
   açık/pastel ton yalnız YÜZEY olarak kullanılır, metin olarak asla. */
.structure-format-card[data-format-family="league"],
.structure-step-details[data-format-family="league"]{
  --tg-format-accent:var(--tg-section-format-league-accent);
  --tg-format-soft:var(--tg-section-format-league-soft)}
.structure-format-card[data-format-family="groups"],
.structure-step-details[data-format-family="groups"]{
  --tg-format-accent:var(--tg-section-format-groups-accent);
  --tg-format-soft:var(--tg-section-format-groups-soft)}
.structure-format-card[data-format-family="groups_knockout"],
.structure-step-details[data-format-family="groups_knockout"]{
  --tg-format-accent:var(--tg-section-format-groups-knockout-accent);
  --tg-format-soft:var(--tg-section-format-groups-knockout-soft)}
.structure-format-card[data-format-family="league_knockout"],
.structure-step-details[data-format-family="league_knockout"]{
  --tg-format-accent:var(--tg-section-format-league-knockout-accent);
  --tg-format-soft:var(--tg-section-format-league-knockout-soft)}
.structure-format-card[data-format-family="knockout"],
.structure-step-details[data-format-family="knockout"]{
  --tg-format-accent:var(--tg-section-format-knockout-accent);
  --tg-format-soft:var(--tg-section-format-knockout-soft)}

/* ── KART: kimlik OKUNUR, kart DOYGUN BLOK DEĞİL ──────────────────
   Zemin çok hafif tint kalır; renk yükünü ikon alanı ve başlık taşır. */
.structure-format-card[data-format-family]{
  border-color:color-mix(in srgb,var(--tg-format-accent) 30%,var(--tg-border));
  background:color-mix(in srgb,var(--tg-format-soft) 32%,var(--tg-surface))}
.structure-format-card[data-format-family] .structure-format-card-body strong{color:var(--tg-format-accent)}
/* SVG'nin oturduğu alan = ailenin pastel yüzeyi (§8). İkonun kendi çizgi
   rengi dosyadan gelir ve semantik renge KİLİTLENMEZ; kimlik yüzeyden
   okunur, böylece palet değişince ikon yanlış renge saplanmaz. */
.structure-format-card[data-format-family] .structure-format-card-icon{
  padding:5px 6px;border-radius:var(--tg-radius-sm);background:var(--tg-format-soft)}
.structure-format-card[data-format-family] input[type="radio"]{accent-color:var(--tg-format-accent)}
.structure-format-card[data-format-family]:hover{border-color:color-mix(in srgb,var(--tg-format-accent) 58%,var(--tg-border))}
.structure-format-card[data-format-family]:focus-within{outline-color:var(--tg-format-accent)}
/* Seçili: aynı aile, bir tık daha belirgin. Kutu ölçüsü DEĞİŞMEZ. */
.structure-format-card[data-format-family].is-selected{
  border-color:var(--tg-format-accent);
  background:color-mix(in srgb,var(--tg-format-soft) 76%,var(--tg-surface))}
.structure-format-card[data-format-family].is-selected .structure-format-card-icon{
  background:color-mix(in srgb,var(--tg-format-accent) 18%,var(--tg-surface))}

/* ── "… AYARLARI" PANELİ: aynı aile, çok düşük yoğunluk (§9/§10) ──
   Panelin tamamı boyanmaz: üst accent şerit + başlık bölgesinde çok
   hafif tint, oradan normal yüzeye sakin bir geçiş. Ağır gradient YOK —
   geçiş tek yönlü ve düşük kontrastlıdır. */
.structure-step-details[data-format-family]{
  border-top-color:var(--tg-format-accent);
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--tg-format-soft) 60%,var(--tg-surface)) 0,
    var(--tg-surface) 150px)}
.structure-step-details[data-format-family] .structure-step-index{
  background:color-mix(in srgb,var(--tg-format-accent) 16%,var(--tg-surface));
  color:var(--tg-format-accent)}
.structure-step-details[data-format-family] .structure-details-mark{
  background:color-mix(in srgb,var(--tg-format-accent) 14%,var(--tg-surface));
  color:var(--tg-format-accent)}
.structure-step-details[data-format-family] .structure-step-title{color:var(--tg-format-accent)}
/* ── DS-090 BLOĞU SONU ─────────────────────────────────────────────── */

/* ═══════════════════════════════════════════════════════════════════
   v6.227.0 — GELİŞMİŞ TURNUVA YAPISI V2: AŞAMA ZİNCİRİ BUILDER
   ═══════════════════════════════════════════════════════════════════
   Sol kolon: zincir (kart → geçiş → kart) + ekleme + onay. Sağ kolon:
   Basit Mod'un önizleme kabuğu (`.structure-preview-column`, sticky) ve
   renderer'ı AYNEN. Kabuk ızgarası da Basit Mod'unkidir (`.structure-layout`).

   Renk: HİÇBİR hex yok. Kart kimliği DS-090 format rollerinden
   (`--tg-section-format-*`, tema motorundan), sayı düşürme `warning`
   ailesinden, lifecycle rozeti `status` ailesinden gelir. Butonlar `tg-btn`.
   Eski `v3-*` buton görünümü ve hardcoded renkler bu blokla KALDIRILDI.

   Zincir LİNEERDİR: dallanma/graph/sürükle-bırak görseli YOKTUR. */
.builder-custom-note{margin-bottom:var(--tg-space-3);gap:var(--tg-space-2);align-items:center;flex-wrap:wrap}
.builder-column{min-width:0}
.builder-global-errors ul{margin:6px 0 0;padding-left:18px}
.builder-limit-note{margin:0 0 var(--tg-space-3)}

/* ── BOŞ DURUM (§6) ───────────────────────────────────────────────── */
.builder-empty{display:flex;flex-direction:column;align-items:center;gap:var(--tg-space-2);
  padding:var(--tg-space-6) var(--tg-space-4);text-align:center;
  border:1px dashed var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft)}
.builder-empty-title{margin:0;font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black)}
.builder-empty-desc{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-sm);max-width:36ch}
.builder-empty-cta{margin-top:var(--tg-space-2)}

/* ── ZİNCİR ───────────────────────────────────────────────────────── */
.builder-chain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0;min-width:0}

/* ── FAZ KARTI (§7) — collapsed: sıra · ikon · ad · tür · rozet · kontroller ── */
.builder-card{--tg-format-accent:var(--tg-border-strong);--tg-format-soft:var(--tg-surface-soft);
  position:relative;min-width:0;padding:var(--tg-space-3);
  border:1px solid color-mix(in srgb,var(--tg-format-accent) 24%,var(--tg-border));
  border-left:4px solid var(--tg-format-accent);border-radius:var(--tg-radius-md);
  background:color-mix(in srgb,var(--tg-format-soft) 40%,var(--tg-surface))}
/* §8 — DS-090 rolleri (Basit Mod ile AYNI değişkenler; tema panelinden değişir). */
.builder-card[data-format-family="league"],.builder-option-card[data-format-family="league"]{
  --tg-format-accent:var(--tg-section-format-league-accent);--tg-format-soft:var(--tg-section-format-league-soft)}
.builder-card[data-format-family="groups"],.builder-option-card[data-format-family="groups"]{
  --tg-format-accent:var(--tg-section-format-groups-accent);--tg-format-soft:var(--tg-section-format-groups-soft)}
.builder-card[data-format-family="knockout"],.builder-option-card[data-format-family="knockout"]{
  --tg-format-accent:var(--tg-section-format-knockout-accent);--tg-format-soft:var(--tg-section-format-knockout-soft)}
/* Sayı düşürme: önizlemedeki ön eleme tonu (warning) — ayrı tema rolü yok. */
.builder-card[data-format-type="reduction"],.builder-option-card[data-format-type="reduction"]{
  --tg-format-accent:var(--tg-status-warning);--tg-format-soft:var(--tg-status-warning-soft)}
.builder-card-head{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:var(--tg-space-2)}
/* Format UX (2026-09-28): sıra dairesi KALKTI (sıra = diziliş + Turnuva Akışı); durum
   bölüm başlığında TEK göstergedir (`.builder-chain-status`, kart içi rozet yok). */
.builder-chain-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--tg-space-2);margin:0 0 var(--tg-space-3)}
.builder-chain-heading .structure-step-title{margin:0;min-width:0}
.builder-card-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:36px;
  border-radius:var(--tg-radius-sm);background:var(--tg-format-soft)}
.builder-card-icon img{display:block;width:auto;max-width:100%;height:100%;object-fit:contain}
.builder-card-titles{min-width:0}
.builder-card-name{margin:0;font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);line-height:1.3;overflow-wrap:anywhere}
.builder-card-type{margin:2px 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-sm);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
/* §10 — lifecycle rozeti: küçük, ikincil; durum METİNLE de vardır. */
.builder-chain-status,.builder-card-badge{display:inline-block;flex:0 0 auto;padding:2px 8px;border-radius:var(--tg-radius-pill);
  border:1px solid var(--tg-border);background:var(--tg-surface);color:var(--tg-text-muted);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);line-height:1.4}
.builder-chain-status[data-status="approved"],.builder-card-badge[data-status="approved"]{border-color:var(--tg-status-info);color:var(--tg-status-info);background:var(--tg-status-info-soft)}
.builder-chain-status[data-status="materialized"],.builder-chain-status[data-status="started"],.builder-card-badge[data-status="materialized"],.builder-card-badge[data-status="started"]{
  border-color:var(--tg-status-success);color:var(--tg-status-success);background:var(--tg-status-success-soft)}
.builder-chain-status[data-status="locked"],.builder-card-badge[data-status="locked"]{border-color:var(--tg-status-neutral);color:var(--tg-status-neutral);background:var(--tg-status-neutral-soft)}
/* §12/§13 — ↑ ↓ ✕ : 44px dokunma hedefi, ikincil; ✕ destructive ama CTA gibi değil. */
.builder-card-controls{display:flex;gap:4px;flex:0 0 auto}
.builder-card-move{display:contents}
.builder-inline-form{margin:0}
.builder-icon-btn{display:inline-grid;place-items:center;width:var(--tg-touch-min);height:var(--tg-touch-min);
  padding:0;border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-sm);background:var(--tg-surface);
  color:var(--tg-text);font:inherit;font-size:var(--tg-font-md);line-height:1;cursor:pointer}
.builder-icon-btn:hover{border-color:var(--tg-action-primary);color:var(--tg-action-primary)}
.builder-icon-btn:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-icon-btn[disabled]{opacity:.4;cursor:default;color:var(--tg-text-muted);border-color:var(--tg-border)}
.builder-icon-btn-danger{color:var(--tg-status-danger);border-color:color-mix(in srgb,var(--tg-status-danger) 35%,var(--tg-border))}
.builder-icon-btn-danger:hover{border-color:var(--tg-status-danger);background:var(--tg-status-danger-soft);color:var(--tg-status-danger)}
.builder-card-summary{display:flex;flex-wrap:wrap;gap:4px 12px;margin:var(--tg-space-2) 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.builder-card-summary > * + *::before{content:"·";margin-right:12px;color:var(--tg-border-strong)}
.builder-card-summary:empty{display:none}
.builder-card-derived{margin:6px 0 0;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);color:var(--tg-format-accent)}
.builder-card-note{margin:6px 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-xs);line-height:1.45;overflow-wrap:anywhere}
.builder-card-actions{display:flex;flex-wrap:wrap;gap:var(--tg-space-2);margin-top:var(--tg-space-3)}
.builder-btn-danger{color:var(--tg-status-danger);border-color:color-mix(in srgb,var(--tg-status-danger) 40%,var(--tg-border))}

/* ── AYARLARI DÜZENLE (§15) — v6.237.0: accordion DEĞİL, ayar yüzeyini
   açan tek aksiyon. Sınıf adları korunur (DS sözleşmesi + mobil ızgara). ─ */
.builder-card-details{margin-top:var(--tg-space-3);border-top:1px solid color-mix(in srgb,var(--tg-format-accent) 18%,var(--tg-border));padding-top:var(--tg-space-2)}
.builder-card-details-summary{display:inline-flex;align-items:center;min-height:var(--tg-touch-min);padding:0 var(--tg-space-2);
  border:0;background:transparent;border-radius:var(--tg-radius-sm);color:var(--tg-action-primary);
  font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);cursor:pointer;list-style:none}
.builder-card-details-summary::after{content:"›";margin-left:6px;font-size:var(--tg-font-md);line-height:1}
.builder-card-details-summary:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-readonly-note{margin:var(--tg-space-2) 0 0}
.builder-section{margin-top:var(--tg-space-3);padding:var(--tg-space-3);border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm);background:var(--tg-surface)}
/* Format UX (2026-09-28): AÇIK AŞAMA KARTI — ayar bölümleri ikinci bir kart/kutu gibi
   çizilmez; aynı kart aşağı doğru açılır, bölümler ince ayırıcıyla ayrılır. */
.builder-card-details-body .builder-section{margin-top:var(--tg-space-2);padding:0;border:0;border-radius:0;background:transparent}
.builder-card-details-body .builder-section + .builder-section{padding-top:var(--tg-space-2);border-top:1px solid color-mix(in srgb,var(--tg-format-accent) 18%,var(--tg-border))}
.builder-delete-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2);margin-top:var(--tg-space-3);padding-top:var(--tg-space-2);border-top:1px dashed var(--tg-border)}
.builder-delete-link{min-height:36px;color:var(--tg-status-danger);border-color:color-mix(in srgb,var(--tg-status-danger) 35%,var(--tg-border))}
.builder-delete-link:hover:not([disabled]){border-color:var(--tg-status-danger);background:var(--tg-status-danger-soft);color:var(--tg-status-danger)}
.builder-delete-link[disabled]{opacity:.5;cursor:default}
.builder-delete-link .tg-icon{display:inline-block;vertical-align:-2px;margin-right:4px}
.builder-delete-reason{color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.builder-section-title{margin:0 0 var(--tg-space-2);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
.builder-form{margin:0;min-width:0}
.builder-fieldset{border:0;padding:0;margin:0;min-width:0}
.builder-fieldset[disabled]{opacity:.7}
/* v6.351.0 (DECISIONS §7.4) — GRUPLAR ARASI KARŞILAŞTIRMA YÖNTEMİ: iki
   seçenekli dikey radio listesi; gerçek radio görünür (dokunma hedefi
   satırın tamamı), başlık + kısa açıklama. Ek takım sayısı 0 iken `hidden`. */
.builder-normalization-method{margin:var(--tg-space-2) 0 0}
.builder-normalization-method > .tg-label{display:block;margin:0 0 var(--tg-space-1)}
.builder-choice{display:flex;align-items:flex-start;gap:var(--tg-space-2);min-height:var(--tg-touch-min);padding:var(--tg-space-2);
  margin:0 0 var(--tg-space-1);border:1px solid var(--tg-border);border-radius:var(--tg-radius-sm);background:var(--tg-surface);cursor:pointer;min-width:0}
.builder-choice input[type="radio"]{flex:0 0 auto;margin:3px 0 0;width:18px;height:18px}
.builder-choice:has(input:checked){border-color:var(--tg-action-primary);background:var(--tg-surface-soft)}
.builder-choice:focus-within{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-choice-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.builder-choice-title{font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);color:var(--tg-text);overflow-wrap:anywhere}
.builder-choice-body .tg-help{margin:0}
.builder-field{margin:0 0 var(--tg-space-2);min-width:0}
.builder-field .tg-input,.builder-field .tg-select{max-width:260px}
.builder-type-readonly{margin:4px 0 0;font-weight:var(--tg-font-weight-bold)}
.builder-visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.builder-outcome-terminal{margin:0}

/* ── GEÇİŞ ALANI (§16) — iki kart ARASINDA, merkez eksende ────────── */
.builder-transition{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:var(--tg-space-3) var(--tg-space-2);min-width:0;text-align:center}
.builder-transition-arrow{width:2px;height:16px;background:var(--tg-border-strong);position:relative}
.builder-transition-arrow::after{content:"";position:absolute;left:50%;bottom:-1px;width:7px;height:7px;
  border-right:2px solid var(--tg-border-strong);border-bottom:2px solid var(--tg-border-strong);transform:translate(-50%,0) rotate(45deg)}
.builder-transition-text{display:inline-block;padding:5px 14px;border-radius:var(--tg-radius-pill);
  border:1px solid var(--tg-status-info);background:var(--tg-status-info-soft);color:var(--tg-status-info);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);overflow-wrap:anywhere}
.builder-transition.is-pending .builder-transition-text{border-color:var(--tg-status-warning);background:var(--tg-status-warning-soft);color:var(--tg-status-warning)}
/* v6.237.0 (§23.4) — GEÇİŞ KENDİ YÜZEYİNDE DÜZENLENİR: halkanın yanında
   küçük, ikincil bir aksiyon. Yalnız zincirin SON halkasında basılır. */
.builder-transition-edit{min-height:var(--tg-touch-min);padding:0 var(--tg-space-2);border:0;background:transparent;
  color:var(--tg-action-primary);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);cursor:pointer;border-radius:var(--tg-radius-sm)}
.builder-transition-edit:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-transition-warning{color:var(--tg-status-warning);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold)}
.builder-transition-errors{list-style:none;margin:4px 0 0;padding:var(--tg-space-2) var(--tg-space-3);width:100%;
  border:1px solid var(--tg-status-danger);border-radius:var(--tg-radius-sm);background:var(--tg-status-danger-soft);
  color:var(--tg-status-danger);font-size:var(--tg-font-xs);text-align:left}
.builder-transition-errors li + li{margin-top:4px}

/* ── AŞAMA EKLE (§24) — default kapalı; sonuna ekler ──────────────── */
.builder-add{margin-top:var(--tg-space-3);border:1px dashed var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
.builder-add-summary{display:flex;align-items:center;justify-content:center;min-height:var(--tg-touch-min);padding:var(--tg-space-2) var(--tg-space-3);
  color:var(--tg-action-primary);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);cursor:pointer;list-style:none}
.builder-add-summary::-webkit-details-marker{display:none}
.builder-add-summary:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-add[open] > .builder-add-summary{border-bottom:1px dashed var(--tg-border-strong)}
.builder-add-form{padding:var(--tg-space-3)}
.builder-option-choice{border:0;padding:0;margin:0;min-width:0}
/* Format UX (2026-09-28) — "+ AŞAMA EKLE" TÜR SEÇİMİ: TEK SÜTUN LİSTE (mobil ve
   masaüstü). Satır: sol ikon · orta ad (+ kapalıysa kısa neden) · sağ işaret
   (boşta ›, seçiliyken ✓). Radio GERÇEKTİR ama görünmez: satırın tamamı
   dokunma hedefidir, klavye ve JS'siz gönderim semantiği korunur. Eski 2/3
   sütun ızgara SUPERSEDED (uzun ad / neden kartları dengesiz büyütüyordu). */
.builder-option-list{display:flex;flex-direction:column;gap:var(--tg-space-2);max-width:520px}
.builder-option-card{--tg-format-accent:var(--tg-border-strong);--tg-format-soft:var(--tg-surface-soft);
  position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) 20px;align-items:center;column-gap:var(--tg-space-2);
  padding:8px var(--tg-space-2);margin:0;text-align:left;
  min-height:56px;border:2px solid color-mix(in srgb,var(--tg-format-accent) 26%,var(--tg-border));
  border-left:4px solid var(--tg-format-accent);
  border-radius:var(--tg-radius-md);background:color-mix(in srgb,var(--tg-format-soft) 30%,var(--tg-surface));cursor:pointer;font-weight:400;color:var(--tg-text);
  transition:background-color .15s ease,border-color .15s ease}
.builder-option-card:hover{background:color-mix(in srgb,var(--tg-format-soft) 55%,var(--tg-surface))}
.builder-option-input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;min-width:0}
.builder-option-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;height:32px;border-radius:var(--tg-radius-sm);background:var(--tg-format-soft)}
.builder-option-icon.is-empty{background:transparent}
.builder-option-icon img{display:block;width:auto;max-width:100%;height:100%;object-fit:contain}
.builder-option-body{display:flex;flex-direction:column;gap:2px;min-width:0;width:100%}
.builder-option-body strong{font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);color:var(--tg-format-accent);line-height:1.25;overflow-wrap:anywhere}
.builder-option-reason{color:var(--tg-text-muted);font-size:var(--tg-font-xs);line-height:1.35;overflow-wrap:anywhere}
.builder-option-mark{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--tg-text-muted)}
.builder-option-mark-selected{display:none}
.builder-option-card:has(input:checked){border-color:var(--tg-format-accent);background:color-mix(in srgb,var(--tg-format-soft) 72%,var(--tg-surface))}
.builder-option-card:has(input:checked) .builder-option-mark{color:var(--tg-format-accent)}
.builder-option-card:has(input:checked) .builder-option-mark-idle{display:none}
.builder-option-card:has(input:checked) .builder-option-mark-selected{display:inline-flex}
.builder-option-card:focus-within{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-option-card.is-disabled{opacity:.6;cursor:default}
.builder-option-card.is-disabled:hover{background:color-mix(in srgb,var(--tg-format-soft) 30%,var(--tg-surface))}
.builder-option-card.is-disabled .builder-option-mark{visibility:hidden}
.builder-option-fields{margin-top:var(--tg-space-2)}

/* ── AYAR YÜZEYİ (§23.4) — masaüstünde modal, mobilde alt sayfa ────────
   Native `<dialog>`; projedeki mevcut desen (penalties.php). Odak tuzağı,
   ESC ve inert davranışı tarayıcıdan gelir — ikinci bir modal çerçevesi
   kurulmadı. `builder-sheet-inner` backdrop tıklamasını içerikten ayırır. */
.builder-sheet{width:min(560px,calc(100vw - 24px));max-height:min(86vh,760px);padding:0;border:1px solid var(--tg-border);
  border-radius:var(--tg-radius-lg);background:var(--tg-surface);color:var(--tg-text);box-shadow:0 24px 70px rgba(10,26,45,.28)}
.builder-sheet::backdrop,.tg-share-panel::backdrop{background:rgba(7,21,38,.55)}
.builder-sheet-inner{display:flex;flex-direction:column;max-height:inherit;min-height:0}
.builder-sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tg-space-2);
  padding:var(--tg-space-3);border-bottom:1px solid var(--tg-border)}
.builder-sheet-heading{min-width:0}
.builder-sheet-eyebrow{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);letter-spacing:.06em;text-transform:uppercase}
.builder-sheet-title{margin:2px 0 0;font-size:var(--tg-font-md);overflow-wrap:anywhere}
.builder-sheet-close{display:grid;place-items:center;flex:0 0 auto;width:var(--tg-touch-min);height:var(--tg-touch-min);
  border:0;border-radius:var(--tg-radius-sm);background:var(--tg-surface-soft);color:var(--tg-text);font-size:var(--tg-font-lg);line-height:1;cursor:pointer}
.builder-sheet-close:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.builder-sheet-body{padding:var(--tg-space-3);overflow-y:auto;min-height:0;flex:1 1 auto}
.builder-sheet-body > .builder-section:first-child{margin-top:0}
.builder-sheet-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--tg-space-2);
  padding:var(--tg-space-3);border-top:1px solid var(--tg-border);background:var(--tg-surface-soft)}
.builder-sheet-actions .tg-btn{min-height:var(--tg-touch-min)}
/* Adım/aksiyon görünürlüğü `hidden` özniteliğiyle yönetilir; `.tg-btn`in kendi
   `display` kuralı tarayıcının [hidden] varsayılanını EZDİĞİ için açık kural
   şart (aynı desen `.player-choice-list[hidden]`de de var). */
.builder-sheet [hidden]{display:none!important}
.builder-wizard-hint{margin:0 0 var(--tg-space-2)}
.builder-wizard-empty{margin:0}
@media(max-width:760px){
  /* Mobil: alt sayfa (bottom sheet) — tam genişlik, alttan yükselir. */
  .builder-sheet{width:100%;max-width:100%;max-height:88vh;margin:auto auto 0;border-radius:var(--tg-radius-lg) var(--tg-radius-lg) 0 0;border-bottom:0}
  .builder-sheet-actions{position:sticky;bottom:0;padding-bottom:calc(var(--tg-space-3) + env(safe-area-inset-bottom))}
  .builder-sheet-actions .tg-btn{flex:1 1 0}
}

/* ── ONAY (§32/§33) — masaüstünde normal bölüm; mobil sticky kuralı
   `.structure-save-step` sözleşmesinden gelir (fixed + safe-area). ── */
.builder-approve-summary{margin:0 0 var(--tg-space-2)}
.builder-next-step{margin:0 0 var(--tg-space-3)}
/* v6.390.0 (§15.23) — zincirin ALTINDAKİ tek genel sıradaki adım: metin + ana CTA
   (Kura'ya Git). Kartların dışında; mobilde CTA tam genişlik, 44px. */
.builder-chain-panel+.builder-next-step{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--tg-space-2) var(--tg-space-3);margin:var(--tg-space-3) 0}
.builder-next-step-text{min-width:0;overflow-wrap:anywhere}
/* `.tg-note a` (0,1,1) `.tg-btn-primary` (0,1,0) rengini ezip etiketi zemin rengine boyuyordu (390px ekran görüntüsüyle bulundu). */
.builder-next-step .builder-next-step-cta{color:var(--tg-action-primary-text)}
@media(max-width:760px){.builder-next-step-cta{flex:1 1 100%;min-height:44px}}
.builder-approve-button{min-width:220px}

@media(max-width:760px){
  /* §43 — mobil: tek kolon, kontroller tek satırda, alanlar doğal tek kolon. */
  /* v6.231.0 — KOMPAKT MOBİL KART: önce bilgi, sonra ikincil aksiyon. Kart
     kendisi ızgaradır; başlık/kontrol sarmalayıcıları `display:contents` ile
     düzleşir. Satır 1: sıra · ad · ✕ (sağ üst) — satır 2: küçük ikon · tür +
     rozet — özet/türetilmiş/not/aksiyonlar tam genişlik — alt satır: Ayarları
     Düzenle › (sol) · ↑ ↓ (sağ, yalnız aktif olanlar). Markup ve POST aynen. */
  .builder-card{padding:var(--tg-space-2);display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:var(--tg-space-2);row-gap:0;align-items:start}
  .builder-card-head,.builder-card-titles,.builder-card-controls{display:contents}
  .builder-card-name{grid-row:1;grid-column:2;align-self:center;font-size:var(--tg-font-sm)}
  .builder-card-icon{grid-row:2;grid-column:1;width:22px;height:18px;margin:4px 0 0;justify-self:center}
  .builder-card-type{grid-row:2;grid-column:2;margin:4px 0 0;font-size:var(--tg-font-xs)}
  .builder-card-summary,.builder-card-derived,.builder-card-note,.builder-card-actions{grid-column:1/-1}
  .builder-card-summary{margin-top:6px}
  .builder-card-derived{margin-top:2px}
  .builder-card-actions{margin-top:var(--tg-space-2)}
  .builder-card-details{grid-column:1/3;order:98;margin-top:var(--tg-space-2);padding-top:0;border-top:0}
  .builder-card-move{grid-column:3;order:99;display:flex;gap:4px;justify-self:end;align-self:start;margin-top:var(--tg-space-2)}
  .builder-card-move .builder-icon-btn[disabled]{display:none}
  .builder-card-details-summary{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0}
  .builder-card-details-summary::after{content:"›";font-size:var(--tg-font-lg);line-height:1;color:var(--tg-text-muted)}
  .builder-field .tg-input,.builder-field .tg-select{max-width:none}
  /* v6.237.0 — seçici mobilde de 2 SÜTUNDUR (§3); tek sütuna düşmez. */
  .builder-section{padding:var(--tg-space-2)}
  /* Sticky onay: yalnız ana aksiyon; başlık/özet çubukta yer kaplamaz. */
  .builder-approve .structure-step-title,.builder-approve .builder-approve-summary,.builder-approve .builder-next-step{display:none}
  .builder-approve-button{min-width:0;width:100%}
}
/* v6.228.0 — BOŞ DURUMDA TEK CTA: seçicinin kendi satırı gizlenir, boş
   durumun "+ İlk Aşamayı Ekle" aksiyonu seçiciyi açar; seçici açıkken CTA
   da çekilir (aynı aksiyon iki kez görünmez). */
.builder-add.is-empty>.builder-add-summary{display:none}
.builder-chain-panel:has(.builder-add.is-empty[open]) .builder-empty-cta{display:none}
/* Lig ailesi alt seçimi (Tek devre / Çift devre) — seçenek kartıyla aynı dil. */
.builder-suboption{border:0;margin:0;padding:0;min-width:0}
.builder-suboption-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tg-space-2);margin-top:var(--tg-space-1)}
.builder-suboption-item{display:flex;align-items:flex-start;gap:var(--tg-space-2);min-height:var(--tg-touch-min);padding:var(--tg-space-2) var(--tg-space-3);
  border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface);cursor:pointer;min-width:0}
.builder-suboption-item:has(input:checked){border-color:var(--tg-action-primary);box-shadow:0 0 0 1px var(--tg-action-primary) inset}
.builder-suboption-item.is-disabled{cursor:not-allowed;opacity:.6}
.builder-suboption-item input[type="radio"]{width:auto;height:auto;margin:3px 0 0;flex:0 0 auto}
.builder-suboption-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}
.builder-suboption-body strong{font-size:var(--tg-font-sm)}
.builder-suboption-body small{color:var(--tg-text-muted);font-size:var(--tg-font-xs);overflow-wrap:anywhere}
@media (max-width:479px){.builder-suboption-grid{grid-template-columns:1fr}}

/* ── F-2 (§15.32) — TEK FORMAT EKRANI: hızlı başlangıç · kompakt aşama satırı · akış ── */
.builder-quick-start{margin:0 0 var(--tg-space-4);padding:var(--tg-space-3);border:1px dashed var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft)}
.builder-quick-start-title{margin:0;font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.builder-quick-start-desc{margin:4px 0 var(--tg-space-3);color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
/* Format UX (2026-09-28) — HIZLI BAŞLANGIÇ: kartın tamamı tıklanabilir (kart =
   formun tek submit butonu). Mobilde 3 sütun kompakt (ikon üstte, ad altta,
   açıklama yok); 6 birimlik ızgara: her kart 2 birim, 4. ve 5. kart ortalanır
   (üstte 3 / altta 2). Masaüstünde ikon + ad + kısa açıklama, aynı ızgara. */
.builder-quick-start-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--tg-space-2)}
.builder-quick-start-form{grid-column:span 2;display:flex;flex-direction:column;gap:4px;min-width:0;margin:0}
.builder-quick-start-form:nth-child(4){grid-column:2/4}
.builder-quick-start-form:nth-child(5){grid-column:4/6}
.builder-quick-start-card{--tg-format-accent:var(--tg-border-strong);--tg-format-soft:var(--tg-surface-soft);appearance:none;-webkit-appearance:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:100%;min-width:0;height:88px;min-height:var(--tg-touch-min);margin:0;padding:6px 4px;border:1px solid color-mix(in srgb,var(--tg-format-accent) 24%,var(--tg-border));border-top:4px solid var(--tg-format-accent);border-radius:var(--tg-radius-md);background:color-mix(in srgb,var(--tg-format-soft) 40%,var(--tg-surface));color:var(--tg-text);font-family:inherit;font-size:var(--tg-font-sm);line-height:1.25;text-align:center;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,transform .08s ease}
.builder-quick-start-form[data-format-family="league"] .builder-quick-start-card{--tg-format-accent:var(--tg-section-format-league-accent);--tg-format-soft:var(--tg-section-format-league-soft)}
.builder-quick-start-form[data-format-family="groups"] .builder-quick-start-card{--tg-format-accent:var(--tg-section-format-groups-accent);--tg-format-soft:var(--tg-section-format-groups-soft)}
.builder-quick-start-form[data-format-family="knockout"] .builder-quick-start-card{--tg-format-accent:var(--tg-section-format-knockout-accent);--tg-format-soft:var(--tg-section-format-knockout-soft)}
.builder-quick-start-card:hover{background:color-mix(in srgb,var(--tg-format-soft) 70%,var(--tg-surface));border-color:color-mix(in srgb,var(--tg-format-accent) 55%,var(--tg-border));box-shadow:0 2px 8px rgba(0,0,0,.08)}
.builder-quick-start-card:focus-visible{outline:3px solid var(--tg-focus-ring);outline-offset:2px}
.builder-quick-start-card:active{transform:scale(.98)}
.builder-quick-start-card.is-disabled,.builder-quick-start-card:disabled{opacity:.62;cursor:not-allowed;box-shadow:none;transform:none}
.builder-quick-start-card.is-disabled:hover,.builder-quick-start-card:disabled:hover{background:color-mix(in srgb,var(--tg-format-soft) 40%,var(--tg-surface));border-color:color-mix(in srgb,var(--tg-format-accent) 24%,var(--tg-border))}
/* Mobil: iki SABİT bölge — ikon satırı 30px + ad satırı 34px (2 satıra yer). Kart
   yüksekliği metinden bağımsız; tek satırlı ad kendi bölgesinde ortalanır,
   "Grup + Eleme" iki satıra düşse de kart BÜYÜMEZ (kırpma/ellipsis yok). */
.builder-quick-start-head{display:grid;grid-template-rows:30px 34px;row-gap:4px;justify-items:center;align-items:center;min-width:0;width:100%}
.builder-quick-start-card .builder-card-icon{grid-row:1;display:inline-flex;flex:0 0 auto;width:40px;height:30px;margin:0}
.builder-quick-start-card .builder-card-icon img{width:100%;height:100%;object-fit:contain}
.builder-quick-start-label{grid-row:2;display:flex;align-items:center;justify-content:center;width:100%;max-width:100%;height:34px;line-height:17px;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);text-align:center;white-space:normal;overflow-wrap:anywhere}
.builder-quick-start-label-full{display:none}
.builder-quick-start-label-short{display:inline}
.builder-quick-start-desc-text{display:none;color:var(--tg-text-muted);font-size:var(--tg-font-xs);overflow-wrap:anywhere}
.builder-quick-start-reason{color:var(--tg-text-muted);font-size:var(--tg-font-xs);text-align:center}
@media (min-width:761px){
  .builder-quick-start-card{align-items:stretch;justify-content:flex-start;gap:6px;height:auto;padding:var(--tg-space-3);border-top-width:1px;border-left:4px solid var(--tg-format-accent);text-align:left}
  .builder-quick-start-head{display:flex;flex-direction:row;align-items:center;gap:var(--tg-space-2)}
  .builder-quick-start-card .builder-card-icon{width:48px;height:36px}
  .builder-quick-start-label{display:block;width:auto;height:auto;line-height:1.3;text-align:left}
  .builder-quick-start-label-full{display:inline}
  .builder-quick-start-label-short{display:none}
  .builder-quick-start-desc-text{display:block}
  .builder-quick-start-reason{text-align:left}
}
/* Format UX (2026-09-28) — AŞAMA KARTI ÖZETİ: üst satır sıra no · ikon · ad
   (sol) · Ayarlar (sağ); alt satır ÜÇ EŞİT bilgi bloğu (katılımcı · ayar ·
   maç). Sıra numarası küçük/ikincil, daire/rozet değil. Her kart aynı sol
   çizgide ve tam genişlikte (tek kart ve son kart dâhil). */
.builder-stage-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--tg-space-2) var(--tg-space-3);align-items:center;width:100%}
.builder-stage-main{display:flex;align-items:center;gap:var(--tg-space-2);min-width:0}
.builder-stage-seq{flex:0 0 auto;min-width:14px;color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);font-variant-numeric:tabular-nums;line-height:1;text-align:center}
.builder-card .builder-stage-main .builder-card-icon{display:inline-flex;flex:0 0 auto;width:36px;height:27px;margin:0}
.builder-card-details > .builder-stage-row::after{content:none}
.builder-card-name{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}
.builder-stage-side{display:flex;align-items:center;justify-content:flex-end;gap:var(--tg-space-1);min-width:0}
.builder-stage-facts{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-width:0}
.builder-stage-fact{display:flex;align-items:center;justify-content:center;min-height:28px;padding:4px 8px;border-radius:var(--tg-radius-sm);
  border:1px solid color-mix(in srgb,var(--tg-format-accent) 22%,var(--tg-border));background:color-mix(in srgb,var(--tg-surface) 72%,var(--tg-format-soft));
  color:var(--tg-text);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold);line-height:1.25;text-align:center;overflow-wrap:anywhere;min-width:0}
.builder-stage-fact.is-unknown{color:var(--tg-text-muted);font-weight:var(--tg-font-weight-regular)}
@media (min-width:761px){.builder-stage-facts{grid-template-columns:repeat(3,minmax(0,200px))}}
.builder-settings-toggle{min-height:36px;padding:0 var(--tg-space-3);font-size:var(--tg-font-xs);pointer-events:none}
.builder-card-details{margin-top:0;border-top:0}
.builder-card-details > .builder-card-details-summary{list-style:none}
.builder-card-details-body{margin-top:var(--tg-space-2);padding-top:var(--tg-space-2);border-top:1px solid color-mix(in srgb,var(--tg-format-accent) 30%,var(--tg-border))}
.builder-field-locked{margin:4px 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.builder-flow{margin:var(--tg-space-4) 0 0;padding:var(--tg-space-3);border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
.builder-flow-title{margin:0;font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.builder-flow-desc{margin:4px 0 var(--tg-space-3);color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.builder-flow-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:stretch;gap:0}
.builder-flow-item{--tg-format-accent:var(--tg-border-strong);--tg-format-soft:var(--tg-surface-soft);display:flex;align-items:center;gap:var(--tg-space-2);min-width:0;padding:var(--tg-space-2) var(--tg-space-3);border:1px solid color-mix(in srgb,var(--tg-format-accent) 24%,var(--tg-border));border-left:4px solid var(--tg-format-accent);border-radius:var(--tg-radius-md);background:color-mix(in srgb,var(--tg-format-soft) 40%,var(--tg-surface))}
.builder-flow-item[data-format-family="league"]{--tg-format-accent:var(--tg-section-format-league-accent);--tg-format-soft:var(--tg-section-format-league-soft)}
.builder-flow-item[data-format-family="groups"]{--tg-format-accent:var(--tg-section-format-groups-accent);--tg-format-soft:var(--tg-section-format-groups-soft)}
.builder-flow-item[data-format-family="knockout"]{--tg-format-accent:var(--tg-section-format-knockout-accent);--tg-format-soft:var(--tg-section-format-knockout-soft)}
.builder-flow-item strong{font-size:var(--tg-font-sm)}
.builder-flow-item small{display:block;color:var(--tg-text-muted);font-size:var(--tg-font-xs);overflow-wrap:anywhere}
.builder-flow-arrow{display:flex;justify-content:center;color:var(--tg-text-muted);font-size:var(--tg-font-md);line-height:1;padding:4px 0}
@media (min-width:900px){.builder-flow-list{flex-direction:row;flex-wrap:wrap;align-items:center}.builder-flow-item{flex:1 1 200px}.builder-flow-arrow{padding:0 var(--tg-space-1)}.builder-flow-arrow::before{content:"→"}.builder-flow-arrow span{display:none}}
.builder-confirm-hint{margin:var(--tg-space-2) 0 0;color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.builder-action-bar .builder-sticky-add{display:inline-flex}
.builder-action-bar{align-items:center}
.builder-action-bar .builder-confirm-form{margin-left:auto}
@media (max-width:760px){.builder-approve .builder-confirm-hint{display:none}
  /* Format UX (2026-09-28) — mobilde kapalı kart satırı SAĞA KAYMAZ: eski
     `.builder-card-details-summary{align-self:flex-end;width:auto}` kuralını
     aşama satırı için geçersiz kılar; üst satır tam genişlik, Ayarlar sağda. */
  .builder-card-details > .builder-stage-row,.builder-card-details[open] > .builder-stage-row{display:grid;align-self:stretch;width:100%;grid-template-columns:minmax(0,1fr) auto;justify-content:normal;padding:0}
  .builder-stage-side{justify-content:flex-end}}/* v6.230.0 — GRUP AYARLARI TEK YÜZEY: grup sayısı + çıkış kuralı aynı kompakt
   formda; yeterli genişlikte alanlar yan yana (auto-fit, alt sınır 132px —
   390px'te alt alta düşer, etiket kırılmaz), inputlar 44px dokunma hedefi. */
.builder-groups-section .builder-groups-basic{margin:0}
.builder-groups-section .builder-groups-outcome{margin-top:var(--tg-space-2);padding-top:var(--tg-space-2);border-top:1px dashed var(--tg-border)}
.builder-field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:var(--tg-space-2);align-items:end}
.builder-field-row .builder-field{margin:0}
.builder-field-row .builder-field .tg-input{max-width:none;width:100%;min-height:var(--tg-touch-min)}
.builder-field-row .builder-field-action{display:flex;align-items:flex-end}
.builder-field-row .builder-inline-save{min-height:var(--tg-touch-min);white-space:nowrap}
.builder-type-note{margin:var(--tg-space-1) 0 0;font-size:var(--tg-font-xs)}
.builder-groups-summary{margin:var(--tg-space-2) 0 0;padding:var(--tg-space-1) var(--tg-space-2);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);
  color:var(--tg-text);background:var(--tg-surface-soft);border-radius:var(--tg-radius-sm)}
.builder-groups-section .tg-form-actions{margin-top:var(--tg-space-2)}
@media (max-width:479px){
  .builder-groups-section{padding:var(--tg-space-2)}
  .builder-groups-section .builder-section-title{margin-bottom:var(--tg-space-1)}
  .builder-field-row{grid-template-columns:1fr;gap:var(--tg-space-1)}
  /* 390px'te (≈297px içerik) alt alta — etiket kırılmaz; 430px'te iki sütun. */
  .builder-field-row-3{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--tg-space-1) var(--tg-space-2)}
  .builder-groups-section .tg-help{margin:var(--tg-space-1) 0 0}
}
/* v6.232.0 — KÜÇÜK UX CİLASI ───────────────────────────────────────────
   (1) Boş zincirde önizleme basılmaz → tek kolon. (2) "+ Aşama Ekle" ve boş
   durum aynı hafif kart dilinde: yumuşak zemin, ince kenarlık, hover/focus/
   active; ana onay CTA'sıyla yarışmaz. (3) Boş durum daha kompakt.
   (4) Grup Ayarları: aşama adı ikincil, kompakt kayıt butonları. */
.builder-layout.is-single{grid-template-columns:minmax(0,1fr)}
.builder-add{border:1px solid var(--tg-border);background:var(--tg-surface-soft);transition:border-color .15s ease,background-color .15s ease}
.builder-add:hover,.builder-add:focus-within{border-color:var(--tg-action-primary);background:var(--tg-surface)}
.builder-add-summary{gap:var(--tg-space-2);font-size:var(--tg-font-sm)}
.builder-add-summary::before{content:"+";display:inline-grid;place-items:center;width:22px;height:22px;border-radius:var(--tg-radius-pill);
  border:1px solid currentColor;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);line-height:1}
.builder-add-summary:active{opacity:.85}
.builder-add[open] > .builder-add-summary{border-bottom:1px solid var(--tg-border)}
.builder-empty{padding:var(--tg-space-4) var(--tg-space-3);gap:var(--tg-space-1);border:1px solid var(--tg-border)}
.builder-empty-title{font-size:var(--tg-font-md)}
.builder-empty-cta{margin-top:var(--tg-space-2);display:inline-flex;align-items:center;gap:var(--tg-space-2);min-height:var(--tg-touch-min)}
/* v6.236.0 — `.builder-field-name` kuralları KALDIRILDI: aşama adı alanı
   yüzeyden çıktı (bkz. DECISIONS §23.3), sınıf artık basılmıyor. */
.builder-groups-basic .builder-inline-save{padding:0 var(--tg-space-3);font-size:var(--tg-font-sm)}
.builder-groups-section .tg-form-actions .tg-btn{padding-inline:var(--tg-space-3);font-size:var(--tg-font-sm)}
@media(max-width:760px){
  /* Grup Ayarları (mobil): grup sayısı | kayıt · her gruptan | ek takım ·
     ek sıra tam satır. Kontroller 44px kalır. (v6.236.0 — "ad ikincil tam
     satır" satırı düştü: aşama adı alanı yüzeyde değil.) */
  .builder-groups-basic .builder-field-row-basic{grid-template-columns:minmax(0,1fr) auto;gap:var(--tg-space-1) var(--tg-space-2)}
  .builder-groups-outcome .builder-field-row-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .builder-groups-outcome .builder-field-rank{grid-column:1/-1}
  .builder-groups-section .tg-form-actions{display:flex;justify-content:flex-end}
  .builder-groups-section .tg-form-actions .tg-btn{width:auto}
  /* Utility kontroller (↑ ↓ ✕): daha hafif — ince kenarlık, saydam zemin,
     küçük glif; gerçek dokunma hedefi 40px. */
  .builder-icon-btn{width:40px;height:40px;border:1px solid var(--tg-border);background:transparent;border-radius:var(--tg-radius-md);font-size:var(--tg-font-sm);color:var(--tg-text-muted)}
  .builder-icon-btn-danger{color:var(--tg-status-danger);border-color:color-mix(in srgb,var(--tg-status-danger) 30%,var(--tg-border))}
  .builder-card-details-summary{color:var(--tg-text);font-weight:var(--tg-font-weight-bold)}
  .builder-empty{padding:var(--tg-space-3) var(--tg-space-2)}
  /* PD-UX15 — mobil ızgara masaüstüyle AYNI kuralı izler (satır başına en
     fazla 4, 5–6 grupta 3 sütun); burada yalnız aralık ve iç boşluk
     sıkışır. İkinci bir sütun politikası tutulmaz. */
  .structure-node.structure-node-groups.is-role-stage{width:100%}
  .structure-node-boxes{gap:5px 4px;margin-top:12px}
  .structure-node-box{padding:7px 3px;gap:1px}
  .structure-node-box strong{font-size:var(--tg-font-xs)}
}
/* v6.233.0 — MOBİL TEK YÜZEYLİ GÖRSEL AŞAMA BUILDER ─────────────────────
   ≤760px: ayrı "Oluşacak Turnuva" önizlemesi GÖSTERİLMEZ; her faz kartı kendi
   önizleme düğümlerini (aynı read-model/renderer) içinde çizer. Başlık:
   [sıra] ↑↓ · ad · ✕. İkon/tür tekrarı yok. Geçiş alanında tek kısa durum;
   detaylı hata ayarların içinde. Masaüstü iki kolon + sağ önizleme AYNEN. */
.builder-card-visual{display:none}
.builder-inline-errors{list-style:none;margin:0 0 var(--tg-space-2);padding:var(--tg-space-2) var(--tg-space-3);
  border:1px solid color-mix(in srgb,var(--tg-status-danger) 35%,var(--tg-border));border-radius:var(--tg-radius-sm);
  background:var(--tg-status-danger-soft);color:var(--tg-status-danger);font-size:var(--tg-font-sm)}
.builder-inline-errors li + li{margin-top:4px}
/* Masaüstünde hata geçiş alanında (tek yer); ayar içi kopya yalnız mobil. */
@media(min-width:761px){.builder-inline-errors{display:none}}
@media(max-width:760px){
  .builder-layout .structure-preview-column{display:none}
  .builder-layout.is-single,.builder-layout{grid-template-columns:minmax(0,1fr)}
  /* Başlık: sıra · ↑↓ · ad · ✕ — dört sütun; ikinci satır yalnız rozet (varsa). */
  .builder-card{grid-template-columns:auto auto minmax(0,1fr) auto}
  .builder-card-move{grid-row:1;grid-column:2;order:0;align-self:center;margin:0;gap:2px}
  .builder-card-move .builder-icon-btn{width:32px;height:40px;border:0;background:transparent;font-size:var(--tg-font-sm);color:var(--tg-text-muted)}
  .builder-card-move .builder-icon-btn:hover{color:var(--tg-action-primary)}
  .builder-card-name{grid-column:3}
  .builder-card-icon,.builder-card-type-label{display:none}
  /* Format UX (2026-09-28): Hızlı Başlangıç kartı ikonu mobilde GÖRÜNÜR (yukarıdaki kural aşama kartı içindir). */
  .builder-quick-start-card .builder-card-icon{display:inline-flex}
  .builder-card-type{grid-row:2;grid-column:1/-1;margin:0}
  .builder-card-type:not(:has(.builder-card-badge)){display:none}
  .builder-card-details{grid-column:1/-1}
  /* Görsel: kartın kendi önizleme düğümleri; özet/türetilmiş satır tekrar etmez. */
  .builder-card-visual{display:block;grid-column:1/-1;margin-top:var(--tg-space-2)}
  .builder-card-visual .structure-chain{--tg-chain-gap:12px}
  .builder-card-visual .structure-node-label{display:none}
  .builder-card-visual .structure-node.is-role-stage{width:100%;margin-inline:0}
  .builder-card-visual .structure-node{padding:var(--tg-space-2)}
  .builder-card-visual .structure-node-boxes{margin-top:18px}
  .builder-card:has(> .builder-card-visual) .builder-card-summary,
  .builder-card:has(> .builder-card-visual) .builder-card-derived{display:none}
  /* Geçiş: tek kısa durum; uyarı cümlesi ve hata listesi ayarların içinde. */
  .builder-transition-warning,.builder-transition-errors{display:none}
  .builder-transition.has-errors .builder-transition-text{border-color:var(--tg-status-danger);color:var(--tg-status-danger);background:var(--tg-status-danger-soft)}
}
/* v6.234.0 — SIRALI BUILDER ───────────────────────────────────────────
   ↑↓ yok; çöp kutusu; "Ayarları Düzenle ›" sağda; kart içindeki önizleme
   düğümü İKİNCİ KART GİBİ GÖRÜNMEZ (kenarlık/zemin/gölge yok — grup
   kutuları küçük öğe olarak kalır); mobil alt çubuk: + Aşama Ekle (ikincil)
   | Yapıyı Onayla (ana); zincir sonundaki ekle yüzeyi mobilde yalnız
   seçici açıkken görünür (tekrar yok). Masaüstü aynen. */
.builder-card-details-summary{margin-left:auto}
.builder-action-bar{display:flex;gap:var(--tg-space-2);align-items:center;justify-content:flex-end;flex-wrap:wrap}
.builder-approve-form{display:contents}
.builder-sticky-add{display:none}
.builder-add-reason{margin:var(--tg-space-1) 0 0;text-align:right}
.builder-icon-btn .tg-icon{display:block}
@media(max-width:760px){
  .builder-card-details{display:flex;flex-direction:column}
  .builder-card-details-summary{align-self:flex-end;width:auto;justify-content:flex-end;gap:6px;padding:0 var(--tg-space-1)}
  .builder-card-details[open] > .builder-card-details-summary{align-self:stretch;width:100%;justify-content:space-between}
  .builder-card-visual .structure-node.is-role-stage{border:0;background:transparent;box-shadow:none;padding:0;border-radius:0}
  .builder-card-visual .structure-node.is-role-stage::before,.builder-card-visual .structure-node.is-role-stage::after{display:none}
  .builder-card-visual .structure-node-boxes{margin-top:14px}
  .builder-card-visual .structure-node-meta{justify-content:flex-start}
  .builder-sticky-add{display:inline-flex;flex:1 1 0;min-height:var(--tg-touch-min);padding-inline:var(--tg-space-2);white-space:nowrap}
  .builder-sticky-add[disabled]{opacity:.55;cursor:not-allowed}
  .builder-action-bar{flex-wrap:nowrap}
  .builder-action-bar .builder-approve-button{flex:1.4 1 0;min-width:0;width:auto}
  .builder-add-reason{display:block;font-size:var(--tg-font-xs);text-align:center;margin:4px 0 0}
  .builder-add:not([open]){display:none}
  .builder-add > .builder-add-summary{display:none}
}
/* ── GELİŞMİŞ BUILDER V2 BLOĞU SONU ────────────────────────────────── */
/* Eklenemeyen tür: nedeni okunur kalsın diye gizlenmez, soluklaştırılır. */
.builder-option-fields{margin:0 0 12px;min-width:0}

/* v6.120.0 — Competition Engine PHASE 6D: seri başı / torbalı kura + geçmiş.
   6B.4b.1 dersi baştan uygulanır: global `input,select,textarea{width:100%}`
   kuralı radio'ya da vurduğu için seçim kartlarında bileşen kapsamında
   EZİLİR. Global kurallara DOKUNULMAZ. §68 — yalnız ihtiyaç kadar UI. */
.draw-mode-form{margin:0 0 16px;min-width:0}
.draw-mode-choice{border:0;padding:0;margin:0;min-width:0}
.draw-mode-choice > legend{font-size:.86rem;font-weight:700;margin:0 0 8px;padding:0}

.draw-seeding-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:8px;min-width:0}
.draw-seeding-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px;padding:10px 12px;min-width:0;
  border:1px solid var(--line,#dbe4ef);border-radius:10px;background:#fff}
.draw-seeding-name{flex:1 1 160px;min-width:0;font-weight:600;overflow-wrap:anywhere}
.draw-seeding-field{display:flex;flex-direction:column;gap:2px;flex:0 0 auto;min-width:0}
.draw-seeding-field label{font-size:.78rem;font-weight:600;opacity:.75;margin:0;display:block}
/* Global input{width:100%} bileşen kapsamında ezilir — alanlar dar kalsın. */
.draw-seeding-field input[type="number"]{width:6.5rem;min-width:0;padding:7px 9px}

.draw-history-panel{min-width:0}
.draw-last-summary{display:flex;flex-wrap:wrap;gap:6px 10px;margin:0;font-size:.92rem;
  min-width:0;overflow-wrap:anywhere}
.draw-history-details{margin-top:10px;min-width:0}
.draw-history-details > summary{cursor:pointer;font-size:.86rem;font-weight:600;opacity:.8}
.draw-history-list{margin:10px 0 0;padding-left:18px;display:grid;gap:10px;min-width:0}
.draw-history-list > li{min-width:0;overflow-wrap:anywhere}
.draw-history-groups{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:3px;font-size:.86rem;opacity:.85}
.draw-history-groups li{overflow-wrap:anywhere}

/* v6.121.0 (Phase 6E) — eleme seri başı kurası paneli */
.draw-knockout-panel{min-width:0}
.draw-knockout-run{margin-top:4px}
.draw-knockout-preview{margin-top:14px;min-width:0}
.draw-knockout-preview h3{font-size:.95rem;margin:0 0 6px}
.draw-knockout-pairs{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px;min-width:0}
.draw-knockout-pairs li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;min-width:0;
  border:1px solid var(--border,#e3e8ef);border-radius:10px;background:var(--panel-2,#fafbfc)}
.draw-knockout-team{min-width:0;overflow-wrap:anywhere;font-weight:600}
.draw-knockout-vs{opacity:.55;font-weight:400}
.draw-seed-badge{display:inline-block;font-size:.72rem;font-weight:700;padding:1px 7px;border-radius:999px;
  background:var(--blue,#0b6cf2);color:#fff;vertical-align:middle;white-space:nowrap}
.draw-knockout-bye{margin:10px 0 0;font-size:.88rem;display:grid;gap:2px;min-width:0}
.draw-knockout-bye span{overflow-wrap:anywhere;opacity:.85}
.draw-phase-switch{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px;min-width:0}
.draw-phase-switch a{display:flex;flex-direction:column;gap:2px;padding:8px 14px;border-radius:10px;
  border:2px solid var(--line,#dbe4ef);background:#fff;text-decoration:none;color:inherit;
  font-size:.9rem;font-weight:600;min-width:0;overflow-wrap:anywhere}
.draw-phase-switch a.is-active{border-color:var(--blue,#0b6cf2);background:#f5f9ff}
.draw-phase-switch a small{font-weight:400;opacity:.7;font-size:.78rem}
/* UXA §15.17 — Kura aşaması durumu (sportif durum DEĞİL). Durum her zaman
   metinle yazılır; renk yalnız destekler: başarı = kura tamamlandı,
   bilgi/aksiyon = kura hazır, nötr = bekleme. Uyarı/hata rengi kullanılmaz. */
.draw-phase-switch a small.draw-phase-state{opacity:1;color:var(--tg-status-neutral)}
.draw-phase-switch a small.draw-phase-state.is-drawn{color:var(--tg-status-success);font-weight:600}
.draw-phase-switch a small.draw-phase-state.is-drawn::before{content:"\2713\00a0";content:"\2713\00a0" / ""}
.draw-phase-switch a small.draw-phase-state.is-ready{color:var(--tg-status-info);font-weight:600}
.draw-phase-switch a:focus-visible{outline:2px solid var(--blue,#0b6cf2);outline-offset:2px}

/* v6.124.0 (Phase 6H) — fikstür listesinde two-leg etiketleri. */
.program-aggregate{font-weight:700;color:var(--blue,#0b6cf2);white-space:nowrap}

/* v6.126.0 (Phase 7A) — eşitlik bozma kriterleri listesi. Mobilde de
   rahat kullanılsın diye satırlar sarmalanır ve taşıma düğmeleri
   dokunulabilir boyuttadır. */
.ranking-criteria-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px;min-width:0}
.ranking-criterion-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;
  border:1px solid var(--line,#dbe4ef);border-radius:10px;padding:8px 10px;background:#fff;min-width:0}
.ranking-criterion-name{font-weight:600;flex:1 1 140px;min-width:0;overflow-wrap:anywhere}
.ranking-criterion-row .check-line{margin:0}
.ranking-criterion-actions{display:flex;gap:6px;margin-left:auto}
.ranking-criterion-actions button{min-width:40px;padding:6px 10px;line-height:1}

/* v6.131.0 (Phase 7D) — Canlı Maç: manuel beraberlik kararı geçmişi.
   Panelin form alanları sayfanın kendi tipografisini kullanır; geçmiş
   ise bir KAYIT bloğudur ve .live-appearance-* ailesiyle aynı kompakt
   ölçekte durur (aksi hâlde gerekçe metni panelin içinde akıp gider). */
.live-manual-history{display:grid;gap:8px;margin:0 0 14px;padding:12px;border:1px solid #dbe4ef;border-radius:12px;background:#f7f9fc}
.live-manual-history>strong{color:#243d5b;font-size:12px}
.live-manual-row{display:grid;gap:3px}
.live-manual-row span{color:#123a68;font-size:13px;font-weight:800}
.live-manual-row em{color:#44586f;font-size:12px;font-style:normal;line-height:1.45}
.live-manual-row small{color:#7a8a9c;font-size:11px}

/* v6.136.0 (IA paketi) — YETENEK GÖRÜNÜRLÜĞÜ. Modül kartları mevcut
   .module-summary-* ailesini kullanmaya devam eder; buradaki kurallar
   yalnız yeni satırlar içindir: bir yeteneğin KAPSAMI, KAPALIYSA
   GEREKÇESİ ve platform tarafından yönetilen yeteneklerin listesi. */
.module-summary-features{margin-top:6px;color:#516273}
.module-summary-reason{margin-top:6px;padding:7px 9px;border-radius:8px;background:#f6f8fb;color:#516273}
.v3-subheading{margin:18px 0 8px;font-size:14px;font-weight:900;color:#1f2d3d}
.capability-platform-list{display:flex;flex-direction:column;gap:6px}
.capability-platform-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid rgba(15,23,42,.1);border-radius:9px}
.capability-platform-row>span{font-size:12px;font-weight:700;color:#1f2d3d}
.discipline-advanced-panel{margin-top:14px}
.discipline-advanced-panel>summary{cursor:pointer;font-weight:900}
/* v6.367.0 — `.settings-collapsible-panel` KURALLARI KALDIRILDI.
   v6.142.0'da Modül Ayarları'nın katlanabilir BİLGİ panelleri için
   açılmıştı; o iki panel v6.170.0'da (UXA-042/UXA-087) kaldırıldı ve o
   günden beri hiçbir markup bu sınıfı basmıyordu. Grep ile doğrulandı:
   PHP/JS/HTML'de 0 referans. Canonical katlanabilir ayar bloğu
   `.settings-advanced-block`tır. */
/* v6.143.0 (IA-Q4) — Turnuva Bildirim Geçmişi. Tablo YALNIZ ÖZET taşır
   (tür/başlık/zaman/alıcı sayısı/teslimat); kişi bazlı satır yoktur. */
.notification-history-table{margin-top:12px}
.notification-history-table table{width:100%;border-collapse:collapse}
.notification-history-table th,.notification-history-table td{padding:10px 12px;border-bottom:1px solid var(--v3-line);text-align:left;vertical-align:top}
.notification-history-table th{color:#66758a;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.notification-history-table td strong{display:block;font-size:13px}
.notification-history-table .numeric{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.notification-history-category{display:inline-block;padding:4px 9px;border-radius:999px;background:#eef4fc;color:#1f5fae;font-size:11px;font-weight:800;white-space:nowrap}
.notification-history-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.notification-history-pager span{color:#66758a;font-size:12px;font-weight:700}
.notification-history-inbox-link{margin-top:14px}
/* BILDIRIM-FAZ-1: teslimat etiketinin altındaki tek satırlık neden ayrıntısı + tablo altı açıklama. */
.notification-history-detail{display:block;margin-top:4px;color:var(--tg-text-muted);font-size:12px;line-height:1.35}
.notification-history-delivery-info{margin-top:12px}
@media (max-width:430px){.capability-platform-row{flex-direction:column;align-items:flex-start;gap:5px}.v3-subheading{margin:14px 0 6px;font-size:13px}}

/* IA-Q1 — Genel Bakış ilerleme çizgisi adımları artık BAĞLANTIDIR
   (çizgi yalnız durum göstermiyor, sıradaki işe götürüyor). Görsel dil
   DEĞİŞMEDİ: eski `.v3-progress-flow>div` kuralının aynısı `>a` için de
   geçerlidir; üzerine yalnız tıklanabilirlik ve odak göstergesi eklenir. */
.v3-progress-flow>a{display:block;text-align:center;position:relative;color:inherit;text-decoration:none;border-radius:10px;padding:4px 2px}
.v3-progress-flow>a:hover{background:#f2f6fb}
.v3-progress-flow>a:focus-visible{outline:2px solid #1664d9;outline-offset:2px}

/* v6.159.0 (SD-03/SD-04/SD-05/SD-06) — Puan Durumu açıklanabilirliği. Yeni SÜTUN eklenmedi: mobil ızgara sütun sayısı sabittir (mobile-competition.css), rozetler takım hücresinin içinde blok olarak akar. Anlam yalnız RENKLE verilmez. */
.standings-badge{display:inline-block;margin-top:3px;padding:1px 6px;border-radius:999px;font-size:11px;font-weight:600;line-height:1.5;white-space:normal;overflow-wrap:anywhere}
.standings-badge+.standings-badge{margin-left:4px}
/* v6.279.0 — `.is-qualified-badge` ve `.is-tiebreak-badge` KALDIRILDI:
   satır içi qualification/tie-break METİN rozetleri kalktı (aynı bilgi
   lejantta ve "Sıralama nasıl belirlendi?" alanında zaten vardı).
   `.is-inactive-badge` KALIR — o bir DURUM rozetidir (çekildi /
   diskalifiye), sıralama açıklaması değildir. */
.standings-badge.is-inactive-badge{background:var(--tg-surface-soft);color:var(--tg-color-muted);border:1px solid var(--tg-color-border)}
.standings-explain{margin:var(--tg-space-3) 0 0;border-top:1px solid var(--tg-color-border);padding-top:var(--tg-space-2)}
.standings-explain>summary{cursor:pointer;font-size:var(--tg-font-sm);font-weight:600;color:var(--tg-color-muted);list-style:none}
.standings-explain>summary::-webkit-details-marker{display:none}
.standings-explain>summary::after{content:" ⌄";color:var(--tg-color-muted)}
.standings-explain[open]>summary::after{content:" ⌃"}
.standings-explain-line{margin:var(--tg-space-2) 0 2px;font-size:var(--tg-font-sm);color:var(--tg-color-text)}
.standings-explain-hint{margin:0 0 var(--tg-space-2);font-size:var(--tg-font-xs);color:var(--tg-color-muted)}
.standings-explain-list{margin:0 0 var(--tg-space-2);padding-left:18px;font-size:var(--tg-font-xs);color:var(--tg-color-muted);display:grid;gap:3px}
.standings-rules-note{margin:14px 0 0;padding:var(--tg-space-2) var(--tg-space-3);border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft);color:var(--tg-color-muted);font-size:var(--tg-font-sm)}
.standings-rules-note p{margin:0 0 4px}.standings-rules-note p:last-child{margin:0}
@media(max-width:760px){.standings-badge{display:block;margin-left:0!important;font-size:10px;padding:1px 5px}.standings-explain>summary{font-size:12px}.standings-rules-note{font-size:12px;padding:8px 10px}}
.standings-badge.is-forfeit-badge{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;display:inline-block;margin-left:4px}

/* v6.160.0 (Canlı Maç V1) — uzatma/penaltı serisi, Maçın Adamı ve ayrıntılı
   olay girişi. Mobil öncelikli (360/390px): seri geçmişi tek sütun akar,
   butonlar tam genişlik olur; masaüstünde satıra döner. Yeni tasarım dili
   kurulmadı, mevcut .live-* bileşenlerinin ölçüleri korundu. */
.live-shootout{margin:12px 0 0;padding:12px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc}
.live-shootout-title{margin:0 0 8px;font-size:15px;font-weight:700;color:#0f172a}
.live-shootout-score{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:#334155}
.live-shootout-score strong{font-size:20px;font-variant-numeric:tabular-nums;color:#0f172a}
.live-shootout-history{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px}
.live-shootout-history li{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;font-size:13px;padding:4px 6px;border-radius:8px;background:#fff}
.live-shootout-history li.is-away{background:#eef2ff}
.live-shootout-history .kick-no{font-variant-numeric:tabular-nums;color:#64748b;font-size:12px}
.live-shootout-history .kick-team{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-shootout-empty,.live-shootout-status,.live-shootout-turn{margin:8px 0 0;font-size:13px;color:#475569}
.live-shootout-status{font-weight:600;color:#15803d}
.live-shootout-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.live-shootout-actions form{margin:0}
.live-shootout-actions .tg-btn{width:100%}
.live-shootout-undo{margin-top:8px}
.live-shootout-undo .tg-btn{width:100%}
.live-potm{margin:12px 0 0;padding:12px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}
.live-potm-title{margin:0 0 8px;font-size:15px;font-weight:700;color:#0f172a}
.live-potm-form{display:grid;gap:8px}
.live-potm-form select{width:100%}
.live-potm-hint{margin:8px 0 0;font-size:12px;color:#64748b}
.live-detail-entry{margin:12px 0 0}
.live-detail-form{display:grid;gap:6px}
.live-detail-form select,.live-detail-form input[type="text"]{width:100%}
@media(min-width:760px){
  .live-shootout-actions{grid-template-columns:repeat(2,minmax(0,200px))}
  .live-shootout-undo .tg-btn,.live-shootout-actions .tg-btn{width:auto}
}

/* ══ v6.163.0 (Faz C) — DİSİPLİN DOSYASI YÜZEYLERİ ═══════════════════════
   MOBILE-FIRST: taban düzen 360/390px içindir; geniş ekran yalnız bir
   min-width sorgusuyla iki sütuna açılır. Yatay taşma yaratabilecek tek
   yapı tablodur ve o zaten `.responsive-table` içinde kendi kaydırma
   kabında durur (sayfa gövdesi yatay kaymaz).
   Yeni bir tasarım sistemi KURULMAZ — mevcut `.v3-panel` / `.v3-*-button`
   / `.module-summary-badge` bileşenleri yeniden kullanılır. */
.discipline-cases-page,.discipline-case-page,.referee-report-page{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}
/* min-width:0 ZORUNLUDUR: grid/flex çocukları varsayılan `auto` minimum
   genişliğe sahiptir; içindeki <select>'in EN UZUN SEÇENEĞİ (uzun oyuncu/
   takım adları) tüm sütunu 390px'in ötesine iterdi. 390px ölçümü gerçek
   tarayıcıda dar iframe ile doğrulanır — DOM kontrolü tek başına yetmez. */
.discipline-cases-page>*,.discipline-case-page>*,.referee-report-page>*,
.discipline-form>*,.discipline-inline-form>*,.discipline-request-card>*{min-width:0}
.discipline-form{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-top:10px;min-width:0}
.discipline-form label,.discipline-inline-form label{display:grid;gap:5px;min-width:0}
.discipline-form label>span,.discipline-inline-form label>span{font-size:12px;font-weight:800;color:var(--v3-muted)}
.discipline-form input,.discipline-form select,.discipline-form textarea,
.discipline-inline-form textarea{width:100%;max-width:100%;box-sizing:border-box}
.discipline-form textarea,.discipline-inline-form textarea{resize:vertical}
.discipline-form button{justify-self:start}
.discipline-inline-form{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:10px;min-width:0}
.discipline-filter-form{display:grid;gap:6px;margin:6px 0 14px;max-width:320px}
.discipline-filter-form label{display:grid;gap:5px}
.discipline-filter-form select{width:100%}
.discipline-request-card{border:1px solid var(--v3-line);border-radius:12px;padding:14px;margin-top:12px;background:#fbfcfe;min-width:0}
.discipline-request-card header{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px}
.discipline-request-meta,.discipline-entry-meta{font-size:12px;color:var(--v3-muted)}
.discipline-request-body{margin:8px 0 0;overflow-wrap:anywhere}
.discipline-request-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-top:12px}
.discipline-team-name{display:block;font-size:12px;color:var(--v3-muted)}
.discipline-pager{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;font-size:13px}
.discipline-case-summary dl{display:grid;gap:10px;margin:0}
.discipline-case-summary dt{font-size:12px;color:var(--v3-muted);font-weight:700}
.discipline-case-summary dd{margin:2px 0 0;font-weight:700;overflow-wrap:anywhere}
.discipline-case-description{margin:14px 0 0;overflow-wrap:anywhere;white-space:pre-line}
.discipline-timeline-list{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:12px}
.discipline-entry{border-left:3px solid var(--v3-line);padding:0 0 0 12px;min-width:0}
.discipline-entry header{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.discipline-entry p{margin:6px 0 0;overflow-wrap:anywhere}
.discipline-entry-decision{border-left-color:#1267dc}
.discipline-entry-internal_note{border-left-color:#8b6500}
.discipline-decision-action{font-weight:900}
.discipline-internal-reason,.discipline-recipient-reason,.discipline-report-body{white-space:pre-line}
.discipline-over-served{font-weight:800}
.discipline-report-list{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px}
.discipline-report-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.discipline-report-addendum{font-size:12px;color:var(--v3-muted)}
.discipline-manager-actions details,.discipline-open-case details,.discipline-referee-request{border-top:1px solid var(--v3-line);padding:12px 0 0;margin-top:12px}
.discipline-manager-actions summary,.discipline-open-case summary,.discipline-referee-request summary{cursor:pointer;list-style:none}
.discipline-manager-actions summary h2,.discipline-manager-actions summary h3,
.discipline-open-case summary h2,.discipline-referee-request summary h3{display:inline;font-size:15px;margin:0}
@media(min-width:760px){
  .discipline-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}
  .discipline-inline-form{grid-template-columns:minmax(0,1fr)}
  .discipline-form-wide,.discipline-form button{grid-column:1/-1}
  .discipline-request-actions{grid-template-columns:auto minmax(0,1fr);align-items:end}
  .discipline-case-summary dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
}

/* ══ v6.163.1 (Faz C.1) — TURNUVA ÇALIŞMA AYARLARI + MAÇ SONRASI SONUÇ ═══
   MOBILE-FIRST: üç ayar satırı 360/390px'te tek sütun akar; radyo
   seçenekleri ve uzun i18n metinleri sarar, yatay taşma üretmez.
   Mevcut `.check-line` / `.v3-form-actions` bileşenleri yeniden kullanılır;
   yeni bir form sistemi kurulmaz. */
.workflow-settings-form{display:grid;gap:18px;min-width:0}
.workflow-field{border:1px solid var(--v3-line);border-radius:12px;padding:14px;margin:0;min-width:0}
.workflow-field>legend{padding:0 6px;font-size:13px;font-weight:900}
.workflow-field .check-line{display:flex;align-items:flex-start;gap:8px;margin:6px 0;overflow-wrap:anywhere}
.workflow-field .check-line input{flex:0 0 auto;margin-top:3px}
.workflow-field small.muted{display:block;margin-top:8px;overflow-wrap:anywhere}
.workflow-locked-note{overflow-wrap:anywhere}
.live-record-result{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0}
.live-record-result>*{min-width:0}
.live-record-result label{display:grid;gap:4px}
.live-record-result label>span{font-size:12px;overflow-wrap:anywhere}
.live-record-result input{width:100%;max-width:100%;box-sizing:border-box}
.live-record-hint{font-size:12px;opacity:.85;overflow-wrap:anywhere}
/* v6.394.92 (CED §15.41 C6) — devam doğrulama onayı canonical `.check-line`; yukarıdaki
   `label` grid ve `input` %100 kuralları onay kutusunu satıra yaymasın. */
.live-record-result .check-line{display:flex;align-items:flex-start;gap:9px}
.live-record-result .check-line input{width:auto;flex:0 0 auto;margin-top:3px}
@media(min-width:560px){
  .live-record-result{grid-template-columns:repeat(2,minmax(0,1fr))}
  .live-record-result>strong,.live-record-hint,.live-record-result>button,.live-record-result>.tg-note,.live-record-result>.check-line{grid-column:1/-1}
}
/* SADECE-SONUCU-GIR (CED §15.46): form / seçenek düğmeleri / durum notu `hidden` ile açılıp
   kapanır — bileşen display kuralları (`.tg-btn{display:inline-flex}`, `.live-record-result{display:grid}`,
   `.tg-note{display:block}`) özniteliği ezmesin. Vazgeç + Sonucu Kaydet tek satır, sığmazsa alt alta. */
.live-record-result[hidden],[data-result-entry-choice][hidden],[data-result-entry-status][hidden],[data-result-entry-held][hidden]{display:none!important}
/* Mobil `.live-controls` 2 sütunlu ızgaradır (mobile-core.css); form artık tek çocuk olmadığından
   `form:only-child` tam genişliği düşer — form ve durum notları açıkça tüm satırı kaplar (`.live-controls-row`
   yalnız yerleşim kancasıdır; bildirim sınıfı değildir). */
.live-controls>.live-record-result,.live-controls>.live-controls-row{grid-column:1/-1;width:100%;box-sizing:border-box}
.live-record-actions{display:flex;flex-wrap:wrap;gap:8px;grid-column:1/-1}
.live-record-actions>.tg-btn{flex:1 1 10rem}
/* Ürün sahibi revizyonu (2026-10-31, CED §15.46 A.7): iki skor alanı her genişlikte aynı satırda; uzun takım
   adı etiketi kırılır, alanlar eşit genişlikte ve alt kenarda hizalı kalır. */
.live-record-scores{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:end;grid-column:1/-1}

/* v6.166.0 — HÜKMEN SKORUNUN KISA NEDENİ.
   Skorun altında ikincil ağırlıkta tek satır: skorun önüne geçmez,
   kendi satırına iner ve dar ekranda sarar (taşma yok). Aynı sınıf hem
   yönetim fikstür kartında hem public maç kartında kullanılır — iki
   yüzeyde iki farklı görsel dil üretilmez. */
.score-forfeit-reason{display:block;margin-top:4px;max-width:100%;font-size:11px;font-weight:600;line-height:1.35;color:#64748b;letter-spacing:0;white-space:normal;overflow-wrap:anywhere;text-align:center}
/* Fikstür kartında ızgaranın TAM genişliğini kaplar: dar skor sütununda
   kelime kelime dikey yığılmasın. */
.v3-match-score>.score-forfeit-reason{grid-column:1/-1;margin-top:8px}
.score-penalty{display:block;margin-top:4px;font-size:12px;font-weight:700;line-height:1.3;
  color:#5a6b80;letter-spacing:0;white-space:nowrap;text-align:center}
/* v6.167.1 — seri penalti notu skor sutununun DISINDA, izgaranin tam
   genisliginde: dar kirilimlarda skor sutunu 54px/44px oldugu icin not
   tasip deplasman sutununun ustune biniyordu (ayni sebep/cozum:
   .score-forfeit-reason). */
.v3-match-score>.score-penalty{grid-column:1/-1;margin-top:6px}

/* ═══════════════════════════════════════════════════════════════════
 * TAKIM DETAYI V2 — GÖRSEL KATMAN (yalnız sunum)
 *
 * Ekran teknik olarak doğruydu ama düz beyaz bir admin paneli gibi
 * görünüyordu. TurnuvaGo görsel dili (Genel Bakış'ta canonical):
 *     RENKLİ BÖLÜM ÜSTÜ → AÇIK İÇERİK YÜZEYİ → SADE SATIRLAR
 * Bu blok o dili takım detayına uygular. Markup sözleşmesi, sekme
 * mekaniği, panel görünürlüğü ve 50/50 ızgara DEĞİŞMEDİ.
 *
 * BÖLÜM KİMLİĞİ TEK DEĞİŞKENDEN: her panel `--tg-team-section` tanımlar,
 * başlık/sekme/aksan kuralları TEK kez yazılır. Yeni hex YOKTUR — tonlar
 * mevcut semantic token ailelerinden gelir, dolayısıyla Platform Tema
 * Yönetimi bu ekranı etkilemeye devam eder.
 * ═══════════════════════════════════════════════════════════════════ */
.team-squad-panel,
.team-tab[data-team-tab="players"]{--tg-team-section:var(--tg-section-roster-accent);--tg-team-section-soft:var(--tg-section-roster-soft);--tg-tab-accent:var(--tg-section-roster-accent);--tg-tab-accent-soft:var(--tg-section-roster-soft)}
/* MAÇLAR = PASTEL YEŞİL (UXA-193): mavi kimlik superseded. Başlık
   yüzeyi "success-soft"tan gelir (pastel), başlık/aksan metni sakin
   koyu yeşildir — parlak durum rozetiyle aynı ağırlıkta değildir. */
.team-panel[data-team-panel="matches"],
.team-tab[data-team-tab="matches"]{--tg-team-section:var(--tg-section-match-accent);--tg-team-section-soft:var(--tg-section-match-soft);--tg-tab-accent:var(--tg-section-match-accent);--tg-tab-accent-soft:var(--tg-section-match-soft)}
.team-panel[data-team-panel="discipline"],
.team-tab[data-team-tab="discipline"]{--tg-team-section:var(--tg-section-discipline-accent);--tg-team-section-soft:var(--tg-section-discipline-soft);--tg-tab-accent:var(--tg-section-discipline-accent);--tg-tab-accent-soft:var(--tg-section-discipline-soft)}
.team-panel[data-team-panel="statistics"],
.team-tab[data-team-tab="statistics"]{--tg-team-section:var(--tg-section-statistics-accent);--tg-team-section-soft:var(--tg-section-statistics-soft);--tg-tab-accent:var(--tg-section-statistics-accent);--tg-tab-accent-soft:var(--tg-section-statistics-soft)}

/* ── SEKMELER (PD-59) ──────────────────────────────────────────────
   Sekme çubuğu artık panelin üst kenarına yapışık "klasör" değil,
   canonical `.tg-tabbar`'dır; panelle arası çubuğun kendi 16px alt
   boşluğudur (satır boşluğu sıfır kalır, kolon boşluğu korunur). */
.team-detail-layout{row-gap:0}
.team-tab .team-pending-badge{margin-left:7px}

/* ── BÖLÜM BAŞLIĞI ────────────────────────────────────────────────
   Sağ paneller: hafif tonlu bant + renkli başlık + renkli alt kenar.
   İçerik yüzeyi beyaz kalır (DS-003) — veri yoğun alan bastırılmaz. */
.tg-team-page .tg-section-panel{position:relative;overflow:hidden}
.tg-team-page .tg-section-panel>.tg-panel-toolbar,
.player-mobile-page .player-tab-content>.tg-panel-toolbar{
  padding:13px var(--tg-space-4);
  background:linear-gradient(180deg,color-mix(in srgb,var(--tg-team-section-soft,var(--tg-action-primary-soft)) 78%,var(--tg-surface)),var(--tg-surface));
  border-bottom:1px solid color-mix(in srgb,var(--tg-team-section,var(--tg-action-primary)) 22%,var(--tg-border));
}
.tg-team-page .tg-section-panel>.tg-panel-toolbar>div>strong,
.tg-team-page .tg-section-panel>.tg-panel-toolbar>strong,
.tg-team-page .tg-section-panel>.tg-panel-toolbar .team-panel-title,
.player-mobile-page .player-tab-content>.tg-panel-toolbar>div>strong,
.player-mobile-page .player-tab-content>.tg-panel-toolbar .team-panel-title{margin:0;color:var(--tg-team-section,var(--tg-text));font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black);line-height:1.2}
.tg-team-page .tg-section-panel>.tg-panel-toolbar small{color:var(--tg-text-muted)}
/* Bölüm etiketi (eyebrow) — Genel Bakış'ın `overview-section-kicker` dili. */
.team-section-eyebrow{display:block;margin:0;color:color-mix(in srgb,var(--tg-team-section,var(--tg-text-muted)) 74%,var(--tg-text-muted));font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);letter-spacing:.055em;text-transform:uppercase}
/* TEK BÖLÜM BAŞLIĞI (UXA-195): sağ panellerde eyebrow panelin gerçek <h2>
   başlığıdır; ikinci büyük başlık yoktur. Araç çubuğu tek satıra iner. */
.tg-team-page .tg-section-panel>.tg-panel-toolbar>div>h2.team-section-eyebrow{font-size:var(--tg-font-sm);letter-spacing:.06em;line-height:1.3}
.tg-team-page .tg-section-panel>.tg-panel-toolbar>div>h2.team-section-eyebrow:only-child{align-self:center}
.team-section-count{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:var(--tg-radius-pill);background:var(--tg-surface);border:1px solid color-mix(in srgb,var(--tg-team-section,var(--tg-action-primary)) 34%,var(--tg-border));color:var(--tg-team-section,var(--tg-text));font-size:var(--tg-font-xs);letter-spacing:0;vertical-align:middle}

/* ── KADRO: DOLU MAVİ BAŞLIK ──────────────────────────────────────
   Sol kolon kalıcı olarak görünür; bölüm kimliğini en güçlü taşıyan
   yüzey budur (referans görselde de dolu mavi bant). */
.tg-team-page .team-squad-panel>.tg-panel-toolbar{
  background:linear-gradient(100deg,var(--tg-section-roster-accent),color-mix(in srgb,var(--tg-section-roster-accent) 74%,var(--tg-brand-primary)));
  border-bottom:0;
}
.tg-team-page .team-squad-panel>.tg-panel-toolbar>div>strong,
.tg-team-page .team-squad-panel>.tg-panel-toolbar .team-panel-title,
.tg-team-page .team-squad-panel>.tg-panel-toolbar>strong{color:var(--tg-brand-primary-text);font-size:var(--tg-font-xl)}
.tg-team-page .team-squad-panel>.tg-panel-toolbar .team-section-eyebrow{color:color-mix(in srgb,var(--tg-brand-primary-text) 80%,transparent)}
/* Dolu bantta CTA: beyaz-şeffaf hap, zeminde okunur kalır. */
.tg-team-page .team-squad-panel>.tg-panel-toolbar .tg-btn{background:color-mix(in srgb,var(--tg-brand-primary-text) 20%,transparent);border:1px solid color-mix(in srgb,var(--tg-brand-primary-text) 42%,transparent);color:var(--tg-brand-primary-text);box-shadow:none}
.tg-team-page .team-squad-panel>.tg-panel-toolbar .tg-btn:hover{background:color-mix(in srgb,var(--tg-brand-primary-text) 30%,transparent)}
.tg-team-page .team-squad-panel .tg-esame-guest-hint{margin:var(--tg-space-3) var(--tg-space-4) 0;font-size:var(--tg-font-sm)}

/* ── SADE SATIRLAR: tablolar ağır admin ızgarası gibi durmaz ───────
   Dış çerçeve/zebra yok; yalnız ince ayırıcı ve tonlu sütun başlığı. */
.tg-team-page .tg-section-panel table{border-collapse:collapse}
.tg-team-page .tg-section-panel thead th{
  padding:9px 8px;border-bottom:1px solid var(--tg-border);
  background:var(--tg-surface-soft);color:var(--tg-text-muted);
  font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);
  letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
}
.tg-team-page .tg-section-panel tbody td{padding:11px 8px;border-bottom:1px solid var(--tg-border);vertical-align:middle}
.tg-team-page .tg-section-panel tbody tr:last-child td{border-bottom:0}
.tg-team-page .tg-section-panel tbody tr:hover td{background:var(--tg-surface-soft)}
/* Oyuncu adı ve skor en güçlü alanlardır. */
.tg-team-page .tg-player-table .tg-mobile-primary strong{color:var(--tg-text);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.tg-team-page .tg-match-score strong{color:var(--tg-text);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);font-variant-numeric:tabular-nums;white-space:nowrap}
.tg-team-page .tg-match-date{color:var(--tg-text-muted);font-size:var(--tg-font-xs);white-space:nowrap}
.tg-team-page .tg-match-status{color:var(--tg-text-muted);font-size:var(--tg-font-xs)}

/* ── İSTATİSTİKLER: mor metrik ızgarası (Turnuva Özeti dili) ───────
   Kutular kendi tonunu taşır; ağır kart yerine hafif zeminli metrik. */
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid>div{
  border-color:color-mix(in srgb,var(--tg-section-statistics-accent) 26%,var(--tg-border));
  background:color-mix(in srgb,var(--tg-section-statistics-soft) 55%,var(--tg-surface));
  border-radius:var(--tg-radius-md);
}
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid strong{color:var(--tg-section-statistics-accent)}
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid span{color:color-mix(in srgb,var(--tg-section-statistics-accent) 62%,var(--tg-text-muted))}

/* ── KARTLAR VE CEZALAR: turuncu operasyon yüzeyi ──────────────────
   Genel Bakış'taki "Dikkat Gerektirenler" satır dilinin takım
   versiyonu: sol şiddet şeridi + açık zemin, ağır kart değil. */
/* Aktif ceza satırı: sol şerit BÖLÜM kimliğidir (discipline rolü, DS-088);
   cezanın severity'si sağdaki kalan-maç hapında (danger) kalır. */
.tg-team-page .team-panel[data-team-panel="discipline"] .tg-penalty-list>div{
  border-color:color-mix(in srgb,var(--tg-section-discipline-accent) 26%,var(--tg-border));
  border-left:4px solid var(--tg-section-discipline-accent);
  background:color-mix(in srgb,var(--tg-section-discipline-soft) 45%,var(--tg-surface));
}
.tg-team-page .team-case-list>a{
  border-color:color-mix(in srgb,var(--tg-section-discipline-accent) 26%,var(--tg-border));
  border-left:4px solid var(--tg-section-discipline-accent);
  background:color-mix(in srgb,var(--tg-section-discipline-soft) 45%,var(--tg-surface));
}

/* ── MASAÜSTÜ ─────────────────────────────────────────────────────
   NOT: bu blok BİLEREK dosyanın sonundadır. Yukarıdaki İLK
   `@media (min-width:901px)` bloğu V2 ızgara sözleşmesini taşır ve
   TeamDetailLayoutHttpFeatureTest onu adıyla okur — o blok bölünmez. */
@media (min-width:901px){
  /* Kadro sol kolonda tek başına durur: dört köşesi de yuvarlaktır. */
  .tg-team-page .team-squad-panel{border-radius:var(--tg-radius-lg)}
  .tg-team-page .tg-section-panel>.tg-panel-toolbar{padding:15px var(--tg-space-4)}
}

/* ── MOBİL ────────────────────────────────────────────────────────
   Renk kimliği korunur, başlık bandı alçalır; sekme çubuğu yatay
   kayar ve satırlar okunur kalır. */
@media (max-width:760px){
  .tg-team-page .tg-section-panel>.tg-panel-toolbar{padding:11px var(--tg-space-3)}
  .tg-team-page .tg-section-panel>.tg-panel-toolbar>div>strong,
  .tg-team-page .tg-section-panel>.tg-panel-toolbar .team-panel-title,
  .tg-team-page .tg-section-panel>.tg-panel-toolbar>strong{font-size:var(--tg-font-md)}
  .tg-team-page .team-squad-panel>.tg-panel-toolbar>div>strong,
  .tg-team-page .team-squad-panel>.tg-panel-toolbar .team-panel-title,
  .tg-team-page .team-squad-panel>.tg-panel-toolbar>strong{font-size:var(--tg-font-lg)}
  .team-section-eyebrow{font-size:11px}
  .tg-team-page .tg-section-panel thead th{padding:8px 6px}
  .tg-team-page .tg-section-panel tbody td{padding:9px 6px}
}

/* Metrik kutuları KOMPAKT: ondan fazla kutu yarım kolonda beş satıra
   yayılıyordu. Kutu sayısı canonical veriden gelir (fake-zero kuralı),
   bu yüzden azaltılmaz — yalnız yoğunluk düşürülür. */
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid{gap:9px}
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid>div{padding:11px 12px;gap:3px}
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid strong{font-size:var(--tg-font-xl);line-height:1.15}
.tg-team-page .team-panel[data-team-panel="statistics"] .tg-summary-grid span{font-size:var(--tg-font-xs)}

/* Dar masaüstü bandı (yarım kolon ~360px): maç tablosu beş sütunla
   477px istiyordu ve kart içinde YATAY KAYDIRMA gerektiriyordu. Sütun
   GİZLENMEZ (veri kaybı yok) — tarih ve takım adları sarar, yoğunluk
   düşer ve tablo kaba admin ızgarası gibi durmaz. */
@media (min-width:901px) and (max-width:1199px){
  .tg-team-page .team-panel[data-team-panel="matches"] th,
  .tg-team-page .team-panel[data-team-panel="matches"] td{padding-left:4px;padding-right:4px;font-size:var(--tg-font-xs)}
  .tg-team-page .team-panel[data-team-panel="matches"] .tg-match-date{white-space:normal}
  .tg-team-page .team-panel[data-team-panel="matches"] .tg-match-home,
  .tg-team-page .team-panel[data-team-panel="matches"] .tg-match-away{overflow-wrap:anywhere}
  .tg-team-page .team-panel[data-team-panel="matches"] .tg-match-score strong{font-size:var(--tg-font-sm);white-space:normal}
}

/* Mobilde satırlar AYRI KART DEĞİL, sade liste satırıdır (DS-006).
   mobile-teams.css her satıra kenarlık + radius + gölge veriyordu:
   renkli bölüm başlığının altında kart-içinde-kart zinciri doğuyordu.
   Kural YALNIZ bu sayfa için düzleştirilir; diğer ekranlar etkilenmez
   ve yeni bir !important yığını üretilmez. */
@media (max-width:760px){
  .tg-team-page .tg-mobile-table tbody{gap:0;padding:0}
  .tg-team-page .tg-mobile-table tr{border:0;border-bottom:1px solid var(--tg-border);border-radius:0;background:transparent;box-shadow:none}
  .tg-team-page .tg-mobile-table tbody tr:last-child{border-bottom:0}
  .tg-team-page .tg-mobile-table td{padding-left:var(--tg-space-3);padding-right:var(--tg-space-3)}
}

/* ── FİKSTÜR SATIRLARI (UXA-192) ───────────────────────────────────
   Genel Bakış'ın "Program" satır dili: açık yüzey, orta radius, ince
   kenarlık, minimum gölge. Köşeli tablo satırı YOK. */
.team-fixture-list{list-style:none;display:grid;gap:8px;margin:0;padding:var(--tg-space-3) var(--tg-space-4) var(--tg-space-4)}
.team-fixture-row{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;padding:11px 13px;border:1px solid color-mix(in srgb,var(--tg-section-match-accent) 16%,var(--tg-border));border-left:4px solid color-mix(in srgb,var(--tg-section-match-accent) 62%,var(--tg-surface));border-radius:var(--tg-radius-md);background:color-mix(in srgb,var(--tg-section-match-soft) 42%,var(--tg-surface))}
.team-fixture-row.tone-success{border-left-color:var(--tg-status-success)}
.team-fixture-row.tone-warning{border-left-color:var(--tg-status-warning)}
.team-fixture-row.tone-danger{border-left-color:var(--tg-status-danger)}
.team-fixture-row.tone-neutral{border-left-color:var(--tg-border-strong)}
.team-fixture-meta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-bold)}
.team-fixture-meta .tg-status{padding:2px 9px;font-size:var(--tg-font-xs)}
.team-fixture-meta em{font-style:normal;padding:2px 8px;border-radius:var(--tg-radius-pill);background:var(--tg-surface);border:1px solid var(--tg-border)}
/* Takımlar karşılıklı, skor merkezde — Genel Bakış maç satırıyla aynı. */
.team-fixture-teams{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px}
.team-fixture-side{min-width:0;color:var(--tg-text);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);overflow-wrap:anywhere}
.team-fixture-side:last-child{text-align:right}
.team-fixture-side a{color:inherit;text-decoration:none}
.team-fixture-side a:hover{text-decoration:underline}
/* Bu takım kalın: kullanıcının baktığı takım satırda kaybolmaz. */
.team-fixture-side.is-self{color:var(--tg-text);font-weight:var(--tg-font-weight-black)}
.team-fixture-score{display:inline-grid;place-items:center;min-width:62px;padding:4px 10px;border-radius:var(--tg-radius-md);background:var(--tg-surface);border:1px solid var(--tg-border-strong);color:var(--tg-text);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);font-variant-numeric:tabular-nums;white-space:nowrap}

/* ── BÖLÜM AKSİYONU: başlıktan daha az dikkat çeker ────────────────
   Eski `.tg-outline-button` bölüm başlığıyla yarışıyordu. Bu hap
   kompakt, yuvarlatılmış ve bölüm rengini taşır. */
.team-section-cta{display:inline-flex;align-items:center;gap:5px;min-height:34px;padding:6px 13px;border-radius:var(--tg-radius-pill);background:var(--tg-surface);border:1px solid color-mix(in srgb,var(--tg-team-section,var(--tg-action-primary)) 34%,var(--tg-border));color:var(--tg-team-section,var(--tg-action-primary));font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);text-decoration:none;white-space:nowrap}
.team-section-cta::after{content:"›";font-size:var(--tg-font-md);line-height:1}
.team-section-cta:hover{background:color-mix(in srgb,var(--tg-team-section,var(--tg-action-primary)) 10%,var(--tg-surface))}

/* ── DİSİPLİN: süre/durum bilgisi KOMPAKT PILL ─────────────────────
   "1 maç kaldı" satırın ana başlığı gibi duruyordu; artık sağda küçük
   bir rozet. Oyuncu adı satırın en güçlü alanı olarak kalır. */
.tg-team-page .tg-penalty-list>div,
.player-mobile-page .player-penalty-card{align-items:flex-start;border-radius:var(--tg-radius-md)}
.tg-team-page .tg-penalty-list>div>span>strong{font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.tg-team-page .tg-penalty-list>div>b{flex:0 0 auto;padding:3px 10px;border-radius:var(--tg-radius-pill);background:var(--tg-status-danger-soft);border:1px solid color-mix(in srgb,var(--tg-status-danger) 30%,var(--tg-border));color:var(--tg-status-danger);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black)}
.tg-team-page .team-case-list>a{border-radius:var(--tg-radius-md)}
.tg-team-page .team-case-list>a>span>strong{font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.tg-team-page .team-case-list .module-summary-badge{flex:0 0 auto;padding:3px 10px;border-radius:var(--tg-radius-pill);background:var(--tg-status-warning-soft);border:1px solid color-mix(in srgb,var(--tg-status-warning) 30%,var(--tg-border));color:var(--tg-status-warning);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black)}
.tg-team-page .team-discipline-empty{padding:var(--tg-space-4);border:1px dashed var(--tg-border-strong);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft);text-align:center}
.tg-team-page .team-discipline-empty strong{color:var(--tg-text-muted);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}

/* ── İSTATİSTİK HİYERARŞİSİ ────────────────────────────────────────
   Ana satır (O·G·B·M·P) güçlü, ikincil grup sakin. */
.tg-team-page .team-stats-primary{grid-template-columns:repeat(5,minmax(0,1fr));padding-bottom:0}
.tg-team-page .team-stats-primary>div{padding:14px 12px;border-width:1.5px;border-color:color-mix(in srgb,var(--tg-section-statistics-accent) 34%,var(--tg-border));background:color-mix(in srgb,var(--tg-section-statistics-soft) 70%,var(--tg-surface))}
.tg-team-page .team-stats-primary strong{font-size:var(--tg-font-2xl);line-height:1.05}
/* Puan ana satırın da en güçlü kutusudur. */
.tg-team-page .team-stats-primary>div.is-headline{background:color-mix(in srgb,var(--tg-section-statistics-accent) 12%,var(--tg-surface));border-color:color-mix(in srgb,var(--tg-section-statistics-accent) 55%,var(--tg-border))}
.tg-team-page .team-stats-secondary-heading{margin:var(--tg-space-4) var(--tg-space-4) var(--tg-space-2);color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);letter-spacing:.05em;text-transform:uppercase}
.tg-team-page .team-stats-secondary>div{padding:9px 11px;background:var(--tg-surface-soft);border-color:var(--tg-border)}
.tg-team-page .team-stats-secondary strong{font-size:var(--tg-font-lg)}
.tg-team-page .team-stats-secondary span{color:var(--tg-text-muted)}

/* ── MASAÜSTÜ YÜKSEKLİK DENGESİ ────────────────────────────────────
   Takımın TÜM fikstürü basıldığı için sağ panel Kadro kartını
   kontrolsüz geçebiliyordu. Panel gövdesi sınırlanır ve KENDİ İÇİNDE
   kayar; bölüm başlığı ve sekmeler her zaman görünür kalır.
   Mobilde bu sınır YOKTUR (iç içe scroll kurulmaz). */
@media (min-width:901px){
  /* SINIR YALNIZ MAÇLARDA (UXA-193): takımın tüm fikstürü basıldığı için
     bu liste Kadro'yu geçebiliyor. Disiplin ve İstatistikler panellerine
     yükseklik sınırı UYGULANMAZ — doğal akışta tamamen görünürler. */
  .tg-team-page .team-fixture-list{max-height:min(62vh,620px);overflow-y:auto;overscroll-behavior:contain}
  .tg-team-page .team-stats-primary{grid-template-columns:repeat(5,minmax(0,1fr))}
}

@media (max-width:760px){
  .team-fixture-list{gap:7px;padding:var(--tg-space-3) var(--tg-space-3) var(--tg-space-3)}
  .team-fixture-row{padding:10px 11px;gap:6px}
  .team-fixture-teams{gap:8px}
  .team-fixture-side{font-size:12.5px}
  .team-fixture-score{min-width:54px;padding:3px 8px;font-size:var(--tg-font-sm)}
  .team-section-cta{min-height:32px;padding:5px 11px}
  /* Ana metrikler 390px'te taşmaz: beş kutu üç + iki olarak sarar. */
  .tg-team-page .team-stats-primary{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .tg-team-page .team-stats-primary>div{padding:10px 8px}
  .tg-team-page .team-stats-primary strong{font-size:var(--tg-font-xl)}
  .tg-team-page .team-stats-secondary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tg-team-page .team-stats-secondary-heading{margin:var(--tg-space-3) var(--tg-space-3) 6px}
  /* Disiplin satırı dar ekranda sarar: pill taşmaz. */
  .tg-team-page .tg-penalty-list>div,
  .tg-team-page .team-case-list>a{flex-wrap:wrap}
  .tg-team-page .tg-penalty-list>div>b,
  .tg-team-page .team-case-list .module-summary-badge{order:-1;margin-left:auto}
}

/* ── KADRO SATIRI = TEK BAĞLANTI (UXA-195) ─────────────────────────
   Ok/chevron hücresi yok. Ad bağlantısı `::after` ile satırın tamamını
   kaplar (stretched-link): tek gerçek <a>, klavye odağı onda, iç içe
   ikinci link yok. Satır boşluğuna tıklamak da oyuncuya gider. */
.tg-team-page .team-squad-row{position:relative;cursor:pointer}
.tg-team-page .team-squad-row .tg-mobile-primary a{position:static;color:inherit;text-decoration:none}
.tg-team-page .team-squad-row .tg-mobile-primary a::after{content:"";position:absolute;inset:0;z-index:1}
.tg-team-page .team-squad-row:hover td{background:var(--tg-surface-soft)}
.tg-team-page .team-squad-row:hover .tg-mobile-primary strong{color:var(--tg-section-roster-accent)}
.tg-team-page .team-squad-row:has(a:focus-visible){outline:2px solid var(--tg-section-roster-accent);outline-offset:-2px;border-radius:var(--tg-radius-sm)}
.tg-team-page .team-squad-row .tg-mobile-primary a:focus{outline:none}
@media (max-width:760px){
  /* Ok sütunu kalktı: mobil ızgara iki kolona iner (ad · durum); satır
     46px dokunma yüksekliğini korur ve stretched-link tamamını kaplar. */
  .tg-team-page .tg-player-mobile-table .team-squad-row{grid-template-columns:minmax(0,1fr) auto!important}
  .tg-team-page .team-squad-row:hover td{background:transparent}
  /* UXA-195 sekme/panel dikişi PD-59 ile SUPERSEDED: sekme çubuğu artık
     ayrı `.tg-tabbar` yüzeyidir, kadro paneli kendi üst kenarını korur. */
}

/* ═══ OYUNCU DETAYI — TAKIM DETAYI GÖRSEL AİLESİNİ KULLANIR ═══════
   Üst KPI şeridi kaldırıldı (UXA-194); Genel Maçlar ve Disiplin,
   Takım Detayı V2'nin AYNI satır/başlık kurallarını tüketir. Ayrı bir
   oyuncu tasarım dili YAZILMADI; buradaki kurallar yalnız sekme
   panelinin kendi kabuğunu (full-bleed başlık, yarıçap) ayarlar. */
.player-mobile-page .player-tab-content[data-player-panel="matches"]{--tg-team-section:var(--tg-section-match-accent);--tg-team-section-soft:var(--tg-section-match-soft)}
.player-mobile-page .player-tab-content[data-player-panel="discipline"]{--tg-team-section:var(--tg-section-discipline-accent);--tg-team-section-soft:var(--tg-section-discipline-soft)}
/* Başlık bandı panelin TAM genişliğinde durur: kart-içinde-kart yok. */
.player-mobile-page .player-tab-content>.tg-panel-toolbar{margin:-20px -20px var(--tg-space-3);border-radius:0}
.player-mobile-page .player-tab-content>.tg-panel-toolbar+.tg-panel-toolbar{margin-top:var(--tg-space-4)}
.player-mobile-page .player-tabs-panel{border-radius:var(--tg-radius-lg)}
/* Maç satırı: Takım Detayı fikstür ailesinin kendisi (yeniden yazılmadı). */
.player-fixture-list{padding:0 0 var(--tg-space-2)}
.player-fixture-goals{font-style:normal;padding:2px 9px;border-radius:var(--tg-radius-pill);background:var(--tg-status-success-soft);border:1px solid color-mix(in srgb,var(--tg-status-success) 26%,var(--tg-border));color:var(--tg-status-success);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black)}
.player-mobile-page .player-match-card-icons{display:inline-flex;align-items:center;gap:3px}
/* Kart geçmişi: yuvarlatılmış disiplin satırları (köşeli tablo değil). */
.player-card-list{list-style:none;display:grid;gap:7px;margin:0 0 var(--tg-space-4);padding:0}
.player-card-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:11px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--tg-section-discipline-accent) 20%,var(--tg-border));border-left:4px solid color-mix(in srgb,var(--tg-section-discipline-accent) 62%,var(--tg-surface));border-radius:var(--tg-radius-md);background:color-mix(in srgb,var(--tg-section-discipline-soft) 40%,var(--tg-surface))}
.player-card-copy{display:grid;gap:2px;min-width:0}
.player-card-copy strong{font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);color:var(--tg-text);overflow-wrap:anywhere}
.player-card-copy strong a{color:inherit;text-decoration:none}
.player-card-copy strong a:hover{text-decoration:underline}
.player-card-copy small{color:var(--tg-text-muted);font-size:var(--tg-font-xs)}
.player-card-minute{flex:0 0 auto;padding:3px 10px;border-radius:var(--tg-radius-pill);background:var(--tg-surface);border:1px solid var(--tg-border-strong);color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black);font-variant-numeric:tabular-nums;white-space:nowrap}
/* Ceza kartı: durum ve sayaç KOMPAKT hap (Takım Detayı ile aynı dil). */
.player-mobile-page .penalty-status{padding:3px 10px;border-radius:var(--tg-radius-pill);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black)}
.player-mobile-page .player-penalty-count b{font-variant-numeric:tabular-nums}
.player-mobile-page .penalty-match-row{border-radius:var(--tg-radius-md)}
/* DİSİPLİN DOĞAL YÜKSEKLİKTE: iç kaydırma YOK (Takım Detayı kararı). */
@media (max-width:760px){
  .player-mobile-page .player-tab-content>.tg-panel-toolbar{margin:-8px -8px var(--tg-space-2)}
  .player-card-row{grid-template-columns:auto minmax(0,1fr);gap:9px;padding:9px 10px}
  .player-card-minute{grid-column:2;justify-self:start}
  .player-fixture-list{padding:0}
}

/* -- HEADER AKSİYON SLOTU: ⋯ sağ üstte, menü butonun altında ---------
   Header tek yatay kompozisyondur: sol kimlik bloğu, sağ yalnız ⋯.
   Aksiyon slotu üstten hizalanır (ortalanıp aşağı sarkmaz), menü slot
   wrapper'ına göre konumlanır: butonun hemen altı, sağa yaslı, içerik
   kadar geniş, viewport içinde. Yeni popover framework YOK. */
.player-mobile-page .player-profile-head{align-items:flex-start}
.player-mobile-page .player-head-actions{flex:0 0 auto;align-self:flex-start;margin-top:2px}
.player-mobile-page .player-more-button{width:var(--tg-touch-min);height:var(--tg-touch-min);border-radius:var(--tg-radius-md)}
.player-mobile-page .player-action-menu{top:calc(100% + 6px);right:0;min-width:0;width:max-content;max-width:min(280px,calc(100vw - 32px));padding:6px;border-color:var(--tg-border);background:var(--tg-surface);box-shadow:var(--tg-shadow-overlay);border-radius:var(--tg-radius-md)}
.player-mobile-page .player-action-menu button{white-space:nowrap;font-size:var(--tg-font-sm);color:var(--tg-text)}
.player-mobile-page .player-action-menu button.danger{color:var(--tg-status-danger)}
.player-mobile-page .player-action-menu button:hover{background:var(--tg-surface-soft)}
@media (max-width:760px){
  /* Mobilde de AYNI satır: kimlik sol, ⋯ sağ üst (ayrı aksiyon satırı yok). */
  .player-mobile-page .player-profile-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:var(--tg-space-2)}
  .player-mobile-page .player-identity{grid-column:1;grid-row:1}
  .player-mobile-page .player-head-actions{grid-column:2;grid-row:1;width:auto;margin-top:0}
  .player-mobile-page .player-action-menu button{font-size:var(--tg-font-sm);padding:9px 11px}
}

/* -- SECTION SEMANTIC ACCENT (DS-087): satır şeridi bölüm kimliğini taşır --
   Maç/fikstür yüzeyleri YEŞİL aile, disiplin/ceza yüzeyleri TURUNCU (warning)
   aile. Panel zaten `--tg-team-section(-soft)` tanımlıyor; satırlar onu
   tüketir. mobile-core'daki genel mavi rail (#2d7bd2/#2c7bd2) BU sayfada
   bölüm kimliğiyle ezilir. Severity/durum hapları (Kırmızı Kart, Savunma
   bekliyor, Uygulandı …) kendi semantic status rengini KORUR. Yeni hex yok. */
.player-mobile-page .player-fixture-list>.team-fixture-row{border-left-color:var(--tg-team-section,var(--tg-section-match-accent))}
.player-mobile-page .player-penalty-card{border-color:color-mix(in srgb,var(--tg-team-section,var(--tg-section-discipline-accent)) 22%,var(--tg-border));border-left:4px solid var(--tg-team-section,var(--tg-section-discipline-accent));background:color-mix(in srgb,var(--tg-team-section-soft,var(--tg-section-discipline-soft)) 40%,var(--tg-surface))}
.player-mobile-page .player-penalty-card.status-served,
.player-mobile-page .player-penalty-card.status-cancelled{border-left-color:color-mix(in srgb,var(--tg-team-section,var(--tg-section-discipline-accent)) 45%,var(--tg-surface));background:var(--tg-surface)}
.player-mobile-page .penalty-match-plan{border-color:color-mix(in srgb,var(--tg-team-section,var(--tg-section-discipline-accent)) 16%,var(--tg-border));background:var(--tg-surface-soft)}
.player-mobile-page .penalty-match-row{border-left:3px solid var(--tg-team-section,var(--tg-section-discipline-accent));background:var(--tg-surface)}
.player-mobile-page .penalty-match-row.state-served,
.player-mobile-page .penalty-match-row.state-deferred,
.player-mobile-page .penalty-match-row.state-cancelled{border-left-color:color-mix(in srgb,var(--tg-team-section,var(--tg-section-discipline-accent)) 40%,var(--tg-surface));background:var(--tg-surface-soft)}

/* -- CEZALAR (penalties.php) — DİSİPLİN BÖLÜM KİMLİĞİ (DS-087) -------
   Sayfa kapsamlı: kayıt/plan satırlarının şeridi bölüm kimliğini (turuncu
   warning ailesi) taşır; mobile-core/mobile-competition'daki genel mavi
   (#2c7bd2) ve durum-renkli (#e9ae1b/#22a463/#6869cf) rail'ler bu sayfada
   ezilir. Durum/severity hapları (.penalty-status, kart görseli, özet
   kutuları) KENDİ renklerini korur. Yeni hex yok. */
.penalties-mobile-page{--tg-team-section:var(--tg-section-discipline-accent);--tg-team-section-soft:var(--tg-section-discipline-soft)}
.penalties-mobile-page .penalty-record{border-color:color-mix(in srgb,var(--tg-team-section) 22%,var(--tg-border));border-left:4px solid var(--tg-team-section);background:color-mix(in srgb,var(--tg-team-section-soft) 40%,var(--tg-surface))}
.penalties-mobile-page .penalty-record.status-active,
.penalties-mobile-page .penalty-record.status-pending_approval{border-left-color:var(--tg-team-section)}
.penalties-mobile-page .penalty-record.status-served,
.penalties-mobile-page .penalty-record.status-cancelled{border-left-color:color-mix(in srgb,var(--tg-team-section) 45%,var(--tg-surface));background:var(--tg-surface)}
.penalties-mobile-page .penalty-match-plan{border-color:color-mix(in srgb,var(--tg-team-section) 16%,var(--tg-border));background:var(--tg-surface-soft)}
.penalties-mobile-page .penalty-match-row{border-left:3px solid var(--tg-team-section);background:var(--tg-surface)}
.penalties-mobile-page .penalty-match-row.state-served,
.penalties-mobile-page .penalty-match-row.state-deferred,
.penalties-mobile-page .penalty-match-row.state-cancelled{border-left-color:color-mix(in srgb,var(--tg-team-section) 40%,var(--tg-surface));background:var(--tg-surface-soft)}

/* -- OYUNCU EKLE KARTI (UXA-196): roster rolü, kapanabilir <details> -----
   Kapalıyken kompakt tek satır; açılınca form kartın içinde. Renk YALNIZ
   `--tg-section-roster-*` token'larından (Kadro/Takım rolü değişince kart da
   değişir). Hex yok. */
.tg-team-page .team-add-player-card{margin:var(--tg-space-3) var(--tg-space-4) var(--tg-space-4);padding:0;border:1px solid color-mix(in srgb,var(--tg-section-roster-accent) 28%,var(--tg-border));border-radius:var(--tg-radius-md);background:color-mix(in srgb,var(--tg-section-roster-soft) 70%,var(--tg-surface));overflow:hidden}
.team-add-player-toggle{display:flex;align-items:center;gap:var(--tg-space-3);width:100%;min-height:var(--tg-touch-min);padding:var(--tg-space-3) var(--tg-space-4);border:0;background:transparent;color:var(--tg-section-roster-accent);text-align:left;cursor:pointer;list-style:none}
.team-add-player-toggle::-webkit-details-marker{display:none}
.team-add-player-toggle:focus-visible{outline:2px solid var(--tg-section-roster-accent);outline-offset:-3px}
.team-add-player-icon{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px;border-radius:var(--tg-radius-pill);background:var(--tg-section-roster-accent);color:var(--tg-section-roster-text);font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black);line-height:1}
.team-add-player-copy{display:grid;gap:2px;min-width:0;flex:1 1 auto}
.team-add-player-copy strong{color:var(--tg-section-roster-accent);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.team-add-player-copy small{color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
.team-add-player-caret{flex:0 0 auto;color:var(--tg-section-roster-accent);font-size:var(--tg-font-lg);line-height:1;transition:transform .15s ease}
.team-add-player-card[open] .team-add-player-caret{transform:rotate(90deg)}
.team-add-player-body{padding:0 var(--tg-space-4) var(--tg-space-4);border-top:1px solid color-mix(in srgb,var(--tg-section-roster-accent) 20%,var(--tg-border));background:var(--tg-surface)}
.team-add-player-body form{margin-top:var(--tg-space-3)}
@media (max-width:760px){
  .tg-team-page .team-add-player-card{margin:var(--tg-space-3)}
  .team-add-player-toggle{padding:var(--tg-space-3)}
  .team-add-player-body{padding:0 var(--tg-space-3) var(--tg-space-3)}
}

/* -- OYUNCU SEKME ÇUBUĞU ------------------------------------------
   Takım Detayı çubuğu panelin ÜSTÜNDE ayrı bir yüzeydir (kendi
   kenarlığı vardır); oyuncuda çubuk panelin İÇİNDEDİR, kenarlığı
   panel verir. Yapısal karşılığı: dış kenarlık yok, içeriği ayıran
   alt saç teli var. Diğer her şey (yarıçap, boşluk, düğme metrikleri,
   aktif davranış) ortak kurallardan gelir. */
/* PD-59: oyuncu sekme çubuğu canonical `.tg-tabbar` (foundation.css). */

/* -- GENEL: HİZALI BİLGİ IZGARASI ---------------------------------
   space-between değeri her satırda sütunun sağ kenarına itiyordu:
   etiket uzunluğuna göre değer başlangıçları kayıyor, iki kolonlu
   masaüstünde bir etiket komşu değere yapışmış görünüyordu. Her çift
   artık SABİT etiket sütunu + esnek değer sütunu olan kendi
   ızgarasıdır; kolonlar arasına gerçek bir boşluk girer. */
.player-mobile-page .player-info-list{gap:0 var(--tg-space-6)}
.player-mobile-page .player-info-list>div{display:grid;grid-template-columns:minmax(92px,34%) minmax(0,1fr);align-items:baseline;gap:var(--tg-space-3);min-height:46px;padding:12px 2px;border-bottom:1px solid var(--tg-border)}
.player-mobile-page .player-info-list dt{color:var(--tg-text-muted);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold)}
.player-mobile-page .player-info-list dd{max-width:none;margin:0;color:var(--tg-text);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);text-align:left;overflow-wrap:anywhere}
.player-mobile-page .player-info-list dd a{color:var(--tg-action-primary);text-decoration:none}
.player-mobile-page .player-info-list dd a:hover{text-decoration:underline}
/* Durum rozeti satır yüksekliğini şişirmesin: bilgi ızgarasında kompakt hap. */
.player-mobile-page .player-info-list dd .player-status{margin-left:0;padding:3px 9px;font-size:var(--tg-font-xs);line-height:1.25}

@media (max-width:760px){
  /* Tek kolon: dar ekranda etiket sütunu daralır, satır sıkışır. */
  .player-mobile-page .player-info-list>div{grid-template-columns:minmax(84px,38%) minmax(0,1fr);min-height:42px;padding:10px 2px}
}

/* TurnuvaGo canonical tabs (`.tg-canonical-tab`, DS-085) artık assets/css/foundation.css'te:
   Platform Yönetimi de tüketiyor (DS-089), ortak temel dosyada tek tanım. */

/* v6.216.0 — PL-A5: Üye No davet kartı (Oyuncu Ekle kartıyla aynı roster dili) + bekleyen davet listesi; mod değişikliği modalı player-modal kabuğunu yeniden kullanır. */
.tg-team-page .team-pending-invitations{margin-top:14px;display:grid;gap:8px}.tg-team-page .team-pending-invitations h3{font-size:var(--tg-font-sm);font-weight:700;margin:0}.tg-team-page .team-pending-invitations .v3-list-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface)}.tg-team-page .team-pending-invitations small{display:block;font-variant-numeric:tabular-nums}
.player-source-options{display:grid;gap:8px;margin:10px 0 14px}.player-source-options label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:start;justify-items:start;text-align:left;padding:10px 12px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface);cursor:pointer;margin:0}.player-source-options label>input{margin:4px 0 0;width:auto;justify-self:start}.player-source-options label>span{text-align:left;font-weight:400}.player-source-options label.is-current{border-color:var(--tg-action-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--tg-action-primary) 18%,transparent)}.player-source-options label small{display:block;color:var(--tg-text-muted)}.player-source-options input:disabled+span{opacity:.6}.player-source-lock{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border-radius:var(--tg-radius-md);background:var(--tg-status-warning-soft);color:var(--tg-text);margin-bottom:12px}
.mode-change-counts{list-style:none;margin:12px 0;padding:0;display:grid;gap:6px}.mode-change-counts li{display:flex;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);font-size:var(--tg-font-sm)}.mode-change-counts b{font-variant-numeric:tabular-nums}.mode-change-transition{font-weight:700;margin:6px 0 10px}.mode-change-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:14px}.player-modal[hidden]{display:none}.mode-change-step[hidden]{display:none}

/* ═══ v6.363.0 — TEK SEVİYELİ SAHA KARTI ═══════════════════════════════
   Liste artık tesis değil SAHA merkezlidir: her kart tek bir fiziksel
   hedefi anlatır (ad · adres · açıklama · kullanım · durum · aksiyonlar).
   Çok sahalı ESKİ tesis kayıtlarında tesis adı kartın bağlam satırında
   durur; başlıkta tekrar edilmez. Yeni token ailesi açılmadı. */
.venue-create-block{margin-bottom:var(--tg-space-3)}
.venue-create-block>summary{display:flex;align-items:center;gap:var(--tg-space-2);min-height:var(--tg-touch-min);cursor:pointer;list-style:none}
.venue-create-block>summary::-webkit-details-marker{display:none}
.venue-create-block>summary h2{margin:0;font-size:var(--tg-font-md)}
.venue-create-block>summary>b{margin-left:auto}
.tg-card.venue-field{display:grid;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)}
.tg-card.venue-field.is-passive{background:var(--tg-surface-soft)}
.tg-card.venue-field.is-orphan{border-style:dashed}
.tg-card.venue-field>header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--tg-space-2)}
.tg-card.venue-field>header strong{display:block;font-size:var(--tg-font-md)}
.venue-field-context{display:block;margin-top:2px;color:var(--tg-color-muted);font-size:var(--tg-font-xs)}
.tg-card.venue-field>header>b{flex:0 0 auto;padding:3px 8px;border-radius:var(--tg-radius-pill);font-size:var(--tg-font-xs);font-weight:800}
.tg-card.venue-field>header>b.status-active{background:var(--tg-status-success-soft);color:var(--tg-status-success)}
.tg-card.venue-field>header>b.status-inactive{background:var(--tg-surface-soft);color:var(--tg-color-muted)}
.venue-field-meta{display:grid;gap:var(--tg-space-1);margin:0}
.venue-field-meta>div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--tg-space-2)}
.venue-field-meta dt{color:var(--tg-color-muted);font-size:var(--tg-font-xs)}
.venue-field-meta dd{margin:0;min-width:0;overflow-wrap:anywhere;font-size:var(--tg-font-sm)}
.venue-field-actions{display:flex;flex-wrap:wrap;gap:var(--tg-space-2)}
.venue-field-actions form{margin:0}
.venue-field-edit>summary{min-height:var(--tg-touch-min);display:flex;align-items:center;color:var(--tg-action-primary);font-size:var(--tg-font-sm);font-weight:700;cursor:pointer}
.venue-field-edit .venue-area-add{margin-top:var(--tg-space-3);padding-top:var(--tg-space-3);border-top:1px dashed var(--tg-color-border)}

/* ═══ v6.363.0 — AYARLARDA KOŞULLU / İLERLEMELİ GÖSTERİM ═══════════════
   PASİF ÇOCUK GRUBU: ana anahtar kapalıyken alt ayarlar gizlenmez, düşük
   vurguyla gösterilir. Gerçek `disabled` KULLANILMAZ (alan POST'a girmez
   ve kullanıcı nedeni öğrenemez) — bu yüzden `pointer-events:none` de
   verilmez; kapı sunucudadır.
   BAĞLAMSAL BLOK: `hidden` özniteliği UA kuralını kaybetmesin diye açıkça
   `display:none` bırakılır (aksi hâlde `display:grid` onu yener). */
.settings-child-group{display:grid;gap:var(--tg-space-1)}
.settings-child-group.is-passive{opacity:.82}
.tg-note-child[hidden]{display:none}
.settings-contextual[hidden]{display:none}
.settings-advanced-block{margin:var(--tg-space-2) 0;border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);padding:var(--tg-space-2)}
.settings-advanced-block>summary{min-height:var(--tg-touch-min);display:flex;align-items:center;font-weight:700;cursor:pointer}
/* PD-65 — Turnuva Ayarları → Genel: form bölümü (Temel Bilgiler · Tarih ve Takvim ·
   Bölge ve Saat · Açıklama · Yönetmelik). Yalnız sunum; mevcut kenar/radius/yüzey
   token'ları, yeni renk yok. İçteki yardım/uyarı kutuları bölüme aittir. */
.settings-form-group{margin:0 0 var(--tg-space-4);padding:var(--tg-space-4);border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft);min-width:0}
.settings-form-group>:last-child{margin-bottom:0}
.v3-form-panel .settings-form-group-title,.settings-form-group-title{display:block;margin:0 0 var(--tg-space-3);padding-bottom:var(--tg-space-2);border-bottom:1px solid var(--tg-color-border);font-size:var(--tg-font-xl);font-weight:var(--tg-font-weight-black);color:var(--tg-text);line-height:1.3}
.settings-form-group .tournament-rules-heading{margin-top:0}
/* Bölüm içindeki iki alanlı ızgaralar (Sezon/Durum, Başlangıç/Bitiş) iki eşit sütun:
   taban .grid üç sütundur ve bölüm iç boşluğunda boş üçüncü sütun alanları daraltır. */
.settings-form-group .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
/* Yönetmelik ayrı formdur: üstündeki Kaydet satırından belirgin ayrılır. */
.settings-form-group.tournament-rules-group{margin-top:var(--tg-space-5)}
/* PD-65 son düzenleme — Tarih ve Takvim: iki tarih EŞİT genişlikte; etiket satır
   sayısı farklı olsa da input'lar aynı hizadan başlar (hücre esner, input alta oturur). */
.settings-form-group .settings-date-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.settings-date-grid>div{display:flex;flex-direction:column;min-width:0}
.settings-date-grid>div>input{width:100%;min-width:0;margin-top:auto}
/* Yönetmelik: ayrı ve önemli içerik yönetim alanı — marka tonu (uyarı/hata rengi DEĞİL),
   sol vurgu çizgisi, güçlü başlık; editör kartın içinde beyaz çalışma yüzeyi. */
.settings-form-group.tournament-rules-group{border-color:color-mix(in srgb,var(--tg-brand-primary) 28%,var(--tg-color-border));border-left:4px solid var(--tg-brand-primary);background:color-mix(in srgb,var(--tg-brand-primary) 4%,var(--tg-surface))}
.tournament-rules-group .settings-form-group-title{color:var(--tg-brand-primary);border-bottom-color:color-mix(in srgb,var(--tg-brand-primary) 22%,var(--tg-color-border))}
.tournament-rules-group .tournament-rules-surface{box-shadow:var(--tg-shadow-card)}
/* Ayarlar Özeti: hızlı kontrol için amber bilgi yüzeyi (semantic warning-soft; uyarı/hata anlamı yok,
   başlık nötr metin rengindedir). İçteki liste beyaz yüzeyde okunur. */
.settings-form-group.tournament-summary-group{border-color:color-mix(in srgb,var(--tg-status-warning) 32%,var(--tg-color-border));background:var(--tg-status-warning-soft)}
.tournament-summary-group .settings-form-group-title{border-bottom-color:color-mix(in srgb,var(--tg-status-warning) 28%,var(--tg-color-border))}
.tournament-summary-group .tournament-rules-summary{border-color:color-mix(in srgb,var(--tg-status-warning) 22%,var(--tg-color-border));background:var(--tg-surface)}
/* Değerler sayfanın 20px taban yazısını miras almasın: kompakt ve etiketle orantılı. */
.tournament-summary-group .tournament-rules-summary dd{font-size:var(--tg-font-md);line-height:1.4}
/* PD-66 — Turnuva Ayarları → Nasıl Oynanacak: Maç Süresi · Puanlama · Hükmen · İleri
   Sportif Kurallar ayrı .settings-form-group kartlarıdır. Yalnız sunum, yalnız token. */
.settings-form-group[data-settings-group="scoring"] .grid{grid-template-columns:repeat(3,minmax(0,1fr))}
/* Maç Süresi: "Toplam maç süresi (dk)" dar ekranda iki satıra sarsa da iki input aynı hizadan başlar. */
.settings-form-group[data-settings-group="match"] .grid>div{display:flex;flex-direction:column;min-width:0}
.settings-form-group[data-settings-group="match"] .grid>div>input{width:100%;min-width:0;margin-top:auto}
.settings-form-group[data-settings-group="match"] .v3-field-hint{display:block;margin-top:var(--tg-space-1);color:var(--tg-text-muted);font-size:var(--tg-font-sm);line-height:1.4;overflow-wrap:anywhere}
/* Hükmen yöntem kartları: seçili durum semantic aksiyon tokenıyla (yalnız bu bölümde). */
.settings-form-group[data-settings-group="forfeit"] .v3-choice-card{margin:0;background:var(--tg-surface)}
.settings-form-group[data-settings-group="forfeit"] .v3-choice-card:has(input:checked),.settings-form-group[data-settings-group="forfeit"] .v3-choice-card.selected{border-color:var(--tg-action-primary);background:color-mix(in srgb,var(--tg-action-primary) 8%,var(--tg-surface));box-shadow:0 0 0 1px var(--tg-action-primary)}
/* Skor sınırları: radio kartlarının devamı değil, kendi küçük alt grubu. İki skor alanı
   eşit sütunlarda; etiket satır sayısı farklı olsa da input'lar aynı hizada (subgrid). */
.settings-subgroup{margin:var(--tg-space-3) 0;padding:var(--tg-space-3);border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);background:var(--tg-surface)}
.settings-subgroup>h3{margin:0 0 var(--tg-space-2);font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
.settings-subgroup .grid{grid-template-rows:auto auto auto;row-gap:0}
.settings-subgroup .grid>div{display:grid;grid-row:span 3;grid-template-rows:subgrid;min-width:0}
.settings-subgroup .grid>div>label{align-self:end}
.settings-subgroup .grid>div>input{width:100%;min-width:0}
/* İleri Sportif Kurallar: details kartın kendisidir (çift çerçeve yok); içerik değişmedi —
   masaüstünde iç ızgaralar eski üç sütun düzenini korur. */
.settings-advanced-group>.settings-advanced-block{margin:0;padding:0;border:0}
@media (min-width:761px){.settings-form-group.settings-advanced-group .grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* PD-66 — ileri ayar açılır bölümleri: tüm satır tıklanır (≥44px), sağda canonical chevron
   (tg_icon chevron-down; Takımlar paneliyle aynı desen) açıkken 180° döner. Native
   details/summary: klavye (Enter/Space) ve odak tarayıcının; görünür odak halkası token. */
.settings-advanced-block>summary:has(.settings-advanced-caret){gap:var(--tg-space-2);list-style:none}
.settings-advanced-block>summary:has(.settings-advanced-caret)::-webkit-details-marker{display:none}
.settings-advanced-caret{flex:0 0 auto;margin-left:auto;color:var(--tg-text-muted);transition:transform .15s ease}
.settings-advanced-block[open]>summary .settings-advanced-caret{transform:rotate(180deg)}
.settings-advanced-block>summary:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px;border-radius:var(--tg-radius-md)}
@media (prefers-reduced-motion:reduce){.settings-advanced-caret{transition:none}}
/* PD-67 — Turnuva Ayarları → Kimler Var: Oyuncu Kullanımı · Takım ve Kadro Kuralları ·
   Esame Kullanımı · Hakem Ayarları ayrı kartlardır. Yalnız sunum, yalnız token. */
/* Oyuncu modu: seçili kart (henüz kaydedilmemiş seçim dahil) aksiyon tokenıyla belirgin. */
.settings-form-group[data-settings-group="player_source"] .player-source-options label:has(input:checked){border-color:var(--tg-action-primary);background:color-mix(in srgb,var(--tg-action-primary) 8%,var(--tg-surface));box-shadow:0 0 0 1px var(--tg-action-primary)}
/* Geri dönüşsüzlük uyarısı stilsizdi (gövde 20px'i miras alıyor, başlık ile metin bitişik
   akıyordu): kilit notuyla aynı uyarı-yumuşak kutu, kompakt metin. */
.player-source-irreversible{display:flex;gap:var(--tg-space-2);align-items:flex-start;margin:0 0 var(--tg-space-3);padding:var(--tg-space-2) var(--tg-space-3);border-radius:var(--tg-radius-md);background:var(--tg-status-warning-soft);color:var(--tg-text);font-size:var(--tg-font-sm);line-height:1.45}
.player-source-irreversible>span{flex:0 0 auto;color:var(--tg-status-warning)}
.player-source-irreversible>div{min-width:0;overflow-wrap:anywhere}
.player-source-irreversible strong{display:block;font-weight:var(--tg-font-weight-black)}
.player-source-irreversible small{display:block;color:var(--tg-text-muted);font-size:var(--tg-font-sm)}
/* Yönlendirme kartları (write surface DEĞİL): form/kontrol görünümü yok, iç kutu yok —
   düz açıklama + bağlantı. */
.settings-form-group.settings-link-group{background:var(--tg-surface)}
.settings-link-note{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-md);line-height:1.5;overflow-wrap:anywhere}
.settings-link-note a{display:inline-block;font-weight:var(--tg-font-weight-bold);color:var(--tg-action-primary)}
/* Esame: Oyuncu Kullanımı kartının içinde küçük alt bölüm (radio kartlarına gömülmez); tek
   global ayar. Detaylar yalnız anahtar açıkken; "Değiştir" yalnız seçim değişince —
   bileşen display kuralları (`.v3-form-actions{display:flex}`) `hidden`ı ezmesin. */
.settings-form-group[data-settings-group="player_source"] [hidden]{display:none!important}
.settings-esame-subsection{margin-top:var(--tg-space-4);padding-top:var(--tg-space-3);border-top:1px solid var(--tg-color-border)}
.settings-esame-subsection>.settings-esame-question{margin:0 0 var(--tg-space-2);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
.settings-esame-subsection>form>.check-line{margin-top:0}
.settings-esame-details{margin-top:var(--tg-space-3)}
.settings-esame-details>.settings-subgroup{margin-top:0}
.settings-esame-subsection .settings-subgroup small{display:block;margin-top:var(--tg-space-1);overflow-wrap:anywhere}
.settings-esame-deadline{display:flex;flex-direction:column;min-width:0}
.settings-esame-deadline>label{margin-top:0}
.settings-esame-deadline>input{width:100%;min-width:0}
.settings-esame-deadline>small{display:block;margin-top:var(--tg-space-1);overflow-wrap:anywhere}
@media (min-width:761px){.settings-esame-subsection .settings-subgroup .grid{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-esame-deadline{max-width:22rem}}

/* PD-70 — Turnuva Ayarları → Yayın ve Görünüm: Görünürlük · Turnuva Kimliği iki kart.
   Kimlik kartının alt grupları (Logo ve Marka Adı · Renkler · Uygulama Kimliği ·
   TurnuvaGo Markası) kart içinde İKİNCİ kutu değil, ayırıcı çizgiyle ayrılan düz
   bölümlerdir — büyük kart içinde kart yığını yok. Yalnız sunum, yalnız token. */
.settings-visibility-options{display:grid;gap:var(--tg-space-1)}
.settings-visibility-options .check-line{align-items:flex-start}
.settings-visibility-options .check-line input{flex:0 0 auto;margin-top:3px}
.settings-visibility-options .check-line>span{min-width:0;overflow-wrap:anywhere}
.settings-form-group[data-settings-group="identity"] .settings-identity-group{margin:0;padding:var(--tg-space-3) 0 0;border:0;border-top:1px solid var(--tg-color-border);border-radius:0;background:transparent}
.settings-form-group[data-settings-group="identity"] .settings-identity-group+.settings-identity-group{margin-top:var(--tg-space-3)}
.settings-form-group[data-settings-group="identity"] .settings-identity-group>.settings-link-note{margin:0 0 var(--tg-space-2);font-size:var(--tg-font-sm)}
.settings-form-group[data-settings-group="identity"] .settings-identity-group>small{display:block;margin-top:var(--tg-space-2);font-size:var(--tg-font-sm);line-height:1.45;color:var(--tg-text-muted);overflow-wrap:anywhere}
.settings-identity-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--tg-space-2)}
.settings-identity-field{display:flex;flex-direction:column;min-width:0}
.settings-identity-field>label{margin-top:0}
.settings-identity-field>input{width:100%;min-width:0}
/* Dosya seçicisi: gövde genişliğini aşmaz, uzun dosya adı taşmaz. */
.settings-identity-field>input[type="file"]{max-width:100%;padding:var(--tg-space-2);font-size:var(--tg-font-sm);overflow:hidden;text-overflow:ellipsis}
.settings-identity-field>.check-line{margin-top:var(--tg-space-1)}
/* Mevcut logo/ikon önizlemesi: sabit yükseklik, orantı korunur. */
.settings-identity-preview{display:block;max-width:100%;height:44px;width:auto;margin:0 0 var(--tg-space-2);object-fit:contain}
.settings-identity-preview.is-square{width:44px;border-radius:var(--tg-radius-md)}
/* Renk alanı: natif renk seçici (type=color, ad taşımaz) + hex alanı (POST'a giren tek
   alan) + "Varsayılana dön". Boş hex = platform rengi; seçici o durumda efektif tema
   rengini gösterir (veri). Yeni renk sistemi / sabit hex yok. */
.settings-color-field{display:flex;flex-wrap:wrap;align-items:center;gap:var(--tg-space-2);min-width:0}
.settings-color-field>input[data-color-hex]{flex:1 1 9ch;min-width:9ch;width:auto;font-family:var(--tg-font-mono,monospace)}
.settings-color-picker{flex:0 0 auto;width:var(--tg-touch-min);height:var(--tg-touch-min);margin:0;padding:0;border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md);background:var(--tg-surface);cursor:pointer}
.settings-color-picker::-webkit-color-swatch-wrapper{padding:3px}
.settings-color-picker::-webkit-color-swatch{border:0;border-radius:calc(var(--tg-radius-md) - 3px)}
.settings-color-picker::-moz-color-swatch{border:0;border-radius:calc(var(--tg-radius-md) - 3px)}
.settings-color-clear{flex:0 0 auto;min-height:var(--tg-touch-min);padding:0 var(--tg-space-3);font-size:var(--tg-font-sm)}
.settings-color-clear[hidden]{display:none!important}
@media (min-width:761px){.settings-identity-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tg-space-3)}}

/* ═══ PD-71 — TURNUVA AYARLARI MASAÜSTÜ TİPOGRAFİ LADDER'I (UX_ARCHITECTURE §15.24) ═══
   Altı kategori (Turnuva Bilgileri · Nasıl Oynanacak · Kimler Var · Program · Yayın ve
   Görünüm · Turnuva Modülleri) AYNI hiyerarşiyi kullanır; aynı kavram aynı ölçü/ağırlıkla
   çizilir, sayfaya özel override YAZILMAZ. Yalnız ≥761px: mobil ölçüler (mobile-core /
   mobile-management) DOKUNULMADAN kalır. Ölçüler token'dır, sabit px yok:
     kategori başlığı 2xl 24 · kart başlığı xl 20 · alt grup lg 16 · alan etiketi md 14/700
     · kontrol metni lg 16 · yardım/açıklama sm 13 · gövde paragrafı md 14 · buton tg-btn (md 14/800).
   Önceki durum: gövde 20px'i miras alan etiket 20/800, kontrol 20, kart içi h2 30/700,
   alt grup h3 13–16 karışık, radio açıklaması 16.7/800 — her şey "başlık" gibi görünüyordu. */
@media (min-width:761px){
  .v3-settings-layout .v3-form-panel{
    --settings-font-section:var(--tg-font-2xl);
    --settings-font-card:var(--tg-font-xl);
    --settings-font-subgroup:var(--tg-font-lg);
    --settings-font-label:var(--tg-font-md);
    --settings-font-control:var(--tg-font-lg);
    --settings-font-body:var(--tg-font-md);
    --settings-font-help:var(--tg-font-sm);
  }
  /* 1 — Kategori başlığı: panelin kendi .v3-panel-heading'i (kart dışı). */
  .v3-settings-layout .v3-form-panel .v3-panel-heading h2{font-size:var(--settings-font-section);font-weight:var(--tg-font-weight-black);line-height:1.2}
  .v3-settings-layout .v3-form-panel .v3-panel-heading p{font-size:var(--tg-font-lg);line-height:1.45}
  /* 2 — Kart başlığı: .settings-form-group-title ile kart İÇİNDEKİ panel başlığı aynı seviye. */
  .v3-settings-layout .v3-form-panel .settings-form-group-title,
  .v3-settings-layout .v3-form-panel .settings-form-group .v3-panel-heading h2{font-size:var(--settings-font-card);font-weight:var(--tg-font-weight-black);line-height:1.25}
  .v3-settings-layout .v3-form-panel .settings-form-group .v3-panel-heading p{font-size:var(--settings-font-body);line-height:1.45}
  /* 3 — Alt grup başlığı (kart içi h3, alt grup h3, esame sorusu, açılır bölüm özeti). */
  .v3-settings-layout .v3-form-panel .settings-form-group h3:not(.settings-form-group-title),
  .v3-settings-layout .v3-form-panel .settings-subgroup>h3,
  .v3-settings-layout .v3-form-panel .settings-esame-question,
  .v3-settings-layout .v3-form-panel details>summary{font-size:var(--settings-font-subgroup);font-weight:var(--tg-font-weight-black);line-height:1.3}
  /* 4 — Alan etiketi ve radio/checkbox ana etiketi aynı seviye; açıklaması yardım metni. */
  .v3-settings-layout .v3-form-panel label,
  .v3-settings-layout .v3-form-panel .check-line{font-size:var(--settings-font-label);font-weight:var(--tg-font-weight-bold);line-height:1.35}
  .v3-settings-layout .v3-form-panel .check-line strong,
  .v3-settings-layout .v3-form-panel .v3-choice-card strong,
  .v3-settings-layout .v3-form-panel .player-source-options label strong{font-size:var(--settings-font-label);font-weight:var(--tg-font-weight-black)}
  .v3-settings-layout .v3-form-panel .check-line small,
  .v3-settings-layout .v3-form-panel .v3-choice-card small,
  .v3-settings-layout .v3-form-panel .player-source-options label small{font-size:var(--settings-font-help);font-weight:400;line-height:1.4}
  /* 5 — Kontrol metni (input/select/textarea); onay kutusu, radio ve renk seçici hariç. */
  .v3-settings-layout .v3-form-panel input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),
  .v3-settings-layout .v3-form-panel select,
  .v3-settings-layout .v3-form-panel textarea{font-size:var(--settings-font-control)}
  /* 6 — Yardım / açıklama / gövde metni. Kutulu notlar (.tg-note) kendi ölçüsünde kalır. */
  .v3-settings-layout .v3-form-panel small,
  .v3-settings-layout .v3-form-panel .v3-field-hint,
  .v3-settings-layout .v3-form-panel .settings-link-note{font-size:var(--settings-font-help);line-height:1.45}
  .v3-settings-layout .v3-form-panel .settings-form-group p:not(.tg-note):not(.settings-link-note),
  .v3-settings-layout .v3-form-panel fieldset>p:not(.tg-note){font-size:var(--settings-font-body);line-height:1.5}
  /* 7 — Turnuva Modülleri kartları aynı ladder: modül adı alt grup, açıklama yardım, kapsam/rozet xs. */
  .v3-settings-layout .v3-form-panel .module-summary-card .tg-note-compact,
  .v3-settings-layout .v3-form-panel .module-summary-note small{font-size:var(--settings-font-help)}
  .v3-settings-layout .v3-form-panel .module-summary-card strong{font-size:var(--settings-font-subgroup)}
  .v3-settings-layout .v3-form-panel .module-summary-card p{font-size:var(--settings-font-help)}
  .v3-settings-layout .v3-form-panel .module-summary-card small,
  .v3-settings-layout .v3-form-panel .module-summary-badge{font-size:var(--tg-font-xs)}
}

/* ═══ v6.367.0 — TAMAMLANMIŞ / ÇÖPTEKİ TURNUVADA SALT-OKUNUR AYARLAR ═══
   Panel `<fieldset disabled>` içine alınır (natif devre dışı bırakma).
   Bu sayfada fieldset RESET'İ YOKTUR (o sıfırlama `.builder-*-form`
   altına kapsanmıştır) — tarayıcı varsayılan çerçeve/margin'i sayfanın
   geri kalanıyla çelişir, bu yüzden burada açıkça sıfırlanır.
   `min-width:0`: fieldset'in UA `min-content` davranışı ızgara/flex
   çocuklarında yatay taşma üretir (390px'te ölçülen klasik tuzak).
   Kaydet düğmeleri yalnız devre dışı DEĞİL, hiç GÖSTERİLMEZ: kilitliyken
   tıklanamayan bir düğme de bir yüzeydir ve kullanıcıya iş vaat eder. */
.settings-readonly-fieldset{min-width:0;margin:0;padding:0;border:0}
.settings-readonly-fieldset .v3-form-actions{display:none}
/* Salt-okunur notu canonical `.tg-note`dur; yerleşim için İKİNCİ bir
   bildirim SINIFI üretilmez (envanterde adsız bir "notice" sınıfı doğardı),
   elemanın kendi data niteliği kanca olarak kullanılır. */
[data-settings-readonly]{display:grid;gap:var(--tg-space-1)}
[data-settings-readonly] p{margin:0}

/* ═══ v6.364.0 — MANUEL YERLEŞİM / MANUEL MAÇ PANELLERİ ════════════════
   İkincil aksiyonlardır: varsayılan akış otomatiktir, bunlar kapalı
   `<details>` olarak durur. Yeni bileşen ailesi açılmadı — canonical
   `v3-panel` + `tg-btn` + `tg-note` kullanılır. */
.manual-placement-panel>summary,.manual-entry-panel>summary{display:flex;align-items:center;gap:var(--tg-space-2);min-height:var(--tg-touch-min);cursor:pointer;list-style:none}
.manual-placement-panel>summary::-webkit-details-marker,.manual-entry-panel>summary::-webkit-details-marker{display:none}
.manual-placement-panel>summary h2,.manual-entry-panel>summary h2{margin:0;font-size:var(--tg-font-md)}
.manual-placement-panel>summary>b,.manual-entry-panel>summary>b{margin-left:auto}
.manual-placement-group,.manual-entry-group{margin:var(--tg-space-2) 0;padding:var(--tg-space-2);border:1px solid var(--tg-color-border);border-radius:var(--tg-radius-md)}
.manual-placement-group legend,.manual-entry-group legend{padding:0 var(--tg-space-1);font-weight:700;font-size:var(--tg-font-sm)}
.manual-placement-group label,.manual-entry-create label{display:grid;gap:4px;margin:0 0 var(--tg-space-2)}
.manual-placement-group select,.manual-entry-create select,.manual-entry-create input{width:100%;min-height:var(--tg-touch-min)}
.manual-order-slot{font-size:var(--tg-font-xs);color:var(--tg-color-muted)}
.manual-entry-total{margin:var(--tg-space-2) 0}
/* Girilmiş eşleşmeler — yanlış yazılan bir maçın geri alma yüzeyi.
   Silme butonu YALNIZ başlamamış maçlarda basılır. */
.manual-entry-list{margin:var(--tg-space-2) 0 0;padding:0;list-style:none;display:grid;gap:4px}
.manual-entry-list li{display:flex;align-items:center;gap:var(--tg-space-2);min-height:var(--tg-touch-min);font-size:var(--tg-font-sm);border-top:1px solid var(--tg-color-border);padding-top:4px}
.manual-entry-list li>span{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.manual-entry-delete{margin:0}
@media (min-width:761px){
  .manual-placement-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--tg-space-2);align-items:end}
  .manual-placement-group legend{grid-column:1/-1}
  .manual-entry-create{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:var(--tg-space-2);align-items:end}
  .manual-entry-create .v3-form-actions{margin:0}
}

/*
 * ═══ v6.365.0 — TURNUVA YÖNETMELİĞİ EDİTÖRÜ + AYAR ÖZETİ ═════════════
 *
 * Yeni görsel dil ÜRETİLMEDİ: canonical tokenlar ve mevcut aileler
 * (`tg-btn`, `tg-note`, `v3-form-actions`) kullanılır. Editör yüzeyi
 * public `tg-rules-content` tipografisini PAYLAŞIR — yazarken görünen
 * şey, yayımlanınca görünen şeydir.
 */
.tournament-rules-heading{margin:var(--tg-space-5) 0 var(--tg-space-2);font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black);color:var(--tg-text)}
.tournament-rules-form{margin:0}
.tournament-rules-editor{display:flex;flex-direction:column;gap:var(--tg-space-2)}
.tournament-rules-toolbar{display:flex;flex-wrap:wrap;gap:var(--tg-space-1);padding:var(--tg-space-2);border:1px solid var(--tg-border);border-radius:var(--tg-radius-md) var(--tg-radius-md) 0 0;background:var(--tg-surface-soft);margin-bottom:calc(var(--tg-space-2) * -1)}
.tournament-rules-tool{min-width:var(--tg-touch-min);font-weight:var(--tg-font-weight-black)}
.tournament-rules-surface{min-height:320px;padding:var(--tg-space-3);border:1px solid var(--tg-border);border-radius:0 0 var(--tg-radius-md) var(--tg-radius-md);background:var(--tg-surface);overflow-wrap:anywhere}
.tournament-rules-surface:focus{outline:2px solid var(--tg-action-primary);outline-offset:-2px}
.tournament-rules-counter{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-xs);text-align:right}
.tournament-rules-counter.is-over{color:var(--tg-status-danger);font-weight:var(--tg-font-weight-black)}
/* JS yokken düz metin alanı GÖRÜNÜR kalır (veri kaybı yok); JS varken
   editör `.is-enhanced` ekler ve yedek gizlenir. */
.tournament-rules-editor .tournament-rules-surface{display:none}
.tournament-rules-editor.is-enhanced .tournament-rules-surface{display:block}
.tournament-rules-editor.is-enhanced .tournament-rules-toolbar{display:flex}
.tournament-rules-editor:not(.is-enhanced) .tournament-rules-toolbar,
.tournament-rules-editor:not(.is-enhanced) .tournament-rules-counter{display:none}
.tournament-rules-editor.is-enhanced .tournament-rules-fallback-label,
.tournament-rules-editor.is-enhanced .tournament-rules-fallback-help,
.tournament-rules-editor.is-enhanced [data-rules-fallback]{display:none}

/* Ayar özeti — etiket/değer satırları, salt okunur. */
.tournament-rules-summary{display:flex;flex-direction:column;gap:var(--tg-space-2);margin:var(--tg-space-2) 0 0;padding:var(--tg-space-3);border:1px solid var(--tg-border);border-radius:var(--tg-radius-md);background:var(--tg-surface-soft)}
.tournament-rules-summary-row{display:grid;grid-template-columns:minmax(0,1fr);gap:2px}
.tournament-rules-summary dt{margin:0;color:var(--tg-text-muted);font-size:var(--tg-font-xs);font-weight:var(--tg-font-weight-black)}
.tournament-rules-summary dd{margin:0;color:var(--tg-text);overflow-wrap:anywhere}
@media (min-width:640px){
  .tournament-rules-summary-row{grid-template-columns:minmax(0,200px) minmax(0,1fr);gap:var(--tg-space-3);align-items:baseline}
}

/*
 * YÖNETMELİK TİPOGRAFİSİ — yönetim ve public AYNI sınıfı kullanır.
 * Kullanıcı font/renk/hizalama veremez; görünümü tasarım sistemi verir.
 */
.tg-rules-content{color:var(--tg-text);line-height:1.65;overflow-wrap:anywhere}
.tg-rules-content>:first-child{margin-top:0}
.tg-rules-content>:last-child{margin-bottom:0}
.tg-rules-content h2{margin:var(--tg-space-4) 0 var(--tg-space-2);font-size:var(--tg-font-lg);font-weight:var(--tg-font-weight-black)}
.tg-rules-content h3{margin:var(--tg-space-3) 0 var(--tg-space-1);font-size:var(--tg-font-md);font-weight:var(--tg-font-weight-black)}
.tg-rules-content p{margin:0 0 var(--tg-space-2)}
.tg-rules-content ul,.tg-rules-content ol{margin:0 0 var(--tg-space-2);padding-inline-start:1.35em}
.tg-rules-content li{margin:0 0 var(--tg-space-1)}
.tg-rules-content hr{margin:var(--tg-space-4) 0;border:0;border-top:1px solid var(--tg-border)}
.tg-rules-content a{color:var(--tg-action-primary);text-decoration:underline}
/* Kura UX C2 → TD-091 P2 — ortak sunum sahnesinin SATIR İÇİ kipi: public Canlı
   sekmesi ve yönetim Kura ekranının planlı sunum görünümü AYNI sahneyi kullanır.
   Sayfayı kilitlemez, başlık/sekmeleri örtmez; Tam Ekran isteğe bağlıdır. */
.draw-presentation.is-inline{position:relative;inset:auto;z-index:auto;margin-top:12px;border-radius:var(--tg-radius-lg);overflow:hidden}
.draw-presentation.is-inline .draw-presentation-main{overflow:visible}
.draw-presentation.is-inline:fullscreen{border-radius:0;overflow:auto}

/* ═══ PD-72 — TURNUVA MODÜLLERİ: 2 SÜTUN KART + SWITCH (UX_ARCHITECTURE §15.25) ═══
   Masaüstünde her satırda iki eşit kart (eski auto-fill 220px üç sütun sıkışıyordu),
   ≤760px tek sütun. Aç/kapa kontrolü kart başlığının sağında role=switch düğme: form
   gönderir (aynı `section=modules` yazma yolu), görünür Açık/Kapalı metni taşır —
   yalnız renkle anlaşılmaz; klavye Enter/Space natif submit, odak halkası token.
   Zorunlu bağımlılık uyarısı canonical .tg-note-warning (compact); kısmi bağımlılık notu kutusuz muted metin.
   Yeni renk sabiti yok — yalnız token. */
.module-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--tg-space-3)}
.module-summary-card{gap:var(--tg-space-2);padding:var(--tg-space-3) var(--tg-space-4);border-color:var(--tg-border);border-radius:var(--tg-radius-md)}
.module-summary-card.module-summary-locked{opacity:.72;filter:none}
.module-summary-head{align-items:center;gap:var(--tg-space-3);min-height:var(--tg-touch-min)}
.module-summary-head>strong{min-width:0;overflow-wrap:anywhere;line-height:1.3}
.module-summary-card .module-switch-form{margin:0;flex:0 0 auto}
.module-switch{display:inline-flex;align-items:center;gap:var(--tg-space-2);min-height:var(--tg-touch-min);margin:0;padding:0 var(--tg-space-1);border:0;border-radius:var(--tg-radius-md);background:transparent;color:var(--tg-text-muted);font:inherit;font-size:var(--tg-font-sm);font-weight:var(--tg-font-weight-bold);line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent}
.module-switch[aria-checked="true"]{color:var(--tg-text)}
.module-switch-track{position:relative;flex:0 0 auto;width:40px;height:22px;border-radius:var(--tg-radius-pill);background:var(--tg-border-strong);transition:background-color .15s ease}
.module-switch-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--tg-surface);box-shadow:var(--tg-shadow-card);transition:transform .15s ease}
.module-switch[aria-checked="true"] .module-switch-track{background:var(--tg-action-primary)}
.module-switch[aria-checked="true"] .module-switch-thumb{transform:translateX(18px)}
.module-switch:hover .module-switch-track{filter:brightness(.96)}
.module-switch:focus-visible{outline:2px solid var(--tg-action-primary);outline-offset:2px}
.module-switch.is-disabled{cursor:not-allowed;opacity:.55}
.module-switch-state{min-width:3.2em;text-align:left}
.module-summary-card .module-summary-desc{color:var(--tg-text-muted);line-height:1.5}
/* Zorunlu bağımlılık uyarısı canonical `.tg-note.tg-note-warning.tg-note-compact`tır (yeni bildirim
   sınıfı yok); kart boşluğu zaten var, ek dış kenar sıfırlanır. Kısmi bağımlılık notu KUTUSUZ düz
   muted metindir (DS-140: kutusuz metin .tg-note'a taşınmaz). */
.module-summary-card .tg-note-compact{margin:0}
.module-summary-card .tg-note-compact svg{color:var(--tg-status-warning)}
.module-summary-note{margin:0;color:var(--tg-text-muted);line-height:1.4}
.module-summary-note small{display:block}
@media (max-width:760px){
  .module-summary-grid{grid-template-columns:minmax(0,1fr);gap:var(--tg-space-2)}
  .module-summary-card{padding:var(--tg-space-3)}
  .module-summary-head{gap:var(--tg-space-2)}
}
@media (prefers-reduced-motion:reduce){.module-switch-track,.module-switch-thumb{transition:none}}

/* ═══ v6.394.50 — CANONICAL HERO SHELL (docs/UX_ARCHITECTURE.md UXA-231b) ═══
   Üye Ana Sayfası karşılama kartı (`.member-home-hero`), Turnuva Genel Bakış /
   public turnuva kimlik başlığı ve public oyuncu başlığı (`.overview-banner`)
   AYNI kabuğu kullanır: zemin, metin rengi, yükseklik, dolgu, radius, gölge,
   kırılım ve dekor katmanı YALNIZ BURADA tanımlıdır. İçerik düzeni her
   yüzeyin kendi dosyasındadır (member-home.css / dashboard-overview.css).

   RENK: ham renk YOK. Zemin marka token'larından (`--tg-brand-primary/
   -secondary`, `--tg-action-primary`) türeyen TEK gradyandır; Platform Teması
   ya da turnuva markası değişince iki hero da birlikte değişir. Değişkenler
   `.tg-hero` ÜZERİNDE hesaplanır (`:root`'ta değil) — turnuva markası
   override'ı hangi atada tanımlanırsa tanımlansın doğru çözülür.

   BOYUT: referans Turnuva Genel Bakış'tır. `min-height` bir TABANDIR, sabit
   yükseklik değildir — uzun ad / uzun turnuva adı / büyük logo kartı aşağı
   doğru büyütür, kırpmaz.

   DEKOR: `tg_hero_decor_markup()` (app/ui_helpers.php) → tek SVG, satır içi,
   `currentColor` = hero metin rengi. Konum mantığı iki yüzeyde AYNI: SAĞ ALT
   köşe. Sağ alt köşeyi kullanan içerik (dashboard mesajı, mobil durum satırı)
   `--tg-hero-decor-reserve` kadar sağ boşluk bırakır — çakışma, dekoru
   küçülterek değil içeriğe yer ayırarak önlenir. */
.tg-hero{
  --tg-hero-text:var(--tg-brand-primary-text);
  --tg-hero-bg:linear-gradient(104deg,var(--tg-brand-primary),var(--tg-brand-secondary) 58%,color-mix(in srgb,var(--tg-action-primary) 62%,var(--tg-brand-secondary)));
  --tg-hero-min-h:168px;
  --tg-hero-pad-y:clamp(20px,3.4vw,40px);
  --tg-hero-pad-x:clamp(20px,4vw,46px);
  --tg-hero-decor-w:170px;
  --tg-hero-decor-h:76px;
  --tg-hero-decor-right:24px;
  --tg-hero-decor-bottom:12px;
  --tg-hero-decor-opacity:1;
  --tg-hero-decor-reserve:calc(var(--tg-hero-decor-w) + var(--tg-hero-decor-right) - var(--tg-hero-pad-x) + 8px);
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:var(--tg-hero-min-h);
  padding:var(--tg-hero-pad-y) var(--tg-hero-pad-x);
  border:0;
  border-radius:var(--tg-radius-lg);
  background:var(--tg-hero-bg);
  color:var(--tg-hero-text);
  box-shadow:0 16px 38px color-mix(in srgb,var(--tg-brand-primary) 26%,transparent);
  min-width:0;
}
.tg-hero-decor{
  position:absolute;
  z-index:-1;
  right:var(--tg-hero-decor-right);
  bottom:var(--tg-hero-decor-bottom);
  width:var(--tg-hero-decor-w);
  height:var(--tg-hero-decor-h);
  color:var(--tg-hero-text);
  opacity:var(--tg-hero-decor-opacity);
  pointer-events:none;
}
.tg-hero-decor svg{display:block;width:100%;height:100%}
@media (max-width:760px){
  .tg-hero{
    --tg-hero-min-h:124px;
    --tg-hero-pad-y:16px;
    --tg-hero-pad-x:16px;
    --tg-hero-decor-w:90px;
    --tg-hero-decor-h:40px;
    --tg-hero-decor-right:10px;
    --tg-hero-decor-bottom:8px;
    --tg-hero-decor-opacity:.85;
  }
}

/* v6.394.66 (UXA-247) — TURNUVA KONUM SEÇİCİSİ (ülke → il → ilçe). Oluşturma formu
   ve Turnuva Ayarları → Genel aynı markup'ı kullanır (`location_picker_html()`).
   Tek sütun; kutular global `select` kuralından gelir, burada yalnız 44px dokunma
   hedefi ve dar ekranda taşmama garanti edilir. */
.location-picker{display:grid;gap:8px;min-width:0}
.location-picker select{min-height:44px;min-width:0;max-width:100%}
.location-picker-admin2{display:grid;gap:8px;min-width:0}
.location-picker-admin2[hidden]{display:none}
.location-picker .tg-note{margin:0}
/* B-04 (SED §9.5) — iki kez yaşanan turnuva yerel saatinde oluşum seçimi */
.local-time-choice{display:grid;gap:6px;min-width:0;margin:4px 0 2px;padding:8px 12px 10px;border:1px solid var(--tg-border-strong);border-radius:var(--tg-radius-sm);background:var(--tg-surface-soft)}
.local-time-choice[hidden]{display:none}
.local-time-choice legend{padding:0 4px;font-size:var(--tg-font-sm);font-weight:700}
.local-time-choice label{display:flex;align-items:flex-start;gap:8px;min-height:44px;margin:0;font-size:var(--tg-font-sm);font-weight:400;line-height:1.35;overflow-wrap:anywhere;cursor:pointer}
.local-time-choice input[type="radio"]{flex:0 0 auto;width:18px;height:18px;margin:2px 0 0;padding:0}

/* ═══ «DOKUNUNCA YÜKLE» YAYIN ALANI — ortak kurallar (public «Canlı Yayın» kartı + yönetim kayıtlı yayın önizlemesi) ═══
   MAC-AYARLARI-SEKMELER son düzeltme (2026-11-03): kurallar public-tournament.css'ten BİREBİR taşındı (değer değişmedi) —
   app.css hem ziyaretçi sayfasında hem yönetim kabuğunda yüklenir; kopya kural yok. İşaretleme tek:
   app/match_broadcast_helpers.php match_broadcast_frame_markup(); istemci assets/js/public-broadcast.js.
   16:9, YouTube'un en küçük 200 × 200 px görüş alanı korunur (min-height); uzak görsel / yazı tipi / ikon YOK. */
.public-broadcast-frame{position:relative;width:100%;aspect-ratio:16 / 9;min-height:200px;background:#000;border-radius:var(--tg-radius-md,10px);overflow:hidden}
.public-broadcast-player{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
/* 2026-11-03 «dokununca yükle»: açılışta iframe yerine yerel yer tutucu — alanın TAMAMI gerçek bir düğme; oynat simgesi
   yalnız CSS (uzak görsel / yazı tipi / ikon YOK). JS yoksa düğme `hidden` kalır, `.public-broadcast-nojs` görünür. */
.public-broadcast-load{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:var(--tg-space-3,12px);border:0;border-radius:inherit;background:radial-gradient(circle at center,#2a2f3a 0,#0b0d12 72%);color:#fff;font:inherit;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tg-space-2,8px);cursor:pointer}
.public-broadcast-load[hidden],.public-broadcast-nojs[hidden]{display:none}
.public-broadcast-load:focus-visible{outline:3px solid var(--tg-focus-ring,#2b78e4);outline-offset:-5px}
.public-broadcast-load:disabled{cursor:progress}
.public-broadcast-play{position:relative;width:72px;height:72px;border-radius:50%;background:var(--tg-action-primary,#e4572e);box-shadow:0 2px 10px rgba(0,0,0,.45);flex:0 0 auto;transition:transform .15s ease}
.public-broadcast-play::after{content:"";position:absolute;top:50%;left:54%;transform:translate(-50%,-50%);border-style:solid;border-width:14px 0 14px 23px;border-color:transparent transparent transparent #fff}
.public-broadcast-load:hover .public-broadcast-play,.public-broadcast-load:focus-visible .public-broadcast-play{transform:scale(1.06)}
.public-broadcast-load-label{font-size:var(--tg-font-md,1rem);line-height:1.2}
.public-broadcast-nojs{position:absolute;inset:0;margin:0;padding:var(--tg-space-3,12px);display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;font-size:var(--tg-font-sm,.875rem)}
@media (prefers-reduced-motion:reduce){.public-broadcast-play{transition:none}}
