/* =============================================================================
   AceX sayfa katmanı — Enerji Yönetimi yüzeyleri
   -----------------------------------------------------------------------------
   Bu kurallar önceden 13 ayrı sayfa CSS'inde AYNEN tekrar ediyordu: bir başlık
   düzeltmesi 13 dosyada ayrı ayrı yapılmak zorundaydı ve dosyaların bir kısmı
   düzeltmeyi almadığı için sayfalar zamanla birbirinden ayrışıyordu. Artık tek yer.

   Küresel yüklendiği için ::deep gereksiz — o önek yalnızca izole CSS'in alt
   bileşenlere ulaşamaması yüzünden vardı.

   RENKLERE BİLİNÇLİ OLARAK DOKUNULMADI. Bu sayfalarda #0f172a hem metin hem
   koyu vitrin zemini olarak kullanılıyor; ikisini ayırt etmeden jetona bağlamak
   koyu temada okunmaz metin üretiyor. Renk geçişi ayrı ve elle yapılacak adım
   (bkz. DASHBOARD-PLAN.md → "F · Koyu tema"). Burada yalnızca tema riski
   taşımayan değerler ölçeğe bağlandı: yazı kalınlıkları ve pill yarıçapı.

   --energy-* adları sayfalarda kullanıldığı gibi KORUNDU; yalnızca aksan
   niteliğinde olanlar merkezdeki karşılığına bağlandı.
   ========================================================================== */

.energy-workspace-page,
.energy-polish-page {
    /* Aksanlar merkeze bağlı — beşi de yalnızca vurgu rengi olarak kullanılıyor. */
    --energy-muted:  var(--acex-text-muted);
    --energy-blue:   var(--acex-info);
    --energy-green:  var(--acex-success);
    --energy-amber:  var(--acex-warning);
    --energy-purple: var(--acex-mod-electricity);

    /* .spc-dot.danger bunu kullaniyor ama HIC TANIMLI DEGILDI: tanimsiz custom
       property bildirimi gecersiz kilar, yani SPC grafiginde kirmizi nokta hic
       boyanmiyordu. Yanindaki halka zaten --acex-error kullaniyor. */
    --energy-red:    var(--acex-error);

    /* --energy-slate'in kod tabanındaki BÜTÜN kullanımları color: idi (7 yer);
       yani metin rengi. Merkeze bağlandı — koyu temada kendiliğinden dönüyor. */
    --energy-slate: var(--acex-text);

    /* Enerji sayfalarının vitrin aksanı. Koyu hero paneli üzerinde durduğu için
       bilinçli olarak sabit: temayla dönmemesi gereken tek renk. */
    --energy-cyan:  #22d3ee;
}

.energy-hero {
    position: relative;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--energy-cyan) 22%, transparent);
    border-radius: 22px;
    color: var(--energy-hero-text);
    background:
        radial-gradient(circle at top left, rgba(34, 211, 238, .28), transparent 32rem),
        radial-gradient(circle at bottom right, rgba(34, 197, 94, .18), transparent 28rem),
        linear-gradient(135deg, var(--energy-hero-from) 0%, var(--energy-hero-mid) 58%, var(--energy-hero-to) 125%);
}

.energy-hero::after {
    content: "";
    position: absolute;
    inset: auto -8rem -10rem auto;
    width: 22rem;
    height: 22rem;
    border-radius: var(--acex-radius-pill);
    background: rgba(34, 211, 238, .13);
    filter: blur(2px);
}

.energy-hero-content {
    position: relative;
    z-index: 1;
}

.energy-kicker {
    color: var(--energy-cyan);
    letter-spacing: .18em;
    font-weight: var(--acex-weight-bold);
}

.energy-title {
    color: var(--energy-hero-text);
    font-weight: var(--acex-weight-bold);
}

.energy-subtitle {
    max-width: 58rem;
    color: color-mix(in srgb, var(--energy-hero-text) 78%, transparent);
}

.energy-stat-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.energy-stat-grid.compact {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.energy-stat-card, .energy-panel {
    border: 1px solid var(--acex-line);
    border-radius: 18px;
    background: linear-gradient(180deg, color-mix(in srgb, var(--acex-surface) 98%, transparent), color-mix(in srgb, var(--acex-sunken) 94%, transparent));
}

.energy-stat-card {
    box-shadow: var(--acex-shadow-3);
}

.energy-stat-card .mud-typography-overline {
    color: var(--energy-muted);
    font-weight: var(--acex-weight-bold);
    letter-spacing: .08em;
}

.energy-stat-card .mud-typography-h4 {
    color: var(--energy-slate);
    font-weight: var(--acex-weight-bold);
}

.energy-stat-card span {
    color: var(--energy-muted);
    font-size: .82rem;
}

.energy-panel {
    min-height: 100%;
    box-shadow: var(--acex-shadow-3);
}

.energy-table .mud-table-head th {
    color: var(--energy-muted);
    font-size: .76rem;
    font-weight: var(--acex-weight-bold);
    letter-spacing: .04em;
    text-transform: uppercase;
    background: color-mix(in srgb, var(--acex-text) 4%, transparent);
}

.energy-table .mud-table-row:hover {
    background: color-mix(in srgb, var(--energy-cyan) 6%, transparent);
}

.energy-pill {
    display: inline-flex;
    align-items: center;
    border-radius: var(--acex-radius-pill);
    padding: .18rem .55rem;
    font-size: .72rem;
    font-weight: var(--acex-weight-bold);
    white-space: nowrap;
}

.energy-pill.success {
    color: var(--acex-success);
    background: var(--acex-success-soft);
}

.energy-pill.danger {
    color: var(--acex-error);
    background: var(--acex-error-soft);
}

.regression-plot, .spc-plot {
    position: relative;
    min-height: 22rem;
    border: 1px solid var(--acex-line);
    border-radius: 18px;
    overflow: hidden;
    background:
        linear-gradient(color-mix(in srgb, var(--acex-text) 6%, transparent) 1px, transparent 1px),
        linear-gradient(90deg, color-mix(in srgb, var(--acex-text) 6%, transparent) 1px, transparent 1px),
        radial-gradient(circle at 20% 10%, rgba(34, 211, 238, .16), transparent 18rem),
        linear-gradient(180deg, var(--acex-sunken), color-mix(in srgb, var(--energy-blue) 8%, var(--acex-surface)));
    background-size: 100% 25%, 12.5% 100%, auto, auto;
}

.plot-dot, .spc-dot {
    position: absolute;
    width: .72rem;
    height: .72rem;
    margin: -.36rem 0 0 -.36rem;
    border: 2px solid var(--acex-surface);
    border-radius: var(--acex-radius-pill);
    background: var(--energy-cyan);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--energy-cyan) 18%, transparent), var(--acex-shadow-2);
}

.spc-dot.danger {
    background: var(--energy-red);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--acex-error) 18%, transparent), var(--acex-shadow-2);
}

.limit-line {
    position: absolute;
    left: 0;
    right: 0;
    border-top: 2px dashed color-mix(in srgb, var(--acex-text) 32%, transparent);
    color: var(--energy-slate);
    font-size: .7rem;
    font-weight: var(--acex-weight-bold);
    letter-spacing: .08em;
    padding-left: .7rem;
}

.limit-line.ucl, .limit-line.lcl {
    border-top-color: color-mix(in srgb, var(--acex-error) 55%, transparent);
    color: var(--acex-error);
}

.limit-line.mean {
    border-top-color: color-mix(in srgb, var(--acex-success) 65%, transparent);
    color: var(--acex-success);
}

.analysis-filter { position: sticky; top: 1rem; border-color: color-mix(in srgb, var(--energy-blue) 18%, transparent); background: linear-gradient(180deg, var(--acex-surface), var(--acex-sunken));
}

.analytics-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 1rem;
    align-items: start;
}

.analytics-layout .analysis-filter {
    min-height: 0;
    max-height: calc(100vh - 2rem);
    overflow-y: auto;
}

.workflow-shell { overflow:clip; border:1px solid var(--acex-line); border-radius:20px; background:var(--acex-surface); box-shadow:var(--acex-shadow-3);
}

.analysis-workspace { align-items: stretch;
}

.analysis-result-shell { min-height: 100%;
}

.workflow-tab-header { padding: .4rem .75rem 0; border-bottom: 1px solid var(--acex-line-soft);
}

.workflow-tab-panels { background: linear-gradient(180deg, color-mix(in srgb, var(--acex-sunken) 55%, transparent), color-mix(in srgb, var(--acex-surface) 96%, transparent));
}

.energy-section-head .mud-typography-h6 { font-weight: var(--acex-weight-bold);
}

.analysis-chip-row { display:flex; flex-wrap:wrap; gap:.5rem;
}

.analysis-context-card { border:1px solid color-mix(in srgb, var(--energy-blue) 16%, transparent); border-radius:16px; background:linear-gradient(135deg, color-mix(in srgb, var(--energy-blue) 7%, var(--acex-surface)), color-mix(in srgb, var(--acex-sunken) 98%, transparent));
}

.analysis-context-card .mud-typography-overline { color: var(--energy-muted); font-weight: var(--acex-weight-bold); letter-spacing: .08em;
}

.filter-step { position: relative; padding-left: 2.6rem; margin-bottom: 1rem;
}

.filter-step-number { position:absolute; left:0; top:.6rem; width:1.75rem; height:1.75rem; border-radius:999px; display:grid; place-items:center; font-size:.78rem; font-weight:800; color:var(--acex-text); background:color-mix(in srgb, var(--energy-cyan) 18%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--energy-cyan) 28%, transparent);
}

.workflow-empty-state { min-height: 16rem; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.65rem; text-align:center; border:1px dashed var(--acex-line-strong); border-radius:18px; padding:2rem; background:linear-gradient(180deg, color-mix(in srgb, var(--acex-sunken) 90%, transparent), color-mix(in srgb, var(--acex-surface) 98%, transparent));
}

.workflow-empty-state.compact-empty { min-height: 20rem;
}

.polish-hero {
    position: relative;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--energy-cyan) 22%, transparent);
    border-radius: 24px;
    color: var(--energy-hero-text);
    box-shadow: var(--acex-shadow-4);
}

.polish-hero::after {
    content: "";
    position: absolute;
    inset: auto -8rem -10rem auto;
    width: 22rem;
    height: 22rem;
    border-radius: var(--acex-radius-pill);
    background: rgba(255, 255, 255, .12);
}

.polish-hero-content {
    position: relative;
    z-index: 1;
}

.subscriber-hero, .vehicle-hero {
    background: radial-gradient(circle at top left, rgba(34, 211, 238, .30), transparent 32rem), radial-gradient(circle at bottom right, rgba(34, 197, 94, .20), transparent 28rem), linear-gradient(135deg, var(--energy-hero-from) 0%, var(--energy-hero-mid) 56%, var(--energy-hero-to) 128%);
}

.carbon-hero {
    background: radial-gradient(circle at top left, rgba(34, 197, 94, .34), transparent 30rem), radial-gradient(circle at bottom right, rgba(14, 165, 233, .20), transparent 28rem), linear-gradient(135deg, #052e16 0%, #14532d 52%, var(--energy-hero-from) 125%);
}

.polish-kicker {
    color: var(--energy-cyan);
    letter-spacing: .18em;
    font-weight: var(--acex-weight-bold);
}

.polish-title {
    color: var(--energy-hero-text);
    font-weight: var(--acex-weight-bold);
}

.polish-subtitle {
    max-width: 62rem;
    color: color-mix(in srgb, var(--energy-hero-text) 80%, transparent);
}

.polish-stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

.polish-stat-card, .polish-panel {
    border: 1px solid var(--acex-line);
    border-radius: 18px;
    background: linear-gradient(180deg, color-mix(in srgb, var(--acex-surface) 98%, transparent), color-mix(in srgb, var(--acex-sunken) 94%, transparent));
    box-shadow: var(--acex-shadow-3);
}

.polish-stat-card {
    position: relative;
    overflow: hidden;
}

.polish-stat-card::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: .28rem;
    background: var(--energy-blue);
}

.polish-stat-card.accent-green::before { background: var(--energy-green);
}

.polish-stat-card.accent-blue::before { background: var(--energy-blue);
}

.polish-stat-card.accent-amber::before { background: var(--energy-amber);
}

.polish-stat-card.accent-purple::before { background: var(--energy-purple);
}

.polish-stat-card .mud-typography-overline {
    color: var(--energy-muted);
    font-weight: var(--acex-weight-bold);
    letter-spacing: .08em;
}

.polish-stat-card .mud-typography-h4 {
    color: var(--energy-slate);
    font-weight: var(--acex-weight-bold);
}

.polish-stat-card span {
    color: var(--energy-muted);
    font-size: .82rem;
}

.polish-panel {
    min-height: 100%;
}

.emission-showcase {
    background: radial-gradient(circle at top right, rgba(34, 197, 94, .15), transparent 20rem), linear-gradient(180deg, var(--acex-surface), var(--acex-sunken));
}

.emission-bar {
    height: .65rem;
    overflow: hidden;
    border-radius: var(--acex-radius-pill);
    background: var(--acex-line);
}

.emission-bar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #22c55e, #14b8a6, #38bdf8);
}

/* ---------------------------------------------------------------------------
   Duyarlılık — bu kurallar da 13 sayfada ayrı ayrı yazılıydı.
   Kanonik kırılım: 960px (tablet). acex-tokens.css → --acex-bp-md
   -------------------------------------------------------------------------- */

@media (max-width: 960px) {
    .filter-step { padding-left: 2.2rem; }
    .workflow-tab-header { padding: .25rem .4rem 0; }
}

@media (max-width: 1280px) {
    .polish-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
    .polish-hero-content { align-items: flex-start !important; flex-direction: column !important; }
    .polish-stat-grid { grid-template-columns: 1fr; }
}


/* ---------------------------------------------------------------------------
   AceXCheckMenu (Menus/) — onaylı seçenek menüsü. Satırlar MudMenuItem/MudDivider
   köküdür (izole CSS'in kapsam niteliğini almaz), bu yüzden burada küresel.
   -------------------------------------------------------------------------- */

.acex-check-option.is-selected { font-weight: var(--acex-weight-semibold); }
.acex-check-option.is-selected .mud-icon-root { color: var(--acex-brand); }
.acex-check-menu-sep { margin: 4px 0 !important; }

/* ---------------------------------------------------------------------------
   Ana sayfa tam ekran kart diyaloğu (HomeDashboardMaximizeDialog): MudDialog kökü
   izole CSS'in kapsam niteliğini almadığı için burada küresel. Kart içeriği
   boydan boya doldurur; kenar boşluğu diyalogda.
   -------------------------------------------------------------------------- */

/* Pano jetonları (--acex-dash-*): HomeDashboardWorkspace.razor.css'ten taşındı (küresel; pano
   dışında çizilen bir kart da aynı adları alabilsin). Kart ve ayar paneli bu adları kullanır.
   Yeni bir değer gerekiyorsa acex-tokens.css'e eklenir, buraya yalnızca bağ yazılır. */
.home-dashboard {
    /* --- yüzeyler ve nötrler --- */
    --acex-dash-canvas: var(--acex-canvas);
    --acex-dash-surface: var(--acex-surface);
    --acex-dash-surface-raised: var(--acex-raised);
    --acex-dash-surface-sunk: var(--acex-sunken);
    --acex-dash-line: var(--acex-line);
    --acex-dash-line-strong: var(--acex-line-strong);

    --acex-dash-text: var(--acex-text);
    --acex-dash-text-muted: var(--acex-text-muted);
    --acex-dash-text-faint: var(--acex-text-faint);

    /* --- marka --- */
    --acex-dash-brand: var(--acex-brand);
    --acex-dash-brand-quiet: color-mix(in srgb, var(--acex-brand) 72%, var(--acex-surface));
    --acex-dash-brand-wash: var(--acex-brand-soft);

    /* --- modül kimliği: merkezdeki tanıma bağlı --- */
    --acex-dash-mod-electricity: var(--acex-mod-electricity);
    --acex-dash-mod-gas: var(--acex-mod-gas);
    --acex-dash-mod-water: var(--acex-mod-water);
    --acex-dash-mod-abys: var(--acex-mod-abys);
    --acex-dash-mod-setups: var(--acex-mod-setups);

    /* --- durum renkleri: aksandan ayrı, yalnızca durum bildirir --- */
    --acex-dash-good: var(--acex-success);
    --acex-dash-warn: var(--acex-warning);
    --acex-dash-crit: var(--acex-error);
    --acex-dash-good-wash: var(--acex-success-soft);
    --acex-dash-warn-wash: var(--acex-warning-soft);
    --acex-dash-crit-wash: var(--acex-error-soft);

    /* --- geometri --- */
    --acex-dash-gap: var(--acex-gap);
    --acex-dash-radius: var(--acex-radius-lg);
    --acex-dash-radius-sm: var(--acex-radius-sm);
    --acex-dash-pad: var(--acex-pad-card);

    /* Panoya gerçekten özel olan iki ölçü. Satır yüksekliği C# tarafındaki
       RowSpan hesabıyla aynı olmak zorunda, o yüzden merkeze taşınmıyor. */
    --acex-dash-row: 124px;
    --acex-dash-stripe: 3px;

    /* --- tipografi: ölçekten --- */
    --acex-dash-label-track: var(--acex-tracking-wide);
    --acex-dash-label-size: var(--acex-text-2xs);
}

/* ===== Uygulama ici yardim (Components/Help) — kuresel kurallar =====
   MudDrawer koku ve MudIconButton izole CSS kapsam ozniteligi almaz; bu yuzden burada. */
.acex-help-drawer.mud-drawer {
    max-width: 100vw;
}

.acex-help-button.acex-help-button-active {
    color: var(--mud-palette-primary);
    background: var(--mud-palette-primary-hover);
}

/* Alan yani "?" ipucu: etiketle ayni satirda, metinden bir tik soluk. */
.acex-field-help {
    vertical-align: middle;
    margin-left: 2px;
    color: var(--mud-palette-text-secondary);
}

.acex-field-help.mud-icon-button {
    padding: 2px;
}

.acex-field-help-static {
    display: inline-flex;
    align-items: center;
    cursor: help;
    outline: none;
}

.acex-field-help-static:focus-visible {
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--mud-palette-primary-hover);
}


/* =============================================================================
   Dokunmatik katman — telefon (<= 600px)
   -----------------------------------------------------------------------------
   Ayri bir mobil arayuz YOK: AceX.Apps.Maui.Shell ayni Blazor sayfalarini bir
   WebView icinde gosteriyor, yani masaustu icin tasarlanmis butun ekranlar
   parmakla kullaniliyor. Denetimde olculen durum: 438 ikon dugmenin 134'u
   Size.Small (~30px) ve bunu telafi eden tek bir kural yoktu.

   iOS ve Android kilavuzlarinin ikisi de dokunmatik hedef icin en az 44px
   istiyor. Burasi o esigi UYGULAMA GENELINDE saglayan tek yer; sayfalarin
   kendi olculerine dokunulmuyor, yalnizca telefonda taban yukseklik veriliyor.

   Masaustunde hicbir sey degismez: kurallarin tamami media sorgusunun icinde.
   ========================================================================== */

@media (max-width: 600px) {

    /* Ikon dugmeler. Gorsel boyut (ikon) ayni kalir; buyuyen yalnizca dokunulabilir
       alan. Tablo icindeki satir aksiyonlari da buna dahil. */
    .mud-icon-button,
    .mud-button-root.mud-icon-button {
        min-width: 44px;
        min-height: 44px;
    }

    /* Metinli dugmeler. */
    .mud-button-root:not(.mud-icon-button) {
        min-height: 44px;
    }

    /* Yogun (Dense) form alanlari telefonda dokunmasi zor kaliyordu. */
    .mud-input-control .mud-input-slot{
        min-height: 32px;
    }
    .mud-select .mud-input-slot {
        min-height: 32px;
    }

    /* Onay kutusu / radyo: etiketiyle birlikte tek bir dokunma hedefi olsun. */
    .mud-checkbox .mud-button-root,
    .mud-radio .mud-button-root {
        min-width: 44px;
        min-height: 44px;
    }

    /* Tablo satir aksiyon hucresi 100px'e sabitlenmisti; icine 4-5 ikon giren
       ekranlar (Manuel Istekler, Yazma Istekleri) tasiyordu. Telefonda kart
       gorunumune dusuldugu icin sabit genislik zaten anlamsiz. */
    .acex-table-action-cell {
        width: auto !important;
        min-width: 0 !important;
    }

    /* ---- Diyaloglar: telefonda tam ekran --------------------------------------
       Uygulamadaki hicbir DialogOptions FullScreen kullanmiyordu ve FullScreen
       MudBlazor'da kirilima duyarli degil (bool). 20 alanli Kalorifik Deger
       diyalogu gibi ekranlar telefonda dar bir kutuya sikisiyor, Kaydet dugmesi
       de en altta kaliyordu. Bunu her cagri noktasinda ayri ayri ayarlamak
       yerine tek kural: telefonda diyalog ekrani kaplar, icerik kendi icinde
       kayar, eylemler altta sabit durur. */
    .mud-dialog-container .mud-dialog {
        margin: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        height: 100% !important;
        max-height: 100% !important;
        border-radius: 0 !important;
        display: flex;
        flex-direction: column;
    }

    .mud-dialog-container .mud-dialog > .mud-dialog-content {
        flex: 1 1 auto;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    /* Eylemler her zaman erisilebilir: 20 alan kaydirmadan Kaydet'e ulasilir.
       Guvenli alan (centik/ev cubugu) hesaba katiliyor. */
    .mud-dialog-container .mud-dialog > .mud-dialog-actions {
        position: sticky;
        bottom: 0;
        flex: 0 0 auto;
        gap: 8px;
        background-color: var(--mud-palette-surface);
        border-top: 1px solid var(--mud-palette-lines-default);
        padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px));
    }

    .mud-dialog-container .mud-dialog > .mud-dialog-actions .mud-button-root {
        flex: 1 1 auto;
    }
}


/* =============================================================================
   Kart gorunumu ve ust bar — telefon (< 600px)
   -----------------------------------------------------------------------------
   EntityTable telefonda MudBlazor'un kart gorunumune duser (MobileBreakpoint = Sm).
   Orada tablo mantigi devam ediyordu: colgroup genislikleri, sabit kolon olculeri ve
   etiket/deger hizalamasi kartin icini daraltip sagda genis bir bosluk birakiyordu.
   Asagidaki kurallar SADECE kart gorunumunde (< 600px) gecerli; masaustu tablo
   duzenine hic dokunulmuyor.
   ========================================================================== */

@media (max-width: 599.95px) {

    /* --- Ust bar: sayfa adi tek satir, tasarsa uc nokta -----------------------
       Ekmek kirintisi telefonda yalnizca sayfa adini yaziyor (bkz.
       BreadCrumbComponent), ama uzun adlar yine de sarmasin. */
    .acex-appbar .acex-breadcrumb-compact {
        min-width: 0;
        flex: 1 1 auto;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
        font-weight: 600;
    }

    /* --- Kart gorunumu -------------------------------------------------------
       Tablo olculeri kart icinde anlamsiz: colgroup 30px'lik sistem kolonlarini ve
       uzun metin kolonlarinin 180px'ini kartlara tasiyor, icerik dar bir seride
       sikisiyordu. */
    .acex-entity-table colgroup col {
        width: auto !important;
        min-width: 0 !important;
    }

    /* Her satir gercek bir kart: cercevesi var, bir sonrakinden ayriliyor.
       Eskiden kartlar cercevesizdi ve birbirine yapisik akiyordu. */
    .acex-entity-table .mud-table-body .mud-table-row {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        border: 1px solid var(--mud-palette-lines-default);
        border-radius: 6px;
        margin-bottom: 8px;
        padding: 4px 8px;
        background-color: var(--mud-palette-surface);
    }

    /* Alan satirlari tam genislik; etiket solda, deger sagda, aralarinda gercek
       bosluk. Uzun deger sarar, kirpilmaz. */
    .acex-entity-table .mud-table-body .mud-table-row > .mud-table-cell {
        flex: 1 1 100%;
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: 16px;
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
        overflow-wrap: anywhere;
    }

    /* Deger blogu sagda kalsin ama tasmasin. */
    .acex-entity-table .mud-table-body .mud-table-row > .mud-table-cell > * {
        min-width: 0;
        text-align: right;
    }

    /* Secim kutusu ve sira no kartin BASLIGI: tam satir kaplamasinlar, yan yana
       dursunlar. Eskiden ikisi de birer alan satiri gibi cikip kartin ustunde iki
       bos satir olusturuyordu. */
    .acex-entity-table .mud-table-body .mud-table-row > .mud-table-cell-check,
    .acex-entity-table .mud-table-body .mud-table-row > .acex-frozen-column {
        flex: 0 0 auto;
        justify-content: flex-start;
        gap: 4px;
        padding: 0 4px;
        border: 0;
        font-weight: 600;
        color: var(--mud-palette-text-secondary);
    }

    /* Bu ikisinin etiketi ("SN" gibi) kart basliginda gurultu. */
    .acex-entity-table .mud-table-body .mud-table-row > .mud-table-cell-check::before,
    .acex-entity-table .mud-table-body .mud-table-row > .acex-frozen-column::before {
        content: none !important;
    }

    /* Degeri bos olan alan kart gorunumunde satir kaplamasin: uzun kayitlarda yarim
       ekran bos etiketle doluyordu. Isaret C# tarafindan konuyor (EntityTable.
       DataCellClass -> IsEmptyDisplayValue); CSS bir hucrenin bos olup olmadigini
       bilemez. TABLO gorunumunde gizlenmez: orada kolon hizasi bozulurdu. */
    .acex-entity-table .mud-table-body .mud-table-row > .acex-cell-empty {
        display: none;
    }

    /* Islemler kartin alt seridi: tam genislik, saga yaslanmis, ustunde ayrac. */
    .acex-entity-table .mud-table-body .mud-table-row > .acex-table-action-cell {
        flex: 1 1 100%;
        justify-content: flex-end;
        gap: 4px;
        margin-top: 4px;
        padding-top: 4px;
        border-top: 1px solid var(--mud-palette-lines-default);
    }

    .acex-entity-table .mud-table-body .mud-table-row > .acex-table-action-cell::before {
        content: none !important;
    }

    /* Etiketler ikincil, degerler birincil: bir bakista deger okunur. */
    .acex-entity-table .mud-table-body .mud-table-row > .mud-table-cell::before {
        color: var(--mud-palette-text-secondary);
        font-weight: 500;
        flex: 0 0 auto;
    }
}

/* ============================================================
   FILTRE DUGME SATIRI
   EntityTable'in kendi <style> blogundan BURAYA tasindi. Sebep: o blok yalnizca
   bir EntityTable cizildiginde DOM'a giriyordu; tablosu olmayan sayfalar
   (OSF07 gibi salt disa aktarim raporlari) ayni arama panelini kullanamiyordu.
   Global olunca AceXFilterPanel de birebir ayni gorunumu aliyor.

   Sol grup : liste islemleri (Yenile, Kolonlar, Disa Aktar, sayfaya ozel eylemler)
   Sag grup : YALNIZCA filtre eylemleri (Uygula / Temizle)
   ============================================================ */
.acex-filter-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    width: 100%;
}

.acex-filter-actions__start,
.acex-filter-actions__end {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
}

.acex-filter-actions__start {
    flex: 1 1 auto;
    min-width: 0;
}

/* fieldset'in varsayilan cercevesi/dolgusu satiri bozuyor; sifirlaniyor.
   margin-left:auto sayesinde sag grup kendi satirina dusse bile saga yapisiyor. */
.acex-filter-actions__end {
    margin: 0 0 0 auto;
    padding: 0;
    border: 0;
    min-width: 0;
    justify-content: flex-end;
}

/* Liste yuklenirken dugmeler GORSEL OLARAK da kapali gorunsun: fieldset tiklamayi
   engelliyor ama MudBlazor'un kendi "disabled" bicimi devreye girmiyor. */
.acex-filter-actions__end[disabled] .mud-button-root {
    opacity: .45;
    cursor: not-allowed;
}
