/* ==========================================================================
   accessibility.css — WCAG 2.1 A/AA yardımcıları
   Tasarımı değiştirmez; yalnızca erişilebilirlik (klavye/odak/ekran okuyucu)
   davranışlarını ekler.
   ========================================================================== */

/* --- Ekran okuyucu için görsel olarak gizli, erişilebilir metin --- */
.visually-hidden,
.sr-only {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* Odaklanınca görünür hale gelen gizli içerik (skip-link gibi) */
.visually-hidden-focusable:not(:focus):not(:focus-within) {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* --- "İçeriğe geç" skip-link ---
   position:fixed + transform ile viewport'a göre konumlanır; body'nin
   position:relative olması veya sayfa kaydırması bu yöntemi etkilemez. Normalde
   transform ile ekranın üstüne gizlenir, yalnızca odaklanınca en üstte belirir. */
.skip-link {
    position: fixed;
    top: 0;
    left: 16px;
    z-index: 100000;
    display: inline-block;
    padding: 12px 20px;
    background: #ffffff;
    color: #bd1522;
    font-weight: 700;
    border: 2px solid #bd1522;
    border-radius: 6px;
    text-decoration: none;
    transform: translateY(-150%);
    transition: transform 0.15s ease-in-out;
}

.skip-link:focus,
.skip-link:focus-visible {
    transform: translateY(0);
    outline: 3px solid #bd1522;
    outline-offset: 2px;
}

/* --- Görünür klavye odağı: KIRMIZI, tüm odaklanabilir öğelerde, her yerde ---
   Evrensel seçici + !important ile Bootstrap/bileşen stillerinin outline:none
   gibi geçersiz kılmalarını ezerek istisnasız görünür kılıyoruz. */
*:focus-visible {
    outline: 3px solid #e3001b !important;
    outline-offset: 2px !important;
    border-radius: 2px;
}

/* Bazı bileşenler mouse tıklamasında da odak halkasını gizler/ezerse diye,
   klavye-odağı (focus-visible) her durumda kırmızı kalsın. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
.nav-link:focus-visible,
.dropdown-toggle:focus-visible,
.btn:focus-visible {
    outline: 3px solid #e3001b !important;
    outline-offset: 2px !important;
}

/* Odak hedefi olarak kullanılan ana içerik bölgesi, odakta outline göstermesin */
#main-content:focus,
#main-content:focus-visible {
    outline: none !important;
}

/* Anasayfa header'ı scroll'da yukarı kayıp utility satırını (.main-menu-top:
   arama, sosyal medya, hızlı menü vb.) ekran dışına çıkarıyor ama bu öğeler hâlâ
   Tab ile odaklanılabilir kalıyordu → klavye odağı görünmez şekilde ekran dışına
   gidiyordu (WCAG 2.4.3/2.4.7). Scroll'da görünmez yaparak hem gizliyoruz (zaten
   ekran dışındaydı, görsel değişiklik yok) hem de tab sırasından çıkarıyoruz.
   Scroll yukarı çıkınca tekrar görünür/odaklanılabilir olur. */
.header-scroll .main-menu-top {
    visibility: hidden;
}

/* overflow:hidden taşıyan kapsayıcılar (kart/slayt) focus outline'ını dışarıda
   çizildiği için kırpıyor. Bu öğelerde outline'ı içeriden (negatif offset) çiz ki
   görünür kalsın: büyük haber slaytı (#pageGallery) ve sağdaki/çoklu medya haber
   kartları (.int-content), ayrıca rota/haber thumb kartları. */
#pageGallery .carousel-item a:focus-visible,
.int-content a:focus-visible {
    outline: 3px solid #e3001b !important;
    outline-offset: -3px !important;
}

/* Kart linkleri blok olsun ki outline tüm kartı sarsın */
.int-content > [class*="col-"] > a {
    display: block;
}

/* Projeler kartı: başlık linki .stretched-link ile tüm kartı kapsar (görsel/CTA
   ayrı link değil → redundant link yok). stretched-link'in konteyneri kaplaması
   için kart position:relative olmalı. */
.project-thumb {
    position: relative;
}

/* Galeri/lightbox foto linkleri: <a class="glightbox"><div class="gallery-thumb">
   <img></div></a>. Link inline + .gallery-thumb overflow:hidden olduğundan focus
   outline ya boşlukta çiziliyor ya kırpılıyordu. Linki blok yap ve outline'ı
   içeriden (negatif offset) çiz → foto kenarının hemen içinde kırmızı halka. */
a:has(> .gallery-thumb) {
    display: block;
}
a:has(> .gallery-thumb):focus-visible {
    outline: 3px solid #e3001b !important;
    outline-offset: -3px !important;
}

/* Liste başlık linki (.link-b) inline <a> + block <h5> olduğundan focus outline
   metnin değil, boş satırın etrafına çiziliyordu. Linki içeriğe göre daralan blok
   yaparak outline'ı başlık metninin etrafına oturt; "Detay" linki alt satırda kalır. */
.link-b {
    display: block;
    width: -moz-fit-content;
    width: fit-content;
    max-width: 100%;
}
.tab-list-container .link-b h5 {
    margin-bottom: 2px;
}

/* Genel: bir başlığı (h1–h6) saran <a> linkleri inline kaldığında focus outline
   içeriğin etrafına değil, yana/boşluğa ince bir dikdörtgen olarak çiziliyordu
   (ör. kart linkleri: .default-thumb-content > a). Bu linkleri blok yaparak
   outline'ı tüm içeriğin etrafına oturtuyoruz. (:has desteklemeyen eski
   tarayıcılarda kural yok sayılır; davranış bozulmaz.) */
a:has(h1),
a:has(h2),
a:has(h3),
a:has(h4),
a:has(h5),
a:has(h6) {
    display: block;
}

/* Hover ile renk değişen bağlantılar, klavye odağında da aynı vurguyu alsın
   (AA: hover -> focus eşitliği). Renk teması bozulmadan altı çizili teyit. */
a:focus-visible {
    text-decoration: underline;
}

/* --- Hareket azaltma tercihi: otomatik animasyon/kayma durdurulur --- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001ms !important;
        scroll-behavior: auto !important;
    }
}

/* Slider/otomatik kayan içerik için duraklat/oynat kontrol butonu (görünür) */
.a11y-autoplay-toggle {
    background: #bd1522;
    color: #ffffff;
    border: 1px solid #bd1522;
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.3s ease;
}

.a11y-autoplay-toggle:hover {
    background: #ffffff;
    color: #bd1522;
    border-color: #bd1522;
}

.a11y-autoplay-toggle:focus-visible {
    outline: 3px solid #bd1522;
    outline-offset: 2px;
}

/* Slick slider durdur/oynat butonu — oklarla aynı boyutta (ortada konumlanır) */
.a11y-slick-pause--inline {
    width: 45px;
    height: 45px;
    min-width: 45px;
    min-height: 45px;
    font-size: 16px;
}

/* Hızlı işlemler menüsü: durdur/oynat butonu sağ üstte (başlık hizasında, biraz aşağıda) */
.a11y-slick-pause--corner {
    position: absolute;
    top: 2.5rem;
    right: 1rem;
    z-index: 5;
}

/* ==========================================================================
   Header dropdown kartları — WAVE kontrast düzeltmeleri
   ========================================================================== */

/* Bornova/rota kartları: beyaz .thumb-info metni görselin üstünde duruyor;
   karartma gradyanı .thumb-image::after pseudo-element'inde olduğu için WAVE
   bunu okuyamayıp yanlış kontrast hatası veriyordu. Ortak ata öğeye (.thumb-info'nun
   kardeşi .thumb-image değil, ortak ebeveyni .thumb-container) WAVE'in
   algılayabileceği bir background-image tanımlıyoruz. Bu gradyan opak ürün
   görselinin arkasında kaldığından görsel olarak görünmez. .thumb-container hangi
   sayfada/konumda olursa olsun (header dropdown, anasayfa rotalar vb.) görsel
   daima opak olduğundan bu kural her yerde güvenlidir. */
.thumb-container {
    background-image: linear-gradient(
        0deg,
        rgba(0, 0, 0, 0) 0%,
        rgba(0, 0, 0, 0.32) 55%,
        rgba(0, 0, 0, 0.44) 100%
    );
    isolation: isolate;
}

/* Güncel/haber kartları: tarih metni #9f9f9f beyaz zeminde ~2.6:1 ile AA'yı
   karşılamıyordu. WCAG AA için koyulaştırıyoruz (#6c6c6c ≈ 5.2:1). */
.header-news-container .header-news-info span {
    color: #6c6c6c;
}

/* Anasayfa haber carousel'i: .carousel-caption beyaz metni görselin üstünde;
   karartma .news-main-image::after pseudo'sunda olduğu için WAVE okuyamayıp
   yanlış kontrast hatası veriyordu. Ortak ata öğeye (.carousel-item) WAVE'in
   algılayabileceği gizli gradyan veriyoruz (opak görselin arkasında görünmez). */
.page-gallery .carousel-item {
    background-image: linear-gradient(
        0deg,
        rgba(0, 0, 0, 0) 0%,
        rgba(0, 0, 0, 0.32) 55%,
        rgba(0, 0, 0, 0.44) 100%
    );
    isolation: isolate;
}

/* Anasayfa home-navigation çubuğundaki duyuru/menü metinleri beyaz ve hero
   görseli + .home-banner::before gradient'i üzerinde duruyor. Karartma pseudo'da
   olduğu için WAVE okuyamayıp yanlış kontrast hatası veriyordu. WAVE'in bir
   background-image algılaması için bunu, metnin ortak atası .home-banner öğesine
   veriyoruz. Hero carousel (height:100vh, opak cover) .home-banner'ı tamamen
   kapladığından bu gradient GÖRÜNMEZ → sıfır görsel değişim. */
.home-banner {
    background-image: linear-gradient(
        0deg,
        rgba(0, 0, 0, 0) 0%,
        rgba(0, 0, 0, 0.32) 55%,
        rgba(0, 0, 0, 0.44) 100%
    );
}

/* Carousel durdur/oynat butonu konumu (sağ üst köşe, içeriğin üstünde) */
.a11y-pause-btn {
    position: absolute;
    top: 12px;
    right: 12px;
    z-index: 20;
}
/* Hero carousel durdur/oynat butonu — alt-ortada (scroll-down'un yerine).
   Tasarım: şeffaf bg + beyaz ikon + beyaz border, biraz daha büyük, hover efekti yok. */
.a11y-pause-btn--bottom-center {
    top: auto;
    right: auto;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: transparent;
    color: #ffffff;
    border: 2px solid #ffffff;
    width: 50px;
    height: 50px;
    font-size: 18px;
    opacity: 0.5; /* normalde hafif silik — carousel okları gibi */
    transition: opacity 0.15s ease;
}
/* Hover/odakta tam beyaz (okların parlaması gibi); renk hep beyaz kalır */
.a11y-pause-btn--bottom-center:hover,
.a11y-pause-btn--bottom-center:focus-visible {
    background: transparent;
    color: #ffffff;
    border-color: #ffffff;
    opacity: 0.9;
}
/* Yuvarlağın içindeki ikon (pause çubukları) dikey olarak biraz daha uzun */
.a11y-pause-btn--bottom-center i,
.a11y-pause-btn--bottom-center svg {
    transform: scaleY(1.35);
}
/* Otomatik kaymayı durdurma butonu o konuma geldiği için aşağı-kaydır
   göstergesini gizliyoruz (ikisi aynı yerdeydi). */
.home-banner .scroll-down {
    display: none;
}

/* ==========================================================================
   Footer — WAVE kontrast düzeltmeleri (WCAG 1.4.3 AA)
   Footer arka planı açık gri (#f5f5f6); başlıklar/etiketler çok açık gri olduğu
   için metin kontrastı AA'yı karşılamıyordu. Tasarım dilini koruyarak (gri tonu)
   #6c6c6c'ye koyulaştırıyoruz (#f5f5f6 üzerinde ≈ 4.9:1, beyaz üzerinde ≈ 5.25:1).
   ========================================================================== */

/* Sütun başlıkları (HİZMETLER, BORNOVA, İLETİŞİM, SOSYAL MEDYA): #b9b9b9 ≈ 1.5:1 */
.footer-content h3 {
    color: #6c6c6c;
}

/* İletişim kutusu etiketleri (Çağrı Merkezi, Whatsapp, E-posta, Kep Adresi) ve
   ikonları: #b7b7b8 ≈ 1.6:1. Metin AA, ikon ise 1.4.11 (non-text 3:1) için. */
.footer-contact-info-box-title,
.footer-contact-info-box .footer-contact-info-box-icon {
    color: #6c6c6c;
}

/* Telif hakkı çubuğu: beyaz metin #a8a8a8 üzerinde ≈ 2.3:1. Arka planı
   koyulaştırarak beyaz metni AA'ya taşıyoruz (#6c6c6c üzerinde ≈ 5.25:1). */
.footer-copyright {
    background-color: #6c6c6c;
}

/* ==========================================================================
   İç sayfa başlık çubuğu (pagetitle) — WAVE kontrast düzeltmeleri
   .main-header arka planı #f3f3f3. "Geri" butonu metni ve sosyal ikonlar
   #b7b7b7 (~1.6:1), breadcrumb aktif öğesi #6c757d (~4.1:1) AA'yı geçmiyordu.
   #6c6c6c'ye koyulaştırıyoruz (#f3f3f3 üzerinde ≈ 4.7:1). Tüm iç sayfalarda
   geçerli. [[footer kontrast düzeltmeleriyle aynı gri]]
   ========================================================================== */

/* Sosyal ikon butonları + "Geri" butonunun metni/oku (.int-menu rengini miras alır) */
.main-title-int li .int-menu {
    color: #6c6c6c;
}

/* Breadcrumb aktif (linksiz) öğe: "geçerli sayfa" başlığı */
.main-header-title .breadcrumb li {
    color: #6c6c6c;
}
