﻿/* ========================================================== */
/* NOXSIGN YÖNETİM PANELİ - SAMSUNG DEVELOPER TEMA            */
/* ========================================================== */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');

:root {
    /* --- SAMSUNG LIGHT TEMA (Temiz, Ferah ve Kurumsal) --- */
    --bg-body: #f4f7fa;
    --bg-sidebar: #ffffff;
    --bg-header: #ffffff;
    --text-main: #050b14;
    --text-muted: #5c6c80;
    --text-active: #0381FE; /* Samsung Core Blue */
    --border-color: #e5eaf0;
    --primary-color: #0381FE;
    --primary-soft: #e6f2ff;
    --hover-bg: #f8fafc;
    --card-bg: #ffffff;
    --shadow: 0 4px 15px rgba(3, 129, 254, 0.08);
}

/* --- SAMSUNG DARK TEMA (Derin Uzay, Neon Accent ve Cam Hissiyatı) --- */
[data-bs-theme="dark"] body {
    --bg-body: #000000;
    --bg-sidebar: #050b14;
    --bg-header: #050b14;
    --text-main: #ffffff;
    --text-muted: #8a9bb3;
    --text-active: #00d2ff; /* Samsung Cyan Glow */
    --border-color: #1a2436;
    --primary-color: #0381FE;
    --primary-soft: rgba(3, 129, 254, 0.15);
    --hover-bg: #0a1930;
    --card-bg: #0a1526;
    --shadow: 0 10px 25px rgba(0, 0, 0, 0.8), inset 0 1px 0 rgba(255, 255, 255, 0.02);
}

/* 1. GENEL AYARLAR */
body {
    background-color: var(--bg-body);
    color: var(--text-main);
    font-family: 'Inter', sans-serif;
    margin: 0;
    padding: 0;
    font-size: 0.92rem;
    overflow-x: hidden; /* Yatay taşmayı engelle */
}

/* Layout */
.sayfa-kabugu {
    display: flex;
    min-height: 100vh;
    transition: all 0.3s ease-in-out;
}

/* 2. SIDEBAR */
.sidebar {
    width: 270px;
    height: 100vh;
    position: fixed;
    top: 0;
    left: 0;
    background-color: var(--bg-sidebar);
    border-right: 1px solid var(--border-color);
    z-index: 1050;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
}

/* Logo Alanı */
.menu-header {
    height: 85px;
    display: flex;
    align-items: center;
    padding-left: 24px;
    border-bottom: 1px solid var(--border-color);
    background-color: var(--bg-sidebar);
    flex-shrink: 0;
    position: relative;
}

.marka-metin-grubu {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.marka-adi {
    font-weight: 900;
    font-size: 1.6rem;
    color: var(--text-main);
    letter-spacing: -1px;
    line-height: 1;
}

.marka-alt {
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--text-muted);
    letter-spacing: 1.5px;
    text-transform: uppercase;
    margin-top: 4px;
    opacity: 0.9;
}

/* Menü Linkleri */
.nav-link, .grup-baslik {
    color: var(--text-muted);
    padding: 11px 16px;
    margin: 4px 12px;
    display: flex;
    align-items: center;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.2s ease;
    border-radius: 8px;
    font-weight: 600;
}

    .nav-link:hover, .grup-baslik:hover {
        color: var(--text-main);
        background-color: var(--hover-bg);
    }

    .nav-link.active, .grup-baslik.aktif {
        color: var(--text-active);
        background-color: var(--primary-soft);
        box-shadow: inset 3px 0 0 var(--primary-color); /* Sol tarafa şık bir çizgi detayı */
    }

    .nav-link i, .grup-baslik i {
        font-size: 1.25rem;
        width: 24px;
        text-align: center;
        margin-right: 12px;
        color: inherit;
    }

/* Alt Menü */
.alt-menu-container {
    display: none;
    padding: 2px 0;
}

    .alt-menu-container.acik {
        display: block;
        animation: slideIn 0.2s ease-out;
    }

    .alt-menu-container .nav-link {
        font-size: 0.9rem;
        font-weight: 500;
        padding-left: 16px;
        margin-left: 20px;
        margin-right: 20px;
        color: var(--text-muted);
    }

        .alt-menu-container .nav-link:hover {
            background-color: transparent;
            color: var(--primary-color);
        }

        .alt-menu-container .nav-link.active {
            box-shadow: none;
            color: var(--text-active);
        }

.alt-bilgi {
    font-size: 0.75rem;
    padding: 15px;
    border-top: 1px solid var(--border-color);
    background-color: var(--bg-sidebar);
}

/* 3. HEADER (ÜST BAR) */
.ust-bar {
    height: 70px;
    background: var(--bg-header);
    border-bottom: 1px solid var(--border-color);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 24px;
    position: sticky;
    top: 0;
    z-index: 900;
    transition: all 0.3s ease;
    box-shadow: var(--shadow);
}

.header-btn {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    border: none;
    background: transparent;
    color: var(--text-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.2s;
}

    .header-btn:hover {
        background: var(--hover-bg);
        color: var(--primary-color);
    }

.badge-dot {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 8px;
    height: 8px;
    background: #ff3b30; /* Bildirim kırmızısı */
    border-radius: 50%;
    border: 2px solid var(--bg-header);
}

.header-avatar {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--primary-color), #0056b3);
    color: #ffffff;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border: 2px solid var(--bg-header);
    box-shadow: 0 3px 10px rgba(3, 129, 254, 0.3);
}

/* 4. İÇERİK ALANI */
.ana-icerik {
    flex: 1;
    margin-left: 270px;
    display: flex;
    flex-direction: column;
    width: calc(100% - 270px);
    transition: all 0.3s ease-in-out;
}

.sayfa-govdesi {
    padding: 25px;
    flex: 1;
    overflow-y: auto;
}

/* 5. MODERN SCROLLBAR (Ultra İnce & Şık) */
/* Hem Custom Scroll Hem Tüm Sayfa İçin */
::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background-color: var(--border-color);
    border-radius: 20px;
    border: 2px solid transparent;
    background-clip: content-box;
}

    ::-webkit-scrollbar-thumb:hover {
        background-color: var(--primary-color);
        border: 0;
    }

.custom-scroll {
    scrollbar-width: thin;
    scrollbar-color: var(--border-color) transparent;
}

/* 6. MASAÜSTÜ DARALTMA (COLLAPSED) */
.sayfa-kabugu.menu-dar .sidebar {
    width: 80px;
}

.sayfa-kabugu.menu-dar .ana-icerik {
    margin-left: 80px;
    width: calc(100% - 80px);
}

.sayfa-kabugu.menu-dar .menu-yazi,
.sayfa-kabugu.menu-dar .menu-ok,
.sayfa-kabugu.menu-dar .alt-bilgi,
.sayfa-kabugu.menu-dar .marka-metin-grubu,
.sayfa-kabugu.menu-dar .alt-menu-container {
    display: none !important;
}

.sayfa-kabugu.menu-dar .marka-ikon {
    display: block !important;
}

.sayfa-kabugu.menu-dar .menu-header {
    padding-left: 0;
    justify-content: center;
}

.sayfa-kabugu.menu-dar .nav-link, .sayfa-kabugu.menu-dar .grup-baslik {
    justify-content: center;
    padding: 12px 0;
    margin: 4px 8px;
    box-shadow: none; /* Dar modda sol çizgiyi kaldırıyoruz ki ikon ortalansın */
}

    .sayfa-kabugu.menu-dar .nav-link i, .sayfa-kabugu.menu-dar .grup-baslik i {
        margin-right: 0;
        font-size: 1.4rem;
    }

/* ========================================================== */
/* 7. MOBİL KAPAT BUTONU (KRİTİK DÜZELTME BURADA)             */
/* ========================================================== */

/* 🔥 ÖNEMLİ: Bu kural MEDYA SORGUSU DIŞINDA olmalı ki masaüstünde çalışsın */
.mobil-kapat-btn {
    display: none; /* Masaüstünde ASLA görünmesin */
}

/* MOBİL MOD (< 768px) */
@media (max-width: 768px) {
    .sidebar {
        left: -280px;
    }

    .ana-icerik {
        margin-left: 0;
        width: 100%;
    }

    .sayfa-kabugu.mobil-acik .sidebar {
        left: 0;
        box-shadow: 10px 0 30px rgba(0,0,0,0.5);
    }

    .menu-header {
        padding-right: 60px;
    }

    /* Mobilde Butonu Görünür Yap ve Konumlandır */
    .mobil-kapat-btn {
        display: flex !important;
        align-items: center;
        justify-content: center;
        position: absolute;
        top: 22px;
        right: 15px;
        width: 40px;
        height: 40px;
        background-color: var(--hover-bg);
        color: var(--primary-color);
        border: 1px solid var(--border-color);
        border-radius: 50%;
        z-index: 1100;
        cursor: pointer;
        box-shadow: 0 2px 10px rgba(0,0,0,0.2);
    }

        .mobil-kapat-btn:active {
            transform: scale(0.95);
            background-color: var(--border-color);
        }
}

.mobil-overlay {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.6);
    z-index: 1040;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s;
    backdrop-filter: blur(4px); /* Arka planı hafifçe buzlu cam efekti yapar */
}

    .mobil-overlay.aktif {
        opacity: 1;
        pointer-events: auto;
    }

@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateY(-5px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ========================================================== */
/* 8. KONTRAST DÜZELTMELERİ (açık/koyu temada okunabilirlik)   */
/* ========================================================== */

/* (a) bg-dark tablo başlıkları TEMAYA UYSUN: açık temada siyah başlık uyumsuzdu.
   Başlık zeminini + metnini temaya göre adaptif yap (açık temada açık başlık). */
thead.bg-dark {
    background-color: var(--bg-body) !important;
    border-bottom: 2px solid var(--border-color) !important;
}

thead.bg-dark tr, thead.bg-dark th, thead.bg-dark td,
thead.bg-dark .text-muted-adapt, thead.bg-dark .text-adapt {
    color: var(--text-muted) !important;
    opacity: 1 !important;
}

/* (b) Sarı vurgu metni (text-warning) açık temada beyaz zeminde okunmaz →
   okunabilir koyu amber'e çek. KOYU ZEMİNLERDE (bg-dark) sarı kalsın. */
[data-bs-theme="light"] .text-warning {
    color: #b9770e !important;
}

[data-bs-theme="light"] .bg-dark .text-warning,
[data-bs-theme="light"] .text-warning.bg-dark,
[data-bs-theme="light"] thead.bg-dark .text-warning {
    color: #ffc107 !important;
}

/* (c) Cyan "text-info" da açık temada soluk kalıyor → biraz koyult. */
[data-bs-theme="light"] .text-info {
    color: #0883a8 !important;
}

/* (d) text-light (beyaz) açık temada açık zemine düşüp görünmez oluyordu: sayaçlar
   (Toplam X: N), boş-durum yazıları, soluk rozetler. Açık temada adaptif yap.
   Dolu renkli/koyu zeminlerde (bg-dark/danger/primary/success/info/warning) beyaz kalsın. */
[data-bs-theme="light"] .text-light:not(.bg-dark):not(.bg-danger):not(.bg-primary):not(.bg-success):not(.bg-info):not(.bg-warning) {
    color: var(--text-main) !important;
}

[data-bs-theme="light"] .bg-dark .text-light,
[data-bs-theme="light"] .bg-danger .text-light,
[data-bs-theme="light"] .bg-primary .text-light,
[data-bs-theme="light"] .bg-success .text-light {
    color: #f8f9fa !important;
}

/* (e) KOYU KALAN KUTULAR (kart başlığı, modal başlığı, önizleme çubuğu, progress, kutucuk):
   thead DIŞINDAKİ tüm .bg-dark + .bg-black açık temada siyah kalıyordu ("tema tam aydınlık olmuyor,
   birçok yer karanlık kalıyor"). Temaya adaptif yap → açık zemin + koyu okunur metin.
   Rozet (.badge) küçük olduğundan ayrı ele alınır (aşağıda). Video/canvas gibi KASITLI siyahlar
   inline style ile (#000) yazıldığından bu kural onlara DOKUNMAZ. Koyu temada bg-dark koyu kalır. */
[data-bs-theme="light"] .bg-dark:not(thead):not(.badge),
[data-bs-theme="light"] .bg-black:not(.badge) {
    background-color: var(--bg-body) !important;
    color: var(--text-main) !important;
    border-color: var(--border-color) !important;
}

/* Bu kapların İÇİNDEKİ (veya üzerindeki) beyaz/açık metin, açık zemine düşünce görünmez oluyordu →
   koyu metne çevir. (Rozet ve gerçek renkli/dolu zeminler hariç.) */
[data-bs-theme="light"] .bg-dark:not(thead):not(.badge) .text-white,
[data-bs-theme="light"] .bg-dark:not(thead):not(.badge) .text-light,
[data-bs-theme="light"] .bg-black:not(.badge) .text-white,
[data-bs-theme="light"] .bg-black:not(.badge) .text-light {
    color: var(--text-main) !important;
}

/* Rozet (badge) açık zeminde kaybolmasın diye siyah yerine nötr slate çip + beyaz metin. */
[data-bs-theme="light"] .badge.bg-dark,
[data-bs-theme="light"] .badge.bg-black {
    background-color: var(--text-muted) !important;
    color: #ffffff !important;
}

/* (f) OUTLINE BUTON HOVER/AKTİF kontrastı (HER TEMA). Outline buton üstüne gelince dolgu rengine geçer;
   ama üzerindeki .text-success/.text-primary… sınıfı yazıyı dolgu rengiyle AYNI yapıp GÖRÜNMEZ kılıyordu
   ("yeşil butona gelince yazı kayboluyor"). Dolgulu durumda (hover/active) yazıyı okunur renge ZORLA.
   (:focus DAHİL DEĞİL — outline buton focus'ta dolmadığından beyaz yazı saydam zeminde kaybolurdu.) */
.btn-outline-primary:hover, .btn-outline-primary:active, .btn-outline-primary.active,
.btn-outline-secondary:hover, .btn-outline-secondary:active, .btn-outline-secondary.active,
.btn-outline-success:hover, .btn-outline-success:active, .btn-outline-success.active,
.btn-outline-danger:hover, .btn-outline-danger:active, .btn-outline-danger.active,
.btn-outline-info:hover, .btn-outline-info:active, .btn-outline-info.active,
.btn-outline-dark:hover, .btn-outline-dark:active, .btn-outline-dark.active,
.btn-check:checked + .btn-outline-primary, .btn-check:checked + .btn-outline-secondary,
.btn-check:checked + .btn-outline-success, .btn-check:checked + .btn-outline-danger,
.btn-check:checked + .btn-outline-info, .btn-check:checked + .btn-outline-dark {
    color: #ffffff !important;
}

.btn-outline-warning:hover, .btn-outline-warning:active, .btn-outline-warning.active,
.btn-outline-light:hover, .btn-outline-light:active, .btn-outline-light.active,
.btn-check:checked + .btn-outline-warning, .btn-check:checked + .btn-outline-light {
    color: #212529 !important;
}

/* (g) SARI (warning) AÇIK temada soluk kalıyordu ("sarı yazılar ve butonlar belli olmuyor").
   Outline-warning butonun DURAĞAN yazı+kenarını koyu amber'e çek (beyaz zeminde okunur); dolgulu (aktif) sarı
   butonda yazı zaten koyu. text-warning ikon/yazılar da (b) bloğunda koyu amber'e çekilmişti. */
[data-bs-theme="light"] .btn-outline-warning {
    --bs-btn-color: #8a5d00;
    --bs-btn-border-color: #d3a100;
    --bs-btn-hover-color: #212529;
    --bs-btn-active-color: #212529;
}
/* Dolgulu sarı butonda (btn-warning) yazı okunur koyu olsun (bazı yerlerde text-warning/text-white ile bozuluyordu). */
.btn-warning, .btn-warning:hover, .btn-warning:active { color: #212529 !important; }

/* ========================================================== */
/* 9. MOBİL UYUMLULUK — GLOBAL TEMEL (Faz 0, 2026-07-26)       */
/*    Additive + BOZMAYAN: masaüstünü ETKİLEMEZ; yalnız dar    */
/*    ekranda güvenlik ağı. Sayfa-içi kurallar SİLİNMEDİ,      */
/*    çakışmada sayfa kendi kuralını korur.                    */
/* ========================================================== */

/* G3 — Onay/uyarı diyalogları dar ekrandan taşmasın.
   Masaüstünde etkisiz (92vw çok geniş; 400/480px dialog aynen kalır),
   375-430px telefonda kutuyu ekrana sığdırır. */
.dialog-govde {
    max-width: 92vw;
    box-sizing: border-box;
}

@media (max-width: 768px) {
    /* G1 — Global tablo→kart dönüşümü. Bir tabloya sadece
       class="... mobil-kart-liste" + td'lere data-label="Başlık" eklemek yeter.
       Sayfa kendi @media kopyasına sahipse o KORUNUR; bu global yalnız
       kopyası olmayan sayfaları (Dashboard, Roller vb.) besler. */
    .mobil-kart-liste thead {
        display: none;
    }

    .mobil-kart-liste tbody tr {
        display: block;
        margin-bottom: 15px;
        border: 1px solid var(--border-color) !important;
        border-radius: 8px;
        background-color: var(--card-bg);
        padding: 10px;
    }

    .mobil-kart-liste tbody td {
        display: flex;
        justify-content: space-between;
        align-items: center;
        border: none;
        padding: 8px 5px;
        border-bottom: 1px solid var(--border-color);
        text-align: right;
    }

        .mobil-kart-liste tbody td:last-child {
            border-bottom: none;
        }

        .mobil-kart-liste tbody td::before {
            content: attr(data-label);
            font-weight: bold;
            color: var(--text-main);
            opacity: 0.6;
            margin-right: 15px;
            text-align: left;
        }

    /* G4 — Sabit/geniş form alanları dar ekranı taşırmasın (yalnız üst sınır;
       içeriği/işlevi bozmaz, masaüstünde devrede değil). Sadece sayfa gövdesi. */
    .sayfa-govdesi .form-control,
    .sayfa-govdesi .form-select,
    .sayfa-govdesi textarea,
    .sayfa-govdesi input[type="text"],
    .sayfa-govdesi input[type="number"],
    .sayfa-govdesi input[type="email"],
    .sayfa-govdesi input[type="password"],
    .sayfa-govdesi input[type="search"],
    .sayfa-govdesi input[type="url"],
    .sayfa-govdesi input[type="date"],
    .sayfa-govdesi input[type="time"],
    .sayfa-govdesi select {
        max-width: 100%;
        box-sizing: border-box;
    }
}

/* G6 — Çok dar telefonlarda (≤576px) içerik kenar boşluğunu daralt (25px → 12px) */
@media (max-width: 576px) {
    .sayfa-govdesi {
        padding-left: 12px;
        padding-right: 12px;
    }
}
