/* CrmPlus — uygulama düzeyi stiller (Faz 4.8a).
   Renk, tipografi ve yarıçap değerleri burada DEĞİL, CrmPlus.Web/Theme/CrmPlusTheme.cs içindedir.
   Burada yalnızca MudBlazor'ın kapsamadığı birkaç genel davranış kalır. */

/* Blazor'ın doğrulama sınıfları: tema renkleriyle uyumlu olsun diye MudBlazor değişkenleri. */
.valid.modified:not([type=checkbox]) {
    outline: 1px solid var(--mud-palette-success);
}

.invalid {
    outline: 1px solid var(--mud-palette-error);
}

.validation-message {
    color: var(--mud-palette-error);
}

/* Beklenmeyen istemci hatasında görünen şerit (index.html içindeki #blazor-error-ui).
   #app dışında kaldığı için Mud değişkeni yok. Zemin uygulama çubuğuyla aynı teal;
   uyarı kahverengisi (#7A3E00) kullanılmaz. */
#blazor-error-ui {
    background: #4F7D8C;
    color: #FFFFFF;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
    border-top: 1px solid #3E6876;
}

    #blazor-error-ui .dismiss {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

html.crm-dark #blazor-error-ui {
    background: #152126;
    color: #E6EAF0;
    border-top-color: #8FB8C4;
}

#blazor-error-ui a {
    color: inherit;
}

/* ErrorBoundary metni Türkçeleşti (docs/18 B24). */
.blazor-error-boundary {
    background: var(--mud-palette-error);
    padding: 1rem;
    color: #FFFFFF;
    border-radius: 6px;
}

    .blazor-error-boundary::after {
        content: "Bu bölüm yüklenirken bir hata oluştu.";
    }

/* Karanlık hata dolgusu #EF5350. Sabit beyaz ≈ 3.5:1 (gövde 0.875rem, eşik 4.5:1).
   Tema hata kontrast yazısı siyah; bu dolguda ≈ 6.0:1.
   Açık temada #9B1C1C + beyaz ≈ 8.2:1 durur. */
html.crm-dark .blazor-error-boundary {
    color: var(--mud-palette-error-text, #000000);
}

/* Uygulama ilk açılırken (WebAssembly indirilirken) görünen yükleme göstergesi. */
.loading-progress {
    position: relative;
    display: block;
    width: 8rem;
    height: 8rem;
    margin: 20vh auto 1rem auto;
}

    .loading-progress circle {
        fill: none;
        stroke: #E2E7EC;
        stroke-width: 0.6rem;
        transform-origin: 50% 50%;
        transform: rotate(-90deg);
    }

        .loading-progress circle:last-child {
            stroke: #1F3A5F;
            stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
            transition: stroke-dasharray 0.05s ease-in-out;
        }

.loading-progress-text {
    position: absolute;
    text-align: center;
    font-weight: 600;
    color: #1F3A5F;
    inset: calc(20vh + 3.25rem) 0 auto 0.2rem;
}

    .loading-progress-text:after {
        content: var(--blazor-load-percentage-text, "Yükleniyor");
    }

/* Tablo hücrelerinde para/sayı kolonlarının sağa yatık okunması için yardımcı sınıf. */
.crm-numeric,
th.crm-numeric,
.mud-table-cell.crm-numeric,
.mud-table-cell.crm-numeric .mud-table-cell-content,
.mud-table-head .crm-numeric,
.crm-numeric .mud-table-sort-label,
.crm-numeric .crm-th-hit {
    text-align: right !important;
    justify-content: flex-end;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.crm-numeric .mud-table-sort-label {
    width: 100%;
}

/* Görev/aktivite satır aksiyonları tek satırda kalsın (2×2 ızgara olmasın). */
.crm-row-actions {
    flex-wrap: nowrap;
    white-space: nowrap;
}

/* Görev listesi: vade kovası ve satır, 375px'te sayfayı sağa taşımasın. */
.crm-tasks-filters {
    max-width: 100%;
    min-width: 0;
}

.crm-tasks-filter-field {
    min-width: min(220px, 100%);
    max-width: 100%;
}

.crm-task-due-filters {
    max-width: 100%;
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
}

.crm-task-due-filters.mud-chipset {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.crm-task-due-filters .mud-chip {
    max-width: 100%;
    height: auto;
}

.crm-task-chip-label {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    gap: 0.35rem;
}

/* MudBadge köşeye mutlak oturur; kova sayacı satır içinde kalsın. */
.crm-task-due-filters .mud-badge-root {
    position: static;
    display: inline-flex;
    vertical-align: middle;
}

.crm-task-due-filters .mud-badge-wrapper {
    position: static !important;
    display: inline-flex;
    width: auto;
    height: auto;
}

.crm-task-due-filters .mud-badge {
    position: static !important;
    inset: auto !important;
    height: 1.15rem;
    min-width: 1.15rem;
    padding: 0 0.3rem;
}

.crm-task-title {
    display: inline-flex;
    align-items: flex-start;
    gap: 0.15rem;
    max-width: 100%;
    min-width: 0;
}

.crm-task-check {
    flex: 0 0 auto;
}

.crm-task-check .mud-input-control {
    margin-top: 0;
    margin-bottom: 0;
}

.crm-task-title-text,
.crm-task-due {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
    white-space: normal;
}

.crm-task-due {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem;
}

.crm-tasks-table {
    max-width: 100%;
    min-width: 0;
}

.crm-tasks-table .mud-table-container {
    max-width: 100%;
    min-width: 0;
}

@media (max-width: 960px) {
    .crm-tasks-table .mud-table-container {
        overflow-x: hidden;
    }

    .crm-tasks-table .mud-table-cell {
        max-width: 100%;
        min-width: 0;
        white-space: normal;
    }

    .crm-tasks-table .crm-cell-value {
        flex: 1 1 0;
        min-width: 0;
        overflow-wrap: anywhere;
        white-space: normal;
    }
}

/* Profil: şifre aksiyonu 1280×720'de görünür kalsın. */
.crm-profile-card {
    max-width: 520px;
    max-height: min(calc(100dvh - 7rem), 40rem);
    overflow: auto;
}

.crm-profile-actions {
    position: sticky;
    bottom: 0;
    z-index: 1;
    padding-top: 0.5rem;
    padding-bottom: 0.25rem;
    background: var(--mud-palette-surface);
    border-top: 1px solid var(--mud-palette-lines-default);
}

/* Aktivite diyaloğu: uzun form kesilmesin. */
.crm-activity-dialog .mud-dialog-content {
    max-height: min(70dvh, 36rem);
    overflow-y: auto;
}

/* Negatif stok / bakiye vurgusu (Pastel/Karanlık dahil okunaklı). */
.crm-numeric-negative,
.mud-table-cell.crm-numeric-negative,
.mud-table-cell.crm-numeric-negative .mud-table-cell-content,
td.crm-numeric-negative {
    color: var(--mud-palette-error) !important;
    font-weight: 600;
}

/* Ana sayfa KPI kartları: kaç kart olursa olsun satırı eşit doldurur.
   Teklif listesi bu ızgaranın dışında, tam genişliktedir. */
.crm-home-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(11.5rem, 1fr));
    gap: 12px;
    align-items: stretch;
    min-width: 0;
}

.crm-home-summary-card,
.crm-home-summary-grid > .mud-paper {
    min-height: 6.25rem;
    height: 100%;
    min-width: 0;
}

.crm-home-kpi-pair {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px;
}

/* 375 ve diğer dar genişlikler: KPI kartları tek sütun, sayfa taşmaz. */
@media (max-width: 599.98px) {
    .crm-home-summary-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Aktivite detay: yan yana kartlar satırın uzun olanına uzar. */
.crm-activity-columns > .mud-grid-item {
    display: flex;
}

.crm-activity-columns > .mud-grid-item > .mud-paper {
    flex: 1 1 auto;
    width: 100%;
}

/* Rol kartı ile izin tablosu aynı genişlik. Modül adı tek satır.
   Yoğun hücre payı 16+24px; en uzun ad ~192px. 248px içerik kutusunu
   ~208px bırakır. İzin kolonları kalan alanı eşit böler.
   Dar içerikte tablo kendi kutusunda kayar; sayfa yatay taşmaz. */
.crm-role-card,
.crm-role-table {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.crm-role-table .mud-table-container {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
}

.crm-role-table table {
    width: 100%;
    min-width: 64rem;
    table-layout: fixed;
}

.crm-role-table .mud-table-head .mud-table-cell {
    white-space: nowrap;
}

.crm-role-table .mud-table-cell:not(:first-child) {
    text-align: center;
    padding-left: 4px;
    padding-right: 4px;
}

.crm-role-table .mud-table-head .mud-table-cell:not(:first-child) {
    font-size: 0.75rem;
}

.crm-role-table .mud-table-cell:first-child {
    width: 248px;
    min-width: 248px;
    text-align: start;
}

.crm-role-table .mud-table-cell:first-child .crm-role-module-name {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* MudBlazor Breakpoint.Sm: 960px altında satırlar kartlaşır. Sütun genişliği
   kart satırını kesmesin; tablo min-width'i sayfayı taşırmasın. */
@media (max-width: 960px) {
    .crm-role-table table {
        min-width: 0;
    }

    /* Kod satırı alta insin; ad, etiketin yanında tek satır kalsın. */
    .crm-role-table .mud-table-cell:first-child {
        width: auto;
        min-width: 0;
        max-width: 100%;
        flex-wrap: wrap;
        row-gap: 2px;
    }

    .crm-role-table .mud-table-cell:first-child .mud-typography-caption {
        flex: 1 0 100%;
        text-align: end;
    }

    .crm-role-table .mud-table-cell:first-child .crm-role-module-name {
        flex: 1 1 auto;
        min-width: 0;
        text-align: end;
    }
}

.crm-role-table td:not(:first-child) .mud-input-control,
.crm-role-table td:not(:first-child) .mud-checkbox {
    justify-content: center;
    margin-inline: auto;
}

/* Cari detay sekmeleri: kaydırma okları belirgin (QA M01). */
.crm-account-tabs .mud-tabs-scroll-button {
    width: 2.75rem;
    min-width: 2.75rem;
    min-height: 2.75rem;
    border-radius: 999px;
    border: 1px solid var(--mud-palette-lines-inputs);
    background: var(--mud-palette-surface);
    box-shadow: var(--mud-elevation-1);
    opacity: 1;
}

.crm-account-tabs .mud-tabs-scroll-button .mud-icon-button,
.crm-account-tabs .mud-tabs-scroll-button .mud-button-root {
    width: 2.75rem;
    height: 2.75rem;
    min-width: 2.75rem;
    min-height: 2.75rem;
}

/* Stok satırı sağ tık: malzeme hareketleri. */
.crm-stock-menu.mud-menu {
    display: block;
    width: 100%;
    max-width: 100%;
}

.crm-stock-hit {
    display: block;
    width: 100%;
    min-width: 0;
}

/* Kolon başlığı sağ tık alanı (PR-7). Tarayıcı menüsü CrmColumnMenu içinde kapanır. */
.mud-table-head .mud-menu {
    display: block;
    width: 100%;
}

/* Kolon menüsü imleçte açılır. MudBlazor bottom/top çapa yatay clamp yapmaz;
   genişlik viewport'tan 16px dar kalır. 8px payı crmplus.js tutar.
   inline max-width:none bu kuralı ezmesin. */
.crm-column-menu.mud-popover {
    max-width: calc(100vw - 16px) !important;
    box-sizing: border-box;
}

.crm-column-menu .crm-column-hide {
    display: block;
}

.crm-column-activator,
.crm-th-hit {
    display: block;
    width: 100%;
    min-height: 1.75rem;
}

.crm-column-activator {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
}

/* Satırın tıklanabilir olduğunu belli eden imleç (liste ekranlarında detaya gidiş). */
.cursor-pointer {
    cursor: pointer;
}

/* Takvim ızgarası (docs/18 K10). 7 kolon; 600 px altında gün kutuları kısalır. */
.crm-calendar-grid {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: var(--mud-palette-divider);
}

.crm-calendar-row {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 1px;
}

.crm-calendar-head {
    background: var(--mud-palette-background-gray);
    color: #1B2430;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 6px 8px;
    text-align: center;
}

.crm-cal-head-short { display: none; }

@media (max-width: 959.98px) {
    .crm-cal-head-long { display: none; }
    .crm-cal-head-short { display: inline; }
}

.crm-calendar-cell {
    background: var(--mud-palette-surface);
    min-height: 96px;
    padding: 4px 6px 6px 6px;
    cursor: pointer;
}

    .crm-calendar-cell:hover {
        background: var(--mud-palette-action-default-hover);
    }

    .crm-calendar-cell:focus-visible {
        outline: 2px solid var(--mud-palette-primary);
        outline-offset: -2px;
    }

.crm-calendar-cell--muted {
    background: #F4F6F8;
}

.crm-calendar-cell--muted .crm-calendar-daynum {
    color: #1B2430;
}

/* Karanlık tema: gün başlığı, ay dışı gün ve "+N etkinlik" sabit #1B2430 ile
   koyu zemine yapışıyordu. Açık temadaki renkler aynı kalır. */
.crm-dark .crm-calendar-head,
.crm-dark .crm-calendar-more,
.crm-dark .crm-calendar-cell--muted .crm-calendar-daynum {
    color: var(--mud-palette-text-primary);
}

.crm-dark .crm-calendar-cell--muted {
    background: color-mix(in srgb, var(--mud-palette-text-primary) 8%, var(--mud-palette-surface));
}

.crm-calendar-cell--today {
    box-shadow: inset 0 0 0 2px var(--mud-palette-primary);
}

:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) {
    max-width: 100%;
    min-width: 0;
}

:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tabs-tabbar,
:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tabs-tabbar-inner {
    max-width: 100%;
    min-width: 0;
}

a.crm-home-quote {
    display: flex;
    align-items: baseline;
    gap: 0.35rem;
    max-width: 100%;
    min-width: 0;
    margin-top: 0;
    overflow: hidden;
}

.crm-home-quote-no {
    flex: 0 1 auto;
    min-width: 2.5rem;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

a.crm-home-quote .crm-home-quote-sep {
    flex: 0 0 auto;
    color: var(--mud-palette-text-secondary);
}

a.crm-home-quote .crm-home-quote-account {
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
    font-size: 0.75rem;
}

/* Gövde ve tablo bağlantısı (MudLink). Varsayılan alt çizgi yalnız hover.
   Birincil renk zeminle geçer: karanlık #7FA6D9 / yüzey #1A2230 ≈ 6.4:1,
   sayfa #0E141C ≈ 7.4:1; açık #17325B / beyaz ≈ 12.8:1 (eşik 4.5:1).
   Gövde yazısından ayrılamaz: karanlık #7FA6D9 / #E6EAF0 ≈ 2.1:1,
   açık #17325B / #1B2430 ≈ 1.2:1 (renk dışı ipucu eşiği 3:1).
   Karanlıkta hem 3:1 (gövdeye) hem 4.5:1 (yüzeye) olan üçüncü renk yok.
   Dururken alt çizgi. Ziyaret edilmiş tarayıcı moruna düşmez; birincil kalır.
   Underline.None (.mud-link-underline-none) alt çizgisiz kalır. Düzen değişmez. */
.mud-link.mud-link-underline-hover {
    text-decoration-line: underline;
    text-underline-offset: 0.15em;
}

a.mud-link.mud-primary-text:visited {
    color: var(--mud-palette-primary);
}

/* Özet iskeleti, veri gelince oluşan kart yüksekliğini ayırır; kısayollar kaymaz (D10).
   Yerleşik kartlara min-height verilmez — açık tema ölçüsü aynı kalır. */
.crm-home-skel {
    min-height: 6.25rem;
    box-sizing: border-box;
}

.crm-home-quotes {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
}

.crm-home-quotes-list {
    min-width: 0;
    margin-top: 0.25rem;
}

.crm-home-quote-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.75rem;
    min-width: 0;
    max-width: 100%;
    margin-top: 6px;
}

.crm-home-quote-row > a.crm-home-quote {
    flex: 1 1 12rem;
    width: auto;
}

.crm-home-quote-meta {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem 0.75rem;
    margin-left: auto;
    max-width: 100%;
    min-width: 0;
}

.crm-home-quote-amount {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-size: 0.875rem;
}

@media (max-width: 599.98px) {
    .crm-home-quote-row > a.crm-home-quote {
        flex-basis: 100%;
    }

    .crm-home-quote-meta {
        margin-left: 0;
        justify-content: flex-start;
    }
}

.crm-calendar-daynum {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    margin-bottom: 2px;
}

/* Saat tam görünür; başlık iki satıra iner, sığmayan metin title ile okunur. */
.crm-calendar-event {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 4px;
    max-width: 100%;
    background: var(--mud-palette-primary);
    color: #FFFFFF;
    border-radius: 4px;
    font-size: 0.75rem;
    line-height: 1.25;
    min-height: 32px;
    padding: 4px 6px;
    margin-bottom: 2px;
    overflow: hidden;
    cursor: pointer;
    text-align: left;
    white-space: normal;
}

/* Karanlık tema: etkinlik kartı birincil dolgu (#7FA6D9) üzerine sabit beyaz ~2.5:1.
   Saat ve başlık 0.75rem; #121821 bu dolguda ~7.1:1. Açık temada lacivert + beyaz durur. */
.crm-dark .crm-calendar-event {
    color: #121821;
}

.crm-calendar-event:focus-visible,
.crm-calendar-more:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 1px;
}

.crm-calendar-event-time {
    flex: 0 0 auto;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.crm-calendar-event-title {
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    white-space: normal;
}

.crm-calendar-more {
    display: flex;
    align-items: center;
    min-height: 32px;
    padding: 4px 2px;
    font-size: 0.75rem;
    line-height: 1.2;
    color: #1B2430;
    text-decoration: underline;
    cursor: pointer;
}

/* Kişi rengi. Beyaz yazı koyu dolguda durur; karanlık tema birincil kart kuralı bunları ezmez. */
.crm-cal-c0 { background: #17325B; color: #fff; }
.crm-cal-c1 { background: #0B6E6E; color: #fff; }
.crm-cal-c2 { background: #5C2D91; color: #fff; }
.crm-cal-c3 { background: #8A4B08; color: #fff; }
.crm-cal-c4 { background: #1B4F72; color: #fff; }
.crm-cal-c5 { background: #7B241C; color: #fff; }
.crm-cal-c6 { background: #1E5C38; color: #fff; }
.crm-cal-c7 { background: #6B4F1D; color: #fff; }
.crm-dark .crm-calendar-event.crm-cal-c0,
.crm-dark .crm-calendar-event.crm-cal-c1,
.crm-dark .crm-calendar-event.crm-cal-c2,
.crm-dark .crm-calendar-event.crm-cal-c3,
.crm-dark .crm-calendar-event.crm-cal-c4,
.crm-dark .crm-calendar-event.crm-cal-c5,
.crm-dark .crm-calendar-event.crm-cal-c6,
.crm-dark .crm-calendar-event.crm-cal-c7,
.crm-dark .crm-cal-block,
.crm-dark .crm-cal-chip {
    color: #fff;
}
.crm-cal-done { opacity: 0.55; }
.crm-cal-owner { font-weight: 600; }
.crm-cal-account {
    color: inherit;
    text-decoration: underline;
    display: block;
    max-width: 100%;
}
.crm-cal-dot {
    display: inline-block;
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    margin-right: 0.35rem;
    vertical-align: middle;
}
.crm-cal-ico { width: 16px; height: 16px; font-size: 16px; }

.crm-cal-time-head,
.crm-cal-allday,
.crm-cal-time-body {
    display: grid;
    grid-template-columns: 56px repeat(var(--cols, 7), minmax(0, 1fr));
}
.crm-cal-colhead {
    background: transparent;
    border: 0;
    font: inherit;
    font-weight: 600;
    padding: 6px 4px;
    cursor: pointer;
    text-align: center;
}
.crm-cal-colhead--today { color: var(--mud-palette-primary); }
.crm-cal-hour,
.crm-cal-slot { height: 48px; }
.crm-cal-hour {
    font-size: 0.7rem;
    color: var(--mud-palette-text-secondary);
    text-align: right;
    padding-right: 4px;
}
.crm-cal-slots { position: relative; }
.crm-cal-slot { border-top: 1px solid var(--mud-palette-divider); cursor: pointer; }
.crm-cal-block {
    position: absolute;
    z-index: 1;
    overflow: hidden;
    border-radius: 4px;
    padding: 2px 4px;
    font-size: 0.75rem;
    line-height: 1.25;
    cursor: pointer;
}
.crm-cal-block-text {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    white-space: normal;
}
.crm-cal-chip {
    display: flex;
    align-items: center;
    gap: 4px;
    border-radius: 4px;
    padding: 2px 4px;
    margin-bottom: 2px;
    font-size: 0.75rem;
    overflow: hidden;
    cursor: pointer;
}
.crm-cal-col-mobilehead,
.crm-cal-mobile-gutter { display: none; }
.crm-cal-allday-col { min-height: 8px; padding: 2px; }

@media (max-width: 959.98px) {
    .crm-cal-time-head,
    .crm-cal-gutter { display: none; }
    .crm-cal-time-body,
    .crm-cal-allday {
        display: flex;
        flex-direction: column;
        gap: 12px;
    }
    .crm-cal-col-mobilehead { display: block; font-weight: 600; margin-bottom: 4px; }
    .crm-cal-col-grid {
        display: grid;
        grid-template-columns: 48px minmax(0, 1fr);
    }
    .crm-cal-mobile-gutter { display: block; }
    .crm-cal-block-text { -webkit-line-clamp: 2; }
}

/* Önceki/sonraki, Bugün ve görünüm seçici: en az 44px dokunma alanı (QA M02). */
.crm-calendar-toolbar .mud-icon-button,
.crm-calendar-toolbar .mud-button-root,
.crm-calendar-toolbar .mud-toggle-item {
    min-height: 44px;
    min-width: 44px;
}

/* Onay / küçük eylem: 44px dokunma (QA M02). Mud size-medium padding'i ezer. */
.crm-touch-btn.mud-button-root,
.crm-approval-actions .mud-button-root {
    min-height: 44px !important;
    min-width: 44px !important;
    padding-top: 10px;
    padding-bottom: 10px;
    padding-left: 16px;
    padding-right: 16px;
}

.crm-touch-pagination .mud-pagination-item .mud-button-root,
.crm-touch-pagination .mud-icon-button {
    min-width: 44px;
    min-height: 44px;
}

/* Login kartı dikey/yatay ortalama (QA M05). */
.crm-login-center {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem 1rem;
}

.crm-login-center > .mud-paper {
    width: 100%;
}

.crm-calendar-toolbar .mud-toggle-item {
    padding-left: 12px;
    padding-right: 12px;
}

/* Bildirim sayısı düğmenin dışında; tıklama düğmeye gider.
   Mobilde çekmece ve örtüsü AppBar'ın üstüne çıkar (MudBlazor: appbar+2).
   AppBar'ı onların üstüne almazsak zil tıklaması menü düğmesine veya örtüye düşer. */
.crm-appbar-notify {
    position: relative;
    display: inline-flex;
    flex: 0 0 auto;
    z-index: 1;
}

.crm-nav-toggle.mud-icon-button,
.crm-appbar-notify .mud-icon-button {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
}

@media (max-width: 959px) {
    .mud-appbar.mud-appbar-fixed-top {
        z-index: calc(var(--mud-zindex-appbar) + 6);
    }

    /* Md altında çekmece geçici örtü kullanır (DarkBackground).
       Koyu örtü #212121 %50: sayfa #0E141C üzerinde ≈ 1.06:1,
       yüzey #1A2230 üzerinde ≈ 1.00:1 (eşik 3:1). Siyah örtü de
       bu zeminlerde 1.1:1 üstüne çıkamaz.
       Yazı rengi %42: sayfada ≈ 3.6:1, yüzeyde ≈ 3.5:1.
       Çekmece zemini #121821 bu örtüde ≈ 3.5:1; örtüye tıklayınca kapanır.
       Menü düğmesi çubukta kalır. Açık temada koyu örtü sayfada ≈ 3.1:1, durur. */
    html.crm-dark .mud-overlay-drawer .mud-overlay-scrim.mud-overlay-dark {
        background-color: rgba(230, 234, 240, 0.42);
    }
}

/* Sabit çubuk alt kenarı. Yükselme 1 gölgesi siyah %12–20.
   Karanlıkta çubuk #121821 / sayfa #0E141C ≈ 1.04:1, yüzey #1A2230 ≈ 1.12:1
   (kenar eşiği 3:1). Çekmece zemini çubukla aynı renk; gölge kenar üretmez.
   #81 kâğıt kenarı bu çubuğa gelmez. 1px içeri, yükseklik değişmez.
   lines-default #6A7380: çubukta ≈ 3.7:1, sayfada ≈ 3.9:1, yüzeyde ≈ 3.3:1.
   Açık temada lacivert / sayfa durur. */
html.crm-dark .mud-appbar {
    box-shadow: var(--mud-elevation-1), inset 0 -1px 0 0 var(--mud-palette-lines-default);
}

/* Kaydırma kilidi (diyalog veya örtü). MudBlazor gövdeye padding-right: 8px
   yazar; özel çubuk ::-webkit-scrollbar genişliği 8px. Sabit uygulama çubuğu
   viewport'a bağlıdır, gövde payı ona işlemez. Kilit açılınca çubuğun sağ
   simgesi içerik kenarından 8px sağa kaçar (1280 pencerede ikon − içerik:
   açık 0, kilit 8). Aynı 8px çubuğun sağına eklenir: zemin tam genişlik,
   simgeler içerikle hizalanır (kilit sonrası fark 0). Kaydırma yoksa sınıf
   scroll-locked-no-padding; bu kurala girmez. Firefox kütüphane payı 17px;
   çubuk aynı değeri alır. Sol kenar ve çekmece değişmez. */
body.scroll-locked .mud-appbar.mud-appbar-fixed-top {
    padding-right: 8px;
}

@-moz-document url-prefix() {
    body.scroll-locked .mud-appbar.mud-appbar-fixed-top {
        padding-right: 17px;
    }
}

/* Masaüstünde sabit sol çekmece ile sayfa dikişi. Yükselme 1 gölgesi siyah %12–20.
   Karanlıkta çekmece #121821 / sayfa #0E141C ≈ 1.04:1 (kenar eşiği 3:1).
   Gölge sayfada ≈ 1.02:1, çekmeceye karşı ≈ 1.06:1; kenar üretmez.
   #88 örtüsü Md altında (çekmece / örtü ≈ 3.5:1). Bu kural 960px ve üstü;
   örtünün üstüne lines-default çizmek o zeminde ≈ 1.1:1 olur.
   #95 çubuğun alt kenarı. Bu dikiş sağ kenar, 1px içeri, genişlik değişmez.
   lines-default #6A7380: çekmecede ≈ 3.7:1, sayfada ≈ 3.9:1.
   Kapalı çekmece bu seçicide değil. */
@media (min-width: 960px) {
    html.crm-dark .mud-drawer.mud-drawer-responsive.mud-drawer-pos-left:not(.mud-drawer--closed) {
        box-shadow: var(--mud-elevation-1), inset -1px 0 0 0 var(--mud-palette-lines-default);
    }
}

/* Zil, tema ve kullanıcı (ve aynı çubuktaki diğer düğmeler): MudBlazor klavye
   odağı yalnızca soluk zemin (action-default-hover). Lacivert AppBar'da kaybolur.
   Halka çubuk yazı rengiyle çizilir (docs/18 §8.3, ≥ 3:1); düzen değişmez. */
.mud-appbar .mud-button-root:focus-visible {
    outline: 2px solid var(--mud-palette-appbar-text, #FFFFFF);
    outline-offset: 2px;
}

/* Zil paneli popover'da durur (crm-notify-menu dışında). 375px'te sağ çapa
   paneli sola taşır; dar ekranda 8px payla tam genişlik. Yükseklik viewport
   eksi çubuk; liste kayar, «Tümünü okundu işaretle» altta kalır (docs/15 §1/65). */
.crm-notify-popover.mud-popover {
    z-index: 1400 !important;
    max-width: min(26rem, calc(100vw - 16px)) !important;
    max-height: calc(100vh - 4.5rem);
    overflow: hidden;
    box-sizing: border-box;
}

.crm-notify-menu .mud-list,
.crm-notify-popover .mud-list {
    min-width: 18rem;
    max-width: min(26rem, calc(100vw - 16px));
    max-height: calc(100vh - 4.5rem);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    padding-top: 0;
    padding-bottom: 0;
}

.crm-notify-panel {
    display: flex;
    flex-direction: column;
    min-height: 0;
    max-height: calc(100vh - 4.5rem);
}

.crm-notify-scroll {
    overflow-y: auto;
    min-height: 0;
    flex: 1 1 auto;
    max-height: calc(100vh - 4.5rem - 3.25rem);
}

.crm-notify-foot {
    flex: 0 0 auto;
    background: var(--mud-palette-surface);
}

@media (max-width: 600px) {
    .crm-notify-popover.mud-popover {
        left: 8px !important;
        width: calc(100vw - 16px) !important;
        max-width: calc(100vw - 16px) !important;
        min-width: 0 !important;
    }

    .crm-notify-menu .mud-list,
    .crm-notify-popover .mud-list {
        min-width: 0;
        width: 100%;
        max-width: 100%;
    }
}

/* Salt okunur teklif: takvim ikonu kapalı ve diğer kapalı alanlar gibi gri. */
.crm-date-locked,
.crm-date-locked .mud-input-adornment,
.crm-date-locked .mud-input-adornment .mud-icon-button,
.crm-date-locked .mud-input-adornment button {
    pointer-events: none;
}

.crm-date-locked .mud-input-adornment,
.crm-date-locked .mud-input-adornment .mud-icon-button,
.crm-date-locked .mud-input-adornment button,
.crm-date-locked .mud-input-adornment .mud-icon-root,
.crm-date-locked .mud-input-adornment .mud-svg-icon,
.crm-date-locked .mud-input-adornment svg {
    color: var(--mud-palette-action-disabled) !important;
    opacity: 0.38 !important;
    cursor: default;
}

.crm-notify-item.mud-menu-item,
.crm-notify-row,
.crm-notify-copy,
.crm-notify-body {
    white-space: normal;
}

.crm-notify-copy {
    min-width: 0;
    flex: 1 1 auto;
}

.crm-notify-body {
    display: block;
    overflow-wrap: anywhere;
}

.crm-notify-title {
    margin: 0;
    padding: 8px 12px 4px;
    font-size: 0.875rem;
    font-weight: 600;
}

.crm-notify-title:focus {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.crm-notify-queue,
.crm-notify-action {
    display: block;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 0;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    padding: 8px 12px;
    font: inherit;
}

.crm-notify-action:disabled {
    opacity: 0.45;
    cursor: default;
}

.crm-notify-item {
    display: block;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 0;
    color: inherit;
    cursor: pointer;
    padding: 8px 12px;
    font: inherit;
}

.crm-notify-item--unread .crm-notify-strong {
    font-weight: 700;
}

.crm-notify-item--read {
    opacity: 0.62;
}

.crm-notify-dot {
    width: 8px;
    height: 8px;
    margin-top: 6px;
    border-radius: 50%;
    background: var(--mud-palette-primary);
    flex: 0 0 auto;
}

.crm-notify-history {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.crm-notify-history-main {
    flex: 1 1 auto;
    min-width: 0;
    text-align: left;
    background: transparent;
    border: 0;
    color: inherit;
    cursor: pointer;
    font: inherit;
    padding: 0;
}

.crm-notify-filter {
    min-width: 12rem;
}

.crm-notify-bell {
    position: relative;
    z-index: 1400;
}

.crm-notify-count {
    position: absolute;
    top: 2px;
    right: 0;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 8px;
    background: #9B1C1C;
    color: #FFFFFF;
    border: 1px solid #FFFFFF;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 14px;
    text-align: center;
    pointer-events: none;
}

/* Onaylar menü sayısı: bildirim rozetiyle aynı renk. 0 iken işaret çizilmez.
   MudNavLink sınıfı dış sarmalayıcıya gider; bağlantı yine tam genişlik kalır. */
.crm-nav-with-count {
    width: 100%;
}

.crm-nav-with-count .mud-nav-link {
    width: 100%;
}

.crm-nav-with-count .mud-nav-link-text {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
}

.crm-nav-count {
    margin-left: auto;
    flex: 0 0 auto;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: #9B1C1C;
    color: #FFFFFF;
    border: 1px solid #FFFFFF;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
    pointer-events: none;
}

.crm-nav-count-sr {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* AI kuyruk: rozet ve ikincil yazı AA (4.5:1). */
.crm-ai-queue .crm-ai-meta,
.crm-ai-queue .mud-table-cell {
    color: #1B2430;
}

.crm-ai-queue .mud-link {
    color: #122746 !important;
}

.crm-ai-queue .crm-ai-warn {
    color: #7A3E00;
    font-weight: 600;
}

.crm-ai-queue .mud-chip.mud-chip-text {
    background-color: #EEF2F6;
}

.crm-ai-queue .mud-button-text {
    color: var(--mud-palette-primary);
}

/* Karanlık tema: kuyruk metni sabit lacivertle kayboluyordu. Açık tema kuralları durur. */
.crm-dark .crm-ai-queue .crm-ai-meta,
.crm-dark .crm-ai-queue .mud-table-cell {
    color: var(--mud-palette-text-primary);
}

.crm-dark .crm-ai-queue .mud-link {
    color: var(--mud-palette-primary) !important;
}

.crm-dark .crm-ai-queue .crm-ai-warn {
    color: var(--mud-palette-warning);
}

.crm-dark .crm-ai-queue .mud-button-text {
    color: var(--mud-palette-primary);
}

@media (max-width: 600px) {
    .crm-calendar-cell {
        min-height: 88px;
        padding: 4px;
    }

    .crm-calendar-event {
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
    }

    .crm-calendar-event-title {
        white-space: normal;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
    }

    /* Dar ekranda AppBar'da uzun ad taşmasın; ikon yeterli (profil sayfasına gider). */
    .crm-appbar-user-name {
        display: none;
    }
}

/* Filtre şeritleri: tüm alanlar aynı satır yüksekliği / hizası (kaymış kutu önleme). */
.crm-filter-bar .mud-input-helper-text {
    display: none; /* filtrede yardımcı satır hizayı bozar */
}

/* Başlık alanları aynı dış boşluk. Etiket her zaman çentikte (ShrinkLabel);
   boş metin kutusu yer tutucu, seçim/tarih yüzen etiket gibi durmasın. */
.crm-quote-header-grid .mud-input-control {
    margin-top: 8px !important;
    margin-bottom: 4px !important;
}

.crm-quote-header-grid .crm-quote-notes,
.crm-quote-notes {
    margin-top: 8px !important;
    margin-bottom: 4px !important;
}

/* Başlık sütunu dar; satırlar kalan genişliği alır. 960px altında (375 dahil) yığılır. */
@media (min-width: 960px) {
    .crm-quote-detail.mud-grid > .crm-quote-header-col.mud-grid-item {
        flex: 0 0 340px !important;
        max-width: 340px !important;
        width: 340px;
        min-width: 0 !important;
    }

    .crm-quote-detail.mud-grid > .crm-quote-lines-col.mud-grid-item {
        flex: 1 1 0 !important;
        max-width: none !important;
        width: auto !important;
        min-width: 0 !important;
    }
}

/* Telefonda başlık kartı (İlgili, ek ilgililer, herkese açık) satırların üstündedir. */
@media (max-width: 959px) {
    .crm-quote-header-col {
        order: -1;
    }

    .crm-quote-total {
        position: sticky;
        top: calc(var(--mud-appbar-height, 64px) + 8px);
        z-index: 2;
        margin-left: -12px;
        margin-right: -12px;
        padding: 8px 12px;
        background: var(--mud-palette-surface);
        border-bottom: 1px solid var(--mud-palette-divider);
    }
}

/* Masaüstünde sol Toplamlar kartı kendi sütununda yapışır. Telefonda akışta kalır. */
@media (min-width: 960px) {
    .crm-quote-totals-card {
        position: sticky;
        top: calc(var(--mud-appbar-height, 64px) + 12px);
        z-index: 4;
    }
}

.crm-page-header-title-row,
.crm-page-header-below,
.crm-quote-status-path {
    min-width: 0;
    max-width: 100%;
}

.crm-page-header-title {
    flex: 1 1 auto;
}

/* Kayıt sayısı başlığın hemen sağında; uzun başlıkta satır kırılır. */
.crm-page-header-title-line {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 0.5rem;
    row-gap: 0.15rem;
    min-width: 0;
    max-width: 100%;
}

.crm-page-header-title-line > .crm-editable-header {
    flex: 0 1 auto;
    width: auto;
    max-width: 100%;
    min-width: 0;
}

.crm-list-count {
    flex: 0 0 auto;
    color: var(--mud-palette-text-secondary);
    font-weight: 500;
    font-size: 1rem;
    line-height: 1.2;
}

.crm-page-header-aside {
    flex: 0 1 auto;
    margin-left: auto;
    text-align: right;
    min-width: 0;
    max-width: 100%;
}

.crm-page-header-below {
    margin-top: 8px;
}

.crm-quote-header-total-value {
    font-weight: 600;
    line-height: 1.15;
    overflow-wrap: anywhere;
    margin: 0;
}

.crm-quote-status-path.mud-stack {
    min-width: 0;
    max-width: 100%;
}

.crm-quote-status-item {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
    max-width: 100%;
}

.crm-quote-status-arrow {
    color: var(--mud-palette-text-secondary);
    line-height: 1;
    user-select: none;
}

/* Durum yolu tıklanmaz. Geçmiş: birincil metin. Şimdi: birincil dolu. Sonra: gri çerçeve.
   Rozet nowrap ve 4px dış pay 375px'te satırı taşırır; burada kırılır. */
.crm-quote-status-path .mud-chip {
    pointer-events: none;
    cursor: default;
    margin: 0;
    min-width: 0;
    max-width: 100%;
    height: auto;
    min-height: 24px;
    white-space: normal;
}

.crm-quote-status-path .mud-chip-content {
    display: block;
    min-width: 0;
    max-width: 100%;
    height: auto;
    white-space: normal;
    overflow-wrap: anywhere;
}

.crm-quote-status-step--future.mud-chip.mud-chip-outlined {
    color: var(--mud-palette-text-secondary);
    border-color: var(--mud-palette-lines-inputs);
    background-color: transparent;
}

.crm-sort-btn {
    appearance: none;
    background: transparent;
    border: 0;
    color: inherit;
    cursor: pointer;
    font: inherit;
    padding: 0;
    text-align: inherit;
}

.crm-filter-bar .crm-filter-field,
.crm-filter-bar .mud-input-control {
    width: 100%;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.crm-filter-bar .mud-input {
    min-height: 40px;
}

.crm-filter-bar .mud-input-adornment .mud-button-root.mud-icon-button {
    width: 36px !important;
    height: 36px !important;
    padding: 6px !important;
}

.crm-filter-bar .crm-filter-action {
    height: 40px; /* Margin.Dense outlined alan yüksekliğiyle eşleşir */
    min-width: 100%;
    margin-bottom: 0;
    align-self: flex-end;
}

.crm-filter-bar .mud-grid-item {
    display: flex;
    align-items: flex-end;
}

/* Eski sınıf adları — geriye dönük sayfalar için. */
.crm-filter-date {
    width: 160px;
    max-width: 100%;
}

.crm-filter-kind {
    min-width: 160px;
    max-width: 100%;
}

.crm-filter-account {
    flex: 1 1 240px;
    min-width: 200px;
    max-width: 360px;
}

.crm-filter-search {
    flex: 1 1 220px;
    min-width: 180px;
    max-width: 320px;
}

@media (max-width: 600px) {
    .crm-filter-date,
    .crm-filter-kind,
    .crm-filter-account,
    .crm-filter-search {
        width: 100%;
        min-width: 0;
        max-width: none;
        flex: 1 1 100%;
    }
}

/* Bildirim rozeti AppBar ikonunu kesmesin. */
.mud-appbar .mud-badge-wrapper {
    overflow: visible;
}

/* Sayfa başlığı eylemleri dar ekranda sağa taşmasın (PageHeader zaten wrap).
   Masaüstünde çekmece position:fixed. İçerik kutusu çekmece payından genişlerse
   belge yatay kayar ve başlık çekmecenin altında kesilir (D10 /performance). */
.mud-main-content {
    min-width: 0;
}

/* Sabit çubuk, belge yatay büyüyünce yüzde genişlikle birlikte sağa kaymasın.
   left/right çekmece klibini bozmaz; genişlik viewport kutusuna yapışır. */
.mud-appbar.mud-appbar-fixed-top {
    left: 0;
    right: 0;
    width: auto;
    max-width: 100%;
}

.mud-appbar .mud-toolbar-appbar {
    min-width: 0;
    max-width: 100%;
}

@media (min-width: 1280px) {
    .mud-layout.mud-drawer-open-responsive-lg-left > .mud-main-content {
        margin-left: var(--mud-drawer-width-left);
        width: calc(100% - var(--mud-drawer-width-left));
        max-width: calc(100% - var(--mud-drawer-width-left));
        box-sizing: border-box;
        overflow-x: clip;
    }

    /* Çekmece position:fixed; yüksekliği viewport. 260px şerit yalnızca
       .mud-layout kutusuna boyanınca kutu kaydırmadan kısa kalıyor ve
       sayfa zemini alttan görünüyordu. Yerleşim içeriğin boyuna uzar;
       açık çekmece bu kutuya absolute yapışır (zemin sayfa sonuna iner).
       Menü sticky: kaydırınca çubuğun altında kalır. */
    .mud-layout {
        height: auto !important;
        min-height: 100vh;
        min-height: 100dvh;
    }

    .mud-layout.mud-drawer-open-responsive-lg-left > .mud-drawer.mud-drawer-responsive.mud-drawer-pos-left.mud-drawer--open {
        position: absolute !important;
        top: var(--mud-appbar-height) !important;
        bottom: 0 !important;
        left: 0 !important;
        height: auto !important;
        max-height: none !important;
        overflow: visible !important;
    }

    .mud-layout.mud-drawer-open-responsive-lg-left > .mud-drawer.mud-drawer-responsive.mud-drawer-pos-left.mud-drawer--open > .mud-drawer-content {
        height: auto;
        max-height: none;
        min-height: 100%;
        overflow: visible;
    }

    .mud-layout.mud-drawer-open-responsive-lg-left .crm-nav {
        position: sticky;
        top: var(--mud-appbar-height);
        min-height: 0;
        max-height: calc(100dvh - var(--mud-appbar-height));
        overflow-x: hidden;
        overflow-y: auto;
    }
}

.mud-main-content .mud-table,
.mud-main-content .mud-tabs,
.mud-main-content .mud-paper {
    max-width: 100%;
    min-width: 0;
}

.mud-main-content .mud-table-container {
    max-width: 100%;
}

/* ——— 66. tur: temkinli cilalama (layout ölçüsü değiştirmez) ——— */
html, body, #app {
    font-family: "Plus Jakarta Sans", Inter, "Segoe UI", sans-serif;
    -webkit-font-smoothing: antialiased;
    /* Tarayıcı varsayılan body margin'i (~8px) .crm-login-shell'in min-height:100vh'ine eklenip
       içerik az olsa da dikey kaydırma çubuğu çıkarıyordu — sıfırlanır (Login/EmptyLayout). */
    margin: 0;
}

.crm-brand-plus-inline {
    font-weight: 400;
    opacity: 0.92;
}

.crm-appbar-brand {
    letter-spacing: -0.01em;
}

/* Aktif menü: birincil teal çubuk. İkincil kum/bej beyazda ≈ 1.6:1 (eşik 3:1);
   birincil #4F7D8C beyazda ≈ 4.5:1. Padding/margin değişmez. */
.crm-nav .mud-nav-link.active {
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--mud-palette-primary);
}

.crm-nav .mud-nav-link:hover:not(.active) {
    background: color-mix(in srgb, var(--mud-palette-primary) 8%, transparent);
}

.crm-nav .mud-nav-link:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.crm-page-header {
    min-width: 0;
    max-width: 100%;
}

/* Kırıntılı sayfalarda .mud-breadcrumbs padding-top 16px. Liste başlığı
   kırıntısız olduğu için aynı 16px burada. Kırıntılı sayfaya eklenmez. */
.crm-page-header--plain {
    padding-top: 16px;
}

.crm-page-header-text {
    min-width: 0;
    flex: 1 1 16rem;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* Uzun cari unvanı (~200) başlık ve breadcrumb'da taşmasın; satır kırılır. */
.crm-page-header-text h1,
.crm-page-header-crumbs,
.crm-page-header-crumbs .mud-breadcrumbs,
.crm-page-header-crumbs .mud-breadcrumb-item,
.crm-page-header-crumbs .mud-typography {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
    word-break: break-word;
    white-space: normal;
}

.crm-page-header-crumbs .mud-breadcrumbs {
    flex-wrap: wrap;
}

/* Kırıntı ayracı («/») birincil yazının %38'i. Gövde 0.875rem; eşik 4.5:1.
   Açıkta #1B2430 %38 / sayfa #F5F7FA ≈ 2.3:1. Karanlıkta #E6EAF0 %38 / sayfa ≈ 3.2:1.
   Üst kırıntı ve bulunduğun sayfa zaten 4.5:1 üstü. Ayraç ikincil metinle tam opak:
   açık #3A4856 ≈ 8.7:1, karanlık #9AA9B8 ≈ 7.7:1. */
.mud-breadcrumb-separator > span {
    color: var(--mud-palette-text-secondary);
    opacity: 1;
}

/* Kırıntı düz <a>. MudBlazor a:focus-visible halkayı ve alt çizgiyi kaldırır;
   MudLink değil, odaklanınca altı çizilmez. Halka sayfa yazısı.
   Açık #1B2430 / sayfa #F5F7FA ≈ 14.6:1, karanlık #E6EAF0 / sayfa #0E141C ≈ 15.3:1
   (halka eşiği 3:1). Düzen değişmez. */
.mud-breadcrumb-item > a:focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

/* Menü öğesi ve liste öğesi .mud-list-item-clickable. Kütüphane outline:0.
   Odak zemini action-default %6: açıkta #F3F4F5 / beyaz ≈ 1.1:1, karanlıkta
   #232A38 / yüzey ≈ 1.1:1 (halka eşiği 3:1). Yazı rengi odakta değişmez.
   Seçili tanım satırı mud-theme-primary dolguyu !important basar; %6 zemin
   uygulanmaz, odak değişimi yok. Menü popover overflow:hidden dış halkayı keser.
   Halka 2px içeri. Yüzeyde sayfa yazısı: açık #1B2430 / beyaz ≈ 15.7:1,
   karanlık #E6EAF0 / #1A2230 ≈ 13.2:1. Dolguda kontrast yazısı: açık beyaz /
   #17325B ≈ 12.8:1, karanlık #121821 / #7FA6D9 ≈ 7.1:1. Düzen değişmez. */
.mud-list-item-clickable:focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: -2px;
}

.mud-theme-primary.mud-list-item-clickable:focus-visible {
    outline-color: var(--mud-palette-primary-text);
}

/* Seçili liste / açılır öğe (tekli MudSelect, MudList). Yazı birincile döner
   ve zemin renk %6 olur. Karanlık #7FA6D9 / gövde #E6EAF0 ≈ 2.1:1,
   zemin #202A3A / yüzey #1A2230 ≈ 1.1:1. Açık #17325B / #1B2430 ≈ 1.2:1
   (durum eşiği 3:1). Çoklu seçimde kutu ikonu ayrıca durur.
   3px iç çubuk ikincil: açık #0A7676 / beyaz ≈ 5.4:1, sayfa ≈ 5.1:1;
   karanlık #2BC6C6 / yüzey ≈ 7.6:1, sayfa ≈ 8.8:1.
   Yazı rengi durur (yüzeyde ≥ 6.3:1). Popover taşmayı keser; çubuk içeride.
   Odak halkası (#72) ayrı kalır. Düzen değişmez. */
.mud-selected-item {
    box-shadow: inset 3px 0 0 var(--mud-palette-primary);
}

/* Uzun URL veya boşluksuz not satırı sayfayı yatay taşmasın; satır sonları korunur. */
.crm-prose {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: break-word;
    min-width: 0;
    max-width: 100%;
}

.crm-page-header-actions {
    max-width: 100%;
    min-width: 0;
    margin-left: auto;
    justify-content: flex-end;
}

/* Tahsilat: anahtar etiketi ve kart satırı belgeyi 375px'te sağa taşımasın.
   Tablo kendi kutusunda kayar; MudGrid eksi payı sayfa kaydırması açmasın. */
.crm-collections {
    max-width: 100%;
    min-width: 0;
}

.crm-collections .mud-table {
    max-width: 100%;
    min-width: 0;
}

.crm-collections .mud-table-container,
.crm-collections .mud-table-toolbar {
    max-width: 100%;
    min-width: 0;
}

.crm-collections .mud-table-container {
    overflow-x: auto;
}

/* Tahsilat listesi 1440'ta (içerik ~1146px, çekmece 260 + px-4) varsayılan
   kolonlarla sığsın. Yoğun hücre payı 16+24px idi; 12 kolonda ~480px yiyordu.
   Sığmazsa çubuk belirgin kalsın, İşlem sağa yapışık ve tam görünsün. */
@media (min-width: 961px) {
    .crm-collections-table {
        max-width: 100%;
    }

    .crm-collections-table .mud-table-container {
        max-width: 100%;
        overflow-x: auto;
        scrollbar-width: thin;
        scrollbar-color: var(--mud-palette-lines-default) transparent;
    }

    .crm-collections-table .mud-table-container::-webkit-scrollbar {
        height: 10px;
    }

    .crm-collections-table .mud-table-container::-webkit-scrollbar-thumb {
        background: var(--mud-palette-lines-default);
        border-radius: 999px;
    }

    .crm-collections-table .mud-table-root {
        width: 100%;
        table-layout: fixed;
    }

    .crm-collections-table.mud-table-dense .mud-table-cell {
        box-sizing: border-box;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
        padding: 6px 6px !important;
    }

    .crm-collections-table .crm-col-account { width: 9.5%; }
    .crm-collections-table .crm-col-related { width: 11%; }
    .crm-collections-table .crm-col-balance { width: 11%; }
    .crm-collections-table .crm-col-overdue { width: 11%; }
    .crm-collections-table .crm-col-delay { width: 7%; }
    .crm-collections-table .crm-col-bucket { width: 6.75%; }
    .crm-collections-table .crm-col-pay { width: 8%; }
    .crm-collections-table .crm-col-note { width: 6%; }
    .crm-collections-table.mud-table-dense .mud-table-cell.crm-col-action {
        width: 9.5%;
        min-width: 6.25rem;
    }

    .crm-collections-table .crm-col-clip,
    .crm-collections-table .crm-col-clip .crm-th-hit,
    .crm-collections-table .crm-col-clip .mud-table-sort-label,
    .crm-collections-table .crm-col-clip .mud-typography {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        max-width: 100%;
    }

    .crm-collections-table .crm-col-clip .mud-typography {
        display: block;
    }

    .crm-collections-table .crm-col-action {
        position: sticky;
        right: 0;
        z-index: 1;
        background: var(--mud-palette-surface);
    }

    .crm-collections-table .mud-table-head .crm-col-action {
        z-index: 3;
        background: var(--mud-palette-surface);
    }

    .crm-collections-table .mud-table-hover .mud-table-body .mud-table-row:hover .crm-col-action {
        background: var(--mud-palette-table-hover);
    }
}

/* Teklif listesi 1440'ta varsayılan kolonlarla kutuya sığsın.
   No tek satır (min 9rem). Metin kolonları üç nokta. */
@media (min-width: 961px) {
    .crm-quotes-table {
        max-width: 100%;
    }

    .crm-quotes-table .mud-table-container {
        max-width: 100%;
        overflow-x: auto;
        scrollbar-width: thin;
        scrollbar-color: var(--mud-palette-lines-default) transparent;
    }

    .crm-quotes-table .mud-table-container::-webkit-scrollbar {
        height: 10px;
    }

    .crm-quotes-table .mud-table-container::-webkit-scrollbar-thumb {
        background: var(--mud-palette-lines-default);
        border-radius: 999px;
    }

    .crm-quotes-table .mud-table-root {
        width: 100%;
        table-layout: fixed;
    }

    .crm-quotes-table.mud-table-dense .mud-table-cell {
        box-sizing: border-box;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        min-width: 0;
        padding: 6px 8px !important;
    }

    .crm-quotes-table.mud-table-dense .mud-table-cell.crm-col-no {
        width: 12.5%;
        min-width: 8.75rem;
    }

    .crm-quotes-table .crm-col-rev { width: 3.5%; }
    .crm-quotes-table .crm-col-type { width: 7.5%; }
    .crm-quotes-table .crm-col-account { width: 6%; }
    .crm-quotes-table .crm-col-date { width: 8.5%; }
    .crm-quotes-table .crm-col-status { width: 9%; }
    .crm-quotes-table .crm-col-net { width: 9.5%; }
    .crm-quotes-table .crm-col-vat { width: 9%; }
    .crm-quotes-table .crm-col-discount { width: 9%; }
    .crm-quotes-table .crm-col-grand { width: 9.5%; }
    .crm-quotes-table .crm-col-related { width: 12%; }
    .crm-quotes-table .crm-col-pdf { width: 4%; }

    .crm-quotes-table .crm-col-clip .crm-th-hit,
    .crm-quotes-table .crm-col-clip .mud-table-sort-label {
        display: block;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        max-width: 100%;
    }

    /* Tip ve İlgili başlığı 1440'ta kırpılmaz, alta kaymaz. */
    .crm-quotes-table .mud-table-head .crm-col-type .crm-th-hit,
    .crm-quotes-table .mud-table-head .crm-col-related .crm-th-hit,
    .crm-quotes-table .mud-table-head .crm-col-type .mud-table-sort-label,
    .crm-quotes-table .mud-table-head .crm-col-related .mud-table-sort-label {
        display: inline-flex;
        align-items: center;
        flex-wrap: nowrap;
        overflow: visible;
        text-overflow: clip;
        white-space: nowrap;
        max-width: none;
    }
}

/* Teklif no tek satır (TEK-2026-0042). min-width #142 kuralında (8.75rem); burada yinelenmez. */
.crm-quotes-table .crm-col-no,
.crm-quotes-table .crm-quote-no {
    white-space: nowrap;
}

.crm-chip-group {
    margin-top: 12px;
    min-width: 0;
    max-width: 100%;
}

.crm-chip-group-label {
    display: block;
    margin-bottom: 4px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
}

.crm-quote-scope-chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-width: 0;
}

.crm-quote-scope-chips .crm-quote-status-chip.mud-chip {
    margin: 0;
    max-width: 100%;
    height: auto;
    min-height: 32px;
}

.crm-logo-action {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    max-width: 100%;
    gap: 2px;
}

/* Durum süzgeci. 375px'te çipler yatay kayar, beş satıra yayılmaz. */
.crm-quote-status-chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-width: 0;
    margin-top: 12px;
}

.crm-quote-status-chips .crm-quote-status-chip.mud-chip {
    margin: 0;
    max-width: 100%;
    height: auto;
    min-height: 32px;
    white-space: normal;
}

.crm-quote-status-chips .mud-chip-content {
    white-space: normal;
    overflow-wrap: anywhere;
}

@media (max-width: 600px) {
    .crm-quote-status-chips,
    .crm-quote-scope-chips,
    .crm-account-chips {
        flex-wrap: nowrap;
        overflow-x: auto;
        overscroll-behavior-x: contain;
        padding-bottom: 4px;
    }

    .crm-quote-status-chips .crm-quote-status-chip.mud-chip,
    .crm-quote-scope-chips .crm-quote-status-chip.mud-chip,
    .crm-account-chips .crm-account-chip.mud-chip {
        flex: 0 0 auto;
        white-space: nowrap;
    }

    .crm-quote-status-chips .mud-chip-content,
    .crm-quote-scope-chips .mud-chip-content,
    .crm-account-chips .mud-chip-content {
        white-space: nowrap;
        overflow-wrap: normal;
    }
}

/* Satır durumu: küçük pastel çip. Zemin kâğıt/kum, kenar açık gri.
   Yazı mevcut durum rengi. Pembe/mor yok. */
.crm-quotes-table .crm-quote-row-status.mud-chip {
    display: inline-flex;
    width: fit-content;
    max-width: 100%;
    height: 24px;
    margin: 0;
    vertical-align: middle;
    background-color: color-mix(in srgb, var(--mud-palette-secondary) 48%, var(--mud-palette-background));
    border-color: var(--mud-palette-divider);
    color: var(--mud-palette-text-primary);
}

.crm-link-logo-dialog.mud-dialog {
    width: min(640px, calc(100vw - 32px));
}

.crm-link-code {
    width: 100%;
    max-width: 280px;
    flex: 0 1 280px;
}

.crm-link-code .mud-input-control {
    width: 100%;
    max-width: 280px;
}

.crm-quotes-table .crm-quote-row-status.mud-chip-color-success {
    color: var(--mud-palette-success);
    background-color: color-mix(in srgb, var(--mud-palette-success) 16%, var(--mud-palette-background));
}

.crm-quotes-table .crm-quote-row-status.mud-chip-color-info {
    color: var(--mud-palette-info);
    background-color: color-mix(in srgb, var(--mud-palette-primary) 14%, var(--mud-palette-background));
}

.crm-quotes-table .crm-quote-row-status.mud-chip-color-warning {
    color: var(--mud-palette-warning);
    background-color: color-mix(in srgb, var(--mud-palette-secondary) 72%, var(--mud-palette-background));
}

.crm-quotes-table .crm-quote-row-status.mud-chip-color-error {
    color: var(--mud-palette-error);
    background-color: color-mix(in srgb, var(--mud-palette-secondary) 36%, var(--mud-palette-background));
}

.crm-collections-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-width: 0;
}

.crm-collections-actions .mud-input-control,
.crm-collections-actions .mud-switch,
.crm-collections-actions .mud-button-root {
    max-width: 100%;
    min-width: 0;
}

.crm-collections-actions .mud-switch {
    white-space: normal;
    height: auto;
}

.crm-collections-card {
    max-width: 100%;
    min-width: 0;
}

.crm-collections-card-main {
    min-width: 0;
    flex: 1 1 12rem;
    overflow-wrap: anywhere;
}

/* Cari listesi: dar ekranda Logo'dan eşle ile CRM cari alt alta; birincil aksiyon üstte. */
.crm-accounts-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

@media (max-width: 600px) {
    .crm-accounts-actions {
        flex-direction: column-reverse;
        align-items: stretch;
        width: 100%;
    }

    .crm-accounts-actions .mud-button-root {
        width: 100%;
    }
}

/* Cari listesi: uzun unvan satırı yatay taşırmaz.
   Masaüstü: sabit kolon + üç nokta. Dar ekran (Breakpoint.Sm, ≤960px):
   MudBlazor flex satırında değer min-content kadar genişler ve etiketin
   sağına, ekran dışına kayar — değeri küçültüp satır kır. */
@media (min-width: 961px) {
    .crm-accounts-table {
        max-width: 100%;
    }

    .crm-accounts-table .mud-table-container {
        max-width: 100%;
        overflow-x: auto;
    }

    .crm-accounts-table .mud-table-root {
        width: 100%;
        table-layout: fixed;
    }

    .crm-accounts-table .mud-table-cell {
        overflow: hidden;
    }

    .crm-accounts-table .crm-cell-clip {
        display: block;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
}

@media (max-width: 960px) {
    .crm-accounts-table {
        max-width: 100%;
    }

    .crm-accounts-table .mud-table-container {
        max-width: 100%;
        overflow-x: hidden;
    }

    .crm-accounts-table .mud-table-root,
    .crm-accounts-table .mud-table-body,
    .crm-accounts-table .mud-table-row {
        display: block;
        width: 100%;
        max-width: 100%;
    }

    .crm-accounts-table .mud-table-head {
        display: none;
    }

    .crm-accounts-table .mud-table-cell {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 12px;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }

    .crm-accounts-table .mud-table-cell::before {
        flex: 0 0 auto;
        max-width: 46%;
    }

    .crm-accounts-table .crm-cell-clip,
    .crm-accounts-table .crm-cell-value {
        flex: 1 1 0;
        min-width: 0;
        overflow-wrap: anywhere;
        word-break: break-word;
        text-align: end;
        white-space: normal;
    }
}

/* Unvan birincil bağlantı metni; kod kolonları ikincil gri. Satır tıklaması durur. */
.crm-accounts-table .crm-cell-title {
    font-weight: 500;
    color: var(--mud-palette-primary);
}

.crm-accounts-table .crm-cell-code {
    color: var(--mud-palette-text-secondary);
}

/* 375px talep farkı: etiket kolonu sabit, değerler aynı hizada. */
@media (max-width: 600px) {
    .crm-demand-diff .mud-table-cell {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 12px;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
        text-align: start;
        white-space: normal;
    }

    .crm-demand-diff .mud-table-cell::before {
        flex: 0 0 8.75rem;
        max-width: 46%;
        text-align: start;
        white-space: normal;
    }

    .crm-demand-diff .mud-table-cell.crm-numeric {
        text-align: end;
    }
}

/* 375px: çipler satır kırar, sayfa yatay taşmaz. */
.crm-account-chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-width: 0;
    margin-top: 12px;
}

.crm-account-chips .crm-account-chip.mud-chip {
    margin: 0;
    max-width: 100%;
    height: auto;
    min-height: 32px;
    white-space: normal;
}

.crm-account-chips .mud-chip-content {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* Sıralama oku. MudBlazor 9.4 sıralanmayan sütunda .mud-table-sort-label-icon
   opacity:0 bırakır (yüzeyle aynı, svgOp=0). Ok anlam taşır: sütun sıralanabilir
   ve yön. Pasif ok ikincil metin, opak: açık #3A4856 / beyaz ≈ 9.4:1,
   karanlık #9AA9B8 / yüzey #1A2230 ≈ 6.7:1, sayfa #0E141C ≈ 7.7:1 (eşik 4.5:1).
   Aktif yön birincil metin: açık #1B2430 / beyaz ≈ 15.7:1,
   karanlık #E6EAF0 / #1A2230 ≈ 13.2:1.
   Hover etiketin tamamını 0.64 saydam yapar; pasif ok o zaman yüzeyde ≈ 3.5:1.
   Etiket saydamlığı kalkar. Düzen değişmez. */
.mud-table-sort-label.mud-clickable:hover {
    opacity: 1;
}

.mud-table-sort-label .mud-table-sort-label-icon {
    opacity: 1;
    color: var(--mud-palette-text-secondary);
}

.mud-table-sort-label .mud-table-sort-label-icon.mud-direction-asc,
.mud-table-sort-label .mud-table-sort-label-icon.mud-direction-desc {
    opacity: 1;
    color: var(--mud-palette-text-primary);
}

/* Sabit başlık. MudBlazor 9.4 gölge basmaz; ayıran tek iz hücre alt çizgisi.
   Rapor tablosu FixedHeader + şerit. Şerit beyaz %20 / yüzey #1A2230 ≈ #484E59.
   Başlık dolgusu yüzeyle aynı; dolgu / şerit ≈ 1.9:1.
   Çizgi lines #6A7380 / şerit ≈ 1.7:1 (kenar eşiği 3:1). Yüzeye karşı ≈ 3.3:1
   ama ilk satır şeritli olduğu için alt kenar şeride yapışır.
   İkincil metin #9AA9B8 / şerit ≈ 3.5:1, yüzey ≈ 6.7:1.
   Çift satır yüzeydir; aynı çizgi orada da ≥ 3:1. Kalınlık 1px kalır.
   Dondurulmuş kolon (sticky-left) kullanılmıyor. Açık tema durur. */
html.crm-dark .mud-table-sticky-header .mud-table-head .mud-table-cell {
    border-bottom-color: var(--mud-palette-text-secondary);
}

.crm-empty-state {
    text-align: center;
}

/* Satır işlemleri: 44px hedef, aralarında boşluk — bitişik 26px ikon yanlış tık üretmesin. */
.crm-row-actions {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
}

.crm-row-actions .mud-button-root.mud-icon-button {
    width: 44px;
    height: 44px;
    min-width: 44px;
    min-height: 44px;
    padding: 0;
}

/* Bildirim sağ altta; güvenli alan ve kenar payı. */
.mud-snackbar-location-bottom-right {
    right: 16px;
    bottom: calc(16px + env(safe-area-inset-bottom, 0px));
}

/* Mobil çekmece: son öğe (Kurulum) home göstergesine yapışmasın. */
@media (max-width: 960px) {
    .mud-drawer .crm-nav {
        padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px));
    }
}

.crm-empty-state-desc {
    max-width: 28rem;
}

/* Rapor al: Çalıştır ve Excel tek grup. Excel tek başına alt satıra düşmez.
   Geniş ekranda grup satır sonuna yaslanır; yükseklik dense filtre alanıyla aynı (40px). */
.crm-report-actions {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 8px;
}

.crm-report-actions .mud-button-root {
    height: 40px;
    margin: 0;
}

@media (min-width: 600px) {
    .crm-report-actions {
        margin-left: auto;
    }
}

/* Grafik ipucu (MudBlazor 9.4 ChartTooltip): yazı sabit beyaz, zemin seri rengi.
   12px; eşik 4.5:1. Çubuk tek seri #2979FF: beyaz ≈ 4.0:1.
   Pasta dilimleri paleti dolaşır: beyaz / #1DE9B6 ≈ 1.6:1, beyaz / #FFC400 ≈ 1.6:1
   (20 rengin 15'i beyazla 4.5'in altında). Siyah kontur iç dolguyu kapatmaz.
   Eksen ve lejant zaten --mud-palette-text-primary; seri renklerine dokunulmaz.
   Panel yüzey + birincil yazı: açıkta #1B2430 / #FFFFFF ≈ 15.7:1,
   karanlıkta #E6EAF0 / #1A2230 ≈ 13.2:1. Kenar ikincil metin; yüzeyden ayrılır. */
.mud-chart .svg-tooltip rect,
.mud-chart .svg-tooltip polygon {
    fill: var(--mud-palette-surface);
    stroke: var(--mud-palette-text-secondary);
}

.mud-chart .svg-tooltip text {
    fill: var(--mud-palette-text-primary);
    stroke: none;
    filter: none;
}

/* Pasta dilimi 6 MudBlazor varsayılanı DeepPurple #651FFF. İş yeri paletinde mor yok.
   Açıkta birincil #4F7D8C, karanlıkta #8FB8C4. Lejant rengi satır içi; !important gerekir. */
.mud-chart-serie[fill="#651FFF"],
.mud-chart-bar[fill="#651FFF"] {
    fill: #4F7D8C;
    stroke: #4F7D8C;
}

.mud-chart-legend-marker[style*="#651FFF"] {
    background-color: #4F7D8C !important;
}

html.crm-dark .mud-chart-serie[fill="#651FFF"],
html.crm-dark .mud-chart-bar[fill="#651FFF"] {
    fill: #8FB8C4;
    stroke: #8FB8C4;
}

html.crm-dark .mud-chart-legend-marker[style*="#651FFF"] {
    background-color: #8FB8C4 !important;
}

/* İpucu (MudTooltip, varsayılan). Yazı --mud-palette-dark-text (beyaz).
   Zemin gray-darker #616161. Beyaz / #616161 ≈ 6.2:1 (yazı eşiği 4.5:1, geçer).
   Panel ve ok aynı renk. Karanlık yüzey #1A2230 ≈ 2.6:1, sayfa #0E141C ≈ 2.99:1,
   çubuk #121821 ≈ 2.9:1 (kenar eşiği 3:1).
   Zemin lines-default #6A7380: beyaz ≈ 4.8:1; yüzey ≈ 3.3:1, sayfa ≈ 3.9:1,
   çubuk ≈ 3.7:1. Ok aynı renk. Paper=false; açılır kâğıt kuralına girmez.
   Açık temada #616161 / beyaz ≈ 6.2:1, durur.
   Sağlayıcı yerleşimin dışında; html.crm-dark kapsar. */
html.crm-dark .mud-tooltip.mud-tooltip-default {
    background-color: var(--mud-palette-lines-default);
}

html.crm-dark .mud-tooltip.mud-tooltip-default.mud-tooltip-arrow::after {
    border-color: var(--mud-palette-lines-default) transparent transparent transparent;
}

.mud-button-filled {
    box-shadow: none !important;
}

/* Düz dolu düğme: gölge kapalı. MudBlazor klavye odağı bu gölge ve koyulaşan
   zemindir. Gölge kalkınca yalnız koyulaşma kalır: açıkta #17325B / #122746
   ≈ 1.2:1, karanlıkta #7FA6D9 / #5B85BC ≈ 1.5:1 (docs/18 §8.3, halka ≥ 3:1).
   Halka sayfa yazı rengiyle çizilir; açık zeminde #1B2430 ≈ 14:1, karanlık
   zeminde #E6EAF0 ≈ 13:1. Dururken gölge geri gelmez. */
.mud-button-filled:focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

/* İkon düğmesi, dolu değil (#61 yalnız .mud-button-filled). Kütüphane outline:0.
   Odak zemini action-default %6: yüzeyde ≈ 1.1:1, seçili lacivert satırda ≈ 1.0:1
   (halka eşiği 3:1). Halka 2px dışarı, sayfa yazısı: açık #1B2430 / beyaz ≈ 15.7:1,
   karanlık #E6EAF0 / yüzey #1A2230 ≈ 13.2:1, sayfa #0E141C ≈ 15.3:1,
   çekmece #121821 ≈ 14.8:1. Seçili satırın dolgusunda kontrast yazısı:
   açık beyaz / #17325B ≈ 12.8:1, karanlık #121821 / #7FA6D9 ≈ 7.1:1.
   Çubuk ikonu aynı özgüllükte bu kurala düşer; çubuk halkası alttaki kuralda.
   Anahtar ve onay kutusu bu düğme değil (odak içerideki girişte). Düzen değişmez. */
.mud-icon-button:focus-visible:not(.mud-button-filled) {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

.mud-theme-primary .mud-icon-button:focus-visible:not(.mud-button-filled) {
    outline-color: var(--mud-palette-primary-text);
}

/* Çubuktaki ikon (menü, zil, tema, hesap). Üstteki ikon halkası sayfa yazısıdır
   ve .mud-appbar .mud-button-root ile aynı özgüllükte sonra gelir.
   Açık çubuk #17325B; sayfa yazısı #1B2430 ≈ 1.23:1 (halka eşiği 3:1).
   Çubuk yazısı bu zeminde beyaz ≈ 12.8:1. Karanlık çubuk #121821;
   #E6EAF0 ≈ 14.8:1. Metin düğmesi (Çıkış, kullanıcı adı) ikon kuralına girmez.
   Düzen değişmez. */
.mud-appbar .mud-icon-button:focus-visible {
    outline: 2px solid var(--mud-palette-appbar-text, #FFFFFF);
    outline-offset: 2px;
}

/* Bildirim dolu zemindir (#61/#73 halkası sayfa yazısı). Kapat ve «Yenile»
   bu zeminde: karanlık #E6EAF0 / uyarı #FFB74D ≈ 1.4:1, başarı ≈ 2.0:1,
   hata ≈ 2.9:1, bilgi ≈ 2.3:1. Açık temada lacivert yazı koyu dolguda 1.2–2.9:1
   (halka eşiği 3:1). Düğme rengi kontrast yazısı (≥6:1). Kutu overflow:hidden;
   dış halka kesilir. 2px içeri. Düzen değişmez. */
.mud-snackbar .mud-snackbar-close-button:focus-visible,
.mud-snackbar .mud-snackbar-action-button:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: -2px;
}

.loading-progress circle:last-child {
    stroke: #4F7D8C;
}

.loading-progress-text {
    color: #4F7D8C;
}

/* Giriş kartı. EmptyLayout açık temada kalır; html.crm-dark yerleşim kalkınca silinir.
   Kenar ayırıcı #E6EAF0: kâğıt beyaz ≈ 1.21:1, sayfa #F5F7FA ≈ 1.13:1.
   Yükselme 2 gölgesi sayfada ≈ 1.3–1.6:1 (kenar eşiği 3:1).
   Yetkisiz ekran ana kabukta EmptyState; ayrı kart yok.
   Kenar giriş çizgisi: açık #73808C / beyaz ≈ 4.0:1, sayfa ≈ 3.8:1.
   Karanlık jeton #7A8794 / yüzey #1A2230 ≈ 4.4:1, sayfa #0E141C ≈ 5.0:1.
   Düzen değişmez. */
.crm-login-paper {
    border: 1px solid var(--mud-palette-lines-inputs);
    background: var(--mud-palette-surface);
}

/* Çerçevesiz kâğıt ve tarih paneli. Karanlıkta yükselme gölgesi siyah;
   yüzey #1A2230 / sayfa #0E141C ≈ 1.2:1, kenar yok (eşik 3:1).
   Çerçeveli kâğıt paletin lines-default rengiyle kenar alır.
   1px içeri, düzen değişmez. #6A7380 yüzeyde ≈ 3.3:1, sayfada ≈ 3.9:1.
   Açık temada gölge durur. */
html.crm-dark :is(.crm-surface-edge, .mud-picker-paper) {
    outline: 1px solid var(--mud-palette-lines-default);
    outline-offset: -1px;
}

/* Menü, seçim ve otomatik tamamlama: .mud-popover.mud-paper, yükselme 8.
   #81 tarih paneli ve crm-surface-edge. Bu açılırlar outline:0.
   Karanlıkta gölge siyah %12–20: yüzeyde bileşik kenar ≈ 1.1:1, sayfada ≈ 1.0:1.
   Kâğıt dolgusu #1A2230 / sayfa #0E141C ≈ 1.2:1 (eşik 3:1).
   1px içeri. #6A7380 yüzeyde ≈ 3.3:1, sayfada ≈ 3.9:1.
   İpucu Paper=false, bu kurala girmez. Tarih paneli iç kâğıtta kalır.
   Açık temada gölge durur. Sağlayıcı yerleşimin dışında; html.crm-dark kapsar. */
html.crm-dark .mud-popover.mud-paper {
    outline: 1px solid var(--mud-palette-lines-default);
    outline-offset: -1px;
}

.crm-login-shell {
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    background:
        radial-gradient(ellipse 80% 50% at 50% -10%, color-mix(in srgb, var(--mud-palette-primary) 10%, transparent), transparent),
        var(--mud-palette-background);
}

.crm-login-shell > .crm-page {
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1.5rem 1rem;
    box-sizing: border-box;
}

.crm-status-chip {
    font-weight: 600;
}

/* Metin rozetleri ve ikincil yazı: açık gri/amber 4.5:1 altına düşmesin. */
.mud-chip-text.mud-chip-color-default,
.mud-chip-text.mud-chip-color-dark {
    color: #1B2430;
}

.mud-chip-text.mud-chip-color-warning {
    color: #7A3E00;
}

.mud-chip-text.mud-chip-color-success {
    color: #4C7A62;
}

.mud-chip-text.mud-chip-color-error {
    color: #9B1C1C;
}

.mud-chip-text.mud-chip-color-info {
    color: #3E6876;
}

/* Karanlık tema: yukarıdaki açık-tema rozet renkleri koyu zeminde ~2:1.
   Açık tema aynı kalır. AI kuyruğunun açık gri rozet zemini de kalkar. */
.crm-dark .mud-chip-text.mud-chip-color-default,
.crm-dark .mud-chip-text.mud-chip-color-dark {
    color: var(--mud-palette-text-primary);
}

.crm-dark .crm-ai-queue .mud-chip.mud-chip-text {
    background-color: transparent;
}

/* Metin rozetinin kendi zemini renk %6 şeffaf. Tablo satırı hover'ı beyaz %20
   alttan görünür: hata #EF5350 ≈ 2.3:1, başarı ≈ 3.3:1, bilgi ≈ 2.8:1, uyarı ≈ 4.3:1.
   Zemin, yüzey üstündeki aynı karışımın opak hali — dururken piksel değişmez, hover sızmaz.
   Hata yazısı o karışımda #EF5350 ≈ 4.3:1; #FF6B66 ≈ 5.4:1.
   Kuyruğun şeffaf kuralıyla aynı özgüllük; sonraki kazanır. Varsayılan rozet şeffaf kalır. */
.crm-dark .mud-chip.mud-chip-text.mud-chip-color-warning,
.crm-dark .mud-chip.mud-chip-text.mud-chip-color-warning.mud-clickable:is(:hover, :focus-visible, :active) {
    color: var(--mud-palette-warning);
    background-color: #272B32;
}

.crm-dark .mud-chip.mud-chip-text.mud-chip-color-success,
.crm-dark .mud-chip.mud-chip-text.mud-chip-color-success.mud-clickable:is(:hover, :focus-visible, :active) {
    color: var(--mud-palette-success);
    background-color: #1E2B33;
}

.crm-dark .mud-chip.mud-chip-text.mud-chip-color-error,
.crm-dark .mud-chip.mud-chip-text.mud-chip-color-error.mud-clickable:is(:hover, :focus-visible, :active) {
    color: #FF6B66;
    background-color: #272532;
}

.crm-dark .mud-chip.mud-chip-text.mud-chip-color-info,
.crm-dark .mud-chip.mud-chip-text.mud-chip-color-info.mud-clickable:is(:hover, :focus-visible, :active) {
    color: var(--mud-palette-info);
    background-color: #1F293A;
}

/* Rozet düğme olunca (ChipSet) klavye odağı var. Kütüphane outline:0.
   Odak zemini %6 → %12 ≈ 1.1:1. Karanlık renkli metin rozetinde hover/odak
   zemini duran renkle aynı (değişim 1:1). Yazı rengi değişmez.
   Halka sayfa yazısı, 2px dışarı (rozet payı 4px): açık #1B2430 / beyaz ≈ 15.7:1,
   karanlık #E6EAF0 / yüzey ≈ 13.2:1 (halka eşiği 3:1). Düzen değişmez. */
.mud-chip:focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

/* Seçili varsayılan rozet. ChipSet içindeki metin rozeti seçilince Filled olur;
   renk döngüsünde default yok. Dolu zemin action-disabled-background:
   açıkta siyah %12 (#E0E0E0) / beyaz ≈ 1.3:1, karanlıkta beyaz %12 (#353D49) /
   yüzey #1A2230 ≈ 1.5:1. Seçili değilken zemin action-default %6; iki zemin
   arası ≈ 1.2–1.3:1 (kenar eşiği 3:1). Hover zemini action-disabled. Açıkta
   bu opak #4B5563; yazı #1B2430 ≈ 2.1:1 (eşik 4.5:1). Kenar sayfa yazısı,
   1px içeri: açık #1B2430 / beyaz ≈ 15.7:1, karanlık #E6EAF0 / yüzey ≈ 13.2:1.
   Zemin yüzey; yazı birincil kalır. Odak halkası outline olarak durur.
   Düzen değişmez. */
.mud-chip.mud-chip-filled.mud-chip-color-default,
.mud-chip.mud-chip-filled.mud-chip-color-default.mud-clickable:is(:hover, :focus-visible, :active) {
    color: var(--mud-palette-text-primary);
    background-color: var(--mud-palette-surface);
    box-shadow: inset 0 0 0 1px var(--mud-palette-text-primary);
}

/* Satır hover'ı beyaz %20. Hata/başarı/bilgi yazısı bu zeminde 2.4–3.5:1.
   Gövde yazısı (#E6EAF0) ≈ 6.9:1 olduğu için satır vurgusu durur. Renkli işlem
   düğmesi ve ikon, durduğu yüzey rengini opak alır: hata #EF5350 ≈ 4.6:1,
   başarı ≈ 6.8:1, bilgi ≈ 5.7:1. Dolu düğmenin kendi dolgusu değişmez. */
.crm-dark .mud-table-hover .mud-table-row:hover :is(
    .mud-icon-button.mud-error-text,
    .mud-icon-button.mud-success-text,
    .mud-icon-button.mud-info-text,
    .mud-button-text-error,
    .mud-button-text-success,
    .mud-button-text-info,
    .mud-button-outlined-error,
    .mud-button-outlined-success,
    .mud-button-outlined-info
),
.crm-dark .mud-simple-table.mud-table-hover tbody tr:hover :is(
    .mud-icon-button.mud-error-text,
    .mud-icon-button.mud-success-text,
    .mud-icon-button.mud-info-text,
    .mud-button-text-error,
    .mud-button-text-success,
    .mud-button-text-info,
    .mud-button-outlined-error,
    .mud-button-outlined-success,
    .mud-button-outlined-info
),
.crm-dark .mud-table-hover .mud-table-row:hover .mud-icon-root:is(.mud-error-text, .mud-success-text, .mud-info-text),
.crm-dark .mud-simple-table.mud-table-hover tbody tr:hover .mud-icon-root:is(.mud-error-text, .mud-success-text, .mud-info-text) {
    background-color: var(--mud-palette-surface);
}

/* Klavye odağı satır hover'ı değildir. Metin hata düğmesinin odak zemini hata %6
   (#272532): #EF5350 ≈ 4.3:1. İkon hata düğmesinin odak zemini action-default %6
   (#232A38): #EF5350 ≈ 4.1:1 (eşik 4.5:1). Dururken yüzeyde ≈ 4.6:1, o renk kalır.
   Odakta #FF6B66: hata zeminde ≈ 5.4:1, ikon zeminde ≈ 5.2:1. Rozet ve uyarı ile
   aynı yazı. Dolu hata düğmesinin kontrast yazısı değişmez. Diyalog yerleşimin
   dışında; html.crm-dark kapsar. */
html.crm-dark :is(.mud-button-text.mud-button-text-error, .mud-icon-button.mud-error-text):focus-visible,
.crm-dark :is(.mud-button-text.mud-button-text-error, .mud-icon-button.mud-error-text):focus-visible {
    color: #FF6B66 !important;
}

/* Seçili tanım tipi satırı birincil dolgu (mud-theme-primary). Yukarıdaki rozet
   renkleri yüzey içindir: açıkta #1B2430 / #17325B ≈ 1.2:1, karanlıkta
   metin birincil / #7FA6D9 ≈ 2.1:1. Kontrast yazısı dolguyla eşleşir
   (açık beyaz ≈ 12.8:1, karanlık #121821 ≈ 7.1:1). */
.mud-theme-primary .mud-chip.mud-chip-text.mud-chip-color-default,
.mud-theme-primary .mud-chip.mud-chip-text.mud-chip-color-dark {
    color: var(--mud-palette-primary-text);
}

/* Aynı satırdaki düzenle ikonu kendi rengini basar (action-default).
   Açıkta #3A4856 / #17325B ≈ 1.4:1, karanlıkta #adadb1 / #7FA6D9 ≈ 1.1:1.
   İkon, dolgunun kontrast yazısını kullanır (açık beyaz ≈ 12.8:1, karanlık #121821 ≈ 7.1:1). */
.mud-theme-primary .mud-icon-button {
    color: var(--mud-palette-primary-text);
}

/* MudAlert metin/çerçeve gövdesi *-darken kullanır (ikon taban rengi).
   Karanlıkta koyulaşan hata ~3.6:1, bilgi ~3.9:1. Çerçeve hata taban rengi
   yüzeyde #EF5350 ≈ 4.6:1. Metin uyarısının zemini hata %6 şeffaf; aynı yazı
   bu karışımda ≈ 4.3:1. #FF6B66 ≈ 5.4:1. Dolu düğmenin hover zemini darken'da kalır. */
.crm-dark .mud-alert-text-error,
.crm-dark .mud-alert-text-error .mud-alert-icon {
    color: #FF6B66;
}

.crm-dark .mud-alert-outlined-error,
.crm-dark .mud-alert-outlined-error .mud-alert-icon {
    color: var(--mud-palette-error);
}

.crm-dark .mud-alert-text-info,
.crm-dark .mud-alert-outlined-info {
    color: var(--mud-palette-info);
}

.crm-dark .mud-alert-text-primary,
.crm-dark .mud-alert-outlined-primary {
    color: var(--mud-palette-primary);
}

/* Karanlık tema: saat seçicinin pasif saat/dakika (ve AM/PM) yazısı sabit beyaz %54.
   Araç çubuğu birincil dolgu (#7FA6D9). Beyaz %54 bu dolguda ~1.7:1.
   Saat/dakika 3.75rem; AA büyük metin eşiği 3:1, gövde 4.5:1.
   Kontrast yazısı (#121821) bu dolguda ~7.1:1. Açık temada lacivert + beyaz %54 durur.
   Popover yerleşimin dışında çizilir; html.crm-dark kapsar. */
html.crm-dark .mud-picker-timepicker-toolbar .mud-timepicker-button.mud-timepicker-toolbar-text {
    color: var(--mud-palette-primary-text);
}

/* Saat kadranı. MudBlazor 9.4 zemini sabit siyah %7.
   Kâğıt #1A2230 üzerinde bileşik renk ≈ 1.02:1 (kenar eşiği 3:1).
   Dolguyu beyaza çevirmek eşiği ancak %34'te geçer; o zeminde
   rakam #E6EAF0 ≈ 4.3:1 (gövde eşiği 4.5:1). Dolu zemin durur,
   kenar çizilir. lines-default #6A7380 yüzeyde ≈ 3.3:1.
   Rakam kâğıtta kalır: #E6EAF0 / #1A2230 ≈ 13.2:1.
   Seçili rakam birincil dolguda, ibre ayrı renkte. Düzen değişmez.
   Açık temada siyah %7 durur. Popover yerleşimin dışında;
   html.crm-dark kapsar. */
html.crm-dark .mud-picker-time-clock {
    background-color: transparent;
    outline: 1px solid var(--mud-palette-lines-default);
    outline-offset: -1px;
}

/* Tarih/saat açılır paneli: ay ızgarası ve ay/yıl başlığı <button>.
   Araç çubuğundaki yıl, tarih, saat ve dakika da düğme. Kütüphane outline:0.
   Ay ızgarasında başka odak biçimi yok. Araç çubuğu odağı action-default %6:
   birincil dolguda ≈ 1.0:1 (docs/18 §8.3, halka eşiği 3:1).
   Gün hücreleri ikon düğmesi; mevcut halka durur. Giriş odağı 2px birincil
   çerçeve: karanlıkta yüzeyde ≈ 6.4:1. Panel taşmayı keser; halka 2px içeri.
   Ay ve başlık, sayfa yazısı: açık #1B2430 / beyaz ≈ 15.7:1,
   karanlık #E6EAF0 / #1A2230 ≈ 13.2:1. Araç çubuğu kontrast yazısı:
   açık beyaz / #17325B ≈ 12.8:1, karanlık #121821 / #7FA6D9 ≈ 7.1:1.
   Düzen değişmez. */
.mud-picker-month-container .mud-picker-month:focus-visible,
button.mud-picker-calendar-header-transition:focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: -2px;
}

.mud-picker-toolbar .mud-button:focus-visible {
    outline: 2px solid var(--mud-palette-primary-text);
    outline-offset: -2px;
}

/* Yer tutucu currentColor ve %42 opak. Gövde 0.875rem; eşik 4.5:1.
   Açıkta #1B2430 %42 / beyaz ≈ 2.5:1. Karanlıkta #E6EAF0 %42 / yüzey ≈ 3.5:1.
   İkincil metin aynı zeminlerde ≈ 6.6:1 ve 9.4:1. Birçok arama kutusunun tek ipucu bu yazı. */
.mud-input > input.mud-input-root::placeholder,
.mud-input > input.mud-input-root::-webkit-input-placeholder,
div.mud-input-slot.mud-input-root::placeholder,
div.mud-input-slot.mud-input-root::-webkit-input-placeholder,
.mud-input > textarea.mud-input-root::placeholder,
.mud-input > textarea.mud-input-root::-webkit-input-placeholder {
    color: var(--mud-palette-text-secondary);
    opacity: 1;
}

/* iOS Safari, odaklanan girişin yazısı 16px altındayken sayfayı yakınlaştırır.
   Gövde 0.875rem (14px); giriş font:inherit ile aynı boyda. Masaüstü yoğunluğu
   durur. 959px, çekmece eşiği: telefon yatayda da (ör. 932px) 16px kalsın.
   Sayfalayıcı seçicisi kütüphanede .875rem ve daha özgül; aynı seçiciyle ezilir. */
@media (max-width: 959px) {
    .mud-input > input.mud-input-root,
    .mud-input > textarea.mud-input-root,
    .mud-table-pagination-select .mud-input .mud-input-root {
        font-size: 16px;
    }
}

/* Pasif anahtar izi action-default ve %48 opak.
   Açıkta başparmak #FAFAFA / iz #A0A7AE ≈ 2.3:1, iz / beyaz ≈ 2.4:1 (bileşen eşiği 3:1).
   %65: başparmak ≈ 3.5:1, iz / beyaz ≈ 3.6:1. Karanlıkta iz / yüzey 2.7:1 → 3.8:1,
   başparmak ≈ 4.0:1. Seçili iz kütüphanedeki %50 kuralında kalır (daha özgül). */
.mud-switch-span .mud-switch-track {
    opacity: 0.65;
}

/* Karanlık seçili başparmak mud-*-text ile izle aynı renk ailesine geçer.
   Birincil #7FA6D9 / iz #4C6484 ≈ 2.4:1. İkincil #2BC6C6 / iz ≈ 2.6:1.
   Kütüphane başparmağı #FAFAFA bu izlerde ≈ 5.2–5.8:1.
   Anahtar diyalogda da çizilir; html.crm-dark kapsar. Açık birincil (≈ 4.4:1) değişmez. */
html.crm-dark .mud-switch-base.mud-checked {
    color: #fafafa !important;
}

/* Açık ikincil seçili: başparmak #0A7676 / iz #84BABA ≈ 2.5:1.
   İkincil %65 + siyah (#064D4D) aynı izde ≈ 4.3–4.5:1. */
html:not(.crm-dark) .mud-switch-base.mud-checked.mud-secondary-text {
    color: #064D4D !important;
}

/* Anahtar ve onay kutusu: odak, opaklığı 0 olan girişte. #64 başparmak/iz
   kontrastı; halka değil. Kütüphane ikon düğmesinin :has(:focus-visible) zemini
   action-default %6 ≈ 1.1:1 (halka eşiği 3:1). Yazı rengi değişmez.
   Anahtar kutusu overflow:hidden; halka etikette, kutunun dışında, kendi
   taşması kesilmez. 2px dışarı, sayfa yazısı: açık #1B2430 / beyaz ≈ 15.7:1,
   karanlık #E6EAF0 / yüzey ≈ 13.2:1. Düzen değişmez. */
.mud-switch:has(:focus-visible),
.mud-checkbox:has(:focus-visible) {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

/* Takvim görünüm anahtarı (MudToggleGroup). Seçili dolu düğme; seçili değil
   çerçeveli. Grup overflow:hidden, dolu düğmenin dış halkası kesilir.
   Seçili değilken odak zemini birincil %6 ≈ 1.1:1 (halka eşiği 3:1).
   Yazı rengi değişmez: seçili kontrast yazısı birincil dolguda
   açık beyaz / #17325B ≈ 12.8:1, karanlık #121821 / #7FA6D9 ≈ 7.1:1.
   Seçili değil birincil yazı yüzeyde açık ≈ 12.8:1, karanlık ≈ 6.4:1.
   Halka currentColor, 2px içeri. Düzen değişmez. */
.mud-toggle-group .mud-toggle-item:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: -2px;
}

/* Özel crm düğmeleri: dolu (#61), ikon (#73), çubuk, menü öğesi (#72),
   sekme (#71), rozet (#75) ve anahtar (#74) dışında.
   Metin ve çerçeveli düğmede kütüphane outline:0. Odak zemini renk %6 ≈ 1.1:1
   (halka eşiği 3:1). Çerçeve dururken de durur; odak farkı bu zemin.
   Halka sayfa yazısı, 2px dışarı: açık #1B2430 / beyaz ≈ 15.7:1, sayfa #F5F7FA
   ≈ 14.6:1; karanlık #E6EAF0 / yüzey #1A2230 ≈ 13.2:1, sayfa #0E141C ≈ 15.3:1.
   Dolu ve ikon düğmesi kendi halkasını korur. Düzen değişmez. */
:is(
    .crm-filter-action,
    .crm-calendar-nav .mud-button-root,
    .crm-report-actions .mud-button-root,
    .crm-page-header-actions .mud-button-root,
    .crm-detail-summary-actions .mud-button-root
):focus-visible:not(.mud-button-filled):not(.mud-icon-button) {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

/* Diyalog eylemleri: metin ve çerçeveli düğme. #94 sayfa gruplarını kapsar;
   diyalog eylemleri dışarıda. Kütüphane button:focus ve .mud-button-root
   outline:0. Varsayılan metin düğmesinin odak zemini action-default %6
   ≈ 1.1:1 (docs/18 §8.3, halka eşiği 3:1). Odak tuzağı varsayılanı Element:
   ilk odak görünmez yedek; sonraki Tab onay diyaloğunda Vazgeç'e, satır
   diyaloğunda Kapat'a düşer. Diyalog overflow-y:auto. Eylem payı 8px;
   halka 2px ve 2px dışarı (4px) payın içinde kalır. Halka sayfa yazısı:
   açık #1B2430 / beyaz ≈ 15.7:1, karanlık #E6EAF0 / yüzey #1A2230 ≈ 13.2:1.
   Dolu düğme #61 halkasını korur. Düzen değişmez. */
.mud-dialog :is(.mud-button-text, .mud-button-outlined):focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: 2px;
}

.crm-detail-summary-bar {
    padding-bottom: 0.25rem;
    border-bottom: 1px solid var(--mud-palette-divider);
}

.crm-detail-summary-actions .mud-button-root,
.crm-page-header-actions .mud-button-root {
    min-height: 40px;
}

@media (max-width: 600px) {
    .crm-detail-summary-actions,
    .crm-page-header-actions {
        width: 100%;
    }

    .crm-detail-summary-actions .mud-button-root,
    .crm-detail-more-menu {
        flex: 1 1 auto;
    }

    .mud-table.mud-table-dense .mud-table-row {
        min-height: 44px;
    }

    .crm-dialog {
        max-width: 100vw !important;
        margin: 0;
    }
}

/* Cari detay sekmeleri: kaydırma okları etiketin üstüne binmesin (GÖREVLER kırpılmaz).
   MudBlazor .mud-tabs-tabbar-content width:100% oklarla aynı kutuyu kaplar. */
:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tabs-tabbar-content {
    display: block;
    width: auto;
    min-width: 0;
    flex: 1 1 0%;
    overflow: hidden;
    contain: paint;
}

:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tabs-scroll-button {
    flex: 0 0 auto;
    position: relative;
    z-index: 2;
    background: var(--mud-palette-surface);
}

:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tabs-tabbar-wrapper {
    overflow: visible;
}

:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs, .mud-tabs) .mud-tab {
    width: auto;
    text-transform: none;
}

/* Sekme role=tab olan div. Ok tuşu odağı aktif sekmeyi değiştirmeden taşır.
   Kütüphane .mud-tabs-tabbar-content ve buradaki contain:paint overflow:hidden;
   tarayıcı halkası kutunun dışında kaldığı için kesilir. Aktif olmayan sekmede
   başka odak biçimi yok. Halka 2px içeri: kesilmez. Yazı rengi yüzeyde
   açık #1B2430 ≈ 15.7:1, karanlık #E6EAF0 / #1A2230 ≈ 13.2:1 (eşik 3:1).
   Düzen değişmez. */
:is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tab:focus-visible {
    outline: 2px solid var(--mud-palette-text-primary);
    outline-offset: -2px;
}

/* Telefonda aktif sekmeyi ortalama, komşu etiketi okun altında keser.
   Sekme genişliği görünen alan kadar olunca ok bir tam etikete kayar. */
@media (max-width: 600px) {
    :is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tabs-tabbar-content {
        container-type: inline-size;
    }

    :is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tooltip-root {
        display: flex;
        flex: 0 0 auto;
        /* 1px pay: sekme görünen alandan genişse MudBlazor kaydırmayı yarıya kilitler. */
        width: calc(100cqi - 1px);
        max-width: calc(100cqi - 1px);
    }

    :is(.crm-account-tabs, .crm-report-tabs, .crm-scroll-tabs) .mud-tab {
        flex: 1 1 auto;
        width: 100%;
        min-width: 0 !important;
        max-width: 100%;
        box-sizing: border-box;
    }
}

:is(.crm-account-tabs, .crm-scroll-tabs) .mud-tab.mud-tab-active,
:is(.crm-account-tabs, .crm-scroll-tabs) .mud-tab-slider {
    color: var(--mud-palette-primary);
}

:is(.crm-account-tabs, .crm-scroll-tabs) .mud-tab-slider {
    background: var(--mud-palette-primary);
}

.crm-dialog .mud-dialog-actions {
    gap: 0.5rem;
    flex-wrap: wrap;
}

/* Cari kart formu: aralık MudGrid Spacing=4 (16px). Alan kenar payı aralığı şişirmesin. */
.crm-cari-form .mud-input-control,
.crm-cari-form-header .mud-input-control {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.crm-cari-form-header {
    margin-bottom: 12px;
}

.crm-cari-checks {
    min-height: 40px;
}

.crm-cari-checks .mud-checkbox {
    margin: 0;
}

/* Yoğun onay kutusu 4px iç boşluk bırakır; kare, outlined alanın sol kenarıyla hizalanır. */
.crm-cari-checks .mud-icon-button {
    margin-inline-start: -4px;
}

.crm-cari-tab-panel {
    padding: 8px 0 16px;
}

.crm-logo-lookup-field {
    width: 100%;
}

/* "…" düğmesi outlined kutunun dikey ortasında (alan kenar payı sıfır).
   Kapalı alan (Mahalle/İlçe) ile açık alan (İl/Ülke) aynı çerçeve:
   kütüphane kapalı outlined kenarı action-disabled-background ile solar. */
.crm-logo-lookup-field > .crm-lookup-more {
    flex: 0 0 auto;
    align-self: center;
    margin-top: 0;
    margin-bottom: 0;
    width: 40px;
    height: 40px;
    min-width: 40px;
    min-height: 40px;
    opacity: 1;
    border: 1px solid rgba(var(--mud-palette-text-primary-rgb), var(--mud-palette-border-opacity));
    color: var(--mud-palette-text-secondary) !important;
}

.crm-logo-lookup-field > .crm-lookup-more:disabled {
    opacity: 1;
    border: 1px solid rgba(var(--mud-palette-text-primary-rgb), var(--mud-palette-border-opacity));
    color: var(--mud-palette-text-secondary) !important;
}

.crm-logo-lookup-field .mud-input-control {
    min-width: 0;
}

.crm-lookup-row-selected {
    background: var(--mud-palette-action-default-hover);
}

.crm-logo-lookup-dialog .mud-simple-table table {
    width: 100%;
}

/* ——— Motion cilası (hafif, 160–200ms; layout ölçüsü değiştirmez) ——— */
:root {
    --crm-motion-fast: 160ms;
    --crm-motion-base: 180ms;
    --crm-motion-ease: ease-out;
}

.crm-nav .mud-nav-link {
    transition:
        background-color var(--crm-motion-fast) var(--crm-motion-ease),
        box-shadow var(--crm-motion-fast) var(--crm-motion-ease),
        color var(--crm-motion-fast) var(--crm-motion-ease);
}

.mud-appbar .mud-button-root,
.mud-appbar .mud-icon-button,
.mud-drawer .mud-nav-link {
    transition:
        background-color var(--crm-motion-fast) var(--crm-motion-ease),
        opacity var(--crm-motion-fast) var(--crm-motion-ease);
}

.crm-login-paper {
    transition:
        border-color var(--crm-motion-fast) var(--crm-motion-ease),
        box-shadow var(--crm-motion-fast) var(--crm-motion-ease),
        opacity var(--crm-motion-fast) var(--crm-motion-ease);
}

/* Sayfa enter — MainLayout LocationChanged / @key ile tetiklenir */
.crm-page {
    min-width: 0;
}

.crm-page.crm-page--enter {
    animation: crm-page-enter var(--crm-motion-base) var(--crm-motion-ease) both;
}

@keyframes crm-page-enter {
    from {
        opacity: 0;
        transform: translateY(4px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.crm-detail-summary-bar,
.crm-page-header {
    transition:
        opacity var(--crm-motion-fast) var(--crm-motion-ease),
        border-color var(--crm-motion-fast) var(--crm-motion-ease);
}

.crm-detail-summary-actions .mud-button-root,
.crm-page-header-actions .mud-button-root {
    transition:
        background-color var(--crm-motion-fast) var(--crm-motion-ease),
        opacity var(--crm-motion-fast) var(--crm-motion-ease),
        color var(--crm-motion-fast) var(--crm-motion-ease);
}

.crm-filter-bar .mud-input-control,
.crm-filter-bar .mud-button-root,
.crm-filter-bar .crm-filter-action {
    transition:
        background-color var(--crm-motion-fast) var(--crm-motion-ease),
        border-color var(--crm-motion-fast) var(--crm-motion-ease),
        opacity var(--crm-motion-fast) var(--crm-motion-ease);
}

.crm-status-chip.mud-chip {
    transition:
        background-color var(--crm-motion-fast) var(--crm-motion-ease),
        color var(--crm-motion-fast) var(--crm-motion-ease);
}

.crm-dialog.mud-dialog,
.mud-dialog.crm-dialog {
    transition: opacity var(--crm-motion-base) var(--crm-motion-ease);
}

@media (min-width: 601px) {
    .mud-table.mud-table-hover .mud-table-row {
        transition: background-color var(--crm-motion-fast) var(--crm-motion-ease);
    }
}

/* Cari / stok autocomplete: uzun kod-unvan satırı kesilir, dar ekranda popover taşmaz. */
.crm-picker {
    width: 100%;
    min-width: 0;
}

.crm-picker .mud-input-slot {
    text-overflow: ellipsis;
}

.crm-picker-popover {
    max-width: min(36rem, calc(100vw - 1.5rem));
}

.crm-account-picker-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 8px;
    padding: 4px 8px 8px;
    border-top: 1px solid var(--mud-palette-divider);
}

.crm-account-picker-actions .mud-button-root {
    text-transform: none;
    letter-spacing: 0;
    justify-content: flex-start;
}

.crm-picker-option {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: min(34rem, calc(100vw - 3rem));
}

/* MudBlazor ≤416px sayfalayıcısı min-height:100px ve actions margin-inline-end:-14px
   bırakır (sağa taşma). #40 yalnızca aktivite tablosundaydı; görev, fatura, stok,
   hedef ve cari sekmelerindeki MudTablePager aynı araç çubuğunu kullanır.
   İki satır: aralık + önceki/sonraki, altında sayfa boyutu.
   Masaüstünde (>600px) araç çubuğu aynı kalır. Önceki/sonraki 44px. */
@media (max-width: 600px) {
    .mud-table .mud-table-pagination {
        overflow: visible;
    }

    .mud-table .mud-table-pagination-toolbar {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        grid-template-areas:
            "info actions"
            "size size";
        align-items: center;
        height: auto;
        min-height: 0;
        column-gap: 8px;
        row-gap: 2px;
        padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 0px));
        padding-inline: 12px;
        padding-block: 8px calc(8px + env(safe-area-inset-bottom, 0px));
    }

    .mud-table .mud-table-pagination-toolbar .mud-table-pagination-spacer {
        display: none;
    }

    .mud-table .mud-table-pagination-toolbar .mud-table-pagination-display {
        grid-area: size;
        min-width: 0;
    }

    .mud-table .mud-table-pagination-toolbar > .mud-table-pagination-caption {
        grid-area: info;
        padding-left: 4px;
        padding-right: 4px;
        min-width: 0;
    }

    .mud-table .mud-table-pagination-toolbar .mud-table-pagination-actions {
        grid-area: actions;
        margin: 0;
        margin-inline: 0;
    }

    .mud-table .mud-table-pagination-toolbar .mud-table-pagination-actions .mud-icon-button {
        width: 44px;
        height: 44px;
    }
}

/* Karanlık iskelet nabzı. MudBlazor 9.4 opacity'yi 0.4'e indirir.
   Dururken iskelet #6A7380: yüzey #1A2230 ≈ 3.3:1, sayfa #0E141C ≈ 3.9:1.
   %40 opaklıkta aynı renk yüzeyde ≈ 1.6:1, sayfada ≈ 1.6:1 (eşik 3:1).
   Ana sayfa özeti ve aktivite listesi varsayılan nabızla bunu kullanır.
   Opaklık 1 kalır; ara renk ikincil metin #9AA9B8: yüzey ≈ 6.7:1, sayfa ≈ 7.7:1.
   Açık temada solma durur. html.crm-dark diyalog kapısını da kapsar. */
html.crm-dark .mud-skeleton-pulse {
    animation-name: crm-skeleton-pulse-dark;
}

@keyframes crm-skeleton-pulse-dark {
    0%,
    100% {
        background-color: var(--mud-palette-skeleton);
    }

    50% {
        background-color: var(--mud-palette-text-secondary);
    }
}

/* Başlık kişiselleştirme: çift tık. Tekil kalem ve sıfırlama yok. */
.crm-nav {
    min-height: 100%;
}

.crm-nav-reset {
    margin-top: 12px;
    padding: 8px 8px 16px;
}

.crm-nav-reset .mud-button-root {
    width: 100%;
    justify-content: flex-start;
    text-align: left;
    white-space: normal;
    line-height: 1.3;
    min-height: 44px;
}

.crm-nav-entry {
    display: flex;
    align-items: center;
    width: 100%;
}

.crm-quote-create .mud-dialog-title {
    padding: 10px 16px 0;
}

.crm-quote-create .mud-dialog-content {
    max-height: min(70dvh, 40rem);
    overflow: auto;
    padding-top: 8px;
}

.crm-quote-create .mud-input-control,
.crm-account-create .mud-input-control {
    min-width: 0;
    width: 100%;
}

/* Sekme değişince diyalog zıplamasın: içerik yüksekliği sabit, panel içinde kayar. */
.crm-cari-dialog.mud-dialog {
    display: flex;
    flex-direction: column;
}

.crm-cari-dialog .mud-dialog-content {
    height: min(68dvh, 40rem);
    min-height: min(68dvh, 40rem);
    max-height: min(78dvh, 46rem);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.crm-cari-dialog .crm-cari-dialog-form,
.crm-cari-dialog .mud-tabs {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.crm-cari-dialog .mud-tabs-panels {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

.crm-cari-dialog .mud-dialog-actions {
    border-top: 1px solid var(--mud-palette-divider);
    padding: 12px 16px;
}

/* Sekme etiketleri sabit genişlikte ortalanmasın; alan sütunuyla soldan hizalansın. */
.crm-cari-dialog .crm-cari-tabs .mud-tabs-tabbar-wrapper {
    justify-content: flex-start;
}

.crm-cari-dialog .crm-cari-tabs .mud-tab {
    flex: 0 0 auto;
    width: auto;
    min-width: max-content !important;
    max-width: none;
    justify-content: flex-start;
    text-align: start;
    white-space: nowrap;
    padding-inline-start: 0;
    padding-inline-end: 16px;
}

.crm-ellipsis {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

.crm-home-summary-card .crm-home-quote {
    display: flex;
    width: 100%;
    min-width: 0;
}

.crm-home-summary-card {
    display: flex;
    flex-direction: column;
}

.crm-nav-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.mud-drawer:not(.mud-drawer-open) .crm-nav-reset-label {
    display: none;
}

.mud-drawer:not(.mud-drawer-open) .crm-nav-reset-btn {
    min-width: 44px;
    width: 44px;
    padding-inline: 0;
    justify-content: center;
}

@media (max-width: 600px) {
    .crm-quote-create.mud-dialog {
        max-width: calc(100vw - 16px) !important;
        margin: 8px;
    }

    .crm-quote-create .mud-dialog-title,
    .crm-cari-dialog .mud-dialog-title {
        font-size: 1rem;
        padding-bottom: 0;
    }

    /* xs: diyalog ve örtü görünen alanı kaplasın; liste alttan açık kalmasın. */
    html:has(.crm-cari-dialog),
    body:has(.crm-cari-dialog) {
        overflow: hidden;
    }

    .mud-dialog-container:has(.crm-cari-dialog) {
        position: fixed;
        inset: 0;
        width: 100vw;
        height: 100dvh;
        max-height: 100dvh;
        padding: 0;
        align-items: stretch;
        justify-content: stretch;
    }

    body:has(.crm-cari-dialog) .mud-overlay.mud-overlay-dialog {
        position: fixed;
        inset: 0;
        width: 100vw;
        height: 100dvh;
        min-height: 100dvh;
    }

    .crm-cari-dialog.mud-dialog {
        width: 100vw !important;
        max-width: 100vw !important;
        height: 100dvh !important;
        max-height: 100dvh !important;
        margin: 0 !important;
        border-radius: 0;
    }

    .crm-cari-dialog .mud-dialog-content {
        height: auto;
        min-height: 0;
        max-height: none;
        flex: 1 1 auto;
    }

    .crm-cari-dialog .crm-cari-tabs .mud-tooltip-root {
        width: auto;
        max-width: none;
        flex: 0 0 auto;
    }
}

/* Satır girişi: Tür | arama (kalan) | Marka | Miktar | Fiyat | İsk % | Satır ekle.
   Hepsi 40px. Yardımcı metin masaüstünde kutuyu aşağı itmez. */
.crm-quote-line-entry {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr) minmax(6rem, 8.5rem) 5rem 6.5rem 4.25rem max-content;
    gap: 8px;
    align-items: start;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    padding-bottom: 22px;
}

.crm-quote-line-entry-kind {
    min-width: 0;
}

.crm-quote-line-kind-toggle.mud-toggle-group {
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    align-items: stretch;
}

.crm-quote-line-kind-toggle .mud-toggle-item.mud-button-root {
    height: 40px;
    min-height: 40px;
    max-height: 40px;
    margin: 0;
    padding: 0 10px;
    text-transform: none;
    letter-spacing: 0;
    font-size: 0.8125rem;
    line-height: 1;
}

.crm-quote-line-entry-pick {
    display: flex;
    align-items: flex-start;
    gap: 0;
    min-width: 0;
    max-width: 100%;
}

.crm-quote-line-entry-picker {
    flex: 1 1 auto;
    min-width: 0;
}

/* «Yeni stok oluştur» arama çerçevesinin içinde, sağ uç süsü. */
.crm-picker--with-create {
    position: relative;
}

.crm-picker-create-anchor {
    position: absolute;
    top: 4px;
    right: 4px;
    z-index: 2;
    display: flex;
    line-height: 0;
}

.crm-picker-create-anchor .mud-tooltip-root {
    display: flex;
}

.crm-picker-create.mud-icon-button {
    width: 32px;
    height: 32px;
    min-width: 32px;
    margin: 0;
    padding: 4px;
}

.crm-picker--with-create input.mud-input-root {
    padding-inline-end: 40px;
}

.crm-picker--with-create .mud-input-clear-button {
    margin-inline-end: 32px;
}

.crm-quote-line-entry-field {
    min-width: 0;
    max-width: 100%;
}

.crm-quote-line-entry .mud-input-control {
    position: relative;
    width: 100%;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.crm-quote-line-entry .mud-input-outlined.mud-input-margin-dense,
.crm-quote-line-entry .mud-input.mud-input-outlined {
    min-height: 40px;
}

.crm-quote-line-entry .mud-input-control-helper-container {
    position: absolute;
    left: 0;
    right: 0;
    top: 100%;
    margin: 0;
    min-height: 0;
    pointer-events: none;
}

.crm-quote-line-entry .mud-input-helper-text {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin: 0;
    line-height: 1.2;
}

.crm-quote-line-entry-add {
    align-self: start;
    min-width: 0;
}

.crm-quote-line-entry-add-btn.mud-button-root {
    height: 40px;
    min-height: 40px;
    padding-top: 0;
    padding-bottom: 0;
    margin: 0;
}

@media (max-width: 599px) {
    .crm-quote-line-entry {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
        padding-bottom: 0;
        row-gap: 10px;
    }

    .crm-quote-line-entry-kind,
    .crm-quote-line-entry-pick,
    .crm-quote-line-entry-brand,
    .crm-quote-line-entry-add {
        grid-column: 1 / -1;
    }

    .crm-quote-line-entry-kind {
        justify-self: start;
    }

    .crm-quote-line-entry-add-btn.mud-button-root {
        width: 100%;
    }

    /* Yardımcı metin akışta kalsın; Miktar/Fiyat etiketinin üstüne binmesin. */
    .crm-quote-line-entry .mud-input-control-helper-container {
        position: static;
        min-height: 0;
        margin-top: 2px;
        pointer-events: none;
    }

    .crm-quote-line-entry .mud-input-helper-text {
        white-space: normal;
        overflow: visible;
        text-overflow: unset;
    }
}

.crm-quote-lines-table .crm-quote-line-kind.mud-chip {
    height: 22px;
    margin: 0;
    font-weight: 500;
    background-color: color-mix(in srgb, var(--mud-palette-secondary) 48%, var(--mud-palette-background));
    color: var(--mud-palette-text-primary);
}

.crm-quote-lines-table .crm-quote-line-kind--service.mud-chip {
    background-color: color-mix(in srgb, var(--mud-palette-primary) 16%, var(--mud-palette-background));
    color: var(--mud-palette-primary);
}

.crm-quote-line-desc {
    display: flex;
    flex-direction: column;
    min-width: 0;
    max-width: 100%;
}

.crm-quote-line-desc .mud-tooltip-root {
    display: block;
    min-width: 0;
    max-width: 100%;
}

.crm-quote-line-clip {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.crm-quote-line-note {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.crm-quote-line-disc {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.2;
    min-width: 0;
}

/* Masaüstü: tablo kart genişliğinde. Açıklama kalan yeri alır; Tutar ve sil görünür. */
@media (min-width: 961px) {
    .crm-quote-lines-table {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    .crm-quote-lines-table .mud-table-container {
        overflow-x: hidden;
        max-width: 100%;
    }

    .crm-quote-lines-table table {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        table-layout: fixed;
    }

    .mud-table.mud-table-dense.crm-quote-lines-table .mud-table-cell {
        padding: 4px;
        overflow: hidden;
        vertical-align: middle;
        font-size: 0.8125rem;
        min-width: 0;
        box-sizing: border-box;
    }

    .mud-table.mud-table-dense.crm-quote-lines-table .crm-col-actions {
        padding-left: 2px;
        padding-right: 2px;
    }

    .mud-table.mud-table-dense.crm-quote-lines-table .crm-row-actions {
        width: 100%;
        justify-content: flex-end;
        gap: 0;
    }

    .crm-quote-lines-table .mud-table-head .mud-table-cell {
        font-size: 0.75rem;
        white-space: nowrap;
    }

    .crm-quote-lines-table .crm-numeric {
        font-size: 0.75rem;
    }

    .crm-quote-lines-table .crm-col-no { width: 2.25rem; }
    .crm-quote-lines-table .crm-col-kind { width: 4.25rem; }
    .crm-quote-lines-table .crm-col-code { width: 5rem; }
    .crm-quote-lines-table .crm-col-brand { width: 6.5rem; }
    .crm-quote-lines-table .crm-col-qty { width: 4rem; }
    .crm-quote-lines-table .crm-col-unit { width: 2.75rem; }
    .crm-quote-lines-table .crm-col-price { width: 6.75rem; }
    .crm-quote-lines-table .crm-col-disc { width: 4rem; }
    .crm-quote-lines-table .crm-col-total { width: 6.75rem; }
    .crm-quote-lines-table .crm-col-actions { width: 4.25rem; }

    .crm-quote-lines-table .crm-col-disc {
        overflow: visible;
        white-space: normal;
    }

    .crm-quote-lines-table .crm-quote-line-kind.mud-chip {
        max-width: 100%;
        padding-inline: 6px;
        font-size: 0.75rem;
    }

    .crm-quote-lines-table .crm-row-actions {
        gap: 0;
    }

    .crm-quote-lines-table .crm-row-actions .mud-button-root.mud-icon-button {
        width: 28px;
        height: 28px;
        min-width: 28px;
        min-height: 28px;
    }

    /* Kaydet/vazgeç kolonu boşken yer kaplamasın; düzenlerken satırın sağında durur. */
    .crm-quote-lines-table .mud-table-row {
        position: relative;
    }

    .crm-quote-lines-table .mud-table-cell:last-child:not(.crm-col-actions) {
        width: 0;
        max-width: 0;
        padding: 0;
        border: 0;
        overflow: visible;
    }

    .crm-quote-lines-table .mud-table-cell:last-child:not(.crm-col-actions) > div {
        position: absolute;
        right: 2px;
        top: 50%;
        z-index: 2;
        transform: translateY(-50%);
        display: flex;
        gap: 0;
        background: var(--mud-palette-surface);
    }

    .crm-quote-lines-table .mud-input-control {
        width: 100%;
        min-width: 0;
    }
}

/* 960px altı kart satırı: değer kırpılmaz, tablo yatay kaymaz. */
@media (max-width: 960px) {
    .crm-quote-lines-table,
    .crm-quote-lines-table .mud-table-container,
    .crm-quote-lines-table table,
    .crm-quote-lines-table tbody,
    .crm-quote-lines-table .mud-table-body,
    .crm-quote-lines-table tr,
    .crm-quote-lines-table .mud-table-row {
        display: block;
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    .crm-quote-lines-table .mud-table-container {
        overflow-x: hidden;
    }

    .crm-quote-lines-table thead,
    .crm-quote-lines-table .mud-table-head {
        display: none;
    }

    .crm-quote-lines-table .mud-table-cell {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        gap: 8px;
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
        overflow: visible;
        white-space: normal;
    }

    .crm-quote-lines-table .mud-table-cell::before {
        flex: 0 0 auto;
        max-width: 42%;
    }

    .crm-quote-lines-table .mud-table-cell.crm-numeric {
        white-space: normal;
    }

    .crm-quote-lines-table .crm-quote-line-clip,
    .crm-quote-lines-table .crm-quote-line-desc,
    .crm-quote-lines-table .crm-quote-line-note,
    .crm-quote-lines-table .crm-quote-line-disc {
        flex: 1 1 auto;
        min-width: 0;
        max-width: none;
        white-space: normal;
        overflow: visible;
        text-overflow: unset;
        overflow-wrap: anywhere;
        text-align: end;
    }

    .crm-quote-lines-table .crm-quote-line-desc {
        align-items: flex-end;
    }

    .crm-quote-lines-table .crm-row-actions {
        flex: 1 1 auto;
        justify-content: flex-end;
        min-width: 0;
        white-space: normal;
        flex-wrap: wrap;
    }
}

.crm-nav-entry > .mud-nav-link {
    flex: 1 1 auto;
    min-width: 0;
}

.crm-nav-edit {
    padding: 4px 12px 8px;
}

.crm-editable-pen.mud-icon-button,
.crm-editable-reset.mud-icon-button {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    padding: 2px;
    opacity: 0.45;
}

.crm-nav-entry:hover .crm-editable-pen,
.crm-nav-entry:focus-within .crm-editable-pen,
.crm-editable-header:hover .crm-editable-pen,
.crm-editable-header:focus-within .crm-editable-pen,
.crm-editable-inline:hover .crm-editable-pen,
.crm-editable-inline:focus-within .crm-editable-pen,
.crm-nav-entry:hover .crm-editable-reset,
.crm-nav-entry:focus-within .crm-editable-reset,
.crm-editable-header:hover .crm-editable-reset,
.crm-editable-header:focus-within .crm-editable-reset,
.crm-editable-inline:hover .crm-editable-reset,
.crm-editable-inline:focus-within .crm-editable-reset {
    opacity: 1;
}

@media (hover: none) {
    .crm-editable-pen.mud-icon-button,
    .crm-editable-reset.mud-icon-button {
        opacity: 1;
    }
}

.crm-editable-input {
    min-width: 12rem;
}

.crm-label-settings-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 4px 0;
    border-bottom: 1px solid var(--mud-palette-divider);
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }

    .crm-nav .mud-nav-link,
    .mud-appbar .mud-button-root,
    .mud-appbar .mud-icon-button,
    .mud-drawer .mud-nav-link,
    .crm-login-shell,
    .crm-login-paper,
    .crm-page.crm-page--enter,
    .crm-detail-summary-bar,
    .crm-page-header,
    .crm-detail-summary-actions .mud-button-root,
    .crm-page-header-actions .mud-button-root,
    .crm-filter-bar .mud-input-control,
    .crm-filter-bar .mud-button-root,
    .crm-filter-bar .crm-filter-action,
    .crm-status-chip.mud-chip,
    .crm-dialog.mud-dialog,
    .mud-dialog.crm-dialog,
    .mud-table.mud-table-hover .mud-table-row,
    .mud-skeleton-pulse {
        transition: none !important;
        animation: none !important;
    }
}

/* Ortak yerleşim: 16px diyalog payı, başlık eylemleri sağda, 375px taşma yok. */
.mud-dialog-title {
    padding: 16px 16px 0 !important;
}

.mud-dialog-content {
    padding: 16px !important;
}

.mud-dialog-actions {
    padding: 8px 16px 16px !important;
    gap: 8px;
    align-items: center;
}

/* Metin «Vazgeç/Kapat» ile dolgu «Kaydet» aynı kutu ve satır tabanı. */
.mud-dialog-actions .mud-button-root {
    min-height: 36px;
    height: 36px;
    padding-top: 0;
    padding-bottom: 0;
    box-sizing: border-box;
}

.crm-detail-summary-actions {
    margin-left: auto;
    justify-content: flex-end;
}

.crm-page,
.mud-main-content {
    max-width: 100%;
    min-width: 0;
}

@media (max-width: 599.98px) {
    .mud-main-content {
        overflow-x: clip;
    }

    /* Sabit min-width (filtre, diyalog, kurulum formu) 375px şeridi sağa taşımasın. */
    .mud-main-content [style*="min-width"],
    .mud-dialog [style*="min-width"] {
        min-width: 0 !important;
        max-width: 100% !important;
    }

    .crm-report-filters > * {
        flex: 1 1 100%;
        max-width: 100%;
        min-width: 0 !important;
        width: 100% !important;
    }

    .crm-page-header-actions,
    .crm-detail-summary-actions {
        width: 100%;
        justify-content: flex-start;
    }
}

/* İçeriğe atla: odakta görünür. */
.crm-skip-link {
    position: absolute;
    left: 8px;
    top: 8px;
    z-index: 2000;
    padding: 8px 12px;
    background: #1B4F5C;
    color: #fff;
    text-decoration: none;
    transform: translateY(-150%);
}

.crm-skip-link:focus {
    transform: none;
}

.crm-th-line {
    display: flex;
    align-items: center;
    gap: 2px;
    min-width: 0;
}

.crm-th-sort,
.crm-th-hit {
    min-width: 0;
}

.crm-th-sort {
    cursor: pointer;
}

[aria-sort="ascending"] .crm-th-sort,
[aria-sort="descending"] .crm-th-sort {
    font-weight: 700;
}

/* Kesilen kod: tek satır, başlıkta tam metin. */
.crm-cell-code {
    white-space: nowrap;
    min-width: 7rem;
    max-width: 12rem;
    overflow: hidden;
    text-overflow: ellipsis;
    display: inline-block;
    vertical-align: bottom;
}

.crm-table-pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 12px;
}

/* Beyaz / #1B4F5C kontrastı 3:1 üstündedir. */
.crm-page-size {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #1B4F5C;
}

.crm-page-size-select {
    color: #fff;
    background: #1B4F5C;
    border: 1px solid #1B4F5C;
    min-height: 32px;
    padding: 4px 8px;
}

.crm-field-hint-row,
.crm-date-field,
.crm-picker-with-open {
    display: flex;
    align-items: flex-start;
    gap: 4px;
}

.crm-field-hint-row > :first-child,
.crm-date-field > :first-child,
.crm-picker-with-open > :first-child {
    flex: 1 1 auto;
    min-width: 0;
}

.crm-print-banner {
    display: none;
}

.crm-dialog-close {
    float: right;
}

@media print {
    .mud-appbar,
    .mud-drawer,
    .crm-page-header-actions,
    .crm-detail-summary-actions,
    .mud-table-pagination,
    .crm-table-pager,
    .crm-skip-link {
        display: none !important;
    }

    .mud-main-content,
    .crm-page {
        margin: 0 !important;
        padding: 0 !important;
        width: 100% !important;
        max-width: none !important;
    }

    .mud-table-container {
        overflow: visible !important;
    }

    table {
        width: 100% !important;
    }

    .crm-print-banner,
    h1 {
        display: block !important;
    }
}

@media (forced-colors: active) {
    .mud-chip,
    .crm-status-chip {
        border: 1px solid ButtonText;
        forced-color-adjust: none;
    }

    .mud-table-row.selected,
    .mud-table-row-selected,
    tr.mud-selected-item {
        outline: 2px solid Highlight;
        background: Highlight;
        color: HighlightText;
    }

    :focus-visible {
        outline: 2px solid Highlight !important;
        outline-offset: 2px;
    }

    .mud-button-root:disabled,
    .mud-icon-button:disabled,
    button:disabled {
        outline: 1px dashed GrayText;
        color: GrayText;
    }

    .mud-switch,
    .mud-switch-button {
        border: 1px solid ButtonText;
    }

    .mud-dialog {
        border: 2px solid ButtonText;
    }
}

/* PR-16: tek mobil dokunma kuralı (G58, G1/G9/G17/G21/G59/G62, 691, 734, 738).
   Sayfa sayfa sınıf eklenmez. Dense yüksekliği burada 44px'e çıkar. */
@media (max-width: 960px) {
    .mud-icon-button,
    .mud-button-root,
    .mud-chip,
    .mud-list-item,
    .mud-checkbox,
    .mud-input-slot,
    .crm-calendar-head,
    .crm-calendar-event,
    .crm-home-summary-card .mud-link,
    .crm-home-shortcuts .mud-button-root,
    .crm-task-check,
    .crm-item-card {
        min-height: 44px;
    }

    .mud-icon-button,
    .mud-checkbox,
    .crm-task-check,
    .crm-calendar-head {
        min-width: 44px;
    }

    .crm-calendar-head {
        display: flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
    }

    .crm-home-summary-card .mud-link {
        display: inline-flex;
        align-items: center;
    }

    .crm-task-desktop-only,
    .crm-accounts-table .mud-table-cell.crm-account-desktop-code {
        display: none !important;
    }

    .crm-account-tab-picker {
        display: block;
    }

    .crm-account-tabs .mud-tabs-header,
    .crm-account-tabs .mud-tabs-toolbar,
    .crm-account-tabs .mud-tabs-scroll-button {
        display: none;
    }

    .crm-item-table {
        display: none;
    }

    .crm-item-cards {
        display: flex;
        flex-direction: column;
        gap: 8px;
    }

    .crm-detail-summary-bar--sticky {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: calc(var(--mud-zindex-appbar, 1100) - 1);
        margin: 0;
        padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
        background: var(--mud-palette-surface);
        border-top: 1px solid var(--mud-palette-lines-default);
        box-shadow: var(--mud-elevation-4);
    }

    body:has(.crm-detail-summary-bar--sticky) .mud-main-content {
        padding-bottom: 5.5rem;
    }

    html,
    body,
    .mud-main-content {
        max-width: 100%;
        overflow-x: hidden;
    }
}

@media (min-width: 961px) {
    .crm-account-mobile-only,
    .crm-account-tab-picker,
    .crm-item-cards {
        display: none !important;
    }
}

/* Düşük yükseklik (yatay telefon) ve dar CSS genişliği (%200 yakınlaştırma):
   pencere tam ekran, Kaydet altta kalır, üst çubuk kısalır. */
@media (max-height: 500px), (max-width: 640px) {
    .mud-appbar.mud-appbar-fixed-top,
    .mud-appbar .mud-toolbar-appbar {
        --mud-appbar-height: 48px;
        height: 48px;
        min-height: 48px;
    }

    .mud-dialog-container {
        align-items: stretch;
    }

    .mud-dialog {
        display: flex;
        flex-direction: column;
        margin: 0;
        width: 100vw;
        max-width: 100vw !important;
        height: 100dvh;
        max-height: 100dvh;
        border-radius: 0;
    }

    .mud-dialog .mud-dialog-content {
        flex: 1 1 auto;
        max-height: none !important;
        overflow: auto;
    }

    .mud-dialog .mud-dialog-actions {
        position: sticky;
        bottom: 0;
        background: var(--mud-palette-surface);
        z-index: 1;
    }
}

.crm-item-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    width: 100%;
    text-align: left;
    padding: 12px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
    background: var(--mud-palette-surface);
    color: inherit;
    cursor: pointer;
}

.crm-item-card-code {
    font-weight: 600;
}

.crm-item-card-name {
    overflow-wrap: anywhere;
}

/* Kaydedilmemiş pencere: başlıktaki X yerine aynı köşede soran kapatma. */
.mud-dialog:has(.crm-dialog-guard) {
    position: relative;
}

.crm-dialog-guard-close {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 2;
}

/* Köşe bildirimi: sağ alt snackbar. Birden fazlası MudBlazor yığınıyla alt alta durur. */
.mud-snackbar.crm-toast {
    cursor: pointer;
    max-width: 22rem;
}

.crm-toast-title {
    font-weight: 600;
    line-height: 1.35;
}

.crm-toast-body {
    margin-top: 2px;
    font-size: 0.875rem;
    line-height: 1.35;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
