/* Písmo nastavuje MudTheme.Typography (Themes/AppTheme.cs), fonty jsou self-hosted v css/fonts.css. */

html,
body {
    margin: 0;
    padding: 0;
    min-height: 100vh;
    /* MudBlazor nastavuje --mud-palette-background na :root — funguje pro světlý i tmavý motiv. */
    background: var(--mud-palette-background);
}

/* ====================== Shell ====================== */

.shell-drawer {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.active-icon-button {
    background-color: rgba(255, 255, 255, 0.15) !important;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
}

.active-icon-button:hover {
    background-color: rgba(255, 255, 255, 0.25) !important;
}

.app-logo {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 700;
    letter-spacing: -0.02em;
}

/* Logo firmy (Application:LogoFile) vedle názvu. */
.app-logo__image {
    height: 32px;
    max-width: 140px;
    object-fit: contain;
}

/* Na telefonu delší název instance (např. „Hodnocení a certifikace (testovací provoz)“) nepřeteče přes lištu: jeden řádek s výpustkou,
   označení prostředí pod ním. */
@media (max-width: 600px) {
    .app-logo {
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
        min-width: 0;
        max-width: 52vw;
        font-size: 1.05rem;
        line-height: 1.15;
    }

    .app-logo__name {
        max-width: 100%;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    .app-logo .app-env-label {
        margin-left: 0;
    }
}

.app-env-label {
    display: inline-block;
    margin-left: 0.35rem;
    font-size: 0.58em;
    font-weight: 700;
    letter-spacing: 0.04em;
    vertical-align: middle;
    opacity: 0.9;
}

.app-page {
    padding-top: 16px;
    padding-bottom: 24px;
}

.app-status-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 64px 16px;
    text-align: center;
}

/* ====================== Obnova spojení ====================== */

#components-reconnect-modal {
    display: none;
}

#components-reconnect-modal.components-reconnect-show,
#components-reconnect-modal.components-reconnect-failed,
#components-reconnect-modal.components-reconnect-rejected {
    display: flex;
    position: fixed;
    inset: 0;
    z-index: 10000;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.35);
}

.app-reconnect-card {
    padding: 16px 24px;
    border-radius: var(--ss-radius-xs, 6px);
    background: var(--mud-palette-surface, #fff);
    color: var(--mud-palette-text-primary, #212121);
    box-shadow: var(--ss-shadow-card, 0 8px 24px rgba(0, 0, 0, 0.25));
}

/* ====================== Uživatel v appbaru ====================== */

.app-user-avatar {
    cursor: pointer;
    font-size: 0.8rem !important;
    font-weight: 700;
    /* Obrys v barvě textu lišty — na barevné liště (Vzhled → Barevná) by avatar v hlavní barvě splynul. */
    box-shadow: 0 0 0 2px var(--mud-palette-appbar-text);
}

.app-user-menu__header {
    padding: 8px 16px 10px;
    min-width: 200px;
}

.cursor-pointer {
    cursor: pointer;
}

.cursor-help {
    cursor: help;
}

/* ====================== Tabulky ====================== */

/* Hlavička tabulek v terciární barvě = tónovaná lišta (motiv převzatý z Erplitexu). Jen klasický styl —
   ostatní styly rozhraní (Vzhled → Styl) mají záhlaví vlastní (2ndSide, ss-style-*). */
.ss-style-classic .mud-table th {
    background: var(--mud-palette-tertiary) !important;
    color: var(--mud-palette-tertiary-text) !important;
    font-weight: 600 !important;
}

/* Sticky hlavička nad obsahem buněk (tooltipy, ikony). */
.mud-table-sticky-header * .mud-table-root .mud-table-head .mud-table-cell {
    z-index: 30;
}

/* Katalog dílů: díl, kterému ve stromu chybí hotový kusovník nebo postup. */
.tpv-part-incomplete td {
    background-color: rgba(251, 146, 60, 0.12) !important;
}

.account-facts td:first-child {
    color: var(--mud-palette-text-secondary);
    width: 45%;
}

/* Náhled loga zákazníka v dialogu — stejný poměr jako v hlavičce nabídkového listu. */
.customer-logo-preview {
    display: block;
    max-width: 240px;
    max-height: 135px;
    object-fit: contain;
    border-radius: 4px;
    border: 1px solid var(--mud-palette-lines-default);
    margin-bottom: 4px;
}

/* Archivovaný záznam v přehledu (filtr „Vše“ / „Archivované“). */
.row-archived td {
    color: var(--mud-palette-text-disabled) !important;
}

/* Díl označený „Díl nenabízen“ (poptávané díly, katalog). */
.tpv-part-not-offered .mud-typography {
    text-decoration: line-through;
}

/* Nabídky: historie cen v detailu řádku, platná (nejnovější) cena tučně. */
.offer-price-history {
    background: transparent;
}

.offer-price-latest td {
    font-weight: 600;
}

/* Rozpad nákladů kalkulace (sekce pracoviště / materiály / kooperace). */
.cost-section {
    margin-bottom: 12px;
}

.cost-section__title {
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
    padding: 4px 0;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.cost-section__sum,
.cost-section__total span {
    margin-left: auto;
}

.cost-section__total {
    display: flex;
    font-weight: 700;
    font-size: 1.05rem;
    padding: 6px 0;
    border-top: 2px solid var(--mud-palette-lines-default);
}

.cost-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

.cost-table td {
    padding: 3px 6px;
    vertical-align: top;
}

.cost-table tr:nth-child(even) td {
    background: var(--mud-palette-background-gray);
}

.cost-table__group {
    cursor: pointer;
}

.cost-table__group td:first-child {
    width: 28px;
}

.cost-table__head td {
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

.cost-table__parts {
    font-size: 0.75rem;
}

/* Souhrn záložky Kalkulace v detailu dílu: popisek vlevo, částka vpravo. */
.part-calculation__summary > div {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    max-width: 380px;
    padding: 1px 0;
}

.part-calculation__price {
    font-size: 1.15rem;
}

/* Nové materiály: poznámka zkrácená na jeden řádek, celá v tooltipu. */
.new-material-note {
    display: block;
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Plán zakázek: slot svářeče / mistra jako malý čip s iniciálami. */
.order-worker-chip {
    min-width: 30px;
    height: 22px;
    margin: 0;
    font-size: 0.72rem;
}

.order-worker-menu {
    min-width: 240px;
    max-width: 320px;
}

/* Rozbalení řádku plánu: strom operací zakázky. */
.order-operations-panel {
    background: var(--mud-palette-background-gray);
}

.order-operations-search {
    max-width: 320px;
}

.order-operations-table td {
    vertical-align: top;
}

.order-operation-current {
    font-weight: 600;
}

/* Velocity: kolečka plynule dojedou na novou hodnotu (animuje CSS, ne překreslování). */
.order-velocity-ring svg circle {
    transition: stroke-dashoffset 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

/* Filtr plánu: zaškrtávátka ve dvou sloupcích. */
.order-filter-flags {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 8px;
}

/* Hromadná úprava: zaškrtávátko „upravit“ před polem. */
.order-multiedit-row {
    display: flex;
    align-items: center;
    gap: 8px;
}

.order-multiedit-row > :last-child {
    flex-grow: 1;
}

/* Reporty na vyžádání: seznam reportů vlevo, náhled e-mailu vpravo. */
.report-od__list {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.report-od__item {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    width: 100%;
    padding: 8px 12px;
    border: 1px solid transparent;
    border-radius: var(--mud-default-borderradius);
    background: none;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.report-od__item:hover {
    background: var(--mud-palette-action-default-hover);
}

.report-od__item--selected {
    border-color: var(--mud-palette-primary);
    background: color-mix(in srgb, var(--mud-palette-primary) 8%, transparent);
}

.report-od__name {
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 500;
}

.report-od__description {
    font-size: 0.8125rem;
    color: var(--mud-palette-text-secondary);
}

/* Kontrola dat: tabulka části roluje sama (záhlaví zůstává), rizikový zákazník bez měny je podbarvený.
   MudBlazor dává kontejneru s pevným záhlavím max-height: 100 % — bez !important vyhraje. */
.data-check__table .mud-table-container {
    max-height: 420px !important;
    overflow-y: auto;
}

.data-check__risky {
    background: color-mix(in srgb, var(--mud-palette-warning) 10%, transparent);
}

/* E-mail má vlastní světlé barvy (jako v poště), proto bílé pozadí i v tmavém režimu. */
.report-od__preview {
    width: 100%;
    height: 70vh;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
    background: #fff;
}

.report-od__inputs,
.report-od__send {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
}

.report-od__inputs > * {
    flex: 1 1 180px;
    min-width: 0;
}

/* Globální hledání v liště (GlobalSearch): pole-tlačítko s nápovědou zkratky; na telefonu jen ikona. */
.app-search-trigger { display: inline-flex; align-items: center; gap: 8px; height: 34px; margin: 0 6px; padding: 0 10px; border-radius: var(--ss-radius-sm, 9px); cursor: pointer;
    border: 1px solid color-mix(in srgb, currentColor 22%, transparent); background: color-mix(in srgb, currentColor 6%, transparent); color: inherit; font: inherit; }
.app-search-trigger:hover { background: color-mix(in srgb, currentColor 12%, transparent); }
.app-search-trigger__text { font-size: .85rem; opacity: .8; min-width: 120px; text-align: left; }
.app-search-trigger__kbd { font-size: .68rem; font-weight: 600; padding: 2px 5px; border-radius: var(--ss-radius-xs, 5px); border: 1px solid color-mix(in srgb, currentColor 25%, transparent); opacity: .75; }
@media (max-width: 960px) { .app-search-trigger__text, .app-search-trigger__kbd { display: none; } .app-search-trigger { padding: 0 8px; border: 0; } }

/* Co je nového (dialog po přihlášení i stránka /whats-new). */
.whats-new + .whats-new {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--mud-palette-divider);
}

.whats-new__release {
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.whats-new__group + .whats-new__group {
    margin-top: 0.5rem;
}

.whats-new__items {
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}

.whats-new__items li + li {
    margin-top: 0.35rem;
}

.whats-new__try {
    margin-left: 0.5rem;
    white-space: nowrap;
}

/* Karta nástěnky (KanbanBoard z 2ndSide) — poruchy, reklamace, úkoly. */
.board-card { display: flex; flex-direction: column; gap: 4px; }
.board-card.is-critical { margin: -10px -12px; padding: 10px 12px 10px 9px; border-left: 3px solid var(--mud-palette-error); border-radius: var(--ss-radius-sm, 10px); }
.board-card__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.board-card__title { font-weight: 600; font-size: 0.875rem; }
.board-card__text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--mud-palette-text-secondary); font-size: 0.8125rem; }
.board-card__meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--mud-palette-text-secondary); font-size: 0.75rem; }

/* Dlaždice faktu jako rychlý filtr (příjem u vrat): aktivní filtr = obrys v hlavní barvě, druhý klik ho zruší. */
.ss-fact.is-link.is-active { box-shadow: inset 0 0 0 2px var(--mud-palette-primary); }

/* EDI: surový obsah zprávy, přečtený doklad a výchozí volby profilu (zpráva, partner, testovací konzole). */
.edi-raw {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .8rem;
    white-space: pre-wrap;
    word-break: break-all;
    max-height: 60vh;
    overflow: auto;
    margin: 0;
    padding: 12px;
    border-radius: var(--ss-radius-sm, 6px);
    background: var(--mud-palette-background-gray);
}
