/* /Components/Attachments/BlobAttachmentGrid.razor.rz.scp.css */
.blob-attachment-grid__file-name[b-xo4c3r75h2] {
    display: block;
    max-width: 18rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.blob-attachment-grid__missing-file[b-xo4c3r75h2] {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-4);
    color: var(--nxs-warning);
    font-weight: 600;
}

.blob-attachment-grid[b-xo4c3r75h2]  .blob-attachment-grid__row--missing td {
    background: color-mix(in srgb, var(--nxs-warning) 8%, transparent);
}

.blob-attachment-grid[b-xo4c3r75h2]  .blob-attachment-grid__row--missing td:first-child {
    border-left: 3px solid var(--nxs-warning);
}

.blob-attachment-grid__actions[b-xo4c3r75h2] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--nxs-space-4);
    min-width: 5rem;
}
/* /Components/Attachments/BlobAttachmentPreviewDialog.razor.rz.scp.css */
.blob-attachment-preview-dialog[b-kz1jnyyjsy]  .mud-dialog-content {
    overflow: hidden;
}

.blob-attachment-preview-dialog__title-row[b-kz1jnyyjsy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    width: 100%;
}

.blob-attachment-preview-dialog__title-row .mud-typography[b-kz1jnyyjsy] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.blob-attachment-preview-dialog__content[b-kz1jnyyjsy] {
    position: relative;
    width: 100%;
    height: min(78vh, 54rem);
    min-height: 32rem;
    overflow: hidden;
    background: var(--nxs-geometry-surface);
}

.blob-attachment-preview-dialog__image[b-kz1jnyyjsy] {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.blob-attachment-preview-dialog__message[b-kz1jnyyjsy] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: var(--nxs-space-24);
    color: var(--nxs-text-muted);
    text-align: center;
}

@media (max-width: 600px) {
    .blob-attachment-preview-dialog__content[b-kz1jnyyjsy] {
        height: 78vh;
        min-height: 20rem;
    }
}
/* /Components/Attachments/BlobAttachmentsDialog.razor.rz.scp.css */
.blob-attachments-dialog__title-row[b-l7po8ubeup] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    width: 100%;
}

.blob-attachments-dialog__body[b-l7po8ubeup] {
    max-height: 75vh;
    overflow: auto;
}

.blob-attachments-dialog__tables[b-l7po8ubeup] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
    min-width: 0;
}

.blob-attachments-dialog__collection[b-l7po8ubeup] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.blob-attachments-dialog__section-title[b-l7po8ubeup] {
    color: var(--nxs-text);
}

.blob-attachments-dialog__empty[b-l7po8ubeup] {
    padding: var(--nxs-space-24) var(--nxs-space-24) var(--nxs-space-48);
    color: var(--nxs-text-muted);
    text-align: center;
}
/* /Components/BreadcrumbDisplayer.razor.rz.scp.css */
.breadcrumb-container[b-rce08tdf2a] {
    display: flex;
    align-items: center;

    height: 2.5em;
}

.breadcrumb-container[b-rce08tdf2a]  .k-breadcrumb-link,
.breadcrumb-container[b-rce08tdf2a]  .k-breadcrumb-root-link {
    border-bottom: none;
    box-shadow: none;
}
/* /Components/Build/EosImportRequestForm.razor.rz.scp.css */
.eos-import-form[b-ai4peqa7sx] {
    min-width: min(100%, 26rem);
}

.eos-import-form__actions[b-ai4peqa7sx] {
    display: flex;
    justify-content: flex-end;
}
/* /Components/Build/EosParameterGrid.razor.rz.scp.css */
.custom-window-colour[b-5ihrc88wlg] {
    background-color: var(--nxs-bg) !important;
}
/* /Components/ComboBox.razor.rz.scp.css */
.combo-box-container[b-diqptnrlgu] {
    position: relative;
    padding: 0;
}

.input-bar-container[b-diqptnrlgu] {
    width: 100%;

    display: flex;
    flex-direction: row;
    align-items: center;

    overflow: hidden;
}

.input-bar-embedded-icon-bar[b-diqptnrlgu] {
    display: flex;
    flex-direction: row;

    height: 100%;
    /*z-index: 2;*/

    position: relative;
    width: 2em;
    
    background-color: var(--bs-secondary-bg);
    transition: background-color 0.15s;
}

.input-bar-embedded-icon-bar:hover[b-diqptnrlgu] {
    background-color: var(--bs-secondary-bg);
    cursor: pointer;
}

.input-bar-embedded-icon-bar-disabled[b-diqptnrlgu] {
    opacity: 0.55;
}

.input-bar-embedded-icon-bar-disabled:hover[b-diqptnrlgu] {
    cursor: not-allowed;
}

.icon-bar-icon[b-diqptnrlgu] {
    font-size: 0.75rem;

    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

.icon-bar-icon-disabled[b-diqptnrlgu] {
    opacity: 0.6;
}

.dropdown-container[b-diqptnrlgu] {
    position: absolute;
    z-index: 2;

    height: 0;
    width: 100%;

    overflow-y: auto;
    background-color: var(--bs-body-bg);
}

.dropdown-container-template-container[b-diqptnrlgu] {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

.dropdown-container-collapsed-animation[b-diqptnrlgu] {
    animation: collapse-b-diqptnrlgu 0.15s;
    overflow-y: hidden;
    height: 0;

    border: 1px black solid;
}

.dropdown-container-collapsed-animation-finished[b-diqptnrlgu] {
    border: none;
}

.dropdown-container-expanded-animation[b-diqptnrlgu] {
    animation: expand-b-diqptnrlgu 0.15s;
    overflow-y: auto;
    height: 25em;
    
    border: 1px black solid;
    border-radius: 0 0 var(--nxs-radius-lg) var(--nxs-radius-lg);
}

.dropdown-item[b-diqptnrlgu] {
    z-index: 2;
    padding: 0.25em 0 0.25em 1em;
    transition: background-color 0.15s;
}

.dropdown-item:hover[b-diqptnrlgu] {
    background-color: var(--nxs-accent-bright);
    cursor: pointer;
}

.combo-box-input-text.invalid[b-diqptnrlgu] {
    border: 1px solid var(--bs-form-invalid-border-color);
    border-radius: var(--nxs-radius-sm);
    outline: none;
}

.combo-box-input-text.invalid:focus[b-diqptnrlgu] {
    box-shadow: 0 0 0 0.1rem rgba(220, 53, 69, 0.25);
}

.nxs-row-input-component[b-diqptnrlgu] {
    height: 2.5em;
    width: 100%;
    border-radius: var(--nxs-radius-sm);
}


@keyframes expand-b-diqptnrlgu {
    from {
        overflow-y: hidden;
        height: 0;
    }
    to {
        height: 25em;
    }
}

@keyframes collapse-b-diqptnrlgu {
    from {
        height: 25em;
    }
    to {
        height: 0;
    }
}
/* /Components/ComingSoonPanel.razor.rz.scp.css */
.coming-soon-shell[b-8zspe2elx7] {
    position: relative;
    width: 100%;
    min-height: 24rem;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    background: radial-gradient(circle at 50% 40%, rgba(0, 188, 212, 0.12), rgba(0, 0, 0, 0) 58%),
        linear-gradient(160deg, var(--nxs-overlay-subtle), rgba(255, 255, 255, 0.01));
}

.coming-soon-accent[b-8zspe2elx7] {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(120deg, rgba(0, 188, 212, 0) 30%, rgba(0, 188, 212, 0.08) 50%, rgba(0, 188, 212, 0) 70%);
    transform: translateX(-100%);
    animation: coming-soon-sweep-b-8zspe2elx7 3.8s ease-in-out infinite;
}

.coming-soon-content[b-8zspe2elx7] {
    text-align: center;
    padding: 2rem;
    z-index: 1;
}

.coming-soon-title[b-8zspe2elx7] {
    margin: 0;
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 800;
    letter-spacing: 0.02em;
    color: #d5f7fc;
    text-transform: uppercase;
}

.coming-soon-subtitle[b-8zspe2elx7] {
    margin: 0.85rem 0 0;
    font-size: 0.95rem;
    opacity: 0.8;
}

@keyframes coming-soon-sweep-b-8zspe2elx7 {
    0% {
        transform: translateX(-100%);
    }

    50% {
        transform: translateX(100%);
    }

    100% {
        transform: translateX(100%);
    }
}
/* /Components/ComponentVersions/Spc/ComponentSpcChartSection.razor.rz.scp.css */
.component-spc-chart-section[b-l1rc7ac7mv] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    padding: var(--nxs-space-16);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface-inset);
}

.component-spc-chart-section__header[b-l1rc7ac7mv] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

.component-spc-chart-section__title[b-l1rc7ac7mv] {
    margin: 0;
    color: var(--nxs-text);
    font-size: 0.98rem;
    font-weight: 700;
}

.component-spc-chart-card__title[b-l1rc7ac7mv] {
    margin: 0;
    color: var(--nxs-text);
    font-size: 0.98rem;
    line-height: 1.35;
    font-weight: 400;
}

.component-spc-chart-card__title-primary[b-l1rc7ac7mv] {
    font-weight: 700;
}

.component-spc-chart-card__title-technical[b-l1rc7ac7mv] {
    color: var(--nxs-text-subtle);
    font-weight: 400;
}

.component-spc-chart-section__subtitle[b-l1rc7ac7mv] {
    margin: var(--nxs-space-6) 0 0;
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.5;
}

.component-spc-chart-section__meta[b-l1rc7ac7mv] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}

.component-spc-chart-section__empty[b-l1rc7ac7mv] {
    margin: 0;
    color: var(--nxs-text-muted);
    line-height: 1.5;
}

.component-spc-chart-section__charts[b-l1rc7ac7mv] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
    gap: var(--nxs-space-16);
}

.component-spc-chart-card__content[b-l1rc7ac7mv] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    min-width: 0;
}

.component-spc-chart-card__title-row[b-l1rc7ac7mv] {
    display: flex;
    align-items: flex-start;
    gap: var(--nxs-space-6);
    min-width: 0;
}

.component-spc-chart-card__title-row > div:first-child[b-l1rc7ac7mv] {
    min-width: 0;
}

.component-spc-chart-card__title-row[b-l1rc7ac7mv]  .component-spc-chart-card__info,
.component-spc-chart-card__rules-title-row[b-l1rc7ac7mv]  .component-spc-chart-card__info {
    flex: 0 0 auto;
}

.component-spc-chart-section[b-l1rc7ac7mv]  .component-spc-chart-card__rule-definitions-tooltip {
    display: inline-block;
    width: fit-content;
    max-width: none;
    max-height: none;
    overflow: visible;
}

.component-spc-chart-card__rule-definitions-tooltip-content[b-l1rc7ac7mv] {
    text-align: left;
}

.component-spc-chart-card__rule-definitions-tooltip-title[b-l1rc7ac7mv] {
    display: block;
    margin-bottom: var(--nxs-space-6);
    text-align: left;
}

.component-spc-chart-card__rule-definitions-tooltip-list[b-l1rc7ac7mv] {
    display: grid;
    gap: var(--nxs-space-4);
    margin: 0;
    padding: 0;
    list-style: none;
    text-align: left;
}

.component-spc-chart-card__rule-definition[b-l1rc7ac7mv] {
    white-space: normal;
    text-align: left;
}

.component-spc-chart-card__rules-title-row[b-l1rc7ac7mv] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-6);
    min-width: 0;
}

.component-spc-chart-card__rules[b-l1rc7ac7mv] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.component-spc-chart-card__rules-title[b-l1rc7ac7mv] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
    letter-spacing: 0;
    text-transform: uppercase;
}

.component-spc-chart-card__rules-empty[b-l1rc7ac7mv] {
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
}

.component-spc-chart-card__rule-list[b-l1rc7ac7mv] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}

.component-spc-chart-section[b-l1rc7ac7mv]  .component-spc-chart-card__rule-tooltip {
    display: inline-flex;
}
.component-spc-chart-card__fullscreen[b-l1rc7ac7mv] {
    display: flex;
    width: 100%;
    height: 100%;
    min-height: 0;
}

.component-spc-chart-dialog__title[b-l1rc7ac7mv] {
    margin: 0;
    color: var(--nxs-text);
}

.component-spc-chart-dialog[b-l1rc7ac7mv]  .mud-dialog-content {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    padding: var(--nxs-space-16);
}

.component-spc-chart-dialog[b-l1rc7ac7mv]  .nxs-chart {
    flex: 1 1 auto;
    min-height: 0;
}

.component-spc-shell__banner[b-l1rc7ac7mv] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    padding: var(--nxs-space-16);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface);
    color: var(--nxs-text-subtle);
}

.component-spc-shell__banner-title[b-l1rc7ac7mv] {
    color: var(--nxs-text);
    font-weight: 700;
}

@media (max-width: 900px) {
    .component-spc-chart-section__charts[b-l1rc7ac7mv] {
        grid-template-columns: minmax(0, 1fr);
    }

    .component-spc-chart-card__title-row[b-l1rc7ac7mv] {
        align-items: flex-start;
    }
}
/* /Components/ComponentVersions/Spc/ComponentSpcControlLimitDialog.razor.rz.scp.css */
.component-spc-control-limit-dialog__title-block[b-je3rph55i5] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

.component-spc-control-limit-dialog__title-subtitle[b-je3rph55i5] {
    color: var(--nxs-text-subtle);
}

.component-spc-control-limit-dialog__content[b-je3rph55i5] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.component-spc-control-limit-dialog__note[b-je3rph55i5] {
    margin-top: var(--nxs-space-8);
}

.component-spc-control-limit-dialog__summary[b-je3rph55i5] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
}

.component-spc-control-limit-dialog__summary-text[b-je3rph55i5] {
    color: var(--nxs-text);
    line-height: 1.5;
}

.component-spc-control-limit-dialog__summary-text--subtle[b-je3rph55i5] {
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
}

.component-spc-control-limit-dialog__actions[b-je3rph55i5] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}

.component-spc-control-limit-dialog__build-list-block[b-je3rph55i5] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.component-spc-control-limit-dialog__build-details[b-je3rph55i5] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    min-width: 0;
}

.component-spc-control-limit-dialog__build-selection[b-je3rph55i5] {
    display: flex;
    justify-content: center;
}

.component-spc-control-limit-dialog__build-list-block[b-je3rph55i5]  .component-spc-control-limit-dialog__selection-column {
    text-align: center;
}

.component-spc-control-limit-dialog__build-list-block[b-je3rph55i5]  .component-spc-control-limit-dialog__selection-column .column-header {
    justify-content: center;
}

.component-spc-control-limit-dialog__build-row-main[b-je3rph55i5] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--nxs-space-8);
}

.component-spc-control-limit-dialog__build-name[b-je3rph55i5] {
    font-weight: 700;
}

.component-spc-control-limit-dialog__build-meta[b-je3rph55i5],
.component-spc-control-limit-dialog__build-file[b-je3rph55i5] {
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
}

@media (max-width: 900px) {
    .component-spc-control-limit-dialog__actions[b-je3rph55i5] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/ComponentVersions/Spc/ComponentSpcMachineSignals.razor.rz.scp.css */
.component-spc-machine-signals[b-6o5x0mfnkz] {
    min-width: 0;
    --sticky-col-width: clamp(12rem, 22vw, 20rem);
    --sticky-grid-col-width: 17rem;
    --sticky-grid-height: 22.5rem;
    --sticky-header-height: 3.25rem;
    --sticky-grid-cell-padding: var(--nxs-space-4) var(--nxs-space-12);
}

.component-spc-machine-signals[b-6o5x0mfnkz]  .component-spc-machine-signals__panel {
    min-width: 0;
    overflow: hidden;
    padding: var(--nxs-space-16);
}

.component-spc-machine-signals[b-6o5x0mfnkz]  .component-spc-machine-signals__panel > .nxs-card__header {
    margin-bottom: var(--nxs-space-8);
    padding-bottom: var(--nxs-space-8);
}

.component-spc-machine-signals[b-6o5x0mfnkz]  .component-spc-machine-signals__panel--collapsed > .nxs-card__header {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: 0;
}

.component-spc-machine-signals__header-title[b-6o5x0mfnkz] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    min-width: 0;
    flex-wrap: wrap;
}

.component-spc-machine-signals__title[b-6o5x0mfnkz] {
    margin: 0;
    color: var(--nxs-text);
    font-size: 1rem;
    font-weight: 700;
}

.component-spc-machine-signals__description[b-6o5x0mfnkz] {
    flex: 1 1 18rem;
    min-width: min(14rem, 100%);
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
    font-weight: 400;
}

.component-spc-machine-signals__warning-label[b-6o5x0mfnkz] {
    flex: 0 0 auto;
    color: var(--nxs-danger-text);
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
}

.component-spc-machine-signals__scroll[b-6o5x0mfnkz] {
    max-height: var(--sticky-grid-height);
    overscroll-behavior-inline: contain;
}

.component-spc-machine-signals__matrix th[b-6o5x0mfnkz],
.component-spc-machine-signals__matrix td[b-6o5x0mfnkz] {
    height: 2.25rem;
    vertical-align: middle;
}

.component-spc-machine-signals__dimension-header[b-6o5x0mfnkz],
.component-spc-machine-signals__dimension-cell[b-6o5x0mfnkz] {
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
    font-weight: 600;
    white-space: normal;
    overflow-wrap: break-word;
}

.component-spc-machine-signals__dimension-header[b-6o5x0mfnkz] {
    color: var(--nxs-text);
}

.component-spc-machine-signals__machine-header[b-6o5x0mfnkz],
.component-spc-machine-signals__kpi-cell[b-6o5x0mfnkz] {
    width: var(--sticky-grid-col-width);
    min-width: var(--sticky-grid-col-width);
}

.component-spc-machine-signals__kpi-cell[b-6o5x0mfnkz] {
    padding: var(--sticky-grid-cell-padding) !important;
}

.component-spc-machine-signals__kpi-cell--unavailable[b-6o5x0mfnkz] {
    opacity: 0.55;
}

.component-spc-machine-signals__empty-value[b-6o5x0mfnkz] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
}

.component-spc-machine-signals__rules[b-6o5x0mfnkz] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-start;
    gap: var(--nxs-space-4);
    min-width: 0;
}

.component-spc-machine-signals__rule-categories[b-6o5x0mfnkz] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.component-spc-machine-signals__rule-category[b-6o5x0mfnkz] {
    display: flex;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.component-spc-machine-signals__rule-category-label[b-6o5x0mfnkz] {
    flex: 0 0 auto;
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-xs);
    font-weight: 700;
    line-height: 1.5rem;
    white-space: nowrap;
}

.component-spc-machine-signals__rule-chip[b-6o5x0mfnkz] {
    display: inline-flex;
    align-items: center;
    min-height: 1.5rem;
    padding: var(--nxs-space-2) var(--nxs-space-8);
    border: 1px solid currentColor;
    border-radius: var(--nxs-radius-pill);
    font-size: var(--nxs-text-size-xs);
    font-weight: 700;
    line-height: 1.2;
    white-space: nowrap;
}

.component-spc-machine-signals__rule-chip--severity-1[b-6o5x0mfnkz] {
    color: var(--nxs-warning);
}

.component-spc-machine-signals__rule-chip--severity-2[b-6o5x0mfnkz] {
    color: color-mix(in srgb, var(--nxs-warning) 55%, var(--nxs-danger-text));
}

.component-spc-machine-signals__rule-chip--severity-3[b-6o5x0mfnkz] {
    color: var(--nxs-danger-text);
}

.component-spc-machine-signals__rule-chip--severity-4[b-6o5x0mfnkz] {
    color: var(--nxs-danger);
}

.component-spc-machine-signals__rule-chip--outlier[b-6o5x0mfnkz] {
    color: var(--nxs-text-subtle);
    opacity: 0.62;
}
/* /Components/ComponentVersions/Spc/ComponentSpcStateBoundary.razor.rz.scp.css */
.component-spc-state-boundary__empty[b-h7pe7m2aky] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    padding: var(--nxs-space-24);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface);
}

.component-spc-state-boundary__title[b-h7pe7m2aky],
.component-spc-state-boundary__message[b-h7pe7m2aky] {
    margin: 0;
}

.component-spc-state-boundary__title[b-h7pe7m2aky] {
    color: var(--nxs-text);
    font-size: 1.05rem;
    font-weight: 700;
}

.component-spc-state-boundary__message[b-h7pe7m2aky] {
    color: var(--nxs-text-muted);
}

.component-spc-state-boundary__actions[b-h7pe7m2aky] {
    display: flex;
    gap: var(--nxs-space-12);
    margin-top: var(--nxs-space-4);
}
/* /Components/Dashboarding/UI/DropInChart.razor.rz.scp.css */
/* Chart footprint while the render pipeline loads — the same golden-ratio box the
   rendered chart occupies, so dashboard tiles keep their size. The house spinner is
   the loading state; there is no bespoke shimmer. */
.drop-in-chart__loading[b-xd1nxgh04a] {
    display: grid;
    place-items: center;
    width: 100%;
    aspect-ratio: 1.618 / 1;
}

/* Static failed/empty placeholder (not a loading state): a calm token panel in place
   of the old light-grey shimmer block with hardcoded black text. */
.drop-in-chart__placeholder[b-xd1nxgh04a] {
    display: grid;
    place-items: center;
    width: 100%;
    min-height: 200px;
    padding: var(--nxs-space-20);
    background: var(--nxs-surface-2);
    border-radius: var(--nxs-radius-lg);
}

.drop-in-chart__placeholder-text[b-xd1nxgh04a] {
    display: grid;
    justify-items: center;
    gap: var(--nxs-space-8);
    text-align: center;
    color: var(--nxs-text);
    font-size: 1.25rem;
}

/* TelerikSvgIcon is a child component, so its root never carries this file's scope —
   the sizing/colour must pierce from the scoped placeholder above it. */
.drop-in-chart__placeholder[b-xd1nxgh04a]  .drop-in-chart__placeholder-icon {
    width: 5rem;
    height: 5rem;
    font-size: 5rem;
    color: var(--nxs-text-muted);
}
/* /Components/DataImport/DataStorageSpecificationDialog.razor.rz.scp.css */
.data-storage-specification-dialog__title-row[b-j473ff6anm] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    width: 100%;
}

.data-storage-specification-dialog__body[b-j473ff6anm],
.data-storage-specification-dialog__section[b-j473ff6anm],
.data-storage-specification-dialog__diagrams[b-j473ff6anm] {
    display: flex;
    flex-direction: column;
}

.data-storage-specification-dialog__body[b-j473ff6anm] {
    gap: var(--nxs-space-20);
}

.data-storage-specification-dialog__section[b-j473ff6anm] {
    gap: var(--nxs-space-8);
}

.data-storage-specification-dialog__diagrams[b-j473ff6anm] {
    gap: var(--nxs-space-16);
}

.data-storage-specification-dialog__extensions[b-j473ff6anm] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}

.data-storage-specification-dialog__extensions[b-j473ff6anm]  .data-storage-specification-dialog__extension {
    font-family: var(--nxs-font-mono);
}

.data-storage-specification-dialog__list[b-j473ff6anm] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    margin: 0;
    padding-left: var(--nxs-space-24);
}

.data-storage-specification-dialog__list--examples code[b-j473ff6anm] {
    overflow-wrap: anywhere;
}
/* /Components/DataImport/ManualImportFolderPresets.razor.rz.scp.css */
.nxs-import-saved-searches[b-eig3n2ddrx] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--nxs-space-8);
    min-width: 0;
}

.nxs-import-saved-searches__field[b-eig3n2ddrx] {
    min-width: 0;
}

.nxs-import-saved-searches__action[b-eig3n2ddrx] {
    display: flex;
    align-items: center;
}

.nxs-import-saved-searches__list[b-eig3n2ddrx] {
    display: grid;
    gap: var(--nxs-space-8);
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    width: 100%;
    min-width: 0;
}

.nxs-import-saved-search[b-eig3n2ddrx] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) var(--nxs-control-h-md);
    align-items: stretch;
    min-width: 0;
    max-width: 100%;
    min-height: 0;
    border: 1px solid var(--nxs-accent-30);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-accent-20);
    color: var(--nxs-accent);
    overflow: hidden;
}

.nxs-import-saved-search__apply[b-eig3n2ddrx] {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-8);
    min-width: 0;
    max-width: 100%;
    height: 100%;
    border: 0;
    padding: var(--nxs-space-6) var(--nxs-space-8) var(--nxs-space-6) var(--nxs-space-12);
    color: inherit;
    background: transparent;
    text-align: left;
    cursor: pointer;
}

.nxs-import-saved-search__apply:disabled[b-eig3n2ddrx] {
    color: var(--nxs-text-muted);
    cursor: not-allowed;
}

.nxs-import-saved-search__apply:not(:disabled):hover[b-eig3n2ddrx],
.nxs-import-saved-search__apply:not(:disabled):focus-visible[b-eig3n2ddrx] {
    color: var(--nxs-text);
}

.nxs-import-saved-search__content[b-eig3n2ddrx] {
    display: grid;
    gap: var(--nxs-space-2);
    min-width: 0;
}

.nxs-import-saved-search__component[b-eig3n2ddrx],
.nxs-import-saved-search__path[b-eig3n2ddrx],
.nxs-import-saved-search__step[b-eig3n2ddrx] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nxs-import-saved-search__component[b-eig3n2ddrx] {
    font-weight: 700;
    line-height: 1.2;
}

.nxs-import-saved-search__path[b-eig3n2ddrx],
.nxs-import-saved-search__step[b-eig3n2ddrx] {
    font-size: 0.8125rem;
    line-height: 1.2;
    color: var(--nxs-text-subtle);
}

.nxs-import-saved-search__delete-cell[b-eig3n2ddrx] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    min-height: 0;
    height: 100%;
}

.nxs-import-saved-search__delete-cell[b-eig3n2ddrx]  .nxs-import-saved-search__delete.mud-icon-button {
    margin: 0;
}
/* /Components/FileInput.razor.rz.scp.css */
/* /Components/FileProgressList.razor.rz.scp.css */
.file-upload-progress-container[b-pro4v3oz7a] {
    width: 35em;
    display: flex;
    flex-direction: column;
    row-gap: 1em;

    margin-top: 1em;
    margin-bottom: 1em;
}

.file-upload-progress-row[b-pro4v3oz7a] {
    display: grid;
    grid-template-columns: 10em 1fr auto;
    align-items: center;

    column-gap: 1em;
}

.file-upload-label[b-pro4v3oz7a] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.k-progressbar[b-pro4v3oz7a] {
    height: 2em !important;
}
/* /Components/Filters/AllMultiSelect.razor.rz.scp.css */
.all-multi-select[b-mx8zndbeyk] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    width: 100%;
    min-width: 0;
}

.all-multi-select__toggle[b-mx8zndbeyk] {
    display: flex;
    align-items: center;
    margin: 0;
}

.all-multi-select__select[b-mx8zndbeyk] {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

/* MudSelect has no FullWidth prop; force the inner control to fill and allow
   the selected-value text to ellipsis (also not exposed as a prop). */
.all-multi-select[b-mx8zndbeyk]  .mud-input-control,
.all-multi-select[b-mx8zndbeyk]  .mud-input,
.all-multi-select[b-mx8zndbeyk]  .mud-input-root,
.all-multi-select[b-mx8zndbeyk]  .mud-select {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

.all-multi-select[b-mx8zndbeyk]  .mud-select-input {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Filters/FilterModal.razor.rz.scp.css */
.filter-modal__content[b-ecvfmm7qvo] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    min-width: 0;
}
/* /Components/Filters/FilterToggleSection.razor.rz.scp.css */
.filter-toggle-section[b-lehso75cuf] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.filter-toggle-section--compact[b-lehso75cuf] {
    gap: 0.1rem;
}

.filter-toggle-section__header[b-lehso75cuf] {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
}

.filter-toggle-section__header h6[b-lehso75cuf] {
    margin: 0;
    flex: 1 1 auto;
}

.filter-toggle-section__mode[b-lehso75cuf] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
}

.filter-toggle-section__switch[b-lehso75cuf] {
    margin: 0;
}

.filter-toggle-section__content[b-lehso75cuf] {
    margin: 0;
    padding: 0;
    min-width: 0;
}

.filter-toggle-section__content--disabled[b-lehso75cuf] {
    opacity: 0.55;
}
/* /Components/Filters/NxsFilterDropdown.razor.rz.scp.css */
.nxs-filter-dropdown[b-qvp5k9eglv] {
    --nxs-filter-dropdown-radius: var(--nxs-radius-md);
    --nxs-filter-dropdown-accent: var(--nxs-accent);
    --nxs-filter-dropdown-button-text: var(--nxs-surface);
    --nxs-filter-dropdown-height: var(--nxs-control-h-lg);

    display: inline-flex;
    align-items: stretch;
    gap: 0;
    height: var(--nxs-filter-dropdown-height);
    min-width: 0;
}

.nxs-filter-dropdown--success[b-qvp5k9eglv] {
    --nxs-filter-dropdown-accent: var(--mud-palette-success, var(--nxs-success));
    --nxs-filter-dropdown-button-text: var(--nxs-surface);
}

.nxs-filter-dropdown[b-qvp5k9eglv]  .nxs-filter-dropdown__button-tooltip {
    display: flex;
    height: var(--nxs-filter-dropdown-height);
}

.nxs-filter-dropdown[b-qvp5k9eglv]  .nxs-filter-dropdown__button {
    min-height: var(--nxs-filter-dropdown-height);
    height: var(--nxs-filter-dropdown-height);
    min-width: 104px;
    padding: 0 10px;
    color: var(--nxs-surface);
    border-top-left-radius: var(--nxs-filter-dropdown-radius);
    border-bottom-left-radius: var(--nxs-filter-dropdown-radius);
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    background-color: var(--nxs-filter-dropdown-accent) !important;
    color: var(--nxs-filter-dropdown-button-text) !important;
    white-space: nowrap;
}

.nxs-filter-dropdown[b-qvp5k9eglv]  .mud-button-label {
    line-height: 1;
    white-space: nowrap;
}

.nxs-filter-dropdown__select-shell[b-qvp5k9eglv] {
    position: relative;
    width: clamp(210px, 18vw, 300px);
    min-width: 210px;
    height: var(--nxs-filter-dropdown-height);
}

/* Reserve a slot immediately before the chevron for the unsaved-state icon. */
.nxs-filter-dropdown__select-shell.has-unsaved[b-qvp5k9eglv]  .mud-input-adornment {
    padding-left: 22px;
}

.nxs-filter-dropdown__unsaved-marker[b-qvp5k9eglv] {
    position: absolute;
    top: 50%;
    right: 38px;
    transform: translateY(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    color: var(--nxs-warning);
    pointer-events: none;
    z-index: 2;
}

.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-control,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-control-input-container,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-root,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-outlined,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-outlined-border,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-select {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-top-right-radius: var(--nxs-filter-dropdown-radius);
    border-bottom-right-radius: var(--nxs-filter-dropdown-radius);
}

/* The select's outline ALWAYS matches the button's current colour (same Mud palette
   slot the button paints with), and never draws a left edge — the button is the left
   edge. !important because Mud recolours/rewidths this fieldset per state (idle,
   :hover, focus at 2px) with selectors a scoped rule can't consistently out-specify. */
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-outlined-border {
    border-color: var(--nxs-filter-dropdown-accent, var(--nxs-accent)) !important;
    border-left-width: 0 !important;
}

.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-control {
    margin-top: 0;
    margin-bottom: 0;
}

.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-control-input-container,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-root,
.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-select {
    min-height: var(--nxs-filter-dropdown-height);
    height: var(--nxs-filter-dropdown-height);
}

.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-slot {
    min-height: var(--nxs-filter-dropdown-height);
    height: var(--nxs-filter-dropdown-height);
    padding-top: 0;
    padding-bottom: 0;
    font-size: 0.85rem;
    line-height: var(--nxs-filter-dropdown-height);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.nxs-filter-dropdown__select-shell[b-qvp5k9eglv]  .mud-input-adornment {
    margin-top: 0;
    margin-bottom: 0;
}

.nxs-filter-dropdown__option-shell[b-qvp5k9eglv] {
    display: block;
    min-width: 0;
    width: 100%;
    overflow: hidden;
}

/* MudSelect reuses the option fragment for its selected value. Constrain the
   tooltip trigger so the actual text element, rather than the field, ellipsises. */
.nxs-filter-dropdown__option-shell[b-qvp5k9eglv]  .mud-tooltip-root {
    display: block;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
}

.nxs-filter-dropdown__option-text[b-qvp5k9eglv] {
    display: block;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Filters/SavedFilterPresetEditor.razor.rz.scp.css */
.saved-filter-preset-editor[b-62b16yqfvv] {
    display: flex;
    flex-direction: column;
    gap: 0;
    width: 100%;
    min-width: 0;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--nxs-overlay-hover);
}

.saved-filter-preset-editor__heading[b-62b16yqfvv] {
    margin-bottom: 0.57rem;
    font-size: 12px;
    color: var(--nxs-text-muted);
    font-weight: 600;
}

.saved-filter-preset-editor__fields[b-62b16yqfvv] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-start;
    min-width: 0;
}

.saved-filter-preset-editor__primary-field[b-62b16yqfvv] {
    flex: 1 1 14rem;
    min-width: 0;
}

.saved-filter-preset-editor__filter-name-shell[b-62b16yqfvv] {
    position: relative;
}

.saved-filter-preset-editor__primary-field[b-62b16yqfvv]  .mud-input-control {
    width: 100%;
    min-width: 0;
}

/* A single-line editable value may ellipsise while idle. The native field's end
   adornment owns its own space, and focus restores normal caret scrolling. */
.saved-filter-preset-editor__filter-name-shell[b-62b16yqfvv]  input.mud-input-slot:not(:focus) {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.saved-filter-preset-editor__visibility-field[b-62b16yqfvv] {
    flex: 0 0 auto;
    width: max-content;
    max-width: 100%;
}

.saved-filter-preset-editor__actions[b-62b16yqfvv] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 0.64rem;
}

.saved-filter-preset-editor__delete-action[b-62b16yqfvv] {
    margin-left: auto;
}
/* /Components/GeometryViewer.razor.rz.scp.css */
.geometry-viewer-container[b-cxuhvgclxl] {
    position: relative;
    background: var(--nxs-geometry-surface);
}

.geometry-viewer-canvas[b-cxuhvgclxl] {
    position: relative;
    z-index: 1;
    display: block;
    background: var(--nxs-geometry-surface);
    outline: none;
}

.geometry-viewer-canvas:focus[b-cxuhvgclxl],
.geometry-viewer-canvas:focus-visible[b-cxuhvgclxl] {
    outline: none;
}

.center-in-container[b-cxuhvgclxl] {
    z-index: 2;
}
/* /Components/GlobalSearch/GlobalSearch.razor.rz.scp.css */
.global-search[b-o5jj9pruge] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.5rem;
    width: 100%;
    min-width: 0;
    padding: 2.25rem 0 2rem;
    box-sizing: border-box;
}

/* Only page-specific sizing lives here — the pill itself (surface, border, radius,
   row layout) is the shared NxsInputShell chrome in app.css. */
[b-o5jj9pruge] .search-shell {
    max-width: 960px;
}

[b-o5jj9pruge] .search-icon {
    flex: 0 0 auto;
    color: var(--nxs-accent);
}

[b-o5jj9pruge] .search-icon .mud-icon-root {
    color: var(--nxs-accent);
}

[b-o5jj9pruge] .search-clear {
    flex: 0 0 auto;
    color: var(--nxs-text-subtle);
}

[b-o5jj9pruge] .search-clear:hover {
    color: var(--nxs-accent);
}

.search-input-area[b-o5jj9pruge] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.search-input-line[b-o5jj9pruge] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-width: 0;
    min-height: 2.3rem;
}

[b-o5jj9pruge] .search-input {
    flex: 1;
    min-width: 180px;
}

/* MudAutocomplete in the pill bar should read as a bare inline input: Underline="false" +
   Variant.Text drop the line; these clear the residual field chrome so it sits flush with the
   chips. NOTE: ::deep selectors track MudBlazor's input DOM — verify visually after a build. */
[b-o5jj9pruge] .search-input .mud-input-control {
    margin-top: 0;
}

[b-o5jj9pruge] .search-input .mud-input-control-input-container {
    padding: 0;
}

[b-o5jj9pruge] .search-input input {
    color: var(--nxs-text);
    font-size: 1.05rem;
    padding: 0.2rem 0;
}

/* the bar has its own search icon (left) and clear-all button (right), so suppress
   MudAutocomplete's own end adornment entirely — its open/close caret and any clear button —
   to avoid a second, overlapping clear control. !important beats Mud's more-specific rule that
   re-shows the adornment when the field has text. */
[b-o5jj9pruge] .search-input .mud-input-adornment-end {
    display: none !important;
}

.search-helper[b-o5jj9pruge] {
    width: 100%;
    max-width: 960px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    color: var(--nxs-text-subtle);
    font-size: 0.9rem;
}

.search-helper-top[b-o5jj9pruge] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1rem;
    flex-wrap: wrap;
    min-width: 0;
}

.search-helper-line[b-o5jj9pruge] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    min-width: 0;
}

.inline-chip[b-o5jj9pruge] {
    padding: 0.15rem 0.45rem;
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-overlay-hover);
    color: var(--nxs-text-subtle);
    font-size: 0.85rem;
}

[b-o5jj9pruge] .search-helper-chips {
    display: flex;
    gap: 0.6rem;
    flex-wrap: wrap;
    flex: 1 1 auto;
    min-width: 0;
}

.saved-search-controls[b-o5jj9pruge] {
    display: flex;
    gap: 0.6rem;
    align-items: center;
    flex-wrap: wrap;
    margin-left: auto;
    min-width: 0;
}

[b-o5jj9pruge] .saved-search-name {
    flex: 0 1 360px;
    min-width: 220px;
    max-width: 420px;
    width: 360px;
}

[b-o5jj9pruge] .save-search-button {
    white-space: nowrap;
}

.saved-search-list[b-o5jj9pruge] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 0.65rem;
}

[b-o5jj9pruge] .helper-chip {
    min-height: var(--nxs-control-h-md);
    height: auto;
    margin: 0;
    border-color: color-mix(in srgb, var(--nxs-border) 90%, black);
    background: color-mix(in srgb, var(--nxs-surface-raised) 72%, black);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-md);
    font-weight: 500;
}

.search-empty[b-o5jj9pruge] {
    width: 100%;
    max-width: 900px;
    min-width: 0;
    color: var(--nxs-text-muted);
    text-align: center;
    font-size: 0.95rem;
}

.search-results[b-o5jj9pruge] {
    width: 100%;
    max-width: 960px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
    min-height: 0;
    overflow: visible;
}

[b-o5jj9pruge] .attribute-chips {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.25rem;
}

[b-o5jj9pruge] .attribute-chips-empty {
    color: var(--nxs-text-muted);
}

[b-o5jj9pruge] .nxs-chip.attribute-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.1rem;
    margin: 0;
    border-radius: var(--nxs-radius-pill);
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border: 1px solid var(--attribute-chip-accent, rgba(255, 255, 255, 0.7));
    background: rgb(var(--attribute-chip-accent-rgb, 255 255 255) / 0.16);
    color: var(--attribute-chip-accent, rgba(255, 255, 255, 0.7));
}

/* The 640px pill-softening now comes from the shared NxsInputShell rules. (The old
   .search-shell rule here was unscoped against a child-component root, so it never
   applied anyway.) */
@media (max-width: 640px) {
    [b-o5jj9pruge] .search-input input {
        font-size: 1rem;
    }
}

@media (max-width: 900px) {
    .saved-search-controls[b-o5jj9pruge] {
        margin-left: 0;
        width: 100%;
    }

    [b-o5jj9pruge] .saved-search-name {
        min-width: 0;
        width: auto;
        flex: 1 1 240px;
    }
}








/* /Components/GlobalSearch/SearchGridBlock.razor.rz.scp.css */
.search-grid-block[b-vk6sdz5emi] {
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}

.search-grid-title[b-vk6sdz5emi] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--nxs-text-body);
    margin-bottom: 0.35rem;
    letter-spacing: 0.03em;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.search-grid-body[b-vk6sdz5emi] {
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Grids size to their content, so a short result set makes a short card — no forced
   viewport fill, no page scroll when everything already fits. A long result set caps at
   max-height and scrolls internally; the NxsDataGrid's virtualization handles the rest. */
.search-grid-body[b-vk6sdz5emi]  .nxs-grid {
    min-height: 0;
    min-width: 0;
    max-width: 100%;
    display: flex;
    flex-direction: column;
}

.search-grid-body[b-vk6sdz5emi]  .nxs-grid .mud-table-container {
    max-width: 100%;
    max-height: 60vh;
    overflow-x: auto;
}
/* /Components/MachineMeasurements/BeamPeekCaustic/BeamPeekCausticDetailView.razor.rz.scp.css */
.beampeek-caustic-detail[b-1hz9q2y385] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.beampeek-caustic-visuals[b-1hz9q2y385] {
    display: grid;
    grid-template-columns: minmax(20rem, 28rem) minmax(26rem, 1fr) minmax(32rem, 1fr);
    align-items: start;
    gap: 1rem;
}

.beampeek-caustic-panel[b-1hz9q2y385] {
    min-width: 0;
    overflow: hidden;
    background: var(--nxs-surface);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
}

.beampeek-caustic-caustic-chart[b-1hz9q2y385] {
    width: min(100%, 28rem);
}

.beampeek-caustic-thermal-chart[b-1hz9q2y385] {
    width: 100%;
}

.beampeek-caustic-metrics[b-1hz9q2y385] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.beampeek-caustic-summary[b-1hz9q2y385] {
    align-self: stretch;
}

@media (max-width: 118rem) {
    .beampeek-caustic-visuals[b-1hz9q2y385] {
        grid-template-columns: minmax(20rem, 28rem) minmax(26rem, 1fr);
    }

    .beampeek-caustic-metrics[b-1hz9q2y385] {
        grid-column: 1 / -1;
    }
}

@media (max-width: 72rem) {
    .beampeek-caustic-visuals[b-1hz9q2y385] {
        grid-template-columns: 1fr;
    }

    .beampeek-caustic-caustic-chart[b-1hz9q2y385],
    .beampeek-caustic-thermal-chart[b-1hz9q2y385],
    .beampeek-caustic-metrics[b-1hz9q2y385] {
        width: min(100%, 28rem);
    }
}
/* /Components/MachineMeasurements/BeamPeekCaustic/BeamPeekCausticThermalShiftChart.razor.rz.scp.css */
.beampeek-thermal-shift-chart-shell[b-2tda7aghl4] {
    position: relative;
}
/* /Components/MachineMeasurements/Caustic/LaserCausticChart.razor.rz.scp.css */
.caustic-chart-shell[b-10nvw9z1kv] {
    position: relative;
}
/* /Components/MachineMeasurements/GasFlow/GasFlowContourPlot.razor.rz.scp.css */

.contour-container[b-3s9decswup] {
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    padding-top: var(--nxs-space-12);
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
    background-color: var(--nxs-surface);
}

/* /Components/MachineMeasurements/GasFlow/GasFlowDetailView.razor.rz.scp.css */
/* Detail fills the available width. The chart row below uses width:0/min-width:100% so it
   fills that width and shows every chart when there's room, scrolling only when there isn't —
   and contributes 0 to intrinsic width, so it never stretches the parent table/cell. */
.gasflow-detail[b-et1t0iktsa] {
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.gasflow-shared-scale[b-et1t0iktsa] {
    padding: var(--nxs-space-8, 8px) 0;
}

/* Channel table sizes to its own content (compact) rather than stretching to the full
   detail width that the charts would otherwise dictate. */
.gasflow-channel-table-wrap[b-et1t0iktsa] {
    width: fit-content;
    max-width: 100%;
}

.gasflow-channel-table-wrap[b-et1t0iktsa]  .mud-table-root,
.gasflow-channel-table-wrap[b-et1t0iktsa]  .mud-table {
    width: auto;
}

/* This table is nested inside an already-dark expansion panel, so the default raised
   grey grid surface reads as an out-of-place light block. Make it blend with the panel. */
.gasflow-channel-table-wrap[b-et1t0iktsa]  .nxs-grid.mud-table,
.gasflow-channel-table-wrap[b-et1t0iktsa]  .mud-table-container,
.gasflow-channel-table-wrap[b-et1t0iktsa]  .mud-table-body .mud-table-row,
.gasflow-channel-table-wrap[b-et1t0iktsa]  .mud-table-head .mud-table-cell {
    background-color: transparent;
}

.gasflow-plot-scroll[b-et1t0iktsa] {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: var(--nxs-space-16, 16px);
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: var(--nxs-space-8, 8px);
    /* The decoupling: width:0 makes this strip contribute ZERO to any ancestor's intrinsic
       width (so the charts can never widen the cell/table/panel), while min-width:100% makes
       it fill whatever width it's given and scroll everything past that edge. */
    width: 0;
    min-width: 100%;
    max-width: 100%;
}

.gasflow-plot-item[b-et1t0iktsa] {
    width: 570px;
    height: 350px;
    flex: 0 0 auto;
}

.gasflow-plot-item .contour-container[b-et1t0iktsa],
.gasflow-plot-item .scatter-container[b-et1t0iktsa] {
    width: 100%;
    height: 100%;
}
/* /Components/MachineMeasurements/GasFlow/GasFlowScatterPlot.razor.rz.scp.css */
.scatter-container[b-bvux26cj0m] {
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    padding-top: var(--nxs-space-12);
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
    background-color: var(--nxs-surface);
}

.hover-editable .k-grid-content td[b-bvux26cj0m] {
    position: relative;
    transition: background-color 0.25s ease;
}
/* /Components/MachineMeasurements/ScanFieldCalibration/Averaging/ScanFieldCalibrationAverageComparisonModal.razor.rz.scp.css */
.sfc-avg-comparison-content[b-cklz4cc5er] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    max-height: calc(92vh - 110px);
    overflow: auto;
    padding-right: 0.25rem;
}

.sfc-avg-comparison-controls[b-cklz4cc5er] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    max-width: 420px;
}

.sfc-avg-comparison-controls-row[b-cklz4cc5er] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.sfc-avg-comparison-select[b-cklz4cc5er] {
    width: 420px;
    max-width: 100%;
}

.sfc-avg-comparison-chart-row[b-cklz4cc5er] {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.75rem;
    width: 100%;
    min-width: 0;
}

.sfc-avg-comparison-chart-cell[b-cklz4cc5er] {
    flex: 1 1 0;
    min-width: 0;
}

.sfc-avg-section-header[b-cklz4cc5er] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* /Components/MachineMeasurements/ScanFieldCalibration/Averaging/ScanFieldCalibrationAverageConfirmationModal.razor.rz.scp.css */
.scanfield-average-summary-content[b-28dshmet38] {
    display: flex;
    flex-direction: column;
    height: calc(70vh - 74px);
    min-height: 0;
    overflow: hidden;
}

.scanfield-average-summary-grid-host[b-28dshmet38] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.scanfield-average-summary-grid-host[b-28dshmet38]  .k-grid {
    height: 100% !important;
}

.scanfield-average-summary-grid-footer[b-28dshmet38] {
    flex: 0 0 auto;
    min-height: 1.25rem;
    display: flex;
    justify-content: flex-start;
    align-items: flex-end;
    margin-top: 0.35rem;
}

.scanfield-average-summary-actions[b-28dshmet38] {
    flex: 0 0 auto;
    display: flex;
    gap: 0.5rem;
    align-items: flex-end;
    justify-content: space-between;
    margin-top: 0.75rem;
}

.scanfield-average-summary-inputs[b-28dshmet38] {
    display: flex;
    gap: 0.75rem;
    align-items: center;
}

.scanfield-average-summary-scale-picker[b-28dshmet38] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
}

.scanfield-average-summary-scale-picker label[b-28dshmet38],
.scanfield-average-summary-calibration-applied label[b-28dshmet38] {
    margin: 0;
    white-space: nowrap;
}

.scanfield-average-summary-scale-input[b-28dshmet38] {
    width: 260px;
    max-width: 260px;
}

.scanfield-average-summary-calibration-applied[b-28dshmet38] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
}

.scanfield-average-summary-calibration-applied-control[b-28dshmet38] {
    display: flex;
    align-items: center;
    justify-content: center;
}

.scanfield-measurement-checkbox[b-28dshmet38] {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    border: 2px solid var(--nxs-accent);
    border-radius: var(--nxs-radius-sm);
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
    position: relative;
}

.scanfield-measurement-checkbox:checked[b-28dshmet38] {
    background-color: var(--nxs-accent);
    border-color: var(--nxs-accent);
}

.scanfield-measurement-checkbox:checked[b-28dshmet38]::after {
    content: "";
    position: absolute;
    left: 4px;
    top: 1px;
    width: 4px;
    height: 8px;
    border: solid #000;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.scanfield-measurement-checkbox:focus[b-28dshmet38] {
    outline: none;
    box-shadow: 0 0 0 2px var(--nxs-accent-30);
}

.scanfield-measurement-checkbox:disabled[b-28dshmet38] {
    border-color: var(--nxs-overlay-32);
    background-color: var(--nxs-overlay-hover);
    cursor: not-allowed;
}

.scanfield-average-summary-action-buttons[b-28dshmet38] {
    display: inline-flex;
    gap: 0.5rem;
    align-items: flex-end;
}

.scanfield-average-summary-submit-content[b-28dshmet38] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

/* /Components/MachineMeasurements/ScanFieldCalibration/Averaging/ScanFieldCalibrationAverageGrid.razor.rz.scp.css */
.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid td {
    white-space: nowrap;
    text-overflow: clip;
    overflow: hidden;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-table-td {
    white-space: nowrap;
    text-overflow: clip;
    overflow: hidden;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-content {
    overflow-x: auto !important;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-table,
.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid table {
    min-width: 1450px;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-header-wrap {
    overflow-x: hidden !important;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-header .k-table-th {
    overflow: hidden !important;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-header .k-cell-inner,
.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-header .k-link,
.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-grid-header .k-column-title {
    max-width: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: nowrap !important;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-command-cell {
    white-space: nowrap;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-command-cell .k-button {
    margin-right: 0.25rem;
}

.scanfield-averaging-grid-shell[b-ykct7mwsib]  .k-grid .k-command-cell .k-button:last-child {
    margin-right: 0;
}

.scanfield-measurement-checkbox[b-ykct7mwsib] {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    border: 2px solid var(--nxs-accent);
    border-radius: var(--nxs-radius-sm);
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
    position: relative;
}

.scanfield-measurement-checkbox:checked[b-ykct7mwsib] {
    background-color: var(--nxs-accent);
    border-color: var(--nxs-accent);
}

.scanfield-measurement-checkbox:checked[b-ykct7mwsib]::after {
    content: "";
    position: absolute;
    left: 4px;
    top: 1px;
    width: 4px;
    height: 8px;
    border: solid #000;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.scanfield-calibration-applied-cell[b-ykct7mwsib] {
    display: flex;
    justify-content: center;
    width: 100%;
}

.scanfield-average-grid-save-content[b-ykct7mwsib] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

/* /Components/MachineMeasurements/ScanFieldCalibration/EditCreate/ScanFieldCalibrationCreate.razor.rz.scp.css */
.create-related-entity-prompt[b-c7xq15gy18] {
    display: flex;
    flex-direction: row;

    margin-top: 0.5em;
    border-radius: var(--nxs-radius-lg);

    overflow: hidden;
}

.create-related-entity-prompt-text[b-c7xq15gy18] {
    padding: 0.5em;

    background-color: var(--nxs-surface-3);
    text-align: center;
}

.create-related-entity-prompt .nxs-button[b-c7xq15gy18] {
    border-radius: 0;
}

.create-related-entity-prompt-button[b-c7xq15gy18] {
    padding: 0.5em;

    background-color: var(--nxs-theme-color);
    color: #000000;

    user-select: none;
    cursor: pointer;
    text-align: center;
}

.sfc-input-file-row[b-c7xq15gy18] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.sfc-notification-card[b-c7xq15gy18] {
    gap: 1rem;
}

.sfc-toggle-row[b-c7xq15gy18] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.sfc-toggle-row label[b-c7xq15gy18] {
    margin: 0;
}

.sfc-toggle-row-with-icon[b-c7xq15gy18] {
    justify-content: flex-start;
}

.sfc-slack-icon[b-c7xq15gy18] {
    width: 1.5rem;
    height: 1.5rem;
    margin-left: auto;
    flex-shrink: 0;
}
/* /Components/MachineMeasurements/ScanFieldCalibration/grid/ScanFieldCalibrationGrid.razor.rz.scp.css */
.scanfield-detail-window[b-9i29xd4nxk] {
    max-width: 96vw;
    max-height: 85vh;
}

.scanfield-detail-window-content[b-9i29xd4nxk] {
    width: 100%;
    max-height: 78vh;
    overflow: auto;
}

.scanfield-avg-root[b-9i29xd4nxk] {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 120vh;
    min-height: calc(100vh + 8rem);
    overflow: visible;
}

.scanfield-panel[b-9i29xd4nxk] {
    width: 100%;
    min-width: 0;
}

.scanfield-panel-top[b-9i29xd4nxk] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
}

.scanfield-top-grid-shell[b-9i29xd4nxk] {
    flex: 1 1 auto;
    height: 100%;
    min-height: 0;
}

.scanfield-top-grid-shell[b-9i29xd4nxk]  .k-grid {
    height: 100% !important;
    border-bottom: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.scanfield-top-grid-shell[b-9i29xd4nxk]  .k-grid .k-grid-header {
    border-top: 0;
}

.scanfield-top-grid-shell[b-9i29xd4nxk]  .k-grid .k-grid-toolbar {
    border-bottom-color: var(--nxs-divider);
}


.scanfield-section-label[b-9i29xd4nxk] {
    color: var(--nxs-text-body);
    font-size: 1.05rem;
    font-weight: 600;
    margin-bottom: 0.5rem;
}

.scanfield-panel-bottom[b-9i29xd4nxk] {
    flex: 0 0 auto;
    min-height: 0;
    padding-top: 0.35rem;
}

.scanfield-averaging-grid-shell[b-9i29xd4nxk] {
    height: 20rem;
    min-height: 8rem;
    overflow: hidden;
}

.scanfield-averaging-grid-shell[b-9i29xd4nxk]  .k-grid {
    height: 100%;
}

.scanfield-grid-splitter[b-9i29xd4nxk] {
    display: flex;
    justify-content: center;
    margin-top: 0;
    height: 18px;
    padding-bottom: 0.75rem;
    background: var(--nxs-surface);
    border-top: none;
    border-bottom: 1px solid var(--nxs-divider);
    border-left: 1px solid var(--nxs-divider);
    border-right: 1px solid var(--nxs-divider);
    border-radius: 0 0 var(--nxs-radius-lg) var(--nxs-radius-lg);
    cursor: row-resize;
    position: relative;
    top: -1px;
}

.scanfield-avg-root[b-9i29xd4nxk]  .scanfield-grid-splitter-tooltip {
    display: block;
    width: 100%;
}

.scanfield-grid-splitter-grip[b-9i29xd4nxk] {
    width: 64px;
    height: 6px;
    border-radius: var(--nxs-radius-pill);
    background: var(--nxs-surface-2);
    position: relative;
    top: 4px;
}

.scanfield-grid-splitter:hover .scanfield-grid-splitter-grip[b-9i29xd4nxk],
.scanfield-grid-splitter:focus-visible .scanfield-grid-splitter-grip[b-9i29xd4nxk] {
    background: var(--nxs-surface-3);
}

.scanfield-average-selected-button[b-9i29xd4nxk] {
    margin-left: 0.5rem;
    font-weight: 600;
}

.scanfield-selected-count[b-9i29xd4nxk] {
    margin-left: 0.5rem;
    font-weight: 600;
}

.scanfield-measurement-checkbox[b-9i29xd4nxk] {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    border: 2px solid var(--nxs-accent);
    border-radius: var(--nxs-radius-sm);
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
    position: relative;
}

.scanfield-measurement-checkbox:checked[b-9i29xd4nxk] {
    background-color: var(--nxs-accent);
    border-color: var(--nxs-accent);
}

.scanfield-measurement-checkbox:checked[b-9i29xd4nxk]::after {
    content: "";
    position: absolute;
    left: 4px;
    top: 1px;
    width: 4px;
    height: 8px;
    border: solid #000;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}

.scanfield-measurement-checkbox-header:checked[b-9i29xd4nxk]::after {
    left: 50%;
    top: 50%;
    width: 8px;
    height: 2px;
    background: #000;
    border: 0;
    transform: translate(-50%, -50%);
}

.scanfield-measurement-checkbox:focus[b-9i29xd4nxk] {
    outline: none;
    box-shadow: 0 0 0 2px var(--nxs-accent-30);
}

.scanfield-measurement-checkbox:disabled[b-9i29xd4nxk] {
    border-color: var(--nxs-overlay-32);
    background-color: var(--nxs-overlay-hover);
    cursor: not-allowed;
}
/* /Components/Machines/CalibrationHistory/MachineCalibrationHistory.razor.rz.scp.css */
.calibration-history-section[b-vnvhq6tbi9] {
    width: 100%;
    box-sizing: border-box;
}

.calibration-history-header[b-vnvhq6tbi9] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    align-items: center;
    gap: 12px;
    width: 100%;
    margin-bottom: 1rem;
}

.calibration-history-title[b-vnvhq6tbi9] {
    margin-bottom: 0;
    padding-left: 0;
}

.calibration-upload-dialog[b-vnvhq6tbi9] {
    display: grid;
    gap: 12px;
    min-width: 320px;
}

.calibration-upload-label[b-vnvhq6tbi9] {
    font-weight: 600;
}

.calibration-upload-file-name[b-vnvhq6tbi9] {
    color: #555;
    word-break: break-word;
}

.calibration-file-loading[b-vnvhq6tbi9] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.calibration-file-loading-text[b-vnvhq6tbi9] {
    color: #555;
    font-size: 0.9rem;
}

.calibration-history-section[b-vnvhq6tbi9]  .machine-calibration-history__file-tooltip {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.calibration-upload-progress[b-vnvhq6tbi9] {
    display: grid;
    gap: 6px;
}

.calibration-upload-progress-text[b-vnvhq6tbi9] {
    color: #555;
    font-size: 0.9rem;
}

.calibration-upload-error[b-vnvhq6tbi9] {
    color: var(--nxs-danger-strong);
}

.calibration-load-error[b-vnvhq6tbi9] {
    color: var(--nxs-danger-strong);
    margin-bottom: 12px;
}

.calibration-upload-actions[b-vnvhq6tbi9] {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 8px;
}

.calibration-history-actions[b-vnvhq6tbi9] {
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-vnvhq6tbi9] .calibration-history-grid {
    width: 100%;
}

[b-vnvhq6tbi9] .calibration-history-grid .k-grid-header .k-table-th {
    text-align: center;
}

[b-vnvhq6tbi9] .calibration-history-grid .k-grid-header .k-table-th .k-cell-inner,
[b-vnvhq6tbi9] .calibration-history-grid .k-grid-header .k-table-th .k-link {
    justify-content: center;
}

[b-vnvhq6tbi9] .calibration-history-grid .k-table-td:nth-child(4) {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* /Components/Measurements/RetryImportHeader.razor.rz.scp.css */
.measurement-header[b-47crdtlcqw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.35rem;
}

.measurement-actions[b-47crdtlcqw] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.measurement-header-label[b-47crdtlcqw] {
    margin-bottom: 0;
}

.retrigger-button[b-47crdtlcqw] {
    min-width: 0;
    white-space: nowrap;
}

.retry-spinner[b-47crdtlcqw] {
    margin-right: 0.4rem;
}

.retry-button-text[b-47crdtlcqw] {
    margin-left: 0.1rem;
}
/* /Components/Metrology/DimensionMatrixView.razor.rz.scp.css */
.dimension-matrix-view[b-7elrfexzg7] {
    display: grid;
    gap: var(--nxs-space-16);
    width: 100%;
    --sticky-col-width: 208px;
    --sticky-header-height: 72px;
    --sticky-grid-col-width: 96px;
    --sticky-grid-cell-padding: var(--nxs-space-4) var(--nxs-space-16);
    --sticky-grid-min-width: 2400px;
    --sticky-grid-height: 360px;
    --sticky-grid-row-height: 28px;
}

[b-7elrfexzg7] .nxs-sticky-grid-shell__panel,
[b-7elrfexzg7] .nxs-sticky-grid-shell__host,
[b-7elrfexzg7] .nxs-sticky-grid-shell__viewport,
[b-7elrfexzg7] .nxs-sticky-grid-shell__scroll,
[b-7elrfexzg7] .nxs-sticky-grid-shell__table,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid.mud-table,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid.mud-data-grid,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid.mud-elevation-1,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid .mud-table-container,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid .mud-table-root,
[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid .mud-table-body .mud-table-cell {
    background: var(--nxs-surface) !important;
}

[b-7elrfexzg7] .nxs-sticky-grid-shell__table th,
[b-7elrfexzg7] .nxs-sticky-grid-shell__table td,
[b-7elrfexzg7] .nxs-sticky-grid-shell__part-header,
[b-7elrfexzg7] .nxs-sticky-grid-shell__part-cell,
[b-7elrfexzg7] .nxs-sticky-grid-shell__sticky-col-cell,
[b-7elrfexzg7] .nxs-sticky-grid-shell__sticky-col-header,
[b-7elrfexzg7] .nxs-sticky-grid-shell__sticky-corner-cell {
    background: var(--nxs-surface) !important;
}

[b-7elrfexzg7] .nxs-sticky-grid-shell__sticky-header-cell,
[b-7elrfexzg7] .nxs-sticky-grid-shell__sticky-corner-cell {
    background: var(--nxs-surface-raised) !important;
}

[b-7elrfexzg7] .nxs-sticky-grid-shell__empty,
[b-7elrfexzg7] .nxs-sticky-grid-shell__loading {
    background: var(--nxs-surface);
}

/* ── Dimension column sizing ── */

.matrix-toolbar-summary[b-7elrfexzg7] {
    display: grid;
    gap: var(--nxs-space-8);
}

.matrix-toolbar-summary__counts[b-7elrfexzg7],
.matrix-toolbar-summary__search[b-7elrfexzg7] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    flex-wrap: wrap;
}

.matrix-toolbar-controls[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.matrix-toolbar-actions[b-7elrfexzg7],
.matrix-toolbar-sort-controls[b-7elrfexzg7] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--nxs-space-8);
    flex-wrap: nowrap;
}

@media (max-width: 1200px) {
    .matrix-toolbar-actions[b-7elrfexzg7],
    .matrix-toolbar-sort-controls[b-7elrfexzg7] {
        flex-wrap: wrap;
    }
}

[b-7elrfexzg7] .matrix-search-input {
    flex: 0 0 148px;
    width: 148px;
    min-width: 148px;
    max-width: 148px;
}

[b-7elrfexzg7] .matrix-search-input--part,
[b-7elrfexzg7] .matrix-search-input--dimension {
    flex-basis: 168px;
    width: 168px;
    min-width: 168px;
    max-width: 168px;
}

[b-7elrfexzg7] .matrix-search-input .mud-input-slot,
[b-7elrfexzg7] .matrix-search-input .mud-input-slot input {
    font-size: 0.72rem;
}

[b-7elrfexzg7] .matrix-search-input.mud-input-control {
    margin-top: 0;
    margin-bottom: 0;
}

[b-7elrfexzg7] .matrix-search-input .mud-input-control-input-container {
    min-height: 28px;
    height: 28px;
}

.dim-page-badge[b-7elrfexzg7] {
    gap: 0;
    padding: var(--nxs-space-2) var(--nxs-space-8);
}

.dimension-matrix-view[b-7elrfexzg7]  .matrix-toolbar-icon-tooltip,
.dim-page-badge[b-7elrfexzg7]  .dim-page-jump-tooltip {
    display: inline-flex;
}

.dim-page-badge:focus-within[b-7elrfexzg7] {
    border-color: var(--mud-palette-primary);
}

.dim-page-badge:has(.dim-page-jump-input:disabled)[b-7elrfexzg7] {
    opacity: 0.5;
}

.dim-page-jump-input[b-7elrfexzg7] {
    width: 2ch;
    padding: 0;
    border: none;
    background: transparent;
    color: inherit;
    font-size: inherit;
    line-height: inherit;
    text-align: center;
    -moz-appearance: textfield;
}

.dim-page-jump-input[b-7elrfexzg7]::-webkit-outer-spin-button,
.dim-page-jump-input[b-7elrfexzg7]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

.dim-page-jump-input:focus[b-7elrfexzg7] {
    outline: none;
}

.dim-page-jump-input:disabled[b-7elrfexzg7] {
    cursor: not-allowed;
}

[b-7elrfexzg7] .matrix-search-input .mud-input,
[b-7elrfexzg7] .matrix-search-input .mud-input-root {
    min-height: 28px;
    height: 28px;
}

[b-7elrfexzg7] .matrix-search-input .mud-input-slot {
    padding-top: 0;
    padding-bottom: 0;
    min-height: 28px;
    height: 28px;
}

[b-7elrfexzg7] .matrix-search-input input {
    height: 26px;
    padding-top: 0;
    padding-bottom: 0;
    line-height: 26px;
}

[b-7elrfexzg7] .matrix-search-input .mud-input-adornment {
    margin-top: 0;
    margin-bottom: 0;
}

[b-7elrfexzg7] .matrix-search-input .mud-input-adornment .mud-icon-root {
    width: 18px;
    height: 18px;
    font-size: 18px;
}

.matrix-grid-part-button[b-7elrfexzg7],
.matrix-grid-dimension-button[b-7elrfexzg7],
.matrix-grid-dimension-sort-button[b-7elrfexzg7] {
    width: 100%;
    margin: 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    border-radius: 0;
    outline: none;
    box-shadow: none;
    appearance: none;
    -webkit-appearance: none;
}

.matrix-grid-part-button[b-7elrfexzg7] {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    min-height: var(--sticky-grid-row-height, 28px);
    padding: var(--nxs-space-4) var(--nxs-space-8) var(--nxs-space-4) var(--nxs-space-16);
    font-weight: 600;
    text-align: left;
}

.matrix-grid-part-content[b-7elrfexzg7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-6);
    width: 100%;
    min-width: 0;
}

.matrix-grid-part-label[b-7elrfexzg7] {
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.matrix-grid-part-pill-slot[b-7elrfexzg7] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.matrix-grid-dimension-button[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: space-between;
    min-height: calc(var(--sticky-header-height) - 2px);
    padding: var(--nxs-space-4) var(--nxs-space-8) var(--nxs-space-4) var(--nxs-space-16);
    background: var(--nxs-surface-raised);
    text-align: left;
    overflow: hidden;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.matrix-grid-dimension-header[b-7elrfexzg7] {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: 0;
    min-height: calc(var(--sticky-header-height) - 2px);
    background: var(--nxs-surface-raised);
    transition: background-color 0.12s ease;
}

.matrix-grid-dimension-sort-button[b-7elrfexzg7] {
    display: inline-flex;
    align-items: flex-start;
    justify-content: center;
    width: 32px;
    min-width: 32px;
    min-height: calc(var(--sticky-header-height) - 2px);
    padding: var(--nxs-space-4) var(--nxs-space-8) 0 0;
    background: var(--nxs-surface-raised);
    color: var(--nxs-text-muted);
    box-sizing: border-box;
    transition: background-color 0.12s ease;
}

.dimension-matrix-view[b-7elrfexzg7]  .matrix-grid-dimension-sort-tooltip {
    display: block;
    width: 100%;
}

.matrix-grid-dimension-button > span:first-child[b-7elrfexzg7] {
    white-space: nowrap;
    margin-top: 0;
}

.matrix-grid-part-button:focus[b-7elrfexzg7],
.matrix-grid-part-button:focus-visible[b-7elrfexzg7],
.matrix-grid-dimension-button:focus[b-7elrfexzg7],
.matrix-grid-dimension-button:focus-visible[b-7elrfexzg7],
.matrix-grid-dimension-sort-button:focus[b-7elrfexzg7],
.matrix-grid-dimension-sort-button:focus-visible[b-7elrfexzg7] {
    outline: none;
    box-shadow: none;
}

[b-7elrfexzg7] .dimension-within-tolerance-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--nxs-control-h-chip);
    min-height: var(--nxs-control-h-chip);
    padding: 0 var(--nxs-space-6);
    border-radius: var(--nxs-radius-pill);
    font-size: var(--nxs-text-size-xs);
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
    box-sizing: border-box;
    margin: 0;
    text-align: center;
    padding-inline: var(--nxs-space-6);
}

.matrix-grid-dimension-button[b-7elrfexzg7]  .dimension-within-tolerance-chip {
    margin-top: var(--nxs-space-2);
}

.matrix-row[b-7elrfexzg7] {
    cursor: pointer;
}

.matrix-cell-content.out-of-spec[b-7elrfexzg7] {
    background: var(--nxs-danger);
    color: var(--nxs-text);
    font-weight: 600;
}

.matrix-cell-content:has(.matrix-cell-missing)[b-7elrfexzg7] {
    background: transparent !important;
    color: var(--nxs-text-muted) !important;
    font-weight: 400 !important;
}

[b-7elrfexzg7] .nxs-sticky-grid-shell__datagrid .mud-table-body .mud-table-cell.matrix-cell.empty {
    color: var(--nxs-text-muted);
}

.matrix-cell-content.row-hover:not(.out-of-spec)[b-7elrfexzg7],
.matrix-cell-content.col-hover:not(.out-of-spec)[b-7elrfexzg7],
.matrix-grid-part-button.row-hover[b-7elrfexzg7],
.matrix-grid-dimension-header.col-hover[b-7elrfexzg7] {
    background-color: var(--nxs-surface-raised);
}

.detail-panel[b-7elrfexzg7] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--nxs-space-16);
    align-items: stretch;
}

.detail-chart[b-7elrfexzg7] {
    width: 100%;
    min-width: 0;
    display: flex;
}

[b-7elrfexzg7] .mud-paper.nxs-card.detail-chart-card {
    min-width: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
}

.detail-chart-shell[b-7elrfexzg7] {
    width: 100%;
    min-height: 0;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    overflow: visible;
}

.detail-chart-plot[b-7elrfexzg7] {
    width: 100%;
    flex: 1 1 auto;
    min-height: 0;
}

.panel-with-overlay[b-7elrfexzg7] {
    position: relative;
}

.chart-colour-by-label[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 14px;
    font-weight: 700;
}

.chart-colour-by-controls[b-7elrfexzg7] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

[b-7elrfexzg7] .chart-boolean-switch {
    margin: 0;
    color: var(--nxs-text-subtle);
}

[b-7elrfexzg7] .chart-boolean-switch .mud-switch-span {
    margin-inline-end: var(--nxs-space-8);
}

[b-7elrfexzg7] .chart-boolean-switch .mud-typography {
    color: var(--nxs-text-subtle);
    font-size: 13px;
    font-weight: 700;
}

.chart-option-bubbles[b-7elrfexzg7] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    flex-wrap: wrap;
}

/* MudChipSet styled to match the bespoke pills via the design tokens. Selection comes
   from NxsChip/MudChip Selected rather than local one-off active classes. */
[b-7elrfexzg7] .chart-option-chips {
    display: flex !important;
    column-gap: var(--nxs-space-8) !important;
    row-gap: var(--nxs-space-8) !important;
    margin: 0;
    flex-wrap: wrap !important;
    align-content: flex-start;
}

[b-7elrfexzg7] .chart-option-chips .mud-chip {
    margin: 0;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-pill);
    background-color: var(--nxs-surface-raised);
    color: var(--nxs-text-subtle);
    padding: var(--nxs-space-6) var(--nxs-space-12);
    min-height: 0;
    height: auto;
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
    text-transform: capitalize;
    line-height: 1;
    transition: background-color 120ms ease, color 120ms ease;
}

[b-7elrfexzg7] .chart-option-chips .mud-chip:hover {
    color: var(--nxs-text);
}

[b-7elrfexzg7] .chart-group-chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-6);
    width: 100%;
    max-height: 76px;
    overflow-y: auto;
    margin: 0;
    padding: var(--nxs-space-8);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface-inset);
}

[b-7elrfexzg7] .chart-group-chips .mud-chip {
    margin: 0;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-pill);
    background-color: var(--nxs-surface-inset);
    color: var(--nxs-text-subtle);
    padding: var(--nxs-space-6) var(--nxs-space-12);
    min-height: 0;
    height: auto;
    font-size: var(--nxs-text-size-sm);
    font-weight: 600;
    transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

[b-7elrfexzg7] .chart-group-chips .mud-chip:hover {
    color: var(--nxs-text);
    border-color: var(--nxs-border-strong);
}

.chart-group-selector[b-7elrfexzg7] {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    flex: 1 1 320px;
}

.chart-group-selector-container[b-7elrfexzg7] {
    display: flex;
    align-items: stretch;
    gap: var(--nxs-space-8);
    flex-wrap: wrap;
    width: 100%;
}

.chart-group-selector-label[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
}

.chart-group-selector-count[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
}

.stats-footer-controls[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.plot-settings-controls[b-7elrfexzg7] {
    margin-top: 0;
}

[b-7elrfexzg7] .chart-settings-tabs {
    --nxs-tabs-tab-min-height: 30px;
    --nxs-tabs-tab-padding: var(--nxs-space-4) var(--nxs-space-12);
    --nxs-tabs-tab-font-size: 12px;
}

[b-7elrfexzg7] .chart-settings-tabs .mud-tab {
    font-weight: 700;
    letter-spacing: 0.035em;
}

.axis-mode-control[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--nxs-space-8);
}

.plot-settings-section[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.chart-detail-panel-sections[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.chart-detail-section[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    padding-bottom: var(--nxs-space-16);
    border-bottom: 1px solid var(--nxs-border);
}

.chart-detail-section:last-child[b-7elrfexzg7] {
    padding-bottom: 0;
    border-bottom: 0;
}

.spc-panel[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
}

.spc-panel-note[b-7elrfexzg7] {
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid #2e3a46;
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-info-bg);
    color: var(--nxs-text-subtle);
    font-size: 13px;
    line-height: 1.45;
}

.spc-panel-section[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.spc-panel-section-title[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.spc-rule-list[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.spc-rule-item[b-7elrfexzg7] {
    padding: var(--nxs-space-12) var(--nxs-space-12);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface-inset);
    cursor: pointer;
    transition: border-color 120ms ease, opacity 120ms ease;
}

.spc-rule-item:hover[b-7elrfexzg7] {
    border-color: #3f4b56;
}

.spc-rule-item--select-all[b-7elrfexzg7] {
    border-color: #3b4c5d;
    background: #111b24;
}

.spc-rule-item.is-disabled[b-7elrfexzg7] {
    opacity: 0.62;
}

[b-7elrfexzg7] .spc-rule-item {
    margin: 0;
}

.spc-rule-copy[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    min-width: 0;
}

.spc-rule-title[b-7elrfexzg7] {
    color: var(--nxs-text);
    font-size: 13px;
    font-weight: 700;
}

.spc-rule-description[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 13px;
    line-height: 1.4;
}

.spc-colour-swatch[b-7elrfexzg7] {
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    border-radius: var(--nxs-radius-pill);
    margin-top: var(--nxs-space-2);
    box-shadow: 0 0 0 1px var(--nxs-overlay-12);
}

.spc-chart-scale[b-7elrfexzg7] {
    background: var(--nxs-surface-inset);
    padding: var(--nxs-space-12) var(--nxs-space-16);
    color: var(--nxs-text-body);
}

.spc-chart-scale-title[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 13px;
    font-weight: 700;
    margin-bottom: var(--nxs-space-12);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.spc-chart-scale-items[b-7elrfexzg7] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8) var(--nxs-space-12);
}

.spc-chart-scale-item[b-7elrfexzg7] {
    font-size: 12px;
    font-weight: 700;
}

[b-7elrfexzg7] .spc-chart-scale-item.mud-chip {
    margin: 0;
}

[b-7elrfexzg7] .spc-chart-scale-item .mud-chip-content {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-10) !important;
    min-width: 0;
}

.spc-chart-scale-item:focus-visible[b-7elrfexzg7] {
    outline: 2px solid var(--nxs-accent);
    outline-offset: 2px;
}

.spc-chart-scale-item-label[b-7elrfexzg7] {
    display: inline-block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-7elrfexzg7] .spc-chart-scale-item .spc-colour-swatch {
    flex: 0 0 12px;
    width: 12px;
    height: 12px;
    margin-right: var(--nxs-space-4);
    margin-top: 0;
    align-self: center;
}

/* No fixed-height ancestor here — everything sizes to content — so the wrapper's own
   inline height (the Height="clamp(...)" passed to DimensionPartChart) must
   drive the chart height. Do NOT force height:100% here: against indefinite parents it
   collapses to auto and the chart renders at Plotly's tall default, ignoring the clamp. */
.detail-chart-shell[b-7elrfexzg7]  .pc-chart-wrapper {
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: var(--nxs-surface);
}

.detail-chart-shell[b-7elrfexzg7]  .nxs-chart,
.detail-chart-shell[b-7elrfexzg7]  .js-plotly-plot,
.detail-chart-shell[b-7elrfexzg7]  .plot-container,
.detail-chart-shell[b-7elrfexzg7]  .svg-container {
    height: 100% !important;
    min-height: 0 !important;
}

.chart-detail-stat-list[b-7elrfexzg7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.chart-detail-stat-list--part[b-7elrfexzg7] {
    gap: var(--nxs-space-16);
}

.chart-detail-stat-row[b-7elrfexzg7] {
    display: grid;
    grid-template-columns: minmax(0, 45%) minmax(0, 1fr);
    gap: var(--nxs-space-16);
    align-items: center;
    font-size: 14px;
}

.chart-detail-stat-row > span[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-weight: 600;
}

.chart-detail-stat-row > strong[b-7elrfexzg7] {
    color: var(--nxs-text);
    font-weight: 600;
    min-width: 0;
}

.stats-empty[b-7elrfexzg7] {
    color: var(--nxs-text-muted);
    font-size: 14px;
}
/* /Components/Metrology/DimensionPartChart.razor.rz.scp.css */
.dimension-part-chart-wrapper[b-9sh6o37qsw] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.dimension-part-chart-wrapper[b-9sh6o37qsw]  .nxs-drawer-panel {
    flex: 1 1 auto;
    min-height: 0;
}

.dimension-part-chart-plot[b-9sh6o37qsw] {
    position: relative;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.dimension-part-chart-plot[b-9sh6o37qsw]  .nxs-chart {
    height: 100%;
}
/* /Components/Metrology/GomDimHistogramChart.razor.rz.scp.css */
.gom-histogram-chart-wrapper[b-lfi9zscxa1] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.gom-histogram-chart-plot[b-lfi9zscxa1] {
    position: relative;
    flex: 1 1 auto;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.gom-histogram-chart-plot[b-lfi9zscxa1]  .nxs-chart {
    height: 100%;
}
/* /Components/Metrology/NxsStickyGridShell.razor.rz.scp.css */
.nxs-sticky-grid-shell__panel[b-q2adu4uc61] {
    display: grid;
    gap: 0;
    border-radius: var(--nxs-radius-lg);
    border: 1px solid var(--nxs-border);
    overflow: hidden;
}

.nxs-sticky-grid-shell__empty[b-q2adu4uc61] {
    display: grid;
    place-items: center;
    padding: 0;
    background: var(--nxs-surface);
    text-align: center;
    /* No border-top: the toolbar above already draws the 1px divider.
       Re-adding it here stacks two borders into a ~2px line. */
}

.nxs-sticky-grid-shell__loading[b-q2adu4uc61] {
    /* Same variable as the real scroll area's max-height, so a page that overrides
       --sticky-grid-height gets a matching skeleton instead of a hardcoded 360px band. */
    min-height: var(--sticky-grid-height, 360px);
    height: var(--sticky-grid-height, 360px);
    display: grid;
    align-content: start;
    gap: 0;
    padding-top: var(--sticky-header-height);
    background: var(--nxs-surface);
    /* No border-top: the toolbar above already draws the 1px divider.
       Re-adding it here stacks two borders into a ~2px line. */
    overflow: hidden;
    box-sizing: border-box;
}

.nxs-sticky-grid-shell__host[b-q2adu4uc61] {
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
    border-radius: 0;
    background: var(--nxs-surface);
    overflow: hidden;
    padding: 0;
    box-sizing: border-box;
}

.nxs-sticky-grid-shell__viewport[b-q2adu4uc61] {
    border-radius: 0;
    overflow: hidden;
    background: var(--nxs-surface);
    position: relative;
}

/* Geometry only — the placeholder is a MudSkeleton, which owns its own pulse
   animation and colour; this class just makes each skeleton bar the exact size of a
   real grid row. Row height shares the real rows' variable by construction, so the
   skeleton tracks any per-page row-height override instead of drifting. */
[b-q2adu4uc61] .nxs-sticky-grid-shell__loading-placeholder {
    display: block;
    min-height: var(--sticky-grid-row-height, 28px);
    height: var(--sticky-grid-row-height, 28px);
    width: 100%;
    box-sizing: border-box;
    border-bottom: 1px solid var(--nxs-border);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__loading-placeholder--bleed-sticky {
    width: calc(100% + var(--sticky-col-width));
    min-width: calc(var(--sticky-grid-min-width, 2400px) + var(--sticky-col-width));
    margin-left: calc(-1 * var(--sticky-col-width));
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__scroll {
    overflow: auto;
    max-height: var(--sticky-grid-height, 360px);
    background: var(--nxs-surface);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__table {
    width: max-content;
    min-width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: var(--nxs-surface);
    color: var(--nxs-text);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__table th,
[b-q2adu4uc61] .nxs-sticky-grid-shell__table td {
    border-bottom: 1px solid var(--nxs-border);
    border-right: 1px solid var(--nxs-border);
    padding: 0;
    background: var(--nxs-surface);
    color: var(--nxs-text);
    white-space: nowrap;
    box-sizing: border-box;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__table tbody tr:last-child th,
[b-q2adu4uc61] .nxs-sticky-grid-shell__table tbody tr:last-child td {
    border-bottom: 0;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__table thead th {
    vertical-align: bottom;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-cell,
[b-q2adu4uc61] .nxs-sticky-grid-shell__body-cell {
    min-width: var(--sticky-grid-col-width, 96px);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-cell {
    background: var(--nxs-surface-raised);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__part-header,
[b-q2adu4uc61] .nxs-sticky-grid-shell__part-cell {
    min-width: var(--sticky-col-width) !important;
    width: var(--sticky-col-width) !important;
    max-width: var(--sticky-col-width) !important;
    background: var(--nxs-surface-inset);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-content,
[b-q2adu4uc61] .nxs-sticky-grid-shell__part-content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-content {
    justify-content: flex-end;
    gap: 1px;
    min-height: calc(var(--sticky-header-height) - 2px);
    padding: var(--sticky-grid-cell-padding, var(--nxs-space-4) var(--nxs-space-16));
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__part-content {
    justify-content: center;
    gap: var(--nxs-space-2);
    min-height: var(--sticky-grid-row-height, 28px);
    padding: var(--sticky-grid-cell-padding, var(--nxs-space-4) var(--nxs-space-16));
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__part-content--header {
    justify-content: center;
    min-height: calc(var(--sticky-header-height) - 2px);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__primary-text {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.2;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__secondary-text {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--nxs-text-muted);
    font-size: 11px;
    font-weight: 600;
    line-height: 1.15;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    min-width: 0;
    width: 100%;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-title {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.2;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__header-subtitle {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--nxs-text-muted);
    font-size: 11px;
    font-weight: 400;
    line-height: 1.05;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__value-cell {
    padding: 0;
    font-variant-numeric: tabular-nums;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__cell-content {
    display: flex;
    align-items: center;
    min-height: var(--sticky-grid-row-height, 28px);
    width: 100%;
    box-sizing: border-box;
    padding: var(--sticky-grid-cell-padding, var(--nxs-space-4) var(--nxs-space-16));
    background: transparent;
    text-align: left;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__cell-content--left {
    justify-content: flex-start;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__cell-content--center {
    justify-content: center;
    text-align: center;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__cell-content--interactive {
    cursor: pointer;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__empty-value {
    color: var(--nxs-text-muted);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button {
    width: 100%;
    margin: 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    border-radius: 0;
    outline: none;
    box-shadow: none;
    appearance: none;
    -webkit-appearance: none;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button:focus,
[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button:focus-visible {
    outline: none;
    box-shadow: none;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button--row {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    min-height: var(--sticky-grid-row-height, 28px);
    padding: var(--sticky-grid-cell-padding, var(--nxs-space-4) var(--nxs-space-16));
    text-align: left;
    transition: background-color 0.12s ease, color 0.12s ease;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button--row:hover {
    background: var(--nxs-surface-raised);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button--selected {
    background: var(--nxs-surface-raised);
    color: var(--nxs-text);
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-8);
    width: 100%;
    min-width: 0;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button-text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--nxs-space-2);
    min-width: 0;
    flex: 1 1 auto;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__interactive-button-value {
    flex: 0 0 auto;
    color: var(--nxs-text-subtle);
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__sticky-header-cell {
    position: sticky !important;
    top: 0 !important;
    background-color: var(--nxs-surface-raised);
    border-top: 0 !important;
    border-bottom: 1px solid var(--nxs-border);
    height: auto;
    min-height: var(--sticky-header-height);
    box-sizing: border-box;
    vertical-align: bottom;
    z-index: 20 !important;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__sticky-col-cell,
[b-q2adu4uc61] .nxs-sticky-grid-shell__sticky-col-header {
    position: sticky !important;
    left: 0 !important;
    background-color: var(--nxs-surface-inset);
    border-right: 1px solid var(--nxs-border);
    min-width: var(--sticky-col-width) !important;
    width: var(--sticky-col-width) !important;
    max-width: var(--sticky-col-width) !important;
    z-index: 20;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__sticky-col-header {
    top: 0 !important;
    border-bottom: 1px solid var(--nxs-border);
    height: auto;
    min-height: var(--sticky-header-height);
    box-sizing: border-box;
    vertical-align: bottom;
    z-index: 40 !important;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__sticky-corner-cell {
    position: sticky !important;
    top: 0 !important;
    left: 0 !important;
    background-color: var(--nxs-surface-inset);
    border-right: 1px solid var(--nxs-border);
    border-bottom: 1px solid var(--nxs-border);
    min-width: var(--sticky-col-width) !important;
    width: var(--sticky-col-width) !important;
    max-width: var(--sticky-col-width) !important;
    height: auto;
    min-height: var(--sticky-header-height);
    box-sizing: border-box;
    vertical-align: bottom;
    z-index: 50 !important;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__sticky-col-header.nxs-sticky-grid-shell__sticky-header-cell {
    z-index: 50 !important;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid {
    background: var(--nxs-surface);
    color: var(--nxs-text);
    width: 100%;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid.mud-table,
[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid.mud-data-grid,
[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid.mud-elevation-1 {
    background: var(--nxs-surface) !important;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-container {
    background: var(--nxs-surface);
    overflow: auto !important;
    max-width: 100%;
    border-radius: inherit;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-root {
    background: var(--nxs-surface);
    color: var(--nxs-text);
    min-width: max-content;
    table-layout: auto;
    border-collapse: separate;
    border-spacing: 0;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-head,
[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-head .mud-table-row {
    background: var(--nxs-surface-raised);
    border-top: 0 !important;
    position: relative;
    z-index: 30;
    isolation: isolate;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-head .mud-table-cell {
    background: var(--nxs-surface-raised);
    color: var(--nxs-text);
    /* Separator between the sticky header row and the body, matching the
       1px var(--nxs-border) dividers between body rows. */
    border-bottom: 1px solid var(--nxs-border);
    box-shadow: none;
    padding: 0;
    vertical-align: bottom;
    border-radius: 0 !important;
    overflow: hidden;
    z-index: 20;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-body .mud-table-cell {
    background: var(--nxs-surface);
    color: var(--nxs-text);
    padding: 0;
    text-align: left;
    white-space: nowrap;
    border-bottom: 1px solid var(--nxs-border);
    border-radius: 0 !important;
    overflow: hidden;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-body .mud-table-row:last-child .mud-table-cell {
    border-bottom: 0;
}

[b-q2adu4uc61] .nxs-sticky-grid-shell__datagrid .mud-table-body .mud-table-cell:has(.nxs-sticky-grid-shell__loading-placeholder--bleed-sticky) {
    overflow: visible;
    padding: 0;
    position: relative;
    background: transparent;
    border-bottom: 0;
}
/* /Components/Metrology/StickyGridToolbar.razor.rz.scp.css */
.sticky-grid-toolbar[b-3jcxvnyxkp] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border-bottom: 1px solid var(--nxs-border);
    background: var(--nxs-surface);
}

.sticky-grid-toolbar__summary[b-3jcxvnyxkp] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--nxs-space-24);
}

.sticky-grid-toolbar__controls[b-3jcxvnyxkp] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--nxs-space-12);
    margin-inline-start: auto;
}

[b-3jcxvnyxkp] .sticky-grid-toolbar__group {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-6);
    flex-wrap: nowrap;
}

[b-3jcxvnyxkp] .sticky-grid-toolbar__label {
    color: var(--nxs-text-muted);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

[b-3jcxvnyxkp] .sticky-grid-toolbar__value {
    color: var(--nxs-text);
    font-size: 0.92rem;
}

[b-3jcxvnyxkp] .sticky-grid-toolbar__value--badge {
    display: inline-flex;
    align-items: center;
    padding: var(--nxs-space-2) var(--nxs-space-8);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface-raised);
    line-height: 1.2;
}

[b-3jcxvnyxkp] .sticky-grid-toolbar__select {
    min-width: 110px;
}

[b-3jcxvnyxkp] .sticky-grid-toolbar__select .mud-input-slot,
[b-3jcxvnyxkp] .sticky-grid-toolbar__select .mud-input-slot input,
[b-3jcxvnyxkp] .sticky-grid-toolbar__select .mud-select-input {
    font-size: 0.8rem;
}
/* /Components/Microscopy/MicroscopyBatchCard.razor.rz.scp.css */
/* Matches the image card's proportions so batches and unbatched images sit in one grid
   without the row height jumping. The 160px media block mirrors MudCardMedia Height="160"
   on the image card. */
.microscopy-batch-card__content[b-lj0vr6mxru] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

.microscopy-batch-card__media[b-lj0vr6mxru] {
    position: relative;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    /* Same box as a thumbnail, in the same pixels, so the two cards cannot differ in height. */
    height: 200px;
    background: var(--nxs-overlay-subtle);
    border-top-left-radius: var(--nxs-radius-lg);
    border-top-right-radius: var(--nxs-radius-lg);
}

/* Sits under the folder icon inside the media box, so "still working" is visible at a glance
   rather than only in the metadata lines. */
.microscopy-batch-card__processing[b-lj0vr6mxru] {
    position: absolute;
    right: var(--nxs-space-8);
    bottom: var(--nxs-space-8);
    left: var(--nxs-space-8);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--nxs-space-8);
    color: var(--nxs-text-subtle);
    font-size: 0.8rem;
}

.microscopy-batch-card__failed[b-lj0vr6mxru] {
    color: var(--nxs-danger);
}

.microscopy-batch-card__icon[b-lj0vr6mxru] {
    /* Deliberately large: the icon is standing in for a thumbnail, not decorating a label. */
    width: var(--nxs-space-48);
    height: var(--nxs-space-48);
    color: var(--nxs-text-subtle);
}

.microscopy-batch-card__title[b-lj0vr6mxru] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* min-width: 0 throughout, on the row and on its children. A flex item defaults to
   min-width: auto, so this row could not shrink below the min-content width of an operator
   address and a timestamp side by side, both nowrap - and since the tile is sized
   flex: 0 0 17rem, the card simply grew past its own track. Every other card stayed at the
   track width, which is what left a gap beside the wider ones. */
.microscopy-batch-card__meta[b-lj0vr6mxru] {
    display: flex;
    justify-content: space-between;
    gap: var(--nxs-space-12);
    min-width: 0;
    color: var(--nxs-text-subtle);
    font-size: 0.8125rem;
}

.microscopy-batch-card__meta > *[b-lj0vr6mxru] {
    min-width: 0;
}

/* Which cell gives way is decided rather than left to chance: the left one truncates, the
   right one keeps its whole value. Letting the timestamp wrap instead would take the card
   past the fixed content height these cards line up on. */
.microscopy-batch-card__meta > :first-child[b-lj0vr6mxru] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.microscopy-batch-card__meta > :last-child[b-lj0vr6mxru] {
    flex: 0 0 auto;
    white-space: nowrap;
}

/* Needs the min-width to go with it: an ellipsis cannot apply to a box that never shrinks. */
.microscopy-batch-card__operator[b-lj0vr6mxru] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.microscopy-batch-card__meta[b-lj0vr6mxru]  .microscopy-batch-card__operator-tooltip {
    min-width: 0;
    overflow: hidden;
}

/* Same content height as an image card, so a batch card in a different row still lines up
   rather than sitting short. The image card sets this on .mud-card-content directly. */
.microscopy-batch-card__content[b-lj0vr6mxru]  .mud-card-content {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    gap: var(--nxs-space-6);
    min-width: 0;
    min-height: 112px;
    padding: var(--nxs-space-12) var(--nxs-space-16) var(--nxs-space-16);
}
/* /Components/Microscopy/MicroscopyBatchDialog.razor.rz.scp.css */
/* Matches the space either side of the grid, so the panel sits centred in the dialog rather
   than crowding its bottom edge. MudBlazor drops the content's lower padding when there is no
   action row, and this dialog deliberately has none. */
.microscopy-batch-dialog__body[b-4wc9w574pt] {
    padding-bottom: var(--nxs-space-16);
}
/* /Components/Notifications/NotificationDisplayer.razor.rz.scp.css */
.nxs-notifications[b-wuz6x1vjm8] {
    position: fixed;
    bottom: 0;
    right: 0;
    
    display: flex;
    flex-direction: column-reverse;
    
    padding: 1em;
    
    z-index: 2;
}
/* /Components/Notifications/NxsNotificationCard.razor.rz.scp.css */
.nxs-notification-curtain[b-nwzbz7qdc3] {
    position: relative;
    margin-top: var(--nxs-space-16);

    overflow: hidden;
    transition: height 0.3s;
}

.nxs-notification-curtain-progress-complete[b-nwzbz7qdc3] {
    animation-duration: 0.2s;
    animation-iteration-count: 2;
    animation-direction: alternate;
    animation-fill-mode: forwards;
    animation-timing-function: ease-in-out;
    animation-name: progress-complete-b-nwzbz7qdc3;
}

.nxs-notification-curtain[b-nwzbz7qdc3]  .nxs-notification {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;

    width: min(25rem, calc(100vw - (2 * var(--nxs-space-16))));
    max-width: 100%;

    user-select: none;
    background-color: var(--nxs-surface-3);
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.nxs-notification-enter[b-nwzbz7qdc3] {
    animation: 0.25s 0s forwards enter-b-nwzbz7qdc3;
}

.nxs-notification-leave[b-nwzbz7qdc3] {
    animation: 0.25s 0s forwards leave-b-nwzbz7qdc3;
}

.nxs-notification-content[b-nwzbz7qdc3] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;

    padding: var(--nxs-space-24);
    font-size: var(--nxs-text-size-md);
}

.nxs-notification-content-message[b-nwzbz7qdc3] {
    min-width: 0;
}

.nxs-notification-content-title[b-nwzbz7qdc3] {
    overflow-wrap: anywhere;
    color: var(--nxs-text);
    font-weight: 600;
    line-height: 1.35;
}

.nxs-notification-content-detail[b-nwzbz7qdc3] {
    margin-top: var(--nxs-space-4);
    overflow-wrap: anywhere;
    color: var(--nxs-text-body);
    line-height: 1.35;
}

.nxs-notification-content-clickable:hover[b-nwzbz7qdc3] {
    cursor: pointer;
}

.nxs-notification-content-progress-container[b-nwzbz7qdc3] {
    display: flex;
    flex-direction: row;
    align-items: center;
    min-width: 0;
    column-gap: var(--nxs-space-8);

    height: var(--nxs-space-20);
    margin-top: var(--nxs-space-8);
}

.nxs-notification-content-progress-container[b-nwzbz7qdc3]  .mud-progress-linear {
    flex: 1 1 auto;
    min-width: 0;
}

/* Determinate background jobs still poll between percentage updates. A subtle
   pulse makes that live state visible without pretending progress advanced. */
.nxs-notification-content-progress-active[b-nwzbz7qdc3]  .mud-progress-linear-bar {
    animation: progress-active-b-nwzbz7qdc3 1.4s ease-in-out infinite;
}

.nxs-notification-curtain[b-nwzbz7qdc3]  .nxs-notification-close {
    align-self: stretch;
    height: auto;
    border-radius: 0;
    background-color: var(--nxs-surface-2);
    transition: background-color var(--transition-speed-hover);
}

.nxs-notification-curtain[b-nwzbz7qdc3]  .nxs-notification-close:hover {
    background-color: var(--nxs-surface-3);
}


@keyframes enter-b-nwzbz7qdc3 {
    from {
        left: calc(100% + var(--nxs-space-16));
    }
    to {
        left: 0;
    }
}

@keyframes progress-complete-b-nwzbz7qdc3 {
    from {
        transform: translateY(0);
    }
    to {
        transform: translateY(-0.25em);
    }
}

@keyframes progress-active-b-nwzbz7qdc3 {
    0%, 100% {
        filter: brightness(0.82);
        opacity: 0.72;
    }
    50% {
        filter: brightness(1.15);
        opacity: 1;
    }
}

@keyframes leave-b-nwzbz7qdc3 {
    from {
        left: 0;
    }
    to {
        box-shadow: none;
        left: calc(100% + var(--nxs-space-16));
    }
}

@media (prefers-reduced-motion: reduce) {
    .nxs-notification-content-progress-active[b-nwzbz7qdc3]  .mud-progress-linear-bar {
        animation: none;
    }
}
/* /Components/NxsBackgroundActivity.razor.rz.scp.css */
.nxs-background-activity[b-4h8fjdvdn4] {
    position: relative;
}

.nxs-background-activity[b-4h8fjdvdn4]  .nxs-background-activity__trigger-spinner {
    display: inline-flex;
    margin-left: var(--nxs-space-8);
}

.nxs-background-activity__panel[b-4h8fjdvdn4] {
    width: min(28rem, calc(100vw - (2 * var(--nxs-space-16))));
    max-height: min(34rem, calc(100vh - 8rem));
    overflow: hidden;
    border: 1px solid var(--nxs-border-strong);
    border-radius: var(--nxs-radius-lg);
    color: var(--nxs-text-body);
    background: var(--nxs-surface-raised);
}

.nxs-background-activity__header[b-4h8fjdvdn4] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    padding: var(--nxs-space-16) var(--nxs-space-20);
    border-bottom: 1px solid var(--nxs-border);
    background: var(--nxs-surface-2);
}

.nxs-background-activity__heading[b-4h8fjdvdn4] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-2);
    min-width: 0;
}

.nxs-background-activity__summary[b-4h8fjdvdn4],
.nxs-background-activity__detail[b-4h8fjdvdn4] {
    color: var(--nxs-text-muted);
}

.nxs-background-activity__list[b-4h8fjdvdn4] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    max-height: 27rem;
    padding: var(--nxs-space-8);
    overflow-y: auto;
    background: var(--nxs-surface-inset);
}

.nxs-background-activity__group-title[b-4h8fjdvdn4] {
    padding: var(--nxs-space-4) var(--nxs-space-8);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-xs);
    font-weight: 600;
    line-height: 1.25;
    text-transform: uppercase;
}

.nxs-background-activity__group-title--recent[b-4h8fjdvdn4] {
    margin-top: var(--nxs-space-8);
}

.nxs-background-activity__item[b-4h8fjdvdn4] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    width: 100%;
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid var(--nxs-border-60);
    border-radius: var(--nxs-radius-md);
    color: inherit;
    text-align: left;
    background: var(--nxs-surface-raised);
}

.nxs-background-activity__item:not(:disabled)[b-4h8fjdvdn4] {
    cursor: pointer;
}

.nxs-background-activity__item:not(:disabled):hover[b-4h8fjdvdn4],
.nxs-background-activity__item:not(:disabled):focus-visible[b-4h8fjdvdn4] {
    background: var(--nxs-surface-2);
}

.nxs-background-activity__item:not(:disabled):focus-visible[b-4h8fjdvdn4] {
    outline: 2px solid var(--nxs-accent);
    outline-offset: -2px;
}

.nxs-background-activity__item:not(:disabled):hover[b-4h8fjdvdn4] {
    outline: none;
}

.nxs-background-activity__item:disabled[b-4h8fjdvdn4] {
    opacity: 1;
}

.nxs-background-activity__item-topline[b-4h8fjdvdn4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-12);
}

.nxs-background-activity__item-title[b-4h8fjdvdn4] {
    min-width: 0;
    overflow: hidden;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nxs-background-activity__detail[b-4h8fjdvdn4] {
    overflow: hidden;
    font-size: var(--nxs-text-size-sm);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nxs-background-activity__status[b-4h8fjdvdn4] {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: var(--nxs-space-4);
    padding: var(--nxs-space-2) var(--nxs-space-8);
    border: 1px solid var(--nxs-border-strong);
    border-radius: var(--nxs-radius-pill);
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-xs);
}

.nxs-background-activity__status--completed[b-4h8fjdvdn4] {
    border-color: var(--nxs-success-border);
    color: var(--nxs-success-text);
    background: var(--nxs-success-bg);
}

.nxs-background-activity__status--failed[b-4h8fjdvdn4] {
    border-color: var(--nxs-danger-border);
    color: var(--nxs-danger-text);
    background: var(--nxs-danger-bg);
}

.nxs-background-activity__status--waiting[b-4h8fjdvdn4] {
    border-color: var(--nxs-warning);
    color: color-mix(in srgb, var(--nxs-warning) 45%, var(--nxs-text));
}

.nxs-background-activity__status--processing[b-4h8fjdvdn4] {
    border-color: var(--nxs-accent);
    color: var(--nxs-accent-bright);
    background: var(--nxs-info-bg);
}

.nxs-background-activity__progress[b-4h8fjdvdn4] {
    width: 100%;
}

.nxs-background-activity__empty[b-4h8fjdvdn4] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--nxs-space-8);
    min-height: 8rem;
    padding: var(--nxs-space-24);
    color: var(--nxs-text-muted);
    background: var(--nxs-surface-inset);
}
/* /Components/NxsBulkFileUpload.razor.rz.scp.css */
/* NxsFieldShell reserves label headroom on floating Mud fields (8px above, 4px
   below the outline). This control is not a Mud input, so it takes the same
   headroom itself; without it, its outline sits 8px above a neighbouring field's
   and no row alignment can make the two line up. */
.nxs-bulk-file-upload[b-pk1f1me4kf] {
    position: relative;
    display: flex;
    align-items: center;
    margin-top: var(--nxs-space-8);
    margin-bottom: var(--nxs-space-4);
    height: var(--nxs-control-h-form);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    overflow: hidden;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.nxs-bulk-file-upload:hover:not(.nxs-bulk-file-upload--disabled)[b-pk1f1me4kf],
.nxs-bulk-file-upload:focus-within:not(.nxs-bulk-file-upload--disabled)[b-pk1f1me4kf] {
    border-color: var(--nxs-border-strong);
}

.nxs-bulk-file-upload.nxs-bulk-file-upload--drag[b-pk1f1me4kf],
.nxs-bulk-file-upload.nxs-bulk-file-upload--drag:hover:not(.nxs-bulk-file-upload--disabled)[b-pk1f1me4kf] {
    border-color: var(--nxs-accent);
    background: var(--nxs-accent-8);
}

/* Matches how a disabled Mud field reads — dimmed outline, muted text, and the
   accent dropped from the activator so it no longer offers to be clicked. A flat
   opacity wash over the whole control greys the surface too and reads as broken
   rather than unavailable. */
.nxs-bulk-file-upload--disabled[b-pk1f1me4kf] {
    border-color: var(--nxs-border-60);
}

.nxs-bulk-file-upload--disabled .nxs-bulk-file-upload__button[b-pk1f1me4kf] {
    color: var(--nxs-text-muted);
}

.nxs-bulk-file-upload--disabled .nxs-bulk-file-upload__selection[b-pk1f1me4kf] {
    color: color-mix(in srgb, var(--nxs-text-muted) 70%, transparent);
}

.nxs-bulk-file-upload[b-pk1f1me4kf]  .nxs-bulk-file-upload__input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 10;
}

/* A disabled input swallows the click without firing or bubbling it, which would
   leave a consumer unable to explain why the control is inert. Letting pointer
   events through means the click reaches whatever wraps this component. */
.nxs-bulk-file-upload--disabled[b-pk1f1me4kf]  .nxs-bulk-file-upload__input {
    cursor: default;
    pointer-events: none;
}

.nxs-bulk-file-upload[b-pk1f1me4kf]  .nxs-bulk-file-upload__tooltip {
    display: block;
    flex: 1;
    min-width: 0;
    height: 100%;
}

.nxs-bulk-file-upload__body[b-pk1f1me4kf] {
    display: flex;
    align-items: stretch;
    width: 100%;
    height: 100%;
}

.nxs-bulk-file-upload__button[b-pk1f1me4kf] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    padding: 0 var(--nxs-space-12);
    border-right: 1px solid var(--nxs-border);
    color: var(--nxs-accent);
    font-size: var(--nxs-text-size-sm);
    font-weight: 500;
    letter-spacing: 0.02857em;
    text-transform: uppercase;
    white-space: nowrap;
}

.nxs-bulk-file-upload__selection[b-pk1f1me4kf] {
    display: flex;
    align-items: center;
    flex: 1;
    min-width: 0;
    padding: 0 var(--nxs-space-12);
    overflow: hidden;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-md);
}

/* Ellipsis belongs on the text element, not on the flex strip above it. */
.nxs-bulk-file-upload__selection-text[b-pk1f1me4kf] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/NxsChart.razor.rz.scp.css */
.nxs-chart[b-y4agp3ls7n] {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

.nxs-chart__title[b-y4agp3ls7n] {
    flex: 0 0 auto;
    margin-bottom: var(--nxs-space-4);
    padding: 0;
    color: var(--nxs-text);
    font-size: 15px;
    font-weight: 800;
    line-height: 1.15;
    text-align: center;
}

.nxs-chart__plot[b-y4agp3ls7n] {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}

.nxs-chart__empty[b-y4agp3ls7n] {
    display: grid;
    place-items: center;
    min-height: 0;
    padding: var(--nxs-space-24);
    color: var(--nxs-text-muted);
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    line-height: 1.4;
    text-align: center;
}

/* Plotly paints its own container backgrounds; force them transparent so the chart sits on
   whatever surface the host provides. The plot area itself is coloured by PlotBgColor
   (NxsColors.PlotBgHex); the paper (margin) area stays transparent. */
.nxs-chart[b-y4agp3ls7n]  .js-plotly-plot,
.nxs-chart[b-y4agp3ls7n]  .plot-container,
.nxs-chart[b-y4agp3ls7n]  .svg-container {
    background: transparent !important;
    box-shadow: none !important;
}

/* Height must be pinned as well as width: Plotly's autosize/resize measures the graph
   div's OWN box, so an unconstrained height self-reinforces (it stays at whatever Plotly
   last rendered, 450px by default) and the canvas bottom — axis title included — overflows
   the fixed-height host and gets clipped by the overflow:hidden above. */
.nxs-chart[b-y4agp3ls7n]  .js-plotly-plot {
    width: 100% !important;
    height: 100% !important;
}

.nxs-chart[b-y4agp3ls7n]  .modebar-container {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    pointer-events: none;
}

.nxs-chart[b-y4agp3ls7n]  .modebar {
    position: absolute !important;
    left: var(--nxs-space-12) !important;
    top: var(--nxs-space-12) !important;
    right: auto !important;
    bottom: auto !important;
    display: flex !important;
    flex-direction: row !important;
    transform: none !important;
    pointer-events: auto;
}

.nxs-chart[b-y4agp3ls7n]  .modebar-group {
    display: flex !important;
    flex-direction: row !important;
    padding: 0 !important;
}

.nxs-chart[b-y4agp3ls7n]  .modebar-btn {
    display: flex !important;
    align-items: center;
    justify-content: center;
}
/* /Components/NxsDrawerPanel.razor.rz.scp.css */
/* Content + a slide-in side panel (right). Closed: a single column. Open: content shrinks and the
   panel takes a fixed width. Styling mirrors the SEM image viewer's analysis panel, via tokens.
   Width is overridable by the host with --nxs-drawer-panel-width. */
.nxs-drawer-panel[b-yqoeawnodw] {
    display: grid;
    /* Closed keeps a zero-width second track rather than dropping to one column, so the grid
       has something to animate between. */
    grid-template-columns: minmax(0, 1fr) 0;
    align-items: stretch;
    min-height: 0;
    height: 100%;
    gap: 0;
    transition: grid-template-columns 220ms ease, gap 220ms ease;
}

.nxs-drawer-panel--open[b-yqoeawnodw] {
    grid-template-columns: minmax(0, 1fr) var(--nxs-drawer-panel-width, 24rem);
    gap: var(--nxs-space-16);
}

/* Respect a user who has asked for less motion. */
@media (prefers-reduced-motion: reduce) {
    .nxs-drawer-panel[b-yqoeawnodw] {
        transition: none;
    }
}

.nxs-drawer-panel__content[b-yqoeawnodw] {
    position: relative;
    min-width: 0;
    min-height: 0;
}

/* ── Expanding icon→label toggle, overlaid top-right of the content ── */
.nxs-drawer-panel__toggle-shell[b-yqoeawnodw] {
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    z-index: 6;
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: auto !important;
    min-width: 2.75rem !important;
    height: 2.75rem;
    padding: 0;
    overflow: hidden;
    box-sizing: border-box;
    color: var(--nxs-text);
    background-color: var(--nxs-surface-40);
    border: 1px solid var(--nxs-border-60);
    border-radius: var(--nxs-surface-radius);
    backdrop-filter: blur(6px);
    cursor: pointer;
    transition: padding 160ms ease, background-color 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle:hover,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle:focus-visible,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle:focus-within {
    background-color: var(--nxs-surface-80);
    border-color: var(--nxs-border);
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:hover,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:focus-visible,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:focus-within {
    padding: 0 var(--nxs-space-16);
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle .mud-button-label {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    width: 100%;
    height: 100%;
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle-icon {
    flex: 0 0 auto;
    margin: 0;
    transition: margin 160ms ease;
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:hover .nxs-drawer-panel__toggle-icon,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:focus-visible .nxs-drawer-panel__toggle-icon,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:focus-within .nxs-drawer-panel__toggle-icon {
    margin-right: var(--nxs-space-8);
}

.nxs-drawer-panel__toggle-label[b-yqoeawnodw] {
    max-width: 0;
    opacity: 0;
    overflow: hidden;
    white-space: nowrap;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    transition: max-width 160ms ease, opacity 120ms ease;
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:hover .nxs-drawer-panel__toggle-label,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:focus-visible .nxs-drawer-panel__toggle-label,
.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__toggle--with-label:focus-within .nxs-drawer-panel__toggle-label {
    max-width: var(--nxs-drawer-panel-toggle-label-max-width, 12rem);
    opacity: 1;
}

/* ── The panel surface ── */
.nxs-drawer-panel__panel[b-yqoeawnodw] {
    --nxs-field-backdrop: var(--nxs-surface-raised);
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    background-color: var(--nxs-surface-raised);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.nxs-drawer-panel__panel-header[b-yqoeawnodw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border-bottom: 1px solid var(--nxs-border);
    background: var(--nxs-surface);
}

.nxs-drawer-panel__panel-title[b-yqoeawnodw] {
    color: var(--nxs-text);
    font-size: 13px;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__panel-close {
    color: var(--nxs-text-muted);
}

.nxs-drawer-panel[b-yqoeawnodw]  .nxs-drawer-panel__panel-close:hover {
    color: var(--nxs-text);
}

.nxs-drawer-panel__panel-body[b-yqoeawnodw] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: var(--nxs-space-16);
}

/* Narrow screens: the panel stacks under the content instead of taking a column. */
@media (max-width: 720px) {
    .nxs-drawer-panel--open[b-yqoeawnodw] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* The panel stays in the DOM so it can slide rather than blink. Closed it is zero-width,
   translated out and inert; open it settles into its track. */
.nxs-drawer-panel__panel[b-yqoeawnodw] {
    overflow: hidden;
    min-width: 0;
    opacity: 0;
    visibility: hidden;
    transform: translateX(var(--nxs-space-16));
    transition: opacity 180ms ease, transform 220ms ease, visibility 0s linear 220ms;
}

.nxs-drawer-panel__panel.is-open[b-yqoeawnodw] {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
    transition: opacity 180ms ease 40ms, transform 220ms ease, visibility 0s;
}

@media (prefers-reduced-motion: reduce) {
    .nxs-drawer-panel__panel[b-yqoeawnodw],
    .nxs-drawer-panel__panel.is-open[b-yqoeawnodw] {
        transition: none;
    }
}
/* /Components/NxsFieldShell.razor.rz.scp.css */
.nxs-form-field[b-t9rg0uj8ik] {
    display: flex;
    flex-direction: column;
}

.nxs-form-field__label[b-t9rg0uj8ik] {
    margin-bottom: var(--nxs-space-6);
    color: var(--mud-palette-text-primary);
    font-size: var(--nxs-text-size-sm);
    font-weight: 400;
    line-height: 1.2;
}

.nxs-form-field__required[b-t9rg0uj8ik] {
    display: inline-block;
    margin-inline-start: var(--nxs-space-6);
    color: var(--mud-palette-error);
    font-size: var(--nxs-text-size-sm);
    line-height: 1;
    transform: translateY(-0.08em);
    vertical-align: middle;
}

.nxs-form-field--required.nxs-form-field--floating[b-t9rg0uj8ik]  .mud-input-label::after {
    content: "✱";
    display: inline-block;
    margin-inline-start: var(--nxs-space-6);
    color: var(--mud-palette-error);
    font-size: var(--nxs-text-size-sm);
    line-height: 1;
    transform: translateY(-0.08em);
    vertical-align: middle;
}

.nxs-form-field__control[b-t9rg0uj8ik] {
    min-width: 0;
}

.nxs-form-field__body-row[b-t9rg0uj8ik] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: var(--nxs-space-12);
    min-width: 0;
}

.nxs-form-field--accessory-start .nxs-form-field__body-row[b-t9rg0uj8ik] {
    grid-template-columns: auto minmax(0, 1fr);
}

.nxs-form-field__accessory[b-t9rg0uj8ik] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--nxs-space-8);
    min-width: 0;
    height: var(--nxs-control-h-form);
}

/* Floating Mud fields reserve label headroom above the outlined body. The accessory
   follows that shared reserve, while helper and validation content remain in the
   independent control column below it. */
.nxs-form-field--floating .nxs-form-field__body-row > .nxs-form-field__accessory[b-t9rg0uj8ik] {
    margin-block-start: var(--nxs-space-8);
}

.nxs-form-field__control[b-t9rg0uj8ik]  .mud-input-control {
    margin: 0;
}

/* Headroom for the floated label, which rises ~9px above the outline's top edge. */
.nxs-form-field--floating .nxs-form-field__control[b-t9rg0uj8ik]  .mud-input-control.mud-input-outlined-with-label {
    margin-top: var(--nxs-space-8);
    margin-bottom: var(--nxs-space-4);
}

/* The outline alone defines the field; the interior stays transparent so the floated
   label's border mask (below) works on whatever the field sits on. The wrapper still
   gets the outline's radius so any state fill (e.g. browser autofill) clips to the
   same corners instead of painting a square box behind the rounded border. */
.nxs-form-field__control[b-t9rg0uj8ik]  .mud-input.mud-input-outlined {
    background: transparent;
    border-radius: var(--nxs-radius-md);
}

/* Outline stays 1px in every state; colour carries the state (rest → hover → focus).
   !important because Mud recolours/rewidths this element per state with selectors a
   scoped rule can't consistently out-specify. */
.nxs-form-field__control[b-t9rg0uj8ik]  .mud-input-outlined-border {
    border-color: var(--nxs-border) !important;
    border-radius: var(--nxs-radius-md);
    border-width: 1px !important;
    transition: border-color 120ms ease !important;
}

.nxs-form-field__control:hover[b-t9rg0uj8ik]  .mud-input:not(.mud-disabled) .mud-input-outlined-border {
    border-color: var(--nxs-border-strong) !important;
}

.nxs-form-field__control:focus-within[b-t9rg0uj8ik]  .mud-input:not(.mud-disabled) .mud-input-outlined-border {
    border-color: var(--mud-palette-primary) !important;
}

/* Floating label at rest — sits inside the field as the placeholder. No border crosses
   it here, so it needs no mask background. */
.nxs-form-field--floating .nxs-form-field__control[b-t9rg0uj8ik]  .mud-input-label-outlined {
    background: transparent;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-md);
    font-weight: 400;
}

/* Floating label when floated (field has a value or focus). MudBlazor 7 has no
   fieldset/legend notch: .mud-input-outlined-border is one uninterrupted rounded box,
   and the "gap" for the label is faked by the label's opaque background masking the
   border line. That mask must match the backdrop BEHIND the field, not the field's
   interior — pages sit on --nxs-bg; a container that hosts fields on another surface
   overrides --nxs-field-backdrop. Mud floats via scale(0.75), which shrank our 13px
   label to unreadable ~10px; instead float at scale(1) with a real label size so the
   floated label matches .nxs-form-field__label. translate y of -9px centres the label's
   18px line box on the border. Selectors mirror Mud's own shrink/focus pair so both
   trigger paths are covered and this rule outweighs the stock one. */
.nxs-form-field--floating .nxs-form-field__control[b-t9rg0uj8ik]  .mud-shrink ~ label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined,
.nxs-form-field--floating .nxs-form-field__control[b-t9rg0uj8ik]  .mud-input:focus-within ~ label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined {
    transform: translate(14px, -9px) scale(1);
    background: var(--nxs-field-backdrop, var(--nxs-bg));
    color: var(--mud-palette-text-primary);
    font-size: var(--nxs-text-size-sm);
    font-weight: 400;
}

.nxs-form-field--floating .nxs-form-field__control[b-t9rg0uj8ik]  label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined.mud-disabled {
    color: var(--nxs-text-muted);
}

@media (max-width: 48rem) {
    .nxs-form-field--stack-accessory .nxs-form-field__body-row[b-t9rg0uj8ik] {
        grid-template-columns: minmax(0, 1fr);
    }

    .nxs-form-field--stack-accessory .nxs-form-field__body-row > .nxs-form-field__accessory[b-t9rg0uj8ik] {
        justify-content: flex-start;
        height: auto;
        margin-block-start: 0;
    }
}
/* /Components/NxsFileStructureDiagram.razor.rz.scp.css */
/* Static documentation tree: connector rules are drawn on the nested lists so
   nesting reads structurally without any expand/collapse affordance. */

.nxs-file-structure[b-ik9i985ccb] {
    /* Width of the icon plus its gap, so hints line up under the name rather
       than under the icon. */
    --nxs-file-structure-indent: 1.75rem;

    list-style: none;
    margin: 0;
    padding: 0;
}

.nxs-file-structure--root[b-ik9i985ccb] {
    background-color: var(--nxs-surface-inset);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    padding: var(--nxs-space-16);
}

.nxs-file-structure:not(.nxs-file-structure--root)[b-ik9i985ccb] {
    margin-left: var(--nxs-space-8);
    padding-left: var(--nxs-space-12);
    border-left: 1px solid var(--nxs-border);
}

/* Each entry is one block: name row plus its hint. Space between entries, not
   inside them, so a hint stays visually attached to its own folder. */
.nxs-file-structure__item + .nxs-file-structure__item[b-ik9i985ccb] {
    margin-top: var(--nxs-space-12);
}

.nxs-file-structure > .nxs-file-structure__item > .nxs-file-structure[b-ik9i985ccb] {
    margin-top: var(--nxs-space-12);
}

.nxs-file-structure__row[b-ik9i985ccb] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    min-width: 0;
    flex-wrap: wrap;
}

.nxs-file-structure__icon[b-ik9i985ccb] {
    color: var(--nxs-text-muted);
    flex: 0 0 auto;
}

.nxs-file-structure__name[b-ik9i985ccb] {
    color: var(--nxs-text);
    overflow-wrap: anywhere;
}

/* Dimmer than the name: the pattern qualifies the folder, it is not its label. */
.nxs-file-structure__glob[b-ik9i985ccb] {
    color: var(--nxs-text-muted);
    font-family: var(--nxs-font-mono);
    font-size: var(--nxs-text-size-sm);
}

.nxs-file-structure__row[b-ik9i985ccb]  .nxs-file-structure__optional {
    flex: 0 0 auto;
}

/* Match state, shown only once a directory has been checked. */
.nxs-file-structure__state[b-ik9i985ccb] {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-4);
    font-size: var(--nxs-text-size-sm);
    flex: 0 0 auto;
}

.nxs-file-structure__state--satisfied[b-ik9i985ccb] {
    color: var(--nxs-success);
}

.nxs-file-structure__state--missing[b-ik9i985ccb] {
    color: var(--nxs-danger);
}

/* Continuation row for a repeating entry: aligned under the icon column so it
   reads as more of the same, not as another kind of entry. */
.nxs-file-structure__repeat-mark[b-ik9i985ccb] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: var(--nxs-space-2);
    width: var(--nxs-space-20);
}

.nxs-file-structure__repeat-mark > span[b-ik9i985ccb] {
    width: var(--nxs-space-2);
    height: var(--nxs-space-2);
    background: var(--nxs-text-muted);
    border-radius: var(--nxs-radius-pill);
}

.nxs-file-structure__item.nxs-file-structure__repeat[b-ik9i985ccb] {
    margin-top: var(--nxs-space-4);
}

.nxs-file-structure__hint[b-ik9i985ccb] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.45;
    margin-top: var(--nxs-space-4);
    margin-left: var(--nxs-file-structure-indent);
}
/* /Components/NxsFileUpload.razor.rz.scp.css */
.nxs-file-upload[b-qf7ln8b51n] {
    position: relative;
    display: flex;
    align-items: center;
    height: var(--nxs-control-h-form);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    overflow: hidden;
    transition: border-color 120ms ease, background-color 120ms ease;
}

.nxs-file-upload:hover:not(.nxs-file-upload--disabled)[b-qf7ln8b51n],
.nxs-file-upload:focus-within:not(.nxs-file-upload--disabled)[b-qf7ln8b51n] {
    border-color: var(--nxs-border-strong);
}

/* Placed after (and with a :hover twin matching) the rule above so the drop-target
   highlight wins while a drag is in progress. */
.nxs-file-upload.nxs-file-upload--drag[b-qf7ln8b51n],
.nxs-file-upload.nxs-file-upload--drag:hover:not(.nxs-file-upload--disabled)[b-qf7ln8b51n] {
    border-color: var(--nxs-accent);
    background: var(--nxs-accent-8);
}

.nxs-file-upload--disabled[b-qf7ln8b51n] {
    opacity: 0.5;
}

.nxs-file-upload[b-qf7ln8b51n]  .nxs-file-upload__tooltip {
    display: block;
    flex: 1;
    min-width: 0;
    height: 100%;
}

/* Stretch the Mud plumbing so the activator body fills the control. */
.nxs-file-upload[b-qf7ln8b51n]  .mud-file-upload {
    flex: 1;
    width: 100%;
    min-width: 0;
    height: 100%;
    margin: 0;
}

/* Mud forces this container to display:initial (inline), which collapses the
   100%-height chain; !important is required to out-rank Mud's own !important rule. */
.nxs-file-upload[b-qf7ln8b51n]  .mud-file-upload > .mud-input-control-input-container {
    display: block !important;
    width: 100%;
    height: 100%;
}

.nxs-file-upload[b-qf7ln8b51n]  .mud-file-upload .mud-input-control-input-container > div {
    width: 100%;
    height: 100%;
}

/* The native file input is stretched invisibly over the whole control: it is both
   the click target and the native drag-and-drop target, so no JS interop is needed. */
.nxs-file-upload[b-qf7ln8b51n]  .nxs-file-upload__input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
    z-index: 10;
}

.nxs-file-upload--disabled[b-qf7ln8b51n]  .nxs-file-upload__input {
    cursor: default;
}

.nxs-file-upload--loading[b-qf7ln8b51n]  .nxs-file-upload__input {
    cursor: wait;
}

.nxs-file-upload__body[b-qf7ln8b51n] {
    display: flex;
    align-items: stretch;
    width: 100%;
    height: 100%;
}

.nxs-file-upload__button[b-qf7ln8b51n] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    padding: 0 var(--nxs-space-12);
    border-right: 1px solid var(--nxs-border);
    color: var(--nxs-accent);
    font-size: var(--nxs-text-size-sm);
    font-weight: 500;
    letter-spacing: 0.02857em; /* match Mud button type */
    text-transform: uppercase;
    white-space: nowrap;
}

.nxs-file-upload__filename[b-qf7ln8b51n] {
    display: flex;
    align-items: center;
    flex: 1;
    min-width: 0;
    padding: 0 var(--nxs-space-12);
}

.nxs-file-upload__name[b-qf7ln8b51n],
.nxs-file-upload__hint[b-qf7ln8b51n] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--nxs-text-size-md);
}

.nxs-file-upload__name[b-qf7ln8b51n] {
    color: var(--nxs-text-subtle);
}

.nxs-file-upload__hint[b-qf7ln8b51n] {
    color: var(--nxs-text-muted);
}

/* Sits above the stretched input so clearing doesn't reopen the file picker. */
.nxs-file-upload[b-qf7ln8b51n]  .nxs-file-upload__clear {
    position: relative;
    z-index: 20;
    margin-right: var(--nxs-space-4);
}

/* Keep file processing feedback inside the control that initiated it. This replaces the
   clear affordance while busy, so the right edge stays stable and cannot trigger another
   file selection during preview measurement. */
.nxs-file-upload[b-qf7ln8b51n]  .nxs-file-upload__loading {
    position: relative;
    z-index: 20;
    flex: 0 0 auto;
    margin-right: var(--nxs-space-12);
}

/* While a drag is in progress the clear button must not swallow the drop —
   let it fall through to the stretched input beneath. */
.nxs-file-upload--drag[b-qf7ln8b51n]  .nxs-file-upload__clear {
    pointer-events: none;
}
/* /Components/NxsGeometryAutoRotateControls.razor.rz.scp.css */
.nxs-geometry-auto-rotate-controls[b-s1fqlau35f] {
    display: contents;
}

.nxs-geometry-auto-rotate-controls[b-s1fqlau35f]  .nxs-geometry-auto-rotate-controls__button {
    flex: 0 0 var(--nxs-control-h-sm);
    width: var(--nxs-control-h-sm);
    min-width: var(--nxs-control-h-sm);
    height: var(--nxs-control-h-sm);
    min-height: var(--nxs-control-h-sm);
    margin: 0;
    padding: 0;
    border-radius: var(--nxs-radius-md);
}
/* /Components/NxsGeometryClipControls.razor.rz.scp.css */
.nxs-geometry-clip-controls[b-id1jfhnpcs] {
    display: inline-flex;
    min-width: 0;
    align-items: center;
    column-gap: var(--nxs-space-8);
}

/* This composite owns the gap between its children. MudSwitch otherwise adds
   asymmetric inline margins that compound with the parent-owned gap. */
.nxs-geometry-clip-controls[b-id1jfhnpcs]  .mud-switch {
    margin-inline: 0 !important;
}

/* Mud's group clips its selected fill and overlaps adjacent cells by one pixel.
   The group owns the only rounded outline; square children own only dividers. */
.nxs-geometry-clip-controls[b-id1jfhnpcs]  .nxs-geometry-clip-controls__axis {
    isolation: isolate;
    height: var(--nxs-control-h-sm);
    overflow: hidden;
    border: 1px solid var(--nxs-border) !important;
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface);
}

.nxs-geometry-clip-controls[b-id1jfhnpcs]  .nxs-geometry-clip-controls__axis--count-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    width: calc(var(--nxs-control-h-sm) * 2);
}

.nxs-geometry-clip-controls[b-id1jfhnpcs]  .nxs-geometry-clip-controls__axis--count-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    width: calc(var(--nxs-control-h-sm) * 3);
}

.nxs-geometry-clip-controls[b-id1jfhnpcs]  .nxs-geometry-clip-controls__axis-item {
    width: 100%;
    min-width: 0;
    height: 100%;
    min-height: 0;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
}

.nxs-geometry-clip-controls[b-id1jfhnpcs]  .nxs-geometry-clip-controls__axis-item:not(:first-child) {
    border-inline-start: 1px solid var(--nxs-border) !important;
}

.nxs-geometry-clip-controls[b-id1jfhnpcs]  .nxs-geometry-clip-controls__axis-item > .mud-button-label {
    min-height: 0;
    line-height: 1;
}
/* /Components/NxsGeometryToolbar.razor.rz.scp.css */
.nxs-geometry-toolbar[b-1n2ha1gow7] {
    display: contents;
}

.nxs-geometry-toolbar--overlay[b-1n2ha1gow7] {
    --nxs-toolbar-background: var(--nxs-geometry-toolbar-background, var(--nxs-surface-80));
}
/* /Components/NxsGeometryViewerAddonHost.razor.rz.scp.css */
.nxs-geometry-viewer-addon-host[b-yl0if7wn5l] {
    position: relative;
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.nxs-geometry-viewer-addon-host__viewer[b-yl0if7wn5l] {
    display: grid;
    min-width: 0;
    min-height: 0;
}

.nxs-geometry-viewer-addon-host__top-rail[b-yl0if7wn5l] {
    position: absolute;
    z-index: 1;
    inset-block-start: var(--nxs-space-12);
    inset-inline: var(--nxs-space-12);
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: var(--nxs-space-8) var(--nxs-space-12);
    pointer-events: none;
}

.nxs-geometry-viewer-addon-host__addon[b-yl0if7wn5l] {
    --nxs-geometry-toolbar-background: var(--nxs-surface-80);

    box-sizing: border-box;
    max-width: 100%;
    opacity: 0.25;
    pointer-events: auto;
    transition: opacity var(--transition-speed-hover);
}

.nxs-geometry-viewer-addon-host__addon:hover[b-yl0if7wn5l],
.nxs-geometry-viewer-addon-host__addon:focus-within[b-yl0if7wn5l],
.nxs-geometry-viewer-addon-host__addon:active[b-yl0if7wn5l] {
    --nxs-geometry-toolbar-background: var(--nxs-surface);

    opacity: 1;
}

.nxs-geometry-viewer-addon-host__addon--top-start[b-yl0if7wn5l],
.nxs-geometry-viewer-addon-host__addon--top-end[b-yl0if7wn5l] {
    flex: 0 0 auto;
}

.nxs-geometry-viewer-addon-host__addon--top-end[b-yl0if7wn5l] {
    margin-inline-start: auto;
}

.nxs-geometry-viewer-addon-host__bottom[b-yl0if7wn5l] {
    min-width: 0;
    width: 100%;
    padding-block-start: var(--nxs-space-8);
    border-block-start: 1px solid var(--nxs-border);
}

@media (hover: none) {
    .nxs-geometry-viewer-addon-host__addon[b-yl0if7wn5l] {
        --nxs-geometry-toolbar-background: var(--nxs-surface);

        opacity: 1;
    }
}
/* /Components/NxsGeometryViewportControls.razor.rz.scp.css */
.nxs-geometry-viewport-controls[b-2if4myntzc] {
    display: contents;
}

.nxs-geometry-viewport-controls[b-2if4myntzc]  .nxs-geometry-viewport-controls__button {
    flex: 0 0 var(--nxs-control-h-sm);
    width: var(--nxs-control-h-sm);
    min-width: var(--nxs-control-h-sm);
    height: var(--nxs-control-h-sm);
    min-height: var(--nxs-control-h-sm);
    margin: 0;
    padding: 0;
    border-radius: var(--nxs-radius-md);
}
/* /Components/NxsInfoButton.razor.rz.scp.css */
.nxs-info-button[b-rxdzcz5mjz] {
    display: inline-flex;
}

/* The outlined accent treatment identifies contextual help without reading as
   an informational status or severity badge. */
.nxs-info-button[b-rxdzcz5mjz]  .nxs-info-button__trigger.mud-icon-button {
    color: var(--nxs-accent);
}

.nxs-info-button[b-rxdzcz5mjz]  .nxs-info-button__trigger.mud-icon-button:hover,
.nxs-info-button[b-rxdzcz5mjz]  .nxs-info-button__trigger.mud-icon-button:focus-visible {
    color: var(--nxs-accent-bright);
}
/* /Components/NxsListSkeleton.razor.rz.scp.css */
.nxs-list-skeleton[b-riwknizwxb] {
    min-width: 0;
}

.nxs-list-skeleton__rows[b-riwknizwxb] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

/* Bounded list hosts may deliberately overfill the available height. The shared fade keeps
   that overfill quiet without introducing a loading-only scrollbar or a hard clipped edge. */
.nxs-list-skeleton--fade-bottom[b-riwknizwxb] {
    min-height: 0;
    flex: 1;
}

.nxs-list-skeleton--fade-bottom .nxs-list-skeleton__rows[b-riwknizwxb] {
    height: 100%;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(to bottom, var(--nxs-text) 40%, transparent 95%);
    mask-image: linear-gradient(to bottom, var(--nxs-text) 40%, transparent 95%);
}

.nxs-list-skeleton__row[b-riwknizwxb] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    min-height: var(--nxs-control-h-md);
}

.nxs-list-skeleton__line[b-riwknizwxb] {
    width: 82%;
    height: var(--nxs-space-12);
    border-radius: var(--nxs-radius-md);
    background: linear-gradient(
        90deg,
        var(--nxs-overlay-hover) 30%,
        var(--nxs-overlay-20) 50%,
        var(--nxs-overlay-hover) 70%);
    background-size: 200% 100%;
}

/* Stable variation makes the placeholders read as different list entries without exposing
   decorative width configuration to every consumer. */
.nxs-list-skeleton__row:nth-child(3n) .nxs-list-skeleton__line[b-riwknizwxb] {
    width: 62%;
}

.nxs-list-skeleton__row:nth-child(3n + 1) .nxs-list-skeleton__line[b-riwknizwxb] {
    width: 92%;
}

@media (prefers-reduced-motion: no-preference) {
    .nxs-list-skeleton__line[b-riwknizwxb] {
        animation: nxs-list-skeleton-shimmer-b-riwknizwxb var(--nxs-motion-duration-shimmer) linear infinite;
    }
}

@keyframes nxs-list-skeleton-shimmer-b-riwknizwxb {
    from {
        background-position: 200% 0;
    }

    to {
        background-position: -200% 0;
    }
}

@media (forced-colors: active) {
    .nxs-list-skeleton--fade-bottom .nxs-list-skeleton__rows[b-riwknizwxb] {
        -webkit-mask-image: none;
        mask-image: none;
    }

    .nxs-list-skeleton__line[b-riwknizwxb] {
        background: CanvasText;
        animation: none;
    }
}
/* /Components/NxsLoadingOverlay.razor.rz.scp.css */
.nxs-loading-overlay[b-996lpjz0pp] {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background: var(--nxs-surface-veil);
    z-index: 2;
}
/* /Components/NxsLoadingSpinner.razor.rz.scp.css */
.nxs-loading-spinner[b-fcm3pym57e] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: var(--nxs-space-8);
    text-align: center;
}

/* Page/section-level loading: a full-width centred block instead of an inline element. */
.nxs-loading-spinner--centered[b-fcm3pym57e] {
    display: flex;
    width: 100%;
    padding-block: var(--nxs-space-32);
}

.nxs-loading-spinner__ring[b-fcm3pym57e] {
    position: relative;
    display: inline-flex;
}

.nxs-loading-spinner__percent[b-fcm3pym57e] {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-xs);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.nxs-loading-spinner__label[b-fcm3pym57e] {
    color: var(--nxs-text-body);
    font-size: var(--nxs-text-size-md);
}

.nxs-loading-spinner__stage[b-fcm3pym57e] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
}
/* /Components/NxsMarkedSlider.razor.rz.scp.css */
.nxs-marked-slider[b-lrel4o8kfi] {
    position: relative;
    width: 100%;
    min-width: 0;
}

.nxs-marked-slider__visual[b-lrel4o8kfi] {
    position: absolute;
    z-index: 0;
    inset: 0;
    pointer-events: none;
}

.nxs-marked-slider__rail[b-lrel4o8kfi],
.nxs-marked-slider__mark[b-lrel4o8kfi],
.nxs-marked-slider__handle[b-lrel4o8kfi] {
    position: absolute;
    top: 50%;
}

.nxs-marked-slider__rail[b-lrel4o8kfi] {
    right: 0;
    left: 0;
    height: var(--nxs-space-2);
    transform: translateY(-50%);
    border-radius: var(--nxs-radius-pill);
    background: var(--nxs-accent-30);
}

.nxs-marked-slider__mark[b-lrel4o8kfi],
.nxs-marked-slider__handle[b-lrel4o8kfi] {
    left: var(--nxs-marked-slider-position);
}

.nxs-marked-slider__mark[b-lrel4o8kfi] {
    z-index: 1;
    width: var(--nxs-space-2);
    height: var(--nxs-space-6);
    transform: translateX(-50%) translateY(calc(-100% - var(--nxs-space-8)));
    border-radius: var(--nxs-radius-sm);
    background: var(--nxs-warning);
}

.nxs-marked-slider__handle[b-lrel4o8kfi] {
    z-index: 2;
    width: var(--nxs-space-12);
    height: var(--nxs-space-12);
    transform: translate(-50%, -50%);
    border-radius: var(--nxs-radius-pill);
    background: var(--nxs-accent);
}

.nxs-marked-slider:focus-within .nxs-marked-slider__rail[b-lrel4o8kfi] {
    background: var(--nxs-accent);
}

.nxs-marked-slider--disabled .nxs-marked-slider__visual[b-lrel4o8kfi] {
    opacity: 0.38;
}

/* MudSlider puts its Class on its own root span, so this is the wrapper rather than the
   input. Block, not the inline-block Mud gives it: an inline-level box is preceded by the
   markup's own indentation as a text node, which nudges it right by a space. */
.nxs-marked-slider[b-lrel4o8kfi]  .nxs-marked-slider__input {
    position: relative;
    z-index: 3;
    display: block;
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: 0;
}

/*
 * MudSlider intentionally remains the pointer, keyboard and accessibility
 * input. Mud positions its tick layer across the full component width, while
 * Edge positions the native range thumb using browser-defined thumb travel;
 * those coordinate systems visibly diverge away from the centre. Keep the Mud
 * input transparent with zero thumb geometry and render the Nxs rail, marks
 * and handle together above it. Do not reintroduce page-level marker overlays
 * or correction offsets.
 */
/* The native input, which is what the pointer actually drives. Browsers give
   input[type=range] a default 2px margin, insetting its track from the visual layer that
   spans the component box; the thumb is already zero-width so its travel is the whole track,
   but the two boxes have to be the same box or the handle trails the cursor. */
.nxs-marked-slider[b-lrel4o8kfi]  .mud-slider-input {
    opacity: 0;
    box-sizing: border-box;
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
}

.nxs-marked-slider[b-lrel4o8kfi]  .mud-slider-input::-webkit-slider-thumb {
    width: 0 !important;
    height: 0 !important;
    transform: none !important;
    box-shadow: none !important;
}

.nxs-marked-slider[b-lrel4o8kfi]  .mud-slider-input::-moz-range-thumb {
    width: 0 !important;
    height: 0 !important;
    transform: none !important;
    box-shadow: none !important;
}
/* /Components/NxsModeSwitch.razor.rz.scp.css */
.nxs-mode-switch[b-ysp1t3b0go] {
    display: inline-flex;
    min-width: 0;
    align-items: center;
    color: var(--nxs-text);
    white-space: nowrap;
}

.nxs-mode-switch__label[b-ysp1t3b0go] {
    color: inherit;
    cursor: pointer;
    user-select: none;
}

.nxs-mode-switch--disabled[b-ysp1t3b0go] {
    color: var(--mud-palette-text-disabled);
}

.nxs-mode-switch--disabled .nxs-mode-switch__label[b-ysp1t3b0go] {
    cursor: default;
}

/* The composite owns spacing, so MudSwitch must not add label-oriented margins. */
.nxs-mode-switch[b-ysp1t3b0go]  .mud-switch {
    margin-inline: 0 !important;
}

/* Both endpoints are active modes: position changes, but neither side looks "off". */
.nxs-mode-switch[b-ysp1t3b0go]  .mud-switch-base:not(.mud-switch-disabled) {
    color: var(--nxs-accent) !important;
}

.nxs-mode-switch[b-ysp1t3b0go]  .mud-switch-base:not(.mud-switch-disabled) + .mud-switch-track {
    background-color: var(--nxs-accent) !important;
    opacity: 0.5 !important;
}
/* /Components/NxsMultiAutocomplete.razor.rz.scp.css */
.nxs-multi-autocomplete__chips[b-7rk3krvoa9] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
    margin-top: var(--nxs-space-8);
}
/* /Components/NxsNumericOverride.razor.rz.scp.css */
.nxs-numeric-override[b-2rkfgz374f] {
    --nxs-numeric-override-height: var(--nxs-control-h-lg);
    --nxs-numeric-override-reset-width: var(--nxs-control-h-lg);

    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.nxs-numeric-override--medium[b-2rkfgz374f] {
    --nxs-numeric-override-height: var(--nxs-control-h-md);
    --nxs-numeric-override-reset-width: var(--nxs-control-h-md);
}

.nxs-numeric-override--small[b-2rkfgz374f] {
    --nxs-numeric-override-height: var(--nxs-control-h-sm);
    --nxs-numeric-override-reset-width: var(--nxs-control-h-sm);
}

.nxs-numeric-override__label[b-2rkfgz374f] {
    color: var(--nxs-text-subtle);
    font-size: 14px;
    font-weight: 700;
}

/* Segmented control: input + reset button, zero gap. Top-aligned so that when Mud shows its
   validation message below the input box, the box / sign / button keep the box height and the
   message simply flows below them (pushing content beneath down — never overlapping, never
   stretching the button or dropping the sign). */
.nxs-numeric-override__row[b-2rkfgz374f] {
    display: flex;
    align-items: flex-start;
    gap: 0;
}

.nxs-numeric-override__shell[b-2rkfgz374f] {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
}

.nxs-numeric-override__shell[b-2rkfgz374f]  .mud-input-control {
    margin: 0;
}

/* Pin the input box to a fixed height so the sign and reset button can match it exactly and
   stay put when a validation message appears below it. */
.nxs-numeric-override__shell[b-2rkfgz374f]  .mud-input {
    height: var(--nxs-numeric-override-height);
    min-height: var(--nxs-numeric-override-height);
}

.nxs-numeric-override__shell[b-2rkfgz374f]  input {
    height: var(--nxs-numeric-override-height);
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

/* Prefixed inputs indent the number so it clears the overlay and every value begins at the
   same x regardless of the prefix content. */
.nxs-numeric-override__shell--prefixed[b-2rkfgz374f]  input {
    padding-left: 1.85rem !important;
}

/* ── Border: the whole control is treated as one piece. Precedence (high → low):
   overridden (green) › focus (cyan) › hover (strong) › rest (grey).
   Green persists through focus by design. Both halves share a 120ms transition so they
   animate together. The fieldset is Mud's .mud-input-outlined-border; !important is needed
   because Mud restyles it per state with selectors a scoped rule can't out-specify. ── */
.nxs-numeric-override__shell[b-2rkfgz374f]  .mud-input-outlined-border {
    border-color: var(--nxs-border);
    border-width: 1px !important;
    border-top-left-radius: var(--nxs-radius-md);
    border-bottom-left-radius: var(--nxs-radius-md);
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    transition: border-color 120ms ease !important;
}

/* A trailing unit is part of the value, so it shares the input surface without an internal
   divider. The unit segment still owns the divider before the reset action. */
.nxs-numeric-override__shell--with-end[b-2rkfgz374f]  .mud-input-outlined-border {
    border-right-width: 0 !important;
}

.nxs-numeric-override__row:hover:not(:focus-within):not(.nxs-numeric-override__row--overridden)[b-2rkfgz374f]  .mud-input-outlined-border {
    border-color: var(--nxs-border-strong) !important;
}

.nxs-numeric-override__row--overridden[b-2rkfgz374f]  .mud-input-outlined-border {
    border-color: var(--mud-palette-success) !important;
}

/* Optional trailing unit/adornment segment. It joins directly to the input and owns the right
   divider before the reset action, keeping every visual boundary single-owned. */
.nxs-numeric-override__end[b-2rkfgz374f] {
    box-sizing: border-box;
    flex: 0 0 auto;
    height: var(--nxs-numeric-override-height);
    min-width: var(--nxs-numeric-override-height);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-inline: var(--nxs-space-8);
    border-block: 1px solid var(--nxs-border);
    border-right: 1px solid var(--nxs-border);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-md);
    line-height: 1;
    white-space: nowrap;
    transition: border-color 120ms ease;
}

.nxs-numeric-override__row:hover:not(:focus-within):not(.nxs-numeric-override__row--overridden) .nxs-numeric-override__end[b-2rkfgz374f] {
    border-color: var(--nxs-border-strong);
}

.nxs-numeric-override__row:focus-within:not(.nxs-numeric-override__row--overridden) .nxs-numeric-override__end[b-2rkfgz374f] {
    border-color: var(--mud-palette-primary);
}

.nxs-numeric-override__row--overridden .nxs-numeric-override__end[b-2rkfgz374f] {
    border-color: var(--mud-palette-success);
}

/* The prefix is overlaid on the left of the input box and kept out of flow so it cannot push
   the number. It matches the box height, staying centred on the box rather than its message. */
.nxs-numeric-override__prefix[b-2rkfgz374f] {
    position: absolute;
    left: 0.85rem;
    top: 0;
    height: var(--nxs-numeric-override-height);
    z-index: 2;
    display: flex;
    align-items: center;
    color: var(--nxs-text-body);
    line-height: 1;
    pointer-events: none;
}

.nxs-numeric-override__reset-host[b-2rkfgz374f] {
    box-sizing: border-box;
    display: block;
    flex: 0 0 auto;
    width: var(--nxs-numeric-override-reset-width);
    height: var(--nxs-numeric-override-height);
}

.nxs-numeric-override__reset-host[b-2rkfgz374f]  .mud-tooltip-root {
    display: block;
    width: 100%;
    height: 100%;
}

/* Reset button: the right segment, fixed to the box height. Top/right/bottom border only —
   the input's right border is the shared divider (no doubled seam). Its border mirrors the
   input via the same precedence; only the icon reflects enabled/disabled. */
.nxs-numeric-override__reset[b-2rkfgz374f] {
    flex: 0 0 auto;
    height: var(--nxs-numeric-override-height);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 0;
    border: 1px solid var(--nxs-border);
    border-left-width: 0;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-top-right-radius: var(--nxs-radius-md);
    border-bottom-right-radius: var(--nxs-radius-md);
    background: transparent;
    color: var(--mud-palette-success);
    cursor: pointer;
    transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

.nxs-numeric-override__row:hover:not(:focus-within):not(.nxs-numeric-override__row--overridden) .nxs-numeric-override__reset[b-2rkfgz374f] {
    border-color: var(--nxs-border-strong);
}

.nxs-numeric-override__row:focus-within:not(.nxs-numeric-override__row--overridden) .nxs-numeric-override__reset[b-2rkfgz374f] {
    border-color: var(--mud-palette-primary);
}

.nxs-numeric-override__row--overridden .nxs-numeric-override__reset[b-2rkfgz374f] {
    border-color: var(--mud-palette-success);
}

.nxs-numeric-override__reset:hover:not(:disabled)[b-2rkfgz374f] {
    background: var(--nxs-surface-raised);
}

.nxs-numeric-override__reset:focus-visible[b-2rkfgz374f] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: -2px;
}

.nxs-numeric-override__reset:disabled[b-2rkfgz374f] {
    cursor: default;
}

/* Disabled (not overridden) is shown ONLY on the icon — never the border, which keeps tracking
   the input so the segmented control stays whole. */
.nxs-numeric-override__reset:disabled[b-2rkfgz374f]  .mud-icon-root {
    color: var(--nxs-text-muted);
    opacity: 0.5;
}
/* /Components/NxsRemovableChip.razor.rz.scp.css */
.nxs-removable-chip__leading[b-i0ja5infl5] {
    display: inline-flex;
    align-items: center;
    margin-inline-end: var(--nxs-space-4);
}
/* /Components/NxsResultChip.razor.rz.scp.css */
.nxs-result-chip__content[b-114scul0gm] {
    display: grid;
    place-items: center;
}

.nxs-result-chip__measure[b-114scul0gm],
.nxs-result-chip__value[b-114scul0gm] {
    grid-area: 1 / 1;
}

.nxs-result-chip__measure[b-114scul0gm] {
    visibility: hidden;
}
/* /Components/NxsScalarLegend.razor.rz.scp.css */
.nxs-scalar-legend[b-bzg9cpppw1] {
    display: grid;
    min-width: 0;
    gap: var(--nxs-space-4);
}

.nxs-scalar-legend__bar[b-bzg9cpppw1] {
    display: block;
    width: 100%;
    height: var(--nxs-space-12);
    overflow: hidden;
    border-radius: var(--nxs-radius-pill);
}

.nxs-scalar-legend__labels[b-bzg9cpppw1] {
    display: flex;
    justify-content: space-between;
    gap: var(--nxs-space-8);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    font-variant-numeric: tabular-nums;
}
/* /Components/NxsSelectableTile.razor.rz.scp.css */
.nxs-selectable-tile__host[b-oglpvz9cnl] {
    /* Fill the grid cell. Without an explicit width the tile shrinks to its content, which
       leaves a gap between cards whenever the track is wider than the thumbnail. */
    width: 100%;
    max-width: 100%;
    min-width: 0;
    height: 100%;
}

.nxs-selectable-tile__host[b-oglpvz9cnl]  .nxs-selectable-tile__tooltip {
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    height: 100%;
}

/* MudTooltip wraps its child in its own root element. Without a height here the 100% chain from
   the grid cell down to the card breaks, every card sizes to its own content, and cards with
   different numbers of metadata lines end at different heights. */
.nxs-selectable-tile__host[b-oglpvz9cnl]  .mud-tooltip-root {
    display: block;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    height: 100%;
}

.nxs-selectable-tile[b-oglpvz9cnl] {
    position: relative;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    height: 100%;
}

.nxs-selectable-tile[b-oglpvz9cnl]  .nxs-selectable-tile__surface {
    display: flex;
    flex-direction: column;
    height: 100%;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    cursor: pointer;
    background-color: var(--nxs-surface-inset);
    border-radius: var(--nxs-radius-lg);
    transition: transform 0.15s ease, border-color 0.15s ease;
}

.nxs-selectable-tile[b-oglpvz9cnl]  .nxs-selectable-tile__surface:focus-visible {
    border-color: var(--nxs-accent);
    outline: 2px solid var(--nxs-accent);
    outline-offset: 2px;
}

@media (hover: hover) and (pointer: fine) {
    .nxs-selectable-tile:hover[b-oglpvz9cnl]  .nxs-selectable-tile__surface {
        transform: translateY(-2px);
        border-color: var(--nxs-border-strong);
    }
}

.nxs-selectable-tile.is-selected[b-oglpvz9cnl]  .nxs-selectable-tile__surface {
    outline: 2px solid var(--nxs-accent);
    outline-offset: -2px;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--nxs-accent) 25%, transparent);
}

.nxs-selectable-tile.is-disabled[b-oglpvz9cnl]  .nxs-selectable-tile__surface {
    border-color: var(--nxs-border);
    box-shadow: none;
    cursor: default;
    filter: grayscale(0.7);
    opacity: 0.5;
    outline: none;
    pointer-events: none;
    transform: none;
}

.nxs-selectable-tile.is-selection-disabled:not(.is-selected)[b-oglpvz9cnl]  .nxs-selectable-tile__surface {
    opacity: 0.82;
}

.nxs-selectable-tile__selection[b-oglpvz9cnl] {
    position: absolute;
    top: var(--nxs-space-8);
    right: var(--nxs-space-8);
    z-index: 3;
}

.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge.mud-icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    min-width: 0;
    border: 1.5px solid color-mix(in srgb, var(--nxs-text) 85%, transparent);
    border-radius: var(--nxs-radius-pill);
    padding: 0;
    background: color-mix(in srgb, var(--nxs-info-bg) 55%, transparent);
    color: color-mix(in srgb, var(--nxs-text) 90%, transparent);
    backdrop-filter: blur(6px);
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 120ms ease, transform 120ms ease,
                background-color 120ms ease, color 120ms ease,
                border-color 120ms ease;
}

.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge--blocked {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: var(--nxs-radius-pill);
    background: color-mix(in srgb, var(--nxs-info-bg) 55%, transparent);
    color: var(--nxs-danger);
    font-size: 1.25rem;
    backdrop-filter: blur(6px);
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 120ms ease, transform 120ms ease,
                background-color 120ms ease, border-color 120ms ease;
}

.nxs-selectable-tile.has-active-selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge,
.nxs-selectable-tile:focus-within[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge,
.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge:focus-visible,
.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge.is-selected {
    opacity: 1;
    transform: scale(1);
}

@media (hover: hover) and (pointer: fine) {
    .nxs-selectable-tile:hover[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge {
        opacity: 1;
        transform: scale(1);
    }
}

.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge.mud-icon-button:hover:not(:disabled) {
    background: color-mix(in srgb, var(--nxs-info-bg) 85%, transparent);
}

.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge.is-selected.mud-icon-button {
    background: var(--nxs-accent);
    color: var(--nxs-text);
    border-color: var(--nxs-text);
}

@media (prefers-reduced-motion: reduce) {
    .nxs-selectable-tile[b-oglpvz9cnl]  .nxs-selectable-tile__surface,
    .nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__select-badge {
        transition: none;
        transform: none;
    }
}

/* Sits where the selection badge would, so the corner reads as one slot rather than two
   competing marks. */
.nxs-selectable-tile__selection[b-oglpvz9cnl]  .nxs-selectable-tile__deleting {
    display: block;
}

/* Dimmed and outlined in the danger colour while it goes, so a slow delete is visibly
   under way and obviously destructive. */
.nxs-selectable-tile.is-deleting[b-oglpvz9cnl] {
    opacity: 0.55;
    outline: 1px solid var(--nxs-danger);
    outline-offset: -1px;
    /* The rounding lives on the card inside, so without matching it here the outline traces
       a square box around a rounded card. Same token, so the two curves cannot drift. */
    border-radius: var(--nxs-radius-lg);
    transition: opacity 120ms ease-out;
}
/* /Components/NxsSliderReadout.razor.rz.scp.css */
.nxs-slider-readout[b-ecwrggxbnf] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.nxs-slider-readout__slider-row[b-ecwrggxbnf] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.nxs-slider-readout__slider-shell[b-ecwrggxbnf] {
    flex: 1 1 auto;
    position: relative;
    min-width: 0;
}

.nxs-slider-readout__slider[b-ecwrggxbnf] {
    width: 100%;
    min-width: 0;
}

.nxs-slider-readout[b-ecwrggxbnf]  .mud-slider-input:hover::-webkit-slider-thumb,
.nxs-slider-readout[b-ecwrggxbnf]  .mud-slider-input:focus-visible::-webkit-slider-thumb,
.nxs-slider-readout[b-ecwrggxbnf]  .mud-slider-input:active::-webkit-slider-thumb {
    box-shadow: none !important;
}

.nxs-slider-readout[b-ecwrggxbnf]  .mud-slider-input:hover::-moz-range-thumb,
.nxs-slider-readout[b-ecwrggxbnf]  .mud-slider-input:focus-visible::-moz-range-thumb,
.nxs-slider-readout[b-ecwrggxbnf]  .mud-slider-input:active::-moz-range-thumb {
    box-shadow: none !important;
}

.nxs-slider-readout__values[b-ecwrggxbnf] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    min-width: 0;
    align-items: center;
    gap: var(--nxs-space-8);
    min-height: 1.2em;
    margin-top: calc(var(--nxs-space-4) * -1);
}

.nxs-slider-readout__values[b-ecwrggxbnf]  .nxs-slider-readout__value {
    color: var(--nxs-text-muted);
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
    white-space: nowrap;
}

.nxs-slider-readout__center[b-ecwrggxbnf] {
    grid-column: 2;
    min-width: 0;
    justify-self: center;
}

.nxs-slider-readout__values[b-ecwrggxbnf]  .nxs-slider-readout__value--leading {
    grid-column: 1;
    justify-self: start;
}

.nxs-slider-readout__values[b-ecwrggxbnf]  .nxs-slider-readout__value--trailing {
    grid-column: 3;
    justify-self: end;
    text-align: end;
}
/* /Components/NxsSnackbarProvider.razor.rz.scp.css */
.nxs-snackbar-region[b-kmylmvnul8] {
    position: fixed;
    right: var(--nxs-space-24);
    bottom: var(--nxs-space-24);
    z-index: 1500;
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    width: min(28rem, calc(100vw - (2 * var(--nxs-space-24))));
    pointer-events: none;
}

.nxs-snackbar[b-kmylmvnul8] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--nxs-space-12);
    min-height: 3rem;
    padding: var(--nxs-space-8) var(--nxs-space-12);
    border: 1px solid var(--nxs-border-strong);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface-raised);
    color: var(--nxs-text-body);
    box-shadow: 0 12px 24px var(--nxs-shadow);
    pointer-events: auto;
    animation: nxs-snackbar-enter-b-kmylmvnul8 140ms cubic-bezier(0.2, 0, 0, 1) both;
}

.nxs-snackbar.is-exiting[b-kmylmvnul8] {
    animation: nxs-snackbar-exit-b-kmylmvnul8 120ms cubic-bezier(0.4, 0, 1, 1) both;
}

.nxs-snackbar__icon[b-kmylmvnul8] {
    color: var(--nxs-info);
}

.nxs-snackbar--success .nxs-snackbar__icon[b-kmylmvnul8] {
    color: var(--nxs-success-text);
}

.nxs-snackbar--warning .nxs-snackbar__icon[b-kmylmvnul8] {
    color: var(--nxs-warning);
}

.nxs-snackbar--error .nxs-snackbar__icon[b-kmylmvnul8] {
    color: var(--nxs-danger-text);
}

.nxs-snackbar__message[b-kmylmvnul8] {
    min-width: 0;
    overflow-wrap: anywhere;
    color: var(--nxs-text-body);
    font-size: var(--nxs-text-size-md);
    line-height: 1.35;
}

.nxs-snackbar__close[b-kmylmvnul8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: var(--nxs-radius-pill);
    color: var(--nxs-text-muted);
    background: transparent;
}

.nxs-snackbar__close:hover[b-kmylmvnul8],
.nxs-snackbar__close:focus-visible[b-kmylmvnul8] {
    color: var(--nxs-text);
    background: var(--nxs-overlay-8);
}

@keyframes nxs-snackbar-enter-b-kmylmvnul8 {
    from {
        opacity: 0;
        transform: translate3d(10px, 8px, 0) scale(0.985);
    }

    to {
        opacity: 1;
        transform: translate3d(0, 0, 0) scale(1);
    }
}

@keyframes nxs-snackbar-exit-b-kmylmvnul8 {
    from {
        opacity: 1;
        transform: translate3d(0, 0, 0) scale(1);
    }

    to {
        opacity: 0;
        transform: translate3d(12px, 0, 0) scale(0.985);
    }
}

@media (max-width: 640px) {
    .nxs-snackbar-region[b-kmylmvnul8] {
        right: var(--nxs-space-12);
        bottom: var(--nxs-space-12);
        width: calc(100vw - (2 * var(--nxs-space-12)));
    }
}
/* /Components/NxsSurfacePreview.razor.rz.scp.css */
/* A decision aid rather than data, so it sits in its own bounded block - centred, because
   the image is the point and a full-width column would strand it against one edge. */
.nxs-surface-preview[b-vnkgm0bin0] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    max-width: 34rem;
    margin-inline: auto;
}

/* Reserves the canvas's space at the image's own aspect, so nothing below it jumps when the
   measurement lands. Square because the shape is not known until the image is decoded. */
.nxs-surface-preview[b-vnkgm0bin0]  .nxs-surface-preview__skeleton {
    width: 100%;
    aspect-ratio: 1;
    height: auto;
    border-radius: var(--nxs-radius-md);
}

.nxs-surface-preview__heading[b-vnkgm0bin0] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

/* The canvas is sized in pixels to the measured image and scaled down here rather than in
   the drawing, so the overlay stays aligned at any display size. */
.nxs-surface-preview__canvas[b-vnkgm0bin0] {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
}

/* Dimmed while a fresh measurement runs, so what is on screen reads as stale rather than
   current. */
.nxs-surface-preview__canvas--measuring[b-vnkgm0bin0] {
    opacity: 0.45;
    transition: opacity 120ms ease-out;
}

/* A brief ring when a fresh measurement lands. The mask often barely moves when only the
   calibration changed, so without this the redraw is easy to miss entirely. */
.nxs-surface-preview__canvas--updated[b-vnkgm0bin0] {
    animation: nxs-surface-preview-updated-b-vnkgm0bin0 620ms ease-out;
}

@keyframes nxs-surface-preview-updated-b-vnkgm0bin0 {
    0% {
        border-color: var(--nxs-accent);
        box-shadow: 0 0 0 3px color-mix(in srgb, var(--nxs-accent) 45%, transparent);
    }

    100% {
        border-color: var(--nxs-border);
        box-shadow: 0 0 0 0 transparent;
    }
}

.nxs-surface-preview__controls[b-vnkgm0bin0] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

.nxs-surface-preview__depth-entry[b-vnkgm0bin0] {
    max-width: 14rem;
}

/* The regime and its explanation stay on one line, as the pixel size and its icon do. */
.nxs-surface-preview__regime[b-vnkgm0bin0] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-4);
}

/* Matched to the muted grey MudBlazor uses for its own helper text, so the two do not
   compete. */
.nxs-surface-preview__hint[b-vnkgm0bin0] {
    display: block;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.45;
}

/* The percentage is the answer the slider exists to produce, so it is not muted like the
   text around it. */
.nxs-surface-preview__readout[b-vnkgm0bin0] {
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-sm);
    font-variant-numeric: tabular-nums;
}
/* /Components/NxsTileGrid.razor.rz.scp.css */
.nxs-tile-grid[b-2hqdfa3n88] {
    min-width: 0;
    overflow: hidden;
    background: var(--nxs-surface);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
}

.nxs-tile-grid__toolbar[b-2hqdfa3n88] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-12) var(--nxs-space-16);
    background: var(--nxs-surface-raised);
    border-bottom: 1px solid var(--nxs-border);
}

.nxs-tile-grid__body[b-2hqdfa3n88] {
    min-width: 0;
    padding: var(--nxs-space-16);
}

.nxs-tile-grid__leading:not(:empty)[b-2hqdfa3n88] {
    margin-bottom: var(--nxs-space-16);
}

.nxs-tile-grid__items[b-2hqdfa3n88] {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: var(--nxs-space-16);
}

/* Every card is the same width and they pack from the left. Fixed rather than stretched, so a
   row of two looks like a row of six, and shrinking only below the tile width itself. */
.nxs-tile-grid__item[b-2hqdfa3n88] {
    display: flex;
    flex: 0 0 auto;
    width: min(100%, var(--nxs-tile-min-width));
    max-width: var(--nxs-tile-min-width);
    min-width: 0;
}

.nxs-tile-grid__item > *[b-2hqdfa3n88] {
    flex: 1 1 auto;
    align-self: stretch;
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

/* Browse cards opt into a stable footprint when their content is intentionally summarized.
   The width remains responsive below the normal tile width; only the vertical footprint is
   fixed so cards in different wrapped rows cannot drift. */
.nxs-tile-grid--fixed-items .nxs-tile-grid__item[b-2hqdfa3n88] {
    height: 21rem;
}

/* An item that renders nothing takes no space at all, rather than leaving a card-sized hole. */
.nxs-tile-grid__item:empty[b-2hqdfa3n88] {
    display: none;
}

.nxs-tile-grid__empty[b-2hqdfa3n88] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-8);
    text-align: center;
    color: var(--nxs-text-muted);
}

.nxs-tile-grid__pagination[b-2hqdfa3n88] {
    display: flex;
    justify-content: center;
    padding-top: var(--nxs-space-20);
}
/* /Components/NxsToolbar.razor.rz.scp.css */
.nxs-toolbar[b-jk2ix3gei7] {
    display: contents;
}

.nxs-toolbar[b-jk2ix3gei7]  .nxs-toolbar__surface {
    box-sizing: border-box;
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: var(--nxs-space-8);
    width: max-content;
    max-width: 100%;
    min-width: 0;
    min-height: calc(var(--nxs-control-h-sm) + (2 * var(--nxs-space-4)));
    padding: var(--nxs-space-4) var(--nxs-space-8);
    overflow: hidden;
    white-space: nowrap;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-toolbar-background, var(--nxs-surface));
}

.nxs-toolbar[b-jk2ix3gei7]  .nxs-toolbar__surface:focus-within {
    border-color: var(--nxs-accent);
}

/* The toolbar owns spacing between controls. MudSwitch carries asymmetric
   inline margins by default, which would otherwise compound with the toolbar gap. */
.nxs-toolbar[b-jk2ix3gei7]  .mud-switch {
    margin-inline: 0 !important;
}

/* Compact toolbar controls retain their direct state feedback without the
   expanded slider or switch halo. The toolbar border supplies focus feedback. */
.nxs-toolbar[b-jk2ix3gei7]  .mud-slider-input:hover::-webkit-slider-thumb,
.nxs-toolbar[b-jk2ix3gei7]  .mud-slider-input:focus-visible::-webkit-slider-thumb,
.nxs-toolbar[b-jk2ix3gei7]  .mud-slider-input:active::-webkit-slider-thumb {
    box-shadow: none !important;
}

.nxs-toolbar[b-jk2ix3gei7]  .mud-slider-input:hover::-moz-range-thumb,
.nxs-toolbar[b-jk2ix3gei7]  .mud-slider-input:focus-visible::-moz-range-thumb,
.nxs-toolbar[b-jk2ix3gei7]  .mud-slider-input:active::-moz-range-thumb {
    box-shadow: none !important;
}

.nxs-toolbar[b-jk2ix3gei7]  .mud-switch-base:hover,
.nxs-toolbar[b-jk2ix3gei7]  .mud-switch-base:focus-visible,
.nxs-toolbar[b-jk2ix3gei7]  .mud-switch-base:active {
    background-color: transparent;
}

.nxs-toolbar[b-jk2ix3gei7]  .mud-ripple-switch::after {
    display: none;
}
/* /Components/NxsValueChip.razor.rz.scp.css */
.nxs-value-chip__content[b-01r5ki0qiv] {
    display: grid;
    place-items: center;
}

.nxs-value-chip__measure[b-01r5ki0qiv],
.nxs-value-chip__value[b-01r5ki0qiv] {
    grid-area: 1 / 1;
}

.nxs-value-chip__measure[b-01r5ki0qiv] {
    visibility: hidden;
}
/* /Components/NxsViewportFillLayout.razor.rz.scp.css */
.nxs-viewport-fill-layout[b-33zk6p5yl6] {
    display: grid;
    width: 100%;
    height: 100%;
    min-height: 100%;
    grid-template-rows: minmax(0, 1fr);
}

/* Document-style pages may start viewport-height but must grow with finite content so the
   shared article scroll owner can place its bottom gutter after the real content edge. */
.nxs-viewport-fill-layout--content-flow[b-33zk6p5yl6] {
    height: auto;
}

.nxs-viewport-fill-layout--with-header[b-33zk6p5yl6] {
    grid-template-rows: auto minmax(0, 1fr);
}

.nxs-viewport-fill-layout__header[b-33zk6p5yl6] {
    min-width: 0;
    margin-bottom: var(--nxs-space-16);
}

/* The layout header owns the single house gutter below the complete header slot. */
.nxs-viewport-fill-layout__header[b-33zk6p5yl6]  .nxs-title {
    margin-bottom: 0;
}

.nxs-viewport-fill-layout__body[b-33zk6p5yl6] {
    display: flex;
    min-height: 0;
    flex-direction: column;
}
/* /Components/NxsVirtualizedMultiSelect.razor.rz.scp.css */
.nxs-virtualized-multi-select[b-ujc4zv9w8a] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    width: 100%;
    min-width: 0;
}

.nxs-virtualized-multi-select__summary[b-ujc4zv9w8a] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12);
    min-width: 0;
}

.nxs-virtualized-multi-select__summary--compact[b-ujc4zv9w8a] {
    min-height: 0;
}

.nxs-virtualized-multi-select__count[b-ujc4zv9w8a] {
    color: var(--mud-palette-text-secondary);
    font-size: var(--nxs-text-size-md);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* The picker shell is the single owner of the control's border, radius, and
   background; the search field and list inside it stay flat and square. */
.nxs-virtualized-multi-select__picker[b-ujc4zv9w8a] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: var(--nxs-radius-md);
    background: var(--mud-palette-surface);
    overflow: hidden;
}

.nxs-virtualized-multi-select__picker:focus-within[b-ujc4zv9w8a] {
    border-color: var(--mud-palette-primary);
}

/* MudTextField's Class lands on its .mud-input-control root, so these rules
   target that element directly. Its own bottom border is the sole separator
   between search and list. */
[b-ujc4zv9w8a] .nxs-virtualized-multi-select__search {
    flex: 0 0 auto;
    margin: 0;
    border-bottom: 1px solid var(--mud-palette-lines-inputs);
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__search .mud-input-control-input-container {
    margin: 0;
    padding: 0;
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__search .mud-input-outlined-border {
    display: none;
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__search .mud-input-helper-text {
    display: none;
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__panel {
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface-2);
    overflow: hidden;
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__panel:hover {
    border-color: var(--nxs-border-strong);
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__panel .mud-expand-panel {
    background: transparent;
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__panel .mud-expand-panel-header {
    min-height: 44px;
    padding: 0 var(--nxs-space-8) 0 var(--nxs-space-12);
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__panel .mud-expand-panel-header .mud-expand-panel-text {
    min-width: 0;
    flex: 1 1 auto;
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
}

.nxs-virtualized-multi-select__panel-title[b-ujc4zv9w8a] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    width: 100%;
    min-width: 0;
}

.nxs-virtualized-multi-select__panel-title-text[b-ujc4zv9w8a] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[b-ujc4zv9w8a] .nxs-virtualized-multi-select__panel .mud-expand-panel-content {
    padding: 0 var(--nxs-space-12) var(--nxs-space-12);
}

.nxs-virtualized-multi-select__list[b-ujc4zv9w8a] {
    height: 14rem;
    overflow-x: hidden;
    overflow-y: auto;
}

.nxs-virtualized-multi-select__row[b-ujc4zv9w8a] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-4);
    height: 34px;
    min-width: 0;
    padding: 0 var(--nxs-space-6);
}

.nxs-virtualized-multi-select[b-ujc4zv9w8a]  .nxs-virtualized-multi-select__item-tooltip {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
}

.nxs-virtualized-multi-select__item-text[b-ujc4zv9w8a] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nxs-virtualized-multi-select__empty[b-ujc4zv9w8a] {
    color: var(--mud-palette-text-secondary);
    padding: var(--nxs-space-12);
}
/* /Components/Parts/PartProcessIcon.razor.rz.scp.css */
.part-process-icon[b-2ulpvatf2n] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
    flex: 0 0 auto;
}

.part-process-icon svg[b-2ulpvatf2n] {
    display: block;
    width: 100%;
    height: 100%;
}
/* /Components/ProductionDocuments/TaggedDocumentUploader.razor.rz.scp.css */
.docs-dashboard-root[b-anld381lwm] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 1rem;
    width: 100%;
}

.docs-top-row[b-anld381lwm] {
    display: grid;
    grid-template-columns: minmax(0, 40rem) minmax(0, 1fr);
    gap: 1rem;
    align-items: start;
    width: 100%;
}

.docs-upload-panel[b-anld381lwm],
.docs-management-panel[b-anld381lwm] {
    width: 100%;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
    background: var(--nxs-overlay-subtle);
}

.docs-upload-panel[b-anld381lwm] {
    max-width: 40rem;
}

.docs-panel-title[b-anld381lwm] {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
    margin-bottom: 0.8rem;
}

.docs-upload-form[b-anld381lwm] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.docs-upload-field[b-anld381lwm] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.docs-upload-actions[b-anld381lwm] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 1rem;
    align-items: center;
}

.docs-file-input[b-anld381lwm] {
    width: 100%;
}

.docs-upload-loader[b-anld381lwm] {
    min-height: 1.5rem;
    display: flex;
    align-items: center;
    margin-top: 0.5rem;
}

.docs-selected-files[b-anld381lwm] {
    margin-top: 0.75rem;
    font-size: 0.85rem;
    opacity: 0.78;
}

.docs-upload-preview[b-anld381lwm] {
    margin-top: 0.85rem;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-info-bg);
    padding: 0.75rem;
}

.docs-management-shell[b-anld381lwm] {
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.docs-management-panel[b-anld381lwm]  .k-grid {
    border-color: var(--nxs-overlay-hover);
    box-shadow: none !important;
}

.docs-management-panel[b-anld381lwm]  .k-grid-content td {
    border-color: var(--nxs-overlay-hover);
}

.docs-viewer-shell[b-anld381lwm] {
    width: 100%;
}

.docs-preview-title[b-anld381lwm] {
    margin-bottom: 0.55rem;
    font-size: 1rem;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.docs-preview-image[b-anld381lwm],
.docs-preview-pdf[b-anld381lwm] {
    width: 100%;
    height: 20rem;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-info-bg);
}

.docs-preview-image[b-anld381lwm] {
    object-fit: contain;
}

.docs-preview-text[b-anld381lwm],
.docs-preview-message[b-anld381lwm] {
    width: 100%;
    min-height: 10rem;
    max-height: 20rem;
    margin: 0;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-info-bg);
    padding: 0.75rem;
    overflow: auto;
    white-space: pre-wrap;
}

@media (max-width: 900px) {
    .docs-top-row[b-anld381lwm] {
        grid-template-columns: 1fr;
    }

    .docs-upload-actions[b-anld381lwm] {
        grid-template-columns: 1fr;
    }

    .docs-preview-image[b-anld381lwm],
    .docs-preview-pdf[b-anld381lwm] {
        height: 14rem;
    }
}
/* /Components/ScalarVisualization/NxsScalarMeshViewer.razor.rz.scp.css */
.nxs-scalar-mesh-viewer[b-2vboer418j] {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: var(--nxs-chart-height-sm);
    overflow: hidden;
    background: var(--nxs-surface);
}

.nxs-scalar-mesh-viewer__canvas[b-2vboer418j] {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    outline: 0;
}

.nxs-scalar-mesh-viewer__message[b-2vboer418j] {
    position: absolute;
    inset-inline: var(--nxs-space-8);
    bottom: var(--nxs-space-8);
}
/* /Components/ScalarVisualization/NxsScalarRangeLegend.razor.rz.scp.css */
.nxs-scalar-legend[b-kolnunmjgf] {
    display: grid;
    grid-template-areas: "bar labels title";
    grid-template-columns: var(--nxs-space-12) auto auto;
    gap: var(--nxs-space-8);
    min-width: 6.5rem;
    padding: var(--nxs-space-16) var(--nxs-space-12);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface-raised);
}

.nxs-scalar-legend__bar[b-kolnunmjgf] {
    grid-area: bar;
    min-height: 100%;
    border-radius: var(--nxs-radius-sm);
    background: linear-gradient(
        180deg,
        var(--nxs-heatmap-stop-7),
        var(--nxs-heatmap-stop-6),
        var(--nxs-heatmap-stop-5),
        var(--nxs-heatmap-stop-4),
        var(--nxs-heatmap-stop-3),
        var(--nxs-heatmap-stop-2),
        var(--nxs-heatmap-stop-1),
        var(--nxs-heatmap-stop-0));
}

.nxs-scalar-legend__labels[b-kolnunmjgf] {
    grid-area: labels;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: var(--nxs-space-8);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
}

.nxs-scalar-legend__title[b-kolnunmjgf] {
    grid-area: title;
    align-self: center;
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-sm);
    font-weight: 600;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
}

@media (max-width: 1280px) {
    .nxs-scalar-legend[b-kolnunmjgf] {
        grid-template-areas:
            "title"
            "bar"
            "labels";
        grid-template-columns: 1fr;
        min-width: 0;
        width: 100%;
    }

    .nxs-scalar-legend__bar[b-kolnunmjgf] {
        min-height: var(--nxs-space-12);
        background: linear-gradient(
            90deg,
            var(--nxs-heatmap-stop-0),
            var(--nxs-heatmap-stop-1),
            var(--nxs-heatmap-stop-2),
            var(--nxs-heatmap-stop-3),
            var(--nxs-heatmap-stop-4),
            var(--nxs-heatmap-stop-5),
            var(--nxs-heatmap-stop-6),
            var(--nxs-heatmap-stop-7));
    }

    .nxs-scalar-legend__labels[b-kolnunmjgf] {
        flex-direction: row-reverse;
    }

    .nxs-scalar-legend__title[b-kolnunmjgf] {
        writing-mode: horizontal-tb;
        transform: none;
    }
}
/* /Components/ScalarVisualization/NxsScalarTextureStackViewer.razor.rz.scp.css */
.nxs-scalar-texture-viewer[b-0wtnxr1npw] {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: var(--nxs-chart-height-sm);
    overflow: hidden;
    background: var(--nxs-surface);
}

.nxs-scalar-texture-viewer__canvas[b-0wtnxr1npw] {
    display: block;
    width: 100%;
    height: 100%;
}

.nxs-scalar-texture-viewer__message[b-0wtnxr1npw] {
    position: absolute;
    inset-inline: var(--nxs-space-8);
    bottom: var(--nxs-space-8);
}
/* /Components/SurfaceRoughness/RoughnessMatrixView.razor.rz.scp.css */
.roughness-matrix-view[b-erju0649l8] {
    --sticky-header-height: 56px;
    --sticky-grid-col-width: 100%;
    --sticky-grid-cell-padding: var(--nxs-space-4) var(--nxs-space-16);
    --sticky-grid-height: 360px;
    --sticky-grid-row-height: 28px;
}

.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__panel {
    box-shadow: none;
}

.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__host,
.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__viewport,
.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__datagrid,
.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__datagrid .mud-table-container,
.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__datagrid .mud-table-root {
    min-width: 0 !important;
    width: 100% !important;
}

.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__header-cell,
.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__body-cell {
    min-width: 100% !important;
    width: 100% !important;
    max-width: 100% !important;
}

/* MudDataGrid exposes no prop to hide its header or set a custom row-hover
   colour, so these reach the rendered table internals deliberately. */
.roughness-matrix-view[b-erju0649l8]  .roughness-location-grid .mud-table-head {
    display: none;
}

.roughness-matrix-view[b-erju0649l8]  .roughness-location-grid .mud-table-body .mud-table-row:hover .mud-table-cell {
    background: var(--nxs-surface);
}

.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__interactive-button--row {
    min-height: 44px;
}

.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__interactive-button-value {
    min-width: 3.5rem;
    text-align: right;
}

.roughness-matrix-view[b-erju0649l8]  .nxs-sticky-grid-shell__interactive-button--selected .nxs-sticky-grid-shell__interactive-button-value {
    color: var(--nxs-text);
}
/* /Components/Tensile/ComponentTensileTable.razor.rz.scp.css */
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__panel,
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__host,
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__viewport,
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__scroll,
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__table,
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__empty,
.component-tensile-grid[b-ukek1y2zm8]  .nxs-sticky-grid-shell__loading {
    background: var(--nxs-surface-raised);
}

.component-tensile-toolbar[b-ukek1y2zm8] {
    display: flex;
    gap: var(--nxs-space-32);
    align-items: center;
    padding: var(--nxs-space-16) var(--nxs-space-20);
}

.component-tensile-toolbar__group[b-ukek1y2zm8] {
    display: flex;
    gap: var(--nxs-space-8);
    align-items: baseline;
}

.component-tensile-toolbar__label[b-ukek1y2zm8] {
    color: var(--nxs-text-subtle);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.component-tensile-toolbar__value[b-ukek1y2zm8] {
    color: var(--nxs-text);
    font-size: 0.95rem;
    font-weight: 700;
}

.component-tensile-scroll[b-ukek1y2zm8] {
    overflow: auto;
    max-height: 360px;
}

.component-tensile-table[b-ukek1y2zm8] {
    width: 100%;
    border-collapse: collapse;
}

.component-tensile-table th[b-ukek1y2zm8],
.component-tensile-table td[b-ukek1y2zm8] {
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border-bottom: 1px solid var(--nxs-overlay-hover);
    color: var(--nxs-text);
    text-align: left;
    white-space: nowrap;
}

.component-tensile-table thead th[b-ukek1y2zm8] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--nxs-surface-inset);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.component-tensile-table tbody td[b-ukek1y2zm8] {
    background: var(--nxs-surface-raised);
    font-variant-numeric: tabular-nums;
}

/* Geometry only — the placeholder is a MudSkeleton, which owns its own pulse
   animation and colour; this class just sizes and rounds the bar. ::deep because the
   class now sits on a child component's root, which never carries this file's scope. */
.component-tensile-grid[b-ukek1y2zm8]  .component-tensile-loading-placeholder {
    height: 44px;
    margin: var(--nxs-space-12) var(--nxs-space-16);
    border-radius: var(--nxs-radius-lg);
}
/* /Components/ThermalImageStack/ThermalImageStackVisualizer.razor.rz.scp.css */
.thermal-stack-visualizer[b-bynbgo8s3f] {
    position: relative;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.thermal-stack-visualizer__viewport[b-bynbgo8s3f] {
    position: relative;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.thermal-stack-visualizer__canvas[b-bynbgo8s3f] {
    display: block;
    background-color: var(--nxs-surface);
    width: 100%;
    height: 100%;
}

.thermal-stack-visualizer__overlay[b-bynbgo8s3f] {
    position: absolute;
    z-index: 1;
    inset: 0;
    display: grid;
    place-items: center;
    pointer-events: none;
}

.thermal-stack-visualizer__overlay > *[b-bynbgo8s3f] {
    pointer-events: auto;
}
/* /Components/ThermalImageStack/ThermalImageViewer.razor.rz.scp.css */
.thermal-image-viewer[b-xz8ns48u44] {
    display: grid;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

.thermal-image-viewer__shell[b-xz8ns48u44] {
    position: relative;
    min-width: 0;
    min-height: var(--nxs-chart-height-sm);
    overflow: hidden;
}

.thermal-image-viewer__canvas[b-xz8ns48u44] {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    cursor: grab;
    touch-action: none;
    user-select: none;
}

.thermal-image-viewer__canvas--dragging[b-xz8ns48u44] {
    cursor: grabbing;
}
/* /Components/Tumblers/TumblerCalibrationHistoryGrid.razor.rz.scp.css */
.tumbler-calibration-history-grid[b-oxqvnoetdw] {
    width: 100%;
    min-width: 0;
}

[b-oxqvnoetdw] .tumbler-calibration-history-grid .mud-table-container {
    max-height: min(40vh, 24rem);
    overflow-y: auto;
    overflow-x: hidden;
}

[b-oxqvnoetdw] .tumbler-calibration-history-grid table {
    table-layout: fixed;
    width: 100%;
}

[b-oxqvnoetdw] .tumbler-calibration-history-grid th,
[b-oxqvnoetdw] .tumbler-calibration-history-grid td {
    overflow: hidden;
    text-overflow: ellipsis;
}

.tumbler-calibration-history-grid__file-cell[b-oxqvnoetdw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    min-width: 0;
}

.tumbler-calibration-history-grid__file-name[b-oxqvnoetdw] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tumbler-calibration-history-grid__file-cell[b-oxqvnoetdw]  .tumbler-calibration-history-grid__file-tooltip {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
}

.tumbler-calibration-history-grid__file-cell[b-oxqvnoetdw]  .tumbler-calibration-history-grid__download-tooltip {
    display: inline-flex;
    flex: 0 0 auto;
}
/* /Components/Tumblers/TumblerCalibrationImportDialog.razor.rz.scp.css */
.tumbler-import-dialog__stack[b-szc5j02eun] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.tumbler-import-dialog__fields[b-szc5j02eun] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr));
    align-items: start;
    gap: var(--nxs-space-16);
}

.tumbler-import-dialog__field[b-szc5j02eun] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    min-width: 0;
}

.tumbler-import-dialog__help[b-szc5j02eun] {
    color: var(--nxs-text-muted);
}

.tumbler-import-dialog__actions[b-szc5j02eun] {
    display: flex;
    align-items: center;
}

.tumbler-import-dialog__messages[b-szc5j02eun] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.tumbler-import-dialog__empty[b-szc5j02eun] {
    color: var(--nxs-text-muted);
}
/* /Components/Tumblers/TumblerCard.razor.rz.scp.css */
.tumbler-card__content[b-67depf4ufn] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    height: 100%;
    min-height: 10rem;
    padding: var(--nxs-space-16);
    color: var(--nxs-text);
    text-align: left;
}

.tumbler-card__topline[b-67depf4ufn] {
    display: flex;
    align-items: center;
    min-height: var(--nxs-control-h-md);
    padding-right: var(--nxs-space-32);
}

.tumbler-card__eyebrow[b-67depf4ufn] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.tumbler-card__name[b-67depf4ufn] {
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.tumbler-card__meta[b-67depf4ufn] {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

.tumbler-card__meta-label[b-67depf4ufn] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
}

.tumbler-card__meta-value[b-67depf4ufn] {
    font-size: 0.95rem;
}
/* /Components/Tumblers/TumblerComparisonDialog.razor.rz.scp.css */
.tumbler-comparison-dialog__title[b-73b817v7kh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.tumbler-comparison-dialog__content[b-73b817v7kh] {
    min-height: 32rem;
}

.tumbler-comparison-dialog__status-card[b-73b817v7kh],
.tumbler-comparison-dialog__summary-card[b-73b817v7kh],
.tumbler-comparison-dialog__tabs-card[b-73b817v7kh] {
    background: var(--nxs-surface-inset);
}

.tumbler-comparison-dialog__status[b-73b817v7kh] {
    min-height: 14rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    text-align: center;
}

.tumbler-comparison-dialog__summary-meta[b-73b817v7kh] {
    margin-bottom: 0.75rem;
}

.tumbler-comparison-dialog__chips[b-73b817v7kh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

[b-73b817v7kh] .tumbler-comparison-dialog {
    width: min(92vw, 84rem);
}
/* /Components/Tumblers/TumblerComparisonFrequencyChart.razor.rz.scp.css */
.tumbler-frequency-chart__drawer[b-gezrmotj74] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
}

.tumbler-frequency-chart__drawer[b-gezrmotj74]  .tumbler-frequency-chart__select {
    min-width: 0;
}
/* /Components/Tumblers/TumblerComparisonGrmsChart.razor.rz.scp.css */
.tumbler-chart-panel__drawer[b-uuj8dgxwlr] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
}

.tumbler-chart-panel__drawer-group[b-uuj8dgxwlr] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    min-width: 0;
}
/* /Components/Tumblers/TumblerDetailsDialog.razor.rz.scp.css */
.tumbler-details-dialog__details-panel[b-a7h1f3ltyk] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.tumbler-details-dialog__detail-grid[b-a7h1f3ltyk] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: var(--nxs-space-16);
}

.tumbler-details-dialog__detail-actions[b-a7h1f3ltyk] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}

.tumbler-details-dialog__detail-item[b-a7h1f3ltyk] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    min-width: 0;
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid var(--nxs-divider);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface);
}

.tumbler-details-dialog__label[b-a7h1f3ltyk] {
    color: var(--nxs-text-muted);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.tumbler-details-dialog__value[b-a7h1f3ltyk] {
    font-size: 0.98rem;
    overflow-wrap: anywhere;
}
/* /Components/Tumblers/TumblerFrequencyResponseChart.razor.rz.scp.css */
.tumbler-frequency-chart[b-d95oxlqemr] {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.tumbler-frequency-chart__drawer[b-d95oxlqemr] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
}

.tumbler-frequency-chart__drawer-group[b-d95oxlqemr] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.tumbler-frequency-chart__speed-chips[b-d95oxlqemr] {
    display: flex;
    gap: var(--nxs-space-8);
    flex-wrap: wrap;
}

.tumbler-frequency-chart__drawer[b-d95oxlqemr]  .tumbler-frequency-chart__select {
    min-width: 0;
}
/* /Components/Tumblers/TumblerGrmsVsSpeedChart.razor.rz.scp.css */
.tumbler-chart-panel[b-uw8twa3i6t] {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.tumbler-chart-panel__drawer[b-uw8twa3i6t] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
}

.tumbler-chart-panel__drawer-group[b-uw8twa3i6t] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.tumbler-chart-panel__selection-chips[b-uw8twa3i6t] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}
/* /Components/Tumblers/TumblerVibrationCalibrationTab.razor.rz.scp.css */
.tumbler-vibration-tab[b-f5a2qmj9ch] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-20);
}

.tumbler-vibration-tab__section[b-f5a2qmj9ch] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.tumbler-vibration-tab__section-title[b-f5a2qmj9ch] {
    margin: 0;
}

.tumbler-vibration-tab__state[b-f5a2qmj9ch] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--nxs-space-24) var(--nxs-space-16);
    text-align: center;
}

.tumbler-vibration-tab__empty[b-f5a2qmj9ch] {
    color: var(--nxs-text-muted);
}
/* /Pages/Agent/Agent.razor.rz.scp.css */
/* Fills the (padding-less, see article.content:has(.agent-page) in app.css) content
   region exactly — no appbar arithmetic, no negative-margin gutter cancellation, and
   therefore no stray document overflow for focus scrolling to consume. */
.agent-page[b-9i2x4efs3w] {
    /* The shared reading column: messages, the composer, and the send-error alert all
       cap to this width so they line up as one column (inherits into child components). */
    --agent-column: 46rem;
    display: grid;
    grid-template-columns: 17.5rem minmax(0, 1fr);
    height: 100%;
    min-height: 30rem;
    overflow: hidden;
    background: var(--nxs-bg);
}

.agent-page[b-9i2x4efs3w]  .agent-chat {
    position: relative;
    display: grid;
    min-height: 0;
    min-width: 0;
    grid-template-rows: auto minmax(0, 1fr) auto auto;
    /* The column must be explicit: an implicit (auto) track sizes to its items'
       min-content, so one unbreakable string (a long title, a wide code block) widens
       the whole track past the viewport and shifts every centred child sideways —
       overflow:hidden only clips the evidence. minmax(0, 1fr) pins the track to the
       container and forces children to wrap/truncate inside it. */
    grid-template-columns: minmax(0, 1fr);
    overflow: hidden;
    background: var(--nxs-bg);
}

/* Fresh chat: the header is removed (display:none takes it out of the grid), so the
   remaining children need their own explicit rows — the transcript (with the centred
   greeting) takes all the height and the composer stays pinned to the bottom, exactly
   as in a live chat. */
.agent-page[b-9i2x4efs3w]  .agent-chat--empty {
    grid-template-rows: minmax(0, 1fr) auto auto;
}

.agent-page[b-9i2x4efs3w]  .agent-chat--empty .agent-chat__header {
    display: none;
}

.agent-chat__header[b-9i2x4efs3w] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-12) var(--nxs-space-24);
    border-bottom: 1px solid var(--nxs-divider);
}

/* ::deep because the title class sits on a MudText (child component root), which never
   carries this file's scope attribute — without it the truncation is silently dead and
   a long unbroken title widens the whole chat column. */
.agent-chat__header[b-9i2x4efs3w]  .agent-chat__title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.agent-send-error[b-9i2x4efs3w] {
    width: min(var(--agent-column), calc(100% - var(--nxs-space-48)));
    justify-self: center;
    margin: 0 auto var(--nxs-space-12);
}

.agent-send-error[b-9i2x4efs3w]  .agent-send-error__alert .mud-alert-message {
    min-width: 0;
    flex: 1;
}

/* Mud's alert row top-aligns its children (.mud-alert-position { align-items: start })
   and gives the icon slot its own 7px block padding, so the glyph sits above the text's
   centreline once the Retry button makes the row taller. Stretch the icon slot to the
   full row and centre the glyph within it — no offsets or nudges, so it stays centred
   when the message wraps to multiple lines. */
.agent-send-error[b-9i2x4efs3w]  .agent-send-error__alert .mud-alert-icon {
    align-self: stretch;
    align-items: center;
    padding-block: 0;
}

.agent-send-error__content[b-9i2x4efs3w] {
    display: flex;
    width: 100%;
    min-width: 0;
    align-items: center;
    gap: var(--nxs-space-12);
}

.agent-send-error__action[b-9i2x4efs3w] {
    flex: 0 0 auto;
    margin-left: auto;
}

@media (max-width: 56.25rem) {
    .agent-page[b-9i2x4efs3w] {
        grid-template-columns: 1fr;
        grid-template-rows: auto minmax(32.5rem, 1fr);
        /* Stacked rail + chat can exceed the viewport here; the page grows and the
           content region scrolls it as normal. */
        height: auto;
        min-height: 100%;
    }

    .agent-send-error[b-9i2x4efs3w] {
        width: calc(100% - var(--nxs-space-32));
    }
}
/* /Pages/Agent/AgentArtifactView.razor.rz.scp.css */
.agent-artifact[b-mstj4mblno] {
    margin-block: var(--nxs-space-12);
}

.agent-artifact__image-loading[b-mstj4mblno] {
    position: relative;
    min-height: var(--nxs-chart-height-sm);
    border-radius: var(--nxs-radius-md);
    overflow: hidden;
}

.agent-artifact__image[b-mstj4mblno] {
    display: block;
    width: 100%;
    height: auto;
}
/* /Pages/Agent/AgentCodeBlock.razor.rz.scp.css */
.agent-code-block[b-jjd55c5t38] {
    margin-block: var(--nxs-space-12);
}

.agent-code-block[b-jjd55c5t38]  pre {
    overflow: auto;
    margin: 0;
    padding: var(--nxs-space-16);
    background: var(--nxs-surface-sunken);
    color: var(--nxs-text-body);
    font-family: var(--nxs-font-mono);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.55;
}

.agent-code-block[b-jjd55c5t38]  code {
    font: inherit;
}
/* /Pages/Agent/AgentComposer.razor.rz.scp.css */
.agent-composer-shell[b-sgtstw7eol] {
    display: flex;
    width: min(var(--agent-column), calc(100% - var(--nxs-space-48)));
    flex-direction: column;
    gap: var(--nxs-space-8);
    justify-self: center;
    margin: 0 auto var(--nxs-space-24);
}

.agent-composer__attachments[b-sgtstw7eol] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
}

/* The pill surface and its leading/input/trailing row come from the shared
   NxsInputShell chrome in app.css — nothing composer-specific remains to style. */
.agent-composer-host[b-sgtstw7eol] {
    min-width: 0;
}

@media (max-width: 56.25rem) {
    .agent-composer-shell[b-sgtstw7eol] {
        width: calc(100% - var(--nxs-space-32));
        margin-bottom: var(--nxs-space-16);
    }
}
/* /Pages/Agent/AgentConversationRail.razor.rz.scp.css */
.agent-rail[b-gm4cgn7oir],
.agent-rail[b-gm4cgn7oir]  .agent-rail__surface {
    min-width: 0;
    height: 100%;
    overflow: hidden;
}

.agent-rail[b-gm4cgn7oir] {
    border-right: 1px solid var(--nxs-divider);
}

.agent-rail[b-gm4cgn7oir]  .agent-rail__surface {
    display: flex;
    flex-direction: column;
    /* Same raised-panel fill as the tab headers (--nxs-surface-raised) so the rail
       reads as a slightly darker panel beside the chat. */
    background: var(--nxs-surface-raised);
}

.agent-rail__header[b-gm4cgn7oir] {
    padding: var(--nxs-space-16) var(--nxs-space-12) var(--nxs-space-8);
}

.agent-rail__header[b-gm4cgn7oir]  .agent-rail__title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.agent-rail__search[b-gm4cgn7oir] {
    padding: 0 var(--nxs-space-12) var(--nxs-space-8);
}

.agent-rail__search[b-gm4cgn7oir]  .agent-rail__search-field {
    width: 100%;
}

/* ::deep throughout where a class sits on a Mud component's root (alert, text, stack):
   those roots never carry this file's scope attribute, so unanchored rules are dead. */
.agent-rail[b-gm4cgn7oir]  .agent-rail__error {
    margin: 0 var(--nxs-space-8) var(--nxs-space-8);
}

.agent-conversation-list[b-gm4cgn7oir] {
    display: flex;
    min-height: 0;
    flex: 1;
    flex-direction: column;
    gap: var(--nxs-space-8);
    overflow-x: hidden;
    overflow-y: auto;
    /* Match the header/search horizontal inset (--nxs-space-12) so the section
       labels, rows, and hover/selected pills align to the same edge as the title
       and search box above. Vertical padding stays at --nxs-space-8. */
    padding: var(--nxs-space-8) var(--nxs-space-12);
}

.agent-conversation-list__row[b-gm4cgn7oir] {
    min-width: 0;
}

/* Breathing room between rows so adjacent hover/selected backgrounds read as
   separate rounded pills rather than fusing into one slab. */
.agent-conversation-list[b-gm4cgn7oir]  .mud-list {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

/* Round the hover/selected highlight (and clip the ripple to it) — Mud list items
   are square-edged by default. Anchored on the list so the "New chat" item under
   the active conversation gets the same treatment as the rows. */
.agent-conversation-list[b-gm4cgn7oir]  .mud-list-item {
    min-width: 0;
    border-radius: var(--nxs-radius-md);
    overflow: hidden;
    /* Drop Mud's own vertical padding so the row height is exactly the inner row's
       tokenised min-height (--nxs-control-h-md) — the shortest standard height that
       still contains the small kebab icon button. Tighten the horizontal padding to
       a known inset so the far-right kebab (positioned below) sits near the edge. */
    padding-block: 0;
    padding-inline: var(--nxs-space-8);
}

/* Mud applies its hover background to any focused clickable list item. Clicking the
   kebab therefore leaves a closed, non-selected row looking hovered after pointer focus
   moves away. Neutralise only that pointer-focus residue; genuine hover, keyboard-visible
   focus, selected rows, and the explicit menu-open state keep their own backgrounds. */
.agent-conversation-list__row:not(.agent-conversation-list__row--menu-open)[b-gm4cgn7oir]
     .mud-list-item-clickable:focus:not(:focus-visible):not(:hover):not(.mud-selected-item) {
    background-color: transparent;
}

.agent-conversation-list__row--menu-open[b-gm4cgn7oir]  .mud-list-item-clickable:not(.mud-selected-item) {
    background-color: var(--nxs-overlay-hover);
}

/* Our own flex row inside the list item — title left, kebab right — rather than relying
   on Mud's internal text wrapper to lay the two out. The div is page-owned markup, so
   this rule applies without ::deep. */
.agent-conversation-list__item[b-gm4cgn7oir] {
    position: relative;
    display: flex;
    align-items: center;
    gap: var(--nxs-space-4);
    width: 100%;
    min-width: 0;
    /* Row height is otherwise set by the tallest child — the kebab icon button on
       conversation rows, a bare text line on "New chat" — so pin every row to the
       standard control height and let content centre within it. */
    min-height: var(--nxs-control-h-md);
}

.agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__title {
    min-width: 0;
    flex: 1;
    overflow: hidden;
    white-space: nowrap;
    /* Fade the overflowing title out at the right edge rather than clipping it to a
       hard "…". Mask colour is token-owned; only its alpha is used. */
    -webkit-mask-image: linear-gradient(to right, var(--nxs-text) calc(100% - var(--nxs-space-32)), transparent);
    mask-image: linear-gradient(to right, var(--nxs-text) calc(100% - var(--nxs-space-32)), transparent);
}

/* Pull the fade inward only for a genuine hover, keyboard-visible action focus, or an
   open menu. Plain pointer focus must not leave a row looking hovered after mouse-out. */
.agent-conversation-list[b-gm4cgn7oir]  .mud-list-item:hover .agent-conversation-list__title,
.agent-conversation-list__row--menu-open[b-gm4cgn7oir]  .agent-conversation-list__title,
.agent-conversation-list__row[b-gm4cgn7oir]  .mud-list-item:has(.mud-icon-button:focus-visible) .agent-conversation-list__title {
    -webkit-mask-image: linear-gradient(
        to right,
        var(--nxs-text) calc(100% - var(--nxs-space-32) - var(--nxs-space-24)),
        transparent calc(100% - var(--nxs-space-32)));
    mask-image: linear-gradient(
        to right,
        var(--nxs-text) calc(100% - var(--nxs-space-32) - var(--nxs-space-24)),
        transparent calc(100% - var(--nxs-space-32)));
}

/* Pin the kebab to the far right of the row, out of flow so the title can span the
   full width and fade beneath it. Hidden at rest so idle rows stay clean; revealed on
   true row hover, keyboard-visible focus, or explicit menu-open state. */
.agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__actions {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    opacity: 0;
    transition: opacity 120ms ease;
}

/* Muted at rest, full-strength on hover of the kebab itself, so the dots read clearly
   against the row rather than blending into it. */
.agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__actions .mud-icon-button {
    color: var(--nxs-text-muted);
}

.agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__actions .mud-icon-button:hover {
    color: var(--nxs-text);
}

.agent-conversation-list[b-gm4cgn7oir]  .mud-list-item:hover .agent-conversation-list__actions,
.agent-conversation-list__row--menu-open[b-gm4cgn7oir]  .agent-conversation-list__actions,
.agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__actions:has(.mud-icon-button:focus-visible) {
    opacity: 1;
}

.agent-conversation-list[b-gm4cgn7oir]  .agent-conversation-list__empty {
    padding: var(--nxs-space-16) var(--nxs-space-8);
}

.agent-conversation-list__sentinel[b-gm4cgn7oir] {
    height: var(--nxs-space-2);
    flex: 0 0 auto;
}

.agent-conversation-list__more[b-gm4cgn7oir] {
    display: flex;
    justify-content: center;
    padding: var(--nxs-space-8);
}

/* The pinned-group header doubles as a collapse toggle. Style the text button to read
   like the "Recents" overline label (uppercase, muted) with the chevron at the far edge,
   rather than a chunky default button. */
.agent-conversation-list[b-gm4cgn7oir]  .agent-rail__section-toggle {
    padding: var(--nxs-space-4) var(--nxs-space-8);
    color: var(--nxs-text-muted);
}

.agent-conversation-list[b-gm4cgn7oir]  .agent-rail__section-toggle .mud-button-label {
    justify-content: space-between;
    width: 100%;
}

/* Touch and coarse-pointer users cannot discover hover-only actions, so the kebab and
   its reserved title fade remain visible for those input modes. */
@media (hover: none), (pointer: coarse) {
    .agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__actions {
        opacity: 1;
    }

    .agent-conversation-list__row[b-gm4cgn7oir]  .agent-conversation-list__title {
        -webkit-mask-image: linear-gradient(
            to right,
            var(--nxs-text) calc(100% - var(--nxs-space-32) - var(--nxs-space-24)),
            transparent calc(100% - var(--nxs-space-32)));
        mask-image: linear-gradient(
            to right,
            var(--nxs-text) calc(100% - var(--nxs-space-32) - var(--nxs-space-24)),
            transparent calc(100% - var(--nxs-space-32)));
    }
}

@media (max-width: 56.25rem) {
    .agent-rail[b-gm4cgn7oir] {
        max-height: 15rem;
        border-right: none;
        border-bottom: 1px solid var(--nxs-divider);
    }
}
/* /Pages/Agent/AgentCsvViewer.razor.rz.scp.css */
.agent-csv-preview__grid-wrap[b-xrc06dfnix]  .mud-table-cell {
    max-width: var(--nxs-grid-cell-max-width);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Pages/Agent/AgentTranscript.razor.rz.scp.css */
/* ---------- Message stream ---------- */

.agent-messages[b-ahch06uls0] {
    position: relative;
    display: flex;
    min-height: 0;
    flex-direction: column;
    align-items: center;
    gap: var(--nxs-space-32);
    overscroll-behavior: contain;
    overflow-y: auto;
    padding: var(--nxs-space-32) var(--nxs-space-24);
    scroll-behavior: smooth;
}

.agent-messages__bottom[b-ahch06uls0] {
    width: 100%;
    min-height: var(--nxs-space-4);
    flex: 0 0 var(--nxs-space-4);
}

.agent-message[b-ahch06uls0] {
    /* Width of the leading icon slot (trail chevron / thinking spinner). The trail's
       vertical line is centred beneath it so the icons sit on the line. */
    --agent-trail-icon: 20px;
    display: flex;
    width: 100%;
    max-width: var(--agent-column);
    flex-direction: column;
    gap: var(--nxs-space-6);
}

.agent-message__role[b-ahch06uls0] {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-8);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-xs);
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.agent-message--assistant .agent-message__role[b-ahch06uls0]::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: var(--nxs-radius-pill);
    background: var(--nxs-accent);
}

.agent-message__content[b-ahch06uls0] {
    overflow-wrap: anywhere;
    color: var(--nxs-text-body);
    line-height: 1.65;
    white-space: normal;
}

/* ---------- Markdown inside assistant messages ----------
   All of these need ::deep: the markdown HTML is injected via MarkupString, so it never
   receives Blazor's CSS-isolation scope attribute â€” without ::deep the rules are dead. */

.agent-message__content[b-ahch06uls0]  > :first-child {
    margin-top: 0;
}

.agent-message__content[b-ahch06uls0]  > :last-child {
    margin-bottom: 0;
}

.agent-message__content[b-ahch06uls0]  p,
.agent-message__content[b-ahch06uls0]  ul,
.agent-message__content[b-ahch06uls0]  ol,
.agent-message__content[b-ahch06uls0]  blockquote,
.agent-message__content[b-ahch06uls0]  pre,
.agent-message__content[b-ahch06uls0]  table:not(.mud-table-root) {
    margin: var(--nxs-space-8) 0;
}

.agent-message__content[b-ahch06uls0]  h1,
.agent-message__content[b-ahch06uls0]  h2,
.agent-message__content[b-ahch06uls0]  h3,
.agent-message__content[b-ahch06uls0]  h4 {
    margin: var(--nxs-space-24) 0 var(--nxs-space-8);
    color: var(--nxs-text);
    font-size: 1.05rem;
    font-weight: 600;
}

.agent-message__content[b-ahch06uls0]  ul,
.agent-message__content[b-ahch06uls0]  ol {
    padding-left: var(--nxs-space-24);
}

.agent-message__content[b-ahch06uls0]  li {
    margin: var(--nxs-space-2) 0;
}

.agent-message__content[b-ahch06uls0]  code {
    font-family: var(--nxs-font-mono);
    font-size: 0.875em;
}

.agent-message__content[b-ahch06uls0]  :not(pre) > code {
    padding: 0.1em 0.4em;
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-overlay-12);
}

.agent-message__content[b-ahch06uls0]  pre {
    overflow-x: auto;
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid var(--nxs-divider);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-overlay-12);
}

.agent-message__content[b-ahch06uls0]  pre > code {
    padding: 0;
    background: transparent;
}

.agent-message__content[b-ahch06uls0]  blockquote {
    padding: 0 var(--nxs-space-12);
    border-left: 3px solid var(--nxs-divider);
    color: var(--nxs-text-muted);
}

.agent-message__content[b-ahch06uls0]  table:not(.mud-table-root) {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    border-collapse: collapse;
    font-size: var(--nxs-text-size-sm);
}

.agent-message__content[b-ahch06uls0]  table:not(.mud-table-root) th,
.agent-message__content[b-ahch06uls0]  table:not(.mud-table-root) td {
    padding: var(--nxs-space-4) var(--nxs-space-8);
    border: 1px solid var(--nxs-divider);
    text-align: left;
}

.agent-message__content[b-ahch06uls0]  table:not(.mud-table-root) th {
    background: var(--nxs-surface);
    color: var(--nxs-text);
    font-weight: 600;
}

.agent-message__content[b-ahch06uls0]  a {
    color: var(--nxs-accent);
}

.agent-message__content[b-ahch06uls0]  hr {
    margin: var(--nxs-space-12) 0;
    border: none;
    border-top: 1px solid var(--nxs-divider);
}

/* Reserve the standard chart footprint while an inline visual is still being generated.
   NxsLoadingOverlay owns the actual loading treatment. */
.agent-message__visual-loading[b-ahch06uls0] {
    position: relative;
    min-height: var(--nxs-chart-height-sm);
    margin: var(--nxs-space-8) 0;
    border-radius: var(--nxs-radius-md);
    overflow: hidden;
}

/* Inline plots/images produced by the agent (from <image> markers). */
.agent-message__content[b-ahch06uls0]  img {
    display: block;
    max-width: 100%;
    margin: var(--nxs-space-8) 0;
    border: 1px solid var(--nxs-divider);
    border-radius: var(--nxs-radius-md);
}

/* Syntax highlighting uses the shared semantic palette. */
.agent-message__content[b-ahch06uls0]  .hljs-comment,
.agent-message__content[b-ahch06uls0]  .hljs-quote {
    color: var(--nxs-text-muted);
    font-style: italic;
}

.agent-message__content[b-ahch06uls0]  .hljs-keyword,
.agent-message__content[b-ahch06uls0]  .hljs-selector-tag,
.agent-message__content[b-ahch06uls0]  .hljs-meta {
    color: var(--nxs-info);
}

.agent-message__content[b-ahch06uls0]  .hljs-string,
.agent-message__content[b-ahch06uls0]  .hljs-regexp,
.agent-message__content[b-ahch06uls0]  .hljs-addition {
    color: var(--nxs-success-text);
}

.agent-message__content[b-ahch06uls0]  .hljs-number,
.agent-message__content[b-ahch06uls0]  .hljs-literal,
.agent-message__content[b-ahch06uls0]  .hljs-symbol {
    color: var(--nxs-warning);
}

.agent-message__content[b-ahch06uls0]  .hljs-title,
.agent-message__content[b-ahch06uls0]  .hljs-name,
.agent-message__content[b-ahch06uls0]  .hljs-section,
.agent-message__content[b-ahch06uls0]  .hljs-attr,
.agent-message__content[b-ahch06uls0]  .hljs-attribute,
.agent-message__content[b-ahch06uls0]  .hljs-built_in {
    color: var(--nxs-accent-bright);
}

.agent-message__content[b-ahch06uls0]  .hljs-type,
.agent-message__content[b-ahch06uls0]  .hljs-variable,
.agent-message__content[b-ahch06uls0]  .hljs-template-variable,
.agent-message__content[b-ahch06uls0]  .hljs-deletion {
    color: var(--nxs-danger-text);
}

/* User: a compact bubble hugging the right edge of the column. */
.agent-message--user[b-ahch06uls0] {
    align-items: flex-end;
}

.agent-message--user .agent-message__content[b-ahch06uls0] {
    max-width: 82%;
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid var(--nxs-accent-30);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-accent-20);
    color: var(--nxs-text);
}

.agent-message__actions[b-ahch06uls0] {
    margin-top: calc(-1 * var(--nxs-space-4));
}

.agent-message__trail[b-ahch06uls0]  .agent-message__trail-toggle {
    align-self: flex-start;
    color: var(--nxs-text-muted);
}

.agent-message__trail-inner[b-ahch06uls0] {
    min-height: 0;
    overflow: hidden;
}

.agent-message__trail-inner > .agent-message__progress-trail[b-ahch06uls0] {
    margin-top: var(--nxs-space-4);
}

.agent-message__progress-trail[b-ahch06uls0] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    /* Centre the 2px line under the chevron/spinner slot above it. */
    margin: 0 0 0 calc(var(--agent-trail-icon) / 2 - 1px);
    padding: 0 0 0 var(--nxs-space-12);
    border-left: 2px solid var(--nxs-divider);
    list-style: none;
    overflow-wrap: anywhere;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.5;
}

.agent-message__thinking[b-ahch06uls0] {
    display: flex;
    width: 100%;
    align-items: center;
    gap: var(--nxs-space-8);
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
}

/* Size the spinner to the shared icon slot so it lines up with the trail's vertical
   line. !important is needed to beat MudBlazor's own size classes. */
.agent-message__thinking[b-ahch06uls0]  .mud-progress-circular {
    width: var(--agent-trail-icon) !important;
    height: var(--agent-trail-icon) !important;
}

/* Sweep a highlight across the live progress text while the agent is working, so the
   current step reads as active rather than static. Skipped under reduced-motion. */
@media (prefers-reduced-motion: no-preference) {
    .agent-message__thinking span[b-ahch06uls0] {
        background: linear-gradient(
            90deg,
            var(--nxs-text-muted) 35%,
            var(--nxs-text) 50%,
            var(--nxs-text-muted) 65%);
        background-size: 200% 100%;
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        animation: agent-thinking-shimmer-b-ahch06uls0 var(--nxs-motion-duration-shimmer) linear infinite;
    }
}

@keyframes agent-thinking-shimmer-b-ahch06uls0 {
    from {
        background-position: 200% 0;
    }

    to {
        background-position: -200% 0;
    }
}

/* Forced-colour themes can discard the gradient while retaining its transparent text
   colour. Restore ordinary inherited text and remove the decorative clipping/animation. */
@media (forced-colors: active) {
    .agent-message__thinking span[b-ahch06uls0] {
        background: none;
        -webkit-background-clip: border-box;
        background-clip: border-box;
        color: inherit;
        animation: none;
    }
}

/* ---------- Welcome / empty state ---------- */

.agent-welcome[b-ahch06uls0] {
    display: grid;
    place-items: center;
    align-content: center;
    /* Fill the leftover space rather than demanding min-height:100% — that 100% plus
       the container's own padding/gap/bottom-anchor made the content structurally
       taller than the scroller, so an empty chat always showed a scrollbar. */
    flex: 1 1 auto;
    gap: var(--nxs-space-12);
    padding: 0 var(--nxs-space-24);
    color: var(--nxs-text-muted);
    text-align: center;
}

.agent-welcome h2[b-ahch06uls0] {
    margin: 0;
    color: var(--nxs-text);
    font-size: clamp(1.75rem, 2.8vw, 2.35rem);
    font-weight: 500;
    letter-spacing: -0.01em;
}

.agent-welcome p[b-ahch06uls0] {
    max-width: 40rem;
    margin: 0;
    font-size: var(--nxs-text-size-md);
    line-height: 1.6;
}

/* Attachments rendered inside a sent/loaded message (composer chips live in the
   AgentComposer component). */
.agent-message__attachments[b-ahch06uls0] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
    margin-bottom: var(--nxs-space-8);
}

.agent-message--user .agent-message__attachments[b-ahch06uls0] {
    align-self: stretch;
    justify-content: flex-end;
}

@media (max-width: 900px) {
    .agent-messages[b-ahch06uls0] {
        padding: var(--nxs-space-24) var(--nxs-space-16);
    }
}
/* /Pages/AutoImportLogs/AirtableCallHistoryDetails.razor.rz.scp.css */
.airtable-call-history[b-7v605e5nyh] {
    margin-top: var(--nxs-space-6);
    padding: var(--nxs-space-8) var(--nxs-space-12);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-sm);
    background: var(--nxs-surface-inset);
}

.airtable-call-history__header[b-7v605e5nyh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-8);
}

.airtable-call-history__summary[b-7v605e5nyh] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    min-width: 0;
    color: var(--nxs-text);
}

.airtable-call-history__summary-value[b-7v605e5nyh] {
    overflow-wrap: anywhere;
}

.airtable-call-history__summary-value + .airtable-call-history__summary-value[b-7v605e5nyh]::before {
    content: "\00b7";
    padding: 0 var(--nxs-space-6);
    color: var(--nxs-text-muted);
}

.airtable-call-history__toggle[b-7v605e5nyh] {
    flex: 0 0 auto;
}

.airtable-call-history__details[b-7v605e5nyh] {
    display: grid;
    grid-template-columns: minmax(8rem, max-content) minmax(0, 1fr);
    gap: var(--nxs-space-4) var(--nxs-space-12);
    margin: var(--nxs-space-8) 0 0;
    padding-top: var(--nxs-space-8);
    border-top: 1px solid var(--nxs-border);
}

.airtable-call-history__details dt[b-7v605e5nyh] {
    color: var(--nxs-text-muted);
}

.airtable-call-history__details dd[b-7v605e5nyh] {
    min-width: 0;
    margin: 0;
    overflow-wrap: anywhere;
}

@media (max-width: 720px) {
    .airtable-call-history__header[b-7v605e5nyh] {
        align-items: flex-start;
        flex-direction: column;
    }

    .airtable-call-history__details[b-7v605e5nyh] {
        grid-template-columns: 1fr;
        gap: var(--nxs-space-2);
    }

    .airtable-call-history__details dd + dt[b-7v605e5nyh] {
        margin-top: var(--nxs-space-4);
    }
}
/* /Pages/AutoImportLogs/AutoImportInsights.razor.rz.scp.css */
.auto-import-insights[b-ygcshvym09] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    padding: var(--nxs-space-16) 0;
}

/* Filter fields inside the saved-filter modal, matching the component-versions layout. */
.auto-import-insights__modal-fields[b-ygcshvym09] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
    gap: var(--nxs-space-12) var(--nxs-space-16);
}

.auto-import-insights__summary-grid[b-ygcshvym09] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: var(--nxs-space-12);
}

.auto-import-insights__summary-item[b-ygcshvym09] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    min-height: 5rem;
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface-raised);
}

.auto-import-insights__summary-item span[b-ygcshvym09] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.2;
}

.auto-import-insights__summary-item strong[b-ygcshvym09] {
    color: var(--nxs-text);
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.1;
}

/* Panels are NxsCards; the card supplies its own chrome, this grid only places them.
   The cards are child-component roots, so placement rules need ::deep. */
.auto-import-insights__chart-grid[b-ygcshvym09] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-16);
}

.auto-import-insights__chart-grid[b-ygcshvym09]  .nxs-card {
    min-width: 0;
    overflow: hidden;
}

.auto-import-insights__chart-grid[b-ygcshvym09]  .auto-import-insights__panel--wide {
    grid-column: 1 / -1;
}

.auto-import-insights__muted[b-ygcshvym09] {
    color: var(--nxs-text-muted);
}

.auto-import-insights__alert[b-ygcshvym09] {
    max-width: 48rem;
}

@media (max-width: 960px) {
    .auto-import-insights__chart-grid[b-ygcshvym09] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/AutoImportLogs/AutoImportLogs.razor.rz.scp.css */
.auto-import-logs[b-wqo7j7ofew] {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 9rem);
}

.auto-import-logs__status-chip[b-wqo7j7ofew] {
    min-width: 7rem;
    justify-content: center;
}

.auto-import-logs__demo-toggle[b-wqo7j7ofew] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12);
    min-height: 2.5rem;
    padding: var(--nxs-space-12) 0;
}

.auto-import-logs__history-stack[b-wqo7j7ofew] {
    padding: var(--nxs-space-12) var(--nxs-space-16);
}

.auto-import-logs__history-entry[b-wqo7j7ofew] {
    border-top: 1px solid var(--nxs-border);
    padding: var(--nxs-space-8) 0;
}

.auto-import-logs__history-entry:first-child[b-wqo7j7ofew] {
    border-top: 0;
    padding-top: 0;
}

.auto-import-logs__timeline-section[b-wqo7j7ofew] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    padding-bottom: var(--nxs-space-8);
}

.auto-import-logs__timeline-cell[b-wqo7j7ofew] {
    display: flex;
    align-items: center;
    width: min(18rem, 24vw);
    min-width: 10rem;
    height: 100%;
}

.auto-import-logs__timeline[b-wqo7j7ofew] {
    display: flex;
    align-items: stretch;
    width: 100%;
    height: 1.25rem;
    overflow: hidden;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-pill);
    background: var(--nxs-surface-inset);
}

.auto-import-logs__timeline--compact[b-wqo7j7ofew] {
    height: 0.875rem;
}

.auto-import-logs__timeline-segment[b-wqo7j7ofew] {
    min-width: 0.25rem;
    height: 100%;
    border-right: 1px solid var(--nxs-surface);
}

.auto-import-logs__timeline-segment:last-child[b-wqo7j7ofew] {
    border-right: 0;
}

.auto-import-logs__timeline-segment--checkpoint[b-wqo7j7ofew] {
    flex: 0 0 0.2rem;
    background: var(--nxs-text-muted);
}

.auto-import-logs__timeline-segment--failed[b-wqo7j7ofew] {
    min-width: 0.5rem;
    background: var(--nxs-danger);
}

.auto-import-logs__timeline-segment--phase-0[b-wqo7j7ofew] {
    background: var(--nxs-accent);
}

.auto-import-logs__timeline-segment--phase-1[b-wqo7j7ofew] {
    background: var(--nxs-success);
}

.auto-import-logs__timeline-segment--phase-2[b-wqo7j7ofew] {
    background: var(--nxs-warning);
}

.auto-import-logs__timeline-segment--phase-3[b-wqo7j7ofew] {
    background: var(--nxs-info);
}

.auto-import-logs__timeline-segment--phase-4[b-wqo7j7ofew] {
    background: color-mix(in srgb, var(--nxs-accent) 68%, var(--nxs-text));
}

.auto-import-logs__timeline-segment--phase-5[b-wqo7j7ofew] {
    background: color-mix(in srgb, var(--nxs-success) 70%, var(--nxs-text));
}

.auto-import-logs__timeline-segment--phase-6[b-wqo7j7ofew] {
    background: color-mix(in srgb, var(--nxs-warning) 78%, var(--nxs-surface));
}

.auto-import-logs__timeline-segment--phase-7[b-wqo7j7ofew] {
    background: color-mix(in srgb, var(--nxs-info) 58%, var(--nxs-text));
}

.auto-import-logs__history-summary[b-wqo7j7ofew] {
    flex-wrap: wrap;
}

.auto-import-logs__history-time[b-wqo7j7ofew] {
    min-width: 10rem;
}

.auto-import-logs__remarks-stack[b-wqo7j7ofew] {
    padding: var(--nxs-space-8) 0 0;
}

.auto-import-logs__label[b-wqo7j7ofew] {
    color: var(--nxs-text-muted);
    margin-right: var(--nxs-space-4);
}

.auto-import-logs__muted[b-wqo7j7ofew] {
    color: var(--nxs-text-muted);
}

@media (max-width: 720px) {
    .auto-import-logs[b-wqo7j7ofew] {
        min-height: auto;
    }
}
/* /Pages/Builds/Build/BuildCreate.razor.rz.scp.css */
/* Fill the centred reading column — without this the form container shrink-wraps to its
   content width and left-anchors, leaving a large gap on the right. */
.nxs-container[b-wgfnltj0jh] {
    width: 100%;
}

/* Span both columns of the .nxs-section-as-grid two-column layout. */
.bc-span-2[b-wgfnltj0jh] {
    grid-column: 1 / 3;
}

.bc-inline-flex[b-wgfnltj0jh] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.bc-checkbox-row[b-wgfnltj0jh] {
    display: flex;
    flex-direction: row;
    align-items: center;
    column-gap: 0.5em;
}

/* Date + time pickers sit side by side and share the cell width. */
.bc-date-time[b-wgfnltj0jh] {
    display: flex;
    gap: 0.5rem;
}

.bc-date-time > *[b-wgfnltj0jh] {
    flex: 1 1 0;
}

.bc-attachment-list[b-wgfnltj0jh] {
    padding: 0;
}

.existing-build-content[b-wgfnltj0jh] {
    margin-bottom: 0.25rem;
}
/* /Pages/Builds/Build/BuildView.razor.rz.scp.css */
.build-view-details[b-8cznv92ilu] {
    width: 100%;
}

/* Read-only summary data: label-over-value pairs, NOT boxed inputs. The panel is the only
   container; values are plain text so the page reads as a dashboard, not a disabled form. */
.build-view-field-grid[b-8cznv92ilu] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-16) var(--nxs-space-32);
}

.build-view-field-grid--single-column[b-8cznv92ilu] {
    grid-template-columns: minmax(0, 1fr);
}

.build-view-field[b-8cznv92ilu] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    min-width: 0;
}

.build-view-field--full[b-8cznv92ilu] {
    grid-column: 1 / -1;
}

.build-view-field-label[b-8cznv92ilu] {
    color: var(--nxs-text-muted);
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.build-view-field-value[b-8cznv92ilu] {
    color: var(--nxs-text);
    font-size: 0.95rem;
    line-height: 1.4;
    overflow-wrap: anywhere;
}

/* Missing data reads as a quiet muted line where the value would sit — never a big empty box. */
.build-view-empty[b-8cznv92ilu] {
    color: var(--nxs-text-muted);
    font-size: 0.9rem;
    font-style: italic;
}

.build-view-note[b-8cznv92ilu] {
    color: var(--nxs-text-body);
    line-height: 1.5;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* Actions sit in a divider-anchored footer rather than floating in the field flow. */
.build-view-actions[b-8cznv92ilu] {
    margin-top: var(--nxs-space-24);
    padding-top: var(--nxs-space-16);
    border-top: 1px solid var(--nxs-border);
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-12);
}

.build-view-actions--compact[b-8cznv92ilu] {
    margin-top: 0;
    margin-bottom: var(--nxs-space-16);
    padding-top: 0;
    border-top: none;
}

.build-view-media-stack[b-8cznv92ilu] {
    height: 100%;
}

.build-view-geometry[b-8cznv92ilu] {
    /* No height here: the GeometryViewer sizes itself by its aspect-ratio, so the box hugs
       the canvas. Imposing a min-height leaves dead space below the canvas. */
    border-radius: var(--nxs-radius-md);
    overflow: hidden;
    background: var(--nxs-geometry-surface);
}

/* Compact placeholder when there is genuinely no geometry — avoids reserving a tall void. */
.build-view-geometry-empty[b-8cznv92ilu] {
    min-height: 12rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-geometry-surface);
    color: var(--nxs-text-muted);
    font-style: italic;
}

.build-view-image[b-8cznv92ilu] {
    display: block;
    width: 100%;
    max-height: 44rem;
    object-fit: contain;
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface);
}

.build-view-layer-image[b-8cznv92ilu] {
    display: block;
    width: 100%;
    max-width: 780px;
    max-height: 575px;
    object-fit: contain;
    background: var(--nxs-surface);
}

.build-view-pdf-frame[b-8cznv92ilu] {
    width: 100%;
    min-height: 56rem;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface);
}

.build-view-inline-info[b-8cznv92ilu] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-16);
    flex-wrap: wrap;
}

@media (max-width: 1200px) {
    .build-view-field-grid[b-8cznv92ilu] {
        grid-template-columns: minmax(0, 1fr);
    }

    .build-view-field--full[b-8cznv92ilu] {
        grid-column: auto;
    }
}

/* /Pages/Builds/Build/Parts/Part/Measurements/Caliper/CaliperMeasurementsGrid.razor.rz.scp.css */
.caliper-grid-checkbox[b-fz3wvfq2qy] {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    border: 2px solid var(--nxs-accent);
    border-radius: var(--nxs-radius-sm);
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
}

.caliper-grid-checkbox:checked[b-fz3wvfq2qy] {
    background-color: var(--nxs-accent);
    border-color: var(--nxs-accent);
}

.caliper-grid-checkbox:focus[b-fz3wvfq2qy] {
    outline: none;
    box-shadow: 0 0 0 2px var(--nxs-accent-30);
}

.caliper-upload-preview[b-fz3wvfq2qy] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 0.5rem;
    background-color: var(--nxs-overlay-subtle);
    display: inline-block;
    width: fit-content;
    max-width: 100%;
}

.caliper-upload-preview img[b-fz3wvfq2qy] {
    display: block;
    max-width: 100%;
    max-height: 240px;
    object-fit: contain;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Caliper/CaliperSetView.razor.rz.scp.css */
.caliper-grid-checkbox[b-2wxirf6mzk] {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    border: 2px solid var(--nxs-accent);
    border-radius: var(--nxs-radius-sm);
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
}

.caliper-grid-checkbox:checked[b-2wxirf6mzk] {
    background-color: var(--nxs-accent);
    border-color: var(--nxs-accent);
}

.caliper-grid-checkbox:focus[b-2wxirf6mzk] {
    outline: none;
    box-shadow: 0 0 0 2px var(--nxs-accent-30);
}

.caliper-grid-toolbar[b-2wxirf6mzk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
}

.caliper-grid-toolbar-left[b-2wxirf6mzk] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.caliper-grid-toolbar-right[b-2wxirf6mzk] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Caliper/ModalPopups/CaliperMeasurementModal.razor.rz.scp.css */
.caliper-window-content[b-c0qm8t6acd] {
    max-height: 70vh;
    height: auto;
    overflow-y: auto;
}

.caliper-window-content .nxs-row-button-row[b-c0qm8t6acd] {
    padding-top: 0.5rem;
}

.caliper-window-content .nxs-row-button-row .k-button[b-c0qm8t6acd] {
    flex: 1 1 0;
    justify-content: center;
}

.caliper-window-content .nxs-row-button-row[b-c0qm8t6acd] {
    align-items: center;
}

.caliper-field-wrapper[b-c0qm8t6acd] {
    background-color: var(--nxs-surface);
    border-radius: var(--nxs-radius-lg);
    border: 1px solid var(--nxs-overlay-hover);
    padding: 1rem;
}

.caliper-field-grid[b-c0qm8t6acd] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: flex-start;
    gap: 1rem;
    width: 100%;
}

.caliper-field[b-c0qm8t6acd] {
    display: flex;
    flex: 1 1 240px;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 240px;
}

.caliper-field--full[b-c0qm8t6acd] {
    flex-basis: 100%;
    min-width: 100%;
}

.caliper-measurement-modal[b-c0qm8t6acd] {
    border-radius: var(--nxs-radius-lg);
    max-width: 90vw;
    background-color: var(--bs-body-bg);
}

.caliper-measurement-modal .k-window-titlebar[b-c0qm8t6acd] {
    border-top-left-radius: var(--nxs-radius-lg);
    border-top-right-radius: var(--nxs-radius-lg);
    background-color: var(--bs-body-bg);
}

.caliper-measurement-modal .k-window-content[b-c0qm8t6acd] {
    border-bottom-left-radius: var(--nxs-radius-lg);
    border-bottom-right-radius: var(--nxs-radius-lg);
    background-color: var(--bs-body-bg);
}

.dynamic-tabstrip-wrapper[b-c0qm8t6acd] {
    --add-tab-button-size: 32.8px;
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* The strip flexes to fill the row beside the add button. */
.dynamic-tabstrip-wrapper[b-c0qm8t6acd]  .nxs-tabs {
    flex: 1 1 auto;
    min-width: 0;
}

/* Tab header template: title + inline remove button (replaces Telerik's k-flex-layout). */
.tab-with-remove-button[b-c0qm8t6acd] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.dynamic-tabstrip-wrapper .add-tab-button[b-c0qm8t6acd] {
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
    width: 20px;
    height: 20px;
    aspect-ratio: 1;
}

.remove-tab-button[b-c0qm8t6acd] {
    padding: 0 !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    width: 20px;
    height: 20px;
}

.caliper-upload-dropzone[b-c0qm8t6acd] {
    border: 1px dashed var(--nxs-overlay-32);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
    text-align: center;
    display: grid;
    gap: 0.5rem;
    align-items: center;
    justify-items: center;
}

.caliper-upload-preview[b-c0qm8t6acd] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 0.5rem;
    background-color: var(--nxs-overlay-subtle);
}

.caliper-upload-preview img[b-c0qm8t6acd] {
    display: block;
    max-width: 100%;
    max-height: 240px;
    object-fit: contain;
}

.caliper-locations-header[b-c0qm8t6acd] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.caliper-location-group[b-c0qm8t6acd] {
    margin-top: 0.75rem;
    padding: 0.75rem;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    background-color: var(--nxs-overlay-subtle);
}

.caliper-location-group-header[b-c0qm8t6acd] {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: flex-end;
    justify-content: space-between;
}

.caliper-location-group-field[b-c0qm8t6acd] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 200px;
    flex: 1 1 200px;
}

.caliper-location-group-actions[b-c0qm8t6acd] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.caliper-location-points[b-c0qm8t6acd] {
    margin-top: 0.5rem;
    overflow-x: auto;
}

.caliper-location-points td[b-c0qm8t6acd] {
    vertical-align: middle;
}


.caliper-grid-checkbox[b-c0qm8t6acd] {
    appearance: none;
    -webkit-appearance: none;
    width: 16px;
    height: 16px;
    padding: 0;
    margin: 0;
    border: 2px solid var(--nxs-accent);
    border-radius: var(--nxs-radius-sm);
    background-color: transparent;
    display: inline-block;
    vertical-align: middle;
    cursor: pointer;
}

.caliper-grid-checkbox:checked[b-c0qm8t6acd] {
    background-color: var(--nxs-accent);
    border-color: var(--nxs-accent);
}

.caliper-grid-checkbox:focus[b-c0qm8t6acd] {
    outline: none;
    box-shadow: 0 0 0 2px var(--nxs-accent-30);
}

.caliper-pass-checkbox:disabled[b-c0qm8t6acd] {
    opacity: 1;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Caliper/ModalPopups/CaliperSetCreateModal.razor.rz.scp.css */
.caliper-window-content[b-4oitqola3n] {
    max-height: 70vh;
    overflow-y: auto;
    overflow-x: hidden;
}

.caliper-window-content .nxs-row-button-row[b-4oitqola3n] {
    padding-top: 0.5rem;
}

.caliper-window-content .nxs-row-button-row .k-button[b-4oitqola3n] {
    flex: 0 0 auto;
    justify-content: center;
}

.caliper-window-content .nxs-row-button-row[b-4oitqola3n] {
    align-items: center;
    flex-wrap: wrap;
    row-gap: 0.5rem;
}

.caliper-submit-progress[b-4oitqola3n] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1 1 0;
    min-width: 0;
    max-width: 100%;
}

.caliper-field-wrapper[b-4oitqola3n] {
    background-color: var(--nxs-surface);
    border-radius: var(--nxs-radius-lg);
    border: 1px solid var(--nxs-overlay-hover);
    padding: 1rem;
}

.caliper-field-grid[b-4oitqola3n] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: flex-start;
    gap: 1rem;
    width: 100%;
}

.caliper-field[b-4oitqola3n] {
    display: flex;
    flex: 1 1 240px;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 240px;
}

.caliper-field--file[b-4oitqola3n] {
    flex-basis: 100%;
    min-width: 100%;
}

.caliper-field--full[b-4oitqola3n] {
    flex-basis: 100%;
    min-width: 100%;
}

.caliper-form-type-input[b-4oitqola3n]::placeholder {
    color: var(--nxs-text-muted);
}

.caliper-mrr-input[b-4oitqola3n]::placeholder {
    color: var(--nxs-text-muted);
}

.caliper-set-create-modal[b-4oitqola3n] {
    border-radius: var(--nxs-radius-lg);
    max-width: 90vw;
    background-color: var(--bs-body-bg);
}

.caliper-set-create-modal .k-window-titlebar[b-4oitqola3n] {
    border-top-left-radius: var(--nxs-radius-lg);
    border-top-right-radius: var(--nxs-radius-lg);
    background-color: var(--bs-body-bg);
}

.caliper-set-create-modal .k-window-content[b-4oitqola3n] {
    border-bottom-left-radius: var(--nxs-radius-lg);
    border-bottom-right-radius: var(--nxs-radius-lg);
    background-color: var(--bs-body-bg);
}
/* /Pages/Builds/Build/Parts/Part/Measurements/CmmMeasurements/CmmMeasurement/CmmMeasurementCreate.razor.rz.scp.css */
.missing-part td[b-218wnyr3pw], .missing-part span[b-218wnyr3pw] {
    color: var(--bs-danger);
    pointer-events: none;
}

.already-imported td[b-218wnyr3pw], .already-imported span[b-218wnyr3pw] {
    color: var(--bs-orange);
    pointer-events: none;
}

.nxs-import-folder-workflow[b-218wnyr3pw] {
    display: flex;
    align-items: flex-start;
    gap: var(--nxs-space-16);
}

.nxs-import-folder-workflow .nxs-section[b-218wnyr3pw] {
    position: relative;
}

.nxs-import-grid .nxs-section-label[b-218wnyr3pw] {
    padding-left: 0;
}

@media (max-width: 72rem) {
    .nxs-import-folder-workflow[b-218wnyr3pw] {
        flex-direction: column;
    }
}

.nxs-import-grid-warning[b-218wnyr3pw] {
    margin: var(--nxs-space-8) 0 0;
    font-size: 0.875rem;
    line-height: 1.4;
}

.nxs-import-grid-warning--danger[b-218wnyr3pw] {
    color: var(--bs-danger);
}

.nxs-import-grid-warning--warning[b-218wnyr3pw] {
    color: var(--bs-orange);
}

.nxs-import-grid[b-218wnyr3pw]  .k-grid-toolbar {
    align-items: center;
    gap: var(--nxs-space-12);
}

.nxs-import-grid[b-218wnyr3pw]  .nxs-import-file-filter-chips {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: var(--nxs-space-8) !important;
    margin: 0;
}

.nxs-import-grid[b-218wnyr3pw]  .nxs-import-file-filter-chips .mud-chip {
    margin: 0;
    min-height: 0;
    height: auto;
    padding: var(--nxs-space-6) var(--nxs-space-12);
    font-size: var(--nxs-text-size-sm);
    line-height: 1;
}

.nxs-import-grid[b-218wnyr3pw]  .nxs-import-file-filter-chip--importable.mud-chip:not(.is-selected) {
    border-color: var(--nxs-text);
}
/* /Pages/Builds/Build/Parts/Part/Measurements/CmmMeasurements/CmmMeasurements.razor.rz.scp.css */
[b-7o9xjmp0z1] .k-grid .k-grid-content tr.k-selected > td,
[b-7o9xjmp0z1] .k-grid .k-grid-content tr.k-state-selected > td,
[b-7o9xjmp0z1] .k-grid .k-grid-content .k-table-row.k-selected > td,
[b-7o9xjmp0z1] .k-grid .k-grid-content .k-table-row.k-state-selected > td,
[b-7o9xjmp0z1] .k-grid .k-grid-content tr.k-selected > td *,
[b-7o9xjmp0z1] .k-grid .k-grid-content tr.k-state-selected > td *,
[b-7o9xjmp0z1] .k-grid .k-grid-content .k-table-row.k-selected > td *,
[b-7o9xjmp0z1] .k-grid .k-grid-content .k-table-row.k-state-selected > td * {
    color: inherit !important;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/FatigueMeasurements/FatigueMeasurement/FatigueMeasurementView.razor.rz.scp.css */
.fatigue-derived-value[b-350xjwkv0b] {
    align-items: center;
    display: flex;
    gap: 0.75rem;
    justify-content: space-between;
}

[b-350xjwkv0b] .fatigue-calculated-value {
    align-items: center;
    color: var(--nxs-accent);
    display: inline-flex;
    flex: 0 0 auto;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/GomMeasurements/Dimensional/GomDimensionMeasurementCreate.razor.rz.scp.css */
.gom-dimension-import[b-3hwqfkfbj7],
.gom-dimension-import__form-sections[b-3hwqfkfbj7],
.gom-dimension-import__wide-sections[b-3hwqfkfbj7],
.gom-dimension-import__fields[b-3hwqfkfbj7] {
    display: grid;
    gap: var(--nxs-space-24);
    min-width: 0;
}

.gom-dimension-import[b-3hwqfkfbj7] {
    margin-block-start: var(--nxs-space-24);
}

.gom-dimension-import__field-grid[b-3hwqfkfbj7] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: var(--nxs-space-16);
    align-items: start;
    min-width: 0;
}

.gom-dimension-import__actions[b-3hwqfkfbj7],
.gom-dimension-import__submit[b-3hwqfkfbj7] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12);
}

.gom-dimension-import__submit[b-3hwqfkfbj7] {
    justify-content: flex-end;
}

.nxs-import-grid-warning[b-3hwqfkfbj7] {
    margin: var(--nxs-space-8) 0 0;
    font-size: var(--nxs-text-size-sm);
    line-height: 1.4;
}

.nxs-import-grid-warning--danger[b-3hwqfkfbj7] {
    color: var(--nxs-danger-text);
}

.nxs-import-grid-warning--warning[b-3hwqfkfbj7] {
    color: var(--nxs-warning);
}

.nxs-unit-assignment-instruction[b-3hwqfkfbj7] {
    margin: 0 0 var(--nxs-space-16);
}

.nxs-unit-property--missing[b-3hwqfkfbj7] {
    color: var(--nxs-warning);
}

.nxs-import-grid[b-3hwqfkfbj7]  .missing-part td,
.nxs-import-grid[b-3hwqfkfbj7]  .missing-part span {
    color: var(--nxs-danger-text);
    pointer-events: none;
}

.nxs-import-grid[b-3hwqfkfbj7]  .already-imported td,
.nxs-import-grid[b-3hwqfkfbj7]  .already-imported span {
    color: var(--nxs-warning);
    pointer-events: none;
}

.nxs-import-grid[b-3hwqfkfbj7]  .k-grid-toolbar {
    align-items: center;
    gap: var(--nxs-space-12);
}

.nxs-import-grid[b-3hwqfkfbj7]  .nxs-import-file-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
    margin: 0;
}

.nxs-import-grid[b-3hwqfkfbj7]  .nxs-import-file-filter-chips .mud-chip {
    margin: 0;
    min-height: 0;
    height: auto;
    padding: var(--nxs-space-6) var(--nxs-space-12);
    font-size: var(--nxs-text-size-sm);
    line-height: 1;
}

.nxs-import-grid[b-3hwqfkfbj7]  .nxs-import-file-filter-chip--importable.mud-chip:not(.is-selected) {
    border-color: var(--nxs-text);
}

@media (max-width: 48rem) {
    .gom-dimension-import__submit[b-3hwqfkfbj7] {
        justify-content: flex-start;
    }
}
/* /Pages/Builds/Build/Parts/Part/Measurements/GomMeasurements/Dimensional/GomDimensionMeasurementView.razor.rz.scp.css */
.k-window.k-dialog.hist-window[b-4kyziwwleo] {
    display:flex; flex-direction:column;
}
.k-window.k-dialog.hist-window .k-window-content[b-4kyziwwleo] {
    display:block;
}

.imputed-warning-icon[b-4kyziwwleo] {
    display: inline-flex;
    align-items: center;
    margin-left: 0.3rem;
    color: var(--bs-warning);
    cursor: help;
    vertical-align: middle;
    line-height: 1;
}

.imputed-warning-icon svg[b-4kyziwwleo] {
    width: 14px;
    height: 14px;
    fill: currentColor;
    display: block;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/GomMeasurements/Surface/GomSurfaceMeasurementCreate.razor.rz.scp.css */
.gom-surface-import[b-g67tjjfrqj],
.gom-surface-import__form-sections[b-g67tjjfrqj],
.gom-surface-import__results[b-g67tjjfrqj] {
    display: grid;
    gap: var(--nxs-space-24);
    min-width: 0;
}

.gom-surface-import[b-g67tjjfrqj] {
    margin-block-start: var(--nxs-space-24);
}

.gom-surface-import__field-grid[b-g67tjjfrqj] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
    gap: var(--nxs-space-16);
    align-items: start;
    min-width: 0;
}

.gom-surface-import__actions[b-g67tjjfrqj] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--nxs-space-12);
}

@media (max-width: 48rem) {
    .gom-surface-import__actions[b-g67tjjfrqj] {
        justify-content: flex-start;
    }
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/Comparison/SemImageComparisonDialog.razor.rz.scp.css */
.sem-compare-dialog__title[b-7upw2o3g58] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
}

/* Bespoke comparison-grid layout: tile count drives the column/row template,
   which CSS grid expresses directly and no Mud layout primitive does. */
.sem-compare-grid[b-7upw2o3g58] {
    display: grid;
    gap: 0.75rem;
    width: 100%;
    min-height: 420px;
    height: min(65vh, 820px);
}

.sem-compare-grid--one[b-7upw2o3g58] {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
}

.sem-compare-grid--two[b-7upw2o3g58] {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr;
}

.sem-compare-grid--four[b-7upw2o3g58] {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 1fr 1fr;
}

.sem-compare-grid--nine[b-7upw2o3g58] {
    grid-template-columns: repeat(3, 1fr);
    grid-auto-rows: 1fr;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/Comparison/SemImageComparisonTable.razor.rz.scp.css */
/* ::deep — the class sits on the MudSimpleTable root, which renders without the
   scope attribute. Base typography for the whole comparison table. */
.sem-compare-table-wrapper[b-ze4tt8v3rb]  .sem-compare-table {
    width: 100%;
    font-size: 0.85rem;
    color: var(--nxs-text);
}

.sem-compare-table-wrapper[b-ze4tt8v3rb]  .sem-compare-table table {
    border-collapse: collapse;
}

/* Cell chrome — all th/td in this file belong to the comparison table. */
th[b-ze4tt8v3rb],
td[b-ze4tt8v3rb] {
    padding: 0.4rem 0.75rem;
    text-align: left;
    border-bottom: 1px solid var(--nxs-divider);
    vertical-align: top;
}

tbody tr:last-child th[b-ze4tt8v3rb],
tbody tr:last-child td[b-ze4tt8v3rb] {
    border-bottom: 0;
}

.sem-compare-table__row-label[b-ze4tt8v3rb] {
    font-weight: 500;
    color: var(--nxs-text-subtle);
    white-space: nowrap;
    width: 1%;
}

.sem-compare-table__subsection th[b-ze4tt8v3rb],
.sem-compare-table__subsection td[b-ze4tt8v3rb] {
    padding-top: 0.8rem;
    border-bottom-color: var(--nxs-overlay-subtle);
}

.sem-compare-table__subsection-label[b-ze4tt8v3rb] {
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--nxs-text-muted);
}

.sem-compare-table__chart-cell[b-ze4tt8v3rb] {
    padding-top: 0.55rem !important;
    padding-bottom: 0.75rem !important;
}

.sem-compare-table__embedded-section th[b-ze4tt8v3rb],
.sem-compare-table__embedded-section td[b-ze4tt8v3rb] {
    border-bottom: 0 !important;
}

.sem-compare-table__card-title[b-ze4tt8v3rb] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--nxs-text);
    margin-bottom: 0.55rem;
}

/* Bespoke two-column layout: per-image summary cards beside the shared histogram. */
.sem-compare-table__distribution-layout[b-ze4tt8v3rb] {
    display: grid;
    grid-template-columns: minmax(240px, 320px) minmax(0, 1fr);
    gap: 0.9rem;
    align-items: stretch;
}

.sem-compare-table__distribution-summary[b-ze4tt8v3rb] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    min-width: 0;
}

.sem-compare-table__summary-card[b-ze4tt8v3rb] {
    border-radius: var(--nxs-radius-lg);
    padding: 0.7rem 0.8rem;
    background: var(--nxs-overlay-subtle);
    box-shadow: inset 0 0 0 1px var(--nxs-overlay-hover);
}

.sem-compare-table__summary-card-title[b-ze4tt8v3rb] {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--nxs-text);
    margin-bottom: 0.45rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sem-compare-table__summary-row[b-ze4tt8v3rb] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.18rem 0;
}

.sem-compare-table__summary-label[b-ze4tt8v3rb] {
    color: var(--nxs-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: 0.68rem;
    white-space: nowrap;
}

.sem-compare-table__summary-value[b-ze4tt8v3rb] {
    color: var(--nxs-text);
    font-weight: 700;
    white-space: nowrap;
}

.sem-compare-table__distribution-chart[b-ze4tt8v3rb] {
    min-width: 0;
}

.sem-compare-table__col-header[b-ze4tt8v3rb] {
    font-weight: 600;
    white-space: nowrap;
}

.sem-compare-table__col-header a[b-ze4tt8v3rb] {
    color: inherit;
    text-decoration: none;
}

.sem-compare-table__col-header a:hover[b-ze4tt8v3rb] {
    text-decoration: underline;
}

.sem-compare-table__col-title-row[b-ze4tt8v3rb] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-6);
    min-width: 0;
}

.sem-compare-table__col-title-row a[b-ze4tt8v3rb] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sem-compare-table__col-title-row[b-ze4tt8v3rb]  .nxs-chip {
    flex: 0 0 auto;
    margin-left: auto;
}

.sem-compare-table__col-sub[b-ze4tt8v3rb] {
    display: block;
    font-weight: 400;
    font-size: 0.75rem;
    color: var(--nxs-text-muted);
}

.sem-compare-table__phase-header[b-ze4tt8v3rb] {
    padding-top: 0.9rem !important;
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--nxs-text-subtle);
    border-bottom: 1px solid var(--nxs-divider) !important;
}

.sem-compare-table__swatch[b-ze4tt8v3rb] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: var(--nxs-radius-sm);
    margin-right: 0.35rem;
    vertical-align: middle;
}

.sem-compare-table__loading[b-ze4tt8v3rb] {
    opacity: 0.5;
}

@media (max-width: 1400px) {
    .sem-compare-table__distribution-layout[b-ze4tt8v3rb] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/Comparison/SemImageComparisonTile.razor.rz.scp.css */
/* Root wrapper exists so the component owns a scoped element: the tile sits in the
   dialog's comparison grid and must be allowed to shrink below content size. */
.sem-compare-tile[b-08hq2lemj7] {
    display: flex;
    min-width: 0;
    min-height: 0;
}

/* ::deep — MudPaper renders without the scope attribute and has no prop for
   flex-column fill or for clipping children to its rounded outline. */
.sem-compare-tile[b-08hq2lemj7]  .sem-compare-tile__paper {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
    /* Deliberate non-token black: SEM micrographs are letterboxed on true black
       so the viewer canvas blends with the image; no design token is pure black. */
    background: #000;
}

.sem-compare-tile__header[b-08hq2lemj7] {
    display: flex;
    flex-direction: column;
    gap: 0.05rem;
    padding: 0.25rem 0.6rem;
    background: var(--nxs-surface-raised);
    line-height: 1.1;
}

/* ::deep — MudText renders without the scope attribute; no Mud prop covers truncation. */
.sem-compare-tile__header[b-08hq2lemj7]  .sem-compare-tile__title {
    flex: 1 1 auto;
    font-weight: 600;
    color: var(--nxs-text);
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sem-compare-tile__title-row[b-08hq2lemj7]  .sem-compare-tile__title-tooltip {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
}

.sem-compare-tile__header[b-08hq2lemj7]  .sem-compare-tile__sub {
    color: var(--nxs-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
}

.sem-compare-tile__header[b-08hq2lemj7]  .sem-compare-tile__sub-tooltip {
    display: block;
    min-width: 0;
    width: 100%;
}

.sem-compare-tile__title-row[b-08hq2lemj7] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-6);
    min-width: 0;
}

.sem-compare-tile__title-row[b-08hq2lemj7]  .nxs-chip {
    flex: 0 0 auto;
    margin-left: auto;
}

.sem-compare-tile__canvas[b-08hq2lemj7] {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/InspectionImages.razor.rz.scp.css */
/* The collection frame, responsive layout, tile interaction and selection chrome
   belong to NxsTileGrid and NxsSelectableTile. This file owns microscopy content only. */

/* ::deep — MudPaper exposes no radius prop; panels use the large surface radius. */
.inspection-images-filter-panel[b-65noio71gf]  .mud-paper {
    border-radius: var(--nxs-radius-lg);
}

.inspection-images-filter-panel__grid[b-65noio71gf] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 13.75rem), 1fr));
    gap: var(--nxs-space-20) var(--nxs-space-24);
}

.inspection-image-card__content[b-65noio71gf] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-width: 0;
}

/* Every thumbnail is the same shape: full card width, one fixed aspect ratio, centre-cropped.
   Micrographs come off the microscope at whatever ratio it produced, and letting each one keep
   its own shape is what made the row ragged. Cropping is the right trade - the thumbnail is an
   index entry, and the uncropped image is one click away. The height override beats
   MudCardMedia's inline Height so the ratio, not a pixel count, decides the box. */
.inspection-image-card__content[b-65noio71gf]  .mud-card-media {
    width: 100%;
    /* !important beats MudCardMedia's inline Height, so one number governs every thumbnail. */
    height: 200px !important;
    background-color: var(--nxs-surface-inset);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

.inspection-image-card__content[b-65noio71gf]  .mud-card-content {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    /* Room for title, device, note and model without growing: a card with a note and one
       without must be the same height. */
    min-height: 112px;
    padding: var(--nxs-space-12) var(--nxs-space-16) var(--nxs-space-16);
}

.inspection-image-card__content[b-65noio71gf]  .inspection-image-card__title {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inspection-image-card__content[b-65noio71gf]  .inspection-image-card__title-row {
    min-width: 0;
}

.inspection-image-card__content[b-65noio71gf]  .inspection-image-card__sample-condition {
    flex: 0 0 auto;
    margin-left: auto;
}

/* Right-aligned like the sample-condition chip, and allowed to shrink: a long folder
   name must not push the image's own label out of the card. */
/* Positioning context for anything overlaid on the thumbnail. */
.inspection-image-card__media[b-65noio71gf] {
    position: relative;
    min-width: 0;
}

/* The slot is positioned, not the button. A tooltip anchors to its wrapper, so an absolutely
   positioned button inside a zero-sized wrapper put the tooltip somewhere else entirely. */
.inspection-image-card__flag-slot[b-65noio71gf] {
    position: absolute;
    top: var(--nxs-space-8);
    left: var(--nxs-space-8);
    z-index: 3;
}

/* Deliberately the same object as the selection badge in the opposite corner: same 30px pill,
   same border weight, same blurred translucent fill. Two controls on one thumbnail should look
   like a pair. */
.inspection-image-card__flag-slot[b-65noio71gf]  .inspection-image-card__flag.mud-icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    min-width: 0;
    padding: 0;
    border: 1.5px solid color-mix(in srgb, var(--nxs-text) 85%, transparent);
    border-radius: var(--nxs-radius-pill);
    background: color-mix(in srgb, var(--nxs-info-bg) 55%, transparent);
    color: color-mix(in srgb, var(--nxs-text) 90%, transparent);
    backdrop-filter: blur(6px);
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 120ms ease, transform 120ms ease;
}

/* Raised: the fill carries the meaning, the icon stays legible against it. */
.inspection-image-card__flag-slot[b-65noio71gf]  .inspection-image-card__flag.mud-icon-button.is-flagged {
    border-color: var(--nxs-danger);
    background: color-mix(in srgb, var(--nxs-danger) 82%, transparent);
    color: #fff;
    opacity: 1;
    transform: scale(1);
}

.inspection-image-card__content:focus-within .inspection-image-card__flag-slot[b-65noio71gf]  .inspection-image-card__flag.mud-icon-button,
.inspection-image-card__flag-slot[b-65noio71gf]  .inspection-image-card__flag.mud-icon-button:focus-visible {
    opacity: 1;
    transform: scale(1);
}

@media (hover: hover) and (pointer: fine) {
    .inspection-image-card__content:hover .inspection-image-card__flag-slot[b-65noio71gf]  .inspection-image-card__flag.mud-icon-button {
        opacity: 1;
        transform: scale(1);
    }
}

.inspection-image-card__media[b-65noio71gf]  .inspection-image-card__failed {
    position: absolute;
    right: var(--nxs-space-8);
    bottom: var(--nxs-space-8);
    z-index: 2;
    max-width: calc(100% - (2 * var(--nxs-space-8)));
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inspection-image-card__media[b-65noio71gf]  .inspection-image-card__rerunning {
    position: absolute;
    right: var(--nxs-space-8);
    bottom: var(--nxs-space-8);
    z-index: 2;
    max-width: calc(100% - (2 * var(--nxs-space-8)));
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Bottom-left, sized to its text rather than stretched across the thumbnail, and capped so a
   long folder name cannot cover the image it is labelling. No border: an outlined pill on a
   photograph reads as a form control. */
.inspection-image-card__media[b-65noio71gf]  .inspection-image-card__batch {
    position: absolute;
    bottom: var(--nxs-space-8);
    left: var(--nxs-space-8);
    z-index: 2;
    max-width: calc(100% - (2 * var(--nxs-space-8)));
    min-width: 0;
    height: auto;
    padding: 2px var(--nxs-space-8);
    overflow: hidden;
    border: none;
    background: rgba(0, 0, 0, 0.62);
    color: #fff;
    font-size: 0.72rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inspection-image-card__media[b-65noio71gf]  .inspection-image-card__batch:hover {
    background: rgba(0, 0, 0, 0.82);
}

/* One line, ellipsised, full text on hover. A note can be a sentence or a paragraph, and the
   card is an index entry - it must not grow to fit whatever was typed. */
.inspection-image-card__note[b-65noio71gf] {
    /* Exactly one line, always. A note can be a paragraph, and a card that grows to fit one
       makes its row taller than every other row. The height is fixed rather than implied so the
       card is the same height flagged or not, and flex:none stops it absorbing spare space. */
    flex: 0 0 auto;
    height: 1.15rem;
    min-width: 0;
    overflow: hidden;
    color: var(--nxs-text-subtle);
    font-size: 0.85rem;
    font-style: italic;
    line-height: 1.15rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inspection-image-card__meta[b-65noio71gf] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-8);
    min-width: 0;
    color: var(--nxs-text-subtle);
    font-size: 0.85rem;
}

.inspection-image-card__model[b-65noio71gf] {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inspection-image-card__meta[b-65noio71gf]  .inspection-image-card__model-tooltip {
    display: block;
    width: 100%;
    min-width: 0;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/InspectionImageViewer.razor.rz.scp.css */
/* ---- Layout ---- */

.sem-image-viewer[b-863ajoba5j] {
    display: block;
    height: 100%;
    min-height: 0;
}

.sem-image-viewer[b-863ajoba5j]  .nxs-drawer-panel {
    --nxs-drawer-panel-width: 480px;
}

.sem-image-viewer__canvas[b-863ajoba5j] {
    position: relative;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
}

/* OpenSeadragon host: the JS module owns the contents; the div must fill the canvas cell. */
.sem-image-viewer__host[b-863ajoba5j] {
    width: 100%;
    height: 100%;
    min-height: min(82vh, 960px);
}

.sem-mask-dock[b-863ajoba5j] {
    position: absolute;
    left: 1rem;
    right: 1rem;
    margin: 0 auto;
    bottom: 1rem;
    width: calc(100% - (2 * var(--nxs-space-16)));
    min-width: 420px;
    max-width: 72rem;
    z-index: 5;
}

/* ---- Panel surface and tabs ---- */

/* The panel body (tab stack + analysis content) scrolls as one — the stack scrolls off
   screen naturally rather than pinning over the content. */
.sem-image-viewer__tab-content[b-863ajoba5j] {
    min-height: 0;
    overflow-x: hidden;
}

.sem-image-viewer[b-863ajoba5j]  .sem-image-viewer__tabs {
    margin: 0 var(--nxs-space-16) var(--nxs-space-16);
}


/* ---- Phase tab content ---- */

.sem-image-viewer[b-863ajoba5j]  .sem-phase-content {
    width: 100%;
    min-width: 0;
    padding: 0 var(--nxs-space-16) var(--nxs-space-16);
    box-sizing: border-box;
}

.sem-phase-loading[b-863ajoba5j] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    padding: 0 var(--nxs-space-16) var(--nxs-space-16);
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-loading__stat {
    height: 5.5rem;
    border-radius: var(--nxs-radius-lg);
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-loading__heading {
    width: 5rem;
    height: 1rem;
    margin-bottom: var(--nxs-space-8);
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-loading__embedded-chart {
    height: 14rem;
    margin-top: var(--nxs-space-12);
    border-radius: var(--nxs-radius-lg);
}

.sem-phase-loading__chart-card[b-863ajoba5j] {
    padding: var(--nxs-space-8);
    background: var(--nxs-surface);
    border-radius: var(--nxs-radius-lg);
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-loading__chart-title {
    width: 4rem;
    height: 1.25rem;
    margin-bottom: var(--nxs-space-8);
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-loading__chart {
    height: var(--nxs-chart-height-sm);
    border-radius: var(--nxs-radius-lg);
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-section {
    background-color: var(--nxs-surface);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    padding: var(--nxs-space-16) var(--nxs-space-16) var(--nxs-space-16);
}

.sem-image-viewer[b-863ajoba5j]  .sem-section-heading {
    display: block;
    color: var(--nxs-text-muted);
    margin-bottom: var(--nxs-space-8);
}

.sem-summary-grid[b-863ajoba5j] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-12);
}

.sem-stat-grid[b-863ajoba5j] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--nxs-space-12);
}

.sem-summary-pie[b-863ajoba5j] {
    margin-top: var(--nxs-space-12);
}

.sem-image-viewer[b-863ajoba5j]  .sem-stat-tile {
    min-width: 0;
    padding: var(--nxs-space-12) var(--nxs-space-12);
    background-color: var(--nxs-surface-inset);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

.sem-image-viewer[b-863ajoba5j]  .sem-stat-tile__label {
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
    color: var(--nxs-text-muted);
}

.sem-image-viewer[b-863ajoba5j]  .sem-stat-tile__value {
    font-weight: 700;
    color: var(--nxs-text);
}

.sem-phase-group[b-863ajoba5j] {
    min-width: 0;
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-group__title {
    color: var(--nxs-text);
    margin-bottom: var(--nxs-space-8);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sem-phase-group__chart[b-863ajoba5j] {
    margin-top: var(--nxs-space-12);
}

/* Embedded charts sit inside a section card that already provides the surface. */
.sem-image-viewer[b-863ajoba5j]  .sem-phase-group__chart .sem-size-distribution-chart {
    padding: 0;
    background: transparent;
}

.sem-phase-distributions[b-863ajoba5j] {
    width: 100%;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    align-items: stretch;
}

/* Plotly sizes itself to a fixed pixel width on first render; force it to track the panel. */
.sem-image-viewer[b-863ajoba5j]  .sem-phase-distributions .js-plotly-plot,
.sem-image-viewer[b-863ajoba5j]  .sem-phase-distributions .plotly {
    width: 100% !important;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
}

.sem-image-viewer[b-863ajoba5j]  .sem-phase-distributions .js-plotly-plot > div {
    width: 100% !important;
}

/* ---- Metadata tab ---- */

.sem-image-viewer[b-863ajoba5j]  .sem-metadata {
    width: 100%;
    padding: 0 var(--nxs-space-16) var(--nxs-space-16);
    box-sizing: border-box;
}

.sem-metadata__item[b-863ajoba5j] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-2);
}

.sem-image-viewer[b-863ajoba5j]  .sem-metadata__label {
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 600;
    color: var(--nxs-text-muted);
}

.sem-image-viewer[b-863ajoba5j]  .sem-metadata__value {
    color: var(--nxs-text-body);
    overflow-wrap: anywhere;
}

.sem-image-viewer[b-863ajoba5j]  .sem-metadata__item .nxs-chip {
    align-self: flex-start;
}

@media (max-width: 1500px) {
    .sem-summary-grid[b-863ajoba5j],
    .sem-stat-grid[b-863ajoba5j] {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 1400px) {
    .sem-image-viewer[b-863ajoba5j]  .nxs-drawer-panel {
        --nxs-drawer-panel-width: 420px;
    }
}

@media (max-width: 1100px) {
    .sem-mask-dock[b-863ajoba5j] {
        width: calc(100% - (2 * var(--nxs-space-12)));
        min-width: 0;
    }
}

/* The canvas sits in its own surface, so the viewer reads as two panels side by side rather
   than a floating image next to a panel. Same surface, border and radius as the analysis panel,
   which NxsDrawerPanel styles from the same tokens. */
.sem-image-viewer__canvas[b-863ajoba5j] {
    background: var(--nxs-surface);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/InspectionMaskOpacityControls.razor.rz.scp.css */
.sem-mask-controls[b-nzt8g7ncti] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5rem), 1fr));
    gap: var(--nxs-space-16);
    padding: var(--nxs-space-12) var(--nxs-space-16);
    background: var(--nxs-overlay-subtle);
    border-radius: var(--nxs-radius-lg);
    box-shadow: inset 0 0 0 1px var(--nxs-overlay-hover);
}

.sem-mask-controls__slider[b-nzt8g7ncti] {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    /* Inset here rather than on the label alone, so the phase name and the slider beneath it
       start at the same place. */
    padding-inline: var(--nxs-space-8);
}

.sem-mask-controls__label[b-nzt8g7ncti] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    min-width: 0;
    color: var(--nxs-text-body);
    font-size: 0.85rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.sem-mask-controls__swatch[b-nzt8g7ncti] {
    display: inline-block;
    width: 12px;
    height: 12px;
    border-radius: var(--nxs-radius-sm);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--nxs-text) 20%, transparent);
}

.sem-mask-controls__phase-name[b-nzt8g7ncti] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sem-mask-controls__value[b-nzt8g7ncti] {
    margin-left: auto;
    flex: 0 0 4ch;
    white-space: nowrap;
    font-weight: 600;
    color: var(--nxs-text);
    font-variant-numeric: tabular-nums;
}

.sem-mask-controls--floating[b-nzt8g7ncti] {
    grid-template-columns: repeat(var(--sem-mask-controls-columns, 4), minmax(0, 1fr));
    background: transparent;
    border-color: transparent;
    box-shadow: none;
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    opacity: 0.55;
    transition: opacity 120ms ease, background-color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.sem-mask-controls--floating:hover[b-nzt8g7ncti],
.sem-mask-controls--floating:focus-within[b-nzt8g7ncti] {
    background: rgb(20 23 28 / 88%);
    border-color: rgb(255 255 255 / 18%);
    box-shadow: 0 0.5rem 1.5rem rgb(0 0 0 / 38%);
    opacity: 1;
}

.sem-mask-controls--floating:hover .sem-mask-controls__label[b-nzt8g7ncti],
.sem-mask-controls--floating:focus-within .sem-mask-controls__label[b-nzt8g7ncti] {
    color: rgb(255 255 255 / 88%);
}

.sem-mask-controls--floating:hover .sem-mask-controls__value[b-nzt8g7ncti],
.sem-mask-controls--floating:focus-within .sem-mask-controls__value[b-nzt8g7ncti] {
    color: #fff;
}

@media (max-width: 700px) {
    .sem-mask-controls--floating[b-nzt8g7ncti] {
        grid-template-columns: repeat(min(var(--sem-mask-controls-columns, 4), 2), minmax(0, 1fr));
    }
}

@media (max-width: 440px) {
    .sem-mask-controls--floating[b-nzt8g7ncti] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* The checkbox sits ahead of the swatch without inflating the row: MudBlazor's default padding
   would push the label out of line with the slider beneath it. */
.sem-mask-controls__label[b-nzt8g7ncti]  .sem-mask-controls__toggle {
    margin: 0;
    padding: 0;
}

.sem-mask-controls__label[b-nzt8g7ncti]  .sem-mask-controls__toggle .mud-button-root {
    padding: 0;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/MicroscopyBatchUpload.razor.rz.scp.css */
/* Upload settings left, capture settings right, sharing one grid so a hint under
   a field on either side cannot knock the two columns out of step. Both tracks
   take minmax(0, …) so a long filename shrinks the cell rather than the grid.
   Settings carry the folder picker, hence the wider share. */
.nxs-batch-upload__batch[b-prj92r2ham] {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    align-items: start;
    column-gap: var(--nxs-space-24);
    row-gap: var(--nxs-space-16);
}

/* Both controls now reserve the same label headroom, so their boxes align at the
   top and their outlines are flush top and bottom. */
.nxs-batch-upload__calibration-row[b-prj92r2ham] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: var(--nxs-space-16);
}

/* The icon explains the pixel size specifically, so it stays tight against that
   field — a full row gap would leave it floating between the two controls. */
.nxs-batch-upload__pixel-size-group[b-prj92r2ham] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-4);
    flex: 0 1 auto;
}

/* ::deep because the class rides on an element rendered by NxsNumericField, which
   carries the component's own scope attribute rather than this page's. */
.nxs-batch-upload__pixel-size-group[b-prj92r2ham]  .nxs-batch-upload__pixel-size {
    flex: 0 1 14rem;
}

/* Nested batches are subordinate to Upload details. A token-derived darker
   surface communicates that hierarchy without introducing another colour. */
.nxs-batch-upload__nested-batches[b-prj92r2ham] {
    --nxs-batch-surface: color-mix(in srgb, var(--nxs-surface-2) 70%, var(--nxs-surface-raised));
}

.nxs-batch-upload__nested-batches[b-prj92r2ham]  .nxs-form-sections > .mud-expand-panel {
    background: var(--nxs-batch-surface);
}

.nxs-batch-upload__nested-batches[b-prj92r2ham]  .nxs-form-sections > .mud-expand-panel > .mud-collapse-container .mud-expand-panel-content {
    --nxs-field-backdrop: var(--nxs-batch-surface);
}

/* Takes whatever the pixel size and its icon leave, and shrinks rather than
   pushing the row past the column and clipping its own text. */
.nxs-batch-upload__directory-picker[b-prj92r2ham] {
    flex: 1 1 14rem;
    min-width: 0;
}

/* A calibration cell is a value, not a form field, so it stays as narrow as the
   number it holds rather than stretching the column. */
.nxs-batch-upload__nested-batches[b-prj92r2ham]  .nxs-batch-upload__row-pixel-size {
    max-width: 8rem;
}

.nxs-batch-upload__build[b-prj92r2ham] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}

.nxs-batch-upload__validation[b-prj92r2ham] {
    color: var(--nxs-danger-text);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.45;
}

.nxs-batch-upload__failure-list[b-prj92r2ham] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    margin: var(--nxs-space-8) 0 0;
    padding-left: var(--nxs-space-20);
    font-size: var(--nxs-text-size-sm);
}

/* Every piece of secondary text on the page, matched to the muted grey
   MudBlazor uses for its own field helper text so the two do not compete. */
.nxs-batch-upload__hint[b-prj92r2ham] {
    display: block;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.45;
}

/* Settings that apply to the whole upload rather than to one batch. */
.nxs-batch-upload__upload-fields[b-prj92r2ham] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    max-width: 30rem;
}

/* Closes each batch, separated from its table so the counts and the add-files
   control do not read as more rows. */
/* No top border: the grid above already owns its outlined, rounded bottom edge,
   and a second line here reads as a stray strip rather than a divider. */
.nxs-batch-upload__batch-footer[b-prj92r2ham] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    padding-top: var(--nxs-space-12);
}

/* The upload action belongs to every batch, so it sits outside them all. */
.nxs-batch-upload__actions[b-prj92r2ham] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--nxs-space-16);
    margin-top: var(--nxs-space-16);
}

/* A batch-wide setting, so it is bounded rather than stretched to the table width. */
.nxs-batch-upload__model[b-prj92r2ham] {
    max-width: 30rem;
}

/* Arrows hug the picker so the three read as one control, with the counter trailing. */
.nxs-batch-upload__surface-sample[b-prj92r2ham] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-4);
    flex-wrap: wrap;
}

.nxs-batch-upload__surface-sample[b-prj92r2ham]  .nxs-batch-upload__surface-sample-select {
    flex: 0 1 18rem;
}

/* Upload and cancel on one line, upload first: the primary action leads and leaving is the
   quieter option beside it. */
.nxs-batch-upload__action-row[b-prj92r2ham] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
}

/* The model sits in the settings column with its own hint beneath, so a disabled select and
   the reason for it stay together. */
.nxs-batch-upload__model-group[b-prj92r2ham] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
}
/* /Pages/Builds/Build/Parts/Part/Measurements/Images/SemImageViewerDialog.razor.rz.scp.css */
/* Bespoke viewport sizing for the deep-zoom viewer host — no Mud prop covers it. */
.sem-viewer-dialog__content[b-o6oacus3rq] {
    width: 100%;
    height: min(82vh, 960px);
    max-width: calc(100vw - 4rem);
    overflow: hidden;
}

/* As wide as its text, with real space beneath it before the canvas panel starts. */
.sem-viewer-dialog__flag-reason[b-o6oacus3rq] {
    width: fit-content;
    max-width: 100%;
    margin-bottom: var(--nxs-space-16);
}

/* The label says what the line is, the reason is what was written. Same line, different weight,
   so it reads as one statement rather than two competing pieces of text. */
.sem-viewer-dialog__flag-reason[b-o6oacus3rq]  .sem-viewer-dialog__flag-label {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    font-size: 0.78rem;
}

.sem-viewer-dialog__flag-reason[b-o6oacus3rq]  .sem-viewer-dialog__flag-label::after {
    content: ':';
    margin-right: var(--nxs-space-4);
}
/* /Pages/Builds/Build/Parts/Part/Measurements/TensileMeasurements/TensileMeasurement/CommonTensileMeasurementCreate.razor.rz.scp.css */
.common-tensile-create[b-o6i0d43a2r] {
    max-width: 76em;
    margin: 0 auto;
    padding-bottom: 2em;
}

.common-tensile-create .nxs-container[b-o6i0d43a2r] {
    width: min(72em, 100%);
}

.common-tensile-create .nxs-row-button-row[b-o6i0d43a2r] {
    padding-bottom: 1.5em;
}
/* /Pages/Builds/Build/Parts/Part/Measurements/TensileMeasurements/TensileMeasurement/TensileMeasurementView.razor.rz.scp.css */
.chart-container[b-sgh7fuo3tg] {
    position: relative;
}

.loading-overlay[b-sgh7fuo3tg] {
    width: 100%;
    height: 100%;

    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;

    padding: 0 20% 0 20%;
    z-index: 1;
}

.plotly-container[b-sgh7fuo3tg] {
    &.hidden {
        opacity: 25%;
    }
}
/* /Pages/Builds/Build/Parts/Part/Measurements/ThermalImageStacks/ThermalImageStack/ThermalImageStackView.razor.rz.scp.css */
.thermal-camera-view__body[b-mrozvuykvb] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
}

.thermal-camera-view__viewer-grid[b-mrozvuykvb] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
    flex: 1 1 auto;
    min-height: 0;
    gap: var(--nxs-space-16);
}

.thermal-camera-view__panel[b-mrozvuykvb] {
    display: grid;
    min-width: 0;
    min-height: 0;
}

.thermal-camera-view__panel[b-mrozvuykvb]  .thermal-camera-view__card {
    display: flex;
    height: 100%;
    min-height: 0;
    flex-direction: column;
}

.thermal-camera-view__panel-content[b-mrozvuykvb] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.thermal-camera-view__viewer-shell[b-mrozvuykvb] {
    display: grid;
    flex: 1 1 auto;
    min-height: 0;
}

.thermal-camera-view__result-controls[b-mrozvuykvb] {
    min-width: 0;
}

.thermal-camera-view__layer-viewer[b-mrozvuykvb] {
    display: grid;
    flex: 1 1 auto;
    min-height: 0;
    align-items: stretch;
    justify-items: stretch;
}

@media (max-width: 1199px) {
    .thermal-camera-view__viewer-grid[b-mrozvuykvb] {
        flex: 0 0 auto;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: repeat(2, var(--nxs-chart-height-lg));
    }
}
/* /Pages/Builds/Build/Parts/Part/PartOverviewCard.razor.rz.scp.css */
.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-title {
    font-size: 0.89rem;
    font-weight: 600;
    line-height: 1.3;
    color: rgb(var(--overview-stage-rgb) / 0.93);
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-preview {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.65rem;
    max-width: 100%;
    flex-wrap: wrap;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-preview-label {
    font-size: 0.64rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--overview-stage-subtle);
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-preview-value {
    font-size: 0.77rem;
    font-weight: 600;
    color: rgb(var(--overview-stage-rgb) / 0.9);
    min-width: 0;
    max-width: 100%;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-detail {
    margin-top: 0.7rem;
    font-size: 0.73rem;
    line-height: 1.38;
    color: var(--overview-stage-muted);
    overflow-wrap: anywhere;
    word-break: break-word;
    display: flex;
    flex-direction: column;
    gap: 0.28rem;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-detail-line {
    min-width: 0;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-table {
    width: 100%;
    margin-top: 0.72rem;
    border-collapse: collapse;
    table-layout: auto;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-table-row + .part-overview-callout-table-row {
    border-top: 0.36rem solid transparent;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-table-label {
    width: 1%;
    padding: 0;
    text-align: left;
    vertical-align: baseline;
    font-size: 0.64rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--overview-stage-subtle);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    white-space: nowrap;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-table-value {
    padding: 0 0 0 0.5rem;
    text-align: right;
    vertical-align: baseline;
    font-size: 0.74rem;
    font-weight: 550;
    line-height: 1.25;
    color: rgb(var(--overview-stage-rgb) / 0.9);
    overflow-wrap: anywhere;
    width: 100%;
}

.part-overview-card-content[b-1dbecqyv17]  .part-overview-callout-date {
    margin-top: 0.7rem;
    font-size: 0.66rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--nxs-text-muted);
}

/* /Pages/Builds/Build/Parts/Part/PartTabContentShell.razor.rz.scp.css */
/* No top padding: the page's tab-content container owns the gap below the tab header
   (16px, matching the component page); doubling it up read as a hole. */
.part-tab-shell[b-6659z4pcjs] {
    display: block;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding: 0 0 1rem;
}
/* /Pages/Builds/Build/Parts/Part/PartView.razor.rz.scp.css */
.part-view-content[b-8749e3czns] {
    width: 100%;
    margin-inline: auto;
    max-width: none;
    padding-inline: 0;
    box-sizing: border-box;
}

/* NxsTabHeader root + the summary MudPapers are COMPONENT roots — scoped rules only
   reach them via ::deep from an element this page owns. */
.part-view-content[b-8749e3czns]  .part-view-tabstrip {
    margin-top: 0.45rem;
}

.part-view-tab-content[b-8749e3czns] {
    margin-top: 16px;
}

.part-view-summary-grid[b-8749e3czns] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.8rem;
    width: 100%;
    margin-top: 1rem;
    margin-bottom: 0.65rem;
}

.part-view-summary-grid[b-8749e3czns]  .part-view-summary-card {
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-overlay-subtle);
    padding: 0.85rem 1.1rem;
    min-height: 4.2rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    row-gap: 0.4rem;
}

.part-view-summary-label[b-8749e3czns] {
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1.2;
    color: var(--nxs-text-muted);
}

.part-view-summary-value[b-8749e3czns] {
    font-size: 0.98rem;
    font-weight: 600;
    line-height: 1.2;
}

.part-view-summary-value[b-8749e3czns]  a {
    color: var(--nxs-accent);
}

@media (max-width: 1200px) {
    .part-view-summary-grid[b-8749e3czns] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .part-view-summary-grid[b-8749e3czns] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewCmmTab.razor.rz.scp.css */
.cmm-dashboard-root[b-f50bad35wt] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.cmm-grid-panel[b-f50bad35wt] {
    width: 100%;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.cmm-grid-shell[b-f50bad35wt] {
    min-height: 0;
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.cmm-detail-panel[b-f50bad35wt] {
    margin-top: 0.75rem;
}

.cmm-detail-header[b-f50bad35wt] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.8rem;
}

.cmm-detail-grid-shell[b-f50bad35wt] {
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.cmm-grid-panel[b-f50bad35wt]  .measurement-header-label,
.cmm-detail-title[b-f50bad35wt],
.cmm-drawing-label[b-f50bad35wt] {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.cmm-detail-title[b-f50bad35wt] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.cmm-detail-date[b-f50bad35wt] {
    font-size: 0.9rem;
    font-weight: 500;
    color: rgba(230, 230, 230, 0.78);
}

.cmm-grid-panel[b-f50bad35wt]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.cmm-empty-state[b-f50bad35wt] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

.cmm-drawing-panel[b-f50bad35wt] {
    width: 100%;
    margin-top: 1rem;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.cmm-drawing-label[b-f50bad35wt] {
    margin-bottom: 0.8rem;
}

.cmm-drawing-body[b-f50bad35wt] {
    width: 100%;
    position: relative;
    overflow: visible;
}

.cmm-drawing-panel[b-f50bad35wt]  .k-pdf-viewer-canvas > .k-search-panel,
.cmm-drawing-panel[b-f50bad35wt]  .k-pdf-viewer-canvas > .k-search-container,
.cmm-drawing-panel[b-f50bad35wt]  .k-notification-group {
    z-index: 2000;
}

@media (max-width: 1200px) {
    .cmm-grid-panel[b-f50bad35wt],
    .cmm-drawing-panel[b-f50bad35wt] {
        width: 100%;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewCncTab.razor.rz.scp.css */
.cnc-dashboard-root[b-jn4yzarlrv] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.cnc-panel[b-jn4yzarlrv] {
    width: 100%;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.cnc-grid-shell[b-jn4yzarlrv] {
    margin-top: 1rem;
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.cnc-files-grid[b-jn4yzarlrv] {
    min-height: 18rem;
}

.cnc-panel[b-jn4yzarlrv]  .measurement-header-label {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.cnc-panel[b-jn4yzarlrv]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.cnc-panel[b-jn4yzarlrv]  .k-grid {
    border-color: var(--nxs-overlay-hover);
    box-shadow: none !important;
}

.cnc-panel[b-jn4yzarlrv]  .k-grid-content td {
    border-color: var(--nxs-overlay-hover);
}

.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-content,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-content-locked,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-header-wrap,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-footer-wrap,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-scrollbar {
    background: var(--nxs-surface);
}

.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-header,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-table-thead,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-header,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-table-th {
    background: var(--nxs-surface-raised) !important;
    color: var(--nxs-text-body) !important;
    border-color: var(--nxs-overlay-hover) !important;
}

.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-content tr:hover > td,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-content .k-table-row:hover > td,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-content tr:hover > .k-table-td,
.cnc-panel[b-jn4yzarlrv]  .cnc-files-grid .k-grid-content .k-table-row:hover > .k-table-td {
    background: var(--nxs-surface-raised) !important;
}

.cnc-empty-state[b-jn4yzarlrv] {
    margin: 1rem 0 0;
    opacity: 0.8;
}
/* /Pages/Builds/Build/Parts/Part/PartViewFatigueTab.razor.rz.scp.css */
.part-tensile-dashboard-root[b-6u09ev518p] {
    align-items: center;
    display: flex;
    flex-direction: column;
    width: 100%;
}

.part-tensile-grid-panel[b-6u09ev518p] {
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
    width: 100%;
}

.part-tensile-loader[b-6u09ev518p] {
    display: grid;
    min-height: 360px;
    place-items: center;
}

.part-tensile-summary-card[b-6u09ev518p] {
    background: var(--nxs-shadow);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    padding: 1rem;
}

.part-tensile-summary-title[b-6u09ev518p] {
    color: var(--nxs-text);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.1;
    margin-top: 0.45rem;
}

.part-tensile-summary-subtitle[b-6u09ev518p],
.part-tensile-summary-caption[b-6u09ev518p] {
    color: var(--nxs-text-subtle);
    font-size: 0.95rem;
    font-weight: 600;
}

.part-tensile-summary-value[b-6u09ev518p] {
    color: var(--nxs-info);
    font-size: 3.8rem;
    font-weight: 700;
    line-height: 1;
    margin: 1rem 0 0.25rem;
}

.part-tensile-link[b-6u09ev518p],
.part-tensile-link:visited[b-6u09ev518p],
.part-tensile-link:link[b-6u09ev518p] {
    color: var(--nxs-accent-bright);
    font-weight: 600;
    text-decoration: none;
}

.part-tensile-link:hover[b-6u09ev518p] {
    color: var(--nxs-accent-bright);
    text-decoration: underline;
}

.part-tensile-empty-state[b-6u09ev518p] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

.part-fatigue-dashboard[b-6u09ev518p] {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(16rem, 28rem) minmax(0, 1fr);
    width: 100%;
}

.part-fatigue-summary-column[b-6u09ev518p],
.part-fatigue-groups[b-6u09ev518p] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.part-fatigue-card-group[b-6u09ev518p] {
    background: var(--nxs-shadow);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    padding: 1rem;
}

.part-fatigue-group-title[b-6u09ev518p] {
    color: var(--nxs-text-body);
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 0.85rem;
}

.part-fatigue-field-grid[b-6u09ev518p] {
    display: grid;
    gap: 0.8rem;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
}

.part-fatigue-value-card[b-6u09ev518p] {
    align-items: center;
    background: var(--nxs-overlay-3);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    display: grid;
    gap: 0.3rem 0.75rem;
    grid-template-columns: minmax(0, 1fr) auto;
    min-height: 4.4rem;
    padding: 0.8rem;
}

.part-fatigue-value-card--wide[b-6u09ev518p] {
    grid-column: 1 / -1;
}

.part-fatigue-value-label[b-6u09ev518p] {
    color: var(--nxs-text-subtle);
    font-size: 0.75rem;
    font-weight: 700;
    grid-column: 1 / -1;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.part-fatigue-value-main[b-6u09ev518p] {
    color: var(--nxs-text);
    font-size: 0.96rem;
    font-weight: 600;
    min-width: 0;
    overflow-wrap: anywhere;
}

[b-6u09ev518p] .fatigue-calculated-value {
    align-items: center;
    color: var(--nxs-accent);
    display: inline-flex;
    justify-self: end;
}

@media (max-width: 1200px) {
    .part-fatigue-dashboard[b-6u09ev518p] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewGomTab.razor.rz.scp.css */
.gom-dashboard-root[b-37z18frkk8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.gom-grid-panel[b-37z18frkk8] {
    width: 100%;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.gom-grid-shell[b-37z18frkk8] {
    min-height: 0;
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.gom-grid-panel[b-37z18frkk8]  .measurement-header-label,
.gom-detail-title[b-37z18frkk8],
.gom-artifact-label[b-37z18frkk8] {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.gom-grid-panel[b-37z18frkk8]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.gom-empty-state[b-37z18frkk8] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

.gom-detail-panel[b-37z18frkk8] {
    margin-top: 0.75rem;
}

.gom-detail-header[b-37z18frkk8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.8rem;
}

.gom-detail-title[b-37z18frkk8] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.gom-detail-date[b-37z18frkk8] {
    font-size: 0.9rem;
    font-weight: 500;
    color: rgba(230, 230, 230, 0.78);
}

.gom-detail-grid-shell[b-37z18frkk8] {
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

.imputed-warning-icon[b-37z18frkk8] {
    margin-left: 0.3rem;
    color: var(--bs-warning);
    vertical-align: middle;
}

.gom-artifact-viewer[b-37z18frkk8] {
    width: 100%;
    margin-top: 1rem;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.gom-artifact-tab-body[b-37z18frkk8] {
    width: 100%;
    min-height: 20rem;
    position: relative;
    overflow: visible;
}

.gom-artifact-empty[b-37z18frkk8] {
    min-height: 8rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gom-histogram-dialog-content[b-37z18frkk8] {
    position: relative;
    height: 70vh;
    overflow: auto;
    padding: 0.5rem;
}

.gom-histogram-loading[b-37z18frkk8] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gom-histogram-spacing[b-37z18frkk8] {
    height: 1rem;
}

@media (max-width: 1200px) {
    .gom-artifact-tab-body[b-37z18frkk8] {
        min-height: 16rem;
    }
}

@media (max-width: 720px) {
    .gom-detail-header[b-37z18frkk8] {
        align-items: stretch;
        flex-direction: column;
    }

    /* ::deep — the class sits on the NxsSearchField component root. */
    .gom-detail-header[b-37z18frkk8]  .gom-dimension-search {
        width: 100%;
        flex: 1 1 auto;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewHardnessTab.razor.rz.scp.css */
.part-hardness-tab[b-c4wrgfbifr] {
    display: grid;
    gap: var(--nxs-space-24);
}

.part-hardness-tab__header[b-c4wrgfbifr],
.part-hardness-tab__detail-header[b-c4wrgfbifr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    flex-wrap: wrap;
}

.part-hardness-tab__detail[b-c4wrgfbifr] {
    display: grid;
    gap: var(--nxs-space-16);
}
/* /Pages/Builds/Build/Parts/Part/PartViewHeatTreatmentTab.razor.rz.scp.css */
.ht-dashboard-root[b-zubfw75ljl] {
    display: block;
    width: 100%;
}

.ht-dashboard-grid[b-zubfw75ljl] {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 30%) minmax(0, 1fr);
    width: 100%;
}

.ht-report-panel[b-zubfw75ljl],
.ht-chart-panel[b-zubfw75ljl] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
    box-shadow: 0 6px 14px var(--nxs-shadow);
}

.ht-report-panel[b-zubfw75ljl] {
    background: var(--nxs-overlay-subtle);
}

.ht-chart-panel[b-zubfw75ljl] {
    background: var(--nxs-surface);
    overflow: hidden;
}

.ht-kpi-grid[b-zubfw75ljl] {
    display: grid;
    gap: 0.55rem;
    grid-template-columns: 1fr;
    margin-top: 1rem;
}

.ht-kpi-card[b-zubfw75ljl] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-shadow);
    padding: 0.7rem;
}

.ht-kpi-label[b-zubfw75ljl] {
    display: block;
    font-size: 0.75rem;
    opacity: 0.7;
    margin-bottom: 0.25rem;
}

.ht-kpi-value[b-zubfw75ljl] {
    font-size: 0.95rem;
    font-weight: 600;
}

.ht-failure-reasons[b-zubfw75ljl] {
    color: var(--nxs-danger-text);
    font-size: 0.78rem;
    line-height: 1.35;
    margin-top: 0.45rem;
}

.ht-failure-reasons-label[b-zubfw75ljl] {
    font-weight: 600;
    margin-right: 0.25rem;
}

.ht-build-bubbles[b-zubfw75ljl] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.ht-build-bubble[b-zubfw75ljl] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--nxs-radius-pill);
    border: 1px solid var(--nxs-accent);
    background: var(--nxs-accent-20);
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    padding: 0.32rem 0.55rem;
    transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

.ht-build-bubble[b-zubfw75ljl],
.ht-build-bubble:link[b-zubfw75ljl],
.ht-build-bubble:visited[b-zubfw75ljl] {
    color: var(--nxs-accent-bright) !important;
}

.ht-build-bubble:hover[b-zubfw75ljl] {
    color: var(--nxs-accent-bright);
    border-color: var(--nxs-accent-bright);
    background: var(--nxs-accent-30);
}

.ht-report-panel[b-zubfw75ljl]  .measurement-header-label,
.ht-chart-meta[b-zubfw75ljl],
.ht-report-label[b-zubfw75ljl] {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.ht-chart-meta[b-zubfw75ljl] {
    margin-bottom: 0.8rem;
}

.ht-report-panel[b-zubfw75ljl]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.ht-empty-state[b-zubfw75ljl] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

.ht-chart-panel[b-zubfw75ljl]  .js-plotly-plot,
.ht-chart-panel[b-zubfw75ljl]  .plot-container,
.ht-chart-panel[b-zubfw75ljl]  .svg-container {
    background: var(--nxs-surface) !important;
    box-shadow: none !important;
}

.ht-chart-panel[b-zubfw75ljl]  .js-plotly-plot {
    width: 100% !important;
}

.ht-chart-panel[b-zubfw75ljl]  .plot-container,
.ht-chart-panel[b-zubfw75ljl]  .svg-container {
    max-width: 100% !important;
}

.ht-report-viewer[b-zubfw75ljl] {
    width: 100%;
    margin-top: 1rem;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
    box-shadow: 0 6px 14px var(--nxs-shadow);
}

.ht-report-label[b-zubfw75ljl] {
    margin-bottom: 0.8rem;
}

.ht-report-body[b-zubfw75ljl] {
    width: 100%;
    position: relative;
    overflow: visible;
}

.ht-report-viewer[b-zubfw75ljl]  .k-pdf-viewer-canvas > .k-search-panel,
.ht-report-viewer[b-zubfw75ljl]  .k-pdf-viewer-canvas > .k-search-container,
.ht-report-viewer[b-zubfw75ljl]  .k-notification-group {
    z-index: 2000;
}

@media (max-width: 1200px) {
    .ht-dashboard-grid[b-zubfw75ljl] {
        grid-template-columns: 1fr;
        width: 100%;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewOverviewTab.razor.rz.scp.css */
.part-overview-viewport[b-fpf8pvk67j] {
    position: relative;
    width: 100%;
    min-width: 0;
}

.part-overview-viewport[b-fpf8pvk67j]::before,
.part-overview-viewport[b-fpf8pvk67j]::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 1.05rem;
    width: 3.5rem;
    pointer-events: none;
    z-index: 3;
    opacity: 0;
    transition: opacity 120ms ease;
}

.part-overview-viewport[b-fpf8pvk67j]::before {
    left: 0;
    /* Match the card's rounded top corner — the fade now sits flush in the corner (card padding is
       zeroed for the edge-to-edge scrollbar), so a square corner would poke past the rounding. */
    border-top-left-radius: var(--nxs-radius-lg);
    /* Fade to the card surface (--nxs-surface-raised, #1a1a1a) rather than the page bg, so the
       overflow fade blends into the NxsCard the timeline now sits in instead of leaving a seam. */
    background: linear-gradient(90deg, var(--nxs-surface-raised) 0%, rgba(26, 26, 26, 0.82) 38%, rgba(26, 26, 26, 0) 100%);
}

.part-overview-viewport[b-fpf8pvk67j]::after {
    right: 0;
    border-top-right-radius: var(--nxs-radius-lg);
    background: linear-gradient(270deg, var(--nxs-surface-raised) 0%, rgba(26, 26, 26, 0.82) 38%, rgba(26, 26, 26, 0) 100%);
}

.part-overview-viewport.part-overview-viewport--show-left-shadow[b-fpf8pvk67j]::before {
    opacity: 1;
}

.part-overview-viewport.part-overview-viewport--show-right-shadow[b-fpf8pvk67j]::after {
    opacity: 1;
}

.part-overview-scroll[b-fpf8pvk67j] {
    overflow-x: auto;
    overflow-y: hidden;
    /* No padding here: the scroll element fills the card so its scrollbar runs edge-to-edge along
       the bottom. The timeline's uniform inset lives on .part-overview-flow instead. */
    padding: 0;
}

.part-overview-flow[b-fpf8pvk67j] {
    /* Layout constants for the timeline (were inline magic numbers). Named by ROLE, not
       direction, so the future vertical orientation reuses them unchanged:
       lead = the alternating card track, spine = the node/line track, trail = the other card track.
       See docs/plans/part-overview-timeline-layout.md. */
    --overview-stage-width: 13.15rem;
    /* Gap between processes. In the grid this is a real column, so it isn't pulled back by the
       connector's overlap margin the way the old flex layout was — keep it small. */
    --overview-connector-width: 1rem;
    --overview-connector-overlap: 3.2rem;
    --overview-node-width: 8.6rem;
    --overview-node-min-height: 6.4rem;
    --overview-card-width: 11.9rem;
    --overview-card-offset: 4.95rem; /* node centre → card inner edge */
    --overview-card-tail: 3.55rem;   /* connecting tail from card to node */
    --overview-border-opacity: 0.58;
    --overview-hover-border-opacity: 0.95;
    --overview-connector-arrow-colour: color-mix(in srgb, var(--nxs-text) 75%, var(--nxs-surface));
    /* Gap between a card and the node. Offset minus half the node so the card's inner edge
       still lands --overview-card-offset from the centre line (for a default-height node). */
    --overview-card-gap: calc(var(--overview-card-offset) - var(--overview-node-min-height) / 2);

    position: relative;
    display: grid;
    grid-auto-flow: column;
    /* Columns alternate stage / connector; the 2-value list repeats across all columns. */
    grid-auto-columns: var(--overview-stage-width) var(--overview-connector-width);
    /* Three SHARED tracks: lead card / spine (nodes + line) / trail card. Each stage is a
       subgrid over these, so the lead and trail rows size to the tallest card in their row
       and every node lands on the shared spine — no guessed height, nothing clips. The
       vertical orientation transposes rows↔columns (see the --vertical stub below). */
    grid-template-rows: auto auto auto;
    row-gap: var(--overview-card-gap);
    justify-content: center;
    min-width: 100%;
    width: max-content;
    /* Single, uniform inset for the whole timeline now that the card + scroll wrappers are zeroed —
       keeps spacing consistent on all sides while the scrollbar stays edge-to-edge at the bottom. */
    padding: var(--nxs-space-24);
}

/* Vertical orientation — groundwork stub, intentionally empty. To implement: flip to
   grid-auto-flow: row; move the alternating widths to grid-auto-rows; turn grid-template-rows
   into grid-template-columns (lead = left, spine = middle, trail = right); set
   column-gap: var(--overview-card-gap); and rotate the connector arrow.
   See docs/plans/part-overview-timeline-layout.md. */
.part-overview-flow--vertical[b-fpf8pvk67j] {
    /* vertical layout is a later pickup */
}

.part-overview-stage[b-fpf8pvk67j] {
    --overview-stage-accent: #ffffff;
    --overview-stage-rgb: 255 255 255;
    --overview-stage-accent-soft: rgb(var(--overview-stage-rgb) / 0.45);
    --overview-hover-border: rgb(var(--overview-stage-rgb) / var(--overview-hover-border-opacity));
    --overview-card-border: rgb(var(--overview-stage-rgb) / var(--overview-border-opacity));
    --overview-card-fill-strong: rgb(var(--overview-stage-rgb) / 0.075);
    --overview-card-fill-soft: rgb(var(--overview-stage-rgb) / 0.02);
    --overview-node-border: var(--overview-card-border);
    --overview-node-fill-strong: rgb(var(--overview-stage-rgb) / 0.03);
    --overview-node-fill-soft: rgb(var(--overview-stage-rgb) / 0.01);
    --overview-card-base-top: var(--nxs-surface-raised);
    --overview-card-base-bottom: #0c0c0c;
    --overview-callout-fill-strong: rgb(var(--overview-stage-rgb) / 0.042);
    --overview-callout-fill-soft: rgb(var(--overview-stage-rgb) / 0.012);
    --overview-callout-base-top: var(--nxs-surface-raised);
    --overview-callout-base-bottom: #0d0d0d;
    --overview-pill-pass-fill-strong: rgb(159 226 167 / 0.13);
    --overview-pill-pass-fill-soft: rgb(159 226 167 / 0.04);
    --overview-pill-pass-base-top: #243c2b;
    --overview-pill-pass-base-bottom: #18251c;
    --overview-pill-fail-fill-strong: rgb(255 178 143 / 0.13);
    --overview-pill-fail-fill-soft: rgb(255 178 143 / 0.04);
    --overview-pill-fail-base-top: #4a2b22;
    --overview-pill-fail-base-bottom: #311c16;
    --overview-stage-muted: rgb(var(--overview-stage-rgb) / 0.56);
    --overview-stage-subtle: rgb(var(--overview-stage-rgb) / 0.38);
    position: relative;
    grid-row: 1 / -1;            /* span lead / spine / trail */
    display: grid;
    grid-template-rows: subgrid; /* share the parent's three tracks */
    justify-items: center;
    color: inherit;
    text-decoration: none;
}

.part-overview-stage--interactive[b-fpf8pvk67j] {
    cursor: pointer;
}

.part-overview-connector[b-fpf8pvk67j] {
    grid-row: 2;            /* spine */
    align-self: center;     /* sit on the centre line */
    display: flex;
    align-items: center;
    z-index: 0;
    margin: 0 calc(-1 * var(--overview-connector-overlap)); /* overlap under adjacent nodes */
    overflow: visible;
}

.part-overview-connector span[b-fpf8pvk67j] {
    width: 100%;
    height: 1.5px;
    background: var(--overview-connector-arrow-colour);
    position: relative;
    overflow: visible;
}

.part-overview-connector span[b-fpf8pvk67j]::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 0;
    height: 0;
    border-top: 0.2025rem solid transparent;
    border-bottom: 0.2025rem solid transparent;
    border-left: 0.6075rem solid var(--overview-connector-arrow-colour);
    filter: drop-shadow(0 0 3px rgba(255, 255, 255, 0.22));
    transform: translate(-50%, -50%);
    z-index: 2;
}

.part-overview-node[b-fpf8pvk67j] {
    grid-row: 2;            /* spine */
    justify-self: center;
    position: relative;
    z-index: 2;
    width: var(--overview-node-width);
    min-height: var(--overview-node-min-height);
    padding: 0.85rem 0.9rem 0.8rem;
    border-radius: var(--nxs-radius-lg);
    border: 1px solid var(--overview-node-border);
    background: linear-gradient(180deg, var(--overview-node-fill-strong), var(--overview-node-fill-soft)),
        linear-gradient(180deg, var(--overview-card-base-top), var(--overview-card-base-bottom));
    box-shadow: inset 0 1px 0 var(--nxs-overlay-subtle);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: var(--nxs-space-4);
    text-align: center;
    color: var(--overview-stage-accent);
    transition: transform 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.part-overview-node[b-fpf8pvk67j]  .part-process-icon {
    width: 1.38rem;
    height: 1.38rem;
    color: inherit;
    opacity: 0.82;
    filter: saturate(0.92);
    flex: 0 0 auto;
}

.part-overview-node[b-fpf8pvk67j]  .part-process-icon svg {
    display: block;
    width: 100%;
    height: 100%;
}

.part-overview-stage--interactive:hover .part-overview-node[b-fpf8pvk67j] {
    transform: scale(1.02);
    border-color: var(--overview-hover-border);
}

.part-overview-stage--interactive:hover .part-overview-callout[b-fpf8pvk67j] {
    border-color: var(--overview-hover-border);
    box-shadow: inset 0 1px 0 var(--nxs-overlay-subtle),
        inset 0 28px 56px rgba(var(--overview-stage-rgb) / 0.03);
}

.part-overview-stage--interactive:hover .part-overview-callout[b-fpf8pvk67j]::after {
    background: var(--overview-hover-border);
}

.part-overview-node-title[b-fpf8pvk67j] {
    font-size: 0.9rem;
    font-weight: 550;
    line-height: 1.25;
    color: var(--overview-stage-accent);
    max-width: 100%;
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    white-space: normal;
    overflow-wrap: normal;
    word-break: normal;
    text-wrap: balance;
}

.part-overview-node-date[b-fpf8pvk67j] {
    margin-top: 0;
    font-size: 0.6rem;
    line-height: 1.1;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--overview-stage-subtle);
    white-space: nowrap;
    font-weight: 450;
}

.part-overview-callout[b-fpf8pvk67j] {
    position: relative;
    z-index: 1;
    justify-self: center;
    width: var(--overview-card-width);
    padding: var(--nxs-space-16) var(--nxs-space-16) var(--nxs-space-16);
    border-radius: var(--nxs-radius-lg);
    border: 1px solid var(--overview-card-border);
    background: linear-gradient(180deg, var(--overview-callout-fill-strong), var(--overview-callout-fill-soft)),
        linear-gradient(180deg, var(--overview-callout-base-top), var(--overview-callout-base-bottom));
    box-shadow: inset 0 1px 0 var(--nxs-overlay-subtle),
        inset 0 24px 48px rgba(var(--overview-stage-rgb) / 0.022);
}

.part-overview-stage--lead .part-overview-callout[b-fpf8pvk67j] {
    grid-row: 1;          /* lead track */
    align-self: end;      /* bottom edge toward the node */
}

.part-overview-stage--trail .part-overview-callout[b-fpf8pvk67j] {
    grid-row: 3;          /* trail track */
    align-self: start;    /* top edge toward the node */
}

.part-overview-stage--lead .part-overview-callout[b-fpf8pvk67j]::after,
.part-overview-stage--trail .part-overview-callout[b-fpf8pvk67j]::after {
    content: "";
    position: absolute;
    left: calc(50% - 1px);
    width: 1.5px;
    height: var(--overview-card-tail);
    background: var(--overview-card-border);
    transition: background-color 120ms ease;
}

.part-overview-stage--lead .part-overview-callout[b-fpf8pvk67j]::after {
    top: calc(100% + 1px);
}

.part-overview-stage--trail .part-overview-callout[b-fpf8pvk67j]::after {
    bottom: calc(100% + 1px);
}

.part-overview-empty[b-fpf8pvk67j] {
    padding: var(--nxs-space-16) 0;
    color: var(--nxs-text-subtle);
}
/* /Pages/Builds/Build/Parts/Part/PartViewSurfaceRoughnessTab.razor.rz.scp.css */
.roughness-dashboard-root[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.roughness-grid-panel[b-42s4mxbgql] {
    width: 100%;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.roughness-layout[b-42s4mxbgql] {
    display: grid;
    grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
    gap: 1.1rem;
    margin-top: 1rem;
    align-items: stretch;
}

.roughness-selector-panel[b-42s4mxbgql],
.roughness-measurement-panel[b-42s4mxbgql] {
    min-width: 0;
    display: flex;
}

.roughness-selector-shell[b-42s4mxbgql],
.roughness-measurement-shell[b-42s4mxbgql] {
    position: relative;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-overlay-subtle);
    flex: 1 1 auto;
}

.roughness-selector-shell[b-42s4mxbgql],
.roughness-measurement-shell[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
}

.roughness-selector-shell__summary[b-42s4mxbgql] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    padding: 18px 20px;
    border-bottom: 1px solid var(--nxs-overlay-hover);
    border-top-left-radius: 0.5rem;
    border-top-right-radius: 0.5rem;
    background: linear-gradient(180deg, rgba(16, 16, 16, 0.96), rgba(18, 18, 18, 0.94));
}

.roughness-selector-shell__summary-item[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.roughness-selector-shell__summary-label[b-42s4mxbgql],
.roughness-selector-shell__field-label[b-42s4mxbgql],
.roughness-selector-shell__hero-label[b-42s4mxbgql],
.roughness-selector-shell__detail-label[b-42s4mxbgql],
.roughness-measurement-shell__eyebrow[b-42s4mxbgql],
.roughness-measurement-shell__card-label[b-42s4mxbgql] {
    color: var(--nxs-text-muted);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.roughness-selector-shell__summary-value[b-42s4mxbgql] {
    font-size: 1.9rem;
    line-height: 1;
    font-weight: 800;
    color: var(--nxs-text);
}

.roughness-selector-shell__body[b-42s4mxbgql],
.roughness-measurement-shell[b-42s4mxbgql] {
    padding: 18px 20px 20px;
}

.roughness-selector-shell__body[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.roughness-measurement-shell[b-42s4mxbgql] {
    gap: 16px;
}

.roughness-selector-shell__field[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.roughness-selector-shell__dropdown[b-42s4mxbgql] {
    width: 100%;
}

.roughness-selector-shell__hero[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 16px 18px;
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-shadow);
}

.roughness-selector-shell__hero-title[b-42s4mxbgql],
.roughness-measurement-shell__title[b-42s4mxbgql] {
    color: var(--nxs-text);
    font-size: 1.45rem;
    font-weight: 800;
    line-height: 1.1;
}

.roughness-selector-shell__hero-subtitle[b-42s4mxbgql],
.roughness-measurement-shell__subtitle[b-42s4mxbgql] {
    color: var(--nxs-text-subtle);
    font-size: 0.98rem;
    font-weight: 600;
}

.roughness-measurement-shell__header[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.roughness-measurement-shell__hero[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.1rem;
    border: 1px solid var(--nxs-info-20);
    border-radius: var(--nxs-radius-md);
    background: linear-gradient(180deg, rgba(103, 213, 255, 0.08), rgba(103, 213, 255, 0.02));
}

.roughness-measurement-shell__hero-value[b-42s4mxbgql] {
    color: var(--nxs-info);
    font-size: clamp(2.5rem, 6vw, 4.25rem);
    font-weight: 700;
    line-height: 1;
}

.roughness-measurement-shell__hero-value span[b-42s4mxbgql] {
    color: var(--nxs-text-subtle);
    font-size: 1rem;
    font-weight: 600;
    margin-left: 0.35rem;
}

.roughness-measurement-shell__hero-caption[b-42s4mxbgql] {
    color: var(--nxs-text-subtle);
    font-size: 0.95rem;
    font-weight: 600;
}

.roughness-selector-shell__details[b-42s4mxbgql],
.roughness-measurement-shell__grid[b-42s4mxbgql] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
}

.roughness-selector-shell__detail-card[b-42s4mxbgql],
.roughness-measurement-shell__card[b-42s4mxbgql] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.9rem 1rem;
    border: 1px solid var(--nxs-overlay-subtle);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-shadow);
}

.roughness-measurement-shell__card--accent[b-42s4mxbgql] {
    background: var(--nxs-info-8);
    border-color: var(--nxs-info-20);
}

.roughness-selector-shell__detail-value[b-42s4mxbgql],
.roughness-measurement-shell__card-value[b-42s4mxbgql] {
    color: var(--nxs-text);
    font-size: 1rem;
    font-weight: 600;
}

.roughness-selector-shell__empty[b-42s4mxbgql] {
    display: grid;
    place-items: center;
    flex: 1 1 auto;
    min-height: 180px;
    padding: 24px;
    border: 1px dashed var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    text-align: center;
    color: var(--nxs-text-body);
}

.roughness-grid-panel[b-42s4mxbgql]  .measurement-header-label {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.roughness-grid-panel[b-42s4mxbgql]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.roughness-empty-state[b-42s4mxbgql] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

@media (max-width: 1100px) {
    .roughness-layout[b-42s4mxbgql] {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 720px) {
    .roughness-grid-panel[b-42s4mxbgql],
    .roughness-selector-shell[b-42s4mxbgql],
    .roughness-measurement-shell[b-42s4mxbgql] {
        padding: 0.9rem;
    }

    .roughness-selector-shell__details[b-42s4mxbgql],
    .roughness-measurement-shell__grid[b-42s4mxbgql] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewTensileTab.razor.rz.scp.css */
.part-tensile-dashboard-root[b-63urjkx8g4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

.part-tensile-grid-panel[b-63urjkx8g4] {
    width: 100%;
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.part-tensile-header[b-63urjkx8g4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.part-tensile-title[b-63urjkx8g4],
.part-tensile-chart-meta[b-63urjkx8g4] {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.part-tensile-grid-panel[b-63urjkx8g4]  .measurement-header-label {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.part-tensile-grid-panel[b-63urjkx8g4]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.part-tensile-measurement-grid-shell[b-63urjkx8g4] {
    min-height: 0;
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
    margin-bottom: 1rem;
}

.part-tensile-measurements-table[b-63urjkx8g4] {
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
    background: var(--nxs-surface);
}

.part-tensile-measurements-table[b-63urjkx8g4]  .mud-table-root {
    box-shadow: none !important;
}

.part-tensile-measurements-table[b-63urjkx8g4]  .mud-table-head {
    background: var(--nxs-surface);
}

.part-tensile-measurements-table[b-63urjkx8g4]  .mud-table-container {
    background: var(--nxs-surface);
}

.part-tensile-measurements-table[b-63urjkx8g4]  table {
    background: var(--nxs-surface);
}

.part-tensile-measurements-table[b-63urjkx8g4]  thead th {
    color: var(--nxs-text-subtle);
    font-weight: 600;
    border-bottom: 1px solid var(--nxs-overlay-hover);
    background: var(--nxs-surface);
}

.part-tensile-measurements-table[b-63urjkx8g4]  tbody td {
    border-color: var(--nxs-overlay-hover) !important;
    background: var(--nxs-surface);
}

.part-tensile-detail-panel[b-63urjkx8g4] {
    margin-top: 0.75rem;
}

.part-tensile-detail-header[b-63urjkx8g4] {
    margin-bottom: 0.8rem;
}

.part-tensile-detail-title[b-63urjkx8g4] {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    flex-wrap: wrap;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--nxs-text);
}

.part-tensile-detail-date[b-63urjkx8g4] {
    color: var(--nxs-text-muted);
    font-size: 0.92rem;
    font-weight: 500;
}

.part-tensile-dashboard-grid[b-63urjkx8g4] {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 30%) minmax(0, 1fr);
    width: 100%;
}

.part-tensile-summary-panel[b-63urjkx8g4],
.part-tensile-chart-panel[b-63urjkx8g4] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.part-tensile-summary-panel[b-63urjkx8g4] {
    background: var(--nxs-overlay-subtle);
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}

.part-tensile-chart-panel[b-63urjkx8g4] {
    background: var(--nxs-info-bg);
    overflow: hidden;
    min-height: 28rem;
}

.part-tensile-summary-card[b-63urjkx8g4] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-shadow);
    padding: 1rem;
}

.part-tensile-summary-title[b-63urjkx8g4] {
    color: var(--nxs-text);
    font-size: 1.8rem;
    font-weight: 700;
    line-height: 1.1;
    margin-top: 0.45rem;
}

.part-tensile-summary-subtitle[b-63urjkx8g4],
.part-tensile-summary-caption[b-63urjkx8g4] {
    color: var(--nxs-text-subtle);
    font-size: 0.95rem;
    font-weight: 600;
}

.part-tensile-summary-value[b-63urjkx8g4] {
    color: var(--nxs-info);
    font-size: 3.8rem;
    font-weight: 700;
    line-height: 1;
    margin: 1rem 0 0.25rem;
}

.part-tensile-summary-value span[b-63urjkx8g4] {
    color: var(--nxs-text-subtle);
    font-size: 1rem;
    font-weight: 700;
    margin-left: 0.35rem;
}

.part-tensile-kpi-grid[b-63urjkx8g4] {
    display: grid;
    gap: 0.8rem;
    grid-template-columns: 1fr;
}

.part-tensile-kpi-card[b-63urjkx8g4] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-shadow);
    padding: 0.8rem;
}

.part-tensile-kpi-label[b-63urjkx8g4] {
    display: block;
    color: var(--nxs-text-subtle);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    margin-bottom: 0.3rem;
    text-transform: uppercase;
}

.part-tensile-kpi-value[b-63urjkx8g4] {
    color: var(--nxs-text);
    font-size: 0.96rem;
    font-weight: 600;
}

.part-tensile-link[b-63urjkx8g4],
.part-tensile-link:visited[b-63urjkx8g4],
.part-tensile-link:link[b-63urjkx8g4] {
    color: var(--nxs-accent-bright);
    font-weight: 600;
    text-decoration: none;
}

.part-tensile-link:hover[b-63urjkx8g4] {
    color: var(--nxs-accent-bright);
    text-decoration: underline;
}

.part-tensile-empty-state[b-63urjkx8g4] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

.part-tensile-chart-panel[b-63urjkx8g4]  .js-plotly-plot,
.part-tensile-chart-panel[b-63urjkx8g4]  .plot-container,
.part-tensile-chart-panel[b-63urjkx8g4]  .svg-container {
    background: var(--nxs-info-bg) !important;
    box-shadow: none !important;
}

.part-tensile-chart-panel[b-63urjkx8g4]  .js-plotly-plot {
    width: 100% !important;
}

.part-tensile-chart-panel[b-63urjkx8g4]  .plot-container,
.part-tensile-chart-panel[b-63urjkx8g4]  .svg-container {
    max-width: 100% !important;
}

@media (max-width: 1200px) {
    .part-tensile-dashboard-grid[b-63urjkx8g4] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Builds/Build/Parts/Part/PartViewTumblingTab.razor.rz.scp.css */
.tb-dashboard-root[b-89jivwne5b] {
    display: block;
    width: 100%;
}

.tb-loader[b-89jivwne5b] {
    display: flex;
    justify-content: center;
    padding: 2rem 0;
}

.tb-cycle-tabstrip[b-89jivwne5b] {
    width: 100%;
}

.tb-dashboard-grid[b-89jivwne5b] {
    display: grid;
    gap: 1rem;
    grid-template-columns: minmax(0, 30%) minmax(0, 1fr);
    width: 100%;
}

.tb-data-panel[b-89jivwne5b],
.tb-chart-panel[b-89jivwne5b] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    padding: 1rem;
}

.tb-data-panel[b-89jivwne5b] {
    background: var(--nxs-overlay-subtle);
}

.tb-chart-panel--empty[b-89jivwne5b] {
    background: var(--nxs-overlay-subtle);
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-lg);
    min-height: 100%;
    padding: 1rem;
}

.tb-kpi-grid[b-89jivwne5b] {
    display: grid;
    gap: 0.55rem;
    grid-template-columns: 1fr;
    margin-top: 1rem;
}

.tb-kpi-card[b-89jivwne5b] {
    border: 1px solid var(--nxs-overlay-hover);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-shadow);
    padding: 0.7rem;
}

.tb-kpi-label[b-89jivwne5b] {
    display: block;
    font-size: 0.75rem;
    opacity: 0.7;
    margin-bottom: 0.25rem;
}

.tb-kpi-value[b-89jivwne5b] {
    font-size: 0.95rem;
    font-weight: 600;
}

.tb-data-panel[b-89jivwne5b]  .measurement-header-label {
    color: var(--nxs-text-body);
    font-size: 1.125rem;
    font-weight: 600;
    line-height: 1.2;
}

.tb-data-panel[b-89jivwne5b]  .measurement-header .retrigger-button {
    margin-bottom: 0.35rem;
}

.tb-empty-state[b-89jivwne5b] {
    margin: 1rem 0 0;
    opacity: 0.8;
}

@media (max-width: 1200px) {
    .tb-dashboard-grid[b-89jivwne5b] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/ComponentVersions/ComponentVersionView.razor.rz.scp.css */
.window-white-outline[b-gk9trfz6wa] {
    border: 1px solid var(--nxs-border);
}

.component-tabs[b-gk9trfz6wa] {
    position: relative;
}

.component-tabs-content[b-gk9trfz6wa] {
    margin-top: var(--nxs-space-16);
}

/* SPC tab — dashboard composition. The tab renders as a flat stack on the page
   background: a compact profile summary strip, then the machine-health tiles, the
   KPI overview grid, and the configuration accordions. The stack owns the vertical
   rhythm; panels own only their internal padding. Status pills and copy live on
   plain page-owned elements: page-scoped classes set on child components (MudText,
   NxsChip, NxsCard) never receive the isolation attribute and silently fail. */
.component-spc-dashboard[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    min-width: 0;
}

.component-spc-settings-modal[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-24);
    min-width: 0;
}

.component-spc-settings-modal__actions[b-gk9trfz6wa] {
    padding-top: var(--nxs-space-16);
    border-top: 1px solid var(--nxs-divider);
}

/* Loading / failed states for the profile, setup-options, and dashboard loads. */
.component-spc-state-panel[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: var(--nxs-space-12);
    min-height: 10rem;
    padding: var(--nxs-space-24);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface);
}

.component-spc-state-panel--centered[b-gk9trfz6wa] {
    align-items: center;
    text-align: center;
}

.component-spc-state-panel__title[b-gk9trfz6wa] {
    margin: 0;
    color: var(--nxs-text);
    font-size: 1.05rem;
    font-weight: 700;
}

.component-spc-state-panel__actions[b-gk9trfz6wa] {
    display: flex;
    gap: var(--nxs-space-12);
}

/* Profile summary — one compact strip: state title (+ short description) left,
   fact chips and the saving indicator right. */
/* Dashboard sections — a heading row instead of a wrapping card. */
.component-spc-section[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    min-width: 0;
}

.component-spc-section__header[b-gk9trfz6wa] {
    display: flex;
    align-items: baseline;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

.component-spc-section__title[b-gk9trfz6wa] {
    margin: 0;
    color: var(--nxs-text);
    font-size: 1.05rem;
    font-weight: 700;
}

.component-spc-section__hint[b-gk9trfz6wa] {
    margin: 0;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.5;
}

/* Machine-health tiles — inset wells against the page background with a semantic
   accent edge; the icon repeats the state colour and the label carries the text
   (never colour alone). */
.component-spc-health-summary[b-gk9trfz6wa] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--nxs-space-8);
}

/* The tiles are NxsCards (edge colour comes from the global .nxs-card--edge-*
   variants in app.css), so the sizing and inset-surface overrides must cross the
   isolation boundary via ::deep. The extra .nxs-card in the selector out-ranks the
   base .mud-paper.nxs-card chrome, which loads after the scoped bundle. */
.component-spc-health-summary[b-gk9trfz6wa]  .nxs-card.component-spc-health-card {
    display: grid;
    grid-template-areas:
        "header count"
        "description count";
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: var(--nxs-space-12);
    row-gap: var(--nxs-space-2);
    padding: var(--nxs-space-12);
    background: var(--nxs-surface-inset);
}

.component-spc-health-card__header[b-gk9trfz6wa] {
    grid-area: header;
    display: flex;
    align-items: center;
    gap: var(--nxs-space-6);
    min-width: 0;
}

.component-spc-health-card__label[b-gk9trfz6wa] {
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.component-spc-health-card__count[b-gk9trfz6wa] {
    grid-area: count;
    align-self: center;
    color: var(--nxs-text);
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1;
}

.component-spc-health-card__description[b-gk9trfz6wa] {
    grid-area: description;
    margin: 0;
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.3;
}

/* MudIcon renders in child-component DOM, so the semantic icon colours must cross
   the isolation boundary via ::deep anchored on the page-owned dashboard root. */
.component-spc-dashboard[b-gk9trfz6wa]  .component-spc-health-icon--attention {
    color: var(--nxs-danger-text);
}

.component-spc-dashboard[b-gk9trfz6wa]  .component-spc-health-icon--monitoring {
    color: var(--nxs-warning);
}

.component-spc-dashboard[b-gk9trfz6wa]  .component-spc-health-icon--stable {
    color: var(--nxs-success-text);
}

.component-spc-copy[b-gk9trfz6wa] {
    margin: 0;
    color: var(--nxs-text-subtle);
    line-height: 1.5;
}

.component-spc-hint[b-gk9trfz6wa] {
    margin: 0;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.5;
}

/* Health cell: icon fixed to the left of the chip, one line, no wrapping. */
.component-spc-grid-chip-cell[b-gk9trfz6wa] {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-6);
    flex-wrap: nowrap;
    white-space: nowrap;
}

.component-spc-grid-text[b-gk9trfz6wa] {
    color: var(--nxs-text);
    line-height: 1.4;
}

.component-spc-grid-text--strong[b-gk9trfz6wa] {
    font-weight: 700;
}

.component-spc-grid-value-stack[b-gk9trfz6wa] {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--nxs-space-4);
}

/* Selected-KPI chart detail (in the NxsCard below the overview grid — the card
   owns the padding, this stack owns only the rhythm between chart sections). */
.component-spc-chart-detail[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.component-spc-chart-detail__machine-toggle[b-gk9trfz6wa] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-8);
    padding: var(--nxs-space-6) var(--nxs-space-8);
    color: var(--nxs-text-subtle);
}

.component-spc-chart-detail__machine-toggle-label[b-gk9trfz6wa] {
    color: var(--nxs-text);
    font-weight: 700;
}

.component-spc-chart-detail__machine-toggle-count[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
}

.component-spc-chart-detail__machine-sections[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

/* Configuration accordions and their fields */
.component-spc-form-sections[b-gk9trfz6wa]  .mud-expand-panel-content {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.component-spc-settings-grid[b-gk9trfz6wa] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-16);
    margin-top: var(--nxs-space-16);
}

.component-spc-settings-grid[b-gk9trfz6wa]  .nxs-autocomplete,
.component-spc-quick-start-list[b-gk9trfz6wa]  .nxs-autocomplete {
    min-width: 0;
    width: 100%;
}

.component-spc-chart-type-field[b-gk9trfz6wa] {
    min-width: 0;
    width: 100%;
}

.component-spc-chart-type-field[b-gk9trfz6wa]  .component-spc-chart-type-tooltip,
.component-spc-chart-type-field[b-gk9trfz6wa]  .nxs-form-field,
.component-spc-dashboard[b-gk9trfz6wa]  .component-spc-chart-type-option-tooltip {
    display: block;
    min-width: 0;
    width: 100%;
}

.component-spc-field[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.component-spc-monitoring-window[b-gk9trfz6wa] {
    gap: var(--nxs-space-12);
}

.component-spc-monitoring-window__fields[b-gk9trfz6wa] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-12);
}

.component-spc-panel__actions[b-gk9trfz6wa] {
    display: flex;
    justify-content: flex-start;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

/* Inset panels inside the accordions (quick start, no-dimension notice) —
   wells, not cards, so the accordion stays one visual surface. */
.component-spc-subpanel[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-16);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface-inset);
}

.component-spc-subpanel__title[b-gk9trfz6wa] {
    margin: 0;
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-md);
    font-weight: 700;
}

.component-spc-quick-start-list[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

@media (max-width: 900px) {
    .component-spc-settings-grid[b-gk9trfz6wa] {
        grid-template-columns: minmax(0, 1fr);
    }

    .component-spc-monitoring-window__fields[b-gk9trfz6wa] {
        grid-template-columns: minmax(0, 1fr);
    }

    .component-spc-health-summary[b-gk9trfz6wa] {
        grid-template-columns: minmax(0, 1fr);
    }

}

.component-title-link[b-gk9trfz6wa] {
    display: inline-flex;
    align-items: center;
    gap: var(--nxs-space-6);
    color: var(--nxs-accent);
    text-decoration: none;
    transition: color 120ms ease-in-out;
}

.component-title-link-text[b-gk9trfz6wa] {
    text-decoration: none;
}

.component-title-link:hover[b-gk9trfz6wa] {
    color: var(--nxs-info);
}

.component-title-link:focus-visible[b-gk9trfz6wa] {
    outline: 2px solid var(--nxs-accent);
    outline-offset: 3px;
    border-radius: var(--nxs-radius-sm);
}

.component-title-link-icon[b-gk9trfz6wa] {
    width: 13px;
    height: 13px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: inherit;
    opacity: 1;
}

.component-title-link-icon[b-gk9trfz6wa]  .mud-icon-root {
    width: 13px;
    height: 13px;
    font-size: 13px;
    line-height: 1;
}

.component-dashboard-part-number-input[b-gk9trfz6wa] {
    width: 100%;
}

/* MudBlazor disables textarea resizing by default; this filter benefits from vertical resizing. */
.component-dashboard-part-number-input[b-gk9trfz6wa]  textarea {
    resize: vertical !important;
    overflow: auto;
    min-height: auto;
}

.component-additional-measurement-section[b-gk9trfz6wa] {
    margin: var(--nxs-space-16) 0;
}

.component-surface-roughness-section[b-gk9trfz6wa] {
    --component-surface-roughness-panel-height: 560px;
    display: grid;
    gap: var(--nxs-space-16);
    grid-template-columns: minmax(240px, 0.8fr) minmax(0, 2.4fr);
    align-items: stretch;
}

.component-surface-roughness-section > .component-additional-measurement-section[b-gk9trfz6wa] {
    margin: 0;
}

.component-surface-roughness-selector-shell[b-gk9trfz6wa] {
    margin: 0;
    height: var(--component-surface-roughness-panel-height);
}

.component-surface-roughness-selector[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    height: 100%;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface);
    overflow: hidden;
}

.component-surface-roughness-selector__summary[b-gk9trfz6wa] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-16);
    padding: var(--nxs-space-20) var(--nxs-space-20);
    border-bottom: 1px solid var(--nxs-border);
    background: var(--nxs-surface);
}

.component-surface-roughness-selector__summary-item[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
}

.component-surface-roughness-selector__summary-label[b-gk9trfz6wa],
.component-surface-roughness-selector__detail-label[b-gk9trfz6wa],
.component-surface-roughness-selector__field-label[b-gk9trfz6wa],
.component-surface-roughness-selector__hero-label[b-gk9trfz6wa] {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--nxs-text-muted);
}

.component-surface-roughness-selector__summary-value[b-gk9trfz6wa] {
    font-size: 1.9rem;
    line-height: 1;
    font-weight: 800;
    color: var(--nxs-text);
}

.component-surface-roughness-selector__body[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    padding: var(--nxs-space-20) var(--nxs-space-20) var(--nxs-space-20);
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

.component-surface-roughness-selector__field[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.component-surface-roughness-selector__dropdown[b-gk9trfz6wa] {
    width: 100%;
}

.component-surface-roughness-selector__hero[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-4);
    padding: var(--nxs-space-16) var(--nxs-space-20);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface);
}

.component-surface-roughness-selector__hero-title[b-gk9trfz6wa] {
    font-size: 1.55rem;
    font-weight: 800;
    line-height: 1.1;
    color: var(--nxs-text);
}

.component-surface-roughness-selector__hero-subtitle[b-gk9trfz6wa] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--nxs-text-subtle);
}

.component-surface-roughness-selector__details[b-gk9trfz6wa] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--nxs-space-12);
}

.component-surface-roughness-selector__detail-card[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    min-height: 92px;
    padding: var(--nxs-space-16) var(--nxs-space-16);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface);
}

.component-surface-roughness-selector__detail-value[b-gk9trfz6wa] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--nxs-text);
}

.component-surface-roughness-selector__empty[b-gk9trfz6wa] {
    display: grid;
    place-items: center;
    flex: 1 1 auto;
    min-height: 180px;
    padding: var(--nxs-space-24);
    border: 1px dashed var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    text-align: center;
    color: var(--nxs-text-subtle);
}


.component-chart-window[b-gk9trfz6wa]  .k-window-content {
    display: grid;
    place-items: center;
    padding: var(--nxs-space-16);
}

.component-chart-window[b-gk9trfz6wa]  .k-window-content > * {
    width: 100%;
}

.component-filter-section[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
    min-width: 0;
}

.component-filter-section__header[b-gk9trfz6wa] {
    display: flex;
    gap: var(--nxs-space-16);
    align-items: center;
    justify-content: space-between;
}

.component-filter-section__header h6[b-gk9trfz6wa],
.component-filter-section > h6[b-gk9trfz6wa] {
    margin: 0;
}

.component-filter-section__header h6[b-gk9trfz6wa] {
    flex: 1 1 auto;
}

.component-filter-switch-row[b-gk9trfz6wa] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    min-width: 0;
}

.component-filter-date-stack[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.component-filter-date-row[b-gk9trfz6wa] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-12);
    align-items: center;
    min-width: 0;
}

.component-filter-date-mode[b-gk9trfz6wa] {
    min-width: 12rem;
}

.component-filter-date-value[b-gk9trfz6wa] {
    width: 6rem;
}

.component-filter-date-unit[b-gk9trfz6wa] {
    min-width: 8rem;
}

.component-filter-date-range-row[b-gk9trfz6wa] {
    display: flex;
    gap: var(--nxs-space-12);
    width: 100%;
    min-width: 0;
}

.component-filter-date-picker[b-gk9trfz6wa] {
    flex: 1 1 50%;
}

.component-filter-window-content[b-gk9trfz6wa]  .mud-input-control,
.component-filter-window-content[b-gk9trfz6wa]  .mud-input,
.component-filter-window-content[b-gk9trfz6wa]  .mud-select,
.component-filter-window-content[b-gk9trfz6wa]  .mud-input-root,
.component-filter-window-content[b-gk9trfz6wa]  .mud-input-outlined {
    min-width: 0;
}

.pob-warnings[b-gk9trfz6wa] {
    margin-top: var(--nxs-space-12);
}
.pob-warning[b-gk9trfz6wa] {
    display: flex;
    gap: var(--nxs-space-12);
    align-items: center;
    background: var(--nxs-danger-bg);
    border: #7a1a1a;
    color: var(--nxs-danger-strong);
    padding: var(--nxs-space-8) var(--nxs-space-12);
    border-radius: var(--nxs-radius-sm);
    margin-bottom: var(--nxs-space-6);
}

.pob-warning__content[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-6);
    width: 100%;
}

.pob-warning__row[b-gk9trfz6wa] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12);
}

.pob-warning__text[b-gk9trfz6wa] {
    flex: 1;
}

.pob-warning__toggle[b-gk9trfz6wa] {
    border: #7a1a1a;
    background: var(--nxs-danger-bg);
    color: var(--nxs-danger-strong);
    font-weight: 600;
    padding: var(--nxs-space-2) var(--nxs-space-8);
    border-radius: var(--nxs-radius-pill);
    cursor: pointer;
}

.pob-warning__toggle:hover[b-gk9trfz6wa],
.pob-warning__toggle:focus[b-gk9trfz6wa] {
    background: var(--nxs-danger-bg);
}

.pob-warning__list[b-gk9trfz6wa] {
    color: var(--nxs-danger-strong);
    font-size: inherit;
}

.gom-histogram-section[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    min-width: 0;
}

[b-gk9trfz6wa] .gom-histogram-chart-card {
    min-width: 0;
    display: flex;
    flex-direction: column;
    --nxs-drawer-panel-width: 22rem;
}

[b-gk9trfz6wa] .gom-histogram-chart-shell {
    width: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

[b-gk9trfz6wa] .gom-histogram-chart-shell--sized {
    height: var(--nxs-chart-height-md);
}

[b-gk9trfz6wa] .gom-histogram-chart-card .nxs-drawer-panel__panel-body {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.gom-histogram-yield-card[b-gk9trfz6wa] {
    display: grid;
    gap: var(--nxs-space-4);
    padding: var(--nxs-space-12);
    background: var(--nxs-surface-2);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
}

.gom-histogram-yield-card__label[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
}

.gom-histogram-yield-card__value[b-gk9trfz6wa] {
    color: var(--nxs-text);
    font-size: 28px;
    font-weight: 800;
    line-height: 1;
}

.gom-histogram-yield-card__meta[b-gk9trfz6wa] {
    color: var(--nxs-text-subtle);
    font-size: var(--nxs-text-size-xs);
    font-weight: 600;
}

.gom-analysis-section[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.gom-analysis-section__header[b-gk9trfz6wa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.gom-analysis-section__title[b-gk9trfz6wa],
.chart-colour-by-label[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-md);
    font-weight: 700;
}

.gom-analysis-section__count[b-gk9trfz6wa] {
    flex: 0 0 auto;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-xs);
    font-weight: 700;
}

.gom-analysis-section__fields[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-12);
}

.gom-critical-dimensions-list[b-gk9trfz6wa] {
    display: grid;
    gap: var(--nxs-space-8);
}

.gom-critical-dimension-row[b-gk9trfz6wa] {
    display: grid;
    gap: var(--nxs-space-12);
    padding: var(--nxs-space-12);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-surface-inset);
}

.gom-critical-dimension-row__header[b-gk9trfz6wa] {
    display: flex;
    justify-content: space-between;
    gap: var(--nxs-space-8);
    align-items: center;
}

.gom-critical-dimension-row__title[b-gk9trfz6wa] {
    min-width: 0;
    color: var(--nxs-text);
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.component-spc-dashboard[b-gk9trfz6wa]  .gom-critical-dimension-row__title-tooltip {
    display: block;
    min-width: 0;
}

.gom-critical-dimension-row__header[b-gk9trfz6wa]  .mud-chip {
    flex: 0 0 auto;
}

.gom-critical-dimension-row__inputs[b-gk9trfz6wa] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: var(--nxs-space-12);
}

.gom-critical-dimension-row__inputs[b-gk9trfz6wa]  .nxs-numeric-override__label {
    font-size: var(--nxs-text-size-xs);
}

.gom-critical-dimension-row__inputs[b-gk9trfz6wa]  .nxs-numeric-override__row {
    min-width: 0;
}

.gom-critical-dimension-row__inputs[b-gk9trfz6wa]  .nxs-numeric-override__shell {
    min-width: 0;
}

.panel-with-overlay[b-gk9trfz6wa] {
    position: relative;
}

.panel-loading-overlay[b-gk9trfz6wa] {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    background: var(--nxs-surface-veil);
    border-radius: var(--nxs-radius-lg);
    pointer-events: none;
    z-index: 2;
}

.plot-settings-field label[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: 14px;
    font-weight: 700;
    display: block;
    margin-bottom: var(--nxs-space-6);
}

.chart-colour-by-controls[b-gk9trfz6wa] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

[b-gk9trfz6wa] .chart-option-chips {
    display: flex !important;
    column-gap: var(--nxs-space-8) !important;
    row-gap: var(--nxs-space-8) !important;
    margin: 0;
    flex-wrap: wrap !important;
    align-content: flex-start;
}

[b-gk9trfz6wa] .chart-option-chips .mud-chip {
    margin: 0;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-pill);
    background-color: var(--nxs-surface-raised);
    color: var(--nxs-text-subtle);
    padding: var(--nxs-space-6) var(--nxs-space-12);
    min-height: 0;
    height: auto;
    font-size: var(--nxs-text-size-sm);
    font-weight: 700;
    text-transform: capitalize;
    line-height: 1;
    transition: background-color 120ms ease, color 120ms ease;
}

[b-gk9trfz6wa] .chart-option-chips .mud-chip:hover {
    color: var(--nxs-text);
}

.chart-group-selector-container[b-gk9trfz6wa] {
    display: flex;
    align-items: stretch;
    gap: var(--nxs-space-8);
    flex-wrap: wrap;
    width: 100%;
}

[b-gk9trfz6wa] .chart-group-chips {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-6);
    width: 100%;
    max-height: 76px;
    overflow-y: auto;
    margin: 0;
    padding: var(--nxs-space-8);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface-inset);
}

[b-gk9trfz6wa] .chart-group-chips .mud-chip {
    margin: 0;
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-pill);
    background-color: var(--nxs-surface-inset);
    color: var(--nxs-text-subtle);
    padding: var(--nxs-space-6) var(--nxs-space-12);
    min-height: 0;
    height: auto;
    font-size: var(--nxs-text-size-sm);
    font-weight: 600;
    transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

[b-gk9trfz6wa] .chart-group-chips .mud-chip:hover {
    color: var(--nxs-text);
    border-color: var(--nxs-border-strong);
}

.chart-group-selector-label[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
}

.chart-group-selector-count[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
}

.axis-mode-control[b-gk9trfz6wa] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--nxs-space-8);
}

.gom-histogram-empty-note[b-gk9trfz6wa] {
    color: var(--nxs-text-muted);
    font-size: 13px;
}

.gom-histogram-table-status[b-gk9trfz6wa] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 54px;
    border-radius: var(--nxs-radius-pill);
    padding: var(--nxs-space-4) var(--nxs-space-8);
    font-size: var(--nxs-text-size-xs);
    font-weight: 700;
}

.gom-histogram-table-status.is-pass[b-gk9trfz6wa] {
    background: var(--nxs-success-bg);
    color: var(--nxs-success-text);
    border: 1px solid var(--nxs-success-border);
}

.gom-histogram-table-status.is-fail[b-gk9trfz6wa] {
    background: var(--nxs-danger-bg);
    color: var(--nxs-danger-text);
    border: 1px solid var(--nxs-danger-border);
}

@media (max-width: 1100px) {
    .component-surface-roughness-section[b-gk9trfz6wa] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Configuration/AnemometerJigs/Create/AnemometerJig.razor.rz.scp.css */
.configuration-diagram[b-3yffusrxua] {
    display: flex;
    align-items: center;
    justify-content: center;
}
/* /Pages/Configuration/BuildPlateJig/Create/BuildPlateJig.razor.rz.scp.css */
.configuration-diagram[b-fqnzmbbvym] {
    display: flex;
    align-items: center;
    justify-content: center;
}
/* /Pages/HeatTreatments/HeatTreatments.razor.rz.scp.css */
.ht-list-build-bubbles[b-zzud78i86b] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.ht-list-build-bubble[b-zzud78i86b] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--nxs-radius-pill);
    border: 1px solid var(--ht-build-border, rgba(0, 188, 212, 0.55));
    background: var(--ht-build-background, rgba(0, 188, 212, 0.16));
    font-size: var(--nxs-text-size-sm);
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
    padding: var(--nxs-space-6) var(--nxs-space-8);
    transition: background-color 120ms ease, color 120ms ease, border-color 120ms ease;
}

.ht-list-build-bubble[b-zzud78i86b],
.ht-list-build-bubble:link[b-zzud78i86b],
.ht-list-build-bubble:visited[b-zzud78i86b] {
    color: var(--ht-build-color, var(--nxs-accent-bright)) !important;
}

.ht-list-build-bubble:hover[b-zzud78i86b] {
    color: var(--ht-build-hover-color, var(--nxs-accent-bright)) !important;
    border-color: var(--ht-build-hover-border, rgba(116, 237, 255, 0.9));
    background: var(--ht-build-hover-background, rgba(0, 188, 212, 0.3));
}
/* /Pages/Machines/Machine/Measurements/GasFlows/GasFlowMeasurementCreate.razor.rz.scp.css */
/* Channel mapping drag-reorder list */
.channel-mappings[b-um1n1pdb8y] {
    width: 100%;
}

.channel-mapping-header[b-um1n1pdb8y],
.channel-mapping-row[b-um1n1pdb8y] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-12, 12px);
    padding: var(--nxs-space-4, 4px) var(--nxs-space-8, 8px);
}

.channel-mapping-header[b-um1n1pdb8y] {
    font-weight: 600;
    color: var(--nxs-text-muted, #9e9e9e);
    border-bottom: 1px solid var(--nxs-border, #444);
}

.channel-drop-zone[b-um1n1pdb8y] {
    display: flex;
    flex-direction: column;
}

.channel-mapping-row[b-um1n1pdb8y] {
    /* Opaque so the native drag image isn't see-through (which made it look like
       every row was being dragged). */
    background: var(--nxs-surface, #1b1b1b);
    border-radius: var(--nxs-radius-lg, 8px);
    margin-bottom: var(--nxs-space-4, 4px);
}

.channel-mapping-row--dragging[b-um1n1pdb8y] {
    opacity: 0.5;
}

/* MudDropContainer's native drag image otherwise captures surrounding DOM (header + other
   rows) when the item has complex content like MudSelect/MudIconButton. Promoting the drag
   item to its own layer makes the preview just the dragged row. (MudBlazor #3991 / #10645) */
.channel-mappings-section[b-um1n1pdb8y]  .mud-drop-item {
    transform: translate3d(0, 0, 0);
    touch-action: none;
}

.channel-col-order[b-um1n1pdb8y] {
    display: flex;
    align-items: center;
    gap: var(--nxs-space-4, 4px);
    flex: 0 0 5rem;
}

.channel-col-grow[b-um1n1pdb8y] {
    flex: 1 1 0;
    min-width: 0;
}

.channel-col-actions[b-um1n1pdb8y] {
    display: flex;
    flex: 0 0 3rem;
    justify-content: flex-end;
}

.channel-drag-handle[b-um1n1pdb8y] {
    cursor: grab;
    color: var(--nxs-text-muted, #9e9e9e);
}

.channel-add-button[b-um1n1pdb8y] {
    margin-top: var(--nxs-space-8, 8px);
}

.gasflow-shared-scale[b-um1n1pdb8y] {
    padding: var(--nxs-space-8, 8px) 0;
}

/* Centre the anemometer jig diagram within its section */
.jig-diagram-section[b-um1n1pdb8y] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
}
/* /Pages/Machines/Machine/Measurements/GasFlows/Id/GasFlowMeasurementView.razor.rz.scp.css */
.gasflow-plot-scroll[b-ur8hmnbjyp] {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
}

.gasflow-plot-item[b-ur8hmnbjyp] {
    width: 570px;
    height: 350px;
    flex: 0 0 auto;
}

.gasflow-plot-item .contour-container[b-ur8hmnbjyp],
.gasflow-plot-item .scatter-container[b-ur8hmnbjyp] {
    width: 100%;
    height: 100%;
}
/* /Pages/Machines/Machine/Measurements/GasFlows/SummaryGasFlowDeviationPlot.razor.rz.scp.css */
.summary-deviation-container[b-w1qqjy2hpd] {
    width: 100%;
    min-height: 360px;
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
    border: 1px solid #ccc;
    background-color: #000;
    padding: 12px;
    position: relative;
}

.summary-deviation-title[b-w1qqjy2hpd] {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-bottom: 12px;
    color: var(--nxs-text);
}

.summary-deviation-title-text[b-w1qqjy2hpd] {
    font-weight: 600;
    white-space: nowrap;
}


.summary-deviation-empty[b-w1qqjy2hpd] {
    color: var(--nxs-text);
}

.summary-deviation-compare[b-w1qqjy2hpd] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 12px;
    color: var(--nxs-text);
}

.summary-deviation-compare-label[b-w1qqjy2hpd] {
    font-weight: 600;
}
/* /Pages/Machines/Machine/Measurements/Slm/SummarySlmSensorPlot.razor.rz.scp.css */
.summary-slm-container[b-hi2nkkrota] {
    width: 100%;
    min-height: 500px;
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
    border: 1px solid #ccc;
    background-color: #000;
    padding: 12px;
    position: relative;
}

.summary-slm-toolbar[b-hi2nkkrota] {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: 10px;
    margin-bottom: 12px;
    color: var(--nxs-text);
}

.summary-slm-toolbar-item[b-hi2nkkrota] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 320px;
}

.summary-slm-label[b-hi2nkkrota] {
    font-weight: 600;
}

.summary-slm-empty[b-hi2nkkrota] {
    color: var(--nxs-text);
}
/* /Pages/Measurements/Hardness/HardnessImportCreate.razor.rz.scp.css */
.hardness-import-create[b-f6jx84cmtn],
.hardness-import-create__setup[b-f6jx84cmtn],
.hardness-import-create__review-setup[b-f6jx84cmtn],
.hardness-import-create__success-content[b-f6jx84cmtn],
.hardness-import-create__footer[b-f6jx84cmtn] {
    display: grid;
    gap: var(--nxs-space-32);
    min-width: 0;
}

.hardness-import-create[b-f6jx84cmtn] {
    width: 100%;
    padding-bottom: var(--nxs-content-gutter);
}

.hardness-import-create__fields[b-f6jx84cmtn],
.hardness-import-create__file-grid[b-f6jx84cmtn],
.hardness-import-create__mapping-grid[b-f6jx84cmtn] {
    display: grid;
    gap: var(--nxs-space-32);
}

.hardness-import-create__mapping-row[b-f6jx84cmtn],
.hardness-import-create__file-row[b-f6jx84cmtn] {
    display: grid;
    gap: var(--nxs-space-24);
    min-width: 0;
}

.hardness-import-create__full-width-review[b-f6jx84cmtn] {
    width: 100%;
    min-width: 0;
}

.hardness-import-create__grid[b-f6jx84cmtn] {
    min-width: 0;
    overflow-x: auto;
}

.hardness-import-create__summary[b-f6jx84cmtn] {
    min-width: 0;
}

.hardness-import-create__parsing[b-f6jx84cmtn] {
    display: grid;
    align-items: center;
    min-height: calc(var(--nxs-space-48) + var(--nxs-space-48));
}

.hardness-import-create__include-all[b-f6jx84cmtn] {
    display: flex;
    align-items: center;
    min-height: var(--nxs-space-32);
}

.hardness-import-create__actions[b-f6jx84cmtn],
.hardness-import-create__part-links[b-f6jx84cmtn] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--nxs-space-12);
}

.hardness-import-create__actions[b-f6jx84cmtn] {
    justify-content: flex-end;
}

.hardness-import-create__warning-list[b-f6jx84cmtn] {
    margin: 0;
    padding-inline-start: var(--nxs-space-20);
}

[b-f6jx84cmtn] tr.hardness-import-create__row--invalid > td {
    background: var(--nxs-danger-bg);
}
/* /Pages/Measurements/Hardness/HardnessMeasurementView.razor.rz.scp.css */
.hardness-measurement-view__sections[b-vtfvjuueqq] {
    display: grid;
    gap: var(--nxs-space-24);
}

.hardness-measurement-view__facts[b-vtfvjuueqq] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
    gap: var(--nxs-space-20);
}

.hardness-measurement-view__facts > div[b-vtfvjuueqq] {
    display: grid;
    gap: var(--nxs-space-4);
}

.hardness-measurement-view__facts span[b-vtfvjuueqq] {
    color: var(--nxs-text-muted);
}
/* /Pages/Measurements/HeaterPlate/HeaterPlateManagementDialog.razor.rz.scp.css */
.heater-plate-management-dialog__title[b-670xtvhcgz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
}

.heater-plate-management-dialog__grid[b-670xtvhcgz] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
    width: 100%;
    max-width: 100%;
    min-height: min(66vh, 44rem);
    box-sizing: border-box;
}

[b-670xtvhcgz] .heater-plate-management-dialog__panel {
    --nxs-field-backdrop: var(--nxs-surface-2);
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 1rem;
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-surface-2);
}

.heater-plate-management-dialog__create-row[b-670xtvhcgz] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.75rem;
    align-items: end;
    margin: 0.75rem 0 1rem;
}

[b-670xtvhcgz] .heater-plate-management-dialog__table {
    flex: 1;
    width: 100%;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
}

[b-670xtvhcgz] .heater-plate-management-dialog__table .mud-table-container {
    height: 100%;
    overflow-x: hidden;
}

[b-670xtvhcgz] .heater-plate-management-dialog__table table {
    table-layout: fixed;
    width: 100%;
}

[b-670xtvhcgz] .heater-plate-management-dialog__table th,
[b-670xtvhcgz] .heater-plate-management-dialog__table td {
    overflow: hidden;
    text-overflow: ellipsis;
}

.heater-plate-management-dialog__actions[b-670xtvhcgz] {
    text-align: right;
    white-space: nowrap;
}

@media (max-width: 900px) {
    .heater-plate-management-dialog__grid[b-670xtvhcgz] {
        grid-template-columns: 1fr;
        min-height: auto;
    }
}
/* /Pages/Measurements/HeaterPlate/HeaterPlateMeasurements.razor.rz.scp.css */
.heater-plate-page[b-9e3vnuxxle] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    max-width: 112rem;
    min-height: calc(100vh - 9rem);
    margin: 0 auto;
    padding: 0 clamp(1rem, 2.75vw, 3.5rem) 1rem;
    box-sizing: border-box;
    color: var(--mud-palette-text-primary);
}

.heater-plate-page__header[b-9e3vnuxxle] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
}

.heater-plate-page__title[b-9e3vnuxxle] {
    margin-bottom: 0.25rem;
}

.heater-plate-page__subtitle[b-9e3vnuxxle],
.heater-plate-page__section-caption[b-9e3vnuxxle],
.heater-plate-page__metric-label[b-9e3vnuxxle],
.heater-plate-page__empty-caption[b-9e3vnuxxle] {
    color: var(--nxs-text-subtle);
}

.heater-plate-page__content[b-9e3vnuxxle] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

[b-9e3vnuxxle] .heater-plate-page__create-shell,
[b-9e3vnuxxle] .heater-plate-page__create-panel {
    background: transparent;
}

[b-9e3vnuxxle] .heater-plate-page__create-panel {
    border: 1px solid var(--nxs-overlay-20);
    border-radius: var(--nxs-radius-lg);
    overflow: hidden;
}

[b-9e3vnuxxle] .heater-plate-page__create-panel .mud-expand-panel-header {
    min-height: 3rem;
    padding: 0.75rem 1rem;
    font-weight: 700;
}

[b-9e3vnuxxle] .heater-plate-page__create-panel .mud-expand-panel-header .mud-expand-panel-icon {
    order: -1;
    margin-left: 0;
    margin-right: 0.625rem;
}

[b-9e3vnuxxle] .heater-plate-page__create-panel .mud-expand-panel-header .mud-expand-panel-text {
    flex: 0 1 auto;
}

[b-9e3vnuxxle] .heater-plate-page__create-panel .mud-expand-panel-content {
    padding: 0 1rem 1rem;
}

.heater-plate-page__create-grid[b-9e3vnuxxle] {
    display: grid;
    grid-template-columns: minmax(34rem, 1.25fr) minmax(26rem, 0.75fr);
    grid-template-areas:
        "setup slots"
        "submit slots";
    gap: 1rem;
    align-items: stretch;
}

.heater-plate-page__lower-grid[b-9e3vnuxxle] {
    display: grid;
    grid-template-columns: minmax(34rem, 1.25fr) minmax(26rem, 0.75fr);
    grid-template-areas:
        "table plot";
    gap: 1rem;
    align-items: stretch;
}

[b-9e3vnuxxle] .heater-plate-page__panel,
[b-9e3vnuxxle] .heater-plate-page__metric {
    --nxs-field-backdrop: var(--nxs-surface-2);
    border-radius: var(--nxs-radius-lg);
    padding: 1.25rem;
    background: var(--nxs-surface-2);
}

[b-9e3vnuxxle] .heater-plate-page__form-panel {
    grid-area: setup;
}

[b-9e3vnuxxle] .heater-plate-page__slots-panel {
    grid-area: slots;
    align-self: stretch;
}

[b-9e3vnuxxle] .heater-plate-page__submit-panel {
    grid-area: submit;
}

[b-9e3vnuxxle] .heater-plate-page__table-panel {
    grid-area: table;
    align-self: stretch;
}

[b-9e3vnuxxle] .heater-plate-page__plot-panel {
    grid-area: plot;
    align-self: stretch;
}

.heater-plate-page__section-header[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.heater-plate-page__section-title[b-9e3vnuxxle] {
    margin-bottom: 0;
}

.heater-plate-page__section-title-row[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}

.heater-plate-page__selector-shell[b-9e3vnuxxle] {
    position: relative;
}

.heater-plate-page__empty-selector-hit-target[b-9e3vnuxxle] {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    padding: 0;
    border: 0;
    cursor: pointer;
    background: transparent;
}

.heater-plate-page__step-badge[b-9e3vnuxxle] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.55rem;
    height: 1.55rem;
    flex: 0 0 1.55rem;
    border: 1px solid var(--nxs-overlay-32);
    border-radius: 50%;
    color: var(--nxs-text-muted);
    background: var(--nxs-overlay-3);
    font-size: 0.8125rem;
    font-weight: 700;
    line-height: 1;
}

.heater-plate-page__step-badge--active[b-9e3vnuxxle] {
    border-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary);
    background: var(--nxs-accent-8);
}

.heater-plate-page__step-badge--complete[b-9e3vnuxxle] {
    border-color: var(--mud-palette-success);
    color: var(--mud-palette-success);
    background: rgba(76, 175, 80, 0.12);
}

.heater-plate-page__file-drop[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    min-height: 4rem;
    padding: 0.75rem 0.875rem;
    border: 1px dashed var(--nxs-overlay-32);
    border-radius: var(--nxs-radius-lg);
    cursor: pointer;
    background: var(--nxs-overlay-3);
    transition: border-color 120ms ease, background-color 120ms ease;
}

.heater-plate-page__file-drop:hover[b-9e3vnuxxle] {
    border-color: var(--mud-palette-primary);
    background: var(--nxs-accent-8);
}

[b-9e3vnuxxle] .heater-plate-page__datetime-field input {
    color-scheme: dark;
}

[b-9e3vnuxxle] .heater-plate-page__datetime-field input::-webkit-calendar-picker-indicator {
    cursor: pointer;
    padding: 0.2rem;
    border-radius: 6px;
    background-color: var(--nxs-accent);
    filter: none;
    opacity: 1;
}

[b-9e3vnuxxle] .heater-plate-page__datetime-field input::-webkit-calendar-picker-indicator:hover {
    background-color: var(--nxs-accent-bright);
}

.heater-plate-page__file-icon[b-9e3vnuxxle] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-accent-8);
    color: var(--mud-palette-primary);
}

.heater-plate-page__file-copy[b-9e3vnuxxle] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
    flex: 1;
}

.heater-plate-page__file-copy strong[b-9e3vnuxxle],
.heater-plate-page__file-copy small[b-9e3vnuxxle] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.heater-plate-page__file-drop small[b-9e3vnuxxle] {
    color: var(--nxs-text-subtle);
}

.heater-plate-page__file-action[b-9e3vnuxxle] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 5.5rem;
    min-height: 2rem;
    padding: 0 0.875rem;
    border-radius: var(--nxs-radius-md);
    background: var(--nxs-overlay-8);
    font-weight: 600;
}

.heater-plate-page__submit-state[b-9e3vnuxxle] {
    color: var(--nxs-text-subtle);
    text-align: center;
}

.heater-plate-page__submit-state--error[b-9e3vnuxxle] {
    color: var(--mud-palette-error);
    font-weight: 600;
}

.heater-plate-page__file-input[b-9e3vnuxxle],
[b-9e3vnuxxle] .heater-plate-page__file-input {
    display: none;
}

.heater-plate-page__actions[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-top: 0.85rem;
    margin-top: 0.65rem;
    border-top: 1px solid var(--nxs-overlay-8);
}

.heater-plate-page__embedded-review-header[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.65rem;
}

.heater-plate-page__button-row[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.heater-plate-page__submit-spinner[b-9e3vnuxxle] {
    margin-right: 0.25rem;
}

.heater-plate-page__slot-grid[b-9e3vnuxxle] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.5rem;
}

.heater-plate-page__slot[b-9e3vnuxxle] {
    min-width: 0;
}

.heater-plate-page__slot-heading[b-9e3vnuxxle] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    min-width: 0;
    margin-bottom: 0.125rem;
}

.heater-plate-page__slot-title[b-9e3vnuxxle] {
    display: block;
    min-width: 0;
    color: var(--nxs-text-muted);
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.heater-plate-page__slot-title--active[b-9e3vnuxxle] {
    color: var(--nxs-text-body);
}

.heater-plate-page__slot-temperature[b-9e3vnuxxle] {
    flex: 0 0 auto;
    color: var(--mud-palette-primary);
    font-weight: 700;
    white-space: nowrap;
}

.heater-plate-page__metric-row[b-9e3vnuxxle] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.heater-plate-page__metric-row--compact[b-9e3vnuxxle] {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.65rem;
}

[b-9e3vnuxxle] .heater-plate-page__metric {
    min-height: 3.75rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

[b-9e3vnuxxle] .heater-plate-page__metric-row--compact .heater-plate-page__metric {
    padding: 0.75rem 0.875rem;
}

[b-9e3vnuxxle] .heater-plate-page__table-panel {
    padding: 0;
    overflow: hidden;
}

.heater-plate-page__table-panel .heater-plate-page__section-header[b-9e3vnuxxle] {
    padding: 1rem 1rem 0;
}

.heater-plate-page__table-toolbar[b-9e3vnuxxle] {
    max-width: 24rem;
    padding: 0.5rem 1rem 0.75rem;
}

.heater-plate-page__table[b-9e3vnuxxle] {
    min-height: 13rem;
    width: 100%;
}

.heater-plate-page__load-more[b-9e3vnuxxle] {
    display: flex;
    justify-content: center;
    padding: 0.75rem 1rem 0;
}

.heater-plate-page__plot-frame[b-9e3vnuxxle] {
    display: flex;
    align-items: stretch;
    justify-content: stretch;
    width: 100%;
    aspect-ratio: 1;
    border: 1px dashed var(--nxs-overlay-20);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-overlay-3);
}

.heater-plate-page__plot-placeholder[b-9e3vnuxxle] {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: 1rem;
}

.heater-plate-page__plot-chart[b-9e3vnuxxle],
[b-9e3vnuxxle] .heater-plate-page__plot-chart,
[b-9e3vnuxxle] .heater-plate-page__plot-chart .plot-container,
[b-9e3vnuxxle] .heater-plate-page__plot-chart .svg-container {
    width: 100% !important;
    height: 100% !important;
}

.heater-plate-page__plot-spinner[b-9e3vnuxxle] {
    margin-bottom: 0.25rem;
}

.heater-plate-page__plot-legend[b-9e3vnuxxle] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.35rem 0.75rem;
    padding-top: 0.75rem;
    color: var(--nxs-text-body);
    font-size: 0.82rem;
    line-height: 1.2;
}

.heater-plate-page__plot-legend-item[b-9e3vnuxxle] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
}

.heater-plate-page__plot-legend-item span:last-child[b-9e3vnuxxle] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.heater-plate-page__plot-legend-line[b-9e3vnuxxle] {
    display: inline-block;
    width: 1.55rem;
    flex: 0 0 1.55rem;
    border-top: 2px solid;
}

.heater-plate-page__plot-legend-line--dash[b-9e3vnuxxle] {
    border-top-style: dashed;
}

.heater-plate-page__plot-legend-line--dot[b-9e3vnuxxle] {
    border-top-style: dotted;
}

.heater-plate-page__empty-state[b-9e3vnuxxle] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 9rem;
    padding: 1.25rem;
    text-align: center;
}

.heater-plate-page__plot-frame .heater-plate-page__empty-state[b-9e3vnuxxle] {
    width: 100%;
    min-height: 0;
    text-align: center;
}

.heater-plate-page__plot-frame .heater-plate-page__empty-caption[b-9e3vnuxxle],
.heater-plate-page__plot-frame .heater-plate-page__empty-title[b-9e3vnuxxle] {
    width: 100%;
    max-width: 22rem;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.heater-plate-page__empty-title[b-9e3vnuxxle] {
    color: var(--nxs-text-body);
}

[b-9e3vnuxxle] .heater-plate-page__table th,
[b-9e3vnuxxle] .heater-plate-page__table td {
    padding: 0.65rem 0.75rem;
}

[b-9e3vnuxxle] .heater-plate-page__table .mud-table-cell {
    padding: 0.65rem 0.75rem;
    vertical-align: middle;
}

[b-9e3vnuxxle] .heater-plate-page__table table {
    width: 100%;
    table-layout: fixed;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__column-plate {
    width: 6.25rem;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__column-date {
    width: 10.25rem;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__column-window {
    width: 11.25rem;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__column-average {
    width: 10.25rem;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__column-status {
    width: 5.75rem;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__column-actions {
    width: 5.5rem;
    padding-left: 0.25rem;
    padding-right: 0.5rem;
    text-align: right;
}

[b-9e3vnuxxle] .heater-plate-page__table .heater-plate-page__nowrap {
    white-space: nowrap;
}

[b-9e3vnuxxle] .heater-plate-page__table th {
    white-space: nowrap;
}

.heater-plate-page__row-actions[b-9e3vnuxxle] {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.125rem;
    width: 100%;
}

[b-9e3vnuxxle] .heater-plate-page__form-panel .mud-grid-item,
[b-9e3vnuxxle] .heater-plate-page__slots-panel .mud-input-control {
    padding-top: 0.55rem;
}

[b-9e3vnuxxle] .heater-plate-page__form-panel .mud-input-control,
[b-9e3vnuxxle] .heater-plate-page__slots-panel .mud-input-control {
    margin-top: 0.25rem;
}

[b-9e3vnuxxle] .heater-plate-page__form-panel .mud-grid {
    row-gap: 0.75rem;
}

@media (max-width: 960px) {
    .heater-plate-page__create-grid[b-9e3vnuxxle],
    .heater-plate-page__lower-grid[b-9e3vnuxxle],
    .heater-plate-page__metric-row[b-9e3vnuxxle],
    .heater-plate-page__metric-row--compact[b-9e3vnuxxle] {
        grid-template-columns: 1fr;
    }

    .heater-plate-page__create-grid[b-9e3vnuxxle] {
        grid-template-areas:
            "setup"
            "slots"
            "submit";
    }

    .heater-plate-page__lower-grid[b-9e3vnuxxle] {
        grid-template-areas:
            "table"
            "plot";
    }

    .heater-plate-page__plot-frame[b-9e3vnuxxle] {
        aspect-ratio: auto;
    }

}

@media (max-width: 720px) {
    .heater-plate-page[b-9e3vnuxxle] {
        min-height: auto;
    }

    .heater-plate-page__header[b-9e3vnuxxle] {
        align-items: flex-start;
        flex-direction: column;
    }

    .heater-plate-page__slot-grid[b-9e3vnuxxle] {
        grid-template-columns: 1fr;
    }

    .heater-plate-page__actions[b-9e3vnuxxle],
    .heater-plate-page__button-row[b-9e3vnuxxle] {
        align-items: stretch;
        flex-direction: column;
    }
}
/* /Pages/Metrology/Metrology.razor.rz.scp.css */
.metrology-page__empty-content[b-rrd5u9oucx] {
    color: var(--nxs-text-muted);
}
/* /Pages/PostProcessing/PostProcessing.razor.rz.scp.css */
.post-processing-page__section[b-wq3dd8e22s] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.post-processing-page__section-header[b-wq3dd8e22s] {
    display: block;
}

.post-processing-page__section-title[b-wq3dd8e22s] {
    margin: 0;
    font-size: 1.2rem;
}

.post-processing-page__section-caption[b-wq3dd8e22s] {
    margin: var(--nxs-space-4) 0 0;
    color: var(--nxs-text-muted);
}
/* /Pages/Projects/Project/ProjectMembers.razor.rz.scp.css */
.project-members__deactivated-hint[b-w6phfxg85l] {
    margin-left: 0.5rem;
    font-style: italic;
    color: var(--nxs-text-muted);
}

/* Keep the inline role editor compact inside the dense grid row instead of the
   full-width default a MudSelect would otherwise take. */
[b-w6phfxg85l] .project-members__role-select {
    width: 11rem;
    margin: 0;
}
/* /Pages/SavedFilters/SavedFilters.razor.rz.scp.css */
.saved-filters__load-error[b-n5d7bd3h5d] {
    margin-bottom: var(--nxs-space-16);
}

.saved-filters__load-error-content[b-n5d7bd3h5d] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    flex-wrap: wrap;
}

.saved-filters__new-form[b-n5d7bd3h5d],
.saved-filters__edit-form[b-n5d7bd3h5d] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
    min-width: min(28rem, 100%);
}

.saved-filters__applicability-select[b-n5d7bd3h5d] {
    width: 100%;
}

@media (max-width: 48rem) {
    .saved-filters__load-error-content[b-n5d7bd3h5d] {
        align-items: stretch;
        flex-direction: column;
    }
}
/* /Pages/Shared/MainLayout.razor.rz.scp.css */
/* Full-width by default — data grids (the bulk of Nexus) use all the available space. A single
   horizontal gutter (--nxs-content-gutter) keeps the left/right symmetric (the window scrollbar
   bounds the right edge), with a matching gap at the bottom so content never runs flush to the
   bottom of the viewport. Form/detail pages opt into a capped reading column via the shared
   reading-column component. See docs/plans/page-width-layout.md. */
article.content[b-w3qlbhzkys] {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    overflow-y: auto; /* the scroll container — sits below the app bar, so its scrollbar does too */
    padding: 1rem var(--nxs-content-gutter) var(--nxs-content-gutter);
}

.app-logo[b-w3qlbhzkys] {
    display: flex;
    align-items: center;
    height: 100%;
    margin-left: 1rem;
}

.app-logo img[b-w3qlbhzkys] {
    display: block;
    width: auto;
    height: 60px;
}

.app-breadcrumbs[b-w3qlbhzkys] {
    display: flex;
    align-items: center;
    min-width: 0;
    flex: 1;
    margin-left: 4.5rem;
}
/* /Pages/Shared/NavMenu.razor.rz.scp.css */
.nav-shell[b-tkk1r91moz] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}

.nav-scroll-region[b-tkk1r91moz] {
    position: relative;
    flex: 1;
    min-height: 0;
}

.nav-scroll-region[b-tkk1r91moz]::before,
.nav-scroll-region[b-tkk1r91moz]::after {
    position: absolute;
    right: var(--nxs-space-16);
    left: 0;
    height: var(--nxs-space-16);
    z-index: 1;
    content: "";
    pointer-events: none;
}

.nav-scroll-region[b-tkk1r91moz]::before {
    top: 0;
    background: linear-gradient(to bottom, var(--nxs-bg), transparent);
}

.nav-scroll-region[b-tkk1r91moz]::after {
    bottom: 0;
    background: linear-gradient(to bottom, transparent, var(--nxs-bg));
}

[b-tkk1r91moz] .nexus-nav {
    height: 100%;
    box-sizing: border-box;
    overflow-y: auto;
    padding: var(--nxs-space-16) var(--nxs-space-8);
}

/* Solid-white items; the active link keeps its primary (cyan) colour. */
[b-tkk1r91moz] .nexus-nav .mud-nav-link:not(.active) {
    color: var(--nxs-text);
}

[b-tkk1r91moz] .nexus-nav .mud-nav-link:not(.active) .mud-icon-root {
    color: var(--nxs-text);
}

.version-number[b-tkk1r91moz] {
    padding: var(--nxs-space-24) var(--nxs-space-32);
    border-top: 1px solid var(--nxs-divider);
    color: var(--nxs-text-muted);
}
/* /Pages/Simulations/Fatigue/FatigueGeometryViewer.razor.rz.scp.css */
/* The host owns the height: the viewer fills its container (the page's viewer shell)
   so there is a single source of truth and the canvas is never cropped or letterboxed.
   The Babylon engine re-syncs its render buffer via ResizeObserver, so size changes
   never distort the geometry. */
.fatigue-geometry-viewer[b-oeb5wzgxti] {
    position: relative;
    box-sizing: border-box;
    width: 100%;
    height: 100%;
    min-height: var(--nxs-chart-height-sm);
    overflow: hidden;
}

.fatigue-geometry-viewer__canvas[b-oeb5wzgxti] {
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0;
    border: 0;
    outline: 0;
}

.fatigue-geometry-viewer__message[b-oeb5wzgxti] {
    position: absolute;
    inset-inline: var(--nxs-space-4);
    bottom: var(--nxs-space-4);
}
/* /Pages/Simulations/Fatigue/FatigueSimulationCreate.razor.rz.scp.css */
.fatigue-create__diagnostics[b-ooq9fwfqcz] {
    margin-block: var(--nxs-space-2) 0;
    padding-inline-start: var(--nxs-space-24);
}
/* /Pages/Simulations/Fatigue/FatigueSimulationView.razor.rz.scp.css */
.fatigue-view__body[b-63l5jelm65] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.fatigue-view__sections[b-63l5jelm65] {
    display: grid;
    grid-template-rows: minmax(0, 1fr);
    flex: 1 1 auto;
    min-height: 0;
    gap: var(--nxs-space-16);
}

.fatigue-view__visualizations[b-63l5jelm65] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
    align-items: stretch;
    min-height: 0;
    gap: var(--nxs-space-16);
}

.fatigue-view__visualization-panel[b-63l5jelm65] {
    display: grid;
    min-width: 0;
    min-height: 0;
}

/* The slice panel joins the row through named areas, gated behind the modifier: grid-area
   names on items whose container does not define those areas would create implicit tracks
   and scramble the slice-less two-panel layout. Laptop and desktop widths use one consistent
   three-column row; genuinely narrow screens stack the panels below. */
.fatigue-view__visualizations--with-slices[b-63l5jelm65] {
    grid-template-areas:
        "chart viewer"
        "slice slice";
}

.fatigue-view__visualizations--with-slices .fatigue-view__viewer-panel[b-63l5jelm65] {
    grid-area: viewer;
}

.fatigue-view__visualizations--with-slices .fatigue-view__chart-panel[b-63l5jelm65] {
    grid-area: chart;
}

.fatigue-view__visualizations--with-slices .fatigue-view__slice-panel[b-63l5jelm65] {
    grid-area: slice;
}

.fatigue-view__chart-panel[b-63l5jelm65] {
    --fatigue-chart-height: 100%;
}

/* ::deep because the classes land on NxsCard's MudPaper roots. Every card shares one
   height chain so its title remains fixed while the chart or viewer absorbs the page's
   remaining content height. */
.fatigue-view__visualization-panel[b-63l5jelm65]  .fatigue-view__chart-card,
.fatigue-view__visualization-panel[b-63l5jelm65]  .fatigue-view__overlay-card,
.fatigue-view__visualization-panel[b-63l5jelm65]  .fatigue-view__slice-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}

/* The 3D tools belong to the card header, not the canvas. Allow the header and its
   action group to wrap independently when a narrow three-column layout cannot hold
   the title and both reusable geometry controls on one row. */
.fatigue-view__viewer-panel[b-63l5jelm65]  .fatigue-view__overlay-card .nxs-card__header {
    flex-wrap: wrap;
}

.fatigue-view__viewer-panel[b-63l5jelm65]  .fatigue-view__overlay-card .nxs-card__header-actions {
    flex-wrap: wrap;
    justify-content: flex-end;
    max-width: 100%;
}

.fatigue-view__chart-panel[b-63l5jelm65]  .nxs-chart {
    flex: 1 1 auto;
    min-height: 0;
}

.fatigue-view__slice-panel[b-63l5jelm65]  .fatigue-slice-viewer {
    flex: 1 1 auto;
    min-height: 0;
}

.fatigue-view__overlay-content[b-63l5jelm65] {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.fatigue-view__viewer-shell[b-63l5jelm65] {
    position: relative;
    display: grid;
    flex: 1 1 auto;
    min-height: 0;
}

.fatigue-view__result-controls[b-63l5jelm65] {
    display: grid;
    gap: var(--nxs-space-8);
}

@media (min-width: 1200px) {
    .fatigue-view__visualizations--with-slices[b-63l5jelm65] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        grid-template-areas: "chart viewer slice";
    }
}

@media (max-width: 1199px) {
    .fatigue-view__visualizations[b-63l5jelm65] {
        flex: 0 0 auto;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: repeat(2, var(--nxs-chart-height-sm));
    }

    .fatigue-view__visualizations--with-slices[b-63l5jelm65] {
        grid-template-rows: repeat(3, var(--nxs-chart-height-sm));
        grid-template-areas:
            "chart"
            "viewer"
            "slice";
    }

    .fatigue-view__chart-panel[b-63l5jelm65] {
        --fatigue-chart-height: var(--nxs-chart-height-sm);
    }
}
/* /Pages/Simulations/Fatigue/FatigueSliceViewer.razor.rz.scp.css */
.fatigue-slice-viewer[b-al5mw0qzok] {
    display: grid;
    height: 100%;
}

.fatigue-slice-viewer__shell[b-al5mw0qzok] {
    position: relative;
    min-height: var(--nxs-chart-height-sm);
    overflow: hidden;
}

.fatigue-slice-viewer__canvas[b-al5mw0qzok] {
    display: block;
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0;
    cursor: grab;
    touch-action: none;
    user-select: none;
}

.fatigue-slice-viewer__canvas--dragging[b-al5mw0qzok] {
    cursor: grabbing;
}

.fatigue-slice-viewer__readout[b-al5mw0qzok] {
    position: absolute;
    left: 0;
    top: 0;
    z-index: 2;
    padding: var(--nxs-space-4) var(--nxs-space-8);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-sm);
    background: var(--nxs-surface-veil);
    color: var(--nxs-text);
    font-variant-numeric: tabular-nums;
    pointer-events: none;
    white-space: nowrap;
    will-change: transform;
}

.fatigue-slice-viewer__empty[b-al5mw0qzok] {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: var(--nxs-text-muted);
}

.fatigue-slice-viewer__message[b-al5mw0qzok] {
    position: absolute;
    inset-inline: var(--nxs-space-4);
    bottom: var(--nxs-space-4);
}
/* /Pages/Simulations/HardnessPredictions/HardnessPredictionCreate.razor.rz.scp.css */
.hardness-create__body[b-65nx3xw9rw],
.hardness-create__release-content[b-65nx3xw9rw] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.hardness-create__release-facts[b-65nx3xw9rw] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
    gap: var(--nxs-space-12);
}

.hardness-create__release-fact[b-65nx3xw9rw] {
    display: flex;
    min-width: 0;
    min-height: 4.5rem;
    flex-direction: column;
    justify-content: center;
    gap: var(--nxs-space-4);
    padding: var(--nxs-space-12) var(--nxs-space-16);
}

.hardness-create__release-label[b-65nx3xw9rw] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    line-height: 1.25;
}

.hardness-create__release-fact strong[b-65nx3xw9rw] {
    min-width: 0;
    overflow-wrap: anywhere;
    color: var(--nxs-text);
    font-weight: 600;
    line-height: 1.35;
}
/* /Pages/Simulations/HardnessPredictions/HardnessPredictionResult.razor.rz.scp.css */
.hardness-result-header[b-6gvnbsu0iy] {
    display: flex;
    min-width: 0;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
    flex-wrap: wrap;
}

.hardness-result-header-meta[b-6gvnbsu0iy] {
    display: flex;
    min-width: 0;
    align-items: center;
    justify-content: flex-end;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

.hardness-result-header-meta[b-6gvnbsu0iy]  .mud-link {
    overflow-wrap: anywhere;
}

.hardness-result-page[b-6gvnbsu0iy] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.hardness-result-progress[b-6gvnbsu0iy] {
    display: grid;
    gap: var(--nxs-space-8);
}

.hardness-result-failure[b-6gvnbsu0iy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-16);
}

.hardness-result-insights-grid[b-6gvnbsu0iy] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
    gap: var(--nxs-space-16);
}

.hardness-result-details-content[b-6gvnbsu0iy] {
    display: grid;
    gap: var(--nxs-space-12);
}

.hardness-result-insights-grid[b-6gvnbsu0iy]  .hardness-result-insight-card {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-width: 0;
    min-height: calc(var(--nxs-space-48) + var(--nxs-space-16));
    gap: var(--nxs-space-8);
    padding: var(--nxs-space-12) var(--nxs-space-16);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
    background: var(--nxs-overlay-subtle);
}

.hardness-result-insight-label[b-6gvnbsu0iy] {
    font-size: var(--nxs-text-size-xs);
    font-weight: 600;
    letter-spacing: 0.06em;
    line-height: 1.2;
    text-transform: uppercase;
    color: var(--nxs-text-muted);
}

.hardness-result-insight-value[b-6gvnbsu0iy] {
    font-size: var(--nxs-text-size-md);
    font-weight: 600;
    line-height: 1.2;
    overflow-wrap: anywhere;
}

.hardness-result-viewer-grid[b-6gvnbsu0iy] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
    align-items: stretch;
    flex: 1 0 var(--nxs-chart-height-lg);
    min-height: var(--nxs-chart-height-lg);
    gap: var(--nxs-space-16);
}

.hardness-result-viewer-panel[b-6gvnbsu0iy] {
    display: grid;
    min-width: 0;
    min-height: 0;
}

.hardness-result-viewer-panel[b-6gvnbsu0iy]  .hardness-result-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}

.hardness-result-card-content[b-6gvnbsu0iy] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.hardness-result-selector-row[b-6gvnbsu0iy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-12);
    flex-wrap: wrap;
}

.hardness-result-viewer-shell[b-6gvnbsu0iy] {
    position: relative;
    display: grid;
    flex: 1 1 auto;
    min-height: 0;
}

@media (max-width: 780px) {
    .hardness-result-viewer-grid[b-6gvnbsu0iy] {
        grid-template-columns: 1fr;
        grid-template-rows: repeat(2, var(--nxs-chart-height-lg));
        flex: 0 0 auto;
    }

    .hardness-result-failure[b-6gvnbsu0iy] {
        align-items: flex-start;
        flex-direction: column;
    }

}
/* /Pages/Simulations/Thermal/PanXLayerSelector.razor.rz.scp.css */
.panx-layer-selector[b-f5rzbekuaw] {
    min-width: 0;
}

.panx-layer-selector__fidelity-navigator[b-f5rzbekuaw] {
    display: inline-flex;
    min-width: 0;
    align-items: center;
    gap: var(--nxs-space-4);
}

.panx-layer-selector[b-f5rzbekuaw]  .panx-layer-selector__fidelity-step {
    flex: 0 0 var(--nxs-control-h-sm);
    width: var(--nxs-control-h-sm);
    min-width: var(--nxs-control-h-sm);
    height: var(--nxs-control-h-sm);
    min-height: var(--nxs-control-h-sm);
    margin: 0;
    padding: 0;
    border-radius: var(--nxs-radius-md);
}

.panx-layer-selector[b-f5rzbekuaw]  .panx-layer-selector__fidelity-button {
    min-width: 0;
    height: var(--nxs-control-h-sm);
    padding-inline: var(--nxs-space-8);
    border-radius: var(--nxs-radius-md);
    font-size: var(--nxs-text-size-xs);
    white-space: nowrap;
}

.panx-layer-selector[b-f5rzbekuaw]  .panx-layer-selector__fidelity-button--active {
    background: var(--nxs-accent-20);
    color: var(--nxs-accent-bright);
}

.panx-layer-selector__fidelity-option[b-f5rzbekuaw] {
    display: grid;
    grid-template-columns: 12ch 16ch 20ch;
    min-width: 0;
    align-items: center;
    gap: var(--nxs-space-16);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
/* /Pages/Simulations/Thermal/PanXTextArtifactDialog.razor.rz.scp.css */
.panx-text-artifact-dialog__content[b-roj35wik15] {
    margin: 0;
    max-height: 65vh;
    overflow: auto;
    white-space: pre-wrap;
    word-break: break-word;
    font-family: Consolas, "Courier New", monospace;
    font-size: 0.875rem;
    line-height: 1.45;
}
/* /Pages/Simulations/Thermal/ThermalSimulationCreate.razor.rz.scp.css */
.thermal-simulation-create__source-panel[b-87lg481992] {
    display: grid;
    height: var(--nxs-grid-source-picker-height);
    min-height: 0;
    grid-template-rows: auto minmax(0, 1fr);
    overflow: hidden;
    background: var(--nxs-surface);
    border: 1px solid var(--nxs-border);
    border-radius: var(--nxs-radius-lg);
}

.thermal-simulation-create__source-header[b-87lg481992] {
    display: flex;
    min-height: var(--nxs-control-h-lg);
    align-items: center;
    padding: var(--nxs-space-12) var(--nxs-space-16);
}

.thermal-simulation-create[b-87lg481992]  .thermal-simulation-create__candidate-grid {
    display: flex;
    min-height: 0;
    flex: 1;
    flex-direction: column;
}

.thermal-simulation-create[b-87lg481992]  .thermal-simulation-create__candidate-grid .mud-table-container {
    min-height: 0;
    flex: 1;
    overflow-y: auto;
}

.thermal-simulation-create__source-title[b-87lg481992] {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: var(--nxs-space-12);
}

.thermal-simulation-create__source-selection[b-87lg481992] {
    overflow: hidden;
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    font-weight: 400;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Diagnostics are a read-only icon+text readout; Mud's stock 56px list-icon gutter
   (sized for touch lists) leaves the icon stranded far from its message. */
.thermal-simulation-create[b-87lg481992]  .thermal-simulation-create__diagnostics .mud-list-item-icon {
    min-width: unset;
    margin-right: var(--nxs-space-12);
}
/* /Pages/Simulations/Thermal/ThermalSimulationResult.razor.rz.scp.css */
.panx-result-page__body[b-1a1a50n8v7] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: var(--nxs-space-16);
}

.panx-result-viewer-grid[b-1a1a50n8v7] {
    display: grid;
    flex: 1 1 auto;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: minmax(0, 1fr);
    align-items: stretch;
    min-height: 0;
    gap: var(--nxs-space-12);
}

.panx-result-viewer-grid[b-1a1a50n8v7]  .panx-result-panel {
    display: flex;
    min-width: 0;
    height: 100%;
    min-height: 0;
    overflow: hidden;
    flex-direction: column;
}

.panx-result-panel-content[b-1a1a50n8v7] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: var(--nxs-space-8);
}

.panx-result-slice-content[b-1a1a50n8v7] {
    display: grid;
    min-height: 0;
    grid-template-rows: minmax(0, 1fr);
    gap: 0;
}

.panx-result-slice-content--with-footer[b-1a1a50n8v7] {
    grid-template-rows: minmax(0, 1fr) calc(var(--nxs-control-h-sm) + var(--nxs-space-16));
}

.panx-result-no-data[b-1a1a50n8v7] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: var(--nxs-space-8);
    background: var(--nxs-surface-80);
    color: var(--nxs-text-muted);
    pointer-events: none;
}

.panx-result-canvas-shell[b-1a1a50n8v7] {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    background: var(--nxs-surface);
}

.panx-result-canvas[b-1a1a50n8v7] {
    display: block;
    width: 100%;
    height: 100%;
    background: var(--nxs-surface);
    cursor: grab;
    touch-action: none;
    user-select: none;
}

.panx-result-canvas:active[b-1a1a50n8v7] {
    cursor: grabbing;
}

.panx-result-slice-body[b-1a1a50n8v7] {
    display: flex;
    min-width: 0;
    min-height: 0;
}

.panx-result-slice-body .panx-result-canvas-shell[b-1a1a50n8v7] {
    width: 100%;
    height: 100%;
    min-height: 0;
}

.panx-result-vtk-footer[b-1a1a50n8v7] {
    display: grid;
    height: calc(var(--nxs-control-h-sm) + var(--nxs-space-16));
    min-width: 0;
    align-items: center;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    border-top: 1px solid var(--nxs-border);
}

.panx-result-vtk-plane-stepper[b-1a1a50n8v7] {
    display: flex;
    min-width: 0;
    align-items: center;
    grid-column: 2;
    gap: var(--nxs-space-4);
}

.panx-result-vtk-plane-summary[b-1a1a50n8v7],
.panx-result-vtk-z[b-1a1a50n8v7] {
    color: var(--nxs-text-muted);
    font-size: var(--nxs-text-size-sm);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.panx-result-vtk-z[b-1a1a50n8v7] {
    justify-self: start;
    grid-column: 1;
    padding-right: var(--nxs-space-12);
}

.panx-result-vtk-delete-slot[b-1a1a50n8v7] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    grid-column: 3;
}

.panx-result-layer-failures[b-1a1a50n8v7] {
    display: flex;
    flex-direction: column;
    gap: var(--nxs-space-8);
    min-width: 0;
}

.panx-result-layer-failure-content[b-1a1a50n8v7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nxs-space-12);
}

.panx-result-layer-failure-details[b-1a1a50n8v7] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.panx-result-layer-details[b-1a1a50n8v7] {
    color: var(--nxs-text-muted);
}

.panx-result-layer-diagnostics ul[b-1a1a50n8v7] {
    margin: var(--nxs-space-8) 0 0;
    padding-left: var(--nxs-space-24);
}

.panx-result-layer-source[b-1a1a50n8v7],
.panx-result-layer-details[b-1a1a50n8v7] {
    overflow-wrap: anywhere;
}

@media (max-width: 780px) {
    .panx-result-viewer-grid[b-1a1a50n8v7] {
        flex: 0 0 auto;
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: repeat(2, var(--nxs-chart-height-sm));
    }

    .panx-result-layer-failure-content[b-1a1a50n8v7] {
        align-items: flex-start;
    }
}
/* /Pages/Simulations/Thermal/ThermalSimulations.razor.rz.scp.css */
.thermal-simulations-grid[b-7zhbv5j4z7] {
    width: 100%;
}

.thermal-simulations__auto-refresh-text[b-7zhbv5j4z7] {
    color: var(--nxs-text-muted);
    white-space: nowrap;
}

.thermal-simulations__refresh-button--auto[b-7zhbv5j4z7]  .mud-icon-root {
    animation: thermal-simulations-refresh-spin-b-7zhbv5j4z7 1.2s linear infinite;
}

[b-7zhbv5j4z7] .thermal-simulations__date-column {
    min-width: 10rem;
    width: 10rem;
}

@keyframes thermal-simulations-refresh-spin-b-7zhbv5j4z7 {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}
