/* =====================================================================
   IKPROF - Kurumsal ERP arayuz standardi
   ---------------------------------------------------------------------
   Bu dosya SADECE gorunumu duzenler. Hicbir islevi, rotayi, yetkiyi
   veya davranisi degistirmez.

   Amac: SAP Fiori / Dynamics 365 benzeri kompakt, veri yogun ve
   okunabilir bir ERP gorunumu. Web sitesi havasi veren buyuk fontlar,
   genis bosluklar ve asiri yuvarlak koseler kullanilmaz.

   Butun olculer 4px izgarasina oturur.
   ===================================================================== */

:root {
    /* --- Yazi tipi --- */
    --ikprof-font: Inter, ui-sans-serif, system-ui, -apple-system,
        BlinkMacSystemFont, "Segoe UI", sans-serif;

    /* --- Yazi olculeri --- */
    --ikprof-fs-display: 24px;   /* ana ekran basligi */
    --ikprof-fs-page: 20px;      /* sayfa basligi */
    --ikprof-fs-section: 18px;   /* alt bolum basligi */
    --ikprof-fs-card: 16px;      /* kart basligi */
    --ikprof-fs-body: 14px;      /* govde metni */
    --ikprof-fs-control: 14px;   /* input, select, textarea */
    --ikprof-fs-label: 13px;     /* form etiketi */
    --ikprof-fs-table: 13px;     /* tablo hucresi */
    --ikprof-fs-th: 12px;        /* tablo kolon basligi */
    --ikprof-fs-btn: 13px;       /* buton */
    --ikprof-fs-badge: 12px;     /* durum rozeti */
    --ikprof-fs-caption: 12px;   /* yardimci bilgi */
    --ikprof-fs-tiny: 11px;      /* en kucuk aciklama */

    /* --- Kalinliklar --- */
    --ikprof-fw-regular: 400;
    --ikprof-fw-medium: 500;
    --ikprof-fw-semibold: 600;

    /* --- Bosluk izgarasi (4px) --- */
    --ikprof-sp-1: 4px;
    --ikprof-sp-2: 8px;
    --ikprof-sp-3: 12px;
    --ikprof-sp-4: 16px;
    --ikprof-sp-5: 20px;
    --ikprof-sp-6: 24px;
    --ikprof-sp-8: 32px;

    /* --- Yukseklikler --- */
    --ikprof-h-control: 38px;    /* input ve buton */
    --ikprof-h-control-sm: 32px; /* kompakt */
    --ikprof-h-row: 42px;        /* tablo satiri */
    --ikprof-h-menu: 40px;       /* menu satiri */

    /* --- Koseler --- */
    --ikprof-radius: 6px;
    --ikprof-radius-lg: 8px;

    /* --- Metin renkleri --- */
    --ikprof-ink: #1f2937;       /* birincil metin */
    --ikprof-ink-2: #4b5563;     /* ikincil metin */
    --ikprof-ink-muted: #6b7280; /* soluk metin */
    --ikprof-border: #e4e9ed;
    --ikprof-blue: #00a2c6;      /* kurumsal turkuaz */
}

/* ---------------------------------------------------------------------
   1) Yazi tipi ve govde
   ------------------------------------------------------------------ */

:root {
    --tblr-font-sans-serif: var(--ikprof-font);
    --tblr-body-font-family: var(--ikprof-font);
    --tblr-body-font-size: var(--ikprof-fs-body);
    --tblr-body-color: var(--ikprof-ink);
    --tblr-border-radius: var(--ikprof-radius);
    --tblr-border-radius-sm: 4px;
    --tblr-border-radius-lg: var(--ikprof-radius-lg);
}

body,
.btn,
.form-control,
.form-select,
.table,
.card,
.dropdown-menu,
.modal,
.nav-link,
.badge,
input,
select,
textarea,
button {
    font-family: var(--ikprof-font);
}

body {
    font-size: var(--ikprof-fs-body);
    line-height: 20px;
    font-weight: var(--ikprof-fw-regular);
    color: var(--ikprof-ink);
    -webkit-font-smoothing: antialiased;
}

/* ---------------------------------------------------------------------
   2) Baslik olcegi
   ------------------------------------------------------------------ */

h1, .h1 {
    font-size: var(--ikprof-fs-display);
    line-height: 32px;
    font-weight: var(--ikprof-fw-semibold);
}

h2, .h2 {
    font-size: var(--ikprof-fs-page);
    line-height: 28px;
    font-weight: var(--ikprof-fw-semibold);
}

h3, .h3 {
    font-size: var(--ikprof-fs-section);
    line-height: 26px;
    font-weight: var(--ikprof-fw-semibold);
}

h4, .h4,
.card-title {
    font-size: var(--ikprof-fs-card);
    line-height: 24px;
    font-weight: var(--ikprof-fw-semibold);
    margin-bottom: 0;
}

h5, .h5 {
    font-size: var(--ikprof-fs-body);
    line-height: 20px;
    font-weight: var(--ikprof-fw-semibold);
}

h6, .h6 {
    font-size: var(--ikprof-fs-label);
    line-height: 18px;
    font-weight: var(--ikprof-fw-semibold);
}

/* Ust seritteki sayfa basligi */
.page-title {
    font-size: var(--ikprof-fs-page) !important;
    line-height: 28px;
    font-weight: var(--ikprof-fw-semibold) !important;
    margin-bottom: 0;
}

.page-pretitle {
    font-size: var(--ikprof-fs-caption);
    font-weight: var(--ikprof-fw-medium);
    color: var(--ikprof-ink-muted);
}

/* Kalin yazi kurumsal gorunumu bozmasin: 700 yerine 600 */
.fw-bold,
strong,
b {
    font-weight: var(--ikprof-fw-semibold) !important;
}

.text-muted,
.text-secondary {
    color: var(--ikprof-ink-muted) !important;
}

small,
.small {
    font-size: var(--ikprof-fs-caption);
}

/* ---------------------------------------------------------------------
   3) Kartlar
   ------------------------------------------------------------------ */

.card {
    border-radius: var(--ikprof-radius-lg);
    border-color: var(--ikprof-border);
}

.card-header {
    min-height: auto;
    padding: var(--ikprof-sp-3) var(--ikprof-sp-4);
    border-bottom-color: var(--ikprof-border);
}

.card-body {
    padding: var(--ikprof-sp-4);
}

.card-footer {
    padding: var(--ikprof-sp-3) var(--ikprof-sp-4);
}

.card-sm .card-body {
    padding: var(--ikprof-sp-3);
}

/* Kart icindeki metin govde olcusunde kalsin */
.card-body,
.card-body p,
.card-body dd,
.card-body dt {
    font-size: var(--ikprof-fs-body);
}

/* ---------------------------------------------------------------------
   4) Tablolar - ERP'nin en yogun ekrani
   ------------------------------------------------------------------ */

.table {
    font-size: var(--ikprof-fs-table);
    color: var(--ikprof-ink);
    --tblr-table-bg: transparent;
}

.table > :not(caption) > * > * {
    padding: 10px var(--ikprof-sp-3);
}

.table thead th,
.table > thead > tr > th {
    font-size: var(--ikprof-fs-th);
    font-weight: var(--ikprof-fw-semibold);
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--ikprof-ink-2);
    white-space: nowrap;
    vertical-align: middle;
}

.table tbody td,
.table > tbody > tr > td {
    font-size: var(--ikprof-fs-table);
    font-weight: var(--ikprof-fw-regular);
    vertical-align: middle;
}

.table tbody tr {
    height: var(--ikprof-h-row);
}

/* Sayisal kolonlar saga hizali ve sabit genislikli rakamlarla */
.table .text-end,
.table .text-right,
.table td.numeric,
.table th.numeric {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Satir icindeki islem butonlari kucuk kalsin */
.table .btn {
    height: var(--ikprof-h-control-sm);
    padding: 0 var(--ikprof-sp-2);
    font-size: var(--ikprof-fs-caption);
}

.table .btn-sm,
.table .btn-icon {
    height: 28px;
    padding: 0 6px;
}

/* Kompakt tablo modu */
.table-sm > :not(caption) > * > * {
    padding: 6px var(--ikprof-sp-2);
}

.table-sm tbody tr {
    height: 34px;
}

/* DataTables denetimleri */
.dataTables_wrapper,
.dataTables_filter,
.dataTables_length,
.dataTables_info,
.dataTables_paginate {
    font-size: var(--ikprof-fs-table);
}

/* ---------------------------------------------------------------------
   5) Formlar
   ------------------------------------------------------------------ */

.form-label {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-medium);
    line-height: 18px;
    color: var(--ikprof-ink-2);
    margin-bottom: 6px;
}

.form-control,
.form-select {
    font-size: var(--ikprof-fs-control);
    font-weight: var(--ikprof-fw-regular);
    min-height: var(--ikprof-h-control);
    padding: 7px var(--ikprof-sp-3);
    border-radius: var(--ikprof-radius);
    border-color: var(--ikprof-border);
    color: var(--ikprof-ink);
}

textarea.form-control {
    min-height: 76px;
    line-height: 20px;
}

.form-control::placeholder {
    font-size: var(--ikprof-fs-label);
    color: var(--ikprof-ink-muted);
}

.form-control-sm,
.form-select-sm {
    font-size: var(--ikprof-fs-label);
    min-height: var(--ikprof-h-control-sm);
    padding: 4px var(--ikprof-sp-2);
}

.form-hint,
.form-text {
    font-size: var(--ikprof-fs-caption);
    color: var(--ikprof-ink-muted);
    margin-top: var(--ikprof-sp-1);
}

/* Form alanlari arasi dikey bosluk */
.mb-3 {
    margin-bottom: var(--ikprof-sp-3) !important;
}

.form-check-label {
    font-size: var(--ikprof-fs-label);
}

/* Yuzen etiketli alanlar (Tabler form-floating) */
.form-floating > label {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-medium);
}

/* ---------------------------------------------------------------------
   6) Butonlar
   ------------------------------------------------------------------ */

.btn {
    font-size: var(--ikprof-fs-btn);
    font-weight: var(--ikprof-fw-semibold);
    min-height: var(--ikprof-h-control);
    padding: 7px var(--ikprof-sp-4);
    border-radius: var(--ikprof-radius);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
}

.btn-sm {
    font-size: var(--ikprof-fs-caption);
    min-height: var(--ikprof-h-control-sm);
    padding: 4px var(--ikprof-sp-3);
}

.btn-lg {
    font-size: var(--ikprof-fs-body);
    min-height: 42px;
    padding: 9px var(--ikprof-sp-5);
}

.btn-icon {
    padding: 0;
    width: var(--ikprof-h-control);
    min-height: var(--ikprof-h-control);
}

.btn-icon.btn-sm {
    width: var(--ikprof-h-control-sm);
    min-height: var(--ikprof-h-control-sm);
}

/* ---------------------------------------------------------------------
   7) Rozet ve durum etiketleri
   ------------------------------------------------------------------ */

.badge,
.status {
    font-size: var(--ikprof-fs-badge);
    font-weight: var(--ikprof-fw-medium);
    line-height: 16px;
    padding: 3px var(--ikprof-sp-2);
    border-radius: 999px;
}

.badge.bg-primary,
.badge.bg-danger,
.badge.bg-success,
.badge.bg-warning {
    font-weight: var(--ikprof-fw-semibold);
}

/* ---------------------------------------------------------------------
   8) Sayfa yerlesimi
   ------------------------------------------------------------------ */

.page-body {
    margin-top: var(--ikprof-sp-4);
}

.page-wrapper .container-xl,
.page-wrapper .container-fluid {
    padding-left: var(--ikprof-sp-5);
    padding-right: var(--ikprof-sp-5);
}

.page-header {
    margin-bottom: var(--ikprof-sp-3);
}

/* Sekmeler */
.nav-tabs .nav-link {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-medium);
    padding: var(--ikprof-sp-2) var(--ikprof-sp-3);
}

/* Sayfalama */
.pagination {
    font-size: var(--ikprof-fs-label);
}

.page-link {
    padding: 5px 10px;
}

/* ---------------------------------------------------------------------
   9) Acilir menuler
   ------------------------------------------------------------------ */

.dropdown-menu {
    font-size: var(--ikprof-fs-label);
    border-radius: var(--ikprof-radius);
    border-color: var(--ikprof-border);
}

.dropdown-item {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-regular);
    padding: 7px var(--ikprof-sp-3);
}

.dropdown-header {
    font-size: var(--ikprof-fs-tiny);
    font-weight: var(--ikprof-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--ikprof-ink-muted);
}

/* ---------------------------------------------------------------------
   10) Modal ve yan panel
   ------------------------------------------------------------------ */

.modal-content {
    border-radius: var(--ikprof-radius-lg);
    border-color: var(--ikprof-border);
}

.modal-title {
    font-size: var(--ikprof-fs-section);
    font-weight: var(--ikprof-fw-semibold);
    line-height: 26px;
}

.modal-header {
    padding: var(--ikprof-sp-3) var(--ikprof-sp-4);
    border-bottom-color: var(--ikprof-border);
}

.modal-body {
    padding: var(--ikprof-sp-4);
    font-size: var(--ikprof-fs-body);
}

.modal-footer {
    padding: var(--ikprof-sp-3) var(--ikprof-sp-4);
    border-top-color: var(--ikprof-border);
    gap: var(--ikprof-sp-2);
}

.modal-footer .btn {
    font-size: var(--ikprof-fs-btn);
}

.offcanvas-title {
    font-size: var(--ikprof-fs-section);
    font-weight: var(--ikprof-fw-semibold);
}

/* ---------------------------------------------------------------------
   11) Kontrol paneli ozet kartlari
   ------------------------------------------------------------------ */

.card .h1,
.card .display-6,
.kpi-value {
    font-size: 26px !important;
    line-height: 32px;
    font-weight: var(--ikprof-fw-semibold) !important;
    font-variant-numeric: tabular-nums;
}

.card .subheader,
.kpi-label {
    font-size: var(--ikprof-fs-caption);
    font-weight: var(--ikprof-fw-medium);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--ikprof-ink-muted);
}

/* ---------------------------------------------------------------------
   12) Bilgi listeleri (detay ekranlarindaki dt/dd)
   ------------------------------------------------------------------ */

dl.row dt {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-medium);
    color: var(--ikprof-ink-2);
    padding-top: 5px;
    padding-bottom: 5px;
}

dl.row dd {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-regular);
    padding-top: 5px;
    padding-bottom: 5px;
    margin-bottom: 0;
}

/* ---------------------------------------------------------------------
   13) Uyari kutulari
   ------------------------------------------------------------------ */

.alert {
    font-size: var(--ikprof-fs-label);
    padding: var(--ikprof-sp-3) var(--ikprof-sp-4);
    border-radius: var(--ikprof-radius);
}

.alert-title {
    font-size: var(--ikprof-fs-body);
    font-weight: var(--ikprof-fw-semibold);
}

/* ---------------------------------------------------------------------
   14) Erisilebilirlik
   ------------------------------------------------------------------ */

/* Odak halkasi kaldirilmaz, klavye ile gezinme korunur */
.btn:focus-visible,
.form-control:focus-visible,
.form-select:focus-visible,
.nav-link:focus-visible,
.dropdown-item:focus-visible {
    outline: 2px solid #00a2c6;
    outline-offset: 1px;
}

/* Dar ekranda tablo ve form yazilari daha da kuculmesin */
@media (max-width: 768px) {
    .table,
    .table tbody td {
        font-size: var(--ikprof-fs-table);
    }

    .page-wrapper .container-xl,
    .page-wrapper .container-fluid {
        padding-left: var(--ikprof-sp-3);
        padding-right: var(--ikprof-sp-3);
    }
}

/* ---------------------------------------------------------------------
   15) Takvim - kurumsal ve kompakt gorunum
   ------------------------------------------------------------------ */

.fc {
    font-size: var(--ikprof-fs-label);
}

/* Ust serit: buyuk baslik ve buyuk dugmeler yerine olculu bir satir */
.fc .fc-toolbar {
    gap: var(--ikprof-sp-2);
    margin-bottom: var(--ikprof-sp-3) !important;
    flex-wrap: wrap;
}

.fc .fc-toolbar-title {
    font-size: var(--ikprof-fs-card) !important;
    font-weight: var(--ikprof-fw-semibold);
    line-height: 24px;
}

.fc .fc-button {
    font-size: var(--ikprof-fs-caption) !important;
    font-weight: var(--ikprof-fw-medium);
    min-height: var(--ikprof-h-control-sm);
    padding: 4px 10px !important;
    border-radius: var(--ikprof-radius) !important;
    box-shadow: none !important;
    text-transform: none;
}

.fc .fc-button-group > .fc-button {
    border-radius: 0 !important;
}

.fc .fc-button-group > .fc-button:first-child {
    border-top-left-radius: var(--ikprof-radius) !important;
    border-bottom-left-radius: var(--ikprof-radius) !important;
}

.fc .fc-button-group > .fc-button:last-child {
    border-top-right-radius: var(--ikprof-radius) !important;
    border-bottom-right-radius: var(--ikprof-radius) !important;
}

/* Baslik ve gun satirlari */
.fc .fc-col-header-cell-cushion {
    font-size: var(--ikprof-fs-th);
    font-weight: var(--ikprof-fw-semibold);
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--ikprof-ink-2);
    padding: 6px 4px;
}

.fc .fc-daygrid-day-number {
    font-size: var(--ikprof-fs-caption);
    font-weight: var(--ikprof-fw-medium);
    padding: 4px 6px;
}

.fc .fc-daygrid-day.fc-day-today,
.fc .fc-timegrid-col.fc-day-today {
    background: rgba(0, 162, 198, .07) !important;
}

/* Etkinlikler */
.fc .fc-event {
    font-size: var(--ikprof-fs-caption);
    border-radius: 4px;
    border: 0;
    padding: 1px 4px;
}

.fc .fc-event-title,
.fc .fc-event-time {
    font-weight: var(--ikprof-fw-medium);
}

/* Ajanda (liste) gorunumu */
.fc .fc-list-day-cushion {
    background: #f4f6fa;
    padding: 6px var(--ikprof-sp-3);
}

.fc .fc-list-day-text,
.fc .fc-list-day-side-text {
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-semibold);
    color: var(--ikprof-ink);
    text-decoration: none;
}

.fc .fc-list-event td {
    padding: 7px var(--ikprof-sp-3);
    font-size: var(--ikprof-fs-label);
}

.fc .fc-list-event:hover td {
    background: rgba(0, 162, 198, .06);
}

.fc .fc-list-empty {
    background: transparent;
    font-size: var(--ikprof-fs-label);
    color: var(--ikprof-ink-muted);
}

/* Saat izgarasindeki "tum gun" seridi sari degil notr olsun */
.fc .fc-timegrid-axis-cushion,
.fc .fc-timegrid-slot-label-cushion {
    font-size: var(--ikprof-fs-tiny);
    color: var(--ikprof-ink-muted);
}

.fc .fc-scrollgrid,
.fc td,
.fc th {
    border-color: var(--ikprof-border) !important;
}

/* Takvim kaydinin icerigi: tur ikonu + saat + baslik tek satirda */
.fc-ikprof-event {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
    overflow: hidden;
    padding: 1px 2px;
}

.fc-ikprof-event > i {
    flex: 0 0 auto;
    font-size: 12px;
    opacity: .9;
}

.fc-ikprof-time {
    flex: 0 0 auto;
    font-size: var(--ikprof-fs-tiny);
    font-weight: 600;
    opacity: .85;
}

.fc-ikprof-title {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--ikprof-fs-tiny);
}

/* Ajanda (listWeek) gorunumunde satirlar biraz daha ferah dursun */
.fc .fc-list-event .fc-ikprof-event {
    gap: 6px;
}

.fc .fc-list-event .fc-ikprof-title {
    font-size: var(--ikprof-fs-table);
}

/* ==================================================================
   16) KONTROL PANELI TAKVIMI - SICAK KREM (GOLD) ZEMIN
   Yalnizca kontrol panelindeki kompakt takvimi etkiler; Takvim
   modulundeki tam takvim beyaz kalir.
   ================================================================== */

:root {
    --ikprof-gold-bg: #fbf7ec;      /* zemin */
    --ikprof-gold-head: #f5eedc;    /* gun basligi ve bugun hucresi */
    --ikprof-gold-line: #e8dcc0;    /* yatay ayrim cizgileri */
    --ikprof-gold-hover: #f3ead4;   /* satir uzerine gelince */
    --ikprof-gold-grid: #ddcfae;    /* ay gorunumu izgarasi */
}

.dashboard-calendar-card .card-body {
    background: var(--ikprof-gold-bg);
}

.dashboard-calendar-card .card-header {
    background: var(--ikprof-gold-head);
    border-bottom-color: var(--ikprof-gold-line);
}

/* FullCalendar kendi renk degiskenlerini kullanir; hepsini tek
   yerden krem paletine cekiyoruz. */
#calendar[data-compact="1"] {
    --fc-page-bg-color: var(--ikprof-gold-bg);
    --fc-neutral-bg-color: var(--ikprof-gold-head);
    --fc-border-color: var(--ikprof-gold-line);
    --fc-today-bg-color: var(--ikprof-gold-head);
    --fc-list-event-hover-bg-color: var(--ikprof-gold-hover);
    background: var(--ikprof-gold-bg);
}

/* Bootstrap tablo degiskenleri hucreleri beyaza boyuyordu */
#calendar[data-compact="1"] .fc-scrollgrid,
#calendar[data-compact="1"] table,
#calendar[data-compact="1"] td,
#calendar[data-compact="1"] th {
    --tblr-table-bg: transparent;
    --bs-table-bg: transparent;
    background-color: transparent;
    border-color: var(--ikprof-gold-line) !important;
}

/* --- AJANDA (liste) gorunumu: satir satir yatay ayrim cizgileri --- */
#calendar[data-compact="1"] .fc-list {
    background: var(--ikprof-gold-bg);
    border-color: var(--ikprof-gold-line);
}

#calendar[data-compact="1"] .fc-list-day-cushion {
    background: var(--ikprof-gold-head);
}

#calendar[data-compact="1"] .fc-list-event td {
    /* Dikey cizgiler kalksin, yalnizca yatay ayrim kalsin */
    border-left: 0;
    border-right: 0;
    border-top: 1px solid var(--ikprof-gold-line);
}

#calendar[data-compact="1"] .fc-list-event:hover td {
    background: var(--ikprof-gold-hover);
}

#calendar[data-compact="1"] .fc-list-empty {
    background: var(--ikprof-gold-bg);
}

/* --- AY gorunumu: zemin yine krem --- */
#calendar[data-compact="1"] .fc-daygrid-day,
#calendar[data-compact="1"] .fc-daygrid-body,
#calendar[data-compact="1"] .fc-view-harness,
#calendar[data-compact="1"] .fc-col-header-cell {
    background-color: transparent;
}

#calendar[data-compact="1"] .fc-col-header-cell {
    background-color: var(--ikprof-gold-head);
}

#calendar[data-compact="1"] .fc-daygrid-day.fc-day-today,
#calendar[data-compact="1"] .fc-timegrid-col.fc-day-today {
    background-color: var(--ikprof-gold-head) !important;
}

/* Ay disindaki gunler biraz soluk dursun */
#calendar[data-compact="1"] .fc-daygrid-day.fc-day-other {
    opacity: .55;
}

/* --- Klavuz cizgileri -------------------------------------------
   Ajanda gorunumunde kayit bitince zemin bos kaliyordu. Satir
   yuksekligi sabitlenip (34px) ayni araliklarla yatay klavuz
   cizgileri ciziliyor; boylece defter satiri gibi duruyor.
   ---------------------------------------------------------------- */

#calendar[data-compact="1"] .fc-list-day-cushion,
#calendar[data-compact="1"] .fc-list-event td {
    box-sizing: border-box;
    height: 34px;
    padding-top: 0;
    padding-bottom: 0;
    vertical-align: middle;
}

/* Satir cizgisini artik zemindeki klavuz cizgisi veriyor */
#calendar[data-compact="1"] .fc-list-event td {
    border-top: 0;
}

#calendar[data-compact="1"] .fc-list,
#calendar[data-compact="1"] .fc-list-table,
#calendar[data-compact="1"] .fc-list-event td,
#calendar[data-compact="1"] .fc-list-day > * {
    background-color: transparent;
}

#calendar[data-compact="1"] .fc-list-day-cushion {
    background-color: var(--ikprof-gold-head);
}

#calendar[data-compact="1"] .fc-view-harness {
    background-color: var(--ikprof-gold-bg);
    background-image: repeating-linear-gradient(to bottom,
            transparent 0,
            transparent 33px,
            var(--ikprof-gold-line) 33px,
            var(--ikprof-gold-line) 34px);
}

/* Ay gorunumunde izgara, zemindeki klavuz cizgileriyle karismasin:
   ay izgarasi kendi opak zeminini tasir. */
#calendar[data-compact="1"] .fc-daygrid {
    background-color: var(--ikprof-gold-bg);
}

/* --- AY gorunumu: gercek bir takvim izgarasi ---
   Her gun esit yukseklikte bir kutu olsun, gun numarasi sag ustte
   dursun ve hucre cizgileri net gorunsun. */
#calendar[data-compact="1"] .fc-scrollgrid-sync-table td,
#calendar[data-compact="1"] .fc-scrollgrid-sync-table th,
#calendar[data-compact="1"] .fc-daygrid-day,
#calendar[data-compact="1"] .fc-col-header-cell {
    border: 1px solid var(--ikprof-gold-grid) !important;
}

#calendar[data-compact="1"] .fc-scrollgrid {
    border-color: var(--ikprof-gold-grid) !important;
}

/* Gun kutulari esit ve ferah */
#calendar[data-compact="1"] .fc-daygrid-day-frame {
    min-height: 56px;
    padding: 2px 3px;
}

#calendar[data-compact="1"] .fc-daygrid-day-top {
    justify-content: flex-end;
}

#calendar[data-compact="1"] .fc-daygrid-day-number {
    font-size: var(--ikprof-fs-caption);
    font-weight: 600;
    padding: 1px 3px;
    color: var(--ikprof-ink);
}

#calendar[data-compact="1"] .fc-col-header-cell-cushion {
    padding: 5px 2px;
}

/* Uzun baslik kutudan tasmasin */
#calendar[data-compact="1"] .fc-daygrid-event {
    overflow: hidden;
    margin-top: 1px;
}

#calendar[data-compact="1"] .fc-daygrid-more-link {
    font-size: var(--ikprof-fs-tiny);
    font-weight: 600;
}

/* ==================================================================
   17) LISTE TABLOSU - ARAMA, KAYIT SAYISI VE ALT BILGI
   Ust serit tek bir cizgide dursun: arama kutusu ve kayit sayisi
   ayni yukseklikte, ayni kose yuvarlakliginda ve ayni cizgi
   renginde. Odaklaninca turkuaz bir halka cikar.
   ================================================================== */

.dataTables_wrapper .dataTables_filter {
    width: 100%;
}

/* --- Arama kutusu --- */
.dataTables_filter label {
    width: 100% !important;
    margin: 0 !important;
    display: flex;
    align-items: center;
    height: var(--ikprof-h-control);
    background: #fff;
    border: 1px solid var(--ikprof-border) !important;
    border-radius: var(--ikprof-radius) !important;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.dataTables_filter label:hover {
    border-color: #cfd6de !important;
}

.dataTables_filter label:focus-within {
    border-color: var(--ikprof-blue, #00a2c6) !important;
    box-shadow: 0 0 0 3px rgba(0, 162, 198, .14);
}

.dt-search-container {
    padding: 0 !important;
    gap: 6px;
}

.dt-search-container > i {
    font-size: 1.05rem;
    line-height: 1;
    color: var(--ikprof-ink-muted);
    margin-left: 10px !important;
}

.dt-search-container input,
.dataTables_filter input {
    height: calc(var(--ikprof-h-control) - 2px) !important;
    padding: 0 12px 0 0 !important;
    font-size: var(--ikprof-fs-control);
    color: var(--ikprof-ink);
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    outline: none !important;
}

.dt-search-container input::placeholder {
    color: #9aa3ae;
}

/* --- Kayit sayisi secicisi ---
   Cevresinde ayri bir kutu yok; secicinin kendisi arama kutusuyla
   ayni olculerde duruyor. Dort basamakli degerler (1000) sigar. */
.length-menu-container {
    flex: 0 0 auto;
}

.length-menu-container .dataTables_length,
.length-menu-container .dataTables_length label {
    width: auto;
    margin: 0;
}

.dt-length-container {
    white-space: nowrap;
}

/* Secicinin yanindaki "kayit" yazisi: ne oldugu belli olsun,
   ayri bir ikona gerek kalmasin. */
.dt-length-label {
    font-size: var(--ikprof-fs-caption);
    color: var(--ikprof-ink-muted);
}

.dataTables_length select,
.dt-length-container select {
    min-width: 84px;
    width: auto;
    height: var(--ikprof-h-control) !important;
    padding: 0 30px 0 12px;
    /* Acilir kapanir ok */
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%236b7280' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 14px 14px;
    font-size: var(--ikprof-fs-label);
    font-weight: var(--ikprof-fw-medium);
    color: var(--ikprof-ink);
    background-color: #fff;
    border: 1px solid var(--ikprof-border) !important;
    border-radius: var(--ikprof-radius) !important;
    box-shadow: none !important;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease;
}

.dataTables_length select:hover,
.dt-length-container select:hover {
    border-color: #cfd6de !important;
}

.dataTables_length select:focus,
.dt-length-container select:focus {
    border-color: var(--ikprof-blue, #00a2c6) !important;
    /* style.css bu secicide box-shadow'u none !important yapiyor */
    box-shadow: 0 0 0 3px rgba(0, 162, 198, .14) !important;
    outline: none;
}

/* --- Alt bilgi: "Toplam 128 kayittan 1 - 25 arasi gosteriliyor" --- */
/* "Toplam 2.054 kayittan 1 - 25 arasi gosteriliyor" satiri listenin
   ustunde, arama kutusunun hemen altinda durur. */
.dt-info-container,
.dataTables_info {
    font-size: var(--ikprof-fs-caption);
    color: var(--ikprof-ink-muted);
    padding: 0 !important;
    margin: 0;
}

/* Bilgi satiri saga yaslanir; sol taraf listeye nefes birakir. */
.dt-info-container {
    padding-right: 2px !important;
    text-align: right;
}

/* ==================================================================
   18) TABLOLARDA YATAY KAYDIRMA (web / tablet / mobil)
   Dar ekranda sutunlar sagdan kesiliyordu ve kaydirma yolu yoktu.
   Artik tablo kendi icinde yana kayiyor: masaustunde altta gorunur
   bir kaydirma cubugu, dokunmatikte parmakla kaydirma.
   ================================================================== */

.ikprof-table-scroll,
.table-responsive,
.dataTables_wrapper .dataTables_scrollBody {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
    scrollbar-color: #c3ccd6 transparent;
}

.table-responsive {
    overflow-y: hidden;
}

/* Liste tablosu kendi penceresi icinde kayar.
   Boylece hem sutun basliklari hep ustte kalir hem de yatay
   kaydirma cubugu her zaman ekranda olur; 25 satirin sonuna
   inmek gerekmez. */
.ikprof-table-scroll {
    overflow-y: auto;
    /* Tek yatay cubuk bu kutunun kendi cubugu; rahat tutulsun */
    scrollbar-width: auto;
    /* Gercek yukseklik script.js icindeki fitTableHeights ile
       olculup yaziliyor; bu deger yalnizca ilk cizimde kullanilir. */
    max-height: calc(100vh - 290px);
    min-height: 220px;
    overscroll-behavior-y: contain;
}

/* Sutun basliklari kendi penceresinin tepesine yapisir.
   DataTables kendi stilinde th'yi "relative" yaptigi icin burada
   !important gerekiyor. */
.ikprof-table-scroll table thead th,
.ikprof-table-scroll table.dataTable thead th,
.ikprof-table-scroll table.dataTable thead > tr > th {
    position: sticky !important;
    top: 0;
    z-index: 2;
    background: #f6f8fa;
    box-shadow: inset 0 -1px 0 var(--ikprof-border);
}

/* Masaustunde cubuk her zaman gorunur ve tutulabilir olsun */
.ikprof-table-scroll::-webkit-scrollbar,
.table-responsive::-webkit-scrollbar {
    height: 10px;
}

.ikprof-table-scroll::-webkit-scrollbar-track,
.table-responsive::-webkit-scrollbar-track {
    background: #f1f4f7;
    border-radius: 999px;
}

.ikprof-table-scroll::-webkit-scrollbar-thumb,
.table-responsive::-webkit-scrollbar-thumb {
    background: #c3ccd6;
    border-radius: 999px;
}

.ikprof-table-scroll::-webkit-scrollbar-thumb:hover,
.table-responsive::-webkit-scrollbar-thumb:hover {
    background: #a7b2be;
}

/* Sutunlar sikismasin, kaysin */
.ikprof-table-scroll > .col-sm-12 {
    min-width: 0;
}

/* Tablo kendi dogal genisligini korusun; dar ekranda kutuyu asip
   kaydirilsin. width:100% verilirse sutunlar sikisir ve kaydirma
   yerine icerik ezilir. */
.ikprof-table-scroll table.dataTable {
    min-width: 100%;
}

/* --- Tablet ve mobil --- */
@media (max-width: 991.98px) {

    /* Dokunmatikte cubuk ince ve soluk; kaydirma parmakla yapilir */
    .ikprof-table-scroll::-webkit-scrollbar,
    .table-responsive::-webkit-scrollbar {
        height: 6px;
    }

    /* Hucreler alt alta kirilmasin, yana kaysin */
    .ikprof-table-scroll table.dataTable td,
    .ikprof-table-scroll table.dataTable th {
        white-space: nowrap;
    }

    /* Ust serit: arama ve kayit sayisi alt alta gecsin */
    .dataTables_wrapper .dt-search-container input {
        font-size: 16px; /* iOS'ta odaklaninca sayfayi buyutmesin */
    }
}

@media (max-width: 575.98px) {

    /* Kartlarin ic boslugu kuculsun ki tabloya yer kalsin */
    .card > .card-body {
        padding: var(--ikprof-sp-3);
    }

    .dataTables_wrapper .dt-length-label {
        display: none;
    }
}

/* ==================================================================
   19) MESAI BASLAT / BITIR DUGMESI
   Kucuk ve belirsiz bir kronometre ikonu yerine, durumu bir bakista
   okunan yuvarlak bir dugme: mesai aciksa yesil, kapaliysa kirmizi
   isik yanar.
   ================================================================== */

.shift-toggle {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1.5px solid transparent;
    cursor: pointer;
    text-decoration: none;
    transition: background-color .15s ease, border-color .15s ease, transform .12s ease;
}

.shift-toggle i {
    font-size: 1.15rem;
    line-height: 1;
}

.shift-toggle:hover {
    transform: translateY(-1px);
}

/* Mesai kapali: baslatmak icin */
.shift-toggle.is-off {
    background: #fdecec;
    border-color: #f5c2c2;
    color: #b02a2a;
}

.shift-toggle.is-off:hover {
    background: #fbdcdc;
    color: #8f1f1f;
}

/* Mesai acik: bitirmek icin */
.shift-toggle.is-on {
    background: #e7f6ec;
    border-color: #a8ddbd;
    color: #1a7f45;
}

.shift-toggle.is-on:hover {
    background: #d7efe0;
    color: #146536;
}

/* Durum isigi */
.shift-toggle-light {
    position: absolute;
    right: 1px;
    bottom: 1px;
    width: 11px;
    height: 11px;
    border-radius: 50%;
    border: 2px solid #fff;
}

.shift-toggle.is-off .shift-toggle-light {
    background: #dc3545;
}

.shift-toggle.is-on .shift-toggle-light {
    background: #21a05a;
    animation: shift-pulse 1.8s ease-in-out infinite;
}

@keyframes shift-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(33, 160, 90, .55); }
    50%      { box-shadow: 0 0 0 5px rgba(33, 160, 90, 0); }
}

/* Hareketi azaltilmis cihazlarda yanip sonmesin */
@media (prefers-reduced-motion: reduce) {
    .shift-toggle.is-on .shift-toggle-light {
        animation: none;
    }

    .shift-toggle:hover {
        transform: none;
    }
}

/* ==================================================================
   20) LISTE SAYFASI YERLESIMI
   Tablo penceresinin yuksekligi JavaScript ile olculuyor (script.js
   icindeki fitTableHeights): ekranda kalan bosluk neyse o kadar
   aciliyor. Boylece altta bos bir serit kalmiyor, kaydirma cubugu ve
   sayfalama her zaman ekranin alt kenarinda oluyor.
   ================================================================== */

/* Icinde liste tablosu olan sarmalayici kendi kaydirmasini birakir;
   kaydirmayi ic kutu yapiyor. */
.table-responsive.dt-host {
    overflow: visible;
}

.page-body.has-list-table {
    margin-bottom: var(--ikprof-sp-2);
}

/* ==================================================================
   21) GUVENLIK AGI VE YAZDIRMA
   ================================================================== */

/* Elle yazilmis tablolardan tasanlar, script.js tarafindan bu kutuya
   alinir. Gorunumu degistirmez, yalnizca yana kaydirmayi saglar. */
.ikprof-auto-scroll {
    width: 100%;
}

/* Yazdirirken hicbir sey kirpilmasin: kaydirma kutulari acilir. */
@media print {

    .table-responsive,
    .ikprof-auto-scroll,
    .ikprof-table-scroll,
    .dt-host {
        overflow: visible !important;
        max-height: none !important;
        height: auto !important;
    }

    .ikprof-table-scroll table thead th {
        position: static !important;
    }

    .page-body.has-list-table {
        margin-bottom: 0;
    }
}

/* =====================================================================
   HIYERARSI SUTUNU
   Departman > Bolum > Birim > Takim zinciri ic ice girintili satirlar
   halinde basiliyor. Sutun text-truncate ile kirpiliyordu; satirlar
   "Insan Kaynaklari Mud..." gibi yarim kaliyor ve zincir okunamiyordu.
   Burada kirpma kapatilir, uzun adlar alt satira iner.

   !important gerekli: mobil gorunumde butun tablo hucrelerine
   white-space: nowrap veren bir kural var, o kural bu dosyada daha
   sonra geldigi icin normal ozgullukle asilamiyor.
   ===================================================================== */

table.dataTable td.hierarchy-cell,
table.dataTable th.hierarchy-cell,
.ikprof-table-scroll table.dataTable td.hierarchy-cell,
.ikprof-table-scroll table.dataTable th.hierarchy-cell {
    white-space: normal !important;
    overflow: visible;
    text-overflow: clip;
    min-width: 240px;
    vertical-align: top;
}

/* Zincirin girintili satirlari da kirpilmasin */
td.hierarchy-cell * {
    white-space: normal !important;
    overflow: visible;
    text-overflow: clip;
}

/* Sabit yukseklik uzun adlarda metni kesiyordu */
td.hierarchy-cell .h53 {
    height: auto;
    min-height: 53px;
}

/* =====================================================================
   KONTROL PANELI - KISA YOLLAR
   Takvimin hemen altinda duran, en sik girilen ekranlara giden serit.
   Dar ekranda alt satira iner; tek satira sigdirmak icin kaydirma
   cubugu koymak, dokunmatikte kotu bir deneyim olurdu.
   ===================================================================== */

.dashboard-shortcuts {
    display: flex;
    flex-wrap: wrap;
    /* Serit sayfanin ortasinda dursun. Kisayollar sola yasliydi, artan
       bos alan sagda kaliyor ve ekle dugmesi tek basina uzakta
       duruyordu. */
    justify-content: center;
    align-items: center;
    gap: 10px;
    padding: 12px;
}

.dashboard-shortcut {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border: 1px solid #d3e8ef;
    border-radius: 8px;
    background: #f3fafc;
    color: #0a3c4a;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transition: background .12s ease, border-color .12s ease;
}

.dashboard-shortcut i {
    font-size: 18px;
    color: #00a2c6;
}

.dashboard-shortcut:hover {
    background: #e2f4f9;
    border-color: #00a2c6;
    color: #0a3c4a;
}

/* Telefonda kisayollar ikiser ikiser dizilir.

   min-width: 0 ve satir kaydirma sart: "Yillik Izin Talepleri" gibi
   uzun etiketler tek satira sigmadigi icin dugmeyi genisletiyor ve
   hepsi alt alta tek sutun haline geliyordu. Artik metin iki satira
   inip dugme dar kalabiliyor. */
@media (max-width: 575.98px) {
    .dashboard-shortcut {
        flex: 1 1 calc(50% - 10px);
        min-width: 0;
        justify-content: flex-start;
        padding: 10px;
        line-height: 1.25;
    }

    .dashboard-shortcut span {
        min-width: 0;
        white-space: normal;
    }
}

/* =====================================================================
   KONTROL PANELI - BILGI KARTLARI
   Ajanda, duyuru, yeni katilan, terfi, dogum gunu ve etkinlik kartlari.
   Izgara dogrudan kartlara uygulaniyor; her kart icin ayri bir sutun
   sarmalayicisi yazmak gerekmiyor.
   ===================================================================== */

/* Bilgi kartlari da analiz gibi UCLU duzende: web'de ustte uc, altta
   uc kart. Onceden "sigdigi kadar" yerlestiriliyordu; genis ekranda
   ustte dort, altta iki kart kaliyor ve satirlar birbirini tutmuyordu. */
.dashboard-info {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0 16px;
    align-items: start;
}

@media (min-width: 768px) {
    .dashboard-info {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1200px) {
    .dashboard-info {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* =====================================================================
   PANEL KARTLARI AYNI BOYDA

   Kartlar iceriklerine gore uzayip kisaliyordu: bes bildirimi olan
   kart uzun, bos olan kisa kaliyor, satirlar birbirini tutmuyordu.
   Artik hepsi ayni yukseklikte. Icerik sigmazsa kart buyumez, kartin
   ICINDE kayar; boylece sayfanin duzeni hicbir zaman bozulmaz.
   ===================================================================== */

:root {
    /* Iki satir bilgi karti tipik bir dizustu ekranina birlikte sigsin
       diye olculdu; 320 pikselde ikinci satir ekranin altinda kaliyor
       ve bos kartlarda kocaman bosluk olusuyordu. */
    --ikprof-kart-h: 270px;
}

.dashboard-info > .card,
.dashboard-analiz .card {
    height: var(--ikprof-kart-h);
    display: flex;
    flex-direction: column;
}

/* Baslik seridi sabit kalir, yalnizca govde kayar. */
.dashboard-info > .card > .card-header,
.dashboard-analiz .card > .card-header {
    flex: 0 0 auto;
}

.dashboard-info > .card > .card-body,
.dashboard-analiz .card > .card-body {
    flex: 1 1 auto;
    /* min-height olmadan flex ogesi icerigi kadar buyuyup tasiyor. */
    min-height: 0;
    overflow-y: auto;
}

/* Kart icindeki kaydirma cubugu ince ve soluk olsun; her kartta kalin
   bir cubuk gorunmesi dagitici. */
.dashboard-info > .card > .card-body::-webkit-scrollbar,
.dashboard-analiz .card > .card-body::-webkit-scrollbar {
    width: 6px;
}

.dashboard-info > .card > .card-body::-webkit-scrollbar-thumb,
.dashboard-analiz .card > .card-body::-webkit-scrollbar-thumb {
    background: #d7e0e8;
    border-radius: 3px;
}

/* Telefonda sabit yukseklik daralan ekranda ise yaramiyor: icerik
   zaten tek sutuna iniyor, kart kendi boyunda rahat dursun. */
@media (max-width: 575.98px) {
    .dashboard-info > .card,
        .dashboard-analiz .card {
        height: auto;
    }

    .dashboard-info > .card > .card-body,
        .dashboard-analiz .card > .card-body {
        overflow-y: visible;
    }
}

/* Ortak "kayit yok" gorunumu. Her kart kendi bicimini yaziyordu:
   farkli ikonlar, farkli yazi boyutlari, hatta yanlis metinler. */
.dashboard-empty {
    text-align: center;
    padding: 26px 16px;
}

.dashboard-empty i {
    font-size: 32px;
    color: #b9c4d1;
}

.dashboard-empty-title {
    margin-top: 8px;
    font-size: 14px;
    font-weight: 600;
    color: #6b7684;
}

.dashboard-empty-note {
    margin-top: 2px;
    font-size: 12.5px;
    color: #98a1af;
}

/* =====================================================================
   IKI SUTUNUN ORTAK HIZASI   (yalnizca genis ekran)

   Sol menu ile sag sutun birbirinden bagimsiz iki kolon. Ustteki uc
   satirin ayni cizgilerde baslayip bitmesi icin ikisi de AYNI
   olculeri kullanir:

     1. satir   logo satiri      <->  ust serit
     2. satir   "Ara" kutusu     <->  calisma alani yolu
     3. satir   calisma alani    <->  sayfanin ilk karti

   NEDEN SABIT YUKSEKLIK?
   Logo dosyasi her firmada farkli ve yuksekligi onceden bilinmiyor.
   Onceden bu yukseklik JavaScript ile olculup hiza duzeltilmeye
   calisiliyordu; olcum ile duzeltme birbirini kovaladigi icin hiza
   bir turlu oturmuyordu. Artik LOGONUN YUKSEKLIGI SINIRLI, dolayisiyla
   satir yuksekligi bastan belli ve hizaya JavaScript hic karismiyor.

   Bir olcuyu degistirirsen ikisi de ayni degiskenden beslendigi icin
   iki sutun birlikte kayar; biri otekinden ayri dusmez.
   ===================================================================== */

:root {
    /* 1. satir: ust seridin toplam yuksekligi, 2px alt cizgi dahil */
    --ikprof-satir-1: 58px;

    /* 2. satir: menudeki arama kutusu ve calisma alani yolu */
    --ikprof-satir-2: 36px;
}

@media (min-width: 992px) {
    /* --- 1. satir --- */
    .ikprof-topbar,
    .navbar-vertical .sidebar-brand-row {
        min-height: var(--ikprof-satir-1);
    }

    /* Menunun ust bolgesi seridin tepesiyle ayni noktadan bassin */
    .navbar-vertical .sidebar-head {
        padding-top: 0;
    }

    /* Logo satirin yuksekligini belirleyen tek sey bu sinir. Firma
       uzun bir logo yuklerse satir buyuyup hizayi bozmaz; logo
       oranini koruyarak kucultulur.

       BOYUTU BELIRLEYEN SEY YUKSEKLIKTIR
         Logo dosyasi 1580x750, yani en/boy orani 2.11. Yukseklik
         55px oldugunda genislik ~116px oluyor - asagidaki genislik
         sinirinin cok altinda. Yani bu logoda OLCUYU BELIRLEYEN
         TEK SEY max-height'tir.

         Genislik siniri yine de duruyor ama baska bir is icin:
         firma ileride cok yatay bir logo yuklerse (orani 3-4 gibi)
         menuden tasmasin diye.

         Satir 58px; ust ve alt pay 1'er piksel oldugundan logoya
         56px yer kaliyor ve 55px oraya tam oturuyor. Daraltma
         dugmesi sagda 28px yer kapliyor; logo ~116px ile ortada
         durdugu icin dugmeye yaklasmiyor bile.

         SATIR YUKSEKLIGI DEGISMEDI
           Logoyu buyutmek icin --ikprof-satir-1 degiskenine
           dokunulmadi: ust serit ve menu ayni degiskenden
           besleniyor, buyutulseydi ust serit de uzardi. Acilan yer
           satirin kendi payindan geldi.

           >>> BURASI TAVAN. <<< 55px, 58px'lik satirin
           doldurulabilecek son noktasi. Daha buyugu icin
           --ikprof-satir-1 buyutulmeli; o da ust seridi uzatir ve
           ayri bir karardir. */
    .navbar-vertical .sidebar-logo-full {
        width: auto;
        height: auto;
        max-width: 200px;
        max-height: calc(var(--ikprof-satir-1) - 3px);
        object-fit: contain;
    }

    /* --- 2. satir --- */
    .navbar-vertical .sidebar-search input {
        min-height: var(--ikprof-satir-2);
    }

    /* --- 3. satir --- */
    .page-body {
        margin-top: var(--ikprof-sp-2);
    }
}

/* Kontrol panelindeki kartlar arasi bosluk her yerde ayni olsun */
.dashboard-shortcuts-card,
.dashboard-calendar-card {
    margin-bottom: var(--ikprof-sp-4) !important;
}

/* Kisayol ekleme dugmesi: seridin sagina yasli, kutucuklarla ayni
   yukseklikte ama sadece ikon. */
.dashboard-shortcut-add {
    display: flex;
    align-items: center;
    justify-content: center;
    /* Onceden "margin-left: auto" ile sayfanin en sagina itiliyordu;
       kisayollarla arasinda kocaman bir bosluk kaliyordu. Artik son
       kisayolun hemen yaninda. */
    width: 42px;
    padding: 10px;
    border: 1px dashed #b3dceb;
    border-radius: 8px;
    background: #ffffff;
    color: #00a2c6;
    flex: none;
    cursor: pointer;
}

.dashboard-shortcut-add i {
    font-size: 18px;
}

.dashboard-shortcut-add:hover {
    background: #e2f4f9;
    border-style: solid;
    border-color: #00a2c6;
}

@media (max-width: 575.98px) {
    /* Dar ekranda kutucuklar ikiser diziliyor; ekleme dugmesi de
       kendi satirinda tam genislige otursun, sikismasin. */
    .dashboard-shortcut-add {
        margin-left: 0;
        flex: 1 1 100%;
        width: auto;
    }
}

/* =====================================================================
   BILDIRIM MENUSU
   ===================================================================== */

/* Okunmus bildirim: listede kalir ama one cikmaz */
.list-group-item.bildirim-okundu {
    background: #fbfcfd;
}

.list-group-item.bildirim-okundu .col.text-truncate > span:first-child {
    color: #7c8695;
}

/* Alttaki dugmeler: yan yana sigmiyorsa alt alta insin.
   "Hepsini okundu isaretle" 400 piksellik menude tasiyordu. */
.bildirim-alt {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.bildirim-alt .btn {
    min-width: 140px;
    white-space: normal;
    line-height: 1.2;
}

/* =====================================================================
   TAKVIMDE GUNE TIKLAYINCA CIKAN SECIM PENCERESI
   ---------------------------------------------------------------------
   Ay gorunumunde bir gune tiklayinca "ne ekleyelim?" diye soruluyor:
   Takvim, Hatirlatici ya da Kurumsal Etkinlik. Uc secenek de ayni
   bicimde, parmakla rahat basilacak buyuklukte.
   ===================================================================== */
.takvim-secim .modal-content {
    border-radius: 14px;
}

.takvim-secim .modal-header {
    padding-bottom: 0.5rem;
    border-bottom: 0;
}

.takvim-secim .modal-title {
    font-size: 1rem;
    font-weight: 600;
}

.takvim-secim-tarih {
    margin-bottom: 0.75rem;
    color: #6c7a91;
    font-size: 0.8125rem;
    text-transform: capitalize;
}

.takvim-secim-liste {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.takvim-secim-dugme {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    /* Parmakla rahat basilabilsin: telefonda onerilen en kucuk alan. */
    min-height: 56px;
    padding: 0.625rem 0.75rem;
    border: 1px solid #e3e8ee;
    border-radius: 10px;
    background: #fff;
    text-align: start;
    transition: border-color .15s, background-color .15s;
}

.takvim-secim-dugme:hover,
.takvim-secim-dugme:focus-visible {
    border-color: #00a2c6;
    background: #f5fcfe;
}

.takvim-secim-ikon {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 9px;
    color: #fff;
    font-size: 1.125rem;
}

.takvim-secim-yazi {
    display: flex;
    flex-direction: column;
    /* Uzun aciklama dugmeyi tasirmasin. */
    min-width: 0;
}

.takvim-secim-baslik {
    color: #1f2d3d;
    font-weight: 600;
    line-height: 1.2;
}

.takvim-secim-not {
    color: #6c7a91;
    font-size: 0.75rem;
    line-height: 1.3;
}

.takvim-secim-ok {
    margin-inline-start: auto;
    color: #b6c2d1;
}

/* Sagdan sola yazilan dillerde ok ters dursun. */
[dir="rtl"] .takvim-secim-ok {
    transform: scaleX(-1);
}

/* =====================================================================
   PANEL ANALIZI  (pasta dilimi grafikleri)

   Adaylar, pozisyonlar, musteriler, alacak/borc ve cekler burada
   toplanip oran olarak gosteriliyor. Kartlar bilgi kartlariyla ayni
   izgarayi kullanir; grafigin altindaki liste uzun olursa kart
   buyumez, liste kartin icinde kayar.
   ===================================================================== */
/* Tam ekranda tam UC grafik yan yana. Onceden "sigdigi kadar"
   yerlestiriliyordu; genis ekranda dort kart olup grafikler kuculuyor,
   sutun adlari ust uste biniyordu. Artik sayi sabit, kartlar genis. */
.dashboard-analiz {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0 16px;
    align-items: start;
}

@media (min-width: 768px) {
    .dashboard-analiz {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1200px) {
    .dashboard-analiz {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* Zaman serisi gibi grafikler iki sutun kaplar: on iki ayin sutunlari
   dar kartta ust uste biniyordu. */
@media (min-width: 768px) {
    .dashboard-analiz > .card.analiz-genis {
        grid-column: span 2;
    }
}

/* Grafikli kart, yazili kartlardan daha uzun: grafik ile altindaki
   dilim listesi birlikte rahat sigsin. */
/* Analiz kartlari bilgi kartlarindan bagimsiz: icinde hem grafik hem
   dilim listesi var, sabit bir boya ihtiyaclari var. */
.dashboard-analiz > .card {
    height: 520px;
}

.analiz-govde {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 12px;
}

/* Pasta sabit yukseklikte; kaydirilan yer yalnizca alttaki liste. */
.analiz-cizim {
    flex: 0 0 auto;
    min-height: 250px;
}

.analiz-liste {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 12.5px;
}

.analiz-liste li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 2px;
    border-top: 1px solid #f0f3f6;
}

.analiz-liste li:first-child {
    border-top: 0;
}

.analiz-nokta {
    flex: 0 0 auto;
    width: 10px;
    height: 10px;
    border-radius: 3px;
}

/* Uzun etiketler kartı genisletmesin, ucu uc nokta ile kesilsin. */
.analiz-ad {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #3c4b5c;
}

.analiz-deger {
    flex: 0 0 auto;
    color: #0a3c4a;
    font-weight: 600;
    white-space: nowrap;
}

.analiz-yuzde {
    flex: 0 0 auto;
    min-width: 46px;
    color: #6c7a91;
    text-align: end;
    white-space: nowrap;
}

.analiz-alt {
    padding: 8px 12px;
    color: #6c7a91;
    font-size: 12.5px;
}

@media (max-width: 575.98px) {
    .dashboard-analiz > .card {
        height: auto;
    }

    .analiz-liste {
        overflow-y: visible;
    }
}

/* ===================================================================
   ACILIR SECIM LISTESI - UZUN METIN
   ===================================================================

   Sorun: uzun bir sirket unvani acilir listenin disina tasiyordu.
   Bootstrap'in dropdown-item kurali metni TEK SATIRDA tutuyor
   (white-space: nowrap); satira sigmayan metin kutuyu asiyor.

   Cozum: metin sariyor, kesilmiyor. Bir sirket unvanini yarim
   gostermek, hic gostermemekle ayni sey olurdu.
   =================================================================== */

.custom-select-container {
    /* Ekrani asmasin: dar ekranda pencerenin kendisi sinir olur. */
    max-width: min(100%, calc(100vw - 32px));
    box-sizing: border-box;
    overflow-x: hidden;
}

.custom-select-container .options_list {
    /* Yatay kaydirma cubugu cikmasin; metin zaten sariyor. */
    overflow-x: hidden;
}

.custom-select-container .modal-select-option {
    /* BLOK, flex degil.

       Tabler dropdown-item'i display:flex yapiyor. Bir flex ogesi
       varsayilan olarak kendi iceriginden dar olamaz: uzun bir sirket
       unvani dugmeyi listenin disina itiyor ve metin kirpiliyordu.
       Olculen hali: liste 92px, dugme 176px.

       Blok bir oge kapsayicisinin genisligini alir; metin de o
       genislikte sarar. */
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;

    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    line-height: 1.35;
    padding-top: 7px;
    padding-bottom: 7px;
    text-align: left;
}

/* Secili satirin isareti metne yapismasin. */
.custom-select-container .modal-select-option.active {
    font-weight: 600;
}

/* ------------------------------------------------------------------
   KURUM LOGOSU

   Logo, bas harf icin tasarlanmis renkli karenin uzerine
   koyuluyordu. Renkli kare harf icindir: harf okunabilsin diye
   arkasina kontrast gerekir. Logonun kendi rengi vardir; arkasina
   kare koymak onu bir rozete cevirir.

   Tabler'in .avatar sinifi ayrica "center/cover" kullanir, yani
   logoyu sigdirmaz KIRPAR. contain, orani bozmadan sigdirir.

   Secici "img.kurum-logo": etiket + sinif oldugu icin .avatar'dan
   daha guclu. Dosya sirasi ileride degisse de kural ayakta kalir.
   ------------------------------------------------------------------ */
img.kurum-logo {
    object-fit: contain;
    background: none;
    box-shadow: none;
    border-radius: 6px;
    padding: 0;
}

/* ==================================================================
   ETIKETLEME VE CANLI BILDIRIM
   ================================================================== */

/* "@" YAZINCA ACILAN KISI LISTESI.

   position: fixed - liste, metin alaninin kutusuna gore degil
   EKRANA gore konumlaniyor. Metin alani kaydirilan bir kutunun
   icindeyse (pencere, tablo) o kutu listeyi kirpardi; ayni hata
   disa aktarma menusunde yasandi.

   z-index 1060 - pencerelerin (modal, 1050) DE ustunde. Etiketleme
   pencere icindeki bir metin alaninda da calismali. */
.etiket-listesi {
    position: fixed;
    z-index: 1060;
    background: #fff;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .16);
    max-height: 260px;
    overflow-y: auto;
    padding: 4px;
}

.etiket-satir {
    padding: 6px 10px;
    border-radius: 4px;
    cursor: pointer;
}

.etiket-satir:hover,
.etiket-satir.secili {
    background: #eef2ff;
}

.etiket-ad {
    font-weight: 600;
    font-size: 13px;
    color: #1f2937;
}

/* Hangi kisi oldugunu ayirt eden satir: unvan ve bolum. */
.etiket-aciklama {
    font-size: 11px;
    color: #6b7280;
}

.etiket-bos {
    padding: 8px 10px;
    font-size: 12px;
    color: #6b7280;
}

/* ETIKETLENEN KISI METINDE MAVI.
   Etiket oldugu bakista belli olmali; duz yazidan ayrilmazsa
   kullanici kimin haberdar edildigini goremez. */
.etiket-kisi {
    color: #0d6efd;
    font-weight: 600;
}

/* BILDIRIM BALONLARI - SAG UST KOSEDE.

   Ust seridin altina denk geliyor; zilin hemen asagisi, dolayisiyla
   kullanicinin zaten baktigi yer.

   Balonlar ust uste birikmesin diye her biri kendiliginden
   kapaniyor; okunmamis sayisi zaten zilde duruyor. */
#bildirim-balonlari {
    position: fixed;
    top: 70px;
    right: 16px;
    z-index: 1080;
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-width: 320px;
}

.bildirim-balonu {
    background: #fff;
    border: 1px solid #d1d5db;
    border-left: 4px solid #00a2c6;
    border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
    padding: 10px 12px;
    cursor: pointer;
}

.bildirim-balonu:hover {
    background: #f8fafc;
}

.bildirim-baslik {
    font-weight: 600;
    font-size: 13px;
    color: #1f2937;
}

.bildirim-ozet {
    font-size: 12px;
    color: #6b7280;
    margin-top: 2px;
}

/* Telefonda kose dar; balon ekrana gore kuculuyor. */
@media (max-width: 575.98px) {
    #bildirim-balonlari {
        left: 8px;
        right: 8px;
        max-width: none;
    }
}
