@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Lexend:wght@600;700&display=swap');

/* ===================================================================
   DESIGN TOKENS
   Not: --bg, --border, --primary, --success, --text, --text-muted
   birçok sayfada inline style="...var(--x)..." olarak kullanılıyor —
   bu isimler korunuyor, sadece değerleri ve kapsamı genişletiliyor.
=================================================================== */
:root {
    /* marka */
    --primary: #4338ca;
    --primary-600: #4f46e5;
    --primary-dark: #372aa8;
    --primary-light: #eef0fd;
    --primary-ring: rgba(67, 56, 202, .16);

    /* nötr yüzeyler */
    --bg: #f4f5f9;
    --bg-subtle: #eceef5;
    --card-bg: #ffffff;
    --border: #e6e8f0;
    --border-strong: #d7dae5;
    --text: #1a1e2c;
    --text-muted: #6b7189;
    --text-faint: #9498ab;

    /* anlamsal renkler */
    --success: #178a4c;
    --success-dark: #106b3a;
    --success-light: #eafbf1;
    --danger: #dc2626;
    --danger-dark: #b91c1c;
    --danger-light: #fdeeee;
    --warning: #b45309;
    --warning-dark: #92400e;
    --warning-light: #fef6e7;
    --info: #0369a1;
    --info-dark: #075985;
    --info-light: #eff8ff;
    --purple: #7c3aed;
    --purple-light: #f2eefe;

    /* kenar çubuğu */
    --sidebar-w: 264px;
    --sidebar-w-mini: 78px;
    --sidebar-bg: #10142200;
    --sidebar-bg-solid: #0f1220;
    --sidebar-bg-2: #171b30;
    --sidebar-text: #9698ad;
    --sidebar-text-strong: #f3f4fb;
    --sidebar-border: rgba(255,255,255,.07);

    /* ölçüler */
    --radius: 14px;
    --radius-sm: 9px;
    --radius-lg: 18px;
    --radius-pill: 999px;
    --header-h: 62px;

    --shadow-xs: 0 1px 2px rgba(20,22,45,.04);
    --shadow-sm: 0 1px 3px rgba(20,22,45,.06), 0 1px 2px rgba(20,22,45,.05);
    --shadow-md: 0 10px 24px -6px rgba(20,22,45,.12), 0 4px 8px -4px rgba(20,22,45,.06);
    --shadow-lg: 0 24px 48px -12px rgba(20,22,45,.22);
    --shadow-focus: 0 0 0 3.5px var(--primary-ring);

    --ease-out: cubic-bezier(.16,1,.3,1);
    --ease-spring: cubic-bezier(.34,1.35,.64,1);
    --dur-fast: .13s;
    --dur-base: .2s;
    --dur-slow: .38s;

    --font-ui: 'Inter', 'Segoe UI', Tahoma, Arial, sans-serif;
    --font-display: 'Lexend', 'Inter', 'Segoe UI', sans-serif;
}

:root[data-theme="dark"] {
    --bg: #0c0e17;
    --bg-subtle: #10121c;
    --card-bg: #161927;
    --border: #262a3d;
    --border-strong: #333856;
    --text: #e9eaf3;
    --text-muted: #9a9db3;
    --text-faint: #6d7086;
    --primary-light: #1c1f3d;
    --primary-ring: rgba(129, 121, 255, .28);
    --success-light: #0d2018;
    --danger-light: #2a1414;
    --warning-light: #241a08;
    --info-light: #0c1f2c;
    --purple-light: #201a3d;
    --sidebar-bg-solid: #0a0b13;
    --sidebar-bg-2: #12142400;
    --sidebar-border: rgba(255,255,255,.06);
    --shadow-xs: 0 1px 2px rgba(0,0,0,.4);
    --shadow-sm: 0 1px 3px rgba(0,0,0,.45);
    --shadow-md: 0 10px 24px -6px rgba(0,0,0,.5);
    --shadow-lg: 0 24px 48px -12px rgba(0,0,0,.6);
}
:root[data-theme="dark"] th { background: #1a1d30; color: var(--text-muted); }
:root[data-theme="dark"] tr:hover td { background: #1a1d3050; }
:root[data-theme="dark"] .form-grup input,
:root[data-theme="dark"] .form-grup select,
:root[data-theme="dark"] .form-grup textarea { background: #10121ea0; border-color: var(--border); color: var(--text); }
:root[data-theme="dark"] .auth-kutu { background: var(--card-bg); }
:root[data-theme="dark"] .app-wrapper.auth-mode { background: var(--bg); }
:root[data-theme="dark"] .btn-outline { background: transparent; }
:root[data-theme="dark"] .plan-hucre { color: var(--text); }
:root[data-theme="dark"] .ust-bar { background: rgba(22,25,39,.86); }
:root[data-theme="dark"] .stat-tile { background: var(--card-bg); }
:root[data-theme="dark"] .quick-tile:hover { background: var(--primary-light); }

/* ===================================================================
   ERİŞİLEBİLİRLİK: prefers-reduced-motion
=================================================================== */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
}

/* ===================================================================
   RESET & BASE
=================================================================== */
* { box-sizing: border-box; }
html { overflow-x: hidden; }
body {
    margin: 0;
    font-family: var(--font-ui);
    background: var(--bg);
    color: var(--text);
    -webkit-font-smoothing: antialiased;
    font-size: 14px;
    line-height: 1.5;
}
a { text-decoration: none; color: inherit; }
h1, h2, h3, h4 { font-family: var(--font-display); font-weight: 700; letter-spacing: -.015em; color: var(--text); }
p { line-height: 1.6; }
::selection { background: var(--primary); color: #fff; }

/* varsayılan ikon boyutu — bağlam-özel kurallar (sidebar, topbar vb.) bunu geçersiz kılar */
svg.ikon { width: 17px; height: 17px; flex-shrink: 0; vertical-align: -3px; }
h1 svg.ikon, h2 svg.ikon, h3 svg.ikon { width: 19px; height: 19px; vertical-align: -3.5px; margin-right: 2px; }

/* kaydırma çubuğu */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 20px; border: 2.5px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background: var(--text-faint); }

.app-wrapper { display: flex; min-height: 100vh; }

/* giriş animasyonları (mevcut isimler korunur) */
@keyframes girisYukari { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes girisSol { from { opacity: 0; transform: translateX(-6px); } to { opacity: 1; transform: translateX(0); } }
@keyframes girisSoluk { from { opacity: 0; } to { opacity: 1; } }
@keyframes olcekGir { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: scale(1); } }

/* ===================================================================
   SIDEBAR
=================================================================== */
.sidebar {
    width: var(--sidebar-w);
    background: var(--sidebar-bg-solid);
    background-image:
        radial-gradient(720px 320px at -10% -10%, #201a4a 0%, transparent 60%),
        linear-gradient(180deg, var(--sidebar-bg-solid) 0%, var(--sidebar-bg-solid) 100%);
    color: var(--sidebar-text);
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    padding: 0 0 12px;
    position: relative;
    z-index: 40;
    transition: width var(--dur-slow) var(--ease-out);
}
.sidebar-top {
    display: flex; align-items: center; justify-content: space-between;
    padding: 16px 12px 14px 18px;
    border-bottom: 1px solid var(--sidebar-border);
    margin-bottom: 6px;
}
.sidebar-logo {
    font-family: var(--font-display);
    font-size: 15.5px;
    font-weight: 700;
    color: var(--sidebar-text-strong);
    display: flex; align-items: center; gap: 10px;
    letter-spacing: -.01em;
    animation: girisSoluk .4s var(--ease-out);
    white-space: nowrap;
    overflow: hidden;
}
.sidebar-logo .sidebar-logo-mark {
    width: 30px; height: 30px; border-radius: 9px; flex-shrink: 0;
    background: linear-gradient(135deg, var(--primary-600), #7c3aed);
    display: flex; align-items: center; justify-content: center;
    color: #fff; box-shadow: 0 4px 10px -2px rgba(79,70,229,.55);
}
.sidebar-logo .sidebar-logo-text { transition: opacity var(--dur-fast) ease; }
.sidebar-collapse-btn {
    background: rgba(255,255,255,.05); border: 1px solid var(--sidebar-border); color: var(--sidebar-text);
    width: 26px; height: 26px; border-radius: 7px; cursor: pointer; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
    transition: background var(--dur-fast) ease, transform var(--dur-base) var(--ease-out), color var(--dur-fast) ease;
}
.sidebar-collapse-btn:hover { background: rgba(255,255,255,.12); color: #fff; }
:root[data-sidebar="mini"] .sidebar-collapse-btn svg { transform: rotate(180deg); }

.sidebar-menu { display: flex; flex-direction: column; gap: 1px; padding: 6px 10px 10px; overflow-y: auto; overflow-x: hidden; flex: 1; }
.sidebar-menu a {
    position: relative;
    padding: 8.5px 12px;
    border-radius: var(--radius-sm);
    font-size: 13.6px;
    font-weight: 500;
    color: var(--sidebar-text);
    display: flex; align-items: center; gap: 11px;
    transition: background var(--dur-fast) ease, color var(--dur-fast) ease, padding-left var(--dur-fast) ease;
    animation: girisSol .3s var(--ease-out) backwards;
    white-space: nowrap;
}
.sidebar-menu a .ikon { flex-shrink: 0; width: 18px; height: 18px; opacity: .85; transition: opacity var(--dur-fast) ease, transform var(--dur-base) var(--ease-spring); }
.sidebar-menu a .etiket-metin { overflow: hidden; text-overflow: ellipsis; flex: 1; }
.sidebar-menu a:hover { background: rgba(255,255,255,.055); color: #fff; padding-left: 15px; }
.sidebar-menu a:hover .ikon { opacity: 1; transform: translateX(1px); }
.sidebar-menu a.aktif {
    background: linear-gradient(90deg, rgba(79,70,229,.9), rgba(99,91,235,.65));
    color: #fff;
    font-weight: 600;
    box-shadow: 0 4px 12px -4px rgba(79,70,229,.6);
}
.sidebar-menu a.aktif::before {
    content: ''; position: absolute; left: -10px; top: 50%; transform: translateY(-50%);
    width: 4px; height: 18px; border-radius: 0 4px 4px 0;
    background: #fff; animation: girisSol .25s var(--ease-spring);
}
.sidebar-menu a.aktif .ikon { opacity: 1; }
.sidebar-menu a .rozet-sayi {
    background: var(--danger); color: #fff; font-size: 10.5px; font-weight: 700;
    padding: 1.5px 6.5px; border-radius: var(--radius-pill); margin-left: auto;
    animation: olcekGir .25s var(--ease-spring);
}
.sidebar-menu a.aktif .rozet-sayi { background: rgba(255,255,255,.28); }

.sidebar-ayrac {
    margin: 14px 14px 5px 12px;
    padding-top: 12px;
    border-top: 1px solid var(--sidebar-border);
    font-size: 10px;
    text-transform: uppercase;
    color: #5c5f78;
    letter-spacing: .09em;
    font-weight: 700;
    transition: opacity var(--dur-fast) ease;
}
.sidebar-menu > .sidebar-ayrac:first-child { border-top: none; padding-top: 0; margin-top: 2px; }
.cikis-link { color: #f0a3a3 !important; margin-top: 4px; }
.cikis-link:hover { background: rgba(220,38,38,.14) !important; color: #fca5a5 !important; }

/* mini (daraltılmış) sidebar — html[data-sidebar=mini] ile FOUC'suz uygulanır */
:root[data-sidebar="mini"] .sidebar { width: var(--sidebar-w-mini); }
:root[data-sidebar="mini"] .sidebar-logo-text,
:root[data-sidebar="mini"] .etiket-metin,
:root[data-sidebar="mini"] .sidebar-ayrac,
:root[data-sidebar="mini"] .rozet-sayi { display: none; }
:root[data-sidebar="mini"] .sidebar-menu a { justify-content: center; padding: 10px; }
:root[data-sidebar="mini"] .sidebar-menu a:hover { padding-left: 10px; }
:root[data-sidebar="mini"] .sidebar-top { justify-content: center; padding: 16px 8px; }
:root[data-sidebar="mini"] .sidebar-menu a { position: relative; }
@media (max-width: 800px) {
    :root[data-sidebar="mini"] .sidebar { width: var(--sidebar-w) !important; }
    :root[data-sidebar="mini"] .sidebar-logo-text,
    :root[data-sidebar="mini"] .etiket-metin,
    :root[data-sidebar="mini"] .sidebar-ayrac,
    :root[data-sidebar="mini"] .rozet-sayi { display: revert; }
    :root[data-sidebar="mini"] .sidebar-menu a { justify-content: flex-start; padding: 8.5px 12px; }
}
/* mini sidebar ipucu — .sidebar-menu overflow-x:hidden kırpmasın diye JS (app.js)
   ile position:fixed olarak body'ye eklenir; bu sadece görsel stilini tanımlar */
.sidebar-ipucu {
    position: fixed; transform: translateY(-50%);
    background: #1a1d33; color: #fff; padding: 6px 11px; border-radius: 7px;
    font-size: 12.5px; font-weight: 600; white-space: nowrap; box-shadow: var(--shadow-md);
    z-index: 200; animation: girisSol .12s var(--ease-out);
    pointer-events: none;
}

.sidebar-backdrop {
    display: none; position: fixed; inset: 0; background: rgba(8,9,16,.55);
    z-index: 39; backdrop-filter: blur(1px);
    animation: girisSoluk .18s ease-out;
}

/* ===================================================================
   ÜST BAR (TOPBAR)
=================================================================== */
.ana-icerik { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ust-bar {
    background: rgba(255,255,255,.86);
    backdrop-filter: saturate(180%) blur(10px);
    border-bottom: 1px solid var(--border);
    padding: 0 22px;
    height: var(--header-h);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: sticky; top: 0; z-index: 30;
    gap: 14px;
}
.ust-bar-sol { display: flex; align-items: center; gap: 14px; min-width: 0; }
.ust-bar-baslik { font-size: 15px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; letter-spacing: -.01em; }
.mobil-menu-btn {
    display: none; background: none; border: 1px solid var(--border); border-radius: var(--radius-sm);
    width: 34px; height: 34px; align-items: center; justify-content: center; cursor: pointer; color: var(--text);
    transition: background var(--dur-fast) ease;
}
.mobil-menu-btn:hover { background: var(--bg-subtle); }
.ust-bar-sag { display: flex; gap: 6px; align-items: center; flex-shrink: 0; }

.topbar-icon-btn {
    position: relative;
    background: none; border: none; border-radius: var(--radius-sm);
    width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center;
    cursor: pointer; color: var(--text-muted);
    transition: background var(--dur-fast) ease, color var(--dur-fast) ease, transform var(--dur-fast) var(--ease-spring);
}
.topbar-icon-btn:hover { background: var(--bg-subtle); color: var(--text); }
.topbar-icon-btn:active { transform: scale(.9); }
.topbar-icon-btn .nokta {
    position: absolute; top: 6px; right: 7px; width: 8px; height: 8px; border-radius: 50%;
    background: var(--danger); border: 2px solid var(--card-bg);
    animation: olcekGir .3s var(--ease-spring);
}
.tema-btn svg { transition: transform var(--dur-slow) var(--ease-spring), opacity var(--dur-base) ease; }

.kullanici-mini {
    display: flex; align-items: center; gap: 9px; cursor: pointer;
    padding: 5px 10px 5px 6px; border-radius: var(--radius-pill); border: 1px solid transparent;
    transition: background var(--dur-fast) ease, border-color var(--dur-fast) ease;
    margin-left: 4px;
}
.kullanici-mini:hover { background: var(--bg-subtle); border-color: var(--border); }
.kullanici-avatar {
    width: 30px; height: 30px; border-radius: 50%; object-fit: cover; flex-shrink: 0;
    background: linear-gradient(135deg, var(--primary-600), #7c3aed);
    color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700;
}
.kullanici-adi { font-weight: 600; font-size: 13.4px; line-height: 1.25; }
.rol-etiket {
    background: var(--primary-light); color: var(--primary);
    font-size: 10.5px; padding: 1.5px 8px; border-radius: var(--radius-pill); font-weight: 700;
    letter-spacing: .01em; display: inline-block; margin-top: 1px;
}
.kullanici-metin { display: flex; flex-direction: column; gap: 1px; line-height: 1.1; }
.kullanici-mini .sevron { color: var(--text-faint); transition: transform var(--dur-base) var(--ease-out); }
.kullanici-mini.acik .sevron { transform: rotate(180deg); }

/* açılır menüler (bildirim / kullanıcı) */
.acilir-alan { position: relative; }
.acilir-menu {
    position: absolute; top: calc(100% + 10px); right: 0; min-width: 232px;
    background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: var(--shadow-lg); z-index: 50; overflow: hidden;
    opacity: 0; visibility: hidden; transform: translateY(-6px) scale(.98);
    transition: opacity var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), visibility var(--dur-base);
    transform-origin: top right;
}
.acilir-menu.acik { opacity: 1; visibility: visible; transform: translateY(0) scale(1); }
.acilir-menu-baslik { padding: 12px 15px; font-size: 12.5px; font-weight: 700; color: var(--text-muted); border-bottom: 1px solid var(--border); text-transform: uppercase; letter-spacing: .04em; }
.acilir-menu-liste { max-height: 320px; overflow-y: auto; }
.acilir-menu a, .acilir-menu-oge {
    display: flex; align-items: center; gap: 10px; padding: 10.5px 15px; font-size: 13.5px; font-weight: 500;
    color: var(--text); transition: background var(--dur-fast) ease; border-bottom: 1px solid var(--border);
}
.acilir-menu a:last-child, .acilir-menu-oge:last-child { border-bottom: none; }
.acilir-menu a:hover { background: var(--bg-subtle); }
.acilir-menu a .ikon { color: var(--text-muted); flex-shrink: 0; }
.acilir-menu-bildirim .sayi-nokta { width: 7px; height: 7px; border-radius: 50%; background: var(--primary); flex-shrink: 0; }
.acilir-menu-bos { padding: 26px 15px; text-align: center; color: var(--text-faint); font-size: 13px; }
.acilir-menu a.menu-tehlike { color: var(--danger); }
.acilir-menu a.menu-tehlike:hover { background: var(--danger-light); }
.acilir-menu a.menu-tehlike .ikon { color: var(--danger); }

/* tema geçiş ikonları (güneş/ay çapraz geçişi) */
.tema-btn { position: relative; }
.tema-ikon-ay, .tema-ikon-gunes { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%) scale(1) rotate(0deg); transition: opacity var(--dur-base) ease, transform var(--dur-slow) var(--ease-spring); }
.tema-ikon-gunes { opacity: 0; transform: translate(-50%,-50%) scale(.4) rotate(-90deg); }
:root[data-theme="dark"] .tema-ikon-ay { opacity: 0; transform: translate(-50%,-50%) scale(.4) rotate(90deg); }
:root[data-theme="dark"] .tema-ikon-gunes { opacity: 1; transform: translate(-50%,-50%) scale(1) rotate(0deg); }

.icerik-kutu { padding: 26px 28px 40px; max-width: 1240px; width: 100%; margin: 0 auto; animation: girisYukari .3s var(--ease-out); }

/* ===================================================================
   AUTH SAYFALARI
=================================================================== */
.app-wrapper.auth-mode {
    align-items: center; justify-content: center; width: 100%;
    background:
        radial-gradient(900px 500px at 8% -10%, #eef0fd 0%, transparent 55%),
        radial-gradient(700px 400px at 100% 100%, #f3f0ff 0%, transparent 50%),
        var(--bg);
}
.app-wrapper.auth-mode .ana-icerik { display: flex; align-items: center; justify-content: center; width: 100%; }
.auth-kutu {
    background: var(--card-bg); padding: 38px 36px; border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg); width: 100%; max-width: 410px;
    margin: 40px auto;
    border: 1px solid var(--border);
    position: relative;
    animation: authPopIn .5s var(--ease-out) backwards;
}
.auth-kutu::before {
    content: ''; position: absolute; top: -1px; left: 14px; right: 14px; height: 3px; border-radius: 0 0 6px 6px;
    background: linear-gradient(90deg, var(--primary-600), #7c3aed);
}
.auth-kutu h1 { font-size: 22px; margin-bottom: 4px; animation: girisYukari .4s var(--ease-out) backwards; animation-delay: .08s; }
.auth-kutu p.alt-metin { color: var(--text-muted); margin-bottom: 26px; font-size: 13.6px; animation: girisYukari .4s var(--ease-out) backwards; animation-delay: .14s; }
.auth-kutu form { animation: girisYukari .4s var(--ease-out) backwards; animation-delay: .2s; }
.auth-alt-link { text-align: center; margin-top: 14px; font-size: 13.6px; color: var(--text-muted); animation: girisYukari .4s var(--ease-out) backwards; animation-delay: .3s; }
.auth-alt-link a { color: var(--primary); font-weight: 600; }
.auth-alt-link a:hover { text-decoration: underline; }
@keyframes authPopIn {
    from { opacity: 0; transform: scale(.94) translateY(16px); }
    to { opacity: 1; transform: scale(1) translateY(0); }
}

/* ===================================================================
   SAYFA BAŞLIĞI
=================================================================== */
.sayfa-baslik { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; flex-wrap: wrap; gap: 10px; }
.sayfa-baslik h1 { margin: 0; font-size: 21px; }

.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 1000px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } }

/* ===================================================================
   KART (panel) — nötr, düz; işlev bazlı varyantlar farklı görünür
=================================================================== */
.kart {
    background: var(--card-bg); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 22px; margin-bottom: 18px;
    box-shadow: var(--shadow-xs);
    animation: girisYukari .28s var(--ease-out) backwards;
}
.kart:nth-of-type(1) { animation-delay: .01s; }
.kart:nth-of-type(2) { animation-delay: .05s; }
.kart:nth-of-type(3) { animation-delay: .09s; }
.kart:nth-of-type(n+4) { animation-delay: .1s; }
.kart h2, .kart h3 { margin-top: 0; font-size: 16px; }
.kart h2 { font-size: 17px; }
a.kart { display: block; }

/* vurgulu panel — dikkat gerektiren modüller için (kapsama riski vb.) */
.kart-vurgu { border-left: 3px solid var(--warning); background: linear-gradient(180deg, var(--warning-light) 0%, var(--card-bg) 90px); }
.kart-vurgu h2, .kart-vurgu h3 { color: var(--warning-dark); }

/* ===================================================================
   İSTATİSTİK / STAT TILE
=================================================================== */
.istatistik-kart {
    background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 17px 18px;
    box-shadow: var(--shadow-xs);
    transition: box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out), border-color var(--dur-base) ease;
    animation: girisYukari .28s var(--ease-out) backwards;
    display: flex; align-items: flex-start; gap: 14px; position: relative; overflow: hidden;
}
.istatistik-kart:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); border-color: var(--border-strong); }
.istatistik-kart .ikon-kutu {
    width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    background: var(--primary-light); color: var(--primary);
}
.istatistik-kart .govde { min-width: 0; flex: 1; }
.istatistik-kart .sayi { font-size: 25px; font-weight: 800; color: var(--text); letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1.15; }
.istatistik-kart .etiket { color: var(--text-muted); font-size: 12.3px; font-weight: 500; margin-top: 2px; }
.istatistik-kart.vurgu-yesil .ikon-kutu { background: var(--success-light); color: var(--success); }
.istatistik-kart.vurgu-amber .ikon-kutu { background: var(--warning-light); color: var(--warning); }
.istatistik-kart.vurgu-kirmizi .ikon-kutu { background: var(--danger-light); color: var(--danger); }
.istatistik-kart.vurgu-mor .ikon-kutu { background: var(--purple-light); color: var(--purple); }

/* hızlı işlem kutuları */
.quick-tile {
    background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius);
    padding: 18px; display: flex; align-items: center; gap: 14px;
    transition: background var(--dur-base) ease, border-color var(--dur-base) ease, transform var(--dur-base) var(--ease-out);
}
.quick-tile:hover { background: var(--primary-light); border-color: var(--primary); transform: translateX(3px); }
.quick-tile .ikon-kutu { width: 38px; height: 38px; border-radius: 10px; background: var(--primary-light); color: var(--primary); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.quick-tile:hover .ikon-kutu { background: var(--primary); color: #fff; }
.quick-tile h3 { margin: 0 0 2px; font-size: 14.5px; }
.quick-tile p { margin: 0; color: var(--text-muted); font-size: 12.5px; }
.quick-tile .ok { margin-left: auto; color: var(--text-faint); transition: transform var(--dur-base) var(--ease-out); flex-shrink: 0; transform: rotate(-90deg); }
.quick-tile:hover .ok { transform: rotate(-90deg) translateY(-3px); color: var(--primary); }

/* karşılama şeridi */
.karsilama-serit {
    background: linear-gradient(120deg, #1c1a3d, #302a6b 55%, #4338ca);
    border-radius: var(--radius-lg); padding: 24px 26px; margin-bottom: 20px;
    color: #fff; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
    position: relative; overflow: hidden;
    animation: girisYukari .3s var(--ease-out);
}
.karsilama-serit::before {
    content: ''; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px; border-radius: 50%;
    background: radial-gradient(circle, rgba(255,255,255,.14), transparent 70%);
}
.karsilama-serit h1 { color: #fff; font-size: 20.5px; margin: 0 0 3px; }
.karsilama-serit p { margin: 0; color: rgba(255,255,255,.72); font-size: 13px; }
.karsilama-serit .tarih-rozet {
    background: rgba(255,255,255,.14); padding: 7px 14px; border-radius: var(--radius-pill);
    font-size: 12.5px; font-weight: 600; white-space: nowrap; backdrop-filter: blur(4px);
}

/* zaman çizelgesi tarzı liste (duyurular) */
.zaman-cizelge { list-style: none; margin: 0; padding: 0; }
.zaman-cizelge-oge { display: flex; gap: 13px; padding: 13px 0; border-bottom: 1px solid var(--border); }
.zaman-cizelge-oge:last-child { border-bottom: none; padding-bottom: 4px; }
.zaman-cizelge-nokta { width: 9px; height: 9px; border-radius: 50%; background: var(--primary); margin-top: 6px; flex-shrink: 0; box-shadow: 0 0 0 3px var(--primary-light); }
.zaman-cizelge-oge.onemli .zaman-cizelge-nokta { background: var(--danger); box-shadow: 0 0 0 3px var(--danger-light); }
.zaman-cizelge-baslik-satir { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.zaman-cizelge-baslik-satir strong { font-size: 13.8px; }
.zaman-cizelge-tarih { font-size: 11.5px; color: var(--text-faint); white-space: nowrap; }
.zaman-cizelge-metin { margin: 4px 0 0; color: var(--text-muted); font-size: 13px; }

/* özel gün çipleri */
.ozel-gun-cip { padding: 11px; background: var(--bg-subtle); border-radius: var(--radius-sm); display: flex; align-items: center; gap: 11px; transition: background var(--dur-fast) ease; }
.ozel-gun-cip:hover { background: var(--primary-light); }
.ozel-gun-ikon { width: 34px; height: 34px; border-radius: 50%; background: var(--card-bg); display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; box-shadow: var(--shadow-xs); }

/* ilerleme çubuğu (departman izin kullanımı) */
.ilerleme-satir { margin-bottom: 13px; }
.ilerleme-ust { display: flex; justify-content: space-between; font-size: 12.8px; margin-bottom: 5px; }
.ilerleme-ust span:first-child { font-weight: 600; }
.ilerleme-ust span:last-child { color: var(--text-muted); font-variant-numeric: tabular-nums; }
.ilerleme-taban { background: var(--bg-subtle); border-radius: var(--radius-pill); height: 9px; overflow: hidden; }
.ilerleme-dolgu { background: linear-gradient(90deg, var(--primary-600), var(--primary)); height: 100%; border-radius: var(--radius-pill); width: 0; transition: width 1s var(--ease-out); }

/* ===================================================================
   FORMLAR
=================================================================== */
.form-grup { margin-bottom: 16px; }
.form-grup label { display: block; margin-bottom: 6px; font-size: 12.8px; font-weight: 600; color: var(--text); }
.form-grup .yardim-metni { display: block; margin-top: 5px; font-size: 11.8px; color: var(--text-faint); }
.form-grup input:not([type=checkbox]):not([type=radio]),
.form-grup select,
.form-grup textarea {
    width: 100%; padding: 9.5px 12px; border: 1.5px solid var(--border);
    border-radius: var(--radius-sm); font-size: 13.8px; font-family: inherit;
    background: var(--card-bg); color: var(--text);
    transition: border-color var(--dur-fast) ease, box-shadow var(--dur-fast) ease, background var(--dur-fast) ease;
    appearance: none;
}
.form-grup select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236b7189' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 10px center; padding-right: 34px;
}
.form-grup input:hover:not(:focus), .form-grup select:hover:not(:focus), .form-grup textarea:hover:not(:focus) { border-color: var(--border-strong); }
.form-grup input:focus, .form-grup select:focus, .form-grup textarea:focus {
    outline: none; border-color: var(--primary);
    box-shadow: var(--shadow-focus);
}
.form-grup input::placeholder, .form-grup textarea::placeholder { color: var(--text-faint); }
.form-grup textarea { resize: vertical; min-height: 78px; }
.form-satir { display: flex; gap: 14px; }
.form-satir .form-grup { flex: 1; min-width: 0; }

/* checkbox / radio */
input[type="checkbox"], input[type="radio"] { width: 15px; height: 15px; accent-color: var(--primary); cursor: pointer; vertical-align: -2px; }
label:has(> input[type="checkbox"]), label:has(> input[type="radio"]) { cursor: pointer; }

/* doğrulama durumları */
.satir-hatali { background: var(--danger-light) !important; }
.alan-hatali { border-color: var(--danger) !important; background: var(--danger-light); animation: alanSallan .35s var(--ease-out); }
.kart-hatali { border: 1.5px solid var(--danger) !important; background: var(--danger-light); }
.hatali-etiket { color: var(--danger); font-size: 11.3px; font-weight: 700; margin-left: 6px; }
.eski-giris-notu { font-size: 12px; color: var(--danger-dark); background: var(--danger-light); font-weight: 600; }
@keyframes alanSallan {
    10%, 90% { transform: translateX(-1px); }
    20%, 80% { transform: translateX(2px); }
    30%, 50%, 70% { transform: translateX(-4px); }
    40%, 60% { transform: translateX(4px); }
}

/* arama / filtre çubuğu (isteğe bağlı, ileride kullanılabilir) */
.arac-cubugu { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 16px; }
.arama-kutusu { position: relative; flex: 1; min-width: 200px; }
.arama-kutusu svg { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--text-faint); pointer-events: none; }
.arama-kutusu input { padding-left: 36px !important; }

/* ===================================================================
   BUTONLAR
=================================================================== */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 7px;
    padding: 9.5px 18px; border-radius: var(--radius-sm);
    background: var(--primary); color: #fff; border: 1.5px solid transparent;
    font-size: 13.6px; font-weight: 600; cursor: pointer; text-align: center;
    transition: background var(--dur-fast) ease, box-shadow var(--dur-fast) ease, transform var(--dur-fast) var(--ease-spring), border-color var(--dur-fast) ease;
    line-height: 1.3;
}
.btn:hover { background: var(--primary-dark); box-shadow: var(--shadow-sm); }
.btn:active { transform: scale(.96); }
.btn:focus-visible { outline: none; box-shadow: var(--shadow-focus); }
.btn:disabled { opacity: .55; cursor: not-allowed; transform: none !important; }
.btn-tam { width: 100%; }
.btn-kucuk { padding: 6.5px 13px; font-size: 12.5px; }
.btn-yesil { background: var(--success); }
.btn-yesil:hover { background: var(--success-dark); }
.btn-kirmizi { background: var(--danger); }
.btn-kirmizi:hover { background: var(--danger-dark); }
.btn-gri { background: #5b6072; }
.btn-gri:hover { background: #454a5c; }
.btn-outline { background: var(--card-bg); color: var(--primary); border: 1.5px solid var(--primary); }
.btn-outline:hover { background: var(--primary-light); }
.btn-ghost { background: transparent; color: var(--text-muted); border-color: transparent; }
.btn-ghost:hover { background: var(--bg-subtle); color: var(--text); }
.btn-yukleniyor { color: transparent !important; pointer-events: none; position: relative; }
.btn-yukleniyor::after {
    content: ''; position: absolute; width: 15px; height: 15px; border-radius: 50%;
    border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; animation: donSpin .6s linear infinite;
}
.btn-outline.btn-yukleniyor::after { border-color: rgba(67,56,202,.3); border-top-color: var(--primary); }
@keyframes donSpin { to { transform: rotate(360deg); } }

/* ===================================================================
   TABLOLAR
=================================================================== */
table { width: 100%; border-collapse: collapse; font-size: 13.6px; }
th, td { padding: 11px 13px; text-align: left; border-bottom: 1px solid var(--border); }
th {
    color: var(--text-muted); font-weight: 700; font-size: 11px; text-transform: uppercase;
    letter-spacing: .045em; background: var(--bg-subtle); white-space: nowrap;
    position: sticky; top: 0; z-index: 1;
}
th:first-child { border-top-left-radius: var(--radius-sm); }
th:last-child { border-top-right-radius: var(--radius-sm); }
tbody tr { transition: background var(--dur-fast) ease; position: relative; }
tr:hover td { background: var(--bg-subtle); }
tr.satir-secili td { background: var(--primary-light); }
.tablo-wrap { overflow-x: auto; border-radius: var(--radius-sm); border: 1px solid var(--border); }
.tablo-wrap table { border: none; }
.tablo-wrap th:first-child, .tablo-wrap th:last-child { border-radius: 0; }

/* ===================================================================
   BADGE / DURUM ETİKETLERİ
=================================================================== */
.badge { padding: 3.5px 10px; border-radius: var(--radius-pill); font-size: 11.5px; font-weight: 700; display: inline-flex; align-items: center; gap: 5px; letter-spacing: .01em; }
.badge::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.badge-bekleyen { background: var(--warning-light); color: var(--warning-dark); }
.badge-onay { background: var(--success-light); color: var(--success-dark); }
.badge-red { background: var(--danger-light); color: var(--danger-dark); }

/* ===================================================================
   ALERT (bilgi/başarı banner'ı)
=================================================================== */
.alert {
    padding: 13px 16px; border-radius: var(--radius-sm); margin-bottom: 16px; font-size: 13.6px;
    border: 1px solid transparent; display: flex; align-items: flex-start; gap: 10px;
    animation: bannerGir .3s var(--ease-out);
}
.alert-success { background: var(--success-light); color: var(--success-dark); border-color: #b7e6cb; }
.alert-danger { background: var(--danger-light); color: var(--danger-dark); border-color: #f3c6c6; }
.alert-info { background: var(--info-light); color: var(--info-dark); border-color: #bfe3f7; }
@keyframes bannerGir { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }

/* ===================================================================
   HATA MODALI + GENEL MODAL SİSTEMİ
=================================================================== */
.hata-modal-arkaplan, .modal-arkaplan {
    position: fixed; inset: 0; background: rgba(12, 14, 23, 0.55);
    backdrop-filter: blur(2px);
    display: flex; align-items: center; justify-content: center; z-index: 1000;
    padding: 20px;
    animation: hataFadeIn 0.2s ease-out;
}
.hata-modal-arkaplan.kapaniyor, .modal-arkaplan.kapaniyor { animation: hataFadeOut 0.15s ease-in forwards; }
.hata-modal-kutu, .modal-kutu {
    background: var(--card-bg); border-radius: var(--radius-lg); padding: 28px 26px;
    max-width: 460px; width: 100%; text-align: center;
    box-shadow: var(--shadow-lg);
    animation: hataPopIn 0.25s var(--ease-spring);
}
.modal-kutu { text-align: left; padding: 0; overflow: hidden; }
.modal-baslik { display: flex; justify-content: space-between; align-items: center; padding: 18px 22px; border-bottom: 1px solid var(--border); }
.modal-baslik h3 { margin: 0; font-size: 16px; }
.modal-govde { padding: 20px 22px; }
.modal-alt { padding: 16px 22px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; gap: 10px; }
.modal-kapat-btn { background: none; border: none; color: var(--text-faint); cursor: pointer; width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; transition: background var(--dur-fast) ease; }
.modal-kapat-btn:hover { background: var(--bg-subtle); color: var(--text); }
.hata-modal-arkaplan.kapaniyor .hata-modal-kutu, .modal-arkaplan.kapaniyor .modal-kutu { animation: hataPopOut 0.15s ease-in forwards; }
.hata-modal-ikon {
    width: 52px; height: 52px; border-radius: 50%; background: var(--danger-light);
    display: flex; align-items: center; justify-content: center; font-size: 26px;
    margin: 0 auto 14px;
}
.hata-modal-kutu h3 { margin: 0 0 10px; color: var(--danger-dark); font-size: 18px; }
.hata-modal-kutu p { margin: 0 0 22px; color: var(--text); font-size: 14.5px; line-height: 1.6; text-align: left; }
@keyframes hataFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes hataFadeOut { from { opacity: 1; } to { opacity: 0; } }
@keyframes hataPopIn { from { opacity: 0; transform: scale(0.93) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }
@keyframes hataPopOut { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.96); } }

/* ===================================================================
   TOAST BİLDİRİM SİSTEMİ (js ile: window.bildirimGoster)
=================================================================== */
.toast-yigin {
    position: fixed; bottom: 20px; right: 20px; z-index: 1100;
    display: flex; flex-direction: column; gap: 10px; max-width: 340px; width: calc(100% - 40px);
}
.toast {
    background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-sm);
    box-shadow: var(--shadow-lg); padding: 13px 14px; display: flex; gap: 10px; align-items: flex-start;
    animation: toastGir .3s var(--ease-spring);
    position: relative; overflow: hidden;
}
.toast.cikiyor { animation: toastCik .22s var(--ease-out) forwards; }
.toast .ikon { flex-shrink: 0; margin-top: 1px; }
.toast.basari .ikon { color: var(--success); }
.toast.hata .ikon { color: var(--danger); }
.toast.bilgi .ikon { color: var(--info); }
.toast-metin { font-size: 13.2px; font-weight: 500; flex: 1; line-height: 1.4; }
.toast-kapat { background: none; border: none; color: var(--text-faint); cursor: pointer; flex-shrink: 0; padding: 0; }
.toast-cubuk { position: absolute; left: 0; bottom: 0; height: 2.5px; background: var(--primary); animation: toastSure linear forwards; }
@keyframes toastGir { from { opacity: 0; transform: translateX(24px) scale(.96); } to { opacity: 1; transform: translateX(0) scale(1); } }
@keyframes toastCik { to { opacity: 0; transform: translateX(20px) scale(.96); } }
@keyframes toastSure { from { width: 100%; } to { width: 0%; } }

/* ===================================================================
   YÜKLEME / SKELETON / BOŞ DURUM
=================================================================== */
.skeleton { background: linear-gradient(90deg, var(--bg-subtle) 25%, var(--border) 37%, var(--bg-subtle) 63%); background-size: 400% 100%; animation: skeletonAkis 1.3s ease infinite; border-radius: 6px; }
.skeleton-line { height: 13px; margin-bottom: 8px; }
.skeleton-circle { border-radius: 50%; }
@keyframes skeletonAkis { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }

.donme { width: 18px; height: 18px; border-radius: 50%; border: 2.5px solid var(--border); border-top-color: var(--primary); animation: donSpin .6s linear infinite; display: inline-block; }

.bos-durum { text-align: center; padding: 44px 20px; color: var(--text-muted); }
.bos-durum .bos-ikon { width: 52px; height: 52px; border-radius: 50%; background: var(--bg-subtle); display: flex; align-items: center; justify-content: center; margin: 0 auto 14px; color: var(--text-faint); }
.bos-durum strong { display: block; color: var(--text); font-size: 14px; margin-bottom: 4px; }
.bos-durum p { font-size: 12.8px; margin: 0; }

/* ===================================================================
   HAFTALIK PLAN TABLOSU
=================================================================== */
.plan-tablo td, .plan-tablo th { text-align: center; }
.plan-hucre { background: var(--primary-light); border-radius: 7px; padding: 6px; font-size: 12.3px; transition: transform var(--dur-fast) ease; }
.plan-hucre:hover { transform: scale(1.04); }
.plan-izin { background: var(--danger-light); color: var(--danger-dark); }

/* ===================================================================
   RESPONSIVE
=================================================================== */
@media (max-width: 1400px) {
    .icerik-kutu { padding: 22px 22px 36px; }
}
@media (max-width: 1100px) {
    :root { --sidebar-w: 236px; }
    .grid-3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
    .karsilama-serit { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 800px) {
    .sidebar { position: fixed; left: calc(-1 * var(--sidebar-w) - 20px); top: 0; bottom: 0; z-index: 100; transition: left var(--dur-slow) var(--ease-out); width: var(--sidebar-w) !important; }
    .sidebar.acik { left: 0; }
    .sidebar.acik ~ .sidebar-backdrop, .sidebar-backdrop.acik { display: block; }
    .sidebar-collapse-btn { display: none; }
    .mobil-menu-btn { display: inline-flex; }
    .form-satir { flex-direction: column; }
    .ust-bar { padding: 0 14px; }
    .icerik-kutu { padding: 16px 14px 30px; }
    .kullanici-metin { display: none; }
    .kullanici-mini .sevron { display: none; }
    .ust-bar-baslik { display: none; }
}
@media (max-width: 480px) {
    .toast-yigin { right: 10px; bottom: 10px; left: 10px; max-width: none; width: auto; }
    .auth-kutu { padding: 30px 22px; }
}
