/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* The framework's unhandled-error bar: a solid strip with a hairline, in the warning tokens. */
#blazor-error-ui[b-k3gr5yc9fo] {
    color-scheme: light only;
    background: var(--color-warning-bg);
    color: var(--color-text);
    bottom: 0;
    border-top: 1px solid var(--line-strong);
    box-shadow: var(--shadow-2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: var(--space-3) var(--space-6) var(--space-3) var(--space-5);
    position: fixed;
    width: 100%;
    z-index: var(--z-overlay);
}

    #blazor-error-ui .dismiss[b-k3gr5yc9fo] {
        cursor: pointer;
        position: absolute;
        right: var(--space-3);
        top: var(--space-3);
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-d5it1zjw4a],
.components-reconnect-repeated-attempt-visible[b-d5it1zjw4a],
.components-reconnect-failed-visible[b-d5it1zjw4a],
.components-pause-visible[b-d5it1zjw4a],
.components-resume-failed-visible[b-d5it1zjw4a],
.components-rejoining-animation[b-d5it1zjw4a] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-retrying[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-failed[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-d5it1zjw4a] {
    display: block;
}

/* A modal task: the dialog arrives with opacity and scale in 200 ms over a scrim (cross-fade under reduced motion,
   see tokens.css). It is closed by the browser, so there is no exit animation to hold open. */
#components-reconnect-modal[b-d5it1zjw4a] {
    width: 20rem;
    max-width: calc(100vw - 2 * var(--space-4));
    margin: 20vh auto;
    padding: var(--space-6);
    border: 1px solid var(--line);
    border-radius: var(--radius-lg);
    background: var(--surface);
    color: var(--color-text);
    box-shadow: var(--shadow-3);
}

#components-reconnect-modal[open][b-d5it1zjw4a] {
    animation: var(--anim-enter);
}

#components-reconnect-modal[b-d5it1zjw4a]::backdrop {
    background: var(--color-overlay);
    animation: var(--anim-enter-fade);
}

.components-reconnect-container[b-d5it1zjw4a] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-4);
}

#components-reconnect-modal p[b-d5it1zjw4a] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-d5it1zjw4a] {
    padding: var(--space-2) var(--space-5);
    border: 0;
    border-radius: var(--radius-sm);
    background: var(--color-primary);
    color: var(--color-on-primary);
    font: inherit;
    font-weight: 500;
    cursor: pointer;
    transition: transform var(--press-duration) ease-out;
}

#components-reconnect-modal button:hover[b-d5it1zjw4a] {
    background: var(--color-primary-hover);
}

#components-reconnect-modal button:active[b-d5it1zjw4a] {
    transform: scale(var(--press-scale));
}

/* Two rings that grow and fade, on transform and opacity only. It runs only while the dialog shows a reconnect
   attempt: outside those states the element is display: none, so nothing animates (skill section 0.3). */
.components-rejoining-animation[b-d5it1zjw4a] {
    position: relative;
    width: 5rem;
    height: 5rem;
}

    .components-rejoining-animation div[b-d5it1zjw4a] {
        position: absolute;
        inset: 0;
        border: 3px solid var(--color-primary);
        border-radius: 50%;
        opacity: 0;
        animation: components-rejoining-ring-b-d5it1zjw4a 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-d5it1zjw4a] {
            animation-delay: -0.75s;
        }

@keyframes components-rejoining-ring-b-d5it1zjw4a {
    from {
        opacity: 1;
        transform: scale(0);
    }

    to {
        opacity: 0;
        transform: scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .components-rejoining-animation div[b-d5it1zjw4a] {
        animation: none;
        opacity: 0.5;
    }

        .components-rejoining-animation div:nth-child(2)[b-d5it1zjw4a] {
            transform: scale(0.5);
        }
}

/* One line at a time: while retrying (or after failing, or paused) the first attempt's line and the spinner give way. */
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-first-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-first-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-repeated-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-failed .components-rejoining-animation[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-paused .components-reconnect-first-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-paused .components-rejoining-animation[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-resume-failed .components-reconnect-first-attempt-visible[b-d5it1zjw4a],
#components-reconnect-modal.components-reconnect-resume-failed .components-rejoining-animation[b-d5it1zjw4a] {
    display: none;
}
/* /Components/Pages/Cases/AgentReportPage.razor.rz.scp.css */
/* Layout only: the agent picker is wider than the other toolbar combos; the report fills the rest of the page. */
.toolbar-combo-wide[b-7xmqwnlnr3] {
    flex: 0 1 24rem;
}
/* /Components/Pages/Cases/CaseCreatePage.razor.rz.scp.css */
/* Layout only; the wizard frame, steps, cards and footer are in app.css (shared with the quotation wizard). */

.case-amount[b-zpi0fgivwp] {
    font-variant-numeric: tabular-nums;
}
/* /Components/Pages/Cases/CaseDetailsPage.razor.rz.scp.css */
/* Layout only; the detail-page layout, cards, feed, chips and fields take their look from app.css. */

/* A field with its save button on the same line (description, status); the button drops under it on a phone. */
.case-description[b-3p7dvyeix5],
.case-inline[b-3p7dvyeix5] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--space-3);
    margin-bottom: var(--space-3);
}

.case-description .field[b-3p7dvyeix5],
.case-inline .field[b-3p7dvyeix5] {
    flex: 1 1 12rem;
    margin: 0;
}

.case-number[b-3p7dvyeix5] {
    font-variant-numeric: tabular-nums;
}

.case-statement[b-3p7dvyeix5] {
    white-space: pre-line;
}

.case-balance[b-3p7dvyeix5] {
    margin-bottom: var(--space-3);
}

.case-quotation-actions[b-3p7dvyeix5] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}
/* /Components/Pages/Cases/CasePayments.razor.rz.scp.css */
/* Layout only: the figures and the warning keep the card's padding above the grid, which runs to the card's edges. */
.payments-summary[b-zcf39fspxk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: 0 var(--space-5) var(--space-4);
}

.payment-figures[b-zcf39fspxk] {
    margin-bottom: var(--space-3);
}

.case-number[b-zcf39fspxk] {
    font-variant-numeric: tabular-nums;
}
/* /Components/Pages/Cases/OloDocumentPage.razor.rz.scp.css */
/* Layout only; the card, chip, buttons and notes take their look from app.css (DESIGN-SYSTEM.md section 5). */
.doc-card[b-ej5nr638zj] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
}

.doc-card h2[b-ej5nr638zj] {
    margin: 0;
}

.doc-note[b-ej5nr638zj] {
    margin: 0;
    max-width: 72ch;
}

/* The Word editor keeps its own scroll inside the card; the page never scrolls sideways. */
.doc-editor[b-ej5nr638zj] {
    min-width: 0;
    overflow: hidden;
    border-radius: var(--radius-md);
}

.doc-upload[b-ej5nr638zj] {
    cursor: pointer;
}

.doc-upload[b-ej5nr638zj]  input[type="file"] {
    display: none;
}
/* /Components/Pages/Dashboard/DashboardPage.razor.rz.scp.css */
/* Business overview layout only (13-Dashboard.md section 4.1). 1440: hero 4 + four tiles 2 each; the attention list beside the
   forecast (dense flow fills the forecast in on its left). 1200-1439: the hero takes a full row, the tiles share the next.
   900-1199: six columns, the attention list right under the tiles. Under 600: one column, hero, attention, tiles two per row,
   forecast, sales, then the rest. */
.dash-grid[b-gd0ag4fyy7] {
    grid-auto-flow: row dense;
}

.dash-grid[b-gd0ag4fyy7]  .dash-hero {
    grid-column: span 4;
}

.dash-grid[b-gd0ag4fyy7]  .dash-attention {
    grid-column: 9 / -1;
}

@media (max-width: 1439px) {
    .dash-grid[b-gd0ag4fyy7]  .dash-hero {
        grid-column: 1 / -1;
    }
}

@media (max-width: 1199px) {
    .dash-grid[b-gd0ag4fyy7]  .dash-attention {
        grid-column: 1 / -1;
    }
}

@media (max-width: 599px) {
    .dash-band-first[b-gd0ag4fyy7] {
        order: -10;
    }

    .dash-grid[b-gd0ag4fyy7]  .dash-hero {
        order: -9;
    }

    .dash-grid[b-gd0ag4fyy7]  .dash-attention {
        order: -8;
    }

    .dash-grid[b-gd0ag4fyy7]  .dash-tile {
        order: -7;
    }

    .dash-grid[b-gd0ag4fyy7]  .dash-forecast {
        order: -6;
    }

    .dash-grid[b-gd0ag4fyy7]  .dash-sales {
        order: -5;
    }
}
/* /Components/Pages/Dashboard/MyWorkPage.razor.rz.scp.css */
/* My work layout only (13-Dashboard.md section 4.1): from 1200px To do now on the left (8 columns), This month and Coming up stacked
   on the right (4); under 1200px one column in that order. */
.dash-grid[b-bvwf9erqd7]  .mywork-main {
    grid-column: span 8;
}

.mywork-side[b-bvwf9erqd7] {
    display: flex;
    flex-direction: column;
    gap: var(--gap-cards);
    grid-column: span 4;
    min-width: 0;
}

@media (max-width: 1199px) {
    .dash-grid[b-bvwf9erqd7]  .mywork-main, .mywork-side[b-bvwf9erqd7] {
        grid-column: 1 / -1;
    }
}
/* /Components/Pages/Files/FileCheckPage.razor.rz.scp.css */
/* Layout only: the since field and its hint on one row, the area cards in a responsive grid that scrolls inside its tab, each card's facts
   in two columns. */
.toolbar .file-check-note[b-y0wu74njvh] {
    flex: 1 1 18rem;
    margin: 0;
}

.file-check-scroll[b-y0wu74njvh] {
    flex: 1 1 0;
    min-height: 0;
    margin: calc(var(--space-1) * -1);
    padding: var(--space-1);
    overflow-y: auto;
}

.file-areas[b-y0wu74njvh] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr));
    gap: var(--gap-cards);
}

.file-area[b-y0wu74njvh] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
}

.file-area .card-head[b-y0wu74njvh] {
    margin-bottom: 0;
}

.file-area-facts[b-y0wu74njvh] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3) var(--space-4);
    margin: 0;
}

.file-area-newest[b-y0wu74njvh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0 var(--space-2);
    min-width: 0;
    margin: 0;
}

.file-area-actions[b-y0wu74njvh] {
    margin-top: auto;
}
/* /Components/Pages/Finance/FinancePage.razor.rz.scp.css */
/* Layout only: the end date, Generate, Add to review and the overflow share the toolbar; the figures sit beside the generated-at line;
   a forecast that is not generated yet fills its card with the one line that says so. */
.finance-toolbar[b-piffzkx6n1] {
    align-items: flex-end;
}

.finance-end[b-piffzkx6n1] {
    flex: 0 1 11rem;
    margin-bottom: 0;
}

.finance-admin-only[b-piffzkx6n1] {
    align-self: center;
}

.finance-summary[b-piffzkx6n1] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--space-2) var(--space-6);
    margin-bottom: var(--gap-toolbar);
}

.finance-generated[b-piffzkx6n1] {
    margin: 0;
    font-size: var(--font-size-sm);
}

.finance-empty[b-piffzkx6n1] {
    display: grid;
    flex: 1 1 0;
    place-items: center;
    min-height: 12rem;
}
/* /Components/Pages/Finance/ReviewBatchPage.razor.rz.scp.css */
/* Layout only: the figures sit between the direction switch and the grid, at the toolbar's rhythm. */
.finance-batch-figures[b-jt0dyp4jr5] {
    margin-bottom: var(--gap-toolbar);
}
/* /Components/Pages/Quotations/QuotationDetailsPage.razor.rz.scp.css */
/* Layout only; the detail-page layout (two columns, definition lists, rows), cards, chips, buttons, tables and fields take
   their look from app.css (DESIGN-SYSTEM.md section 5). */

.details-number[b-ifiteah0fx] {
    font-variant-numeric: tabular-nums;
}

.details-products[b-ifiteah0fx] {
    margin: 0;
    padding-left: var(--space-4);
}

.details-sign[b-ifiteah0fx] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--space-3);
}

.details-sign .field[b-ifiteah0fx] {
    flex: 1 1 10rem;
    margin: 0;
}
/* /Components/Pages/Quotations/QuotationDocumentPage.razor.rz.scp.css */
/* Layout only; the card, chip, buttons and notes take their look from app.css (DESIGN-SYSTEM.md section 5). */
.doc-card[b-mlfu09nh81] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
}

.doc-note[b-mlfu09nh81] {
    margin: 0;
    max-width: 72ch;
}

/* The Word editor keeps its own scroll inside the card; the page never scrolls sideways. */
.doc-editor[b-mlfu09nh81] {
    min-width: 0;
    overflow: hidden;
    border-radius: var(--radius-md);
}

.doc-upload[b-mlfu09nh81] {
    cursor: pointer;
}

.doc-upload[b-mlfu09nh81]  input[type="file"] {
    display: none;
}

/* On a phone the back button, the title and the status chip wrap as whole items; the number never breaks at its hyphens. */
.page-title[b-mlfu09nh81] {
    flex-wrap: wrap;
}

.page-title h1[b-mlfu09nh81],
.page-title .chip[b-mlfu09nh81] {
    white-space: nowrap;
}

/* Status reads by colour as well as by its word (DESIGN-SYSTEM.md section 4), with the tints of the list's status pills. */
.status-ok[b-mlfu09nh81] {
    border-color: transparent;
    background: var(--color-success-bg);
}

.status-pending[b-mlfu09nh81] {
    border-color: transparent;
    background: var(--color-warning-bg);
}
/* /Components/Pages/Quotations/QuotationWizardPage.razor.rz.scp.css */
/* Layout of the quotation wizard; the shared wizard look (frame, steps, panes, footer, review cards) is in app.css. */

/* The contacts table drops its low-priority columns as the window narrows. */
@media (max-width: 599px) {
    .hide-phone[b-ltjgqgbyin] {
        display: none;
    }
}

@media (max-width: 1279px) {
    .hide-tablet[b-ltjgqgbyin] {
        display: none;
    }
}

.wizard-suffix[b-ltjgqgbyin] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.wizard-suffix input[b-ltjgqgbyin] {
    flex: 1;
    min-width: 0;
}

/* The amount and Weeks / Days side by side under the legend. */
.wizard-delivery[b-ltjgqgbyin] {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    margin-inline: 0;
    padding: 0;
    border: 0;
}

.wizard-delivery legend[b-ltjgqgbyin] {
    width: 100%;
    margin-bottom: var(--space-1);
    padding: 0;
    font-size: var(--font-size-sm);
    font-weight: var(--weight-emph);
    letter-spacing: var(--tracking-small);
}

.wizard-delivery input[b-ltjgqgbyin] {
    width: 6rem;
}

.wizard-delivery select[b-ltjgqgbyin] {
    flex: 1;
    min-width: 8rem;
}

.wizard-delivery .field-message[b-ltjgqgbyin] {
    width: 100%;
}

.wizard-qty[b-ltjgqgbyin] {
    width: 5rem;
    text-align: right;
}
/* /Components/Pages/Settings/CountryLanguagesTab.razor.rz.scp.css */
/* Layout only: the language pickers fill their cells at the small control height, the hint sits under the toolbar. */
.language-select[b-6brn6u11vi] {
    width: 100%;
    height: var(--control-height-sm);
}

.settings-hint[b-6brn6u11vi] {
    margin: 0 0 var(--gap-toolbar);
    font-size: var(--font-size-sm);
}
/* /Components/Pages/SpareParts/MachinesDialog.razor.rz.scp.css */
.machines-dialog[b-dpsqtyt4wd] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-height: 18rem;
}
/* /Components/Pages/SpareParts/PartCostsPanel.razor.rz.scp.css */
.part-costs .card-head h3[b-uh9hbctplv] {
    margin: 0;
    font-size: var(--font-size-base);
    font-weight: var(--weight-emph);
}

.costs-table th[b-uh9hbctplv],
.costs-table td[b-uh9hbctplv] {
    padding: var(--space-1) var(--space-2);
}

.costs-table .num[b-uh9hbctplv] {
    text-align: right;
    width: 9rem;
}

.costs-table .costs-actions[b-uh9hbctplv] {
    width: 3rem;
}

.costs-table select[b-uh9hbctplv],
.costs-table input[b-uh9hbctplv] {
    width: 100%;
    padding: var(--space-1) var(--space-2);
}

.costs-table input[b-uh9hbctplv] {
    text-align: right;
}
/* /Components/Pages/SpareParts/PriceListTab.razor.rz.scp.css */
.machine-cell[b-flgkyhrm0b] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.machine-cell-row[b-flgkyhrm0b] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.machine-cell-row .machine-cell[b-flgkyhrm0b] {
    flex: 1;
    min-width: 0;
}
/* /Components/Pages/SpareParts/SparePartPage.razor.rz.scp.css */
.part-flags[b-0j3w9kx11j] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
    gap: var(--space-2) var(--space-4);
}

.part-prices[b-0j3w9kx11j] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    max-width: 22rem;
    margin-top: var(--space-4);
}

.part-prices .field[b-0j3w9kx11j] {
    margin-bottom: 0;
}

.multiplier[b-0j3w9kx11j] {
    margin-right: var(--space-2);
    color: var(--color-text-muted);
    font-weight: var(--weight-body);
}
/* /Components/Pages/SpareParts/SupplierHistoryPanel.razor.rz.scp.css */
.history-hint[b-r1sqikfumb] {
    margin: 0 0 var(--space-3);
}
/* /Components/Pages/SpareParts/TranslationsDialog.razor.rz.scp.css */
.translations[b-p26x5ls71c] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.translation-row[b-p26x5ls71c] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--space-3);
    align-items: end;
}
/* /Components/Pages/Users/UserPage.razor.rz.scp.css */
/* Layout only: the allowed countries and the allowed languages side by side from 900px. */
.user-lists[b-7zayon26ql] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--gap-cards);
}

@media (min-width: 900px) {
    .user-lists[b-7zayon26ql] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
/* /Components/Pages/Vesuvio/InventorFilePage.razor.rz.scp.css */
/* Layout only: a tick box beside the part number; the tree's room is the window's remaining height. */
.tick[b-v39agoxjjf] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
}
/* /Components/Pages/Vesuvio/IssuedPartsPage.razor.rz.scp.css */
/* Layout only: the refusal text keeps its line breaks (it lists the codes that already exist). */
.issued-notice-text[b-x6pwx485y6] {
    white-space: pre-line;
}
/* /Components/Pages/Vesuvio/ProductHierarchyTab.razor.rz.scp.css */
/* Layout only: three lists side by side from about 1100px, narrower cards than the settings lists. */
.hierarchy[b-8s8ifdwu2v] {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
}
