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 10 değişikliği gösterilmiyor)
1.354. satır: 1.354. satır:
  * - Göreve göre filtre (Savunma / Destek / Hücum / Otomatik)
  * - Göreve göre filtre (Savunma / Destek / Hücum / Otomatik)
  * - Rol inceleme + Quiz modu
  * - 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.359. 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",
                "Topu kontrol altına alınca genellikle en yakın stopere, beke veya savunma önündeki oyuncuya kısa ve güvenli pas oynar. Uzun top denemeleri azdır, dripling neredeyse hiç yapmaz; ana amacı hatayı minimumda tutmaktır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma (Standart)",
                "Ceza sahasını ve rakip santraforu savunur, ikili mücadele ve kafa toplarında agresif oynar. Çizgi kırılmadığı sürece yerini terk etmez, savunma hattının disiplinini korumaya odaklanır.",
                    withBall:
             positioning:
                        "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.",
                 "Kendi ceza sahası önünde, diğer stoperle birlikte merkezde konumlanır. Kaleci ile takımın geri kalanı arasında ana savunma duvarını oluşturur."
                    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.380. 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",
                "Stoper pozisyonundan daha riskli ve dikine paslar dener, hatlar arasına veya kanatlara uzun ters toplar atar. Gerektiğinde birkaç adım dripling ile öne çıkıp rakip ilk pres hattını kırmaya çalışır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma (Standart)",
                "Temel olarak standart stoper gibi davranır; rakip santraforu marke eder, ceza sahasını korur. Ancak top arkasında kalmak yerine gerektiğinde öne çıkıp pas arası yaparak kontra başlangıçlarını keser.",
                    withBall:
            positioning:
                        "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.",
                "Savunma hattının ortasında veya hafif sağ/solunda yer alır; geriden oyun kurulumunda ilk pas opsiyonlarından biridir."
                    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.393. 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",
                "Mümkün olduğunca basit oynar; genellikle bekine veya yan stoperine kısa pas verir, baskı altında ise topu taca veya ileriye uzaklaştırır. Riskli dikine pas veya dripling neredeyse hiç yapmaz.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma (Standart)",
                 "Savunma çizgisini terk etmez, rakibi karşılamak için gereksiz öne çıkmaz. Ceza sahası içi ve çevresinde hava topları, şut blokları ve markaj ile savunma yapar.",
                    withBall:
            positioning:
                        "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.",
                "Kendi ceza sahası ön çizgisine yakın, derinde konumlanır. Takım ileri çıksa bile defans çizgisini çok yukarı taşımaz; son sigorta oyuncularından biridir."
                    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.406. 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",
                "Üçlü savunmanın kenarında topu aldığında çizgi ve iç koridor arasında dripling ile birkaç metre taşıyabilir. Kanat beki veya içe kat eden orta sahayla pas üçgenleri kurar, zaman zaman ileri hatta destek koşusu atar.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Rakibin kanat oyuncusunu veya içe kat eden forvetini karşılamak için geniş alana açılır. Çizgi ile stoper hattı arasındaki kanalı kapatır, kanat bekin arkasına sarkan koşuları süpürür.",
                    withBall:
            positioning:
                        "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.",
                "Üçlü savunmada merkez stoper ile bek arasındaki koridorda, hafif geniş konumlanır. Hem stoper hem geniş alan savunucusu gibi davranı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:
            code: "LIB",
                        "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."
            name: "Libero",
                },
            group: "Stoper / Libero",
                {
            duties: ["Savunma", "Destek"],
                    key: "ks-des",
            tags: [],
                    duty: "Destek",
            withBall:
                    label: "Destek",
                "Stoperlerin arkasından veya arasından çıkarak topu alır, dripling ile orta sahaya kadar taşıyabilir. Kanatlara ve 10 numaraya uzun, isabetli paslar atarak oyunu yönlendirir.",
                    withBall:
            withoutBall:
                        "Gerektiğinde çizgiden birkaç metre driplingle çıkar, kanat beki ve kanat oyuncusuyla pas üçgenleri kurar. Düşük–orta riskli uzun paslarla kanadı oyuna sokabilir.",
                "Savunma hattının arkasını süpürür; stoperlerin kaçırdığı koşuları kapatır, savunma arkasına atılan toplara müdahale eder. Tehlike anında ceza sahası içinde ekstra stoper gibi davranır.",
                    withoutBall:
            positioning:
                        "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.",
                "Top rakipteyken stoperlerin birkaç metre gerisinde, bir nevi ikinci kaleci gibi konumlanır. Top sende olduğunda ise stoperlerin önüne çıkarak orta sahaya yakınlaşır."
                    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 ---
         // ===================== BEKLER =====================
         {
         {
             code: "SİB",
             code: "SİB",
             name: "Sigorta Bek",
             name: "Sigorta Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Savunma"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "sib-sav",
                "İleri çıkmaktan ziyade geride kalır, çoğunlukla stoperine veya yakınındaki orta sahaya güvenli pas oynar. Baskı hissederse topu taca veya ileriye şişirerek riski azaltır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Hücumcu bek veya kanat oyuncusunun arkasını sigortalar, savunma çizgisini bozmaz. Rakip kanat oyuncusunu karşılar, çizgiye koşuları ve arka direk bindirmelerini engeller.",
                    withBall:
            positioning:
                        "İ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.",
                "Savunma hattında derin kalır; kendi yarı sahasında, çoğunlukla orta saha çizgisini geçmeden oynar. Hücumda bile konumunu çok terk etmeyen güvenlik beki rolündedir."
                    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."
                }
            ]
         },
         },
         {
         {
1.447. satır: 1.582. satır:
             name: "Sahte Bek",
             name: "Sahte Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "shb-sav",
                "Çizgiye basmak yerine iç koridora kat eder ve stoperlerin önünde ekstra orta saha oyuncusu gibi pas istasyonu olur. Topu çoğunlukla kısa ve orta mesafeli paslarla DM/MC hattına, ters kanada veya 10 numaraya taşır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Savunma yerleşiminde klasik bek pozisyonuna döner ve rakip kanadı karşılar. Orta blok presinde ise zaman zaman iç koridorda pozisyon alarak rakip 8 numarayı veya oyun kurucuyu bozar.",
                    withBall:
            positioning:
                        "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.",
                "Top rakipteyken kendi bek çizgisinde, stoperle kanat oyuncusu arasında durur. Top sendeyken half-space denilen koridora ve orta saha çizgisine doğru sokularak orta sahayı kalabalıklaştırır."
                    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 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: "İYO",
             code: "İYB",
             name: "İki Yönlü Bek",
             name: "İki Yönlü Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "iyob-des",
                "Uygun fırsat bulduğunda çizgiden bindirme yapar, bazen iç koridordan koşu atar. Orta açar, yerden pas çıkarır veya ceza sahası çevresinde kısa paslarla oyunu devam ettirir.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Hem çizgiyi hem iç koridoru savunur; rakip kanat oyuncusunu, içe kat eden forveti ve zaman zaman bek arkasına sarkan koşuları takip eder. Pres anında öne çıkarak rakip kanadın pas opsiyonlarını baskılar.",
                    withBall:
            positioning:
                        "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.",
                "Top rakipteyken savunma hattında klasik bek çizgisinde; top sende olduğunda kanat oyuncusunun biraz gerisinde veya iç tarafında konumlanır. Sürekli gidip gelen, hatlar arası mekik dokuyan bir bek profili sergiler."
                    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 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.473. 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",
                "Çoğunlukla kısa, güvenli pas oynar; stoper ve defansif orta saha ile üçgen kurar. Hücuma çok az katkı verir, riskli orta veya driplinge girmez.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Çizgiyi terk etmez, rakip kanadı göğüsler ve savunma çizgisini bozmadan alan kapatır. Arka direğe yapılan koşuları takip eder, savunma açığı bırakmamaya odaklanır.",
                    withBall:
            positioning:
                        "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.",
                "Sürekli kendi yarı sahasında, savunma çizgisi üzerinde kalır. Takım ileri çıksa bile orta saha çizgisini nadiren geçer."
                    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."
                }
            ]
         },
         },
         {
         {
1.486. 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",
                "Çizgiden agresif bindirmeler yapar, hücumda genişliği sağlar ve sık sık orta keser. Pas opsiyonu yoksa ceza sahası çevresine yerden pas çıkarır veya içe kat eden oyuncularla duvar pasına girer.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Rakip kanat ve bek bindirmelerini karşılar, çizgiyi kapatır. Geri dönüşlerde hızını kullanarak savunma hattına çabuk yerleşir.",
                    withBall:
            positioning:
                        "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.",
                "Top sendeyken çoğu zaman orta saha çizgisinin ilerisinde, kanat oyuncusunun gerisinde veya yanında konumlanır. Top rakipteyken savunma dörtlüsünün klasik bek pozisyonuna geri döner."
                    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."
                }
            ]
         },
         },
         {
         {
1.499. satır: 1.731. satır:
             name: "Standart Bek",
             name: "Standart Bek",
             group: "Bek",
             group: "Bek",
             duties: ["Savunma", "Destek", "Hücum", "Otomatik"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "sb-sav",
                "Duruma göre zaman zaman bindirme yapar, bazen de geride kalarak güvenli pas opsiyonu olarak kalır. Uygun ortamda orta açar, müsait değilse içe veya geriye oynar.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Rakip kanat oyuncusunu ve bekin bindirmelerini karşılar, savunma hattının dengesini korur. Pres talimatına bağlı olarak zaman zaman öne çıkarak baskıya katılır.",
                    withBall:
             positioning:
                        "Topu ilerletmekten çok savunmayı güvenceye alacak paslar oynar; çoğunlukla stoperine veya orta sahaya döner. Bindirmeleri kısıtlıdır.",
                 "Genelde bek çizgisinde, orta saha çizgisine yakın bir hatta oynar. Takımın taktik anlayışına göre hem hücuma destek verir hem savunmada pozisyonunu korur."
                    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."
                }
            ]
         },
         },


         // --- 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",
                "Çizgiden top sürer, orta açar veya içe kat ederek basit kombinasyonlara girer. Hücumda çok yaratıcı olmasa da sürekli koşu ve hareketlilikle savunmayı zorlar.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Hem bekinin önünü kapatır hem de çoğu zaman kendi ceza sahasına kadar geriye koşarak savunmaya yardım eder. Pres ve alan kapatma konusunda yüksek çalışma temposu gösterir.",
                    withBall:
            positioning:
                        "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.",
                 "Top sendeyken çizgiye yakın; top rakipteyken kendi bekinin önünde veya yanında, çoğu zaman ikinci bek gibi derine iner."
                    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.527. 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",
                "Topu güvenli bölgelere taşır, genellikle içe veya geriye pas oynar. Zaman zaman çizgiden hücuma katılır ama temel işi hücumu bitirmek değil, takıma denge sağlamaktır.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Bekin önünde savunma kalkanı gibi durur, rakip kanat ve bekin kombinasyonlarını bozar. Çizgiyi kapatır, çoğu zaman kendi ceza sahası çevresine kadar savunmaya döner.",
                    withBall:
            positioning:
                        "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.",
                "Top rakipteyken kendi yarı sahasında, bek önünde ikinci savunma hattı gibi konumlanır. Hücumda ise orta saha çizgisi civarında, destek mesafesinde kalır."
                    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.540. 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",
                "Çizgiye basmak yerine iç koridora doğru gelir, pas açılarını görüp oyunu yönlendirir. Kanat bekinin bindirmelerini besler, ceza sahası çevresinde kilit paslar kovalar.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Rakip bek veya stoperin kanat tarafındaki pas opsiyonlarını kapatır, çok derine inmeden pres hattına katılır. Çizgiyi tam kapatmak yerine pas aralarına yönelir.",
                    withBall:
            positioning:
                        "Ç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.",
                "Kağıt üzerinde kanat gibi görünse de top sende olduğunda half-space'e, iç koridora yaklaşır. Bekle aynı koridorda pas üçgeni kuran geniş oyun kurucudur."
                    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 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.553. 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",
                "Çizgide başlayıp topu aldıktan sonra iç koridora kat eder, ceza sahası yayına doğru şut veya ara pas açısı arar. Bek bindiriyorsa onu kullanarak iç-dış kombinasyonları kurar.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Rakip beke baskı yapar, içe kat eden kanat oyuncusunu da kısmen takip eder. Savunma esnasında çoğu zaman çizgi ile iç koridor arasında pozisyon alır.",
                    withBall:
            positioning:
                        "Ç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.",
                "Başlangıç pozisyonu çizgide; hücumda iç koridora doğru savrularak 10 numara / ikinci forvet bölgesine yaklaşır. Çoğu zaman arka direk koşuları ve ceza sahası içi pozisyonlar kovalar."
                    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",
                "Topu çoğunlukla hazır pozisyonda alır; son vuruş, tek dokunuş veya basit bitirici aksiyonlarla pozisyonu sonuçlandırmaya çalışır. Çok fazla top istemez, doğru boşluğu kovalar.",
                    duty: "Hücum",
            withoutBall:
                    label: "Hücum",
                "İç koridor ve arka direk etrafında dolaşarak savunma hattı arasındaki boşlukları arar. Pres katkısı sınırlı olabilir ama savunma hattının konsantrasyonunu bozar.",
                    withBall:
            positioning:
                        "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.",
                "Çizgiden ziyade savunma ile orta saha arasındaki boşluklarda, ikinci forvet gibi konumlanır. Özellikle arka direk ve uzak direk koşularıyla ceza sahası içinde görünür."
                    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.579. 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",
                "Çizgide veya half-space'te sırtı dönük top alır, göğüsle indirir veya kafayla indirme yapar. Kanat beki ve orta sahaya topu duvar olarak bırakır, nadiren kendi driplingiyle adam geçer.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Rakip beke ve stopere pres hattı içinde baskı yapar, uzun toplarda hava topu mücadelesine girer. Savunmada boyu ve fiziğiyle duran toplarda ekstra savunmacı gibi görev alır.",
                    withBall:
            positioning:
                        "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.",
                "Kanat koridorunda ama klasik sprinter kanat kadar çizgiye yapışmaz; daha çok ortayla forvet arasında bir yerde, uzun topların ineceği bölgede konumlanır."
                    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",
                "Ceza sahası önü ve half-space bölgelerinde topla buluşup kilit pas, çalım ve şut dener. Oyunun yaratıcı beyni olarak son pası atmak ve rakip savunmayı açmak üzerine oynar.",
                    duty: "Hücum",
            withoutBall:
                    label: "Hücum",
                "Genellikle çok derine inmez; rakip defansif orta sahalara gölge pres yapar. Ana önceliği top kazanmak değil, doğru anı bekleyip hücumda fark yaratmaktır.",
                    withBall:
            positioning:
                        "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.",
                "Forvetle orta saha hattı arasında, ceza sahası yayının önünde serbest dolaşır. Zaman zaman kanatlara açılır ama merkezde oyunun ağırlık noktasını oluşturur."
                    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.607. 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",
                "Hem pas hem koşu tehdidi üretir; gerektiğinde dripling ile topla ceza sahasına girer, gerektiğinde çevresine pas dağıtır. Şut fırsatı bulduğunda ceza sahası dışından da deneme yapar.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Pres hattına katılır; rakip defansif orta sahaya veya top çıkaran stopere baskı yapar. Takım savunma yaparken orta blokta yer alır, çok derine gömülmez.",
                    withBall:
            positioning:
                        "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.",
                "Ceza sahası önü ve half-space çizgisinde, forvetle çift yönlü bağlantı kurar. Bazen ikinci forvet gibi ceza sahasına girer, bazen de biraz geriye gelip oyun kurulumuna destek verir."
                    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.620. 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",
                "Ceza sahası önünde topu alıp oyunu yönlendirir, kanatlara ve forvete kilit paslar atar. Daha az dripling, daha çok vizyon ve pas üzerinden oynar; tempoyu kontrol etmeye çalışır.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Rakip defansif orta saha ve stoperler arasındaki pas kanallarını gölge presle kapatır. Aşırı koşu temposu yapmaz, daha çok pozisyon alarak savunmaya katkı verir.",
                    withBall:
            positioning:
                        "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.",
                "Ceza yayı çevresinde, half-space bölgelerinde dolaşır. Takım hücumda yerleşmişken genellikle topun olduğu tarafa yaklaşarak pas üçgenlerinin merkezi olur."
                    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.633. 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",
                "Statik bir oyun kurucu gibi ceza sahası önünde top ister, dönüp kilit pas arar. Çok koşu yapmaz, top ayağına geldiğinde oyunu yavaşlatıp açacak pası bulmaya çalışır.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Pres katkısı sınırlıdır; çoğunlukla rakip defansif orta sahaya yakın pozisyon alır ama agresif koşular yapmaz. Savunmaya fiziksel değil konumsal katkı verir.",
                    withBall:
            positioning:
                        "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.",
                "10 numara cebinde, santraforun hemen arkasında ve ceza yayı etrafında sabit kalmayı tercih eder. Diğerleri koşarken o oyunun merkez pimi gibi yerinde durur."
                    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",
                "Ceza sahası çevresinde topla buluşup dripling, ver-kaç ve şut kombinasyonları dener. Hem kendine hem takım arkadaşlarına pozisyon hazırlamaya çalışır.",
                    duty: "Hücum",
            withoutBall:
                    label: "Hücum",
                "Santrafor gibi stoperlere baskı yaparken, zaman zaman 10 numara bölgesine çekilip pas kanallarını kapatır. Defans arkasına koşu tehdidi ile savunmayı geri iter.",
                    withBall:
            positioning:
                        "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.",
                "Klasik santraforun hemen arkasında veya yanında, ikinci forvet gibi konumlanır. Top sendeyken sık sık ceza sahasının içine koşu atar."
                    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.661. 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",
                "Ana santraforun yanında veya arkasında topla buluşur, sırtı dönük top saklayıp orta sahaya ve kanatlara dağıtır. Fırsat bulduğunda ceza sahasına koşu atıp ikinci gol tehdidi olur.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Stoperlere ve geriden oyun kuran oyunculara pres uygulamada santrafora yardım eder. Takım savunma yaparken orta blok ile forvet hattı arasında bağlantı rolü üstlenir.",
                    withBall:
            positioning:
                        "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.",
                "Santraforla aynı hatta veya biraz gerisinde, half-space bölgelerinde dolaşır. Hem bağlantı oyuncusu hem ek gol tehdidi gibi davranır."
                    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.674. 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",
                "Sık sık derine gelip top alır, kanatlara ve koşu atan oyunculara yaratıcı paslar çıkarır. Şut ve dripling yeteneğini kullanarak savunmayı bireysel aksiyonlarla da tehdit eder.",
                    duty: "Hücum",
            withoutBall:
                    label: "Hücum",
                "Presi genelde top yönüne göre şekillendirir; pas açılarını kapatarak rakip stoper ve orta sahayı zorlar. Çok yoğun koşmasa da doğru yerde doğru baskıyı yapmaya çalışır.",
                    withBall:
            positioning:
                        "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.",
                "Klasik santrafordan biraz daha geride ve serbest; zaman zaman 10 numara bölgesine, zaman zaman kanatlara açılır. Ceza sahasına daha çok ikinci dalga gibi girer."
                    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."
                }
            ]
         },
         },
         {
         {
1.687. satır: 2.198. satır:
             name: "Pivot Santrafor",
             name: "Pivot Santrafor",
             group: "Forvet",
             group: "Forvet",
             duties: ["Destek", "Hücum"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "psf-des",
                "Sırtı dönük top alır, göğüs, kafa veya tek dokunuşla topu kanatlara ve ikinci forvete indirir. Duran toplarda ve ortalarda hedef oyuncudur, fırsat bulduğunda doğrudan kaleyi düşünür.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Uzun topları karşılamak ve savunmayı ileri itmek için stoperlere yakın oynar. Presi sınırlı olabilir ama fizik gücüyle savunma hattını meşgul eder.",
                    withBall:
            positioning:
                        "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.",
                "Rakip stoperlerin arasında veya hafif önlerinde, ceza sahası çevresinde konumlanır. Hem duvar paslarının merkezi hem de hava toplarında ana hedef oyuncudur."
                    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.700. 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",
                "Ceza sahası içinde veya çizgisinde topla buluştuğu anda hızlı karar alıp şut çeker. Boş alan ve seken topları kovalayarak en az dokunuşla pozisyonu bitirmeyi amaçlar.",
                    duty: "Hücum",
            withoutBall:
                    label: "Hücum",
                "Savunma arkasına ve ofsayt çizgisine yakın gezerek sürekli sarkma tehdidi yaratır. Pres katkısı sınırlı; daha çok savunmayı arkaya yaslamak için derin koşular yapar.",
                    withBall:
            positioning:
                        "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.",
                "Savunma hattının son çizgisine yakın, çoğunlukla stoperlerin omzunda dolaşır. Ceza sahası içi pozisyonları kovalayan tipik bir avcı forvettir."
                    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.713. 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",
                "Hem sırtı dönük top saklayabilir, hem dripling ile adam eksiltebilir, hem de şut tehdidi yaratır. Pas, koşu ve fizik gücünü kullanarak her türden hücum aksiyonuna katılır.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Pres hattını yönetir; stoper, bek ve defansif orta sahaya baskı yapar. Takım savunmasında ilk savunmacı olarak konum alır, gerektiğinde kanatlara doğru kayar.",
                    withBall:
            positioning:
                        "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.",
                "Savunma hattının omzunda ama zaman zaman derine gelerek bağlantı kurar. Hem ceza sahası içinde bitirici hem de ceza sahası dışında oyun kurucu gibi davranabilir."
                    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.726. 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",
                "Topu aldığında basit oynamaya ve takımı öne taşımaya çalışır; çok yaratıcı olmasa da mücadeleyle savunmayı zorlar. Zaman zaman kanatlara açılıp boş alan yaratır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Takımın birinci presçisi gibidir; stoper, kaleci ve defansif orta sahaya sürekli baskı yapar. Savunma hattını öne çekmek ve rakibin rahat çıkmasını engellemek için çok koşar.",
                    withBall:
            positioning:
                        "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.",
                "Yer yer santrafor, yer yer ikinci forvet veya kanat gibi çalışır; sürekli hareket halindedir. Çoğu zaman topun olduğu tarafa kayarak presi tetikler."
                    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.739. satır: 2.314. satır:
             name: "Sahte Forvet",
             name: "Sahte Forvet",
             group: "Forvet",
             group: "Forvet",
             duties: ["Destek"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "sf-des",
                "Derine gelip orta saha gibi top alır, oyunu yönlendirir ve kanatlara / koşu atan oyunculara pas çıkarır. Ceza sahasına genelde geç koşularla veya boş alan bulduğunda girer.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Rakip defansif orta saha ve stoperler arasındaki alanı kapatarak pas bağlantılarını bozar. Çok yüksek pres yerine doğru açıyla gölge pres yapmaya odaklanır.",
                    withBall:
            positioning:
                        "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.",
                "Kağıt üzerinde santrafor pozisyonunda görünse de pratikte 10 numara cebine sık sık gelir. Savunmayı peşinden çekerek arkadaki koşuculara alan açar."
                    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",
                "Topu kazandıktan sonra çoğunlukla en yakın arkadaşa kısa, basit paslar oynar. Bazen oyunu yön değiştirmek için kanatlara uzun top da atabilir ama temel işi güvenli pas akışı sağlamaktır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Savunma hattının önünde süpürücü gibi çalışır, pas arası ve ikili mücadelelerle rakip atakları keser. Rakip 10 numara ve içe kat eden forvetleri karşılar, savunma önünde kalkan olur.",
                    withBall:
            positioning:
                        "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.",
                "Stoperlerin hemen önünde, ceza yayı civarında konumlanır. Koşu mesafesini fazla açmadan merkez koridoru savunur."
                    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.767. 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",
                "Stoperlerden veya 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.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Savunma önünde konum alır ama agresif pres yerine çoğunlukla pozisyon alarak pas kanallarını kapatır. Top kapma işini yanındaki daha savaşçı oyunculara bırakabilir.",
                    withBall:
            positioning:
                        "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.",
                "Stoperlerin hemen önünde veya aralarında, derine gelerek top alır. Çoğu hücum onun üzerinden başlar."
                    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.780. 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",
                "Topu kazandıktan sonra basit ve hızlı paslar oynar; dripling veya riskli pas işine çok girmez. Nadiren ileriye koşu atıp ikinci topları kovalar.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Agresif şekilde pres ve baskı yapar; rakip oyun kurucuyu, 8 numarayı ve kanallara kaçan forvetleri fizik gücüyle bozar. Takımın ana top kazanan oyuncularından biridir.",
                    withBall:
            positioning:
                        "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.",
                "Orta saha hattında ama çoğu zaman topun olduğu tarafa doğru kayar. Savunma önünde ve half-space bölgelerinde sürekli ikili mücadeleye girer."
                    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.793. 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",
                "Derine düşüp stoperlerin arasından veya önünden top alır, savunma hattını üçler. Topu genellikle kısa paslarla orta sahaya taşır; gerektiğinde uzun top da atabilir.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Takım savunma yaparken stoperlerin arasına girerek üçüncü stoper gibi davranır. Rakip forvetlerin koşularını ceza sahası önünde karşılar, savunma arkasına sızmaları engeller.",
                    withBall:
            positioning:
                        "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.",
                "Top sendeyken DM ile stoper arasında gidip gelir, çıkışta stoperlerin hizasında; top rakipteyken çoğunlukla stoperler arasına gömülür."
                    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",
             code: "GL",
             name: "Gizli Libero",
             name: "Gizli Libero",
             group: "Defansif Orta Saha",
             group: "Defansif Orta Saha / Libero",
             duties: ["Savunma"],
             subRoles: [
            tags: [],
                {
            withBall:
                    key: "gl-sav",
                "Savunma önünde topu alıp driplingle orta sahaya kadar çıkar, açık alan bulduğunda ilerleyerek hücuma katılır. Hem pas hem koşu tehdidiyle rakip bloklar arasına sızar.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Savunma önünde rakip 10 numara ve forvetler için bir bariyer gibidir. Top sendeyken çok ileri çıkar, top kaybında hızla geri dönüp savunmanın önünü kapatmaya çalışır.",
                    withBall:
            positioning:
                        "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.",
                "Başlangıç pozisyonu DM hattında; hücumda ise çoğu zaman MC hattına ve hatta rakip yarı sahaya kadar ilerler. Geçiş anlarında derine hızla dönüş yapar."
                    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.819. 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",
                "Derinden oyunu dikte eder; sık sık topu ayağında ister ve uzun/kısa paslarla oyunun yönünü değiştirir. Tempo kontrolü, ters toplar ve ara paslarla hücumu organize eder.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Savunma önünde konum alır ama çok agresif ikili mücadeleye girmez; pas arası ve konumlanma ile savunmaya katkı verir. Yanındaki daha savaşçı oyuncuların açtığı alanı kapatır.",
                    withBall:
            positioning:
                        "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.",
                "Stoperlerin önünde, orta sahaya yakın bir noktada serbestçe dolaşır. Top neredeyse genellikle ona uğrar, takımın ritmini belirler."
                    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",
                "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.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Tam merkezi bırakmadan ama tamamen sabit de kalmadan topun olduğu bölgeye kayar. Özellikle pas araları ve pres tetikleyici pozisyonlarla savunmaya destek verir.",
                    withBall:
            positioning:
                        "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.",
                "DM ile MC hattı arasında, zaman zaman kenarlara veya half-space'e kaçan serbest bir oyun kurucudur. Sahadaki boş alanları sezgisel olarak doldurmaya çalışır."
                    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.845. 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",
                "Derinden top alıp dripling veya pasla orta sahayı geçer, half-space bölgelerine koşu atar. Kanatlara, 10 numaraya ve ceza sahası çevresine bağlantı pasları verir; zaman zaman şut da dener.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Top kaybedildiğinde hızla geri koşarak savunma önünü kapatır ama gerektiğinde öne çıkıp pres yapar. Hem orta sahayı hem savunma hattı önünü süpürür.",
                    withBall:
            positioning:
                        "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.",
                "Başlangıçta DM hattında; hücumda MC hattına ve kanallara doğru çıkar. Ataklarda ekstra koşucu 8 numara gibi, savunmada ise klasik defansif orta saha gibi davranır."
                    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",
                "Stoper veya defansif orta sahadan aldığı topu kısa ve orta mesafe paslarla ileriye taşır. Görevine göre bazen risk almadan oyunu dengeler, bazen dikine pas ve koşularla hücuma katılır.",
                    duty: "Savunma",
            withoutBall:
                    label: "Savunma",
                "Orta blokta hem pas kanallarını kapatır hem de ikili mücadelelere girer. Savunma ve hücum hattı arasında denge unsurudur; gerektiğinde geri koşar, gerektiğinde prese destek verir.",
                    withBall:
            positioning:
                        "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.",
                "MC hattında, savunma ile hücum arasındaki ana bağlantı bölgesinde konumlanır. Göreve göre biraz daha derine veya ileriye kayabilir ama omurganın ortasında kalı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."
                }
            ]
         },
         },
         {
         {
1.873. satır: 2.575. satır:
             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",
                "Topu kazandıktan sonra hızla ileriye taşır, dripling veya pasla hücum geçişlerini başlatır. Aynı zamanda basit paslarla oyunu da sakinleştirebilir; tamamen duruma göre hareket eder.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Hem savunma hattının önünde alan kaplar hem de ileriye çıkarak pres yapar. Takımın koşu mesafesi en yüksek oyuncularından biridir; boştaki alanları doldurur.",
                    withBall:
            positioning:
                        "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.",
                "MC hattında ama sürekli hareket halinde; savunmada derine, hücumda ileriye koşular atar. Zaman zaman kanatlara bile kayarak boşlukları kapatı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.886. 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",
                "Half-space denilen iç koridorlarda top alıp kanatla bek arasındaki boşluklara sızar. Dripling ve dar alanda paslaşmalarla hücumun sağ veya sol tarafını kalabalıklaştırır, ceza sahasına geç koşular yapar.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Orta sahada alan kapatırken topun olduğu tarafa kayar, hem bekine hem stoperine yardım eder. Rakibin içe kat eden kanatlarını ve 8 numaralarını takip eder.",
                    withBall:
            positioning:
                        "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.",
                "MC hattında başlar, hücum anında çizgi ile merkez arasında sağ veya sol half-space'e doğru kayar. Ceza sahası çevresinde ve içine geç koşularla görünür."
                    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.899. 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",
                "Sürekli hareket halinde top ister, kısa ve orta mesafeli paslarla oyunu akıtır. Tempo yükseltmek gerektiğinde dripling ve hızlı paslarla oyunu hızlandırır.",
                    duty: "Destek",
            withoutBall:
                    label: "Destek",
                "Sahada neredeyse her yerde görülür; pres, alan kapatma ve ikili mücadeleye yoğun katkı verir. Hem defans hattı önünde hem rakip yarı sahada pres yapabilir.",
                    withBall:
            positioning:
                        "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.",
                "MC hattında serbest sayılabilecek bir rolde; topun olduğu tarafa ve boş alanlara doğru sürekli koşular yapar. Takımın enerji kaynağı ve mekik oyuncusu gibidir."
                    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öreve göre filtrele; soldan rolün davranışını 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
         $('<label>')
         $('<label>')
             .addClass('fm-role-label')
             .addClass('fm-role-label')
1.982. 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);
                 if (active) {
                 if (active) {
                     $btn.css({ background: 'rgba(79,70,229,0.15)' });
                     $btn.css({ background: 'rgba(79,70,229,0.15)' });
1.989. satır: 2.721. satır:
                     $btn.css({ background: 'transparent' });
                     $btn.css({ background: 'transparent' });
                 }
                 }
                 applyFilters();
                 applyFilters();
             });
             });
2.011. 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);
2.027. 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);
2.039. 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);


2.057. 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')
2.071. 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
        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();
             $tags.empty();
             if (!role) return;
             if (!role) return;
2.090. 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>')
2.100. 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);
             }
             }
2.110. 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;
2.118. 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));
            var subRole = getActiveSubRole(role);
             $posP.text(describeField(role.positioning));
 
             renderTags(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.156. satır: 2.941. satır:
             }
             }


            var role = roles.find(function (r) { return r._id === currentRoleId; });
            setupSubRoleOptions(role);
             updateRoleDetails();
             updateRoleDetails();
         }
         }
2.166. satır: 2.953. satır:
                 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;
                 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.174. satır: 2.965. satır:
         }
         }


         // ---- EVENTLER -------------------------------------------------------
         // EVENTLER
 
         $search.on('input', function () {
         $search.on('input', function () {
             searchTerm = $(this).val() || "";
             searchTerm = $(this).val() || "";
2.185. satır: 2.975. satır:
             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();
         });
         });
2.190. satır: 2.987. satır:
         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.204. 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.223. satır: 3.030. satır:
         });
         });


         // Başlangıç
         // BAŞLANGIÇ
         $root.empty().append($app);
         $root.empty().append($app);
         applyFilters();
         applyFilters();
2.238. 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);
        }
    }
})();