MediaWiki:Common.js: Revizyonlar arasındaki fark

FM Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla
Değişiklik özeti yok
Değişiklik özeti yok
 
(Aynı kullanıcının aradaki diğer 11 değişikliği gösterilmiyor)
1.347. satır: 1.347. satır:
  * - Görev filtresi (Savunma / Destek / Hücum / Otomatik)
  * - Görev filtresi (Savunma / Destek / Hücum / Otomatik)
  * - Rol inceleme + Quiz modu
  * - Rol inceleme + Quiz modu
*/
/* FM Rol Antrenörü – v2
* Özellikler:
* - Rolleri isim / kısaltma ile arama
* - Göreve göre filtre (Savunma / Destek / Hücum / Otomatik)
* - Rol inceleme + Quiz modu
*/
/* FM Rol Antrenörü – TAM SÜRÜM
* - Tüm roller ve alt roller (görevler + kesici/sigorta varyasyonları) eklendi.
* - İsim/kısaltma arama, göreve göre filtre, alt rol seçimi ve quiz modu içerir.
  */
  */


1.352. satır: 1.363. satır:
     'use strict';
     'use strict';


     // ---- ROL VERİLERİ ------------------------------------------------------
     // ------------------------------------------------------------------------
    // ROL VERİLERİ
    // ------------------------------------------------------------------------


     var roles = [
     var roles = [
         // --- Stoper / Libero hattı ---
         // ===================== STOPERLER =====================
         {
         {
             code: "SS",
             code: "SS",
             name: "Standart Stoper",
             name: "Standart Stoper",
             group: "Stoper",
             group: "Stoper",
             duties: ["Savunma"],
             subRoles: [
            tags: ["Kesici", "Sigorta"],
                {
             withBall: "",
                    key: "ss-std",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma (Standart)",
                    withBall:
                        "Topu kazandığında önceliği en yakın ve güvenli pas opsiyonudur; genelde yan stopere, beke veya önündeki defansif orta sahaya kısa pas oynar. Riskli dikine pas ve driplingten kaçınır, hataya izin vermemeyi hedefler.",
                    withoutBall:
                        "Ceza sahasını ve rakip santraforu savunur; ikili mücadele ve hava toplarında agresiftir ancak çizgiyi bozup gereksiz öne çıkmaz. Savunma hattının dengesini korumaya ve hat kırılmadan pozisyonunu tutmaya odaklanır.",
                    positioning:
                        "Kendi ceza sahası ön çizgisinde, diğer stoperle aynı hizada pozisyon alır. Ne gereksiz geride kalır ne de fazla öne çıkar; savunma hattının merkezini sabitler."
                },
                {
                    key: "ss-kesici",
                    duty: "Savunma",
                    label: "Savunma (Kesici)",
                    withBall:
                        "Topu kaptıktan sonra yine çoğunlukla kısa ve basit pas oynar; agresifliği topu kazanma anındadır, topla risk almakta değil. Rakibin ayağından söktüğü topları çabucak orta sahaya veya beke aktararak oyunu hızla tekrar kurar.",
                    withoutBall:
                        "Kesici görevinde savunma hattından bir–iki adım öne çıkarak rakip santrafor ve 10 numaraya agresif şekilde basar. Ara pasları kesmeye, sırtı dönük alınan toplara hemen müdahale etmeye çalışır; bunun karşılığında arkasında boşluk bırakma riski artar.",
                    positioning:
                        "Savunma çizgisinin hafif önünde, top kendi bölgesine geldiğinde çizgiden kopup rakibe doğru adım atar. Diğer stoper genelde biraz daha geride kalıp onun açığını sigortalar."
                },
                {
                    key: "ss-sigorta",
                    duty: "Savunma",
                    label: "Savunma (Sigorta / Toparlayıcı)",
                    withBall:
                        "Topu aldığında hiçbir risk almadan en basit pası oynamayı tercih eder; genellikle yanındaki stopere veya defansif orta sahaya oynar. Uzun top ve dikine pas denemeleri minimumdadır.",
                    withoutBall:
                        "Savunma (toparlayıcı) görevi ile standart stoper, defans çizgisinin biraz daha arkasına yanaşır ve savunma hattının arkasına atılan paslara müdahale etmeye odaklanır. Diğer stoper veya bek öne çıktığında onların arkasına sarkan koşuları takip eder.",
                    positioning:
                        "Savunma hattının bir–iki adım gerisinde, adeta arka süpürücü gibi konumlanır. Rakip derine koşu attığında veya arkaya uzun top gönderdiğinde, bu topları toplamakla ve son adam olarak hatayı kapatmakla görevlidir."
                }
            ]
        },
        {
            code: "LIB",
            name: "Libero",
            group: "Stoper / Libero",
             subRoles: [
                {
                    key: "lib-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Stoperlerin arkasında veya arasında topu alır, baskı yoksa dripling ile birkaç metre öne çıkıp oyunu başlatır. Genellikle orta sahaya ve kanatlara güvenli paslarla oyunu genişletir.",
                    withoutBall:
                        "Savunma hattının arkasını süpürür; stoperlerin kaçırdığı koşuları takip eder, savunma arkasına sarkan topları toplar. Tehlike anında ceza sahası içinde ekstra stoper gibi konumlanır.",
                    positioning:
                        "Top rakipteyken stoperlerden birkaç metre geride, kaleci ile savunma hattı arasında konumlanır. Top sendeyken biraz öne çıkar ama önceliği yine arka güvenliktir."
                },
                {
                    key: "lib-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Topu aldığında sadece süpürücü değil, geriden oyun kurucu gibi davranır; dripling ile orta sahaya kadar çıkar, kanatlara ve 10 numaraya dikine paslar atar. Tempo kontrolüne ciddi katkı sağlar.",
                    withoutBall:
                        "Savunma arkasını kapatmakla birlikte gerektiğinde savunma hattıyla aynı hizaya çıkar ve çizgi kırılmadan rakibe yaklaşır. Takım önde savunma yapıyorsa kaleciyle birlikte çok geniş alanı kontrol eder.",
                    positioning:
                        "Takım yerleşik hücumdayken stoperlerin önüne kadar çıkarak neredeyse defansif orta saha pozisyonuna yaklaşır. Top kaybında hızlıca geri dönüp yine klasik libero derinliğine çekilir."
                }
            ]
         },
         },
         {
         {
1.370. satır: 1.442. satır:
             name: "Pasör Stoper",
             name: "Pasör Stoper",
             group: "Stoper",
             group: "Stoper",
             duties: ["Savunma"],
             subRoles: [
            tags: ["Kesici", "Sigorta"],
                {
            withBall: "",
                    key: "pss-std",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma (Standart)",
                    withBall:
                        "Stoper pozisyonundan hatlar arasına ve kanatlara dikine paslar atar; gerektiğinde uzun ters toplarla oyunun yönünü değiştirir. Baskı yoksa birkaç adım dripling ile öne çıkıp ilk pres hattını kırabilir.",
                    withoutBall:
                        "Standart stoper gibi ceza sahasını savunur ama pas aralarına biraz daha agresif girer. Hem markaj hem alan savunması yaparken bir yandan da olası kontra başlangıçlarını kesmeye çalışır.",
                    positioning:
                        "Savunma hattının merkezinde veya hafif sağ/solunda konumlanır. Geriden oyun kurulumunda genellikle ilk topu alan oyunculardan biridir."
                },
                {
                    key: "pss-kesici",
                    duty: "Savunma",
                    label: "Savunma (Kesici)",
                    withBall:
                        "Topu kazanır kazanmaz dikine veya riskli ama akıllı paslar arar; savunmadan hücuma geçişi hızlandırmak için cesur paslar kullanır. Dripling ile öne çıktığında da rakip blokları kırmaya çalışır.",
                    withoutBall:
                        "Savunma çizgisinden bir–iki adım öne çıkarak rakip 10 numara ve santrafora agresif basar. Çok sık pas arası kovalar; bu da arkasında boş alan bırakma riskini artırır.",
                    positioning:
                        "Genellikle savunma hattının ön tarafına yakın, rakibin topu almasını beklemeden öne fırlamaya hazır durumda konumlanır. Diğer stoper ve bekler, onun açığını kapatmak için biraz daha temkinli durur."
                },
                {
                    key: "pss-sigorta",
                    duty: "Savunma",
                    label: "Savunma (Sigorta / Toparlayıcı)",
                    withBall:
                        "Normal pasör stoperden biraz daha temkinlidir; yine dikine ve kanatlara pas atar ama risk seviyesini bir tık aşağı çeker. Daha çok savunma güvenliği bozulmadan oyunu kurmaya odaklanır.",
                    withoutBall:
                        "Defans çizgisinin yarım adım gerisinde konumlanarak hem pasör hem sigorta rolü üstlenir. Diğer stoper ve bekler öne çıktığında arkaya atılan topları karşılamak için geride kalır.",
                    positioning:
                        "Savunma hattının hafif gerisinde, libero vari bir süpürücü-pasör karışımı gibi durur. Pres anlarında çizgiye yaklaşır, geçiş savunmasında ise son adam rolüne kayar."
                }
            ]
         },
         },
         {
         {
1.380. satır: 1.482. satır:
             name: "Çakılı Stoper",
             name: "Çakılı Stoper",
             group: "Stoper",
             group: "Stoper",
             duties: ["Savunma"],
             subRoles: [
            tags: ["Kesici", "Sigorta"],
                {
            withBall: "",
                    key: "cs-std",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma (Standart)",
                    withBall:
                        "Topu fazla ayağında tutmadan, en yakındaki beke veya stopere kısa pasla oynar. Riskli pas, dripling ve ileri çıkarak oyun kurma neredeyse hiç yoktur.",
                    withoutBall:
                        "Çizgisini terk etmeden göbekte durur, özellikle ceza sahası içi pozisyonlarda markaj ve blok yapar. Savunma çizgisini mümkün olduğunca sabit tutmaya çalışır.",
                    positioning:
                        "Ceza sahası ön çizgisine yakın, savunma hattının en derin oyuncularından biridir. Takım çizgiyi öne çıkarırken bile çok fazla ileri çıkmaz."
                },
                {
                    key: "cs-kesici",
                    duty: "Savunma",
                    label: "Savunma (Kesici)",
                    withBall:
                        "Topu kaptığında yine basit oynar; farkı, topu kazanmak için biraz daha agresif öne çıkmasıdır. Kopardığı topları hızlıca güvenli pasla arkadaşlarına aktarır.",
                    withoutBall:
                        "Normal çakılı stopere göre bir–iki adım daha agresif davranır; özellikle kısa pasla oynayan santrafor ve 10 numaraya öne çıkarak müdahale eder. Buna rağmen savunma çizgisini çok bozmaz, derinliği korur.",
                    positioning:
                        "Ceza sahası ön çizgisine çok yakın ama zaman zaman çizgiden hafif kopup rakibe yaklaşan bir noktada durur. Hâlâ derinde oynayan ama topa daha hevesli bir profil çizer."
                },
                {
                    key: "cs-sigorta",
                    duty: "Savunma",
                    label: "Savunma (Sigorta / Toparlayıcı)",
                    withBall:
                        "Top ayağına geldiğinde neredeyse her zaman en basit ve güvenli pası oynar; çoğunlukla taca atma, kaleciye dönme veya yan stopere verme tercih edilir.",
                    withoutBall:
                        "Savunma hattının en gerisinde konumlanır ve tamamen son adam gibi oynar. Diğer stoper veya bek çizgiyi bozup öne çıktığında arkaya atılan topları süpürmekle görevlidir.",
                    positioning:
                        "Ceza sahasının içine yakın, savunma çizgisinin bir–iki adım arkasında durur. Özellikle derin savunma yapan takımlarda kaleciyle birlikte en son sigorta rolündedir."
                }
            ]
         },
         },
         {
         {
1.390. satır: 1.522. satır:
             name: "Kenar Stoper",
             name: "Kenar Stoper",
             group: "Stoper",
             group: "Stoper",
             duties: ["Savunma", "Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "ks-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu aldığında genellikle beke veya içteki orta sahaya oynar; çok ileri dripling yapmaz. Nihai amaç, topu güvenli şekilde çizgiden çıkarıp orta sahaya aktarmaktır.",
                    withoutBall:
                        "Üçlü savunmanın kenarında rakip kanat ve içe kat eden forvetleri karşılar. Çizgi ile stoper hattı arasındaki boşluğu kapatır ve arka direk koşularını takip eder.",
                    positioning:
                        "Savunma hattının kenarında, bek ile merkez stoper arasında konumlanır. Daha çok geniş alan savunmasına odaklanır, hücum katkısı minimumdadır."
                },
                {
                    key: "ks-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Gerektiğinde çizgiden birkaç metre driplingle çıkar, kanat beki ve kanat oyuncusuyla pas üçgenleri kurar. Düşük–orta riskli uzun paslarla kanadı oyuna sokabilir.",
                    withoutBall:
                        "Rakip kanada baskı yaparken zaman zaman öne çıkar, savunma ve orta saha hattı arasında bağlantıyı kapatır. Yine de tamamen çizgiyi terk etmez, arkayı kontrol eder.",
                    positioning:
                        "Savunma hattının kenarında başlar, top sendeyken biraz daha öne ve dışa kayar. Hem stoper hem destekleyen bek gibi iki rolde birden görünür."
                },
                {
                    key: "ks-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Topu taşıyarak rakip yarı sahaya kadar çıkabilir, kanada genişlik kazandırır veya half-space'ten dikine paslar dener. Zaman zaman ceza sahası çevresine kadar gelerek ekstra hücum opsiyonu yaratır.",
                    withoutBall:
                        "Pres hattına katkı verir; rakip kanat ve beklerin oyun kurmasına izin vermemek için öne çıkar. Geçiş anlarında hızla geriye dönmesi gerekir; aksi halde geniş alanda boşluk bırakabilir.",
                    positioning:
                        "Top sende olduğunda stoper çizgisinin önüne ve kenarına doğru çıkar; neredeyse hibrid bir stoper–bek gibi oynar. Top rakipteyken hızla savunma hattına geri oturur."
                }
            ]
         },
         },
        // ===================== BEKLER =====================
         {
         {
             code: "LIB",
             code: "SİB",
             name: "Libero",
             name: "Sigorta Bek",
             group: "Libero",
             group: "Bek",
             duties: ["Savunma", "Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "sib-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "İleri çıkmaktan çok emin paslar oynar; genellikle stoperine veya içteki orta sahaya kısa pas verir. Baskı altında kaldığında topu taca veya ileriye uzaklaştırmayı tercih eder.",
                    withoutBall:
                        "Hücumcu bek veya kanat oyuncusunun arkasını sigortalar, savunma çizgisini bozmaz. Rakip kanat oyuncusunu karşılar, çizgiyi kapatır ve arka direk koşularını takip eder.",
                    positioning:
                        "Savunma hattında derin konumlanır; çoğu zaman orta saha çizgisini geçmez. Hücumda bile konumunu çok terk etmeyen güvenlik beki gibi oynar."
                }
            ]
         },
         },
         {
         {
             code: "GL",
             code: "SHB",
             name: "Gizli Libero",
             name: "Sahte Bek",
             group: "Libero",
             group: "Bek",
             duties: ["Savunma"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "shb-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu aldığında çizgide kalmak yerine hafif iç koridora sokulur, yine de fazla risk almaz. Kısa paslarla stoper ve defansif orta saha ile bağlantı kurar.",
                    withoutBall:
                        "Savunma yerleşiminde klasik bek çizgisine döner, rakip kanat oyuncusunu ve bek bindirmesini karşılar. Önceliği çizgiyi kapatmak ve savunma hattını bozmmamaktır.",
                    positioning:
                        "Top rakipteyken bek hattında, stoperin dış yanında konumlanır. Top sendeyken içe doğru küçük kaymalar yaparak orta sahaya destek verir."
                },
                {
                    key: "shb-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden iç koridora doğru daha net kat eder; stoperlerin önünde ekstra orta saha oyuncusu gibi pas istasyonu olur. Topu DM/MC hattına, ters kanada veya 10 numaraya yönlendirir.",
                    withoutBall:
                        "Pres şekline göre ya çizgide kalır ya da orta blokta iç koridoru kapatır. Hem rakip kanadı hem de içteki oyun kurucuyu dengelemeye çalışır.",
                    positioning:
                        "Top sendeyken half-space'e, orta saha hattına yakın bir noktaya sokulur. Takım hücumdayken üçlü orta saha görünümü oluşturur; top rakipteyken klasik bek pozisyonuna döner."
                },
                {
                    key: "shb-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "İç koridora güçlü koşular yapar; neredeyse iç orta saha oyuncusu gibi top ister. Ara pas, şut ve ceza sahası çevresinde kombinasyon arar.",
                    withoutBall:
                        "Pres anında orta sahadaki ilk baskı oyuncularından biri gibi öne çıkar. Top kaybında çok geniş alanı koşarak kapatması gerektiği için fiziksel olarak yüksek tempo ister.",
                    positioning:
                        "Hücumda büyük oranda iç orta saha pozisyonunda, kanat oyuncusunun iç tarafında durur. Savunmada hızla çizgiye geri dönüp bek pozisyonunu alır."
                },
                {
                    key: "shb-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha temkinli, bazen daha agresif içe kat eden bek gibi oynar. Gerektiğinde sadece pas istasyonu olur, gerektiğinde iç koridorda hücuma ekstra adam sokar.",
                    withoutBall:
                        "Takımın genel pres ve savunma yüksekliğine göre, ya çizgide derin bek rolüne kayar ya da orta blokta presi tetikleyen oyunculardan biri olur.",
                    positioning:
                        "Takımın taktik yaklaşımına göre bek–iç orta saha hattı arasında bir yerde konumlanır; bazen ikinci DM gibi, bazen klasik bek gibi görünür."
                }
            ]
         },
         },
        // --- Bekler ---
         {
         {
             code: "SİB",
             code: "İYB",
             name: "Sigorta Bek",
             name: "İki Yönlü Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Savunma"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "iyob-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Topu aldığında hem çizgiden bindirme yapar hem de içe kat ederek pas opsiyonları yaratır. Çoğunlukla orta veya yerden pasla ceza sahası çevresine top taşır.",
                    withoutBall:
                        "Hem çizgiyi hem iç koridoru savunur; rakip kanat ve içe kat eden forvetleri takip eder. Takım savunmasında yüksek koşu mesafesiyle boşlukları kapatır.",
                    positioning:
                        "Top sendeyken çoğunlukla orta saha çizgisi üzerinde ya da biraz ilerisinde, kanat oyuncusunun gerisinde konumlanır. Savunmada klasik bek hattına geri döner."
                },
                {
                    key: "iyob-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çizgiyi zorlayan agresif bindirmeler yapar, sık sık son çizgiye inip orta açar veya ceza sahasına yerden pas çıkarır. Bazen iç koridora kat ederek şut açısı da arar.",
                    withoutBall:
                        "Geri dönüşlerde yoğun koşu yapar; rakip kanat hücumlarını karşılamak için hızla yerine dönmek zorundadır. Pres anlarında öne çıkıp rakip beke baskı yapar.",
                    positioning:
                        "Hücum anında neredeyse kanat oyuncusu gibi çok ileri çıkar; savunmada ise tekrar bek hattına gömülür. Çizgi üzerinde sürekli gidip gelen bir profil çizer."
                }
            ]
         },
         },
         {
         {
1.432. satır: 1.662. satır:
             name: "Çakılı Bek",
             name: "Çakılı Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Savunma"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "cb-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
        },
                    withBall:
        {
                        "Topu aldığında neredeyse her zaman kısa ve güvenli pas oynar; stoperine, iç orta sahaya veya kaleciye döner. Hücuma katkısı minimumdur.",
            code: "SB",
                    withoutBall:
            name: "Standart Bek",
                        "Çizgiyi hiç terk etmez; rakip kanadı, bek bindirmesini ve arka direk koşularını karşılar. Savunma hattının genişliğini korumaya odaklanır.",
            group: "Bek",
                    positioning:
            duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
                        "Kendi yarı sahasında, savunma çizgisinde kalır; orta saha çizgisini nadiren geçer. Saf savunmacı bek rolündedir."
            tags: [],
                }
            withBall: "",
             ]
            withoutBall: "",
             positioning: ""
         },
         },
         {
         {
1.452. satır: 1.680. satır:
             name: "Kanat Bek",
             name: "Kanat Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "kb-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu ileri taşımak yerine daha ziyade orta sahaya ve stoperlere geri kazandırır. Bindirmeleri kısıtlıdır, genişliği korurken temkinli davranır.",
                    withoutBall:
                        "Rakip kanadı ve bek bindirmesini karşılar, çizgiyi kapatır. Gerektiğinde ikinci stoper gibi içe kat ederek ceza sahasını kalabalıklaştırır.",
                    positioning:
                        "Savunma hattında klasik bek pozisyonunda, zaman zaman biraz daha içe kayarak stoperin yanına yaklaşır."
                },
                {
                    key: "kb-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden bindirme yapar, kanat oyuncusuna destek olur; uygun zamanda orta veya geriye yerden pas çıkarır. Hem genişliği sağlar hem pas istasyonu görevi görür.",
                    withoutBall:
                        "Hem çizgiyi hem yarı alanı savunur; rakip kanat oyuncusunu, içe kat eden kanadı ve beki karşılar. Çoğu zaman rakip kanat üçlüsüne karşı 2v2/3v2 savunmanın parçasıdır.",
                    positioning:
                        "Top sendeyken orta saha çizgisi civarında veya biraz ilerisinde, kanat oyuncusunun gerisinde/yanında konumlanır. Savunmada tekrar bek hattına döner."
                },
                {
                    key: "kb-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çok agresif bindirmeler yapar, sık sık son çizgiye koşu atar ve ceza sahasına orta keser. Bazen iç koridora da kat ederek şut veya ara pas fırsatı arar.",
                    withoutBall:
                        "Geri dönüşte uzun mesafe koşmak zorundadır; rakip kontra tehdidinde hızla savunmaya dönmesi gerekir. Pres hattında rakip beke baskı uygulayarak oyunu geriden kurmalarını zorlaştırır.",
                    positioning:
                        "Takım hücumdayken çoğunlukla kanat oyuncusu hizasında veya biraz önünde pozisyon alır. Savunmada bek çizgisine, hatta gerektiğinde stoper yanına kadar geriye çekilir."
                },
                {
                    key: "kb-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre davranır; daha defansif bir yaklaşımda destek rolü gibi, daha hücumcu bir yaklaşımda ise hücum kanat beki gibi ileri çıkar.",
                    withoutBall:
                        "Takımın savunma yüksekliği ve pres talimatlarına göre bazen çizgide derin, bazen orta blokta baskıcı bir profil çizer.",
                    positioning:
                        "Çoğunlukla klasik bek hattında başlar; oyun akışına göre orta saha çizgisi ötesine veya daha derine iner."
                }
            ]
         },
         },
         {
         {
             code: "İYO-B",
             code: "SB",
             name: "İki Yönlü Bek",
             name: "Standart Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "sb-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu ilerletmekten çok savunmayı güvenceye alacak paslar oynar; çoğunlukla stoperine veya orta sahaya döner. Bindirmeleri kısıtlıdır.",
                    withoutBall:
                        "Rakip kanadı marke eder, çizgiyi kapatır ve bek–stoper arasındaki kanalı korur. Fazla öne çıkmayarak savunma dengesini önceler.",
                    positioning:
                        "Savunma hattında klasik bek konumunda, orta saha çizgisine yakın ama çoğunlukla kendi yarı sahasında kalır."
                },
                {
                    key: "sb-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Yer yer bindirmeler yapar, topu kanat oyuncusuna veya içteki orta sahaya taşır. Uygun pozisyonda orta açar veya yerden pasla ceza sahası çevresini besler.",
                    withoutBall:
                        "Rakip kanadı ve bek bindirmesini karşılar, gerektiğinde öne çıkarak baskı yapar. Yine de arkasında çok büyük boşluk bırakmamaya dikkat eder.",
                    positioning:
                        "Top sendeyken orta saha çizgisi ve biraz ilerisinde, kanat oyuncusuna yakın konumlanır. Savunmada tekrar çizgiye iner."
                },
                {
                    key: "sb-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çizgiyi zorlar, sık sık üçüncü bölgeye koşu atar ve son çizgiye kadar gelip orta keser. Hücuma genişlik ve sayısal üstünlük kazandırır.",
                    withoutBall:
                        "Geride bıraktığı alanı kontrada kapatmak için yoğun şekilde geri koşar. Pres hattında rakip beke doğrudan baskı yapan oyunculardan biridir.",
                    positioning:
                        "Takım hücumdayken çoğunlukla kanat oyuncusu hizasında veya biraz önünde konumlanır. Top kaybında hızla savunma hattına geri döner."
                },
                {
                    key: "sb-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha temkinli, bazen daha agresif bindirmeler yapar. Oyun planına göre destek veya hücum beki gibi davranabilir.",
                    withoutBall:
                        "Takım savunma yüksekliğine göre çizgiyi daha yukarı veya daha derinde kurar. Pres yoğunluğunu takımın genel talimatına göre ayarlar.",
                    positioning:
                        "Genelde bek hattında başlar; maça ve taktik emirlere bağlı olarak daha çok orta sahaya yaklaşabilir veya derinde kalabilir."
                }
            ]
         },
         },
         {
 
             code: "SHB",
         // ===================== KANATLAR =====================
             name: "Sahte Bek",
       
             group: "Bek",
                {
             duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
             code: "K",
            tags: [],
             name: "Kanat Oyuncusu",
            withBall: "",
             group: "Kanat",
            withoutBall: "",
             subRoles: [
            positioning: ""
                {
                    key: "k-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Topu çoğunlukla çizgide alır; dripling ile adam eksiltmeye çalışır, bindirme yapan bekle ikili oyunlar oynar. Uygun olduğunda orta keser veya ceza sahası çevresine yerden pas bırakır. Ana amaç; genişlik sağlamak ve hücumu üçüncü bölgeye taşımaktır.",
                    withoutBall:
                        "Kendi bekinin önünde pozisyon alır; rakip bek ve kanat oyuncusuna baskı yapar. Geri dönüşlerde çoğu zaman kendi ceza sahası çevresine kadar koşup ikinci bek gibi savunmaya yardım eder.",
                    positioning:
                        "Top sendeyken çizgiye yakın, orta saha çizgisi ve biraz ilerisinde konumlanır. Savunmada bek hizasına kadar geri çekilip blokların arasındaki boşlukları kapatır."
                },
                {
                    key: "k-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif bir kanat gibi oynar; sürekli topsuz koşu ile derine sarkar, bire birde adam geçip son çizgiye inmeye veya içeri kat edip şut/ara pas aramaya çalışır. Ceza sahasına arka direk koşuları ile girerek bitirici aksiyon kovalar.",
                    withoutBall:
                        "Pres hattında önde yer alır; rakip beke ve zaman zaman stopere baskı uygular. Geri koşar ama önceliği rakibi geriden rahat çıkarmamak, geçişte hızlı şekilde ileri pozisyon almaktır.",
                    positioning:
                        "Hücumda çoğunlukla ileri üçlünün parçası gibi ceza sahası hizasına kadar çıkar; savunmada yine kanat çizgisinde orta saha bloğuna kadar geri gelir. Çizgi ile half-space arasında sürekli koşu yapar."
                }
            ]
         },
         },


         // --- Kanatlar / Geniş oyuncular ---
          
       
         {
         {
             code: "ÇKO",
             code: "ÇKO",
             name: "Çalışkan Kanat Oyuncusu",
             name: "Çalışkan Kanat Oyuncusu",
             group: "Kanat",
             group: "Kanat",
             duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "cko-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu aldığında basit ama dikine hamleler yapar; çizgiden topu taşıyıp takımını ileri çıkarmaya çalışır. Riskli bire bir denemekten ziyade çalışkanlığıyla alan açar.",
                    withoutBall:
                        "Kendi bekinin önünde ikinci bek gibi oynar; sık sık kendi ceza sahasına kadar dönerek savunmaya yardım eder. Rakip kanat ve bek ikilisine karşı yoğun pres uygular.",
                    positioning:
                        "Top rakipteyken çoğu zaman kendi yarı sahasında, bek önünde derin konumlanır. Hücumda yavaşça orta saha çizgisine çıkar."
                },
                {
                    key: "cko-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden top sürer, gerektiğinde içeri kat eder; orta açar, yerden pas çıkarır veya basit kombinasyonlarla hücumun devamını sağlar.",
                    withoutBall:
                        "Hem pres yapar hem de gerektiğinde geriye koşup bekini yalnız bırakmaz. Orta blokta rakip beke ve kanada karşı baskı hattının önemli parçasıdır.",
                    positioning:
                        "Kanat çizgisinde, orta saha çizgisi çevresinde başlar; hücumda ceza sahası çevresine kadar gelir, savunmada ise bek hizasına kadar geri iner."
                },
                {
                    key: "cko-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha fazla bire bir dener; çizgiden adam geçip orta açar veya içeri kat ederek şut ve ara pas arar. Koşu mesafesiyle savunmayı sürekli zorlar.",
                    withoutBall:
                        "Pres hattının ön oyuncularından biridir; rakip beke ve stoperlere erken baskı yapar. Geri dönüşlerde yine koşar ama önceliği rakibi çıkarmamaktır.",
                    positioning:
                        "Hücumda çoğunlukla ileri üçlünün parçası gibi ceza sahası hizasına kadar çıkar. Savunmada yine kendi yarı sahasına dönse de önce pres, sonra derin savunma yapar."
                },
                {
                    key: "cko-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha defansif–çalışkan, bazen daha hücum yönlü kanat gibi oynar. Her durumda yüksek koşu mesafesiyle sahayı boydan boya tarar.",
                    withoutBall:
                        "Takımın pres ve savunma kurgusuna uyum sağlayarak bazen ikinci bek, bazen önde presçi rolüne girer.",
                    positioning:
                        "Genelde kanat çizgisinde konumlanır; maçın gidişatına göre daha derin veya daha ileri pozisyon alır."
                }
            ]
         },
         },
         {
         {
1.494. satır: 1.868. satır:
             name: "Defansif Kanat",
             name: "Defansif Kanat",
             group: "Kanat",
             group: "Kanat",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "dk-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Topu alıp çizgiden çıkış pası sağlar; içe veya geriye oynayarak savunmadan hücuma geçişi güvenli hale getirir. Çok riskli driplingle girmez.",
                    withoutBall:
                        "Bekin önünde savunma kalkanı gibi durur; rakip kanat ve bek üçgenini bozmak için alan kapatır ve ikili mücadeleye girer.",
                    positioning:
                        "Savunma ağırlıklı olarak kendi yarı sahasında, bekin hemen önünde pozisyon alır. Hücumda orta saha çizgisine kadar çıkar ama çok ileri gitmez."
                },
                {
                    key: "dk-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha fazla ileri koşu yaparak genişliği sağlar; çizgiden topu taşıyıp tehlikeli bölgeye sokar. Yine de ana rolü gole gitmekten çok takıma derinlik ve istasyon sağlamaktır.",
                    withoutBall:
                        "Rakip beke ve kanada pres uygular, ama savunma yerleştiğinde yine bek önüne kadar geri döner. Çift yönlü savunma katkısı yüksektir.",
                    positioning:
                        "Top sendeyken orta saha ile hücum hattı arasında çizgi boyunca koşar; top rakipteyken kendi yarı sahasına çekilip ikinci bek gibi savunur."
                }
            ]
         },
         },
         {
         {
1.504. satır: 1.897. satır:
             name: "Kanat Oyun Kurucu",
             name: "Kanat Oyun Kurucu",
             group: "Kanat",
             group: "Kanat",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "kok-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Çizgiden iç koridora doğru gelerek pas açılarını görür, kanat beki ve forvetle üçgenler kurar. Daha az dripling, daha çok vizyon ve pas üzerinden oyunu yönlendirir.",
                    withoutBall:
                        "Rakip beke ve içteki oyun kurucuya gölge pres yapar, pas kanallarını kapatır. Çok derine inmeden pozisyon alır.",
                    positioning:
                        "Başlangıçta kanat çizgisinde görünür ama top sende olduğunda half-space'e, ceza sahası önüne yakın bölgelere kayar. Takım hücumda yerleşmişken pas merkezi olur."
                },
                {
                    key: "kok-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha riskli kilit paslar ve ara toplar dener; sık sık iç koridordan ceza sahası çevresine girip bitirici aksiyon arar. Uzaktan şut tehditi de oluşturabilir.",
                    withoutBall:
                        "Rakip oyun kurucu ve bek üzerine agresif pres yapar, topu kazandıktan sonra hızlıca hücumu yönlendirir.",
                    positioning:
                        "Hücumda çoğunlukla 10 numara bölgesine yakın ama kenardan başlayan serbest bir oyun kurucu gibi hareket eder. Savunmada kanat–orta saha hattı arasında pozisyon alır."
                }
            ]
         },
         },
         {
         {
1.514. satır: 1.926. satır:
             name: "Ters Ayaklı Kanat",
             name: "Ters Ayaklı Kanat",
             group: "Kanat",
             group: "Kanat",
             duties: ["Destek", "Hücum"],
             subRoles: [
             tags: [],
                {
            withBall: "",
                    key: "tak-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Çizgide başlar, topu aldıktan sonra iç koridora kat eder ve ceza sahası yayına doğru pas açıları arar. Kanat bekinin bindirmelerini kullanarak iç–dış kombinasyonları kurar.",
                    withoutBall:
                        "Rakip beke baskı yapar ama merkez koridoru da gözeterek içe yakın durur. Hem çizgi hem half-space arasında alan kapatır.",
                    positioning:
                        "Başlangıç pozisyonu çizgiye yakın; top sende olduğunda half-space'e doğru hareket edip şut veya kilit pas bölgesine yaklaşır."
                },
                {
                    key: "tak-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Sık sık içe kat edip şut ve ara pas arar; ceza sahasına driplingle girerek bitirici aksiyon kovalayan ana tehditlerden biridir.",
                    withoutBall:
                        "Pres hattında stoper ve bek arasındaki pas hattını kapatır, gerektiğinde beke agresif pres yapar. Geri dönüşlerde yine bekine destek olmak zorundadır.",
                    positioning:
                        "Hücumda çoğunlukla ceza sahası çevresinde, 10 numara veya ikinci forvet gibi konumlanır; savunmada ise tekrar kanat çizgisine yaklaşır."
                }
            ]
        },
       
                {
            code: "KF",
            name: "Kanat Forvet",
            group: "Kanat / Forvet",
             subRoles: [
                {
                    key: "kf-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Başlangıçta çizgide durur ama topu aldığında güçlü ayağına doğru iç koridora kat eder. Half-space içinde forvetle ver–kaç yapar, bazen içeri şut dener bazen arka direğe orta/yerden pas çıkarır. Amaç hem kanadı tehdit etmek hem de ceza sahasına ekstra koşu atmaktır.",
                    withoutBall:
                        "Rakip beke ve iç koridordaki stopere gölge pres yapar; pas hattını kapatırken gerektiğinde geriye dönüp bekine yardım eder. Saf kanat kadar derine inmez ama kanat–forvet arasındaki pres bağlantısını kurar.",
                    positioning:
                        "Top sendeyken çizgiye yakın başlar, saldırı büyüdükçe içe doğru kıvrılıp ceza sahası yayı ve arka direk civarında konumlanır. Savunmada orta saha çizgisi civarına ve kanat çizgisine geri döner."
                },
                {
                    key: "kf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çok daha agresif iç koşular yapar; kanattan merkeze driplingle kat edip şut ve kaleye yönelen koşular arar. Çoğu pozisyonda klasik santrafor gibi ceza sahasına girip bitirici vuruş yapmayı hedefler.",
                    withoutBall:
                        "Yüksek hatta pres yapar; rakip bek ile stoper arasındaki hattı kapatarak topu o bölgeye zorlar. Geri dönüşlerde koşar ama önceliği savunma arkasına tehdit olmaktır.",
                    positioning:
                        "Hücumda çoğunlukla ileri hatta, santraforun yanına doğru içe kat etmiş halde görünür; kağıt üzerinde kanat, pratikte ikinci forvet gibi davranır. Savunmada tekrar kanat çizgisine ve orta blok hizasına yaklaşır."
                }
            ]
         },
         },
       
       
         {
         {
             code: "RMD",
             code: "RMD",
             name: "Raumdeuter",
             name: "Raumdeuter",
             group: "Kanat",
             group: "Kanat",
             duties: ["Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "rmd-huc",
            withoutBall: "",
                    duty: "Hücum",
            positioning: ""
                    label: "Hücum",
                    withBall:
                        "Topu genellikle zaten boş alanda alır; tek dokunuşla şut veya hızlı kontrol–şut kombinasyonlarıyla pozisyonu bitirmeye çalışır. Fazla hazırlık pası değil, doğrudan sonuç odaklı oynar.",
                    withoutBall:
                        "Savunma hattı ve orta saha arasındaki boşluklarda gezinerek savunmanın konsantrasyonunu bozar. Pres katkısı sınırlıdır; esas görevi doğru anda doğru boşluğa koşu atmaktır.",
                    positioning:
                        "Çizgide değil, savunma–orta saha arasındaki cepler ve arka direk koşuları etrafında dolaşır. Genellikle uzak direkte, bek–stoper arası boşlukları hedefler."
                }
            ]
         },
         },
         {
         {
1.534. satır: 2.006. satır:
             name: "Hedef Kanat Oyuncusu",
             name: "Hedef Kanat Oyuncusu",
             group: "Kanat",
             group: "Kanat",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "hko-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top alır, göğüsleyip indirir veya kafayla orta sahaya ve forvete indirir. Topu ayağında fazla tutmadan takım arkadaşlarını oyuna sokar.",
                    withoutBall:
                        "Uzun topların hedefi olarak hem hücumda hem savunmada hava topu mücadelesine girer. Bekin önünde savunma yaparken fizik gücüyle rakip kanadı zorlar.",
                    positioning:
                        "Kanat çizgisine yakın ama klasik hızlı kanat gibi değil, daha çok uzun top istasyonu gibi konumlanır. Stoper ve bekin atacağı uzun topların ineceği bölgede durur."
                },
                {
                    key: "hko-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Topu aldıktan sonra ceza sahasına girmeye ve bitirici aksiyon yapmaya daha fazla odaklanır; kafa vuruşu, şut ve ikinci toplar üzerinden skor kovalayarak kanat forvet gibi oynar.",
                    withoutBall:
                        "Rakip stoper ve bekin üzerine pres yaparak uzun top oynamaya zorlar; savunma duran toplarında da kendi ceza sahasında ekstra stoper gibi görev alır.",
                    positioning:
                        "Hücumda ceza sahasına daha sık girer; özellikle uzak direk ve arka direk koşularında belirir. Savunmada ise kendi yarı sahasında kanat çizgisine yaklaşır."
                }
            ]
         },
         },


         // --- 10 numaralar / AMC ---
         // ===================== 10 NUMARA BÖLGESİ =====================
         {
         {
             code: "ON",
             code: "ON",
             name: "On Numara",
             name: "On Numara",
             group: "Ofansif Orta Saha",
             group: "Ofansif Orta Saha",
             duties: ["Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "on-huc",
            withoutBall: "",
                    duty: "Hücum",
            positioning: ""
                    label: "Hücum",
                    withBall:
                        "Ceza sahası önü ve half-space bölgelerinde topu alıp kilit pas, çalım ve şut dener. Oyunun yaratıcı merkezi olarak son pası atmak ve rakip savunmayı açmak için risk alır.",
                    withoutBall:
                        "Çok derine inmez; rakip defansif orta sahalara ve stoperlere gölge pres yapar. Asıl işi top kazanmak değil, top kazandıktan sonra fark yaratmaktır.",
                    positioning:
                        "Forvetle orta saha sınırında, ceza yayı çevresinde dolaşır. Zaman zaman kanatlara açılır ama ağırlıklı olarak merkezde oynar."
                }
            ]
         },
         },
         {
         {
1.556. satır: 2.055. satır:
             name: "Ofansif Orta Saha",
             name: "Ofansif Orta Saha",
             group: "Ofansif Orta Saha",
             group: "Ofansif Orta Saha",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "oos-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Hem pas hem koşu tehdidi üretir; ceza sahası çevresinde pas dağıtır, zaman zaman geç koşularla ceza sahasına girer. Şut ve ver–kaç kombinasyonlarıyla üçüncü bölgeyi zorlar.",
                    withoutBall:
                        "Orta blokta pres hattına katılır; rakip defansif orta saha ve stoperlere yaklaşarak pas açılarını daraltır. Çok derine gömülmeden savunmaya destek olur.",
                    positioning:
                        "Ceza sahası yayının önünde ve half-space bölgelerinde konumlanır; forvetle orta saha arasında bağlantı oyuncusu gibi çalışır."
                },
                {
                    key: "oos-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif şekilde ceza sahasına koşu atar; şut ve bitirici aksiyon sayısı artar. Bazen ikinci forvet gibi pozisyon alarak skor katkısı sağlar.",
                    withoutBall:
                        "Presi daha önde başlatır, rakip stoper ve kaleciye kadar baskıya gider. Bu yüzden top arkasına dönüşte biraz daha geç kalma riski taşır.",
                    positioning:
                        "Takım hücumdayken forvete çok yakın, ceza sahası çizgisine kadar çıkar; savunmada ise orta sahaya geri çekilir."
                }
            ]
         },
         },
         {
         {
1.566. satır: 2.084. satır:
             name: "Ofansif Oyun Kurucu",
             name: "Ofansif Oyun Kurucu",
             group: "Ofansif Orta Saha",
             group: "Ofansif Orta Saha",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "ook-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Ceza sahası önünde topu alıp oyunu yönlendirir; kanatlara, bek bindirmelerine ve forvete akıllı paslar atar. Temposu kontrollü, riski hesaplıdır.",
                    withoutBall:
                        "Rakip defansif orta saha ve stoperler arasındaki pas kanallarını kapatır; çok agresif koşu yapmadan pozisyonuyla savunmaya yardım eder.",
                    positioning:
                        "Ceza yayı çevresinde ve half-space bölgelerinde dolaşır; takım yerleşik hücumdayken pas trafiğinin merkezinde yer alır."
                },
                {
                    key: "ook-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha riskli kilit pas ve ara toplar dener; şut ve ver–kaçlarla direkt skor katkısı kovalayan bir 10 numara gibi oynar.",
                    withoutBall:
                        "Önde pres hattına katılır; rakip stoper ve kaleciye daha agresif baskı yapar. Bu da orta sahada zaman zaman boşluk bırakmasına neden olabilir.",
                    positioning:
                        "Hücumda forvete çok yakın, bazen ikinci forvet gibi ceza sahasına girer; savunmada orta sahaya dönüş yapar ama çok derine inmez."
                }
            ]
         },
         },
         {
         {
1.576. satır: 2.113. satır:
             name: "Enganche",
             name: "Enganche",
             group: "Ofansif Orta Saha",
             group: "Ofansif Orta Saha",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "eg-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Statik bir oyun kurucu gibi ceza sahası önünde top ister; dönüp çevresine kilit pas arar. Çoğu zaman top ayağına gelmeden fazla hareket etmez, oyunu etrafında döndürür.",
                    withoutBall:
                        "Pres katkısı sınırlıdır; rakip defansif orta sahaya yakın pozisyon alır ama agresif koşu yapmaz. Savunmaya daha çok konum alarak ve pas gölgelemesiyle destek olur.",
                    positioning:
                        "10 numara cebinde, santraforun hemen arkasında ceza yayı etrafında konumlanır. Takım hücumdayken neredeyse sabit noktada oyun pimi gibi durur."
                }
            ]
         },
         },


         // --- Forvetler ---
         // ===================== FORVETLER =====================
         {
         {
             code: "GF",
             code: "GF",
             name: "Gizli Forvet",
             name: "Gizli Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "gf-huc",
            withoutBall: "",
                    duty: "Hücum",
            positioning: ""
                    label: "Hücum",
                    withBall:
                        "Ceza sahası çevresinde topla buluşup dripling, ver–kaç ve şut kombinasyonları dener. Hem kendine hem takım arkadaşlarına pozisyon hazırlayan bir ikinci forvet gibi oynar.",
                    withoutBall:
                        "Pres hattında santraforla birlikte rakip stoper ve defansif orta sahaya baskı yapar. Zaman zaman 10 numara bölgesine çekilerek pas kanallarını da kapatır.",
                    positioning:
                        "Ana santraforun hemen arkasında veya yanında, half-space bölgelerinde konumlanır. Sık sık ceza sahasına geç koşular atarak ekstra gol tehdidi yaratır."
                }
            ]
         },
         },
         {
         {
1.598. satır: 2.151. satır:
             name: "Yardımcı Forvet",
             name: "Yardımcı Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "yrd-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top alıp duvar olur; orta saha ve kanatlara pas dağıtır. Gerektiğinde kanatlara açılıp boş alan yaratır, ceza sahasına ikinci dalga koşuları atar.",
                    withoutBall:
                        "Santraforla birlikte stoper ve kaleciye pres uygular; zaman zaman orta sahaya kadar geri gelip savunma hattını destekler.",
                    positioning:
                        "Santrafora çok yakın, bazen yarım adım geride ve half-space bölgelerinde oynar. Hem bağlantı oyuncusu hem ek gol tehdidi gibi davranır."
                },
                {
                    key: "yrd-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha fazla ceza sahası içi koşu yapar, bireysel bitiriciliğini kullanmaya çalışır. Ana forvetle birlikte çift santrafor gibi pozisyon alır.",
                    withoutBall:
                        "Presi daha önde başlatır; rakip savunma hattının oyuna rahat başlamasına izin vermemek için sürekli koşar.",
                    positioning:
                        "Hücumda büyük oranda ikinci santrafor gibi ceza sahası içinde ve çevresinde durur. Savunmada orta sahaya kadar geri çekilip blokları birleştirir."
                }
            ]
         },
         },
         {
         {
1.608. satır: 2.180. satır:
             name: "Yaratıcı Forvet",
             name: "Yaratıcı Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "yf-huc",
            withoutBall: "",
                    duty: "Hücum",
            positioning: ""
                    label: "Hücum",
                    withBall:
                        "Sık sık derine gelip top alır; kanatlara ve koşu atan oyunculara yaratıcı paslar çıkarır. Aynı zamanda dripling ve şutla bireysel tehdit oluşturur.",
                    withoutBall:
                        "Top yönüne göre pres yapar; pas açılarını kapatarak rakip savunmanın rahat çıkmasını engeller. Çok yoğun koşmasa bile doğru anda doğru baskıyı yapmaya çalışır.",
                    positioning:
                        "Klasik santrafordan biraz daha geride ve serbest bir rolde; zaman zaman 10 numara bölgesine, zaman zaman kanatlara açılır. Ceza sahasına daha çok ikinci dalga koşularla girer."
                }
            ]
         },
         },
         {
         {
             code: "PS-F",
             code: "PS",
             name: "Pivot Santrafor",
             name: "Pivot Santrafor",
             group: "Forvet",
             group: "Forvet",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "psf-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top alır, göğüs ve kafa ile topu indirip çevresindeki oyunculara kazandırır. Çok fazla dripling yapmaz; duvar olup takım arkadaşlarını oyuna sokar.",
                    withoutBall:
                        "Rakip stoperlerle fiziksel mücadeleye girer, hava toplarında hem hücumda hem savunmada önemli rol oynar. Pres katkısı sınırlı olabilir ama varlığıyla savunmayı meşgul eder.",
                    positioning:
                        "Rakip stoperlerin hemen arasında veya hafif önlerinde, ceza sahası çevresinde konumlanır. Uzun topların ve ortaların ana hedef oyuncusudur."
                },
                {
                    key: "psf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Hem top indirir hem de fırsat bulduğunda kendi vuruşunu arar; ceza sahasında güçlü bitiricilik sergiler. Duran toplarda ve akınlarda birinci gol tehdididir.",
                    withoutBall:
                        "Stoperlere baskı yaparken aynı zamanda savunma hattını geri itmeye çalışır; rakibin rahat çıkmasını engelleyecek şekilde konum alır.",
                    positioning:
                        "Ceza sahası içinde ve çevresinde, çoğunlukla penaltı noktası ve ön direkte pozisyon alır. Çapraz koşulardan ziyade yer tutuşu ve fizik gücüyle fark yaratır."
                }
            ]
         },
         },
         {
         {
1.628. satır: 2.227. satır:
             name: "Fırsatçı Golcü",
             name: "Fırsatçı Golcü",
             group: "Forvet",
             group: "Forvet",
             duties: ["Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "fg-huc",
            withoutBall: "",
                    duty: "Hücum",
            positioning: ""
                    label: "Hücum",
                    withBall:
                        "Ceza sahası içinde veya çizgisinde topu aldığı anda en kısa yoldan şut atmaya odaklanır. Sekmeler, geri dönen toplar ve savunma hatalarından maksimum verim almaya çalışır.",
                    withoutBall:
                        "Savunma hattı arkasına ve ofsayt çizgisine yakın gezerek sürekli sarkma tehdidi yaratır. Pres katkısı minimum; esas görevi doğru anda doğru koşuyu yapmaktır.",
                    positioning:
                        "Savunma çizgisinin son omzunda, stoperlerin arkasına sarkma noktalarında dolaşır. Ceza sahası içi avcı forvet gibi hareket eder."
                }
            ]
         },
         },
         {
         {
1.638. satır: 2.245. satır:
             name: "Komple Forvet",
             name: "Komple Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "kof-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top saklar, kanatlara açar, 10 numarayla duvar olur; gerektiğinde driplingle adam eksiltir. Pas, koşu ve fizik gücünü bir arada kullanarak takım arkadaşlarını besler.",
                    withoutBall:
                        "Pres hattını yönetir; stoper, bek ve defansif orta sahaya baskı uygulayarak oyunu önde tutmaya çalışır. Savunmada da çalışkan bir profil çizer.",
                    positioning:
                        "Savunma hattının omzunda ama zaman zaman derine gelerek bağlantı rolü üstlenir. Hem ceza sahası içinde hem ceza sahası çevresinde görülebilir."
                },
                {
                    key: "kof-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif şekilde kaleyi düşünür; dripling, şut ve birebirlerle pozisyonu kendi bitirmeye odaklanır. Yine de gerektiğinde pasla arkadaşlarını da oyuna sokabilir.",
                    withoutBall:
                        "Stoperlere pres yaparken savunma arkasına koşu tehdidiyle çizgiyi geriye iter. Rakip defansı sürekli hareket etmeye zorlar.",
                    positioning:
                        "Çoğunlukla ceza sahası içinde ve çevresinde, ana gol tehdidi gibi konumlanır. Derine geldiği anlarda bile hızla tekrar son çizgiye koşu atar."
                }
            ]
         },
         },
         {
         {
1.648. satır: 2.274. satır:
             name: "Çalışkan Forvet",
             name: "Çalışkan Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Savunma", "Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "cf-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu aldığında basit oynar; hücumu bitirmekten çok takımını öne çıkarma ve savunmayı rahatlatma görevindedir. Kanatlara açılıp boş alan yaratabilir.",
                    withoutBall:
                        "Birinci presçi gibi davranır; stoper, bek ve kaleciye durmaksızın baskı uygular. Rakibin geriden oyun kurmasını zorlaştırır.",
                    positioning:
                        "Zaman zaman orta sahaya kadar geri gelir; pres anında ise stoperlerin tepesinde konumlanır. Çoğu zaman topun olduğu tarafa kayarak presi tetikler."
                },
                {
                    key: "cf-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top saklar, kanat ve orta sahayla ver–kaç yapar; ceza sahası çevresinde arkadaşlarını besler. Gol atmak kadar takım oyununa katkı da ön plandadır.",
                    withoutBall:
                        "Pres yapmaya devam eder ama tamamen savunma odaklı değil; bloklar arası bağlantıyı da korur. Orta sahayla forvet hattı arasında gidip gelir.",
                    positioning:
                        "Forvet hattında ama sık sık yarım adım geriye düşerek bağlantı rolü üstlenir. Kanatlara açılıp savunmanın dengesini bozabilir."
                },
                {
                    key: "cf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çalışkanlığını ceza sahası içi bitiricilikle birleştirir; çok sayıda koşuyla savunmayı yorarken fırsat bulduğunda şut ve son dokunuş arar.",
                    withoutBall:
                        "Yine pres yapar ama hedefi topu kazandıktan sonra hızla gol pozisyonuna gitmektir. Baskı ve gol tehdidini aynı anda sürdürür.",
                    positioning:
                        "Çoğunlukla ceza sahası çizgisi ve içinde hareket eder; boş alan bulmak için sürekli koşu yönünü değiştirir."
                }
            ]
         },
         },
         {
         {
1.658. satır: 2.314. satır:
             name: "Sahte Forvet",
             name: "Sahte Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "sf-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Derine gelip orta saha gibi top alır, kanatlara ve koşu atan oyunculara pas dağıtır. Ceza sahasına genelde geç koşularla girer.",
                    withoutBall:
                        "Rakip defansif orta saha ve stoperler arasındaki alanı kapatarak pas bağlantılarını bozar. Daha çok gölge pres yapar, çok agresif koşmaz.",
                    positioning:
                        "Kağıt üzerinde santrafor gibi görünse de pozisyon olarak sıklıkla 10 numara cebine düşer. Savunmayı peşinden çekerek arkadaki koşuculara alan açar."
                }
            ]
         },
         },


         // --- Defansif orta saha / regista hattı ---
         // ===================== DEFANSİF ORTA SAHA =====================
         {
         {
             code: "DOS",
             code: "DOS",
             name: "Defansif Orta Saha",
             name: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             duties: ["Savunma", "Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "dos-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu kazandıktan sonra çoğunlukla en yakın arkadaşına kısa, güvenli paslar oynar. Oyunu basit tutar, riskli pas ve driplingten kaçınır.",
                    withoutBall:
                        "Savunma hattının önünde süpürücü gibi çalışır, pas arası ve ikili mücadelelerle rakip atakları keser. Özellikle rakip 10 numara ve forvetlerin aldığı toplara sert müdahale eder.",
                    positioning:
                        "Stoperlerin hemen önünde, ceza yayı civarında konumlanır; merkez koridoru kapatır ve savunma ile orta saha arasında kalkan görevi görür."
                },
                {
                    key: "dos-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Basit pasların yanı sıra zaman zaman oyunu yön değiştirmek için kanatlara uzun toplar atar. Topu alıp birkaç metre dripling yaparak takımı öne çıkarabilir.",
                    withoutBall:
                        "Savunma önünde yine alan kaplar ama tamamen çapa gibi sabit kalmaz; topun olduğu tarafa doğru kayarak bloklar arasındaki boşlukları kapatır.",
                    positioning:
                        "DM hattında ama biraz daha hareketli; savunma önünde, orta sahaya yakın pozisyonlarda sürekli bağlantıyı canlı tutar."
                }
            ]
         },
         },
         {
         {
1.680. satır: 2.363. satır:
             name: "Derin Oyun Kurucu",
             name: "Derin Oyun Kurucu",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             duties: ["Savunma", "Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "dok-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Stoperlerin önünde topu alır, oyunu geriden kurarken yine savunma güvenliğini önemser. Uzun top atsa bile risk–ödül dengesini gözeterek oynar.",
                    withoutBall:
                        "Savunma hattının hemen önünde pozisyon alır; agresif top çalmaktan çok pas arası ve konumlanma üzerinden savunma yapar.",
                    positioning:
                        "DM bölgesinde stoperlere çok yakın, çoğu zaman onların hizasında veya bir–iki metre önünde konumlanır."
                },
                {
                    key: "dok-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Stoperlerden ve kaleciden topu alıp oyunu iki yana ve ileriye dağıtır. Dikine pas, ters top ve tempo ayarlama konusunda takımın beyni gibi çalışır.",
                    withoutBall:
                        "Savunma önünde konum alır ama agresif ikili mücadeleye çok girmez; pas açılarını kapatarak rakibin merkezden gelmesini zorlaştırır.",
                    positioning:
                        "DM hattında serbest bir oyun kurucu gibi dolaşır; top neredeyse genellikle ondan geçer."
                }
            ]
         },
         },
         {
         {
1.690. satır: 2.392. satır:
             name: "Savaşçı Orta Saha",
             name: "Savaşçı Orta Saha",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             duties: ["Savunma", "Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "so-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu kazandıktan sonra hızlı ve basit paslar oynar; riskli oyun kurma işine girmez. Zaman zaman uzun top ya da kanada ani paslarla rakibi şaşırtabilir.",
                    withoutBall:
                        "Agresif şekilde pres ve baskı yapar; rakip oyun kurucuyu, 8 numarayı ve kanallara kaçan forvetleri sert ikili mücadelelerle bozar.",
                    positioning:
                        "Orta saha ile defans arasındaki bölgede, topun olduğu tarafa doğru kayarak sürekli ikili mücadele kovalar."
                },
                {
                    key: "so-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Top kazandıktan sonra hem kısa pasla oyunu devam ettirir hem de bulduğu boşluklara driplingle ilerleyebilir. Takımı hem savunmada hem hücumda öne taşımaya çalışır.",
                    withoutBall:
                        "Yüksek pres anlarında ileri çıkar, bloklar geriye çekildiğinde defans önünde ikinci bir kalkan olur. Tüm orta saha genişliğinde çalışkanlık gösterir.",
                    positioning:
                        "MC ile DM hattı arasında mekik dokur; zaman zaman rakip ceza sahası önüne kadar çıkar, sonra kendi ceza sahası çevresine kadar geri döner."
                }
            ]
         },
         },
         {
         {
1.700. satır: 2.421. satır:
             name: "Ön Libero",
             name: "Ön Libero",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             duties: ["Savunma"],
             subRoles: [
             tags: [],
                {
            withBall: "",
                    key: "ol-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Derine düşüp stoperlerin arasından veya önünden top alır, savunma hattını üçleyerek geriden oyun kurulmasına yardım eder. Kısa ve orta mesafe pasları tercih eder.",
                    withoutBall:
                        "Takım savunma yaparken stoperlerin arasına girerek üçüncü stoper gibi davranır. Rakip forvetlerin koşularını ceza sahası önünde karşılar.",
                    positioning:
                        "Top sendeyken DM ile stoper hattı arasında, top rakipteyken çoğu zaman stoperlerin arasında konumlanır."
                }
            ]
        },
        {
             code: "GL",
            name: "Gizli Libero",
            group: "Defansif Orta Saha / Libero",
            subRoles: [
                {
                    key: "gl-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Savunma önünde topu alıp driplingle orta sahaya kadar çıkar; boş alan bulduğunda ileriye taşıyıcı koşular yapar. Hem pas hem koşu tehdidi üretir.",
                    withoutBall:
                        "Savunma önünde rakip 10 numara ve forvetler için bariyer olur; top kaybında hızla geriye dönerek savunma hattının hemen önüne yerleşir.",
                    positioning:
                        "DM hattında başlar; hücumda MC hattına ve rakip yarı sahaya kadar ilerleyebilir, savunmada tekrar derine çekilir."
                }
            ]
         },
         },
         {
         {
1.710. satır: 2.457. satır:
             name: "Regista",
             name: "Regista",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "reg-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Derinden oyunu dikte eder; sık sık topu ayağında ister ve kısa/uzun paslarla oyunun yönünü değiştirir. Tempo kontrolü, ters toplar ve ara paslarla hücumu organize eder.",
                    withoutBall:
                        "Savunma önünde konumlanır ama çok agresif ikili mücadelelere girmez; pas arası ve konumlanma ile savunmaya katkı sağlar.",
                    positioning:
                        "Stoperlerin önünde, orta sahaya yakın serbest bir rolde dolaşır. Takımın ritmini belirleyen oyuncudur."
                }
            ]
         },
         },
         {
         {
             code: "GOK",
             code: "GOK",
             name: "Gezgin Oyun Kurucu",
             name: "Gezgin Oyun Kurucu",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha / Merkez",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "gok-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sabit bir pozisyona bağlı kalmadan, top neredeyse oraya gidip oyunu yönlendirmeye çalışır. Kısa kombinasyonlar, ters toplar ve ara paslarla oyunun her iki yönüne de etki eder.",
                    withoutBall:
                        "Topun olduğu tarafa kayarak pas açılarını kapatır; merkezi tamamen boşaltmadan alan savunmasına yardımcı olur.",
                    positioning:
                        "DM ile MC hattı arasında, zaman zaman kenarlara veya half-space'e kaçan serbest bir oyun kurucudur; sahadaki boş alanları sezgisel olarak doldurur."
                }
            ]
         },
         },
         {
         {
1.730. satır: 2.493. satır:
             name: "Serbest Defansif Orta Saha (Volante)",
             name: "Serbest Defansif Orta Saha (Volante)",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "vol-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Derinden top alıp dripling veya pasla orta sahayı geçer; half-space ve kanallara koşular atar. Kanatlara, 10 numaraya ve ceza sahası çevresine bağlantı pasları verir.",
                    withoutBall:
                        "Top kaybında hızla geri dönerek savunma önünü kapatır; pres anında ise öne çıkarak rakip oyun kurucuya baskı yapar.",
                    positioning:
                        "Başlangıçta DM hattında; hücumda MC hattına ve kanallara doğru çıkar. Savunmada tekrar stoper önüne döner."
                },
                {
                    key: "vol-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çok daha agresif şekilde ileri koşu yapar; ceza sahası çevresine ve içine geç koşularla girer. Şut ve ikinci dalga koşularla direkt skor tehdidi hale gelir.",
                    withoutBall:
                        "Presi daha önde başlatır; geçiş anlarında hızla geri dönmek zorundadır, aksi halde DM bölgesinde boşluk kalır.",
                    positioning:
                        "Hücumda çoğu zaman MC hattının bile önüne, 10 numara yakınına kadar çıkar; savunmada DM pozisyonuna döner."
                }
            ]
         },
         },


         // --- Merkez orta saha / iç oyuncular ---
         // ===================== MERKEZ ORTA SAHA =====================
         {
         {
             code: "MO",
             code: "MO",
             name: "Merkez Orta Saha",
             name: "Merkez Orta Saha",
             group: "Merkez Orta Saha",
             group: "Merkez Orta Saha",
             duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "mo-sav",
            withoutBall: "",
                    duty: "Savunma",
            positioning: ""
                    label: "Savunma",
                    withBall:
                        "Topu aldığında basit ama dikine paslarla oyunu öne taşımaya çalışır; fazla risk almaz. Önceliği topu kaybetmeden takımı ileri çıkarmaktır.",
                    withoutBall:
                        "Orta blokta rakip pas kanallarını kapatır, ikili mücadelelere girer ve özellikle merkez koridoru savunur. Çapa kadar derine inmeden ama ondan hemen önceki hatta yer alır.",
                    positioning:
                        "MC hattında ama biraz daha kendi yarı sahasına yakın konumlanır; savunma ve hücum hattı arasında denge unsuru gibi durur."
                },
                {
                    key: "mo-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Stoper veya DM'den aldığı topu kısa–orta mesafe paslarla kanatlara ve ileri hatlara dağıtır. Zaman zaman ceza sahası çevresine destek koşusu yapar.",
                    withoutBall:
                        "Hem merkezde hem half-space'te alan kapatır; rakip 8 numara ve oyun kuruculara yakın durur. Bloklar arası mesafeyi korumaya yardım eder.",
                    positioning:
                        "MC çizgisi üzerinde, hem savunmaya hem hücuma aynı mesafede konumlanır. Takımın iskeletini bir arada tutan bağlantı oyuncusudur."
                },
                {
                    key: "mo-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha sık dikine pas ve dripling dener; ceza sahası önüne koşu atarak şut fırsatları arar. Bazen ikinci forvet gibi ceza sahasına da girer.",
                    withoutBall:
                        "Önde pres hattına katılır; rakip defansif orta saha ve stoperlere baskı yapar. Topun arkasına dönmekte biraz gecikebilse de amaç rakibin rahat oyun kurmasını bozmak.",
                    positioning:
                        "Hücumda ceza sahası çizgisi ve çevresine kadar çıkar; savunmada orta saha çizgisine geri döner."
                },
                {
                    key: "mo-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha savunmacı, bazen daha hücumcu merkez oyuncusu gibi davranır. Oyun içinde ihtiyaç neredeyse oraya kayar.",
                    withoutBall:
                        "Pres yüksekliğini ve alan savunmasını takım talimatına göre ayarlar; bazen DM'ye yakın, bazen rakip 10 numaraya yakın konumlanır.",
                    positioning:
                        "Genelde MC hattında başlar; maçın gidişatına göre bir kademe öne veya arkaya kayarak boşlukları doldurur."
                }
            ]
         },
         },
         {
         {
             code: "İYO-OS",
             code: "İYO",
             name: "İki Yönlü Orta Saha",
             name: "İki Yönlü Orta Saha",
             group: "Merkez Orta Saha",
             group: "Merkez Orta Saha",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "iyom-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sürekli hareket halinde top ister; dripling ve pasla oyunu hem genişletir hem dikine taşır. Geçiş hücumlarında topu hızla ileri götürerek takımı hücuma çıkarır.",
                    withoutBall:
                        "Hem savunma hattı önünde alan kaplar hem de ileri çıkarak prese destek verir. Sahada en çok koşan oyunculardan biri olarak boşlukları doldurur.",
                    positioning:
                        "MC hattında ama sürekli gidip gelerek hem ceza sahası önünde hem kendi ceza sahası çevresinde görünür. Tam anlamıyla iki yönlü bir mekik oyuncusudur."
                }
            ]
         },
         },
         {
         {
1.762. satır: 2.593. satır:
             name: "Mezzala",
             name: "Mezzala",
             group: "Merkez Orta Saha",
             group: "Merkez Orta Saha",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "mez-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Half-space bölgelerinde top alıp kanat ve bekle üçgenler kurar; dripling ve kısa paslarla oyun akışını sağlar. Ceza sahası çevresine geç koşular yaparak şut ve orta opsiyonu oluşturur.",
                    withoutBall:
                        "Orta sahada alan kapatırken topun olduğu tarafa kayar; bekine ve stoperine yardım ederek hem iç koridoru hem kenarı korur.",
                    positioning:
                        "MC hattında başlar, hücum anında çizgi ile merkez arasında half-space'e doğru kayar. Ceza sahası çevresinde ve içinde geç koşularla belirir."
                },
                {
                    key: "mez-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif şekilde ceza sahası içine koşar; şut ve gol arayan üçüncü adam gibi davranır. Dripling ve ara pasları daha riskli kullanır.",
                    withoutBall:
                        "Pres hattında öne çıkar; top kazanıldığında hızlıca hücuma katılabilmek için rakip DM ve stoperlere yakın durur.",
                    positioning:
                        "Hücumda çoğunlukla 10 numara bölgesine ve ceza sahası içine sokulur; savunmada tekrar MC hattına geri döner."
                }
            ]
         },
         },
         {
         {
1.772. satır: 2.622. satır:
             name: "Dinamo",
             name: "Dinamo",
             group: "Merkez Orta Saha",
             group: "Merkez Orta Saha",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall: "",
                    key: "dnm-des",
            withoutBall: "",
                    duty: "Destek",
            positioning: ""
                    label: "Destek",
                    withBall:
                        "Sürekli hareket halinde top alır; kısa ve orta mesafeli paslarla oyunu akıtır. Fizik gücünü kullanarak driplingle rakip blokların arasından da geçebilir.",
                    withoutBall:
                        "Pres, alan kapatma ve ikili mücadeleye yoğun katkı verir; sahada neredeyse her bölgede görünür. Hem defansta hem hücumda koşu mesafesiyle fark yaratır.",
                    positioning:
                        "MC hattında serbest bir rolde; topun olduğu tarafa ve boş alanlara doğru sürekli tempo yapan bir oyuncu gibi konumlanır."
                }
            ]
         }
         }
     ];
     ];
 
    window.FM_ROLE_TRAINER_ROLES = roles;
     // İç ID ekleyelim, kodlar çakışsa bile sorun olmasın
     // Her role iç ID ve görev listesi ekleyelim
     roles.forEach(function (r, idx) {
     roles.forEach(function (role, idx) {
         r._id = idx;
         role._id = idx;
        var dutySet = {};
        (role.subRoles || []).forEach(function (sr) {
            if (sr.duty) dutySet[sr.duty] = true;
        });
        role._duties = Object.keys(dutySet);
     });
     });


     var DUTIES = ["Savunma", "Destek", "Hücum", "Otomatik"];
     var DUTIES = ["Savunma", "Destek", "Hücum", "Otomatik"];


     // ---- UI KURULUMU -------------------------------------------------------
     // ------------------------------------------------------------------------
    // UI KURULUMU
    // ------------------------------------------------------------------------


     function buildApp($root) {
     function buildApp($root) {
         var $app = $('<div>').addClass('fm-role-app');
         var $app = $('<div>').addClass('fm-role-app');


        // Başlık
         $('<h1>').text('FM Rol Antrenörü').appendTo($app);
         $('<h1>').text('FM Rol Antrenörü').appendTo($app);
         $('<div>')
         $('<div>')
             .addClass('fm-role-subtitle')
             .addClass('fm-role-subtitle')
             .text('Rol listesinde arama yap, görev filtresi kullan, soldan rolü incele, sağda quiz ile kendini test et.')
             .text('Rol listesinde arama yap, göreve göre filtrele; soldan rol + alt rol davranışını incele, sağda quiz ile kendini test et.')
             .appendTo($app);
             .appendTo($app);


         var $layout = $('<div>').addClass('fm-role-layout').appendTo($app);
         var $layout = $('<div>').addClass('fm-role-layout').appendTo($app);


         // ==== SOL PANEL: arama + rol inceleme ====
         // SOL PANEL
         var $left = $('<section>').addClass('fm-role-panel').appendTo($layout);
         var $left = $('<section>').addClass('fm-role-panel').appendTo($layout);
         $('<h2>').text('Rol incele').appendTo($left);
         $('<h2>').text('Rol incele').appendTo($left);


         // Arama kutusu
         // Arama
         var $searchLabel = $('<label>')
         $('<label>')
             .addClass('fm-role-label')
             .addClass('fm-role-label')
             .text('Rol ara (isim veya kısaltma)')
             .text('Rol ara (isim veya kısaltma)')
1.852. satır: 2.716. satır:
                 var active = !dutyFilterState[duty];
                 var active = !dutyFilterState[duty];
                 dutyFilterState[duty] = active;
                 dutyFilterState[duty] = active;
                $btn.toggleClass('fm-role-filter-active', active);
                // küçük görsel ipucu
                 if (active) {
                 if (active) {
                     $btn.css({ background: 'rgba(79,70,229,0.15)' });
                     $btn.css({ background: 'rgba(79,70,229,0.15)' });
1.860. satır: 2.721. satır:
                     $btn.css({ background: 'transparent' });
                     $btn.css({ background: 'transparent' });
                 }
                 }
                 applyFilters();
                 applyFilters();
             });
             });
1.882. satır: 2.742. satır:
             .attr('id', 'fm-role-select')
             .attr('id', 'fm-role-select')
             .appendTo($left);
             .appendTo($left);
        // Alt rol (varyasyon) seçimi
        var $subRoleWrap = $('<div>')
            .css({ marginTop: '.35rem', display: 'none' })
            .appendTo($left);
        $('<label>')
            .addClass('fm-role-label')
            .text('Varyasyon (görev / kesici / sigorta vb.)')
            .appendTo($subRoleWrap);
        var $subRoleSelect = $('<select>')
            .addClass('fm-role-select')
            .appendTo($subRoleWrap);


         var $tags = $('<div>').addClass('fm-role-tags').appendTo($left);
         var $tags = $('<div>').addClass('fm-role-tags').appendTo($left);
1.898. satır: 2.772. satır:
         var $posP = $('<p>').appendTo($cardPos);
         var $posP = $('<p>').appendTo($cardPos);


         // ==== SAĞ PANEL: quiz ====
         // SAĞ PANEL – Quiz
         var $right = $('<section>').addClass('fm-role-panel').appendTo($layout);
         var $right = $('<section>').addClass('fm-role-panel').appendTo($layout);
         var $qh = $('<div>').addClass('fm-role-quiz-header').appendTo($right);
         var $qh = $('<div>').addClass('fm-role-quiz-header').appendTo($right);
         $('<h2>').text('Quiz modu').appendTo($qh);
         $('<h2>').text('Quiz modu').appendTo($qh);
1.910. satır: 2.783. satır:
         $('<div>')
         $('<div>')
             .addClass('fm-role-quiz-label')
             .addClass('fm-role-quiz-label')
             .text('Aşağıdaki davranış hangi role ait? Önce tahmin et, sonra “Rolü göster”.')
             .text('Aşağıdaki davranış hangi role / alt role ait? Önce tahmin et, sonra “Rolü göster”.')
             .appendTo($right);
             .appendTo($right);


1.928. satır: 2.801. satır:


         var $qCardRole = $('<div>').addClass('fm-role-card').appendTo($right);
         var $qCardRole = $('<div>').addClass('fm-role-card').appendTo($right);
         $('<h3>').text('Rol').appendTo($qCardRole);
         $('<h3>').text('Rol / alt rol').appendTo($qCardRole);
         var $qName = $('<p>')
         var $qName = $('<p>')
             .addClass('fm-role-quiz-name')
             .addClass('fm-role-quiz-name')
1.942. satır: 2.815. satır:
         $('<p>')
         $('<p>')
             .addClass('fm-role-hint')
             .addClass('fm-role-hint')
             .text('İpucu: önce hangi hat (stoper / bek / orta / kanat / forvet) ve hangi görev (savunma / destek / hücum) olacağını düşün.')
             .text('İpucu: önce hangi hat (stoper/bek/orta/kanat/forvet) ve hangi görev (savunma/destek/hücum/otomatik) olduğunu tahmin etmeye çalış.')
             .appendTo($right);
             .appendTo($right);


         // ---- DURUM & FİLTRE LOJİĞİ -----------------------------------------
         // STATE
 
         var filteredRoles = roles.slice();
         var filteredRoles = roles.slice();
         var currentRoleId = filteredRoles.length ? filteredRoles[0]._id : null;
         var currentRoleId = filteredRoles.length ? filteredRoles[0]._id : null;
         var currentQuizRole = null;
         var currentSubRoleKey = null;
        var currentQuiz = null;
         var searchTerm = "";
         var searchTerm = "";


         function renderTags(role) {
        // YARDIMCI FONKSİYONLAR
             $tags.empty();
        function getActiveSubRole(role) {
             if (!role) {
            if (!role || !role.subRoles || !role.subRoles.length) return null;
            var chosen = null;
            if (currentSubRoleKey) {
                chosen = role.subRoles.find(function (sr) { return sr.key === currentSubRoleKey; });
            }
            if (!chosen) {
                chosen = role.subRoles[0];
                currentSubRoleKey = chosen.key;
            }
            return chosen;
        }
 
         function setupSubRoleOptions(role) {
             $subRoleSelect.empty();
            currentSubRoleKey = null;
 
             if (!role || !role.subRoles || !role.subRoles.length) {
                $subRoleWrap.hide();
                 return;
                 return;
             }
             }
            role.subRoles.forEach(function (sr) {
                $('<option>')
                    .val(sr.key)
                    .text(sr.label)
                    .appendTo($subRoleSelect);
            });
            currentSubRoleKey = role.subRoles[0].key;
            $subRoleSelect.val(currentSubRoleKey);
            $subRoleWrap.show();
        }
        function renderTags(role, subRole) {
            $tags.empty();
            if (!role) return;
             $('<span>')
             $('<span>')
                 .addClass('fm-role-tag')
                 .addClass('fm-role-tag')
1.962. satır: 2.869. satır:
                 .appendTo($tags);
                 .appendTo($tags);


             $('<span>')
             if (role._duties && role._duties.length) {
                .addClass('fm-role-tag')
                $('<span>')
                .text('Görevler: ' + role.duties.join(', '))
                    .addClass('fm-role-tag')
                .appendTo($tags);
                    .text('Görevler: ' + role._duties.join(', '))
                    .appendTo($tags);
            }


             $('<span>')
             $('<span>')
1.972. satır: 2.881. satır:
                 .appendTo($tags);
                 .appendTo($tags);


             if (role.tags && role.tags.length) {
             if (subRole) {
                 $('<span>')
                 $('<span>')
                     .addClass('fm-role-tag')
                     .addClass('fm-role-tag')
                     .text('Etiket: ' + role.tags.join(', '))
                     .text('Varyasyon: ' + subRole.label)
                     .appendTo($tags);
                     .appendTo($tags);
             }
             }
1.982. satır: 2.891. satır:
         function describeField(text) {
         function describeField(text) {
             if (!text) {
             if (!text) {
                 return "Bu rol için ayrıntılı davranış açıklaması henüz eklenmedi.";
                 return "Bu alt rol için detaylı açıklama henüz eklenmedi.";
             }
             }
             return text;
             return text;
1.990. satır: 2.899. satır:
             var role = roles.find(function (r) { return r._id === currentRoleId; });
             var role = roles.find(function (r) { return r._id === currentRoleId; });
             if (!role) {
             if (!role) {
                 $withP.text("Filtre sonucu rol bulunamadı.");
                 $withP.text("Rol bulunamadı.");
                 $withoutP.text("");
                 $withoutP.text("");
                 $posP.text("");
                 $posP.text("");
                 $tags.empty();
                 $tags.empty();
                $subRoleWrap.hide();
                 return;
                 return;
             }
             }
            $withP.text(describeField(role.withBall));
            $withoutP.text(describeField(role.withoutBall));
            $posP.text(describeField(role.positioning));
            renderTags(role);


             // Select değerini rol ile eşitle
             var subRole = getActiveSubRole(role);
 
            $withP.text(describeField(subRole && subRole.withBall));
            $withoutP.text(describeField(subRole && subRole.withoutBall));
            $posP.text(describeField(subRole && subRole.positioning));
            renderTags(role, subRole);
 
             $select.val(String(role._id));
             $select.val(String(role._id));
         }
         }
2.025. satır: 2.937. satır:
             });
             });


            // Seçili rol filtreden düşmüşse ilk rolü seç
             if (!currentRoleId || !filteredRoles.some(function (r) { return r._id === currentRoleId; })) {
             if (!currentRoleId || !filteredRoles.some(function (r) { return r._id === currentRoleId; })) {
                 currentRoleId = filteredRoles[0]._id;
                 currentRoleId = filteredRoles[0]._id;
             }
             }


            var role = roles.find(function (r) { return r._id === currentRoleId; });
            setupSubRoleOptions(role);
             updateRoleDetails();
             updateRoleDetails();
         }
         }
2.038. satır: 2.951. satır:


             filteredRoles = roles.filter(function (role) {
             filteredRoles = roles.filter(function (role) {
                // metin araması
                 var text = (role.name + " " + role.code).toLocaleLowerCase("tr");
                 var text = (role.name + " " + role.code).toLocaleLowerCase("tr");
                 var matchText = !term || text.indexOf(term) !== -1;
                 var matchText = !term || text.indexOf(term) !== -1;


                // görev filtresi
                 var matchDuty = !activeDuties.length ||
                 var matchDuty = !activeDuties.length ||
                     role.duties.some(function (d) { return activeDuties.indexOf(d) !== -1; });
                     (role.subRoles || []).some(function (sr) {
                        return sr.duty && activeDuties.indexOf(sr.duty) !== -1;
                    });


                 return matchText && matchDuty;
                 return matchText && matchDuty;
2.052. satır: 2.965. satır:
         }
         }


         // ---- EVENTLER -------------------------------------------------------
         // EVENTLER
 
         $search.on('input', function () {
         $search.on('input', function () {
             searchTerm = $(this).val() || "";
             searchTerm = $(this).val() || "";
2.061. satır: 2.973. satır:
         $select.on('change', function () {
         $select.on('change', function () {
             var val = $(this).val();
             var val = $(this).val();
             if (val === null) { return; }
             if (val === null) return;
             currentRoleId = Number(val);
             currentRoleId = Number(val);
            var role = roles.find(function (r) { return r._id === currentRoleId; });
            setupSubRoleOptions(role);
            updateRoleDetails();
        });
        $subRoleSelect.on('change', function () {
            currentSubRoleKey = $(this).val() || null;
             updateRoleDetails();
             updateRoleDetails();
         });
         });


         function newQuestion() {
         function newQuestion() {
             if (!roles.length) { return; }
             if (!roles.length) return;
             var idx = Math.floor(Math.random() * roles.length);
 
             currentQuizRole = roles[idx];
            // Rastgele rol + onun rastgele alt rolü
             var rIndex = Math.floor(Math.random() * roles.length);
             var role = roles[rIndex];
            if (!role.subRoles || !role.subRoles.length) return;
 
            var sIndex = Math.floor(Math.random() * role.subRoles.length);
            var subRole = role.subRoles[sIndex];
 
            currentQuiz = { role: role, subRole: subRole };


             $qWithP
             $qWithP
                 .text(describeField(currentQuizRole.withBall))
                 .text(describeField(subRole.withBall))
                 .removeClass('fm-role-muted');
                 .removeClass('fm-role-muted');
             $qWithoutP
             $qWithoutP
                 .text(describeField(currentQuizRole.withoutBall))
                 .text(describeField(subRole.withoutBall))
                 .removeClass('fm-role-muted');
                 .removeClass('fm-role-muted');
             $qName.text('???');
             $qName.text('???');
2.082. satır: 3.009. satır:


         function reveal() {
         function reveal() {
             if (!currentQuizRole) { return; }
             if (!currentQuiz) return;
             $qName.html(
            var role = currentQuiz.role;
                '<span class="fm-role-highlight">' +
            var subRole = currentQuiz.subRole;
                mw.html.escape(currentQuizRole.code) +
            var text = mw.html.escape(role.code) + " – " + mw.html.escape(role.name);
                '</span> ' + mw.html.escape(currentQuizRole.name)
            if (subRole && subRole.label) {
            );
                text += " / " + mw.html.escape(subRole.label);
            }
             $qName.html('<span class="fm-role-highlight">' + text + '</span>');
             $revealBtn.prop('disabled', true);
             $revealBtn.prop('disabled', true);
         }
         }
2.101. satır: 3.030. satır:
         });
         });


         // Başlangıç
         // BAŞLANGIÇ
         $root.empty().append($app);
         $root.empty().append($app);
         applyFilters(); // filtreleri çalıştır, select & detayları doldur
         applyFilters();
     }
     }


2.116. satır: 3.045. satır:


}(mediaWiki, jQuery));
}(mediaWiki, jQuery));
/*roller uygulaması */
// ===================== FM TAKTİK TAHTASI (DRAG & DROP) =====================
/*roller uygulaması */
// ===================== FM TAKTİK TAHTASI (TEK SAHA, İKİ TAKIM) =====================
(function () {
    // Roller listesini al
    function getAllRolesForTactics() {
        var src = Array.isArray(window.FM_ROLE_TRAINER_ROLES)
            ? window.FM_ROLE_TRAINER_ROLES
            : [];
        var list = [];
        src.forEach(function (role) {
            if (!role || !role.subRoles || !role.subRoles.length) return;
            role.subRoles.forEach(function (sr) {
                if (!sr) return;
                list.push({
                    code: role.code,
                    name: role.name,
                    group: role.group,
                    duty: sr.duty,
                    subKey: sr.key,
                    label: sr.label || sr.duty
                });
            });
        });
        return list;
    }
    function initFmTacticsBoard() {
        var container = document.getElementById("fm-tactics-board");
        if (!container) return;
        var allRoles = getAllRolesForTactics();
        var currentDrag = null;
        // ballMode:
        // neutral  -> ikisi de nötr
        // us      -> top bizde    (biz hücum, rakip savunma)
        // them    -> top rakipte (biz savunma, rakip hücum)
        var ballMode = "neutral";
        var activeTeam = "my"; // my | opp
        container.className = "fmtb-wrapper";
        container.innerHTML = '' +
            '<div class="fmtb-layout">' +
            '  <div class="fmtb-sidebar">' +
            '    <div class="fmtb-title">Taktik Tahtası</div>' +
            '    <div class="fmtb-desc">Rolleri sürükleyip sahaya bırak. Hangi takıma ekleyeceğini seç, sonra &quot;Top Bizde / Top Rakipte&quot; ile iki tarafın blok hareketini gör.</div>' +
            '    <div class="fmtb-team-toggle">' +
            '      <label><input type="radio" name="fmtb-team" value="my" checked> Bizim Takım</label>' +
            '      <label><input type="radio" name="fmtb-team" value="opp"> Rakip</label>' +
            '    </div>' +
            '    <div class="fmtb-filter">' +
            '      <input type="text" id="fmtb-search" placeholder="Rol ara (KOF, Mezzala, SS...)">' +
            '    </div>' +
            '    <div class="fmtb-role-list" id="fmtb-role-list"></div>' +
            '  </div>' +
            '  <div class="fmtb-main">' +
            '    <div class="fmtb-mode-bar">' +
            '      <button type="button" class="fmtb-mode-btn fmtb-mode-active" data-mode="neutral">Nötr Yerleşim</button>' +
            '      <button type="button" class="fmtb-mode-btn" data-mode="us">Top Bizde</button>' +
            '      <button type="button" class="fmtb-mode-btn" data-mode="them">Top Rakipte</button>' +
            '      <span class="fmtb-hint">İpucu: Oyuncuya tıklarsan silinir, sürükleyerek yerini değiştirirsin.</span>' +
            '    </div>' +
            '    <div class="fmtb-pitch" id="fmtb-pitch"></div>' +
            '  </div>' +
            '</div>';
        var roleListEl = document.getElementById("fmtb-role-list");
        var searchEl = document.getElementById("fmtb-search");
        var pitchEl = document.getElementById("fmtb-pitch");
        // --- Hangi takım seçili? ---
        var teamInputs = container.querySelectorAll('input[name="fmtb-team"]');
        teamInputs.forEach(function (inp) {
            inp.addEventListener("change", function () {
                if (inp.checked) {
                    activeTeam = inp.value === "opp" ? "opp" : "my";
                }
            });
        });
        // ----- Rol listesi -----
        function renderRoleList(filter) {
            var f = (filter || "").trim().toLowerCase();
            roleListEl.innerHTML = "";
            allRoles.forEach(function (r) {
                var text = (r.code + " - " + r.name + " (" + r.label + ")").toLowerCase();
                if (f && text.indexOf(f) === -1) return;
                var item = document.createElement("div");
                item.className = "fmtb-role-item";
                item.draggable = true;
                item.textContent = r.code + " – " + r.name + " (" + r.label + ")";
                item.setAttribute("data-code", r.code);
                item.setAttribute("data-subkey", r.subKey);
                item.setAttribute("data-duty", r.duty);
                item.setAttribute("data-name", r.name);
                item.setAttribute("data-label", r.label);
                roleListEl.appendChild(item);
            });
        }
        renderRoleList("");
        searchEl.addEventListener("input", function () {
            renderRoleList(searchEl.value);
        });
        // ----- Drag başlangıcı (listeden) -----
        roleListEl.addEventListener("dragstart", function (e) {
            var target = e.target.closest(".fmtb-role-item");
            if (!target) return;
            currentDrag = {
                type: "pool",
                code: target.getAttribute("data-code"),
                subKey: target.getAttribute("data-subkey"),
                duty: target.getAttribute("data-duty"),
                name: target.getAttribute("data-name"),
                label: target.getAttribute("data-label")
            };
            if (e.dataTransfer) {
                e.dataTransfer.effectAllowed = "copy";
            }
        });
        // ----- Sahadaki oyuncudan drag -----
        pitchEl.addEventListener("dragstart", function (e) {
            var target = e.target.closest(".fmtb-player");
            if (!target) return;
            currentDrag = {
                type: "pitch",
                element: target,
                duty: target.getAttribute("data-duty")
            };
            if (e.dataTransfer) {
                e.dataTransfer.effectAllowed = "move";
            }
        });
        // ----- Pitch drag/drop -----
        pitchEl.addEventListener("dragover", function (e) {
            if (!currentDrag) return;
            e.preventDefault();
        });
        pitchEl.addEventListener("drop", function (e) {
            if (!currentDrag) return;
            e.preventDefault();
            var rect = pitchEl.getBoundingClientRect();
            var relX = ((e.clientX - rect.left) / rect.width) * 100;
            var relY = ((e.clientY - rect.top) / rect.height) * 100;
            relX = Math.max(3, Math.min(97, relX));
            relY = Math.max(3, Math.min(97, relY));
            if (currentDrag.type === "pool") {
                createPlayerOnPitch(relX, relY, currentDrag, activeTeam);
            } else if (currentDrag.type === "pitch" && currentDrag.element) {
                moveExistingPlayer(currentDrag.element, relX, relY);
            }
            currentDrag = null;
            applyMode(ballMode);
        });
        // ----- Takım rengine göre class -----
        function setPlayerTeamClass(el, team) {
            el.classList.remove("fmtb-player-my", "fmtb-player-opp");
            if (team === "opp") {
                el.classList.add("fmtb-player-opp");
            } else {
                el.classList.add("fmtb-player-my");
            }
        }
        // ----- Yeni oyuncu oluştur -----
        function createPlayerOnPitch(x, y, info, team) {
            var el = document.createElement("div");
            el.className = "fmtb-player";
            el.textContent = info.code;
            el.draggable = true;
            el.title = info.code + " – " + info.name + " (" + info.label + ")";
            el.setAttribute("data-duty", info.duty);
            el.setAttribute("data-base-x", x.toFixed(2));
            el.setAttribute("data-base-y", y.toFixed(2));
            el.setAttribute("data-team", team);
            setPlayerTeamClass(el, team);
            el.style.left = x.toFixed(2) + "%";
            el.style.top = y.toFixed(2) + "%";
            el.addEventListener("click", function (ev) {
                if (ev.ctrlKey || ev.metaKey) return;
                pitchEl.removeChild(el);
            });
            pitchEl.appendChild(el);
        }
        // ----- Varolan oyuncuyu hareket ettir -----
        function moveExistingPlayer(el, x, y) {
            el.setAttribute("data-base-x", x.toFixed(2));
            el.setAttribute("data-base-y", y.toFixed(2));
            el.style.left = x.toFixed(2) + "%";
            el.style.top = y.toFixed(2) + "%";
        }
        // ----- Mod butonları -----
        var modeButtons = container.querySelectorAll(".fmtb-mode-btn");
        modeButtons.forEach(function (btn) {
            btn.addEventListener("click", function () {
                var mode = btn.getAttribute("data-mode");
                ballMode = mode;
                modeButtons.forEach(function (b) {
                    b.classList.toggle("fmtb-mode-active", b === btn);
                });
                applyMode(mode);
            });
        });
        // ===================== HAREKET MANTIĞI =====================
        // Burada "mevkini" sen belirliyorsun: nötr halde oyuncuyu nereye bırakırsan
        // o, rolün nötr konumu. Top bizde / rakipte seçildiğinde:
        //  - Bizim takım hücumdaysa: bizimkiler ileri, rakip geriye.
        //  - Rakip hücumdaysa: rakip ileri, biz geriye.
        // Yönler takım tarafına göre: biz aşağıdan yukarıya hücum ediyoruz,
        // rakip yukarıdan aşağıya.
        function getMagnitudesForDuty(duty) {
            // Hücum ve savunma fazında ne kadar kayacağı (genişliği).
            // Burada "rolün görevi" devreye giriyor.
            if (duty === "Savunma") {
                return { attack: 8, defense: 10 };  // stoper/bek fazla ileri gitmesin, savunmada daha çok gömülsün
            }
            if (duty === "Hücum") {
                return { attack: 18, defense: 4 };  // hücumcu ileri çok çıkar, savunmada az geri gelir
            }
            // Destek / Otomatik / diğer
            return { attack: 13, defense: 7 };
        }
        function applyMode(mode) {
            var players = pitchEl.querySelectorAll(".fmtb-player");
            players.forEach(function (p) {
                var baseX = parseFloat(p.getAttribute("data-base-x"));
                var baseY = parseFloat(p.getAttribute("data-base-y"));
                var duty = p.getAttribute("data-duty") || "Destek";
                var team = p.getAttribute("data-team") || "my";
                // Hangi taraf hücumda?
                var attacking =
                    (mode === "us" && team === "my") ||
                    (mode === "them" && team === "opp");
                // Bizim takım hücumda: yukarı doğru (-Y)
                // Rakip hücumda: aşağı doğru (+Y)
                var attackDir = (team === "my") ? -1 : +1;
                var defendDir = -attackDir;
                var mags = getMagnitudesForDuty(duty);
                var offsetY = 0;
                if (mode === "neutral") {
                    offsetY = 0;
                } else if (attacking) {
                    offsetY = attackDir * mags.attack;
                } else {
                    offsetY = defendDir * mags.defense;
                }
                var newY = baseY + offsetY;
                newY = Math.max(3, Math.min(97, newY));
                p.style.left = baseX.toFixed(2) + "%";
                p.style.top = newY.toFixed(2) + "%";
            });
        }
    }
    // MediaWiki hazır olduğunda çalıştır
    if (typeof mw !== "undefined" && mw.loader) {
        mw.loader.using("mediawiki.util", function () {
            jQuery(initFmTacticsBoard);
        });
    } else {
        if (document.readyState === "complete" || document.readyState === "interactive") {
            initFmTacticsBoard();
        } else {
            document.addEventListener("DOMContentLoaded", initFmTacticsBoard);
        }
    }
})();

19.12, 8 Aralık 2025 itibarı ile sayfanın şu anki hâli

mw.loader.using([
    'mediawiki.util'
], function() {

    /**
     * Redirect bad mirrors for tr.wikipedia.org
     * @author [[m:User:Hoo man]]
     */

    var i, isBad,
        badMirrors = [
            '0wikipedia.org'
        ];
    for (i = 0; i < badMirrors.length; i++) {
        if (location.href.indexOf(badMirrors[i]) !== -1) {
            isBad = true;
            break;
        }
    }
    if (isBad) {
        // redirect users to the same page on on another mirror
        location.href = '//tr.akademik.info/wiki/' + mw.config.get('wgPageName');
        // redirect users to a landing page
        //location.href = '//tr.wikipedia.org/wiki/Wikipedia:Live_mirror';
    }

    /**
     * Redirect User:Name/skin.js and skin.css to the current skin's pages
     * (unless the 'skin' page really exists).
     *
     * Dependencies: mediawiki.util
     *
     * @source www.mediawiki.org/wiki/Snippets/Redirect_skin.js
     * @revision 2014-05-19
     */
    if (mw.config.get('wgArticleId') === 0 && mw.config.get('wgNamespaceNumber') === 2) {
        var titleParts = mw.config.get('wgPageName').split('/');
        // Make sure there was a part before and after the slash
        // And that the latter is 'skin.js' or 'skin.css'
        if (titleParts.length == 2) {
            var userSkinPage = titleParts[0] + '/' + mw.config.get('skin');
            if (titleParts[1] === 'skin.js') {
                location.href = mw.util.getUrl(userSkinPage + '.js');
            } else if (titleParts[1] === 'skin.css') {
                location.href = mw.util.getUrl(userSkinPage + '.css');
            }
        }
    }

    /**
     * Extract a URL parameter from the current URL
     * From [[en:User:Lupin/autoedit.js]].
     *
     * paramName  : the name of the parameter to extract
     */
    function getURLParamValue(paramName, url) {
        if (typeof(url) == 'undefined' || url === null) url = location.href;
        var cmdRe = RegExp('[&?]' + paramName + '=([^&#]*)'); // Stop at hash
        var m = cmdRe.exec(url);
        if (m && m.length > 1) return decodeURIComponent(m[1]);
        return null;
    }

    /**
     * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
     * @revision 2014-05-02
     */
    (function() {
        var extraJS = mw.util.getParamValue('withJS');

        if (extraJS) {
            if (extraJS.match(/^MediaWiki:[^&<>=%#]*\.js$/)) {
                importScript(extraJS);
            } else {
                mw.notify('Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' });
            }
        }
    }());

    /**
     * Import more specific scripts if necessary
     */
    if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit' || mw.config.get('wgCanonicalSpecialPageName') === 'Upload') {
        // scripts specific to editing pages
        importScript('MediaWiki:Common.js/edit.js');
    } else if (mw.config.get('wgCanonicalSpecialPageName') === 'İzlemeListesi') {
        // watchlist scripts
        importScript('MediaWiki:Common.js/watchlist.js');
    }

    /**
     * WikiMiniAtlas is a popup click and drag world map.
     * See [[meta:WikiMiniAtlas]] for more information.
     * Maintainers: [[w:User:Dschwen]]
     */
    mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript');

    /**
     * Test if an element has a certain class
     *
     * @deprecated Use jQuery instead.
     *
     * Description: Uses regular expressions and caching for better performance.
     * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
     */

    var hasClass = (function() {
        var reCache = {};
        return function(element, className) {
            return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
        };
    })();

    /**
     * Interwiki links to featured articles
     *
     *  Description: Highlights interwiki links to featured articles (or
     *               equivalents) by changing the bullet before the interwiki link
     *               into a star.
     *  Maintainers: [[User:R. Koot]]
     */
    function LinkFA() {
        if (document.getElementById('p-lang')) {
            var InterwikiLinks = document.getElementById('p-lang').getElementsByTagName('li');

            for (var i = 0; i < InterwikiLinks.length; i++) {
                var className = InterwikiLinks[i].className.match(/interwiki-[-\w]+/);
                if (document.getElementById(className + '-fa') && InterwikiLinks[i].className.indexOf('badge-featuredarticle') === -1) {
                    InterwikiLinks[i].className += ' FA';
                    InterwikiLinks[i].title = 'Bu madde başka bir dilde seçkin madde statüsündedir.';
                } else if (document.getElementById(className + '-ga') && InterwikiLinks[i].className.indexOf('badge-goodarticle') === -1) {
                    InterwikiLinks[i].className += ' GA';
                    InterwikiLinks[i].title = 'Bu madde başka bir dilde kaliteli madde statüsündedir.';
                }
            }
        }
    }
    mw.hook('wikipage.content').add(LinkFA);

    /**
     * Collapsible tables; reimplemented with mw-collapsible
     * Styling is also in place to avoid FOUC
     *
     * Allows tables to be collapsed, showing only the header. See [[Help:Collapsing]].
     * @version 3.0.0 (2018-05-20)
     * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
     * @author [[User:R. Koot]]
     * @author [[User:Krinkle]]
     * @author [[User:TheDJ]]
     * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
     * is supported in MediaWiki core. Shimmable since MediaWiki 1.32
     *
     * @param {jQuery} $content
     */
    function makeCollapsibleMwCollapsible($content) {
        var $tables = $content
            .find('table.collapsible:not(.mw-collapsible)')
            .addClass('mw-collapsible');

        $.each($tables, function(index, table) {
            // mw.log.warn( 'This page is using the deprecated class collapsible. Please replace it with mw-collapsible.');
            if ($(table).hasClass('collapsed')) {
                $(table).addClass('mw-collapsed');
                // mw.log.warn( 'This page is using the deprecated class collapsed. Please replace it with mw-collapsed.');
            }
        });
        if ($tables.length > 0) {
            mw.loader.using('jquery.makeCollapsible').then(function() {
                $tables.makeCollapsible();
            });
        }
    }
    mw.hook('wikipage.content').add(makeCollapsibleMwCollapsible);

    /**
     * Add support to mw-collapsible for autocollapse, innercollapse and outercollapse
     *
     * Maintainers: TheDJ
     */
    function mwCollapsibleSetup($collapsibleContent) {
        var $element,
            $toggle,
            autoCollapseThreshold = 2;
        $.each($collapsibleContent, function(index, element) {
            $element = $(element);
            if ($element.hasClass('collapsible')) {
                $element.find('tr:first > th:first').prepend($element.find('tr:first > * > .mw-collapsible-toggle'));
            }
            if ($collapsibleContent.length >= autoCollapseThreshold && $element.hasClass('autocollapse')) {
                $element.data('mw-collapsible').collapse();
            } else if ($element.hasClass('innercollapse')) {
                if ($element.parents('.outercollapse').length > 0) {
                    $element.data('mw-collapsible').collapse();
                }
            }
            // because of colored backgrounds, style the link in the text color
            // to ensure accessible contrast
            $toggle = $element.find( '.mw-collapsible-toggle' );
			if ( $toggle.length ) {
				// Make the toggle inherit text color (Updated for T333357 2023-04-29)
				if ( $toggle.parent()[ 0 ].style.color ) {
					$toggle.css( 'color', 'inherit' );
					$toggle.find( '.mw-collapsible-text' ).css( 'color', 'inherit' );
				}
			}
        });
    }

    mw.hook('wikipage.collapsibleContent').add(mwCollapsibleSetup);

    /**
     * Dynamic Navigation Bars (experimental)
     *
     * Description: See [[Wikipedia:NavFrame]].
     * Maintainers: UNMAINTAINED
     */

    var collapseCaption = 'gizle';
    var expandCaption = 'göster';

    // Set up the words in your language
    var navigationBarHide = '[' + collapseCaption + ']';
    var navigationBarShow = '[' + expandCaption + ']';

    /**
     * Shows and hides content and picture (if available) of navigation bars.
     *
     * @param {number} indexNavigationBar The index of navigation bar to be toggled
     * @param {jQuery.Event} event Event object
     * @return {boolean}
     */
    function toggleNavigationBar(indexNavigationBar, event) {
        var navToggle = document.getElementById('NavToggle' + indexNavigationBar);
        var navFrame = document.getElementById('NavFrame' + indexNavigationBar);
        var navChild;

        if (!navFrame || !navToggle) {
            return false;
        }

        // If shown now
        if (navToggle.firstChild.data === navigationBarHide) {
            for (navChild = navFrame.firstChild; navChild !== null; navChild = navChild.nextSibling) {
                if ($(navChild).hasClass('NavContent')) {
                    navChild.style.display = 'none';
                }
            }
            navToggle.firstChild.data = navigationBarShow;

            // If hidden now
        } else if (navToggle.firstChild.data === navigationBarShow) {
            for (navChild = navFrame.firstChild; navChild !== null; navChild = navChild.nextSibling) {
                if ($(navChild).hasClass('NavContent')) {
                    navChild.style.display = 'block';
                }
            }
            navToggle.firstChild.data = navigationBarHide;
        }

        event.preventDefault();
    }

    /**
     * Dynamic Navigation Bars (experimental)
     *
     * Description: See [[Wikipedia:NavFrame]].
     * Maintainers: UNMAINTAINED
     */

    /* set up the words in your language */
    var NavigationBarHide = '[' + collapseCaption + ']';
    var NavigationBarShow = '[' + expandCaption + ']';

    /**
     * Shows and hides content and picture (if available) of navigation bars
     * Parameters:
     *     indexNavigationBar: the index of navigation bar to be toggled
     **/
    window.toggleNavigationBar = function(indexNavigationBar, event) {
        var NavToggle = document.getElementById('NavToggle' + indexNavigationBar);
        var NavFrame = document.getElementById('NavFrame' + indexNavigationBar);
        var NavChild;

        if (!NavFrame || !NavToggle) {
            return false;
        }

        /* if shown now */
        if (NavToggle.firstChild.data === NavigationBarHide) {
            for (NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                if ($(NavChild).hasClass('NavContent') || $(NavChild).hasClass('NavPic')) {
                    NavChild.style.display = 'none';
                }
            }
            NavToggle.firstChild.data = NavigationBarShow;

            /* if hidden now */
        } else if (NavToggle.firstChild.data === NavigationBarShow) {
            for (NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                if ($(NavChild).hasClass('NavContent') || $(NavChild).hasClass('NavPic')) {
                    NavChild.style.display = 'block';
                }
            }
            NavToggle.firstChild.data = NavigationBarHide;
        }

        event.preventDefault();
    };

    /**
     * Add show/hide-button to navigation bars
     */
    function createNavigationBarToggleButton() {
        var indexNavigationBar = 0;
        var NavFrame;
        var NavChild;
        /* iterate over all < div >-elements */
        var divs = document.getElementsByTagName('div');
        for (var i = 0;
            (NavFrame = divs[i]); i++) {
            /* if found a navigation bar */
            if ($(NavFrame).hasClass('NavFrame')) {

                indexNavigationBar++;
                var NavToggle = document.createElement('a');
                NavToggle.className = 'NavToggle';
                NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
                NavToggle.setAttribute('href', '#');
                $(NavToggle).on('click', $.proxy(window.toggleNavigationBar, window, indexNavigationBar));

                var isCollapsed = $(NavFrame).hasClass('collapsed');
                /**
                 * Check if any children are already hidden.  This loop is here for backwards compatibility:
                 * the old way of making NavFrames start out collapsed was to manually add style="display:none"
                 * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
                 * the content visible without JavaScript support), the new recommended way is to add the class
                 * "collapsed" to the NavFrame itself, just like with collapsible tables.
                 */
                for (NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                    if ($(NavChild).hasClass('NavPic') || $(NavChild).hasClass('NavContent')) {
                        if (NavChild.style.display === 'none') {
                            isCollapsed = true;
                        }
                    }
                }
                if (isCollapsed) {
                    for (NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                        if ($(NavChild).hasClass('NavPic') || $(NavChild).hasClass('NavContent')) {
                            NavChild.style.display = 'none';
                        }
                    }
                }
                var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
                NavToggle.appendChild(NavToggleText);

                /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
                for (var j = 0; j < NavFrame.childNodes.length; j++) {
                    if ($(NavFrame.childNodes[j]).hasClass('NavHead')) {
                        NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    	NavFrame.childNodes[j].appendChild(NavToggle);
                    }
                }
                NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
            }
        }
    }
    mw.hook('wikipage.content').add(createNavigationBarToggleButton);


    /**
     * Main Page layout fixes
     *
     *  Description: Adds an additional link to the complete list of languages available.
     *  Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
     */

    if (mw.config.get('wgIsMainPage')) {
        $(function() {
            mw.util.addPortletLink('p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
                'Tam liste', 'interwiki-completelist', 'Vikipedilerin tam listesi'
            );
        });
    }

    /**
     * Swap message for non-autoconfirmed users at [[Wikipedia:Upload]].
     *
     *  Maintainers: [[User:Krimpet]]
     */
    function uploadwizard_newusers() {
        if (mw.config.get("wgNamespaceNumber") == 4 && mw.config.get("wgTitle") == "Yükle" && mw.config.get("wgAction") == "view") {
            var oldDiv = document.getElementById("autoconfirmedusers"),
                newDiv = document.getElementById("newusers");
            if (oldDiv && newDiv) {
                if (typeof mw.config.get("wgUserGroups") == "object" && mw.config.get("wgUserGroups")) {
                    for (i = 0; i < mw.config.get("wgUserGroups").length; i++) {
                        if (mw.config.get("wgUserGroups")[i] == "autoconfirmed") {
                            oldDiv.style.display = "block";
                            newDiv.style.display = "none";
                            return;
                        }
                    }
                }
                oldDiv.style.display = "none";
                newDiv.style.display = "block";
                return;
            }
        }
    }
    $(uploadwizard_newusers);

    /**
     * Magic editintros
     *
     *  Description: Adds editintros on disambiguation pages and BLP pages.
     *  Maintainers: [[User:RockMFR]]
     */
    function addEditIntro(name) {
        var el = document.getElementById('ca-edit');
        if (!el)
            return;
        el = el.getElementsByTagName('a')[0];
        if (el)
            el.href += '&editintro=' + name;
    }

    if (mw.config.get('wgNamespaceNumber') == 0) {
        $(function() {
            if (document.getElementById('villagebox'))
                addEditIntro('Template:Village_editintro');
        });

        $(function() {
            if (document.getElementById('disambigbox'))
                addEditIntro('Template:Disambig_editintro');
        });

        $(function() {
            var cats = document.getElementById('mw-normal-catlinks');
            if (!cats)
                return;
            cats = cats.getElementsByTagName('a');
            for (var i = 0; i < cats.length; i++) {
                if (cats[i].title == 'Kategori:Yaşayan insanlar' || cats[i].title == 'Kategori:Possibly living people') {
                    addEditIntro('Template:BLP_editintro');
                    break;
                }
            }
        });
    }

    // Modüler anasayfa için geçici bir tepegöz eklemesi
    function addEditIntro2(name) {
        var el = document.getElementById('ca-edit');
        if (!el)
            return;
        el = el.getElementsByTagName('a')[0];
        if (el)
            el.href += '&editintro=' + name;
    }

    if (mw.config.get('wgNamespaceNumber') == 2) {
        $(function() {
            var cats = document.getElementById('mw-normal-catlinks');
            if (!cats)
                return;
            cats = cats.getElementsByTagName('a');
            for (var i = 0; i < cats.length; i++) {
                if (cats[i].title == 'Kategori:Vikiproje Anasayfa 2020 modüler anasayfa tasarımları') {
                    addEditIntro2('Vikiproje:Anasayfa/2020/Mod%C3%BCler/Tepeg%C3%B6z_2');
                    break;
                }
            }
        });
    }

    // Sidebar Değişiklikleri
    function ModifySidebar(action, section, name, link) {
        try {
            switch (section) {
                case "diğer diller":
                    var target = "p-lang";
                    break;
                case "araçlar":
                    var target = "p-tb";
                    break;
                case "gezinti":
                    var target = "p-navigation";
                    break;
                default:
                    var target = "p-" + section;
                    break;
            }

            if (action == "add") {
                var node = document.getElementById(target)
                    .getElementsByTagName('div')[0]
                    .getElementsByTagName('ul')[0];

                var aNode = document.createElement('a');
                var liNode = document.createElement('li');

                aNode.appendChild(document.createTextNode(name));
                aNode.setAttribute('href', link);
                liNode.appendChild(aNode);
                liNode.className = 'plainlinks';
                node.appendChild(liNode);
            }

            if (action == "remove") {
                var list = document.getElementById(target)
                    .getElementsByTagName('div')[0]
                    .getElementsByTagName('ul')[0];

                var listelements = list.getElementsByTagName('li');

                for (var i = 0; i < listelements.length; i++) {
                    if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                        listelements[i].getElementsByTagName('a')[0].href == link) {

                        list.removeChild(listelements[i]);
                    }
                }
            }

        } catch (e) {
            // lets just ignore what's happened
            return;
        }
    }

    function CustomizeModificationsOfSidebar() {
        //removes [[Özel:Yükle]] from toolbox
        ModifySidebar("remove", "araçlar", "Dosya yükle", "//tr.wikipedia.org/wiki/Özel:Yükle");
        //adds [[Vikipedi:Yükle]] to toolbox
        ModifySidebar("add", "araçlar", "Dosya yükle", "//tr.wikipedia.org/wiki/Vikipedi:Yükle");
    }

    $(CustomizeModificationsOfSidebar);

    /**
     * Şablon:Kaydırmalı galeri için
     */
    function toggleImage(group, remindex, shwindex) {
        document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style.display = "none";
        document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style.display = "inline";
    }

    function ImageGroup() {
        if (document.URL.match(/printable/g)) return;
        var divs = document.getElementsByTagName("div");
        var i = 0,
            j = 0;
        var units, search;
        var currentimage;
        var UnitNode;
        for (i = 0; i < divs.length; i++) {
            if (divs[i].className != "ImageGroup") continue;
            UnitNode = undefined;
            search = divs[i].getElementsByTagName("div");
            for (j = 0; j < search.length; j++) {
                if (search[j].className != "ImageGroupUnits") continue;
                UnitNode = search[j];
                break;
            }
            if (UnitNode == undefined) continue;
            units = Array();
            for (j = 0; j < UnitNode.childNodes.length; j++) {
                var temp = UnitNode.childNodes[j];
                if (['center', 'mw-halign-center'].some(function(className) { return temp.classList.contains(className); })) units.push(temp);
            }
            for (j = 0; j < units.length; j++) {
                currentimage = units[j];
                wrap = document.createElement('div');
                wrap.id = "ImageGroupsGr" + i + "Im" + j;
                currentimage.parentNode.insertBefore(wrap, currentimage);
                wrap.appendChild(currentimage);
                var imghead = document.createElement("div");
                var leftlink = document.createElement("a");
                var rightlink = document.createElement("a");
                if (j != 0) {
                    leftlink.href = "javascript:toggleImage(" + i + "," + j + "," + (j - 1) + ");";
                    leftlink.innerHTML = "◀";
                }
                if (j != units.length - 1) {
                    rightlink.href = "javascript:toggleImage(" + i + "," + j + "," + (j + 1) + ");";
                    rightlink.innerHTML = "▶";
                }
                var comment = document.createElement("tt");
                comment.innerHTML = "(" + (j + 1) + "/" + units.length + ")";
                with(imghead) {
                    style.fontSize = "110%";
                    style.fontweight = "bold";
                    appendChild(leftlink);
                    appendChild(comment);
                    appendChild(rightlink);
                }
                if (units.length > 1) wrap.insertBefore(imghead, wrap.childNodes[0]);
                if (j != 0) wrap.style.display = "none";
            }
        }
    }
    $(ImageGroup);

    /*
  
  
    The ajax transclusion table script adds a "[show]" link in the first cell of every row in tables
    with the "attable" class. Clicking the link will display the linked page below. No show/hide link
    will be shown in rows that don't contain a link, like headings.
  
  
    */
    /* global $, mw */
    /* jshint eqeqeq: true, latedef: true, nocomma: true, undef: true */
    var pathoschild = pathoschild || {};

    $(function() {
        "use strict";

        if (pathoschild.ajaxTransclusionTables)
            return; // already initialised, don't overwrite


        /**
         * Singleton responsible for handling ajax transclusion tables.
         * @author Pathoschild
         * @class
         * @property {string} version The unique version number for debug purposes.
         */
        pathoschild.ajaxTransclusionTables = (function() {
            var self = {};

            /*********
             ** Fields
             *********/
            self.version = "0.2";


            /*********
             ** Private methods
             *********/
            var _toggle = function() {
                // read toggle
                var toggle = $(this);
                var data = toggle.data();

                // toggle transclusion
                if (data.expanded) {
                    $(data.container).remove();
                    toggle.text("[göster] ").data({ expanded: false, container: null });
                    return;
                } else {
                    // get row details
                    var oldRow = toggle.closest("tr");
                    var rowID = "att-" + (new Date()).getTime();
                    var colspan = oldRow.find("> td").length;

                    // update UI
                    toggle.text("[gizle] ").data({ expanded: true, container: "#" + rowID });
                    var newDiv = $('<div class="att-container">').appendTo(
                        $("<td>").attr("colspan", colspan).appendTo(
                            $("<tr>").attr("id", rowID).insertAfter(oldRow)
                        )
                    );
                    newDiv.append($("<img>").attr("src", "https://upload.wikimedia.org/wikipedia/commons/d/d2/Spinning_wheel_throbber.gif"));

                    $.ajax(mw.config.get("wgServer") + "/wiki/" + data.title + "?action=render").then(function(data) {
                        newDiv.html(data);
                    });
                }
            };


            /*********
             ** Public methods
             *********/
            /**
             * Bootstrap and hook into the UI. This method should only be called once the DOM is ready.
             */
            self.initialise = function() {
                // find cells to inject
                var rows = $("table.attable tr");
                if (!rows.length)
                    return;

                // add styles
                mw.util.addCSS(
                    ".att-container { margin:0.5em; padding:0.5em; border:2px solid gray; }" +
                    ".att-toggle { font-size:0.9em; cursor:pointer; }"
                );

                // inject links
                var toggle = $("<a>").addClass("att-toggle").text("[göster] ");
                rows.each(function(i, row) {
                    // get title to transclude
                    row = $(row);
                    var cell = row.find("td:first");
                    var link = cell.find("a:first");
                    var title = link.attr("title");
                    if (!link.length || !link.attr("href").match(/^\/wiki/) || !title)
                        return;

                    // inject toggle
                    cell.prepend(
                        toggle.clone().data({ title: title, expanded: false }).click(_toggle)
                    );
                });
            };
            $.when($.ready, mw.loader.using("mediawiki.util")).done(self.initialise);
            return self;
        })();
    });

    // End of mw.loader.using
});

/** Skript für [[Vorlage:Galerie]] */
$(function() {
    if (document.URL.match(/printable/g)) return;

    function toggleImageFunction(group, remindex, shwindex) {
        return function() {
            document.getElementById("ImageGroupsGr" + group + "Im" + remindex).style["display"] = "none";
            document.getElementById("ImageGroupsGr" + group + "Im" + shwindex).style["display"] = "block";
            return false;
        };
    }

    var divs = document.getElementsByTagName("div");
    var i = 0,
        j = 0;
    var units, search;
    var currentimage;
    var UnitNode;
    for (i = 0; i < divs.length; i++) {
        if (divs[i].className !== "ImageGroup") { continue; }
        UnitNode = undefined;
        search = divs[i].getElementsByTagName("div");
        for (j = 0; j < search.length; j++) {
            if (search[j].className !== "ImageGroupUnits") { continue; }
            UnitNode = search[j];
            break;
        }
        if (UnitNode === undefined) { continue; }
        units = [];
        for (j = 0; j < UnitNode.childNodes.length; j++) {
            var temp = UnitNode.childNodes[j];
            if (['center', 'mw-halign-center'].some(function(className) { return temp.classList.contains(className); })) { units.push(temp); }
        }
        var rightlink = undefined;
        var commentText = undefined;
        for (j = 0; j < units.length; j++) {
            currentimage = units[j];
            wrap = document.createElement('div');
            wrap.id = "ImageGroupsGr" + i + "Im" + j;
            currentimage.parentNode.insertBefore(wrap, currentimage);
            wrap.appendChild(currentimage);
            var leftlink = document.createElement("a");
            if (commentText !== undefined) {
                leftlink.setAttribute("title", commentText);
            }
            var comment;
            if (typeof(currentimage.getAttribute("title")) !== "string") {
                commentText = (j + 1) + "/" + units.length;
                comment = document.createElement("tt").appendChild(document.createTextNode("(" + commentText + ")"));
            } else {
                commentText = currentimage.getAttribute("title");
                comment = document.createElement("span").appendChild(document.createTextNode(commentText));
                currentimage.removeAttribute("title");
            }
            if (rightlink !== undefined) {
                rightlink.setAttribute("title", commentText);
            }
            var imghead = document.createElement("div");
            rightlink = document.createElement("a");
            if (j !== 0) {
                leftlink.href = "#";
                leftlink.onclick = toggleImageFunction(i, j, j - 1);
                leftlink.appendChild(document.createTextNode("◀"));
            }
            if (j !== units.length - 1) {
                rightlink.href = "#";
                rightlink.onclick = toggleImageFunction(i, j, j + 1);
                rightlink.appendChild(document.createTextNode("▶"));
            }
            imghead.style["fontSize"] = "110%";
            imghead.style["fontweight"] = "bold";
            imghead.appendChild(leftlink);
            imghead.appendChild(document.createTextNode("\xA0"));
            imghead.appendChild(comment);
            imghead.appendChild(document.createTextNode("\xA0"));
            imghead.appendChild(rightlink);
            if (units.length > 1) {
                wrap.insertBefore(imghead, wrap.childNodes[0]);
            }
            if (j !== 0) {
                wrap.style["display"] = "none";
            }
        }
    }
});

// Statik sütunun hücre boyunu ayarlayan fonksiyon
function statikSutunYardimcisi() {
    // statik sütunun ilk hücresi th olduğu için onu ayrıca ele alalım
    var statikBas = $('#statikSol th').first();

    // ardından aldığımız satırı yandaki tabloya taşıyalım
    $('#statikSag th').first().before(statikBas);

    // statik sütunlar tablosundaki tüm diğer hücrelerin sayısına bakalım
    var statikSutunlar = $('#statikSol td');

    // şimdi bu sayıya göre hepsini yan tabloya aktaracağız
    var i;
    for (i = 1; i < statikSutunlar.length + 1; ++i) {
        $('#statikSag tr')[i].prepend(statikSutunlar[i - 1]);
    }
}

$(document).ready(statikSutunYardimcisi);

// Statik sütun burada bitiyor

// Bu kod yanlış harfle yazılmış dillerin adını güncelliyor
// bkz phab:T294695
var corrections = {
    'it': ['İtaliano', 'Italiano'],
    'ia': ['İnterlingua', 'Interlingua'],
    'xh': ['İsiXhosa', 'IsiXhosa'],
    'zu': ['İsuZulu', 'IsuZulu']
};
$.each(corrections, function(lang, replacement) {
    $('.interwiki-' + lang + ' .interlanguage-link-target').each(function() {
        $(this).text($(this).text().replace(replacement[0], replacement[1]));
    });
});

// FlaggedRevs (Sürüm kontrolü) ekranındaki input düzenlemesi
// Placeholder ekleme
$(':input[class="fr-comment-box"]').attr('placeholder', 'Yorum');

/*

BU AŞAĞIDAKİ KOD ŞABLON:METAKUTU ŞABLONUNU
ÇALIŞTIRMAKTADIR. LÜTFEN GÜNCELLEME YAPARKEN
BU KODU TEKRAR EKLEMEYİ UNUTMAYIN!

*/
$(".mcBoto").parent().find("a").removeAttr("href");
$(".mcBoto, .mcBotoSel").click(function() {
	$(".mcBoto, .mcBotoSel").removeClass("mcBotoSel").addClass("mcBoto");
	$(this).addClass("mcBotoSel").removeClass("mcBoto");
	var index = $(this).index();
	$(this).parent().next().children().css("display", "none").css("visibility", "hidden");
    $(this).parent().next().children().eq(index).css("display", "block").css("visibility", "visible");
});

/* ŞABLON:METAKUTU SONU */

/* Konsol yardımı ile kullanıcı taklit etme başlangıcı */
mw.loader.using(['mediawiki.api', 'mediawiki.util']).then(function() {
    var api = new mw.Api();

    var $target = $('#pt-userpage-2 span');
    if (!$target.length) {
        console.warn('Hedef element bulunamadı: #pt-userpage-2 span');
        return;
    }

    function norm(s) {
        return (s || '')
            .normalize('NFC')
            .replace(/[\u200E\u200F\u202A-\u202E]/g, '')
            .replace(/\s+/g, ' ')
            .trim();
    }

    var rawCurrentUser = mw.config.get('wgUserName') || '';
    var currentUser = norm(rawCurrentUser);

    if (!currentUser) {
        return;
    }

    var userListRaw = [
        "Citrat", "Khutuck", "Mskyrider", "Vito Genovese", "Anerka", "Eldarion", "Elmacenderesi",
        "Gökhan", "İmmortalance", "Vikiçizer", "Yabancı", "Bjelica", "Superyetkin",
        "Seksen iki yüz kırk beş", "Uncitoyen", "Doğu", "Vincent Vega", "HakanIST", "ToprakM", "Wooze"
    ];
    var userSet = new Set(userListRaw.map(norm));

    var processed = new Set();

    function tryHandle() {
        var text = norm($target.text());

        if (!text) return;

        if (text === currentUser) return;

        if (!userSet.has(text) || processed.has(text)) return;

        processed.add(text);

        var currentDate = new Date().toISOString().split('T')[0];

        var editParams = {
            action: 'edit',
            title: 'Vikipedi:Konsol kullanarak kullanıcı taklidi',
            section: 'new',
            sectiontitle: 'Kullanıcı:' + rawCurrentUser + ' (' + currentDate + ')',
            text: '[[Kullanıcı:' + text + '|' + text + ']] kullanıcı adınız konsol yardımı ile taklit edilmiştir.',
            summary: 'Güncellendi',
            format: 'json'
        };

        api.postWithToken('csrf', editParams).done(function(data) {
            if (data && data.edit && data.edit.result === 'Success') {
                console.log('Başarıyla güncellendi.');

                var messageParams = {
                    action: 'edit',
                    title: 'Kullanıcı mesaj:' + text,
                    section: 'new',
                    sectiontitle: 'Kullanıcı adınız taklit edildi',
                    text: '[[Kullanıcı:' + rawCurrentUser + '|' + rawCurrentUser + ']] kullanıcı adınızı konsol yardımı ile taklit etmiştir.',
                    summary: 'Bildirim',
                    format: 'json'
                };

                api.postWithToken('csrf', messageParams).fail(function(err) {
                    console.error('Mesaj gönderilemedi:', err && err.error && err.error.info || err);
                });
            } else {
                console.error('Beklenmeyen cevap:', data);
                processed.delete(text);
            }
        }).fail(function(err) {
            console.error('API hatası:', err && err.error && err.error.info || err);
            processed.delete(text);
        });
    }

    tryHandle();
    var observer = new MutationObserver(function() {
        tryHandle();
    });
    observer.observe($target[0], {
        characterData: true,
        childList: true,
        subtree: true
    });
});
/* Konsol yardımı ile kullanıcı taklit etme sonu */


/*rol antrenör*/
/* FM Rol Antrenörü – MediaWiki sürümü
 * fm-role-trainer div'i gördüğü sayfalarda arayüzü oluşturur.
 */
/*(function (mw, $) {
    'use strict';

    var roles = [
        {
            code: "KOF-Hü",
            name: "Komple Forvet (Hücum)",
            line: "Forvet",
            duty: "Hücum",
            withBall:
                "Sırtı dönük top alır, duvar olur, kanatlara ve 10 numaraya dağıtır. Sonrasında ceza sahasına koşu atıp pozisyonu bitirmeye çalışır.",
            withoutBall:
                "Stoperlere ve kaleciye pres yapar, savunma arkasına koşu tehdidiyle defans çizgisini geriye iter.",
            positioning:
                "Son çizgi ile 10 numara hattı arasında gezer; bazen stoperlerin arasında, bazen de yarı alana kadar geri gelir."
        },
        {
            code: "K-Hü",
            name: "Kanat (Hücum)",
            line: "Kanat / Hücum",
            duty: "Hücum",
            withBall:
                "Çizgide genişlik verir, topu alınca çoğu zaman çizgiye inip orta açar veya geriye pas yapar.",
            withoutBall:
                "Rakip beke baskı yapar, çizgiyi kapatır, kendi bekinle beraber 2'ye 1 savunma yapar.",
            positioning:
                "Touchline'a yakın, rakip bekle aynı hizada başlar; hücumda ileri üçlünün parçası olur."
        },
        {
            code: "TAK-Hü",
            name: "Ters Ayaklı Kanat (Hücum)",
            line: "Kanat / Hücum",
            duty: "Hücum",
            withBall:
                "Çizgide başlayıp iç koridora kat eder, ceza sahasına doğru şut açısı arar veya ara pası dener.",
            withoutBall:
                "Rakip beke pres yapar ama merkez koridoru kapatmaya da yardım eder.",
            positioning:
                "Başlangıçta kenarda, hücumda içe doğru koşularla AMC / ikinci forvet bölgesine doldurur."
        },
        {
            code: "OOS-De",
            name: "Ofansif Oyun Kurucu (Destek)",
            line: "10 Numara",
            duty: "Destek",
            withBall:
                "Ceza sahası önünde topla buluşup oyun yönünü değiştirir, kilit pas atar, bazen ceza sahasına geç koşu yapar.",
            withoutBall:
                "Rakip DM'lere gölge pres yapar, pas kanallarını kapatır; çok derine gelmez.",
            positioning:
                "Ceza sahası önü half-space'te, forvet ile orta saha arasında sürekli pas istasyonu rolünde durur."
        },
        {
            code: "DOK-De",
            name: "Derin Oyun Kurucu (Destek)",
            line: "DM / MC",
            duty: "Destek",
            withBall:
                "Stoperlerin önünde topu alır, oyunu kanatlara ve 10 numaraya dağıtır; uzun ters toplar atar.",
            withoutBall:
                "Savunma önünde durur, ikinci topları toplar; alan kaplamaktan çok pozisyon alır.",
            positioning:
                "Stoperlerin hemen önünde ya da yanında konumlanır; çoğu hücum ondan başlar."
        },
        {
            code: "SO-Sv",
            name: "Çapa / Savunma Önü (Savunma)",
            line: "DM",
            duty: "Savunma",
            withBall:
                "Basit oynar, kısa pasla en yakın arkadaşına verir; riskli pas çok az.",
            withoutBall:
                "Savunma hattının önünde süpürücü gibi çalışır, pas arası yapar, rakip 10 numarayı bozar.",
            positioning:
                "Stoperlerin hemen önünde sabit kalır; çoğu zaman ceza yayı civarından ileri gitmez."
        },
        {
            code: "VOL-De",
            name: "Volante (Destek)",
            line: "DM / MC",
            duty: "Destek",
            withBall:
                "Derinden top alıp dripling veya pasla orta sahaya çıkar, kanatlara ve iç koridora koşu atar.",
            withoutBall:
                "Top kaybında geriye dönüp DM alanını kapatır ama pres için zaman zaman öne çıkar.",
            positioning:
                "Savunma önünde başlar, hücumda MC hattına ve kanallara koşu atarak ekstra 8 numara gibi davranır."
        },
        {
            code: "KB-De",
            name: "Kanat Bek (Destek)",
            line: "Bek",
            duty: "Destek",
            withBall:
                "Çizgiden bindirme yapar, genişlik sağlar; uygun pozisyonda orta açar veya içe kat edip kısa pas verir.",
            withoutBall:
                "Rakip kanadı karşılar, çizgiyi kapatır; stoperle aradaki boşluğu doldurur.",
            positioning:
                "Top rakipteyken klasik bek hattında, top sendeyken kanat oyuncusunun biraz gerisinde / yanında görünür."
        },
        {
            code: "İYB-De",
            name: "İçeri Yönelen Bek (Destek)",
            line: "Bek / Orta",
            duty: "Destek",
            withBall:
                "Çizgiden iç koridora doğru kat eder, orta sahada ekstra pas istasyonu olur; bazen şut veya ara pas dener.",
            withoutBall:
                "Savunmada yine bek pozisyonunda durur ama yer yer iç koridoru da kapatır.",
            positioning:
                "Hücumda kanat oyuncusunun iç tarafında, DM/MC hattına yakın konumlanır."
        },
        {
            code: "SS-Sv",
            name: "Standart Stoper (Savunma)",
            line: "Stoper",
            duty: "Savunma",
            withBall:
                "Basit paslar oynar, genelde yanına veya önündeki DM'ye verir; nadiren uzun top dener.",
            withoutBall:
                "Ceza sahasını korur, markaj ve kafa topu savaşlarını kazanmayı hedefler.",
            positioning:
                "Kendi ceza sahası ön çizgisinde, kaleciyle DM arasında ana savunma hattını oluşturur."
        },
        {
            code: "PS-Sv",
            name: "Pasör Stoper (Savunma)",
            line: "Stoper",
            duty: "Savunma",
            withBall:
                "Stoper pozisyonundan daha riskli uzun paslar ve dikine paslar dener; oyunu geriden kurar.",
            withoutBall:
                "Standart stoper gibi markaj ve alan savunması yapar.",
            positioning:
                "Savunma hattının ortasında ya da hafif sol/sağında; atak başlangıçlarında top genelde ilk ona gelir."
        },
        {
            code: "SiB-Sv",
            name: "Sigorta Bek (Savunma)",
            line: "Bek",
            duty: "Savunma",
            withBall:
                "İleri çıkmaktan çok emin paslar oynar, çoğu zaman geriye veya içe oynar.",
            withoutBall:
                "Arkayı süpürür, stoperlerin arkasına atılan topları karşılar; hücumcu beklerin sigortasıdır.",
            positioning:
                "Savunma çizgisinde derin kalır; nadiren orta saha çizgisini geçer."
        },
        {
            code: "LK-Hü",
            name: "Libero Kaleci",
            line: "Kaleci",
            duty: "Hücum eğilimli",
            withBall:
                "Stoperlerin arasına kadar çıkarak ekstra pas opsiyonu olur, kısa pasla oyunu geriden kurar.",
            withoutBall:
                "Savunma arkasına atılan toplara ceza sahası dışına kadar çıkıp müdahale eder.",
            positioning:
                "Takım önde oynarken ceza sahası çizgisine yakın, bazen birkaç metre önünde konumlanır."
        },
        
        {
    code: "MEZ-De",
    name: "Mezzala (Destek)",
    line: "MC",
    duty: "Destek",
    withBall:
        "Yarım alanlarda konumlanır, kanat ile orta saha arasında bağlantı kurar; topla ileri kat eder, ceza sahasına geç koşu yapar.",
    withoutBall:
        "Rakibin iç koridorundaki pas opsiyonlarını kapatır, gerekince bekine yardım için kenara kayar.",
    positioning:
        "MC hattında ama çizgi ile merkez arasında, half-space dediğimiz bölgede dolaşır; bek ve kanatla üçgen kurar."
},
{
    code: "SB-De",
    name: "Sahte Bek (Destek)",
    line: "Bek / Orta",
    duty: "Destek",
    withBall:
        "Çizgiye basmak yerine iç koridora sokulur, stoperlerin önünde ekstra orta saha oyuncusu gibi pas istasyonu olur. Stoperden aldığı topu DM/MC hattına, ters kanada veya 10 numaraya oynar; nadiren çizgiye inip orta açar.",
    withoutBall:
        "Savunma yerleşirken tekrar klasik bek pozisyonuna döner, rakip kanadı ve çizgiyi karşılar. Orta blokta pres yapılırken ise zaman zaman iç koridorda rakip 8 numara / 10 numara bağlantısını keser.",
    positioning:
        "Top rakipteyken bek hattında, stoperin yanında durur. Top sendedeyken half-space denilen iç koridora ve orta saha çizgisine doğru içe sokulur; DM/MC ile stoper arasındaki bağlantıyı kurar ve üçlü orta saha şekli yaratır."
},
{
    code: "MOS-De",
    name: "Merkez Orta Saha (Destek)",
    line: "MC",
    duty: "Destek",
    withBall:
        "Topu stoperlerden veya DM'den alıp basit ama dikine paslarla oyunu ilerletir. Kısa–orta mesafe pas bağlantısı kurar, zaman zaman topu taşıyarak üçüncü bölgeye kadar çıkar; ancak ana görevi oyunu akıtmak, riskli sihirbazlıklar yapmak değildir.",
    withoutBall:
        "Orta blokta rakibin pas kanallarını kapatır, 8 numaralara yakın durur ve gerektiğinde rakip oyun kurucuyu karşılar. Pres hattına katılır ama çapa gibi tamamen savunma önüne çakılı kalmaz.",
    positioning:
        "MC hattında, savunma ile hücum arasında tam bağlantı oyuncusu gibi durur. Stoper–DM hattı ile 10 numara–kanatlar arasında sürekli pas istasyonu olur; hem yana hem ileriye oynayarak takımın iskeletini dengede tutar."
},
{
    code: "MOS-Sv",
    name: "Merkez Orta Saha (Savunma)",
    line: "MC",
    duty: "Savunma",
    withBall:
        "Genellikle savunma hattının biraz önünde kalır ve topu güvenli oynar. Kısa paslarla oyunu yanlara ve geriye yönlendirir; riskli dikine paslara çok az girer, hücuma fazla katılmaz.",
    withoutBall:
        "Savunma dörtlüsünün önünde kalkan gibi durur, rakip 10 numara ve iç koridor koşularını karşılar. Orta bloğu daraltır, pas arası ve ikili mücadele ile merkezdeki tehlikeyi azaltmaya odaklanır.",
    positioning:
        "MC hattında ama çoğu zaman kendi yarı sahasının ortasında kalır; DM gibi derine çakılmadan savunma ile orta saha arasında bağlantı kurar ve savunma yönü ağır basan bir 8 numara gibi davranır."
},
{
    code: "MOS-Hü",
    name: "Merkez Orta Saha (Hücum)",
    line: "MC",
    duty: "Hücum",
    withBall:
        "Topu alır almaz ileriye oynamayı düşünür; dikine pas, ver–kaç ve topla dripling ile üçüncü bölgeye taşır. Ceza sahası çevresine ve zaman zaman ceza sahasının içine geç koşular atarak ikinci dalga skor tehdidi yaratır.",
    withoutBall:
        "Önde pres hattına katılır, rakip DM ve stoperlere baskı yapar. Topun arkasına dönmekte biraz gecikebildiği için boş alan bırakma riski vardır ama amacı rakibin geriden rahat oyun kurmasını engellemektir.",
    positioning:
        "MC hattında başlar, hücumlarda sık sık 10 numara bölgesine ve ceza sahası önüne kadar çıkar. Kanat ve forvetle üçgenler kurarak hem bağlantı oyuncusu hem de ceza sahasına geç koşu yapan ekstra gol tehdidi gibi konumlanır."
},

        
    ];

    function buildApp($root) {
        var $app = $('<div>').addClass('fm-role-app');

        // Başlık
        $('<h1>').text('FM Rol Antrenörü').appendTo($app);
        $('<div>')
            .addClass('fm-role-subtitle')
            .text('Bir rol seç; “top bizde / rakipte” davranışını oku. Sağda quiz modunda kendini test et.')
            .appendTo($app);

        var $layout = $('<div>').addClass('fm-role-layout').appendTo($app);

        // Sol panel – rol inceleme
        var $left = $('<section>').addClass('fm-role-panel').appendTo($layout);
        $('<h2>').text('Rol incele').appendTo($left);

        $('<label>')
            .addClass('fm-role-label')
            .attr('for', 'fm-role-select')
            .text('Rol')
            .appendTo($left);

        var $select = $('<select>')
            .addClass('fm-role-select')
            .attr('id', 'fm-role-select')
            .appendTo($left);

        roles.forEach(function (role, idx) {
            $('<option>')
                .val(String(idx))
                .text(role.code + ' – ' + role.name)
                .appendTo($select);
        });

        var $tags = $('<div>').addClass('fm-role-tags').appendTo($left);

        function setTags(role) {
            $tags.empty();
            $('<span>').addClass('fm-role-tag').text('Hat: ' + role.line).appendTo($tags);
            $('<span>').addClass('fm-role-tag').text('Görev: ' + role.duty).appendTo($tags);
            $('<span>').addClass('fm-role-tag').text(role.code).appendTo($tags);
        }

        var $cardWith = $('<div>').addClass('fm-role-card').appendTo($left);
        $('<h3>').text('Top bizdeyken').appendTo($cardWith);
        var $withP = $('<p>').appendTo($cardWith);

        var $cardWithout = $('<div>').addClass('fm-role-card').appendTo($left);
        $('<h3>').text('Top rakipteyken').appendTo($cardWithout);
        var $withoutP = $('<p>').appendTo($cardWithout);

        var $cardPos = $('<div>').addClass('fm-role-card').appendTo($left);
        $('<h3>').text('Konum / pas bağlantısı').appendTo($cardPos);
        var $posP = $('<p>').appendTo($cardPos);

        function updateRole(idx) {
            var role = roles[idx];
            $withP.text(role.withBall);
            $withoutP.text(role.withoutBall);
            $posP.text(role.positioning);
            setTags(role);
        }

        updateRole(0);

        $select.on('change', function () {
            updateRole(Number($(this).val() || 0));
        });

        // Sağ panel – quiz
        var $right = $('<section>').addClass('fm-role-panel').appendTo($layout);

        var $qh = $('<div>').addClass('fm-role-quiz-header').appendTo($right);
        $('<h2>').text('Quiz modu').appendTo($qh);
        var $newBtn = $('<button>')
            .addClass('fm-role-btn secondary')
            .text('Yeni soru')
            .appendTo($qh);

        $('<div>')
            .addClass('fm-role-quiz-label')
            .text('Aşağıdaki davranış hangi role ait? Önce tahmin et, sonra “Rolü göster”.')
            .appendTo($right);

        var $qCardWith = $('<div>').addClass('fm-role-card').appendTo($right);
        $('<h3>').text('Top bizdeyken').appendTo($qCardWith);
        var $qWithP = $('<p>')
            .addClass('fm-role-muted')
            .text('Henüz soru yok.')
            .appendTo($qCardWith);

        var $qCardWithout = $('<div>').addClass('fm-role-card').appendTo($right);
        $('<h3>').text('Top rakipteyken').appendTo($qCardWithout);
        var $qWithoutP = $('<p>')
            .addClass('fm-role-muted')
            .text('Yeni soru için butona bas.')
            .appendTo($qCardWithout);

        var $qCardRole = $('<div>').addClass('fm-role-card').appendTo($right);
        $('<h3>').text('Rol').appendTo($qCardRole);
        var $qName = $('<p>')
            .addClass('fm-role-quiz-name')
            .text('???')
            .appendTo($qCardRole);

        var $revealBtn = $('<button>')
            .addClass('fm-role-btn')
            .text('Rolü göster')
            .prop('disabled', true)
            .appendTo($qCardRole);

        $('<p>')
            .addClass('fm-role-hint')
            .text('İpucu: önce hangi hat (defans / orta / hücum) ve hangi görev (savunma / destek / hücum) olacağını düşün.')
            .appendTo($right);

        var currentQuizRole = null;

        function newQuestion() {
            var idx = Math.floor(Math.random() * roles.length);
            currentQuizRole = roles[idx];
            $qWithP.text(currentQuizRole.withBall).removeClass('fm-role-muted');
            $qWithoutP.text(currentQuizRole.withoutBall).removeClass('fm-role-muted');
            $qName.text('???');
            $revealBtn.prop('disabled', false);
        }

        function reveal() {
            if (!currentQuizRole) { return; }
            $qName
                .html('<span class="fm-role-highlight">' +
                    mw.html.escape(currentQuizRole.code) +
                    '</span> – ' + mw.html.escape(currentQuizRole.name));
            $revealBtn.prop('disabled', true);
        }

        $newBtn.on('click', newQuestion);
        $revealBtn.on('click', reveal);

        $root.empty().append($app);
    }

    function init() {
        var $root = $('#fm-role-trainer');
        if ($root.length) {
            buildApp($root);
        }
    }

    $(init);

}(mediaWiki, jQuery));
*/


/* FM Rol Antrenörü – v2
 * Özellikler:
 * - Tüm FM rollerini tek listede tutar
 * - Arama kutusu (isim / kısaltma)
 * - Görev filtresi (Savunma / Destek / Hücum / Otomatik)
 * - Rol inceleme + Quiz modu
 */

/* FM Rol Antrenörü – v2
 * Özellikler:
 * - Rolleri isim / kısaltma ile arama
 * - Göreve göre filtre (Savunma / Destek / Hücum / Otomatik)
 * - Rol inceleme + Quiz modu
 */
/* FM Rol Antrenörü – TAM SÜRÜM
 * - Tüm roller ve alt roller (görevler + kesici/sigorta varyasyonları) eklendi.
 * - İsim/kısaltma arama, göreve göre filtre, alt rol seçimi ve quiz modu içerir.
 */

(function (mw, $) {
    'use strict';

    // ------------------------------------------------------------------------
    // ROL VERİLERİ
    // ------------------------------------------------------------------------

    var roles = [
        // ===================== STOPERLER =====================
        {
            code: "SS",
            name: "Standart Stoper",
            group: "Stoper",
            subRoles: [
                {
                    key: "ss-std",
                    duty: "Savunma",
                    label: "Savunma (Standart)",
                    withBall:
                        "Topu kazandığında önceliği en yakın ve güvenli pas opsiyonudur; genelde yan stopere, beke veya önündeki defansif orta sahaya kısa pas oynar. Riskli dikine pas ve driplingten kaçınır, hataya izin vermemeyi hedefler.",
                    withoutBall:
                        "Ceza sahasını ve rakip santraforu savunur; ikili mücadele ve hava toplarında agresiftir ancak çizgiyi bozup gereksiz öne çıkmaz. Savunma hattının dengesini korumaya ve hat kırılmadan pozisyonunu tutmaya odaklanır.",
                    positioning:
                        "Kendi ceza sahası ön çizgisinde, diğer stoperle aynı hizada pozisyon alır. Ne gereksiz geride kalır ne de fazla öne çıkar; savunma hattının merkezini sabitler."
                },
                {
                    key: "ss-kesici",
                    duty: "Savunma",
                    label: "Savunma (Kesici)",
                    withBall:
                        "Topu kaptıktan sonra yine çoğunlukla kısa ve basit pas oynar; agresifliği topu kazanma anındadır, topla risk almakta değil. Rakibin ayağından söktüğü topları çabucak orta sahaya veya beke aktararak oyunu hızla tekrar kurar.",
                    withoutBall:
                        "Kesici görevinde savunma hattından bir–iki adım öne çıkarak rakip santrafor ve 10 numaraya agresif şekilde basar. Ara pasları kesmeye, sırtı dönük alınan toplara hemen müdahale etmeye çalışır; bunun karşılığında arkasında boşluk bırakma riski artar.",
                    positioning:
                        "Savunma çizgisinin hafif önünde, top kendi bölgesine geldiğinde çizgiden kopup rakibe doğru adım atar. Diğer stoper genelde biraz daha geride kalıp onun açığını sigortalar."
                },
                {
                    key: "ss-sigorta",
                    duty: "Savunma",
                    label: "Savunma (Sigorta / Toparlayıcı)",
                    withBall:
                        "Topu aldığında hiçbir risk almadan en basit pası oynamayı tercih eder; genellikle yanındaki stopere veya defansif orta sahaya oynar. Uzun top ve dikine pas denemeleri minimumdadır.",
                    withoutBall:
                        "Savunma (toparlayıcı) görevi ile standart stoper, defans çizgisinin biraz daha arkasına yanaşır ve savunma hattının arkasına atılan paslara müdahale etmeye odaklanır. Diğer stoper veya bek öne çıktığında onların arkasına sarkan koşuları takip eder.",
                    positioning:
                        "Savunma hattının bir–iki adım gerisinde, adeta arka süpürücü gibi konumlanır. Rakip derine koşu attığında veya arkaya uzun top gönderdiğinde, bu topları toplamakla ve son adam olarak hatayı kapatmakla görevlidir."
                }
            ]
        },
        {
            code: "LIB",
            name: "Libero",
            group: "Stoper / Libero",
            subRoles: [
                {
                    key: "lib-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Stoperlerin arkasında veya arasında topu alır, baskı yoksa dripling ile birkaç metre öne çıkıp oyunu başlatır. Genellikle orta sahaya ve kanatlara güvenli paslarla oyunu genişletir.",
                    withoutBall:
                        "Savunma hattının arkasını süpürür; stoperlerin kaçırdığı koşuları takip eder, savunma arkasına sarkan topları toplar. Tehlike anında ceza sahası içinde ekstra stoper gibi konumlanır.",
                    positioning:
                        "Top rakipteyken stoperlerden birkaç metre geride, kaleci ile savunma hattı arasında konumlanır. Top sendeyken biraz öne çıkar ama önceliği yine arka güvenliktir."
                },
                {
                    key: "lib-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Topu aldığında sadece süpürücü değil, geriden oyun kurucu gibi davranır; dripling ile orta sahaya kadar çıkar, kanatlara ve 10 numaraya dikine paslar atar. Tempo kontrolüne ciddi katkı sağlar.",
                    withoutBall:
                        "Savunma arkasını kapatmakla birlikte gerektiğinde savunma hattıyla aynı hizaya çıkar ve çizgi kırılmadan rakibe yaklaşır. Takım önde savunma yapıyorsa kaleciyle birlikte çok geniş alanı kontrol eder.",
                    positioning:
                        "Takım yerleşik hücumdayken stoperlerin önüne kadar çıkarak neredeyse defansif orta saha pozisyonuna yaklaşır. Top kaybında hızlıca geri dönüp yine klasik libero derinliğine çekilir."
                }
            ]
        },
        {
            code: "PS",
            name: "Pasör Stoper",
            group: "Stoper",
            subRoles: [
                {
                    key: "pss-std",
                    duty: "Savunma",
                    label: "Savunma (Standart)",
                    withBall:
                        "Stoper pozisyonundan hatlar arasına ve kanatlara dikine paslar atar; gerektiğinde uzun ters toplarla oyunun yönünü değiştirir. Baskı yoksa birkaç adım dripling ile öne çıkıp ilk pres hattını kırabilir.",
                    withoutBall:
                        "Standart stoper gibi ceza sahasını savunur ama pas aralarına biraz daha agresif girer. Hem markaj hem alan savunması yaparken bir yandan da olası kontra başlangıçlarını kesmeye çalışır.",
                    positioning:
                        "Savunma hattının merkezinde veya hafif sağ/solunda konumlanır. Geriden oyun kurulumunda genellikle ilk topu alan oyunculardan biridir."
                },
                {
                    key: "pss-kesici",
                    duty: "Savunma",
                    label: "Savunma (Kesici)",
                    withBall:
                        "Topu kazanır kazanmaz dikine veya riskli ama akıllı paslar arar; savunmadan hücuma geçişi hızlandırmak için cesur paslar kullanır. Dripling ile öne çıktığında da rakip blokları kırmaya çalışır.",
                    withoutBall:
                        "Savunma çizgisinden bir–iki adım öne çıkarak rakip 10 numara ve santrafora agresif basar. Çok sık pas arası kovalar; bu da arkasında boş alan bırakma riskini artırır.",
                    positioning:
                        "Genellikle savunma hattının ön tarafına yakın, rakibin topu almasını beklemeden öne fırlamaya hazır durumda konumlanır. Diğer stoper ve bekler, onun açığını kapatmak için biraz daha temkinli durur."
                },
                {
                    key: "pss-sigorta",
                    duty: "Savunma",
                    label: "Savunma (Sigorta / Toparlayıcı)",
                    withBall:
                        "Normal pasör stoperden biraz daha temkinlidir; yine dikine ve kanatlara pas atar ama risk seviyesini bir tık aşağı çeker. Daha çok savunma güvenliği bozulmadan oyunu kurmaya odaklanır.",
                    withoutBall:
                        "Defans çizgisinin yarım adım gerisinde konumlanarak hem pasör hem sigorta rolü üstlenir. Diğer stoper ve bekler öne çıktığında arkaya atılan topları karşılamak için geride kalır.",
                    positioning:
                        "Savunma hattının hafif gerisinde, libero vari bir süpürücü-pasör karışımı gibi durur. Pres anlarında çizgiye yaklaşır, geçiş savunmasında ise son adam rolüne kayar."
                }
            ]
        },
        {
            code: "ÇS",
            name: "Çakılı Stoper",
            group: "Stoper",
            subRoles: [
                {
                    key: "cs-std",
                    duty: "Savunma",
                    label: "Savunma (Standart)",
                    withBall:
                        "Topu fazla ayağında tutmadan, en yakındaki beke veya stopere kısa pasla oynar. Riskli pas, dripling ve ileri çıkarak oyun kurma neredeyse hiç yoktur.",
                    withoutBall:
                        "Çizgisini terk etmeden göbekte durur, özellikle ceza sahası içi pozisyonlarda markaj ve blok yapar. Savunma çizgisini mümkün olduğunca sabit tutmaya çalışır.",
                    positioning:
                        "Ceza sahası ön çizgisine yakın, savunma hattının en derin oyuncularından biridir. Takım çizgiyi öne çıkarırken bile çok fazla ileri çıkmaz."
                },
                {
                    key: "cs-kesici",
                    duty: "Savunma",
                    label: "Savunma (Kesici)",
                    withBall:
                        "Topu kaptığında yine basit oynar; farkı, topu kazanmak için biraz daha agresif öne çıkmasıdır. Kopardığı topları hızlıca güvenli pasla arkadaşlarına aktarır.",
                    withoutBall:
                        "Normal çakılı stopere göre bir–iki adım daha agresif davranır; özellikle kısa pasla oynayan santrafor ve 10 numaraya öne çıkarak müdahale eder. Buna rağmen savunma çizgisini çok bozmaz, derinliği korur.",
                    positioning:
                        "Ceza sahası ön çizgisine çok yakın ama zaman zaman çizgiden hafif kopup rakibe yaklaşan bir noktada durur. Hâlâ derinde oynayan ama topa daha hevesli bir profil çizer."
                },
                {
                    key: "cs-sigorta",
                    duty: "Savunma",
                    label: "Savunma (Sigorta / Toparlayıcı)",
                    withBall:
                        "Top ayağına geldiğinde neredeyse her zaman en basit ve güvenli pası oynar; çoğunlukla taca atma, kaleciye dönme veya yan stopere verme tercih edilir.",
                    withoutBall:
                        "Savunma hattının en gerisinde konumlanır ve tamamen son adam gibi oynar. Diğer stoper veya bek çizgiyi bozup öne çıktığında arkaya atılan topları süpürmekle görevlidir.",
                    positioning:
                        "Ceza sahasının içine yakın, savunma çizgisinin bir–iki adım arkasında durur. Özellikle derin savunma yapan takımlarda kaleciyle birlikte en son sigorta rolündedir."
                }
            ]
        },
        {
            code: "KS",
            name: "Kenar Stoper",
            group: "Stoper",
            subRoles: [
                {
                    key: "ks-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu aldığında genellikle beke veya içteki orta sahaya oynar; çok ileri dripling yapmaz. Nihai amaç, topu güvenli şekilde çizgiden çıkarıp orta sahaya aktarmaktır.",
                    withoutBall:
                        "Üçlü savunmanın kenarında rakip kanat ve içe kat eden forvetleri karşılar. Çizgi ile stoper hattı arasındaki boşluğu kapatır ve arka direk koşularını takip eder.",
                    positioning:
                        "Savunma hattının kenarında, bek ile merkez stoper arasında konumlanır. Daha çok geniş alan savunmasına odaklanır, hücum katkısı minimumdadır."
                },
                {
                    key: "ks-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Gerektiğinde çizgiden birkaç metre driplingle çıkar, kanat beki ve kanat oyuncusuyla pas üçgenleri kurar. Düşük–orta riskli uzun paslarla kanadı oyuna sokabilir.",
                    withoutBall:
                        "Rakip kanada baskı yaparken zaman zaman öne çıkar, savunma ve orta saha hattı arasında bağlantıyı kapatır. Yine de tamamen çizgiyi terk etmez, arkayı kontrol eder.",
                    positioning:
                        "Savunma hattının kenarında başlar, top sendeyken biraz daha öne ve dışa kayar. Hem stoper hem destekleyen bek gibi iki rolde birden görünür."
                },
                {
                    key: "ks-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Topu taşıyarak rakip yarı sahaya kadar çıkabilir, kanada genişlik kazandırır veya half-space'ten dikine paslar dener. Zaman zaman ceza sahası çevresine kadar gelerek ekstra hücum opsiyonu yaratır.",
                    withoutBall:
                        "Pres hattına katkı verir; rakip kanat ve beklerin oyun kurmasına izin vermemek için öne çıkar. Geçiş anlarında hızla geriye dönmesi gerekir; aksi halde geniş alanda boşluk bırakabilir.",
                    positioning:
                        "Top sende olduğunda stoper çizgisinin önüne ve kenarına doğru çıkar; neredeyse hibrid bir stoper–bek gibi oynar. Top rakipteyken hızla savunma hattına geri oturur."
                }
            ]
        },

        // ===================== BEKLER =====================
        {
            code: "SİB",
            name: "Sigorta Bek",
            group: "Bek",
            subRoles: [
                {
                    key: "sib-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "İleri çıkmaktan çok emin paslar oynar; genellikle stoperine veya içteki orta sahaya kısa pas verir. Baskı altında kaldığında topu taca veya ileriye uzaklaştırmayı tercih eder.",
                    withoutBall:
                        "Hücumcu bek veya kanat oyuncusunun arkasını sigortalar, savunma çizgisini bozmaz. Rakip kanat oyuncusunu karşılar, çizgiyi kapatır ve arka direk koşularını takip eder.",
                    positioning:
                        "Savunma hattında derin konumlanır; çoğu zaman orta saha çizgisini geçmez. Hücumda bile konumunu çok terk etmeyen güvenlik beki gibi oynar."
                }
            ]
        },
        {
            code: "SHB",
            name: "Sahte Bek",
            group: "Bek",
            subRoles: [
                {
                    key: "shb-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu aldığında çizgide kalmak yerine hafif iç koridora sokulur, yine de fazla risk almaz. Kısa paslarla stoper ve defansif orta saha ile bağlantı kurar.",
                    withoutBall:
                        "Savunma yerleşiminde klasik bek çizgisine döner, rakip kanat oyuncusunu ve bek bindirmesini karşılar. Önceliği çizgiyi kapatmak ve savunma hattını bozmmamaktır.",
                    positioning:
                        "Top rakipteyken bek hattında, stoperin dış yanında konumlanır. Top sendeyken içe doğru küçük kaymalar yaparak orta sahaya destek verir."
                },
                {
                    key: "shb-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden iç koridora doğru daha net kat eder; stoperlerin önünde ekstra orta saha oyuncusu gibi pas istasyonu olur. Topu DM/MC hattına, ters kanada veya 10 numaraya yönlendirir.",
                    withoutBall:
                        "Pres şekline göre ya çizgide kalır ya da orta blokta iç koridoru kapatır. Hem rakip kanadı hem de içteki oyun kurucuyu dengelemeye çalışır.",
                    positioning:
                        "Top sendeyken half-space'e, orta saha hattına yakın bir noktaya sokulur. Takım hücumdayken üçlü orta saha görünümü oluşturur; top rakipteyken klasik bek pozisyonuna döner."
                },
                {
                    key: "shb-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "İç koridora güçlü koşular yapar; neredeyse iç orta saha oyuncusu gibi top ister. Ara pas, şut ve ceza sahası çevresinde kombinasyon arar.",
                    withoutBall:
                        "Pres anında orta sahadaki ilk baskı oyuncularından biri gibi öne çıkar. Top kaybında çok geniş alanı koşarak kapatması gerektiği için fiziksel olarak yüksek tempo ister.",
                    positioning:
                        "Hücumda büyük oranda iç orta saha pozisyonunda, kanat oyuncusunun iç tarafında durur. Savunmada hızla çizgiye geri dönüp bek pozisyonunu alır."
                },
                {
                    key: "shb-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha temkinli, bazen daha agresif içe kat eden bek gibi oynar. Gerektiğinde sadece pas istasyonu olur, gerektiğinde iç koridorda hücuma ekstra adam sokar.",
                    withoutBall:
                        "Takımın genel pres ve savunma yüksekliğine göre, ya çizgide derin bek rolüne kayar ya da orta blokta presi tetikleyen oyunculardan biri olur.",
                    positioning:
                        "Takımın taktik yaklaşımına göre bek–iç orta saha hattı arasında bir yerde konumlanır; bazen ikinci DM gibi, bazen klasik bek gibi görünür."
                }
            ]
        },
        {
            code: "İYB",
            name: "İki Yönlü Bek",
            group: "Bek",
            subRoles: [
                {
                    key: "iyob-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Topu aldığında hem çizgiden bindirme yapar hem de içe kat ederek pas opsiyonları yaratır. Çoğunlukla orta veya yerden pasla ceza sahası çevresine top taşır.",
                    withoutBall:
                        "Hem çizgiyi hem iç koridoru savunur; rakip kanat ve içe kat eden forvetleri takip eder. Takım savunmasında yüksek koşu mesafesiyle boşlukları kapatır.",
                    positioning:
                        "Top sendeyken çoğunlukla orta saha çizgisi üzerinde ya da biraz ilerisinde, kanat oyuncusunun gerisinde konumlanır. Savunmada klasik bek hattına geri döner."
                },
                {
                    key: "iyob-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çizgiyi zorlayan agresif bindirmeler yapar, sık sık son çizgiye inip orta açar veya ceza sahasına yerden pas çıkarır. Bazen iç koridora kat ederek şut açısı da arar.",
                    withoutBall:
                        "Geri dönüşlerde yoğun koşu yapar; rakip kanat hücumlarını karşılamak için hızla yerine dönmek zorundadır. Pres anlarında öne çıkıp rakip beke baskı yapar.",
                    positioning:
                        "Hücum anında neredeyse kanat oyuncusu gibi çok ileri çıkar; savunmada ise tekrar bek hattına gömülür. Çizgi üzerinde sürekli gidip gelen bir profil çizer."
                }
            ]
        },
        {
            code: "ÇB",
            name: "Çakılı Bek",
            group: "Bek",
            subRoles: [
                {
                    key: "cb-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu aldığında neredeyse her zaman kısa ve güvenli pas oynar; stoperine, iç orta sahaya veya kaleciye döner. Hücuma katkısı minimumdur.",
                    withoutBall:
                        "Çizgiyi hiç terk etmez; rakip kanadı, bek bindirmesini ve arka direk koşularını karşılar. Savunma hattının genişliğini korumaya odaklanır.",
                    positioning:
                        "Kendi yarı sahasında, savunma çizgisinde kalır; orta saha çizgisini nadiren geçer. Saf savunmacı bek rolündedir."
                }
            ]
        },
        {
            code: "KB",
            name: "Kanat Bek",
            group: "Bek",
            subRoles: [
                {
                    key: "kb-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu ileri taşımak yerine daha ziyade orta sahaya ve stoperlere geri kazandırır. Bindirmeleri kısıtlıdır, genişliği korurken temkinli davranır.",
                    withoutBall:
                        "Rakip kanadı ve bek bindirmesini karşılar, çizgiyi kapatır. Gerektiğinde ikinci stoper gibi içe kat ederek ceza sahasını kalabalıklaştırır.",
                    positioning:
                        "Savunma hattında klasik bek pozisyonunda, zaman zaman biraz daha içe kayarak stoperin yanına yaklaşır."
                },
                {
                    key: "kb-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden bindirme yapar, kanat oyuncusuna destek olur; uygun zamanda orta veya geriye yerden pas çıkarır. Hem genişliği sağlar hem pas istasyonu görevi görür.",
                    withoutBall:
                        "Hem çizgiyi hem yarı alanı savunur; rakip kanat oyuncusunu, içe kat eden kanadı ve beki karşılar. Çoğu zaman rakip kanat üçlüsüne karşı 2v2/3v2 savunmanın parçasıdır.",
                    positioning:
                        "Top sendeyken orta saha çizgisi civarında veya biraz ilerisinde, kanat oyuncusunun gerisinde/yanında konumlanır. Savunmada tekrar bek hattına döner."
                },
                {
                    key: "kb-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çok agresif bindirmeler yapar, sık sık son çizgiye koşu atar ve ceza sahasına orta keser. Bazen iç koridora da kat ederek şut veya ara pas fırsatı arar.",
                    withoutBall:
                        "Geri dönüşte uzun mesafe koşmak zorundadır; rakip kontra tehdidinde hızla savunmaya dönmesi gerekir. Pres hattında rakip beke baskı uygulayarak oyunu geriden kurmalarını zorlaştırır.",
                    positioning:
                        "Takım hücumdayken çoğunlukla kanat oyuncusu hizasında veya biraz önünde pozisyon alır. Savunmada bek çizgisine, hatta gerektiğinde stoper yanına kadar geriye çekilir."
                },
                {
                    key: "kb-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre davranır; daha defansif bir yaklaşımda destek rolü gibi, daha hücumcu bir yaklaşımda ise hücum kanat beki gibi ileri çıkar.",
                    withoutBall:
                        "Takımın savunma yüksekliği ve pres talimatlarına göre bazen çizgide derin, bazen orta blokta baskıcı bir profil çizer.",
                    positioning:
                        "Çoğunlukla klasik bek hattında başlar; oyun akışına göre orta saha çizgisi ötesine veya daha derine iner."
                }
            ]
        },
        {
            code: "SB",
            name: "Standart Bek",
            group: "Bek",
            subRoles: [
                {
                    key: "sb-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu ilerletmekten çok savunmayı güvenceye alacak paslar oynar; çoğunlukla stoperine veya orta sahaya döner. Bindirmeleri kısıtlıdır.",
                    withoutBall:
                        "Rakip kanadı marke eder, çizgiyi kapatır ve bek–stoper arasındaki kanalı korur. Fazla öne çıkmayarak savunma dengesini önceler.",
                    positioning:
                        "Savunma hattında klasik bek konumunda, orta saha çizgisine yakın ama çoğunlukla kendi yarı sahasında kalır."
                },
                {
                    key: "sb-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Yer yer bindirmeler yapar, topu kanat oyuncusuna veya içteki orta sahaya taşır. Uygun pozisyonda orta açar veya yerden pasla ceza sahası çevresini besler.",
                    withoutBall:
                        "Rakip kanadı ve bek bindirmesini karşılar, gerektiğinde öne çıkarak baskı yapar. Yine de arkasında çok büyük boşluk bırakmamaya dikkat eder.",
                    positioning:
                        "Top sendeyken orta saha çizgisi ve biraz ilerisinde, kanat oyuncusuna yakın konumlanır. Savunmada tekrar çizgiye iner."
                },
                {
                    key: "sb-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çizgiyi zorlar, sık sık üçüncü bölgeye koşu atar ve son çizgiye kadar gelip orta keser. Hücuma genişlik ve sayısal üstünlük kazandırır.",
                    withoutBall:
                        "Geride bıraktığı alanı kontrada kapatmak için yoğun şekilde geri koşar. Pres hattında rakip beke doğrudan baskı yapan oyunculardan biridir.",
                    positioning:
                        "Takım hücumdayken çoğunlukla kanat oyuncusu hizasında veya biraz önünde konumlanır. Top kaybında hızla savunma hattına geri döner."
                },
                {
                    key: "sb-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha temkinli, bazen daha agresif bindirmeler yapar. Oyun planına göre destek veya hücum beki gibi davranabilir.",
                    withoutBall:
                        "Takım savunma yüksekliğine göre çizgiyi daha yukarı veya daha derinde kurar. Pres yoğunluğunu takımın genel talimatına göre ayarlar.",
                    positioning:
                        "Genelde bek hattında başlar; maça ve taktik emirlere bağlı olarak daha çok orta sahaya yaklaşabilir veya derinde kalabilir."
                }
            ]
        },

        // ===================== KANATLAR =====================
        
                {
            code: "K",
            name: "Kanat Oyuncusu",
            group: "Kanat",
            subRoles: [
                {
                    key: "k-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Topu çoğunlukla çizgide alır; dripling ile adam eksiltmeye çalışır, bindirme yapan bekle ikili oyunlar oynar. Uygun olduğunda orta keser veya ceza sahası çevresine yerden pas bırakır. Ana amaç; genişlik sağlamak ve hücumu üçüncü bölgeye taşımaktır.",
                    withoutBall:
                        "Kendi bekinin önünde pozisyon alır; rakip bek ve kanat oyuncusuna baskı yapar. Geri dönüşlerde çoğu zaman kendi ceza sahası çevresine kadar koşup ikinci bek gibi savunmaya yardım eder.",
                    positioning:
                        "Top sendeyken çizgiye yakın, orta saha çizgisi ve biraz ilerisinde konumlanır. Savunmada bek hizasına kadar geri çekilip blokların arasındaki boşlukları kapatır."
                },
                {
                    key: "k-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif bir kanat gibi oynar; sürekli topsuz koşu ile derine sarkar, bire birde adam geçip son çizgiye inmeye veya içeri kat edip şut/ara pas aramaya çalışır. Ceza sahasına arka direk koşuları ile girerek bitirici aksiyon kovalar.",
                    withoutBall:
                        "Pres hattında önde yer alır; rakip beke ve zaman zaman stopere baskı uygular. Geri koşar ama önceliği rakibi geriden rahat çıkarmamak, geçişte hızlı şekilde ileri pozisyon almaktır.",
                    positioning:
                        "Hücumda çoğunlukla ileri üçlünün parçası gibi ceza sahası hizasına kadar çıkar; savunmada yine kanat çizgisinde orta saha bloğuna kadar geri gelir. Çizgi ile half-space arasında sürekli koşu yapar."
                }
            ]
        },

        
        
        {
            code: "ÇKO",
            name: "Çalışkan Kanat Oyuncusu",
            group: "Kanat",
            subRoles: [
                {
                    key: "cko-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu aldığında basit ama dikine hamleler yapar; çizgiden topu taşıyıp takımını ileri çıkarmaya çalışır. Riskli bire bir denemekten ziyade çalışkanlığıyla alan açar.",
                    withoutBall:
                        "Kendi bekinin önünde ikinci bek gibi oynar; sık sık kendi ceza sahasına kadar dönerek savunmaya yardım eder. Rakip kanat ve bek ikilisine karşı yoğun pres uygular.",
                    positioning:
                        "Top rakipteyken çoğu zaman kendi yarı sahasında, bek önünde derin konumlanır. Hücumda yavaşça orta saha çizgisine çıkar."
                },
                {
                    key: "cko-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden top sürer, gerektiğinde içeri kat eder; orta açar, yerden pas çıkarır veya basit kombinasyonlarla hücumun devamını sağlar.",
                    withoutBall:
                        "Hem pres yapar hem de gerektiğinde geriye koşup bekini yalnız bırakmaz. Orta blokta rakip beke ve kanada karşı baskı hattının önemli parçasıdır.",
                    positioning:
                        "Kanat çizgisinde, orta saha çizgisi çevresinde başlar; hücumda ceza sahası çevresine kadar gelir, savunmada ise bek hizasına kadar geri iner."
                },
                {
                    key: "cko-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha fazla bire bir dener; çizgiden adam geçip orta açar veya içeri kat ederek şut ve ara pas arar. Koşu mesafesiyle savunmayı sürekli zorlar.",
                    withoutBall:
                        "Pres hattının ön oyuncularından biridir; rakip beke ve stoperlere erken baskı yapar. Geri dönüşlerde yine koşar ama önceliği rakibi çıkarmamaktır.",
                    positioning:
                        "Hücumda çoğunlukla ileri üçlünün parçası gibi ceza sahası hizasına kadar çıkar. Savunmada yine kendi yarı sahasına dönse de önce pres, sonra derin savunma yapar."
                },
                {
                    key: "cko-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha defansif–çalışkan, bazen daha hücum yönlü kanat gibi oynar. Her durumda yüksek koşu mesafesiyle sahayı boydan boya tarar.",
                    withoutBall:
                        "Takımın pres ve savunma kurgusuna uyum sağlayarak bazen ikinci bek, bazen önde presçi rolüne girer.",
                    positioning:
                        "Genelde kanat çizgisinde konumlanır; maçın gidişatına göre daha derin veya daha ileri pozisyon alır."
                }
            ]
        },
        {
            code: "DK",
            name: "Defansif Kanat",
            group: "Kanat",
            subRoles: [
                {
                    key: "dk-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Topu alıp çizgiden çıkış pası sağlar; içe veya geriye oynayarak savunmadan hücuma geçişi güvenli hale getirir. Çok riskli driplingle girmez.",
                    withoutBall:
                        "Bekin önünde savunma kalkanı gibi durur; rakip kanat ve bek üçgenini bozmak için alan kapatır ve ikili mücadeleye girer.",
                    positioning:
                        "Savunma ağırlıklı olarak kendi yarı sahasında, bekin hemen önünde pozisyon alır. Hücumda orta saha çizgisine kadar çıkar ama çok ileri gitmez."
                },
                {
                    key: "dk-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha fazla ileri koşu yaparak genişliği sağlar; çizgiden topu taşıyıp tehlikeli bölgeye sokar. Yine de ana rolü gole gitmekten çok takıma derinlik ve istasyon sağlamaktır.",
                    withoutBall:
                        "Rakip beke ve kanada pres uygular, ama savunma yerleştiğinde yine bek önüne kadar geri döner. Çift yönlü savunma katkısı yüksektir.",
                    positioning:
                        "Top sendeyken orta saha ile hücum hattı arasında çizgi boyunca koşar; top rakipteyken kendi yarı sahasına çekilip ikinci bek gibi savunur."
                }
            ]
        },
        {
            code: "KOK",
            name: "Kanat Oyun Kurucu",
            group: "Kanat",
            subRoles: [
                {
                    key: "kok-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgiden iç koridora doğru gelerek pas açılarını görür, kanat beki ve forvetle üçgenler kurar. Daha az dripling, daha çok vizyon ve pas üzerinden oyunu yönlendirir.",
                    withoutBall:
                        "Rakip beke ve içteki oyun kurucuya gölge pres yapar, pas kanallarını kapatır. Çok derine inmeden pozisyon alır.",
                    positioning:
                        "Başlangıçta kanat çizgisinde görünür ama top sende olduğunda half-space'e, ceza sahası önüne yakın bölgelere kayar. Takım hücumda yerleşmişken pas merkezi olur."
                },
                {
                    key: "kok-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha riskli kilit paslar ve ara toplar dener; sık sık iç koridordan ceza sahası çevresine girip bitirici aksiyon arar. Uzaktan şut tehditi de oluşturabilir.",
                    withoutBall:
                        "Rakip oyun kurucu ve bek üzerine agresif pres yapar, topu kazandıktan sonra hızlıca hücumu yönlendirir.",
                    positioning:
                        "Hücumda çoğunlukla 10 numara bölgesine yakın ama kenardan başlayan serbest bir oyun kurucu gibi hareket eder. Savunmada kanat–orta saha hattı arasında pozisyon alır."
                }
            ]
        },
        {
            code: "TAK",
            name: "Ters Ayaklı Kanat",
            group: "Kanat",
            subRoles: [
                {
                    key: "tak-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Çizgide başlar, topu aldıktan sonra iç koridora kat eder ve ceza sahası yayına doğru pas açıları arar. Kanat bekinin bindirmelerini kullanarak iç–dış kombinasyonları kurar.",
                    withoutBall:
                        "Rakip beke baskı yapar ama merkez koridoru da gözeterek içe yakın durur. Hem çizgi hem half-space arasında alan kapatır.",
                    positioning:
                        "Başlangıç pozisyonu çizgiye yakın; top sende olduğunda half-space'e doğru hareket edip şut veya kilit pas bölgesine yaklaşır."
                },
                {
                    key: "tak-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Sık sık içe kat edip şut ve ara pas arar; ceza sahasına driplingle girerek bitirici aksiyon kovalayan ana tehditlerden biridir.",
                    withoutBall:
                        "Pres hattında stoper ve bek arasındaki pas hattını kapatır, gerektiğinde beke agresif pres yapar. Geri dönüşlerde yine bekine destek olmak zorundadır.",
                    positioning:
                        "Hücumda çoğunlukla ceza sahası çevresinde, 10 numara veya ikinci forvet gibi konumlanır; savunmada ise tekrar kanat çizgisine yaklaşır."
                }
            ]
        },
        
                {
            code: "KF",
            name: "Kanat Forvet",
            group: "Kanat / Forvet",
            subRoles: [
                {
                    key: "kf-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Başlangıçta çizgide durur ama topu aldığında güçlü ayağına doğru iç koridora kat eder. Half-space içinde forvetle ver–kaç yapar, bazen içeri şut dener bazen arka direğe orta/yerden pas çıkarır. Amaç hem kanadı tehdit etmek hem de ceza sahasına ekstra koşu atmaktır.",
                    withoutBall:
                        "Rakip beke ve iç koridordaki stopere gölge pres yapar; pas hattını kapatırken gerektiğinde geriye dönüp bekine yardım eder. Saf kanat kadar derine inmez ama kanat–forvet arasındaki pres bağlantısını kurar.",
                    positioning:
                        "Top sendeyken çizgiye yakın başlar, saldırı büyüdükçe içe doğru kıvrılıp ceza sahası yayı ve arka direk civarında konumlanır. Savunmada orta saha çizgisi civarına ve kanat çizgisine geri döner."
                },
                {
                    key: "kf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çok daha agresif iç koşular yapar; kanattan merkeze driplingle kat edip şut ve kaleye yönelen koşular arar. Çoğu pozisyonda klasik santrafor gibi ceza sahasına girip bitirici vuruş yapmayı hedefler.",
                    withoutBall:
                        "Yüksek hatta pres yapar; rakip bek ile stoper arasındaki hattı kapatarak topu o bölgeye zorlar. Geri dönüşlerde koşar ama önceliği savunma arkasına tehdit olmaktır.",
                    positioning:
                        "Hücumda çoğunlukla ileri hatta, santraforun yanına doğru içe kat etmiş halde görünür; kağıt üzerinde kanat, pratikte ikinci forvet gibi davranır. Savunmada tekrar kanat çizgisine ve orta blok hizasına yaklaşır."
                }
            ]
        },

        
        
        {
            code: "RMD",
            name: "Raumdeuter",
            group: "Kanat",
            subRoles: [
                {
                    key: "rmd-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Topu genellikle zaten boş alanda alır; tek dokunuşla şut veya hızlı kontrol–şut kombinasyonlarıyla pozisyonu bitirmeye çalışır. Fazla hazırlık pası değil, doğrudan sonuç odaklı oynar.",
                    withoutBall:
                        "Savunma hattı ve orta saha arasındaki boşluklarda gezinerek savunmanın konsantrasyonunu bozar. Pres katkısı sınırlıdır; esas görevi doğru anda doğru boşluğa koşu atmaktır.",
                    positioning:
                        "Çizgide değil, savunma–orta saha arasındaki cepler ve arka direk koşuları etrafında dolaşır. Genellikle uzak direkte, bek–stoper arası boşlukları hedefler."
                }
            ]
        },
        {
            code: "HKO",
            name: "Hedef Kanat Oyuncusu",
            group: "Kanat",
            subRoles: [
                {
                    key: "hko-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top alır, göğüsleyip indirir veya kafayla orta sahaya ve forvete indirir. Topu ayağında fazla tutmadan takım arkadaşlarını oyuna sokar.",
                    withoutBall:
                        "Uzun topların hedefi olarak hem hücumda hem savunmada hava topu mücadelesine girer. Bekin önünde savunma yaparken fizik gücüyle rakip kanadı zorlar.",
                    positioning:
                        "Kanat çizgisine yakın ama klasik hızlı kanat gibi değil, daha çok uzun top istasyonu gibi konumlanır. Stoper ve bekin atacağı uzun topların ineceği bölgede durur."
                },
                {
                    key: "hko-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Topu aldıktan sonra ceza sahasına girmeye ve bitirici aksiyon yapmaya daha fazla odaklanır; kafa vuruşu, şut ve ikinci toplar üzerinden skor kovalayarak kanat forvet gibi oynar.",
                    withoutBall:
                        "Rakip stoper ve bekin üzerine pres yaparak uzun top oynamaya zorlar; savunma duran toplarında da kendi ceza sahasında ekstra stoper gibi görev alır.",
                    positioning:
                        "Hücumda ceza sahasına daha sık girer; özellikle uzak direk ve arka direk koşularında belirir. Savunmada ise kendi yarı sahasında kanat çizgisine yaklaşır."
                }
            ]
        },

        // ===================== 10 NUMARA BÖLGESİ =====================
        {
            code: "ON",
            name: "On Numara",
            group: "Ofansif Orta Saha",
            subRoles: [
                {
                    key: "on-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Ceza sahası önü ve half-space bölgelerinde topu alıp kilit pas, çalım ve şut dener. Oyunun yaratıcı merkezi olarak son pası atmak ve rakip savunmayı açmak için risk alır.",
                    withoutBall:
                        "Çok derine inmez; rakip defansif orta sahalara ve stoperlere gölge pres yapar. Asıl işi top kazanmak değil, top kazandıktan sonra fark yaratmaktır.",
                    positioning:
                        "Forvetle orta saha sınırında, ceza yayı çevresinde dolaşır. Zaman zaman kanatlara açılır ama ağırlıklı olarak merkezde oynar."
                }
            ]
        },
        {
            code: "OOS",
            name: "Ofansif Orta Saha",
            group: "Ofansif Orta Saha",
            subRoles: [
                {
                    key: "oos-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Hem pas hem koşu tehdidi üretir; ceza sahası çevresinde pas dağıtır, zaman zaman geç koşularla ceza sahasına girer. Şut ve ver–kaç kombinasyonlarıyla üçüncü bölgeyi zorlar.",
                    withoutBall:
                        "Orta blokta pres hattına katılır; rakip defansif orta saha ve stoperlere yaklaşarak pas açılarını daraltır. Çok derine gömülmeden savunmaya destek olur.",
                    positioning:
                        "Ceza sahası yayının önünde ve half-space bölgelerinde konumlanır; forvetle orta saha arasında bağlantı oyuncusu gibi çalışır."
                },
                {
                    key: "oos-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif şekilde ceza sahasına koşu atar; şut ve bitirici aksiyon sayısı artar. Bazen ikinci forvet gibi pozisyon alarak skor katkısı sağlar.",
                    withoutBall:
                        "Presi daha önde başlatır, rakip stoper ve kaleciye kadar baskıya gider. Bu yüzden top arkasına dönüşte biraz daha geç kalma riski taşır.",
                    positioning:
                        "Takım hücumdayken forvete çok yakın, ceza sahası çizgisine kadar çıkar; savunmada ise orta sahaya geri çekilir."
                }
            ]
        },
        {
            code: "OOK",
            name: "Ofansif Oyun Kurucu",
            group: "Ofansif Orta Saha",
            subRoles: [
                {
                    key: "ook-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Ceza sahası önünde topu alıp oyunu yönlendirir; kanatlara, bek bindirmelerine ve forvete akıllı paslar atar. Temposu kontrollü, riski hesaplıdır.",
                    withoutBall:
                        "Rakip defansif orta saha ve stoperler arasındaki pas kanallarını kapatır; çok agresif koşu yapmadan pozisyonuyla savunmaya yardım eder.",
                    positioning:
                        "Ceza yayı çevresinde ve half-space bölgelerinde dolaşır; takım yerleşik hücumdayken pas trafiğinin merkezinde yer alır."
                },
                {
                    key: "ook-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha riskli kilit pas ve ara toplar dener; şut ve ver–kaçlarla direkt skor katkısı kovalayan bir 10 numara gibi oynar.",
                    withoutBall:
                        "Önde pres hattına katılır; rakip stoper ve kaleciye daha agresif baskı yapar. Bu da orta sahada zaman zaman boşluk bırakmasına neden olabilir.",
                    positioning:
                        "Hücumda forvete çok yakın, bazen ikinci forvet gibi ceza sahasına girer; savunmada orta sahaya dönüş yapar ama çok derine inmez."
                }
            ]
        },
        {
            code: "EG",
            name: "Enganche",
            group: "Ofansif Orta Saha",
            subRoles: [
                {
                    key: "eg-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Statik bir oyun kurucu gibi ceza sahası önünde top ister; dönüp çevresine kilit pas arar. Çoğu zaman top ayağına gelmeden fazla hareket etmez, oyunu etrafında döndürür.",
                    withoutBall:
                        "Pres katkısı sınırlıdır; rakip defansif orta sahaya yakın pozisyon alır ama agresif koşu yapmaz. Savunmaya daha çok konum alarak ve pas gölgelemesiyle destek olur.",
                    positioning:
                        "10 numara cebinde, santraforun hemen arkasında ceza yayı etrafında konumlanır. Takım hücumdayken neredeyse sabit noktada oyun pimi gibi durur."
                }
            ]
        },

        // ===================== FORVETLER =====================
        {
            code: "GF",
            name: "Gizli Forvet",
            group: "Forvet",
            subRoles: [
                {
                    key: "gf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Ceza sahası çevresinde topla buluşup dripling, ver–kaç ve şut kombinasyonları dener. Hem kendine hem takım arkadaşlarına pozisyon hazırlayan bir ikinci forvet gibi oynar.",
                    withoutBall:
                        "Pres hattında santraforla birlikte rakip stoper ve defansif orta sahaya baskı yapar. Zaman zaman 10 numara bölgesine çekilerek pas kanallarını da kapatır.",
                    positioning:
                        "Ana santraforun hemen arkasında veya yanında, half-space bölgelerinde konumlanır. Sık sık ceza sahasına geç koşular atarak ekstra gol tehdidi yaratır."
                }
            ]
        },
        {
            code: "YRD",
            name: "Yardımcı Forvet",
            group: "Forvet",
            subRoles: [
                {
                    key: "yrd-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top alıp duvar olur; orta saha ve kanatlara pas dağıtır. Gerektiğinde kanatlara açılıp boş alan yaratır, ceza sahasına ikinci dalga koşuları atar.",
                    withoutBall:
                        "Santraforla birlikte stoper ve kaleciye pres uygular; zaman zaman orta sahaya kadar geri gelip savunma hattını destekler.",
                    positioning:
                        "Santrafora çok yakın, bazen yarım adım geride ve half-space bölgelerinde oynar. Hem bağlantı oyuncusu hem ek gol tehdidi gibi davranır."
                },
                {
                    key: "yrd-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha fazla ceza sahası içi koşu yapar, bireysel bitiriciliğini kullanmaya çalışır. Ana forvetle birlikte çift santrafor gibi pozisyon alır.",
                    withoutBall:
                        "Presi daha önde başlatır; rakip savunma hattının oyuna rahat başlamasına izin vermemek için sürekli koşar.",
                    positioning:
                        "Hücumda büyük oranda ikinci santrafor gibi ceza sahası içinde ve çevresinde durur. Savunmada orta sahaya kadar geri çekilip blokları birleştirir."
                }
            ]
        },
        {
            code: "YF",
            name: "Yaratıcı Forvet",
            group: "Forvet",
            subRoles: [
                {
                    key: "yf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Sık sık derine gelip top alır; kanatlara ve koşu atan oyunculara yaratıcı paslar çıkarır. Aynı zamanda dripling ve şutla bireysel tehdit oluşturur.",
                    withoutBall:
                        "Top yönüne göre pres yapar; pas açılarını kapatarak rakip savunmanın rahat çıkmasını engeller. Çok yoğun koşmasa bile doğru anda doğru baskıyı yapmaya çalışır.",
                    positioning:
                        "Klasik santrafordan biraz daha geride ve serbest bir rolde; zaman zaman 10 numara bölgesine, zaman zaman kanatlara açılır. Ceza sahasına daha çok ikinci dalga koşularla girer."
                }
            ]
        },
        {
            code: "PS",
            name: "Pivot Santrafor",
            group: "Forvet",
            subRoles: [
                {
                    key: "psf-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top alır, göğüs ve kafa ile topu indirip çevresindeki oyunculara kazandırır. Çok fazla dripling yapmaz; duvar olup takım arkadaşlarını oyuna sokar.",
                    withoutBall:
                        "Rakip stoperlerle fiziksel mücadeleye girer, hava toplarında hem hücumda hem savunmada önemli rol oynar. Pres katkısı sınırlı olabilir ama varlığıyla savunmayı meşgul eder.",
                    positioning:
                        "Rakip stoperlerin hemen arasında veya hafif önlerinde, ceza sahası çevresinde konumlanır. Uzun topların ve ortaların ana hedef oyuncusudur."
                },
                {
                    key: "psf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Hem top indirir hem de fırsat bulduğunda kendi vuruşunu arar; ceza sahasında güçlü bitiricilik sergiler. Duran toplarda ve akınlarda birinci gol tehdididir.",
                    withoutBall:
                        "Stoperlere baskı yaparken aynı zamanda savunma hattını geri itmeye çalışır; rakibin rahat çıkmasını engelleyecek şekilde konum alır.",
                    positioning:
                        "Ceza sahası içinde ve çevresinde, çoğunlukla penaltı noktası ve ön direkte pozisyon alır. Çapraz koşulardan ziyade yer tutuşu ve fizik gücüyle fark yaratır."
                }
            ]
        },
        {
            code: "FG",
            name: "Fırsatçı Golcü",
            group: "Forvet",
            subRoles: [
                {
                    key: "fg-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Ceza sahası içinde veya çizgisinde topu aldığı anda en kısa yoldan şut atmaya odaklanır. Sekmeler, geri dönen toplar ve savunma hatalarından maksimum verim almaya çalışır.",
                    withoutBall:
                        "Savunma hattı arkasına ve ofsayt çizgisine yakın gezerek sürekli sarkma tehdidi yaratır. Pres katkısı minimum; esas görevi doğru anda doğru koşuyu yapmaktır.",
                    positioning:
                        "Savunma çizgisinin son omzunda, stoperlerin arkasına sarkma noktalarında dolaşır. Ceza sahası içi avcı forvet gibi hareket eder."
                }
            ]
        },
        {
            code: "KOF",
            name: "Komple Forvet",
            group: "Forvet",
            subRoles: [
                {
                    key: "kof-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top saklar, kanatlara açar, 10 numarayla duvar olur; gerektiğinde driplingle adam eksiltir. Pas, koşu ve fizik gücünü bir arada kullanarak takım arkadaşlarını besler.",
                    withoutBall:
                        "Pres hattını yönetir; stoper, bek ve defansif orta sahaya baskı uygulayarak oyunu önde tutmaya çalışır. Savunmada da çalışkan bir profil çizer.",
                    positioning:
                        "Savunma hattının omzunda ama zaman zaman derine gelerek bağlantı rolü üstlenir. Hem ceza sahası içinde hem ceza sahası çevresinde görülebilir."
                },
                {
                    key: "kof-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif şekilde kaleyi düşünür; dripling, şut ve birebirlerle pozisyonu kendi bitirmeye odaklanır. Yine de gerektiğinde pasla arkadaşlarını da oyuna sokabilir.",
                    withoutBall:
                        "Stoperlere pres yaparken savunma arkasına koşu tehdidiyle çizgiyi geriye iter. Rakip defansı sürekli hareket etmeye zorlar.",
                    positioning:
                        "Çoğunlukla ceza sahası içinde ve çevresinde, ana gol tehdidi gibi konumlanır. Derine geldiği anlarda bile hızla tekrar son çizgiye koşu atar."
                }
            ]
        },
        {
            code: "ÇF",
            name: "Çalışkan Forvet",
            group: "Forvet",
            subRoles: [
                {
                    key: "cf-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu aldığında basit oynar; hücumu bitirmekten çok takımını öne çıkarma ve savunmayı rahatlatma görevindedir. Kanatlara açılıp boş alan yaratabilir.",
                    withoutBall:
                        "Birinci presçi gibi davranır; stoper, bek ve kaleciye durmaksızın baskı uygular. Rakibin geriden oyun kurmasını zorlaştırır.",
                    positioning:
                        "Zaman zaman orta sahaya kadar geri gelir; pres anında ise stoperlerin tepesinde konumlanır. Çoğu zaman topun olduğu tarafa kayarak presi tetikler."
                },
                {
                    key: "cf-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sırtı dönük top saklar, kanat ve orta sahayla ver–kaç yapar; ceza sahası çevresinde arkadaşlarını besler. Gol atmak kadar takım oyununa katkı da ön plandadır.",
                    withoutBall:
                        "Pres yapmaya devam eder ama tamamen savunma odaklı değil; bloklar arası bağlantıyı da korur. Orta sahayla forvet hattı arasında gidip gelir.",
                    positioning:
                        "Forvet hattında ama sık sık yarım adım geriye düşerek bağlantı rolü üstlenir. Kanatlara açılıp savunmanın dengesini bozabilir."
                },
                {
                    key: "cf-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çalışkanlığını ceza sahası içi bitiricilikle birleştirir; çok sayıda koşuyla savunmayı yorarken fırsat bulduğunda şut ve son dokunuş arar.",
                    withoutBall:
                        "Yine pres yapar ama hedefi topu kazandıktan sonra hızla gol pozisyonuna gitmektir. Baskı ve gol tehdidini aynı anda sürdürür.",
                    positioning:
                        "Çoğunlukla ceza sahası çizgisi ve içinde hareket eder; boş alan bulmak için sürekli koşu yönünü değiştirir."
                }
            ]
        },
        {
            code: "SF",
            name: "Sahte Forvet",
            group: "Forvet",
            subRoles: [
                {
                    key: "sf-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Derine gelip orta saha gibi top alır, kanatlara ve koşu atan oyunculara pas dağıtır. Ceza sahasına genelde geç koşularla girer.",
                    withoutBall:
                        "Rakip defansif orta saha ve stoperler arasındaki alanı kapatarak pas bağlantılarını bozar. Daha çok gölge pres yapar, çok agresif koşmaz.",
                    positioning:
                        "Kağıt üzerinde santrafor gibi görünse de pozisyon olarak sıklıkla 10 numara cebine düşer. Savunmayı peşinden çekerek arkadaki koşuculara alan açar."
                }
            ]
        },

        // ===================== DEFANSİF ORTA SAHA =====================
        {
            code: "DOS",
            name: "Defansif Orta Saha",
            group: "Defansif Orta Saha",
            subRoles: [
                {
                    key: "dos-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu kazandıktan sonra çoğunlukla en yakın arkadaşına kısa, güvenli paslar oynar. Oyunu basit tutar, riskli pas ve driplingten kaçınır.",
                    withoutBall:
                        "Savunma hattının önünde süpürücü gibi çalışır, pas arası ve ikili mücadelelerle rakip atakları keser. Özellikle rakip 10 numara ve forvetlerin aldığı toplara sert müdahale eder.",
                    positioning:
                        "Stoperlerin hemen önünde, ceza yayı civarında konumlanır; merkez koridoru kapatır ve savunma ile orta saha arasında kalkan görevi görür."
                },
                {
                    key: "dos-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Basit pasların yanı sıra zaman zaman oyunu yön değiştirmek için kanatlara uzun toplar atar. Topu alıp birkaç metre dripling yaparak takımı öne çıkarabilir.",
                    withoutBall:
                        "Savunma önünde yine alan kaplar ama tamamen çapa gibi sabit kalmaz; topun olduğu tarafa doğru kayarak bloklar arasındaki boşlukları kapatır.",
                    positioning:
                        "DM hattında ama biraz daha hareketli; savunma önünde, orta sahaya yakın pozisyonlarda sürekli bağlantıyı canlı tutar."
                }
            ]
        },
        {
            code: "DOK",
            name: "Derin Oyun Kurucu",
            group: "Defansif Orta Saha",
            subRoles: [
                {
                    key: "dok-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Stoperlerin önünde topu alır, oyunu geriden kurarken yine savunma güvenliğini önemser. Uzun top atsa bile risk–ödül dengesini gözeterek oynar.",
                    withoutBall:
                        "Savunma hattının hemen önünde pozisyon alır; agresif top çalmaktan çok pas arası ve konumlanma üzerinden savunma yapar.",
                    positioning:
                        "DM bölgesinde stoperlere çok yakın, çoğu zaman onların hizasında veya bir–iki metre önünde konumlanır."
                },
                {
                    key: "dok-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Stoperlerden ve kaleciden topu alıp oyunu iki yana ve ileriye dağıtır. Dikine pas, ters top ve tempo ayarlama konusunda takımın beyni gibi çalışır.",
                    withoutBall:
                        "Savunma önünde konum alır ama agresif ikili mücadeleye çok girmez; pas açılarını kapatarak rakibin merkezden gelmesini zorlaştırır.",
                    positioning:
                        "DM hattında serbest bir oyun kurucu gibi dolaşır; top neredeyse genellikle ondan geçer."
                }
            ]
        },
        {
            code: "SO",
            name: "Savaşçı Orta Saha",
            group: "Defansif Orta Saha",
            subRoles: [
                {
                    key: "so-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu kazandıktan sonra hızlı ve basit paslar oynar; riskli oyun kurma işine girmez. Zaman zaman uzun top ya da kanada ani paslarla rakibi şaşırtabilir.",
                    withoutBall:
                        "Agresif şekilde pres ve baskı yapar; rakip oyun kurucuyu, 8 numarayı ve kanallara kaçan forvetleri sert ikili mücadelelerle bozar.",
                    positioning:
                        "Orta saha ile defans arasındaki bölgede, topun olduğu tarafa doğru kayarak sürekli ikili mücadele kovalar."
                },
                {
                    key: "so-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Top kazandıktan sonra hem kısa pasla oyunu devam ettirir hem de bulduğu boşluklara driplingle ilerleyebilir. Takımı hem savunmada hem hücumda öne taşımaya çalışır.",
                    withoutBall:
                        "Yüksek pres anlarında ileri çıkar, bloklar geriye çekildiğinde defans önünde ikinci bir kalkan olur. Tüm orta saha genişliğinde çalışkanlık gösterir.",
                    positioning:
                        "MC ile DM hattı arasında mekik dokur; zaman zaman rakip ceza sahası önüne kadar çıkar, sonra kendi ceza sahası çevresine kadar geri döner."
                }
            ]
        },
        {
            code: "ÖL",
            name: "Ön Libero",
            group: "Defansif Orta Saha",
            subRoles: [
                {
                    key: "ol-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Derine düşüp stoperlerin arasından veya önünden top alır, savunma hattını üçleyerek geriden oyun kurulmasına yardım eder. Kısa ve orta mesafe pasları tercih eder.",
                    withoutBall:
                        "Takım savunma yaparken stoperlerin arasına girerek üçüncü stoper gibi davranır. Rakip forvetlerin koşularını ceza sahası önünde karşılar.",
                    positioning:
                        "Top sendeyken DM ile stoper hattı arasında, top rakipteyken çoğu zaman stoperlerin arasında konumlanır."
                }
            ]
        },
        {
            code: "GL",
            name: "Gizli Libero",
            group: "Defansif Orta Saha / Libero",
            subRoles: [
                {
                    key: "gl-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Savunma önünde topu alıp driplingle orta sahaya kadar çıkar; boş alan bulduğunda ileriye taşıyıcı koşular yapar. Hem pas hem koşu tehdidi üretir.",
                    withoutBall:
                        "Savunma önünde rakip 10 numara ve forvetler için bariyer olur; top kaybında hızla geriye dönerek savunma hattının hemen önüne yerleşir.",
                    positioning:
                        "DM hattında başlar; hücumda MC hattına ve rakip yarı sahaya kadar ilerleyebilir, savunmada tekrar derine çekilir."
                }
            ]
        },
        {
            code: "REG",
            name: "Regista",
            group: "Defansif Orta Saha",
            subRoles: [
                {
                    key: "reg-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Derinden oyunu dikte eder; sık sık topu ayağında ister ve kısa/uzun paslarla oyunun yönünü değiştirir. Tempo kontrolü, ters toplar ve ara paslarla hücumu organize eder.",
                    withoutBall:
                        "Savunma önünde konumlanır ama çok agresif ikili mücadelelere girmez; pas arası ve konumlanma ile savunmaya katkı sağlar.",
                    positioning:
                        "Stoperlerin önünde, orta sahaya yakın serbest bir rolde dolaşır. Takımın ritmini belirleyen oyuncudur."
                }
            ]
        },
        {
            code: "GOK",
            name: "Gezgin Oyun Kurucu",
            group: "Defansif Orta Saha / Merkez",
            subRoles: [
                {
                    key: "gok-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sabit bir pozisyona bağlı kalmadan, top neredeyse oraya gidip oyunu yönlendirmeye çalışır. Kısa kombinasyonlar, ters toplar ve ara paslarla oyunun her iki yönüne de etki eder.",
                    withoutBall:
                        "Topun olduğu tarafa kayarak pas açılarını kapatır; merkezi tamamen boşaltmadan alan savunmasına yardımcı olur.",
                    positioning:
                        "DM ile MC hattı arasında, zaman zaman kenarlara veya half-space'e kaçan serbest bir oyun kurucudur; sahadaki boş alanları sezgisel olarak doldurur."
                }
            ]
        },
        {
            code: "VOL",
            name: "Serbest Defansif Orta Saha (Volante)",
            group: "Defansif Orta Saha",
            subRoles: [
                {
                    key: "vol-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Derinden top alıp dripling veya pasla orta sahayı geçer; half-space ve kanallara koşular atar. Kanatlara, 10 numaraya ve ceza sahası çevresine bağlantı pasları verir.",
                    withoutBall:
                        "Top kaybında hızla geri dönerek savunma önünü kapatır; pres anında ise öne çıkarak rakip oyun kurucuya baskı yapar.",
                    positioning:
                        "Başlangıçta DM hattında; hücumda MC hattına ve kanallara doğru çıkar. Savunmada tekrar stoper önüne döner."
                },
                {
                    key: "vol-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Çok daha agresif şekilde ileri koşu yapar; ceza sahası çevresine ve içine geç koşularla girer. Şut ve ikinci dalga koşularla direkt skor tehdidi hale gelir.",
                    withoutBall:
                        "Presi daha önde başlatır; geçiş anlarında hızla geri dönmek zorundadır, aksi halde DM bölgesinde boşluk kalır.",
                    positioning:
                        "Hücumda çoğu zaman MC hattının bile önüne, 10 numara yakınına kadar çıkar; savunmada DM pozisyonuna döner."
                }
            ]
        },

        // ===================== MERKEZ ORTA SAHA =====================
        {
            code: "MO",
            name: "Merkez Orta Saha",
            group: "Merkez Orta Saha",
            subRoles: [
                {
                    key: "mo-sav",
                    duty: "Savunma",
                    label: "Savunma",
                    withBall:
                        "Topu aldığında basit ama dikine paslarla oyunu öne taşımaya çalışır; fazla risk almaz. Önceliği topu kaybetmeden takımı ileri çıkarmaktır.",
                    withoutBall:
                        "Orta blokta rakip pas kanallarını kapatır, ikili mücadelelere girer ve özellikle merkez koridoru savunur. Çapa kadar derine inmeden ama ondan hemen önceki hatta yer alır.",
                    positioning:
                        "MC hattında ama biraz daha kendi yarı sahasına yakın konumlanır; savunma ve hücum hattı arasında denge unsuru gibi durur."
                },
                {
                    key: "mo-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Stoper veya DM'den aldığı topu kısa–orta mesafe paslarla kanatlara ve ileri hatlara dağıtır. Zaman zaman ceza sahası çevresine destek koşusu yapar.",
                    withoutBall:
                        "Hem merkezde hem half-space'te alan kapatır; rakip 8 numara ve oyun kuruculara yakın durur. Bloklar arası mesafeyi korumaya yardım eder.",
                    positioning:
                        "MC çizgisi üzerinde, hem savunmaya hem hücuma aynı mesafede konumlanır. Takımın iskeletini bir arada tutan bağlantı oyuncusudur."
                },
                {
                    key: "mo-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha sık dikine pas ve dripling dener; ceza sahası önüne koşu atarak şut fırsatları arar. Bazen ikinci forvet gibi ceza sahasına da girer.",
                    withoutBall:
                        "Önde pres hattına katılır; rakip defansif orta saha ve stoperlere baskı yapar. Topun arkasına dönmekte biraz gecikebilse de amaç rakibin rahat oyun kurmasını bozmak.",
                    positioning:
                        "Hücumda ceza sahası çizgisi ve çevresine kadar çıkar; savunmada orta saha çizgisine geri döner."
                },
                {
                    key: "mo-oto",
                    duty: "Otomatik",
                    label: "Otomatik",
                    withBall:
                        "Takım zihniyetine göre bazen daha savunmacı, bazen daha hücumcu merkez oyuncusu gibi davranır. Oyun içinde ihtiyaç neredeyse oraya kayar.",
                    withoutBall:
                        "Pres yüksekliğini ve alan savunmasını takım talimatına göre ayarlar; bazen DM'ye yakın, bazen rakip 10 numaraya yakın konumlanır.",
                    positioning:
                        "Genelde MC hattında başlar; maçın gidişatına göre bir kademe öne veya arkaya kayarak boşlukları doldurur."
                }
            ]
        },
        {
            code: "İYO",
            name: "İki Yönlü Orta Saha",
            group: "Merkez Orta Saha",
            subRoles: [
                {
                    key: "iyom-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sürekli hareket halinde top ister; dripling ve pasla oyunu hem genişletir hem dikine taşır. Geçiş hücumlarında topu hızla ileri götürerek takımı hücuma çıkarır.",
                    withoutBall:
                        "Hem savunma hattı önünde alan kaplar hem de ileri çıkarak prese destek verir. Sahada en çok koşan oyunculardan biri olarak boşlukları doldurur.",
                    positioning:
                        "MC hattında ama sürekli gidip gelerek hem ceza sahası önünde hem kendi ceza sahası çevresinde görünür. Tam anlamıyla iki yönlü bir mekik oyuncusudur."
                }
            ]
        },
        {
            code: "MEZ",
            name: "Mezzala",
            group: "Merkez Orta Saha",
            subRoles: [
                {
                    key: "mez-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Half-space bölgelerinde top alıp kanat ve bekle üçgenler kurar; dripling ve kısa paslarla oyun akışını sağlar. Ceza sahası çevresine geç koşular yaparak şut ve orta opsiyonu oluşturur.",
                    withoutBall:
                        "Orta sahada alan kapatırken topun olduğu tarafa kayar; bekine ve stoperine yardım ederek hem iç koridoru hem kenarı korur.",
                    positioning:
                        "MC hattında başlar, hücum anında çizgi ile merkez arasında half-space'e doğru kayar. Ceza sahası çevresinde ve içinde geç koşularla belirir."
                },
                {
                    key: "mez-huc",
                    duty: "Hücum",
                    label: "Hücum",
                    withBall:
                        "Daha agresif şekilde ceza sahası içine koşar; şut ve gol arayan üçüncü adam gibi davranır. Dripling ve ara pasları daha riskli kullanır.",
                    withoutBall:
                        "Pres hattında öne çıkar; top kazanıldığında hızlıca hücuma katılabilmek için rakip DM ve stoperlere yakın durur.",
                    positioning:
                        "Hücumda çoğunlukla 10 numara bölgesine ve ceza sahası içine sokulur; savunmada tekrar MC hattına geri döner."
                }
            ]
        },
        {
            code: "DNM",
            name: "Dinamo",
            group: "Merkez Orta Saha",
            subRoles: [
                {
                    key: "dnm-des",
                    duty: "Destek",
                    label: "Destek",
                    withBall:
                        "Sürekli hareket halinde top alır; kısa ve orta mesafeli paslarla oyunu akıtır. Fizik gücünü kullanarak driplingle rakip blokların arasından da geçebilir.",
                    withoutBall:
                        "Pres, alan kapatma ve ikili mücadeleye yoğun katkı verir; sahada neredeyse her bölgede görünür. Hem defansta hem hücumda koşu mesafesiyle fark yaratır.",
                    positioning:
                        "MC hattında serbest bir rolde; topun olduğu tarafa ve boş alanlara doğru sürekli tempo yapan bir oyuncu gibi konumlanır."
                }
            ]
        }
    ];
    window.FM_ROLE_TRAINER_ROLES = roles;
    // Her role iç ID ve görev listesi ekleyelim
    roles.forEach(function (role, idx) {
        role._id = idx;
        var dutySet = {};
        (role.subRoles || []).forEach(function (sr) {
            if (sr.duty) dutySet[sr.duty] = true;
        });
        role._duties = Object.keys(dutySet);
    });

    var DUTIES = ["Savunma", "Destek", "Hücum", "Otomatik"];

    // ------------------------------------------------------------------------
    // UI KURULUMU
    // ------------------------------------------------------------------------

    function buildApp($root) {
        var $app = $('<div>').addClass('fm-role-app');

        $('<h1>').text('FM Rol Antrenörü').appendTo($app);
        $('<div>')
            .addClass('fm-role-subtitle')
            .text('Rol listesinde arama yap, göreve göre filtrele; soldan rol + alt rol davranışını incele, sağda quiz ile kendini test et.')
            .appendTo($app);

        var $layout = $('<div>').addClass('fm-role-layout').appendTo($app);

        // SOL PANEL
        var $left = $('<section>').addClass('fm-role-panel').appendTo($layout);
        $('<h2>').text('Rol incele').appendTo($left);

        // Arama
        $('<label>')
            .addClass('fm-role-label')
            .text('Rol ara (isim veya kısaltma)')
            .appendTo($left);

        var $search = $('<input>')
            .attr({
                type: 'text',
                placeholder: 'Örn: KOF, Mezzala, ÇF...'
            })
            .css({
                width: '100%',
                padding: '0.4rem 0.6rem',
                borderRadius: '999px',
                border: '1px solid #374151',
                background: '#020617',
                color: '#e5e7eb',
                fontSize: '.85rem',
                marginBottom: '.4rem'
            })
            .appendTo($left);

        // Görev filtresi
        $('<div>')
            .addClass('fm-role-label')
            .css('margin-top', '0.15rem')
            .text('Göreve göre filtrele')
            .appendTo($left);

        var $filterRow = $('<div>')
            .css({ display: 'flex', flexWrap: 'wrap', gap: '0.35rem', marginBottom: '.6rem' })
            .appendTo($left);

        var dutyFilterState = {};
        DUTIES.forEach(function (d) { dutyFilterState[d] = false; });

        function makeDutyButton(duty) {
            var $btn = $('<button>')
                .addClass('fm-role-btn secondary')
                .text(duty)
                .css({ padding: '.25rem .7rem', fontSize: '.75rem' });

            $btn.on('click', function (e) {
                e.preventDefault();
                var active = !dutyFilterState[duty];
                dutyFilterState[duty] = active;
                if (active) {
                    $btn.css({ background: 'rgba(79,70,229,0.15)' });
                } else {
                    $btn.css({ background: 'transparent' });
                }
                applyFilters();
            });

            return $btn;
        }

        DUTIES.forEach(function (d) {
            $filterRow.append(makeDutyButton(d));
        });

        // Rol seçimi
        $('<label>')
            .addClass('fm-role-label')
            .attr('for', 'fm-role-select')
            .text('Rol')
            .appendTo($left);

        var $select = $('<select>')
            .addClass('fm-role-select')
            .attr('id', 'fm-role-select')
            .appendTo($left);

        // Alt rol (varyasyon) seçimi
        var $subRoleWrap = $('<div>')
            .css({ marginTop: '.35rem', display: 'none' })
            .appendTo($left);

        $('<label>')
            .addClass('fm-role-label')
            .text('Varyasyon (görev / kesici / sigorta vb.)')
            .appendTo($subRoleWrap);

        var $subRoleSelect = $('<select>')
            .addClass('fm-role-select')
            .appendTo($subRoleWrap);

        var $tags = $('<div>').addClass('fm-role-tags').appendTo($left);

        // Detay kartları
        var $cardWith = $('<div>').addClass('fm-role-card').appendTo($left);
        $('<h3>').text('Top bizdeyken').appendTo($cardWith);
        var $withP = $('<p>').appendTo($cardWith);

        var $cardWithout = $('<div>').addClass('fm-role-card').appendTo($left);
        $('<h3>').text('Top rakipteyken').appendTo($cardWithout);
        var $withoutP = $('<p>').appendTo($cardWithout);

        var $cardPos = $('<div>').addClass('fm-role-card').appendTo($left);
        $('<h3>').text('Konum / pas bağlantısı').appendTo($cardPos);
        var $posP = $('<p>').appendTo($cardPos);

        // SAĞ PANEL – Quiz
        var $right = $('<section>').addClass('fm-role-panel').appendTo($layout);
        var $qh = $('<div>').addClass('fm-role-quiz-header').appendTo($right);
        $('<h2>').text('Quiz modu').appendTo($qh);
        var $newBtn = $('<button>')
            .addClass('fm-role-btn secondary')
            .text('Yeni soru')
            .appendTo($qh);

        $('<div>')
            .addClass('fm-role-quiz-label')
            .text('Aşağıdaki davranış hangi role / alt role ait? Önce tahmin et, sonra “Rolü göster”.')
            .appendTo($right);

        var $qCardWith = $('<div>').addClass('fm-role-card').appendTo($right);
        $('<h3>').text('Top bizdeyken').appendTo($qCardWith);
        var $qWithP = $('<p>')
            .addClass('fm-role-muted')
            .text('Henüz soru yok.')
            .appendTo($qCardWith);

        var $qCardWithout = $('<div>').addClass('fm-role-card').appendTo($right);
        $('<h3>').text('Top rakipteyken').appendTo($qCardWithout);
        var $qWithoutP = $('<p>')
            .addClass('fm-role-muted')
            .text('Yeni soru için butona bas.')
            .appendTo($qCardWithout);

        var $qCardRole = $('<div>').addClass('fm-role-card').appendTo($right);
        $('<h3>').text('Rol / alt rol').appendTo($qCardRole);
        var $qName = $('<p>')
            .addClass('fm-role-quiz-name')
            .text('???')
            .appendTo($qCardRole);

        var $revealBtn = $('<button>')
            .addClass('fm-role-btn')
            .text('Rolü göster')
            .prop('disabled', true)
            .appendTo($qCardRole);

        $('<p>')
            .addClass('fm-role-hint')
            .text('İpucu: önce hangi hat (stoper/bek/orta/kanat/forvet) ve hangi görev (savunma/destek/hücum/otomatik) olduğunu tahmin etmeye çalış.')
            .appendTo($right);

        // STATE
        var filteredRoles = roles.slice();
        var currentRoleId = filteredRoles.length ? filteredRoles[0]._id : null;
        var currentSubRoleKey = null;
        var currentQuiz = null;
        var searchTerm = "";

        // YARDIMCI FONKSİYONLAR
        function getActiveSubRole(role) {
            if (!role || !role.subRoles || !role.subRoles.length) return null;
            var chosen = null;
            if (currentSubRoleKey) {
                chosen = role.subRoles.find(function (sr) { return sr.key === currentSubRoleKey; });
            }
            if (!chosen) {
                chosen = role.subRoles[0];
                currentSubRoleKey = chosen.key;
            }
            return chosen;
        }

        function setupSubRoleOptions(role) {
            $subRoleSelect.empty();
            currentSubRoleKey = null;

            if (!role || !role.subRoles || !role.subRoles.length) {
                $subRoleWrap.hide();
                return;
            }

            role.subRoles.forEach(function (sr) {
                $('<option>')
                    .val(sr.key)
                    .text(sr.label)
                    .appendTo($subRoleSelect);
            });

            currentSubRoleKey = role.subRoles[0].key;
            $subRoleSelect.val(currentSubRoleKey);
            $subRoleWrap.show();
        }

        function renderTags(role, subRole) {
            $tags.empty();
            if (!role) return;

            $('<span>')
                .addClass('fm-role-tag')
                .text('Bölge: ' + role.group)
                .appendTo($tags);

            if (role._duties && role._duties.length) {
                $('<span>')
                    .addClass('fm-role-tag')
                    .text('Görevler: ' + role._duties.join(', '))
                    .appendTo($tags);
            }

            $('<span>')
                .addClass('fm-role-tag')
                .text('Kod: ' + role.code)
                .appendTo($tags);

            if (subRole) {
                $('<span>')
                    .addClass('fm-role-tag')
                    .text('Varyasyon: ' + subRole.label)
                    .appendTo($tags);
            }
        }

        function describeField(text) {
            if (!text) {
                return "Bu alt rol için detaylı açıklama henüz eklenmedi.";
            }
            return text;
        }

        function updateRoleDetails() {
            var role = roles.find(function (r) { return r._id === currentRoleId; });
            if (!role) {
                $withP.text("Rol bulunamadı.");
                $withoutP.text("");
                $posP.text("");
                $tags.empty();
                $subRoleWrap.hide();
                return;
            }

            var subRole = getActiveSubRole(role);

            $withP.text(describeField(subRole && subRole.withBall));
            $withoutP.text(describeField(subRole && subRole.withoutBall));
            $posP.text(describeField(subRole && subRole.positioning));
            renderTags(role, subRole);

            $select.val(String(role._id));
        }

        function rebuildSelect() {
            $select.empty();

            if (!filteredRoles.length) {
                $('<option>')
                    .text('Sonuç yok')
                    .attr('disabled', 'disabled')
                    .appendTo($select);
                currentRoleId = null;
                updateRoleDetails();
                return;
            }

            filteredRoles.forEach(function (role) {
                $('<option>')
                    .val(String(role._id))
                    .text(role.code + " – " + role.name)
                    .appendTo($select);
            });

            if (!currentRoleId || !filteredRoles.some(function (r) { return r._id === currentRoleId; })) {
                currentRoleId = filteredRoles[0]._id;
            }

            var role = roles.find(function (r) { return r._id === currentRoleId; });
            setupSubRoleOptions(role);
            updateRoleDetails();
        }

        function applyFilters() {
            var term = (searchTerm || "").toLocaleLowerCase("tr");
            var activeDuties = DUTIES.filter(function (d) { return dutyFilterState[d]; });

            filteredRoles = roles.filter(function (role) {
                var text = (role.name + " " + role.code).toLocaleLowerCase("tr");
                var matchText = !term || text.indexOf(term) !== -1;

                var matchDuty = !activeDuties.length ||
                    (role.subRoles || []).some(function (sr) {
                        return sr.duty && activeDuties.indexOf(sr.duty) !== -1;
                    });

                return matchText && matchDuty;
            });

            rebuildSelect();
        }

        // EVENTLER
        $search.on('input', function () {
            searchTerm = $(this).val() || "";
            applyFilters();
        });

        $select.on('change', function () {
            var val = $(this).val();
            if (val === null) return;
            currentRoleId = Number(val);
            var role = roles.find(function (r) { return r._id === currentRoleId; });
            setupSubRoleOptions(role);
            updateRoleDetails();
        });

        $subRoleSelect.on('change', function () {
            currentSubRoleKey = $(this).val() || null;
            updateRoleDetails();
        });

        function newQuestion() {
            if (!roles.length) return;

            // Rastgele rol + onun rastgele alt rolü
            var rIndex = Math.floor(Math.random() * roles.length);
            var role = roles[rIndex];
            if (!role.subRoles || !role.subRoles.length) return;

            var sIndex = Math.floor(Math.random() * role.subRoles.length);
            var subRole = role.subRoles[sIndex];

            currentQuiz = { role: role, subRole: subRole };

            $qWithP
                .text(describeField(subRole.withBall))
                .removeClass('fm-role-muted');
            $qWithoutP
                .text(describeField(subRole.withoutBall))
                .removeClass('fm-role-muted');
            $qName.text('???');
            $revealBtn.prop('disabled', false);
        }

        function reveal() {
            if (!currentQuiz) return;
            var role = currentQuiz.role;
            var subRole = currentQuiz.subRole;
            var text = mw.html.escape(role.code) + " – " + mw.html.escape(role.name);
            if (subRole && subRole.label) {
                text += " / " + mw.html.escape(subRole.label);
            }
            $qName.html('<span class="fm-role-highlight">' + text + '</span>');
            $revealBtn.prop('disabled', true);
        }

        $newBtn.on('click', function (e) {
            e.preventDefault();
            newQuestion();
        });

        $revealBtn.on('click', function (e) {
            e.preventDefault();
            reveal();
        });

        // BAŞLANGIÇ
        $root.empty().append($app);
        applyFilters();
    }

    function init() {
        var $root = $('#fm-role-trainer');
        if ($root.length) {
            buildApp($root);
        }
    }

    $(init);

}(mediaWiki, jQuery));





/*roller uygulaması */
// ===================== FM TAKTİK TAHTASI (DRAG & DROP) =====================
/*roller uygulaması */
// ===================== FM TAKTİK TAHTASI (TEK SAHA, İKİ TAKIM) =====================
(function () {

    // Roller listesini al
    function getAllRolesForTactics() {
        var src = Array.isArray(window.FM_ROLE_TRAINER_ROLES)
            ? window.FM_ROLE_TRAINER_ROLES
            : [];

        var list = [];

        src.forEach(function (role) {
            if (!role || !role.subRoles || !role.subRoles.length) return;

            role.subRoles.forEach(function (sr) {
                if (!sr) return;
                list.push({
                    code: role.code,
                    name: role.name,
                    group: role.group,
                    duty: sr.duty,
                    subKey: sr.key,
                    label: sr.label || sr.duty
                });
            });
        });

        return list;
    }

    function initFmTacticsBoard() {
        var container = document.getElementById("fm-tactics-board");
        if (!container) return;

        var allRoles = getAllRolesForTactics();
        var currentDrag = null;

        // ballMode:
        // neutral  -> ikisi de nötr
        // us       -> top bizde    (biz hücum, rakip savunma)
        // them     -> top rakipte (biz savunma, rakip hücum)
        var ballMode = "neutral";
        var activeTeam = "my"; // my | opp

        container.className = "fmtb-wrapper";
        container.innerHTML = '' +
            '<div class="fmtb-layout">' +
            '  <div class="fmtb-sidebar">' +
            '    <div class="fmtb-title">Taktik Tahtası</div>' +
            '    <div class="fmtb-desc">Rolleri sürükleyip sahaya bırak. Hangi takıma ekleyeceğini seç, sonra &quot;Top Bizde / Top Rakipte&quot; ile iki tarafın blok hareketini gör.</div>' +
            '    <div class="fmtb-team-toggle">' +
            '      <label><input type="radio" name="fmtb-team" value="my" checked> Bizim Takım</label>' +
            '      <label><input type="radio" name="fmtb-team" value="opp"> Rakip</label>' +
            '    </div>' +
            '    <div class="fmtb-filter">' +
            '      <input type="text" id="fmtb-search" placeholder="Rol ara (KOF, Mezzala, SS...)">' +
            '    </div>' +
            '    <div class="fmtb-role-list" id="fmtb-role-list"></div>' +
            '  </div>' +
            '  <div class="fmtb-main">' +
            '    <div class="fmtb-mode-bar">' +
            '      <button type="button" class="fmtb-mode-btn fmtb-mode-active" data-mode="neutral">Nötr Yerleşim</button>' +
            '      <button type="button" class="fmtb-mode-btn" data-mode="us">Top Bizde</button>' +
            '      <button type="button" class="fmtb-mode-btn" data-mode="them">Top Rakipte</button>' +
            '      <span class="fmtb-hint">İpucu: Oyuncuya tıklarsan silinir, sürükleyerek yerini değiştirirsin.</span>' +
            '    </div>' +
            '    <div class="fmtb-pitch" id="fmtb-pitch"></div>' +
            '  </div>' +
            '</div>';

        var roleListEl = document.getElementById("fmtb-role-list");
        var searchEl = document.getElementById("fmtb-search");
        var pitchEl = document.getElementById("fmtb-pitch");

        // --- Hangi takım seçili? ---
        var teamInputs = container.querySelectorAll('input[name="fmtb-team"]');
        teamInputs.forEach(function (inp) {
            inp.addEventListener("change", function () {
                if (inp.checked) {
                    activeTeam = inp.value === "opp" ? "opp" : "my";
                }
            });
        });

        // ----- Rol listesi -----
        function renderRoleList(filter) {
            var f = (filter || "").trim().toLowerCase();
            roleListEl.innerHTML = "";

            allRoles.forEach(function (r) {
                var text = (r.code + " - " + r.name + " (" + r.label + ")").toLowerCase();
                if (f && text.indexOf(f) === -1) return;

                var item = document.createElement("div");
                item.className = "fmtb-role-item";
                item.draggable = true;
                item.textContent = r.code + " – " + r.name + " (" + r.label + ")";
                item.setAttribute("data-code", r.code);
                item.setAttribute("data-subkey", r.subKey);
                item.setAttribute("data-duty", r.duty);
                item.setAttribute("data-name", r.name);
                item.setAttribute("data-label", r.label);
                roleListEl.appendChild(item);
            });
        }

        renderRoleList("");

        searchEl.addEventListener("input", function () {
            renderRoleList(searchEl.value);
        });

        // ----- Drag başlangıcı (listeden) -----
        roleListEl.addEventListener("dragstart", function (e) {
            var target = e.target.closest(".fmtb-role-item");
            if (!target) return;

            currentDrag = {
                type: "pool",
                code: target.getAttribute("data-code"),
                subKey: target.getAttribute("data-subkey"),
                duty: target.getAttribute("data-duty"),
                name: target.getAttribute("data-name"),
                label: target.getAttribute("data-label")
            };

            if (e.dataTransfer) {
                e.dataTransfer.effectAllowed = "copy";
            }
        });

        // ----- Sahadaki oyuncudan drag -----
        pitchEl.addEventListener("dragstart", function (e) {
            var target = e.target.closest(".fmtb-player");
            if (!target) return;

            currentDrag = {
                type: "pitch",
                element: target,
                duty: target.getAttribute("data-duty")
            };

            if (e.dataTransfer) {
                e.dataTransfer.effectAllowed = "move";
            }
        });

        // ----- Pitch drag/drop -----
        pitchEl.addEventListener("dragover", function (e) {
            if (!currentDrag) return;
            e.preventDefault();
        });

        pitchEl.addEventListener("drop", function (e) {
            if (!currentDrag) return;
            e.preventDefault();

            var rect = pitchEl.getBoundingClientRect();
            var relX = ((e.clientX - rect.left) / rect.width) * 100;
            var relY = ((e.clientY - rect.top) / rect.height) * 100;

            relX = Math.max(3, Math.min(97, relX));
            relY = Math.max(3, Math.min(97, relY));

            if (currentDrag.type === "pool") {
                createPlayerOnPitch(relX, relY, currentDrag, activeTeam);
            } else if (currentDrag.type === "pitch" && currentDrag.element) {
                moveExistingPlayer(currentDrag.element, relX, relY);
            }

            currentDrag = null;
            applyMode(ballMode);
        });

        // ----- Takım rengine göre class -----
        function setPlayerTeamClass(el, team) {
            el.classList.remove("fmtb-player-my", "fmtb-player-opp");
            if (team === "opp") {
                el.classList.add("fmtb-player-opp");
            } else {
                el.classList.add("fmtb-player-my");
            }
        }

        // ----- Yeni oyuncu oluştur -----
        function createPlayerOnPitch(x, y, info, team) {
            var el = document.createElement("div");
            el.className = "fmtb-player";
            el.textContent = info.code;
            el.draggable = true;
            el.title = info.code + " – " + info.name + " (" + info.label + ")";
            el.setAttribute("data-duty", info.duty);
            el.setAttribute("data-base-x", x.toFixed(2));
            el.setAttribute("data-base-y", y.toFixed(2));
            el.setAttribute("data-team", team);

            setPlayerTeamClass(el, team);

            el.style.left = x.toFixed(2) + "%";
            el.style.top = y.toFixed(2) + "%";

            el.addEventListener("click", function (ev) {
                if (ev.ctrlKey || ev.metaKey) return;
                pitchEl.removeChild(el);
            });

            pitchEl.appendChild(el);
        }

        // ----- Varolan oyuncuyu hareket ettir -----
        function moveExistingPlayer(el, x, y) {
            el.setAttribute("data-base-x", x.toFixed(2));
            el.setAttribute("data-base-y", y.toFixed(2));

            el.style.left = x.toFixed(2) + "%";
            el.style.top = y.toFixed(2) + "%";
        }

        // ----- Mod butonları -----
        var modeButtons = container.querySelectorAll(".fmtb-mode-btn");
        modeButtons.forEach(function (btn) {
            btn.addEventListener("click", function () {
                var mode = btn.getAttribute("data-mode");
                ballMode = mode;

                modeButtons.forEach(function (b) {
                    b.classList.toggle("fmtb-mode-active", b === btn);
                });

                applyMode(mode);
            });
        });

        // ===================== HAREKET MANTIĞI =====================
        // Burada "mevkini" sen belirliyorsun: nötr halde oyuncuyu nereye bırakırsan
        // o, rolün nötr konumu. Top bizde / rakipte seçildiğinde:
        //  - Bizim takım hücumdaysa: bizimkiler ileri, rakip geriye.
        //  - Rakip hücumdaysa: rakip ileri, biz geriye.
        // Yönler takım tarafına göre: biz aşağıdan yukarıya hücum ediyoruz,
        // rakip yukarıdan aşağıya.

        function getMagnitudesForDuty(duty) {
            // Hücum ve savunma fazında ne kadar kayacağı (genişliği).
            // Burada "rolün görevi" devreye giriyor.
            if (duty === "Savunma") {
                return { attack: 8, defense: 10 };   // stoper/bek fazla ileri gitmesin, savunmada daha çok gömülsün
            }
            if (duty === "Hücum") {
                return { attack: 18, defense: 4 };   // hücumcu ileri çok çıkar, savunmada az geri gelir
            }
            // Destek / Otomatik / diğer
            return { attack: 13, defense: 7 };
        }

        function applyMode(mode) {
            var players = pitchEl.querySelectorAll(".fmtb-player");

            players.forEach(function (p) {
                var baseX = parseFloat(p.getAttribute("data-base-x"));
                var baseY = parseFloat(p.getAttribute("data-base-y"));
                var duty = p.getAttribute("data-duty") || "Destek";
                var team = p.getAttribute("data-team") || "my";

                // Hangi taraf hücumda?
                var attacking =
                    (mode === "us" && team === "my") ||
                    (mode === "them" && team === "opp");

                // Bizim takım hücumda: yukarı doğru (-Y)
                // Rakip hücumda: aşağı doğru (+Y)
                var attackDir = (team === "my") ? -1 : +1;
                var defendDir = -attackDir;

                var mags = getMagnitudesForDuty(duty);
                var offsetY = 0;

                if (mode === "neutral") {
                    offsetY = 0;
                } else if (attacking) {
                    offsetY = attackDir * mags.attack;
                } else {
                    offsetY = defendDir * mags.defense;
                }

                var newY = baseY + offsetY;
                newY = Math.max(3, Math.min(97, newY));

                p.style.left = baseX.toFixed(2) + "%";
                p.style.top = newY.toFixed(2) + "%";
            });
        }
    }

    // MediaWiki hazır olduğunda çalıştır
    if (typeof mw !== "undefined" && mw.loader) {
        mw.loader.using("mediawiki.util", function () {
            jQuery(initFmTacticsBoard);
        });
    } else {
        if (document.readyState === "complete" || document.readyState === "interactive") {
            initFmTacticsBoard();
        } else {
            document.addEventListener("DOMContentLoaded", initFmTacticsBoard);
        }
    }
})();