html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

a, .btn-link {
    color: #006bb7;
}

.btn-primary {
    color: #fff;
    background-color: #1b6ec2;
    border-color: #1861ac;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

.content {
    padding-top: 1.1rem;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

/* SalesFleet — KPI brojevi na karticama (Inter, tabular cifre).
   Cormorant Garamond je dekorativni serif za naslove/brand, NE za brojeve.
   Pravilo: ako element prikazuje cifru (iznos, broj, %), koristi .sf-kpi-num. */
.sf-kpi-num {
    font-family: 'Inter', 'Segoe UI', sans-serif !important;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
    line-height: 1.15;
    color: #3A2618; /* bordo brand text */
}
.sf-kpi-num small {
    font-size: 0.55em;
    font-weight: 500;
    color: #6b6b6b;
    margin-left: 0.2em;
}

/* SalesFleet — dug kupca pred posetu (DugBadge.razor). Boja dolazi inline po kašnjenju. */
.sf-dug-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    color: #fff;
    font-family: 'Inter', 'Segoe UI', sans-serif;
    font-size: 12px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: .2px;
    white-space: nowrap;
}
.sf-dug-badge-sm { padding: 1px 8px; font-size: 11px; }
.sf-dug-click { cursor: pointer; }
.sf-dug-banner {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid;
    border-left-width: 4px;
    border-radius: 4px;
    font-weight: 600;
    font-size: 14px;
    font-variant-numeric: tabular-nums;
}
.sf-dug-banner[role=button] { cursor: pointer; }
/* Cilj skoka sa badge-a — ostavi mesta za fiksnu gornju traku. */
#sf-dugovanja { scroll-margin-top: 64px; }

/* SalesFleet — prodaja po kupcu (ProdajaPoKupcuCard + /prodaja-po-kupcu). */
.sf-ppk-periodi { display: flex; flex-wrap: wrap; gap: 4px; }
.sf-ppk-periodi .mud-chip { margin: 0; }
.sf-ppk-ukupno { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }
.sf-ppk-ukupno .sf-kpi-num { font-size: 22px; }
.sf-ppk-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}
.sf-ppk-row:last-child { border-bottom: none; }
.sf-ppk-click { cursor: pointer; }
.sf-ppk-click:hover .sf-ppk-naziv { color: var(--mud-palette-primary); }
.sf-ppk-rank {
    width: 22px; height: 22px;
    border-radius: 50%;
    background: var(--mud-palette-secondary);
    color: var(--mud-palette-secondary-text);
    display: flex; align-items: center; justify-content: center;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px; font-weight: 600;
    flex-shrink: 0;
}
.sf-ppk-naziv-wrap { flex: 1; min-width: 0; }
.sf-ppk-naziv { font-size: 13px; font-weight: 500; line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-ppk-meta { font-size: 11px; opacity: .65; }
.sf-ppk-iznos { font-size: 14px; white-space: nowrap; }

/* SalesFleet — mapa poslovnica oko mene (/poslovnice/mapa). */
.sf-outlet-map {
    height: 60vh;
    min-height: 320px;
    border-radius: 6px;
    border: 1px solid var(--mud-palette-lines-default);
    z-index: 0;
}
.sf-omap-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 6px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}
.sf-omap-row:last-of-type { border-bottom: none; }
.sf-omap-dist { width: 58px; flex-shrink: 0; font-size: 13px; text-align: right; }
.sf-omap-body { flex: 1; min-width: 0; cursor: pointer; }
.sf-omap-naziv { font-size: 14px; font-weight: 500; line-height: 1.2; }
.sf-omap-meta { font-size: 12px; opacity: .65; margin-top: 2px; }
.sf-omap-actions { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }
@media (max-width: 600px) {
    .sf-outlet-map { height: 50vh; min-height: 280px; }
    .sf-omap-dist { width: 46px; font-size: 12px; }
}

/* SalesFleet — inbox obaveštenja (/obavestenja). */
.sf-inbox-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
}
.sf-inbox-row:last-child { border-bottom: none; }
.sf-inbox-row:hover { background: var(--mud-palette-action-default-hover); }
.sf-inbox-dot { width: 8px; height: 8px; border-radius: 50%; margin-top: 7px; flex-shrink: 0; background: transparent; }
.sf-inbox-unread .sf-inbox-dot { background: var(--mud-palette-primary); }
.sf-inbox-icon { margin-top: 2px; opacity: .6; flex-shrink: 0; }
.sf-inbox-body { flex: 1; min-width: 0; }
.sf-inbox-title { font-size: 14px; font-weight: 500; line-height: 1.25; }
.sf-inbox-unread .sf-inbox-title { font-weight: 700; }
.sf-inbox-msg { font-size: 13px; opacity: .8; margin-top: 2px; white-space: pre-line; overflow-wrap: anywhere; }
.sf-inbox-time { font-family: 'JetBrains Mono', monospace; font-size: 11px; opacity: .55; margin-top: 4px; }
.sf-inbox-chevron { margin-top: 2px; opacity: .4; flex-shrink: 0; }

/* SalesFleet — kompaktni font za detail stranice (kupac, poslovnica). */
.sf-detail-compact { font-size: 13px; }
.sf-detail-compact .mud-typography-h3 { font-size: 1.5rem; line-height: 1.25; font-weight: 600; }
.sf-detail-compact .mud-typography-h6 { font-size: 0.95rem; font-weight: 600; }
.sf-detail-compact .mud-typography-body1 { font-size: 0.8125rem; }
.sf-detail-compact .mud-typography-body2 { font-size: 0.78rem; }
.sf-detail-compact .sf-eyebrow { font-size: 10px; }
.sf-detail-compact .def-label { font-size: 11px; flex: 0 0 130px; }
.sf-detail-compact .def-value { font-size: 12.5px; }
.sf-detail-compact .def-row { padding: 4px 0; }
.sf-detail-compact .mud-table-cell { font-size: 12.5px; padding: 6px 12px; }
.sf-detail-compact .mud-table-head .mud-table-cell { font-size: 11px; text-transform: uppercase; letter-spacing: .3px; }
.sf-detail-compact .mud-paper.pa-4 { padding: 14px !important; }
.sf-detail-compact .mud-chip { font-size: 11px; height: 22px; }

/* SalesFleet — file upload label trick: skrivamo native input, MudButton ostaje clickable. */
.sf-file-label { display: inline-block; cursor: pointer; }
.sf-file-label > input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
/* SalesFleet — mobilne kartice umesto tabele (liste dokumenata, otpremnica, poseta…).
   Tabela i kartice se smenjuju MudBlazor display klasama: tabela nosi "d-none d-md-block",
   kartice "d-md-none" (prelom je min-width:960px). Namerno NIJE MudHidden — on slusa
   resize preko JS-a, pa ima round-trip i ne valja tokom prerender-a; MudBlazor za ovaj
   slucaj i sam upucuje na display klase. */
.sf-mcards { display: flex; flex-direction: column; }

.sf-mcard {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 11px 14px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}
.sf-mcard:last-child { border-bottom: none; }
.sf-mcard:active { background-color: var(--mud-palette-action-default-hover); }

/* red 1 — mono meta levo (datum, broj), status i akcije desno */
.sf-mcard-top { display: flex; align-items: center; gap: 6px; min-height: 26px; }
.sf-mcard-meta {
    font-family: 'JetBrains Mono', ui-monospace, monospace;
    font-size: 11px;
    letter-spacing: .3px;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sf-mcard-actions { display: flex; align-items: center; gap: 4px; margin-left: auto; }

/* red 2 — nosilac reda (kupac); jedino polje kome dozvoljavamo prelom */
.sf-mcard-title {
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--mud-palette-text-primary);
}
/* red 3 — sporedni tekst (poslovnica, komercijalista), uvek u jednom redu */
.sf-mcard-sub {
    font-size: 12.5px;
    line-height: 1.35;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* red 4 — tip chip levo, iznos desno */
.sf-mcard-bottom { display: flex; align-items: center; gap: 8px; margin-top: 3px; }
.sf-mcard-amount { margin-left: auto; text-align: right; white-space: nowrap; }
/* .sf-kpi-num nosi Inter + tabular cifre (pravilo za sve brojeve), ali ima tvrdo
   zakucanu bordo boju koja u dark temi ne valja — ovde je vracamo na paletu. */
.sf-mcard-amount .sf-kpi-num { font-size: 15px; color: var(--mud-palette-text-primary); }
.sf-mcard-count { font-size: 11px; color: var(--mud-palette-text-secondary); }
.sf-mcard .mud-chip { margin: 0; }

/* ─────────────────────────────────────────────────────────────────────────────
   SalesFleet — kompaktni telefon (<960px, isto gde se tabele menjaju karticama).
   Stranice su pravljene za desktop: 24px padding, 24px razmak u gridu, filteri
   jedan ispod drugog, H1 od 44px i redovi dugmadi bez prelamanja — na 390px to
   pojede ekran ili izbaci dugmad desno van stranice. Desktop se ne dira.
   ───────────────────────────────────────────────────────────────────────────── */
@media (max-width: 959.98px) {
    /* Glavni sadržaj: 24px → 12px sa strane (MainLayout <div class="pa-6">). */
    .mud-main-content > .pa-6 { padding: 12px !important; }

    /* Naslovi stranica — Cormorant 44px lomi se u 2-3 reda. */
    .mud-main-content .mud-typography-h1 { font-size: 28px; line-height: 1.1; }
    .mud-main-content .mud-typography-h2 { font-size: 24px; line-height: 1.15; }
    .mud-main-content .mud-typography-h3 { font-size: 20px; line-height: 1.2; }
    .mud-main-content .sf-eyebrow { margin-bottom: 2px; }

    /* Grid razmak 24px → 8px (MudGrid Spacing=6 je podrazumevan). */
    .mud-main-content .mud-grid-spacing-xs-6 { margin: -8px 0 0 -8px; width: calc(100% + 8px); }
    .mud-main-content .mud-grid-spacing-xs-6 > .mud-grid-item { padding: 8px 0 0 8px; }
    .mud-main-content .mud-grid-spacing-xs-3,
    .mud-main-content .mud-grid-spacing-xs-4 { margin: -6px 0 0 -6px; width: calc(100% + 6px); }
    .mud-main-content .mud-grid-spacing-xs-3 > .mud-grid-item,
    .mud-main-content .mud-grid-spacing-xs-4 > .mud-grid-item { padding: 6px 0 0 6px; }

    /* Filteri koji su na tabletu pola širine (xs=12 sm=6) idu po dva u redu i na
       telefonu — ali samo padajuće liste i datumi. Tekst polja, pretraga (autocomplete)
       i blokovi sa sadržajem ostaju preko cele širine: u 165px se ne da kucati. */
    .mud-main-content .mud-grid-item-xs-12.mud-grid-item-sm-6:has(> .mud-select, > .mud-picker) {
        flex-basis: 50%; max-width: 50%; flex-grow: 0;
    }
    .mud-main-content .pa-3:has(> .mud-grid) { padding: 8px !important; }

    /* Redovi dugmadi / brzih filtera: prelamaju se umesto da izlaze van ekrana,
       a dugme se ne skuplja ispod širine svog teksta. */
    .mud-main-content .d-flex.flex-row,
    .mud-main-content .mud-toolbar { flex-wrap: wrap; row-gap: 6px; }
    .mud-main-content .mud-button-root { flex-shrink: 0; }
    .mud-main-content .mud-button-label { white-space: nowrap; }
    .mud-main-content .mud-button-group-root { flex-wrap: wrap; }
    /* Fiksni min-width na tekstu u redu (npr. "28.09 – 04.10.2026" sa 280px u Moj plan)
       gura sve ostalo u nove redove — na telefonu neka bude širok koliko mu treba. */
    .mud-main-content .d-flex.flex-row > .mud-typography[style*="min-width"] { min-width: 0 !important; }

    /* Polja nikad šira od ekrana (fiksne min-width vrednosti na izveštajima). */
    .mud-main-content .mud-input-control { min-width: 0 !important; max-width: 100%; }
}

/* ─────────────────────────────────────────────────────────────────────────────
   SalesFleet — tabele na telefonu (<600px) kao kartice.
   MudTable/MudDataGrid bez Breakpoint.None na telefonu slaže ćelije jednu ispod
   druge (klasa .mud-xs-table) — red od 8 kolona postane 8 redova po 40px. Ovde se
   isti taj red pretvara u karticu: naslovna ćelija (.sf-td-title) preko cele širine,
   ostale u mreži 2-3 kolone sa nazivom polja iznad vrednosti (data-label).
   Isto važi za obične <table class="sf-stack"> (stavke dokumenta/otpremnice).
   ───────────────────────────────────────────────────────────────────────────── */
@media (max-width: 600px) {
    .mud-xs-table .mud-table-body .mud-table-row,
    table.sf-stack > tbody > tr {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
        column-gap: 12px;
        row-gap: 6px;
        align-items: start;
        padding: 10px 14px;
        border-bottom: 1px solid var(--mud-palette-table-lines);
    }
    .mud-xs-table .mud-table-body .mud-table-row .mud-table-cell,
    .mud-xs-table.mud-table-dense .mud-table-body .mud-table-row .mud-table-cell,
    table.sf-stack > tbody > tr > td {
        display: block;
        min-width: 0 !important;
        padding: 0;
        border: none !important;
        font-size: 12.5px;
        line-height: 1.35;
        text-align: start !important;
        overflow-wrap: anywhere;
        white-space: normal !important;
        width: auto !important;
    }
    .mud-xs-table .mud-table-body .mud-table-cell:before,
    table.sf-stack > tbody > tr > td:before {
        content: attr(data-label);
        display: block;
        padding: 0;
        margin-bottom: 1px;
        overflow: hidden;
        text-overflow: ellipsis;
        font-family: 'JetBrains Mono', ui-monospace, monospace;
        font-size: 9.5px;
        font-weight: 500;
        letter-spacing: .5px;
        text-transform: uppercase;
        color: var(--mud-palette-text-secondary);
        white-space: nowrap;
    }
    /* naslov kartice */
    .mud-xs-table .mud-table-body .mud-table-cell.sf-td-title,
    table.sf-stack > tbody > tr > td.sf-td-title {
        grid-column: 1 / -1;
        order: -1;
        font-size: 14.5px;
        font-weight: 600;
    }
    .mud-xs-table .mud-table-body .mud-table-cell.sf-td-title:before,
    table.sf-stack > tbody > tr > td.sf-td-title:before { display: none; }
    /* ćelije preko cele širine: dugačak tekst, akcije, ćelije bez naziva */
    .mud-xs-table .mud-table-body .mud-table-cell.sf-td-full,
    table.sf-stack > tbody > tr > td.sf-td-full { grid-column: 1 / -1; }
    .mud-xs-table .mud-table-body .mud-table-cell.sf-td-actions,
    .mud-xs-table .mud-table-body .mud-table-cell:not([data-label]),
    table.sf-stack > tbody > tr > td.sf-td-actions {
        grid-column: 1 / -1;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 4px;
    }
    .mud-xs-table .mud-table-body .mud-table-cell.sf-td-actions { justify-content: flex-end; }
    .mud-xs-table .mud-table-body .mud-table-cell:empty,
    table.sf-stack > tbody > tr > td:empty { display: none; }
    /* red sa colspan-om (ChildRowContent, "nema podataka") ostaje običan blok */
    .mud-xs-table .mud-table-body .mud-table-row > .mud-table-cell[colspan] { grid-column: 1 / -1; }

    table.sf-stack, table.sf-stack > tbody { display: block; width: 100%; }
    .mud-xs-table .mud-table-body .mud-table-cell.sf-td-span2,
    table.sf-stack > tbody > tr > td.sf-td-span2 { grid-column: span 2; }
    table.sf-stack > tfoot { display: block; }
    table.sf-stack > tfoot > tr {
        display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: baseline;
        gap: 4px 14px; padding: 10px 14px;
    }
    table.sf-stack > tfoot > tr > td { display: block; padding: 0; border: none; width: auto !important; }
    table.sf-stack > tfoot > tr > td:empty { display: none; }
    table.sf-stack input, table.sf-stack select { min-height: 34px; font-size: 14px; }
    table.sf-stack > thead { display: none; }

    /* zbirni red (FooterContent) MudBlazor na telefonu sakriva — zbir je bitan, vraćamo ga */
    .mud-xs-table .mud-table-root .mud-table-foot { display: block; }
    .mud-xs-table .mud-table-foot .mud-table-row {
        display: flex; flex-wrap: wrap; gap: 4px 12px; padding: 10px 14px;
        background: var(--mud-palette-background-grey);
    }
    .mud-xs-table .mud-table-foot .mud-table-cell { display: block; padding: 0; border: none; }
    .mud-xs-table .mud-table-foot .mud-table-cell:empty { display: none; }

    .mud-xs-table .mud-table-smalldevices-sortselect { padding: 4px 14px 8px; }
}

/* Isto za tabele kojima je prelom postavljen na Sm (<960px) odnosno Md (<1280px). */
@media (max-width: 960px) {
    .mud-sm-table .mud-table-body .mud-table-row {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
        column-gap: 12px;
        row-gap: 6px;
        align-items: start;
        padding: 10px 14px;
        border-bottom: 1px solid var(--mud-palette-table-lines);
    }
    .mud-sm-table .mud-table-body .mud-table-row .mud-table-cell,
    .mud-sm-table.mud-table-dense .mud-table-body .mud-table-row .mud-table-cell {
        display: block;
        min-width: 0 !important;
        padding: 0;
        border: none !important;
        font-size: 12.5px;
        line-height: 1.35;
        text-align: start !important;
        overflow-wrap: anywhere;
        white-space: normal !important;
        width: auto !important;
    }
    .mud-sm-table .mud-table-body .mud-table-cell:before {
        content: attr(data-label);
        display: block;
        padding: 0;
        margin-bottom: 1px;
        overflow: hidden;
        text-overflow: ellipsis;
        font-family: 'JetBrains Mono', ui-monospace, monospace;
        font-size: 9.5px;
        font-weight: 500;
        letter-spacing: .5px;
        text-transform: uppercase;
        color: var(--mud-palette-text-secondary);
        white-space: nowrap;
    }
    .mud-sm-table .mud-table-body .mud-table-cell.sf-td-title {
        grid-column: 1 / -1;
        order: -1;
        font-size: 14.5px;
        font-weight: 600;
    }
    .mud-sm-table .mud-table-body .mud-table-cell.sf-td-title:before { display: none; }
    .mud-sm-table .mud-table-body .mud-table-cell.sf-td-full { grid-column: 1 / -1; }
    .mud-sm-table .mud-table-body .mud-table-cell.sf-td-actions,
    .mud-sm-table .mud-table-body .mud-table-cell:not([data-label]) {
        grid-column: 1 / -1;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 4px;
    }
    .mud-sm-table .mud-table-body .mud-table-cell.sf-td-actions { justify-content: flex-end; }
    .mud-sm-table .mud-table-body .mud-table-cell:empty { display: none; }
    .mud-sm-table .mud-table-body .mud-table-row > .mud-table-cell[colspan] { grid-column: 1 / -1; }
    .mud-sm-table .mud-table-body .mud-table-cell.sf-td-span2 { grid-column: span 2; }
    .mud-sm-table .mud-table-root .mud-table-foot { display: block; }
    .mud-sm-table .mud-table-foot .mud-table-row {
        display: flex; flex-wrap: wrap; gap: 4px 12px; padding: 10px 14px;
        background: var(--mud-palette-background-grey);
    }
    .mud-sm-table .mud-table-foot .mud-table-cell { display: block; padding: 0; border: none; }
    .mud-sm-table .mud-table-foot .mud-table-cell:empty { display: none; }
    .mud-sm-table .mud-table-smalldevices-sortselect { padding: 4px 14px 8px; }
}
@media (max-width: 1280px) {
    .mud-md-table .mud-table-body .mud-table-row {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
        column-gap: 12px;
        row-gap: 6px;
        align-items: start;
        padding: 10px 14px;
        border-bottom: 1px solid var(--mud-palette-table-lines);
    }
    .mud-md-table .mud-table-body .mud-table-row .mud-table-cell,
    .mud-md-table.mud-table-dense .mud-table-body .mud-table-row .mud-table-cell {
        display: block;
        min-width: 0 !important;
        padding: 0;
        border: none !important;
        font-size: 12.5px;
        line-height: 1.35;
        text-align: start !important;
        overflow-wrap: anywhere;
        white-space: normal !important;
        width: auto !important;
    }
    .mud-md-table .mud-table-body .mud-table-cell:before {
        content: attr(data-label);
        display: block;
        padding: 0;
        margin-bottom: 1px;
        overflow: hidden;
        text-overflow: ellipsis;
        font-family: 'JetBrains Mono', ui-monospace, monospace;
        font-size: 9.5px;
        font-weight: 500;
        letter-spacing: .5px;
        text-transform: uppercase;
        color: var(--mud-palette-text-secondary);
        white-space: nowrap;
    }
    .mud-md-table .mud-table-body .mud-table-cell.sf-td-title {
        grid-column: 1 / -1;
        order: -1;
        font-size: 14.5px;
        font-weight: 600;
    }
    .mud-md-table .mud-table-body .mud-table-cell.sf-td-title:before { display: none; }
    .mud-md-table .mud-table-body .mud-table-cell.sf-td-full { grid-column: 1 / -1; }
    .mud-md-table .mud-table-body .mud-table-cell.sf-td-actions,
    .mud-md-table .mud-table-body .mud-table-cell:not([data-label]) {
        grid-column: 1 / -1;
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        gap: 4px;
    }
    .mud-md-table .mud-table-body .mud-table-cell.sf-td-actions { justify-content: flex-end; }
    .mud-md-table .mud-table-body .mud-table-cell:empty { display: none; }
    .mud-md-table .mud-table-body .mud-table-row > .mud-table-cell[colspan] { grid-column: 1 / -1; }
    .mud-md-table .mud-table-body .mud-table-cell.sf-td-span2 { grid-column: span 2; }
    .mud-md-table .mud-table-root .mud-table-foot { display: block; }
    .mud-md-table .mud-table-foot .mud-table-row {
        display: flex; flex-wrap: wrap; gap: 4px 12px; padding: 10px 14px;
        background: var(--mud-palette-background-grey);
    }
    .mud-md-table .mud-table-foot .mud-table-cell { display: block; padding: 0; border: none; }
    .mud-md-table .mud-table-foot .mud-table-cell:empty { display: none; }
    .mud-md-table .mud-table-smalldevices-sortselect { padding: 4px 14px 8px; }
}

/* Tabele koje ostaju tabele (MudSimpleTable, široki izveštaji): skrol u stranu
   unutar okvira umesto da rašire stranicu, sa gušćim ćelijama. */
@media (max-width: 959.98px) {
    .mud-main-content .mud-simple-table,
    .mud-dialog .mud-simple-table { max-width: 100%; }
    .mud-main-content .mud-simple-table > div,
    .mud-dialog .mud-simple-table > div { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .mud-simple-table table th, .mud-simple-table table td { padding: 5px 8px !important; font-size: 12.5px; }
    .mud-simple-table table th { white-space: nowrap; }

    /* Tabovi: traka se skroluje prstom, tab nije širi od svog teksta. */
    .mud-main-content .mud-tabs-tabbar .mud-tab,
    .mud-dialog .mud-tabs-tabbar .mud-tab { min-width: 0; padding: 6px 12px; font-size: 13px; }
    .mud-main-content .mud-tabs-panels > .pa-6,
    .mud-main-content .mud-tabs-panels > .pa-4 { padding: 10px !important; }

    /* Papiri/kartice sa desktop padding-om 16-24px. */
    .mud-main-content .mud-paper.pa-6,
    .mud-main-content .mud-paper.pa-5 { padding: 12px !important; }
    .mud-main-content .mud-paper.pa-4 { padding: 10px !important; }
    .mud-main-content .mud-card-content { padding: 12px; }
}

/* Dijalozi na telefonu: skoro pun ekran po širini (MudBlazor ostavlja 32px sa svake
   strane → forma od 326px), manji padding, dugmad se prelamaju. */
@media (max-width: 600px) {
    .mud-dialog-container .mud-dialog:not(.mud-dialog-fullscreen) {
        margin: 8px;
        width: calc(100% - 16px);
        max-width: calc(100% - 16px) !important;
        max-height: calc(100% - 16px);
        max-height: calc(100dvh - 16px);
    }
    .mud-dialog .mud-dialog-title { padding: 12px 14px; }
    .mud-dialog .mud-dialog-title:has(.mud-button-close) { padding-inline-end: 52px; }
    .mud-dialog .mud-dialog-title .mud-typography-h6 { font-size: 1.05rem; line-height: 1.3; }
    .mud-dialog .mud-dialog-content { padding: 8px 14px; }
    .mud-dialog .mud-dialog-actions { flex-wrap: wrap; padding: 8px 10px; }
    .mud-dialog .mud-dialog-actions .mud-button-label { white-space: nowrap; }
    .mud-dialog .mud-input-control { min-width: 0 !important; max-width: 100%; }
    .mud-dialog .d-flex.flex-row { flex-wrap: wrap; row-gap: 6px; }
    .mud-dialog .mud-grid-spacing-xs-6 { margin: -8px 0 0 -8px; width: calc(100% + 8px); }
    .mud-dialog .mud-grid-spacing-xs-6 > .mud-grid-item { padding: 8px 0 0 8px; }

    /* Snackbar preko cele širine, da ne seče tekst. */
    .mud-snackbar { min-width: 0; max-width: calc(100vw - 16px); }
}

/* Definicione mreže (naziv polja + vrednost) sa 4 u redu: na telefonu po 2,
   a tekst se lomi unutar svoje ćelije umesto da pređe preko susedne. */
@media (max-width: 600px) {
    .mud-main-content .mud-grid-item-xs-3,
    .mud-dialog .mud-grid-item-xs-3 { flex-basis: 50%; max-width: 50%; }
    .mud-main-content .mud-grid-item,
    .mud-dialog .mud-grid-item { min-width: 0; }
    .mud-main-content .mud-grid-item > .mud-typography,
    .mud-dialog .mud-grid-item > .mud-typography { overflow-wrap: anywhere; }
}

/* Ćelija bez naziva kolone (akcije) nema šta da ispiše iznad vrednosti. */
.mud-table-cell:not([data-label]):before,
table.sf-stack > tbody > tr > td:not([data-label]):before { display: none !important; }

/* Plan obilaska — nedeljna matrica (komercijalista × 7 dana) staje u širinu telefona
   umesto da se skroluje u stranu sa jednim vidljivim danom. */
@media (max-width: 600px) {
    .mud-main-content .sf-matrix-wrap { padding: 4px; }
    .mud-main-content .sf-matrix-wrap .sf-matrix { font-size: 12px; table-layout: fixed; }
    .mud-main-content .sf-matrix-wrap .sf-matrix th,
    .mud-main-content .sf-matrix-wrap .sf-matrix td { padding: 6px 2px; }
    .mud-main-content .sf-matrix-wrap .sf-matrix .sf-matrix-corner { min-width: 0; width: 34%; font-size: 11px; padding-left: 6px; }
    .mud-main-content .sf-matrix-wrap .sf-matrix .sf-matrix-day { min-width: 0; }
    .mud-main-content .sf-matrix-wrap .sf-matrix .sf-matrix-dow { font-size: 8.5px; letter-spacing: .5px; }
    .mud-main-content .sf-matrix-wrap .sf-matrix .sf-matrix-date { font-size: 10px; }
    .mud-main-content .sf-matrix-name .mud-button-root { min-width: 0; padding: 2px 4px; justify-content: flex-start; text-align: left; flex-shrink: 1; }
    .mud-main-content .sf-matrix-name .mud-button-label { white-space: normal; font-size: 11.5px; line-height: 1.2; }
    .mud-main-content .sf-matrix-name .mud-button-icon-start { display: none; }
    .mud-main-content .sf-matrix-wrap .sf-matrix-count { min-width: 20px; padding: 1px 5px; font-size: 11px; }
}

/* Nedeljni plan: prazan dan ne drži 200px visine kad su dani jedan ispod drugog. */
@media (max-width: 600px) {
    .mud-main-content .sf-week-grid { padding: 4px; gap: 6px; }
    .mud-main-content .sf-week-grid .sf-day-card { min-height: 0; }
    .mud-main-content .sf-week-grid .sf-day-empty { padding: 8px; }
}

@media (max-width: 600px) {
    /* KPI kartice (papir sa jednim brojem) po dve u redu umesto jedne ispod druge. */
    .mud-main-content .mud-grid-item-xs-12:has(> .mud-paper > .sf-kpi-num) {
        flex-basis: 50%; max-width: 50%; flex-grow: 0;
    }
    .mud-main-content .mud-grid-item > .mud-paper > .sf-kpi-num { font-size: 18px; overflow-wrap: anywhere; }
    .mud-main-content .mud-grid-item > .mud-paper:has(> .sf-kpi-num) { padding: 8px 10px !important; }
    .mud-main-content .mud-grid-item > .mud-paper:has(> .sf-kpi-num) > .mud-typography-caption {
        font-size: 10px; line-height: 1.3; display: block;
    }

    /* Datumi i padajuće liste u redu sa filterima (MudStack Row): po dva u redu. */
    .mud-main-content .d-flex.flex-row > .mud-picker,
    .mud-main-content .d-flex.flex-row > .mud-select:not(.mud-autocomplete) {
        flex: 1 1 150px; width: auto; min-width: 0; max-width: 100%;
    }
    .mud-main-content .d-flex.flex-row > .mud-input-control:not(.mud-input-control-boolean-input),
    .mud-main-content .d-flex.flex-row > .mud-autocomplete { flex: 1 1 100%; }

    /* Tabela složena u kartice teče sa stranicom — bez unutrašnjeg skrola fiksne visine. */
    .mud-xs-table .mud-table-container,
    .mud-sm-table .mud-table-container,
    .mud-md-table .mud-table-container {
        height: auto !important; max-height: none !important; overflow: visible !important;
    }
}

/* Pivot izveštaji (Syncfusion) su desktop alat — na telefonu se bar skroluju unutar
   svog okvira umesto da rašire celu stranicu. */
@media (max-width: 959.98px) {
    .mud-main-content .e-pivotview {
        width: auto !important; min-width: 0 !important; max-width: calc(100vw - 24px);
        overflow-x: auto; -webkit-overflow-scrolling: touch;
    }
}

@media (max-width: 600px) {
    /* I u dijalozima: datumi i padajuće liste po dva u redu. */
    .mud-dialog .mud-grid-item-xs-12.mud-grid-item-sm-6:has(> .mud-select, > .mud-picker) {
        flex-basis: 50%; max-width: 50%; flex-grow: 0;
    }
}

@media (max-width: 600px) {
    /* Zaglavlje stranice: naslov dobija svoj red (uz dugme "nazad" staje), a filteri
       i dugmad se prelamaju ispod — umesto da sabiju naslov u kolonu od 100px. */
    .mud-main-content .d-flex.flex-row > .mud-typography-h1,
    .mud-main-content .d-flex.flex-row > .mud-typography-h2,
    .mud-main-content .d-flex.flex-row > .mud-typography-h3,
    .mud-main-content .d-flex.flex-row > .mud-typography-h4,
    .mud-main-content .d-flex.flex-row > div:has(> .mud-typography-h1, > .mud-typography-h2, > .mud-typography-h3, > .mud-typography-h4) {
        flex: 1 1 70% !important; min-width: 0;
    }
}

/* Planer rute je fiksni desktop ekran (100dvh, bez skrola, stopovi levo / mapa desno).
   Na telefonu kolone idu jedna ispod druge i stranica normalno skroluje — inače se
   do mape i zbira uopšte ne može doći. */
@media (max-width: 959.98px) {
    .mud-layout .mud-main-content:has(.sf-rute-root) { overflow: visible !important; }
    .mud-main-content .sf-rute-root {
        margin: -12px; padding: 8px 10px 16px;
        height: auto; min-height: calc(100dvh - 48px);
        display: block; overflow: visible;
    }
    .mud-main-content .sf-rute-root .sf-rute-grid-wrap,
    .mud-main-content .sf-rute-root .sf-rute-grid-wrap > .mud-grid,
    .mud-main-content .sf-rute-root .sf-rute-grid-wrap .mud-grid-item { height: auto !important; overflow: visible; }
    .mud-main-content .sf-rute-root .sf-rute-left-col,
    .mud-main-content .sf-rute-root .sf-rute-right-col {
        display: block !important; height: auto !important; overflow: visible !important;
    }
    .mud-main-content .sf-rute-root .sf-rute-tab-paper,
    .mud-main-content .sf-rute-root .sf-rute-tab-paper .mud-tabs,
    .mud-main-content .sf-rute-root .sf-rute-tab-paper .mud-tabs-panels,
    .mud-main-content .sf-rute-root .sf-rute-tab-paper .mud-tab-panel {
        display: block !important; height: auto !important; overflow: visible !important;
    }
    /* lista stopova ne sme da odgurne mapu predaleko */
    .mud-main-content .sf-rute-root .sf-rute-tab-paper .mud-tab-panel { max-height: 60vh; overflow-y: auto !important; }
}

/* Plan na mapi: u jednoj koloni lista rezultata je i dalje tražila "span 2", što pravi
   drugu (praznu) kolonu u koju upadne mapa i dobije širinu 0 — mapa se na telefonu ne vidi. */
@media (max-width: 900px) {
    .mud-main-content .sf-planmap-layout { min-height: 0; }
    .mud-main-content .sf-planmap-layout .sf-planmap-results { grid-column: 1; height: auto; max-height: none; }
    .mud-main-content .sf-planmap-layout .sf-planmap-center { height: 380px; }
}

/* Klasifikacija klijenata: zaglavlje panela — naziv gore, čipovi ispod (umesto preklapanja). */
@media (max-width: 600px) {
    .mud-main-content .krit-header { flex-wrap: wrap; row-gap: 4px; min-width: 0; }
    .mud-main-content .krit-header .krit-header-left { flex: 1 1 100%; min-width: 0; }
    .mud-main-content .krit-header .krit-chips { flex: 1 1 100%; flex-wrap: wrap; justify-content: flex-start; }
    .mud-main-content .krit-header .krit-chips .mud-chip { margin: 0 4px 0 0; }
    .mud-main-content .mud-expand-panel .mud-expand-panel-header { padding: 10px 12px; }
    .mud-main-content .mud-expand-panel .mud-expand-panel-content { padding: 0 10px 10px; }
}

/* Mesečni kalendar (događaji, odsustva): ćelija je na telefonu ~50px, pa tekst čipa
   ne staje — čip postaje obojena crtica, a nazivi su u listi ispod kalendara. */
@media (max-width: 600px) {
    .mud-main-content .sf-cal .sf-cal-dow-h { padding: 5px 2px; font-size: 9px; letter-spacing: .5px; }
    .mud-main-content .sf-cal .sf-cal-cell { height: 54px; padding: 3px 3px 2px; }
    .mud-main-content .sf-cal .sf-cal-day-num { font-size: 11px; margin-bottom: 2px; }
    .mud-main-content .sf-cal .sf-cal-chip {
        height: 6px; padding: 0; font-size: 0; line-height: 0;
        border-width: 0; border-radius: 3px;
        background-color: currentColor !important;
    }
}

/* ─────────────────────────────────────────────────────────────────────────────
   SalesFleet — QR skener (Components/Shared/QrScanner.razor, Troškovi).
   Kvadratni prozor kamere sa okvirom za nišanjenje; video je "cover" pa kadar
   popunjava prozor i na uspravnom telefonu i na položenoj web kameri.
   ───────────────────────────────────────────────────────────────────────────── */
.sf-qr { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.sf-qr-view {
    position: relative;
    width: 100%;
    max-width: 420px;
    aspect-ratio: 1 / 1;
    border-radius: 6px;
    overflow: hidden;
    background: #111;
    color: #fff;
}
.sf-qr-video { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-qr-frame {
    position: absolute;
    inset: 12%;
    border: 2px solid rgba(255, 255, 255, .9);
    border-radius: 10px;
    box-shadow: 0 0 0 100vmax rgba(0, 0, 0, .35);
    pointer-events: none;
}
.sf-qr-overlay {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center; gap: 10px;
    background: rgba(0, 0, 0, .55);
    font-size: 13px;
}
.sf-qr-torch.mud-icon-button {
    position: absolute; right: 8px; bottom: 8px;
    background: rgba(0, 0, 0, .45);
}
.sf-qr-hint { font-size: 12.5px; color: var(--mud-palette-text-secondary); text-align: center; }
.sf-qr-status {
    display: flex; align-items: center; justify-content: center; gap: 10px;
    padding: 28px 8px; font-size: 14px;
}
.sf-qr-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; }
.sf-qr > .mud-alert { width: 100%; }
